|
@@ -20,8 +20,8 @@
|
|
|
<template v-slot:filters>
|
|
|
<SwitchTag
|
|
|
:ds="[{val: 'day', text: '按日'},{val: 'month', text: '按月'},{val: 'year', text: '按年'}]"
|
|
|
- :defTag="{val: 'day'}"
|
|
|
- :tagClick="onSwitchTagClick"
|
|
|
+ :defTag="dateType"
|
|
|
+ :tagClick="onDateTypeSwitch"
|
|
|
/>
|
|
|
</template>
|
|
|
</LineChartBlock>
|
|
@@ -102,6 +102,7 @@
|
|
|
|
|
|
<script>
|
|
|
|
|
|
+import { fetchAlarmIndexDay, fetchAlarmIndexMonth, fetchAlarmIndexYear } from '@/api/alarm/alarm-info';
|
|
|
import { ApiCode } from '@/api/apiEmums';
|
|
|
import { get } from '@/api/commonApi';
|
|
|
import Block from '@/components/Block/block.vue';
|
|
@@ -110,11 +111,14 @@ import BarChartBlock from '@/components/Block/charts/BarChartBlock.vue';
|
|
|
import PieChartBlock from '@/components/Block/charts/PieChartBlock.vue';
|
|
|
import { DateTool } from '@/utils/DateTool';
|
|
|
import DeviceWaring from '@/views/analysis/device/DevcWarning/index.vue';
|
|
|
+import dayjs from 'dayjs';
|
|
|
+import { mapGetters, mapMutations } from 'vuex';
|
|
|
import * as areaApi from '../../../api/basecfg/area';
|
|
|
import LineChartBlock from '../../../components/Block/charts/LineChartBlock.vue';
|
|
|
import SwitchTag from '../../../components/SwitchTag/index.vue';
|
|
|
|
|
|
export default {
|
|
|
+ dicts: ['alarm_type'],
|
|
|
components: {
|
|
|
BlockTable,
|
|
|
DeviceWaring,
|
|
@@ -128,14 +132,15 @@ export default {
|
|
|
return {
|
|
|
areaTag: [],
|
|
|
defArea: {},
|
|
|
+ dateType: { val: 'day' },
|
|
|
devcWarningHis: {
|
|
|
unit: ' ',
|
|
|
xAxis: {
|
|
|
type: 'category',
|
|
|
boundaryGap: false,
|
|
|
- data: ["一月","二月","三月","四月","五月","六月","七月"],
|
|
|
+ data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月'],
|
|
|
},
|
|
|
- series: [
|
|
|
+ series: [
|
|
|
{
|
|
|
name: '紧急',
|
|
|
type: 'line',
|
|
@@ -155,10 +160,9 @@ export default {
|
|
|
name: '警告',
|
|
|
type: 'line',
|
|
|
data: [20, 182, 131, 144, 130, 140, 90],
|
|
|
- }
|
|
|
- ]
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
-
|
|
|
alarmTableData: [
|
|
|
{
|
|
|
warnType: '研发部照明',
|
|
@@ -185,14 +189,74 @@ export default {
|
|
|
],
|
|
|
};
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ // 监听选中的区域,以更新数据
|
|
|
+ selectedServiceArea() {
|
|
|
+ return this.$store.state.userState.selectedServiceArea;
|
|
|
+ },
|
|
|
+ ...mapGetters('userState', ['getSelectedArea']),
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ selectedServiceArea(val) {
|
|
|
+ this.queryCharts();
|
|
|
+ },
|
|
|
+ },
|
|
|
mounted() {
|
|
|
this.initData();
|
|
|
},
|
|
|
created() {
|
|
|
},
|
|
|
methods: {
|
|
|
+ ...mapMutations('userState', ['setSelectedArea']),
|
|
|
onSwitchTagClick(item) {
|
|
|
- console.log(item);
|
|
|
+ this.setSelectedArea(item);
|
|
|
+ },
|
|
|
+ async onDateTypeSwitch(item) {
|
|
|
+ if (!this.selectedServiceArea) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (item.val === 'day') {
|
|
|
+ const xaxis = DateTool.getTime(60);
|
|
|
+ const { data } = await fetchAlarmIndexDay({ areaCode: this.selectedServiceArea.val });
|
|
|
+ const series = this.toSeries(data, xaxis);
|
|
|
+ this.devcWarningHis.xAxis.data = xaxis;
|
|
|
+ this.devcWarningHis.series = series;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (item.val === 'month') {
|
|
|
+ const xaxis = DateTool.getDayOfRange(
|
|
|
+ dayjs().subtract(1, 'month'), dayjs(), DateTool.DateFormat.YYYY_MM_DD);
|
|
|
+ const { data } = await fetchAlarmIndexMonth({ areaCode: this.selectedServiceArea.val });
|
|
|
+ const series = this.toSeries(data, xaxis);
|
|
|
+ this.devcWarningHis.xAxis.data = xaxis;
|
|
|
+ this.devcWarningHis.series = series;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const xaxis = DateTool.getMonthsOfYearAgo();
|
|
|
+ const { data } = await fetchAlarmIndexYear({ areaCode: this.selectedServiceArea.val });
|
|
|
+ const series = this.toSeries(data, xaxis);
|
|
|
+ this.devcWarningHis.xAxis.data = xaxis;
|
|
|
+ this.devcWarningHis.series = series;
|
|
|
+ },
|
|
|
+ toSeries(data, xaxis) {
|
|
|
+ const dayGroup = _.groupBy(data, 'alarmType');
|
|
|
+ const series = [];
|
|
|
+ Object.keys(dayGroup).forEach((alarmType) => {
|
|
|
+ let ds = {};
|
|
|
+ let typeName = this.selectDictLabel(this.dict.type.alarm_type, alarmType);
|
|
|
+ dayGroup[alarmType].forEach(item => {
|
|
|
+ ds[item.dateIndex] = item.cnt;
|
|
|
+ });
|
|
|
+ let seriesData = [];
|
|
|
+ xaxis.forEach((item) => seriesData.push(ds[item] || 0));
|
|
|
+ series.push({
|
|
|
+ name: typeName,
|
|
|
+ type: 'line',
|
|
|
+ smooth: true,
|
|
|
+ data: seriesData,
|
|
|
+ });
|
|
|
+ });
|
|
|
+ return series;
|
|
|
},
|
|
|
async initData() {
|
|
|
const {
|
|
@@ -210,10 +274,12 @@ export default {
|
|
|
});
|
|
|
});
|
|
|
this.defArea = this.areaTag[0];
|
|
|
+ this.setSelectedArea(this.areaTag[0]);
|
|
|
}
|
|
|
this.queryCharts();
|
|
|
},
|
|
|
queryCharts() {
|
|
|
+ this.onDateTypeSwitch(this.dateType);
|
|
|
this.getPvList();
|
|
|
},
|
|
|
async getPvList() {
|