<template> <div> <div ref="assetEchart" class="asset_echart"></div> </div> </template> <script setup> import { init } from 'echarts'; import 'echarts-liquidfill/src/liquidFill.js'; const assetEchart = ref(null); let { data: { xData }, } = defineProps(['data']); const all = xData?.reduce((n, v) => { return n + v.itemScore; }, 0); console.log('xDataxData', xData); const initM = () => { const chart = init(assetEchart.value); window.addEventListener('resize', () => { chart.resize(); }); chart.setOption({ title: [ { text: xData[0]?.itemContent, x: '5%', y: '69%', textStyle: { fontSize: 14, fontWeight: '100', color: '#fff', lineHeight: 16, textAlign: 'center', }, }, { text: xData[1]?.itemContent, x: '51%', y: '69%', textStyle: { fontSize: 14, fontWeight: '100', color: '#fff', lineHeight: 16, textAlign: 'center', }, }, ], series: [ { type: 'liquidFill', radius: '47%', center: ['25%', '45%'], color: [ { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [ { offset: 0, color: '#0e3f6a ', }, { offset: 1, color: '#37d6fc ', }, ], globalCoord: false, }, ], data: [xData[0]?.realScore], // data个数代表波浪数 backgroundStyle: { borderWidth: 1, color: '#fff ', }, label: { normal: { textStyle: { fontSize: 14, color: '#0f406a', }, formatter: function (param) { return xData[0]?.standardFlag == 1 ? '已完成' : '未完成' + '\n' + '总数' + (xData[0]?.itemScore || 0); }, }, }, outline: { // show: false borderDistance: 0, itemStyle: { borderWidth: 2, borderColor: '#0f406a', }, }, }, { //第二个球的填充 type: 'liquidFill', radius: '47%', center: ['75%', '45%'], color: [ { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [ { offset: 0, color: '#0f406a', }, { offset: 1, color: '#37d6fc', }, ], globalCoord: false, }, ], data: [xData[1]?.standardFlag == 1 ? 1 : 0], // data个数代表波浪数 // data: [xData[1]?.realValue/xData[1]?.itemScore], // data个数代表波浪数 backgroundStyle: { borderWidth: 1, color: '#fff', }, label: { normal: { textStyle: { fontSize: 14, color: '#0f406a', }, formatter: function (param) { return (param.value * 100 || 0) + '%' + '\n' + '总数' + (xData[1]?.itemScore || 0); }, }, }, outline: { // show: false borderDistance: 0, itemStyle: { borderWidth: 2, borderColor: '#37d6fc', }, }, }, ], }); }; onMounted(() => { setTimeout(() => { initM(); }, 100); }); </script> <style lang="scss" scoped> .asset_echart { width: 400px; height: 240px; // margin: 10px 14px 0 16px; &_echart { width: 100%; height: 100%; } } </style>