|
@@ -62,7 +62,7 @@
|
|
<div class="legend-item" v-for="(item,index) in topAlarm" :key="index">
|
|
<div class="legend-item" v-for="(item,index) in topAlarm" :key="index">
|
|
<span :class="'legend-bage bg'+(index+1)"></span>
|
|
<span :class="'legend-bage bg'+(index+1)"></span>
|
|
<span class="legend-label">{{item.name}}</span>
|
|
<span class="legend-label">{{item.name}}</span>
|
|
- <span class="legend-label alibaba">{{item.number}}</span>
|
|
|
|
|
|
+ <span class="legend-label alibaba">{{item.value}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -84,7 +84,7 @@
|
|
<div :class="'tr-top'+(index+1)">{{returnTop(String(index+1))}}</div>
|
|
<div :class="'tr-top'+(index+1)">{{returnTop(String(index+1))}}</div>
|
|
</span>
|
|
</span>
|
|
<span class="tr-flex">{{item.name}}</span>
|
|
<span class="tr-flex">{{item.name}}</span>
|
|
- <span class="tr-flex tr-center alibaba">{{item.number}}</span>
|
|
|
|
|
|
+ <span class="tr-flex tr-center alibaba">{{item.value}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -248,30 +248,6 @@
|
|
<div class="alarm-title">
|
|
<div class="alarm-title">
|
|
<div class="hui-chart-title">
|
|
<div class="hui-chart-title">
|
|
设备故障列表
|
|
设备故障列表
|
|
- <div class="select-box combination-select">
|
|
|
|
- <el-select size="mini" v-model="value" placeholder="空间位置">
|
|
|
|
- <el-option label="1F" :value="1">
|
|
|
|
- </el-option>
|
|
|
|
- <el-option label="2F" :value="2">
|
|
|
|
- </el-option>
|
|
|
|
- </el-select>
|
|
|
|
- <el-select size="mini" v-model="value" placeholder="设备类型">
|
|
|
|
- <el-option label="冷源" :value="1">
|
|
|
|
- </el-option>
|
|
|
|
- <el-option label="2F" :value="2">
|
|
|
|
- </el-option>
|
|
|
|
- </el-select>
|
|
|
|
- <el-select size="mini" v-model="value" placeholder="设备">
|
|
|
|
- <el-option label="1F" :value="1">
|
|
|
|
- </el-option>
|
|
|
|
- <el-option label="2F" :value="2">
|
|
|
|
- </el-option>
|
|
|
|
- </el-select>
|
|
|
|
- <el-date-picker size="mini" v-model="value1" type="daterange" range-separator="-"
|
|
|
|
- start-placeholder="开始日期" end-placeholder="结束日期">
|
|
|
|
- </el-date-picker>
|
|
|
|
- <el-button size="mini" type="primary" style="margin-left: 8px;">查询</el-button>
|
|
|
|
- </div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="alarm-tr">
|
|
<div class="alarm-tr">
|
|
<span class="tr-50">序号</span>
|
|
<span class="tr-50">序号</span>
|
|
@@ -322,11 +298,11 @@
|
|
</div>
|
|
</div>
|
|
<div class="params-chart-box">
|
|
<div class="params-chart-box">
|
|
<div class="params-chart-item params-chart-left">
|
|
<div class="params-chart-item params-chart-left">
|
|
- <div class="title">参数告警趋势(累计)</div>
|
|
|
|
|
|
+ <div class="title">类型告警趋势</div>
|
|
<div ref="chart2" class="chart-box"></div>
|
|
<div ref="chart2" class="chart-box"></div>
|
|
</div>
|
|
</div>
|
|
<div class="params-chart-item params-chart-right">
|
|
<div class="params-chart-item params-chart-right">
|
|
- <div class="title">告警趋势(最近30天)</div>
|
|
|
|
|
|
+ <div class="title">告警趋势</div>
|
|
<div ref="chart3" class="chart-box"></div>
|
|
<div ref="chart3" class="chart-box"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -372,15 +348,6 @@
|
|
max: 100,
|
|
max: 100,
|
|
value: 99
|
|
value: 99
|
|
});
|
|
});
|
|
-
|
|
|
|
- this.chart1(this.$refs.chart2, [
|
|
|
|
- [1, 3, 2, 6, 1]
|
|
|
|
- ])
|
|
|
|
- this.chart1(this.$refs.chart3, [
|
|
|
|
- [0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
|
|
- 1, 1
|
|
|
|
- ]
|
|
|
|
- ])
|
|
|
|
})
|
|
})
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
@@ -401,146 +368,150 @@
|
|
},
|
|
},
|
|
testTopData() {
|
|
testTopData() {
|
|
let obj = {},
|
|
let obj = {},
|
|
- list = [];
|
|
|
|
|
|
+ list = [],
|
|
|
|
+ all = 0,
|
|
|
|
+ dateObj = {},
|
|
|
|
+ dateList = [];
|
|
for (let i = 0; i < this.alarmList.length; i++) {
|
|
for (let i = 0; i < this.alarmList.length; i++) {
|
|
- console.log(this.alarmList[i]);
|
|
|
|
|
|
+ let date = this.$dayjs(this.alarmList[i].date).format('YYYY/MM/DD');
|
|
|
|
+ if (!dateObj[date]) {
|
|
|
|
+ dateObj[date] = 1;
|
|
|
|
+ dateList.push({
|
|
|
|
+ name: date,
|
|
|
|
+ value: 0
|
|
|
|
+ })
|
|
|
|
+ }
|
|
if (!obj[this.alarmList[i].deviceId]) {
|
|
if (!obj[this.alarmList[i].deviceId]) {
|
|
obj[this.alarmList[i].deviceId] = 1;
|
|
obj[this.alarmList[i].deviceId] = 1;
|
|
list.push({
|
|
list.push({
|
|
id: this.alarmList[i].deviceId,
|
|
id: this.alarmList[i].deviceId,
|
|
name: this.alarmList[i].deviceName,
|
|
name: this.alarmList[i].deviceName,
|
|
- number: 0,
|
|
|
|
|
|
+ value: 0,
|
|
})
|
|
})
|
|
}
|
|
}
|
|
- list.find(node => node.id == this.alarmList[i].deviceId).number++
|
|
|
|
|
|
+ list.find(node => node.id == this.alarmList[i].deviceId).value++;
|
|
|
|
+ all++;
|
|
|
|
+ dateList.find(node => node.name == date).value++;
|
|
}
|
|
}
|
|
- this.topAlarm = list.sort((a, b) => a.number > b.number);
|
|
|
|
- this.chart();
|
|
|
|
|
|
+ this.topAlarm = list.sort((a, b) => a.value > b.value);
|
|
|
|
+ let title = this.topAlarm[0].name;
|
|
|
|
+ let len = this.topAlarm[0].value;
|
|
|
|
+ this.chart(title, ((len / all) * 100).toFixed(2).padStart(5, '0'), this.topAlarm);
|
|
|
|
+ this.chart1(this.$refs.chart2, [this.topAlarm.map(node => node.value)], this.topAlarm.map(node => node
|
|
|
|
+ .name))
|
|
|
|
+ this.chart1(this.$refs.chart3, [dateList.map(node => node.value)], dateList.map(node => node
|
|
|
|
+ .name))
|
|
},
|
|
},
|
|
returnTop(number) {
|
|
returnTop(number) {
|
|
let str = number.length === 1 ? ('0' + number) : number;
|
|
let str = number.length === 1 ? ('0' + number) : number;
|
|
return 'TOP' + str;
|
|
return 'TOP' + str;
|
|
- },
|
|
|
|
- chart() {
|
|
|
|
- let chart = echarts.init(this.$refs.chart1);
|
|
|
|
- let title = '设备名称2',
|
|
|
|
- len = "50.00"
|
|
|
|
- let option = {
|
|
|
|
- title: {
|
|
|
|
- text: ("{name|" + title + "}" + "\n{percent|" + len + "}{name|%}"),
|
|
|
|
- left: 'center',
|
|
|
|
- top: 'center',
|
|
|
|
- textStyle: {
|
|
|
|
- rich: {
|
|
|
|
- name: {
|
|
|
|
- color: "#fff",
|
|
|
|
- fontSize: 12,
|
|
|
|
- lineHeight: 16
|
|
|
|
- },
|
|
|
|
- percent: {
|
|
|
|
- color: "#fff",
|
|
|
|
- fontSize: 28,
|
|
|
|
- lineHeight: 38,
|
|
|
|
- fontFamily: 'alibabaMedium'
|
|
|
|
- },
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- color: ['#EB7E65', '#9D60FB', '#5AD8A6', '#F7C739', '#5B8FF9', '#5D7092', '#6DC8EC', '#FF9D4D'],
|
|
|
|
- series: [{
|
|
|
|
- type: 'pie',
|
|
|
|
- center: ['50%', '50%'],
|
|
|
|
- radius: ['60%', '90%'],
|
|
|
|
- avoidLabelOverlap: false,
|
|
|
|
- itemStyle: {
|
|
|
|
- borderColor: 'RGBA(21, 26, 37, 1)',
|
|
|
|
- borderWidth: 10
|
|
|
|
- },
|
|
|
|
- label: {
|
|
|
|
- show: false,
|
|
|
|
- position: 'center'
|
|
|
|
- },
|
|
|
|
- emphasis: {
|
|
|
|
- label: {
|
|
|
|
- show: true,
|
|
|
|
- formatter: (params) => {
|
|
|
|
- return ("{name|" + params.name + "}" + "\n{percent|" +
|
|
|
|
- params.percent.toFixed(2) + "}{name|%}");
|
|
|
|
- },
|
|
|
|
- rich: {
|
|
|
|
- name: {
|
|
|
|
- color: "#fff",
|
|
|
|
- fontSize: 12,
|
|
|
|
- lineHeight: 16
|
|
|
|
- },
|
|
|
|
- percent: {
|
|
|
|
- color: "#fff",
|
|
|
|
- fontSize: 28,
|
|
|
|
- lineHeight: 38,
|
|
|
|
- fontFamily: 'alibabaMedium'
|
|
|
|
- },
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- labelLine: {
|
|
|
|
- show: false
|
|
|
|
- },
|
|
|
|
- data: [{
|
|
|
|
- value: 3,
|
|
|
|
- name: "设备名称2"
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- value: 2,
|
|
|
|
- name: "设备名称3"
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- value: 1,
|
|
|
|
- name: "设备名称4"
|
|
|
|
- }
|
|
|
|
- ]
|
|
|
|
- }]
|
|
|
|
- };
|
|
|
|
- chart.setOption(option);
|
|
|
|
- // 高亮时
|
|
|
|
- chart.on('highlight', (e) => {
|
|
|
|
- chart.setOption({
|
|
|
|
- title: {
|
|
|
|
- show: false
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
- // 取消高亮时
|
|
|
|
- chart.on('downplay', (e) => {
|
|
|
|
- chart.setOption({
|
|
|
|
- title: {
|
|
|
|
- show: true
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
- // 鼠标移入数据时
|
|
|
|
- chart.on('mouseover', {
|
|
|
|
- componentType: 'series',
|
|
|
|
- seriesType: 'pie'
|
|
|
|
- }, (params) => {
|
|
|
|
- chart.setOption({
|
|
|
|
- title: {
|
|
|
|
- show: false
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
- // 鼠标移出数据时
|
|
|
|
- chart.on('mouseout', {
|
|
|
|
- componentType: 'series',
|
|
|
|
- seriesType: 'pie'
|
|
|
|
- }, (params) => {
|
|
|
|
- chart.setOption({
|
|
|
|
- title: {
|
|
|
|
- show: true
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
},
|
|
},
|
|
- chart1(elem, data) {
|
|
|
|
|
|
+ chart(title, len, data) {
|
|
|
|
+ let chart = echarts.init(this.$refs.chart1);
|
|
|
|
+ let option = {
|
|
|
|
+ title: {
|
|
|
|
+ text: ("{name|" + title + "}" + "\n{percent|" + len + "}{name|%}"),
|
|
|
|
+ left: 'center',
|
|
|
|
+ top: 'center',
|
|
|
|
+ textStyle: {
|
|
|
|
+ rich: {
|
|
|
|
+ name: {
|
|
|
|
+ color: "#fff",
|
|
|
|
+ fontSize: 12,
|
|
|
|
+ lineHeight: 16
|
|
|
|
+ },
|
|
|
|
+ percent: {
|
|
|
|
+ color: "#fff",
|
|
|
|
+ fontSize: 28,
|
|
|
|
+ lineHeight: 38,
|
|
|
|
+ fontFamily: 'alibabaMedium'
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ color: ['#EB7E65', '#9D60FB', '#5AD8A6', '#F7C739', '#5B8FF9', '#5D7092', '#6DC8EC', '#FF9D4D'],
|
|
|
|
+ series: [{
|
|
|
|
+ type: 'pie',
|
|
|
|
+ center: ['50%', '50%'],
|
|
|
|
+ radius: ['60%', '90%'],
|
|
|
|
+ avoidLabelOverlap: false,
|
|
|
|
+ itemStyle: {
|
|
|
|
+ borderColor: 'RGBA(21, 26, 37, 1)',
|
|
|
|
+ borderWidth: 10
|
|
|
|
+ },
|
|
|
|
+ label: {
|
|
|
|
+ show: false,
|
|
|
|
+ position: 'center'
|
|
|
|
+ },
|
|
|
|
+ emphasis: {
|
|
|
|
+ label: {
|
|
|
|
+ show: true,
|
|
|
|
+ formatter: (params) => {
|
|
|
|
+ return ("{name|" + params.name + "}" + "\n{percent|" +
|
|
|
|
+ params.percent.toFixed(2) + "}{name|%}");
|
|
|
|
+ },
|
|
|
|
+ rich: {
|
|
|
|
+ name: {
|
|
|
|
+ color: "#fff",
|
|
|
|
+ fontSize: 12,
|
|
|
|
+ lineHeight: 16
|
|
|
|
+ },
|
|
|
|
+ percent: {
|
|
|
|
+ color: "#fff",
|
|
|
|
+ fontSize: 28,
|
|
|
|
+ lineHeight: 38,
|
|
|
|
+ fontFamily: 'alibabaMedium'
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ labelLine: {
|
|
|
|
+ show: false
|
|
|
|
+ },
|
|
|
|
+ data: data
|
|
|
|
+ }]
|
|
|
|
+ };
|
|
|
|
+ chart.setOption(option);
|
|
|
|
+ // 高亮时
|
|
|
|
+ chart.on('highlight', (e) => {
|
|
|
|
+ chart.setOption({
|
|
|
|
+ title: {
|
|
|
|
+ show: false
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ // 取消高亮时
|
|
|
|
+ chart.on('downplay', (e) => {
|
|
|
|
+ chart.setOption({
|
|
|
|
+ title: {
|
|
|
|
+ show: true
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ // 鼠标移入数据时
|
|
|
|
+ chart.on('mouseover', {
|
|
|
|
+ componentType: 'series',
|
|
|
|
+ seriesType: 'pie'
|
|
|
|
+ }, (params) => {
|
|
|
|
+ chart.setOption({
|
|
|
|
+ title: {
|
|
|
|
+ show: false
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ // 鼠标移出数据时
|
|
|
|
+ chart.on('mouseout', {
|
|
|
|
+ componentType: 'series',
|
|
|
|
+ seriesType: 'pie'
|
|
|
|
+ }, (params) => {
|
|
|
|
+ chart.setOption({
|
|
|
|
+ title: {
|
|
|
|
+ show: true
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ chart1(elem, data, x) {
|
|
let chart = echarts.init(elem);
|
|
let chart = echarts.init(elem);
|
|
let series = [];
|
|
let series = [];
|
|
for (var i = 0; i < data.length; i++) {
|
|
for (var i = 0; i < data.length; i++) {
|
|
@@ -568,11 +539,6 @@
|
|
obj['data'] = data[i];
|
|
obj['data'] = data[i];
|
|
series.push(obj);
|
|
series.push(obj);
|
|
}
|
|
}
|
|
- let x = ['类目一', '类目二', '类目三', '类目四', '类目五'];
|
|
|
|
- if (data.length > 1) x = ['1日', '2日', '3日', '4日', '5日', '6日', '7日', '8日', '9日', '10日', '11日', '12日', '13日',
|
|
|
|
- '14日', '15日', '16日', '17日', '18日', '19日', '20日', '21日', '22日', '23日', '24日', '25日', '26日', '27日',
|
|
|
|
- '28日', '29日', '30日'
|
|
|
|
- ]
|
|
|
|
let option = {
|
|
let option = {
|
|
tooltip: {
|
|
tooltip: {
|
|
show: true,
|
|
show: true,
|
|
@@ -606,7 +572,6 @@
|
|
color: '#D0DEEE',
|
|
color: '#D0DEEE',
|
|
fontSize: 10
|
|
fontSize: 10
|
|
},
|
|
},
|
|
- boundaryGap: false,
|
|
|
|
axisLine: {
|
|
axisLine: {
|
|
lineStyle: {
|
|
lineStyle: {
|
|
color: '#6C8097'
|
|
color: '#6C8097'
|