|
@@ -52,8 +52,14 @@
|
|
|
align="center"
|
|
|
/>
|
|
|
<el-table-column
|
|
|
+ prop="alarmTime"
|
|
|
+ label="时间"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
label="操作"
|
|
|
align="center"
|
|
|
+ width="100"
|
|
|
>
|
|
|
<template slot-scope="scope">
|
|
|
<el-dropdown @command="(cmd)=>handleCommand(cmd, scope.row)"
|
|
@@ -63,7 +69,9 @@
|
|
|
<i class="el-icon-arrow-down el-icon--right"></i>
|
|
|
</span>
|
|
|
<el-dropdown-menu slot="dropdown">
|
|
|
- <el-dropdown-item :command="ALARM_STATE.disposing.code" v-if="scope.row.alarmState === ALARM_STATE.new.value">开始处理</el-dropdown-item>
|
|
|
+ <el-dropdown-item :command="ALARM_STATE.disposing.code"
|
|
|
+ v-if="scope.row.alarmState === ALARM_STATE.new.value">开始处理
|
|
|
+ </el-dropdown-item>
|
|
|
<el-dropdown-item :command="ALARM_STATE.disposed.code">已处理</el-dropdown-item>
|
|
|
<el-dropdown-item :command="ALARM_STATE.dissolved.code">已消散</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
@@ -74,31 +82,15 @@
|
|
|
</BlockTable>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <BlockTable title="告警统计" :table-data="alarmTableData">
|
|
|
- <template v-slot:columns>
|
|
|
- <el-table-column
|
|
|
- type="index"
|
|
|
- label="序号"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="warnType"
|
|
|
- label="告警部位"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="warnFacsType"
|
|
|
- label="告警能源类型"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="date"
|
|
|
- label="日期"
|
|
|
- align="center"
|
|
|
+ <BarChartBlock title="告警统计报表" :opt-cfg="subSysIndex">
|
|
|
+ <template v-slot:filters>
|
|
|
+ <SwitchTag
|
|
|
+ :ds="[{val: 'day', text: '按日'},{val: 'month', text: '按月'},{val: 'year', text: '按年'}]"
|
|
|
+ :defTag="dateType"
|
|
|
+ :tagClick="onSubSysDateTypeSwitch"
|
|
|
/>
|
|
|
-
|
|
|
</template>
|
|
|
- </BlockTable>
|
|
|
+ </BarChartBlock>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
@@ -107,7 +99,8 @@
|
|
|
<script>
|
|
|
|
|
|
import {
|
|
|
- fetchAlarmIndexDay, fetchAlarmIndexMonth, fetchAlarmIndexYear, listAlarmInfo, updateAlarmInfo,
|
|
|
+ fetchAlarmIndexDay, fetchAlarmIndexMonth, fetchAlarmIndexYear, fetchSubSysIndexDay, fetchSubSysIndexMonth,
|
|
|
+ fetchSubSysIndexYear, listAlarmInfo, updateAlarmInfo,
|
|
|
} from '@/api/alarm/alarm-info';
|
|
|
import { ApiCode } from '@/api/apiEmums';
|
|
|
import Block from '@/components/Block/block.vue';
|
|
@@ -151,18 +144,15 @@ export default {
|
|
|
},
|
|
|
series: [],
|
|
|
},
|
|
|
- alarmTableData: [
|
|
|
- {
|
|
|
- warnType: '研发部照明',
|
|
|
- warnFacsType: '电',
|
|
|
- date: '2024年6月1日 12:00:00',
|
|
|
- },
|
|
|
- {
|
|
|
- warnType: '研发部照明',
|
|
|
- warnFacsType: '电',
|
|
|
- date: '2024年6月1日 12:00:00',
|
|
|
+ subSysIndex: {
|
|
|
+ unit: ' ',
|
|
|
+ xAxis: {
|
|
|
+ type: 'category',
|
|
|
+ boundaryGap: false,
|
|
|
+ data: [],
|
|
|
},
|
|
|
- ],
|
|
|
+ series: [],
|
|
|
+ },
|
|
|
realTimeTableData: [],
|
|
|
};
|
|
|
},
|
|
@@ -217,6 +207,35 @@ export default {
|
|
|
this.devcWarningHis.xAxis.data = xaxis;
|
|
|
this.devcWarningHis.series = series;
|
|
|
},
|
|
|
+ async onSubSysDateTypeSwitch(item) {
|
|
|
+ if (!this.selectedServiceArea) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (item.val === 'day') {
|
|
|
+ const xaxis = DateTool.getTime(60);
|
|
|
+ const { data } = await fetchSubSysIndexDay({
|
|
|
+ areaCode: this.selectedServiceArea.val,
|
|
|
+ });
|
|
|
+ const series = this.subSysIndexToSeries(data, xaxis);
|
|
|
+ this.subSysIndex.xAxis.data = xaxis;
|
|
|
+ this.subSysIndex.series = series;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (item.val === 'month') {
|
|
|
+ const xaxis = DateTool.getDayOfRange(
|
|
|
+ dayjs().subtract(1, 'month'), dayjs(), DateTool.DateFormat.YYYY_MM_DD);
|
|
|
+ const { data } = await fetchSubSysIndexMonth({ areaCode: this.selectedServiceArea.val });
|
|
|
+ const series = this.subSysIndexToSeries(data, xaxis);
|
|
|
+ this.subSysIndex.xAxis.data = xaxis;
|
|
|
+ this.subSysIndex.series = series;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const xaxis = DateTool.getMonthsOfYearAgo();
|
|
|
+ const { data } = await fetchSubSysIndexYear({ areaCode: this.selectedServiceArea.val });
|
|
|
+ const series = this.subSysIndexToSeries(data, xaxis);
|
|
|
+ this.subSysIndex.xAxis.data = xaxis;
|
|
|
+ this.subSysIndex.series = series;
|
|
|
+ },
|
|
|
toSeries(data, xaxis) {
|
|
|
const dayGroup = _.groupBy(data, 'alarmType');
|
|
|
const series = [];
|
|
@@ -237,6 +256,26 @@ export default {
|
|
|
});
|
|
|
return series;
|
|
|
},
|
|
|
+
|
|
|
+ subSysIndexToSeries(data, xaxis) {
|
|
|
+ const dayGroup = _.groupBy(data, 'systemCode');
|
|
|
+ const series = [];
|
|
|
+ Object.keys(dayGroup).forEach((subSysCode) => {
|
|
|
+ let ds = {};
|
|
|
+ let systemName = dayGroup[subSysCode][0].systemName;
|
|
|
+ dayGroup[subSysCode].forEach(item => {
|
|
|
+ ds[item.dateIndex] = item.cnt;
|
|
|
+ });
|
|
|
+ let seriesData = [];
|
|
|
+ xaxis.forEach((item) => seriesData.push(ds[item] || 0));
|
|
|
+ series.push({
|
|
|
+ name: systemName,
|
|
|
+ type: 'bar',
|
|
|
+ data: seriesData,
|
|
|
+ });
|
|
|
+ });
|
|
|
+ return series;
|
|
|
+ },
|
|
|
async initData() {
|
|
|
const {
|
|
|
rows,
|
|
@@ -259,6 +298,7 @@ export default {
|
|
|
},
|
|
|
queryCharts() {
|
|
|
this.onDateTypeSwitch(this.dateType);
|
|
|
+ this.onSubSysDateTypeSwitch(this.dateType);
|
|
|
this.getRealTimeAlarm();
|
|
|
},
|
|
|
async getRealTimeAlarm() {
|