Browse Source

设备统计去重

dongming
mk 9 months ago
parent
commit
7c516bfe3b
  1. 81
      src/views/dataBoard/IoTPerception/devicesNumber/index.vue

81
src/views/dataBoard/IoTPerception/devicesNumber/index.vue

@ -27,18 +27,36 @@
initChart(data) { initChart(data) {
let div = document.getElementById('DissatisfiedReason'); let div = document.getElementById('DissatisfiedReason');
this.myChart = echarts.init(div); this.myChart = echarts.init(div);
var getname = data.map(item => item.tittle); //
var getNum = data.map(item => item.numStr); //
var total = eval(getNum.join('+')) const uniqueData = [];
var data = []; const seenTitles = new Set();
for (var i = 0; i < getname.length; i++) { data.forEach(item => {
data.push({name: getname[i], value: getNum[i]}) if (!seenTitles.has(item.tittle)) {
} seenTitles.add(item.tittle);
const color = ['#1A95FF', '#27B5BD' ,'#368eff','#F95619', '#FFAA01','#1a95ff'] uniqueData.push(item);
var option = { }
});
const getname = uniqueData.map(item => item.tittle);
const getNum = uniqueData.map(item => Number(item.numStr));
const total = getNum.reduce((sum, num) => sum + num, 0);
// { name, value }
const pieData = getname.map((name, index) => ({
name,
value: getNum[index],
}));
//
const color = [...Array(uniqueData.length)].map(
(_, i) => `hsl(${(i * 360) / uniqueData.length}, 70%, 50%)`
);
//
const option = {
color, color,
tooltip: { tooltip: {
trigger: "item" trigger: "item",
}, },
legend: { legend: {
type: "plain", type: "plain",
@ -52,11 +70,8 @@
symbolKeepAspect: false, symbolKeepAspect: false,
selectedMode: false, selectedMode: false,
formatter: function (name) { formatter: function (name) {
for (var i = 0; i < getname.length; i++) { const index = getname.indexOf(name);
if (name == data[i].name) { return `{name|${name}}{num|${getNum[index]}}`;
return '{name|' + name + '}{num|' + getNum[i] + '}'
}
}
}, },
textStyle: { textStyle: {
rich: { rich: {
@ -73,9 +88,9 @@
fontWeight: 400, fontWeight: 400,
align: 'right', align: 'right',
color: '#FFFFFF', color: '#FFFFFF',
} },
} },
} },
}, },
series: [{ series: [{
name: '', name: '',
@ -87,38 +102,44 @@
show: true, show: true,
position: "center", position: "center",
color: "rgba(13, 17, 29,0)", color: "rgba(13, 17, 29,0)",
formatter: `{primary|${total}}\n{point|门禁设备}}`, formatter: `{primary|${total}}\n{point|门禁设备}`,
rich: { rich: {
primary: { primary: {
fontSize: 24, fontSize: 24,
color: '#7FCEFF', color: '#7FCEFF',
align: 'center' align: 'center',
}, },
point: { point: {
fontSize: 12, fontSize: 12,
fontWeight: 400, fontWeight: 400,
color: "#A3B9DA", color: "#A3B9DA",
align: 'center' align: 'center',
} },
} },
}, },
emphasis: { emphasis: {
label: { label: {
show: true, show: true,
fontSize: '14', fontSize: '14',
fontWeight: 'normal' fontWeight: 'normal',
} },
}, },
labelLine: { labelLine: {
show: false show: false,
}, },
data: data, data: pieData,
zlevel: 30 zlevel: 30,
}] }],
}; };
//
this.myChart.setOption(option, true); this.myChart.setOption(option, true);
//
window.removeEventListener("resize", this.myChart.resize);
window.addEventListener("resize", () => this.myChart.resize()); window.addEventListener("resize", () => this.myChart.resize());
} }
} }
} }
</script> </script>

Loading…
Cancel
Save