feat: 告警级别统计
parent
23ae2026a3
commit
86edf72afc
@ -0,0 +1,127 @@
|
||||
<template>
|
||||
<v-chart
|
||||
v-if="JSON.stringify(option) != '{}'"
|
||||
:option="option"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue';
|
||||
import { keyColor } from '../config';
|
||||
|
||||
const option = ref({});
|
||||
let list = [];
|
||||
let totalNum = 0;
|
||||
|
||||
const setOptions = () => {
|
||||
option.value = {
|
||||
title: {
|
||||
top: 'center',
|
||||
left: '31.5%',
|
||||
text: ['{name|总数}', `{value|${totalNum}}`].join('\n'),
|
||||
textStyle: {
|
||||
textAlign: 'center',
|
||||
rich: {
|
||||
name: {
|
||||
fontSize: 14,
|
||||
color: 'rgba(255,255,255,0.6)',
|
||||
},
|
||||
value: {
|
||||
fontSize: 24,
|
||||
fontWeight: 'bold',
|
||||
color: '#fff',
|
||||
lineHeight: 20,
|
||||
padding: [12, 0, 0, 0],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
backgroundColor: 'rgba(0,0,0,0.6)',
|
||||
borderColor: 'rgba(147,235,248,0.8)',
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
},
|
||||
},
|
||||
legend: {
|
||||
show: true,
|
||||
orient: 'vertical',
|
||||
icon: 'circle',
|
||||
right: 20,
|
||||
top: 'center',
|
||||
itemGap: 20,
|
||||
textStyle: {
|
||||
color: 'rgb(85,185,216)',
|
||||
},
|
||||
formatter: (b) => `${b}:${list.find((item) => item.name === b).value}`,
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '告警统计',
|
||||
type: 'pie',
|
||||
radius: ['40%', '80%'],
|
||||
center: ['35%', '50%'],
|
||||
label: {
|
||||
show: false,
|
||||
},
|
||||
itemStyle: {
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2,
|
||||
borderRadius: 6,
|
||||
},
|
||||
labelLine: {
|
||||
show: false,
|
||||
},
|
||||
tooltip: {
|
||||
show: true,
|
||||
},
|
||||
data: [
|
||||
...list.map((item) => ({
|
||||
name: item.name,
|
||||
value: item.value,
|
||||
itemStyle: {
|
||||
color: keyColor[item.prop],
|
||||
},
|
||||
})),
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
const getAlarmStatisticsData = () => {
|
||||
console.log('执行请求AlarmStatistics');
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve({
|
||||
critical: 17,
|
||||
major: 12,
|
||||
warning: 3,
|
||||
info: 2,
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
};
|
||||
|
||||
const initFN = () => {
|
||||
getAlarmStatisticsData().then((result) => {
|
||||
let dataList = [];
|
||||
for (const key in result) {
|
||||
dataList.push({
|
||||
name: key,
|
||||
value: result[key],
|
||||
prop: key,
|
||||
});
|
||||
totalNum += result[key];
|
||||
}
|
||||
list = dataList;
|
||||
setOptions();
|
||||
});
|
||||
};
|
||||
|
||||
defineExpose({
|
||||
name: 'AlarmStatistics',
|
||||
init: initFN,
|
||||
});
|
||||
</script>
|
||||
Loading…
Reference in New Issue