修改稳态告警统计,异常数据清洗详情

This commit is contained in:
GGJ
2025-12-24 11:22:57 +08:00
parent cf7e5fa991
commit 5f4f75d9dd
6 changed files with 270 additions and 84 deletions

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog draggable width="1550px" class="cn-operate-dialog" v-model="dialogVisible" :title="title">
<div style="display: flex" v-loading="loading">
<div :style="height1" class="mr10 box" style="width: 600px">
<div :style="height1" class="mr10 box" style="width: 550px">
<vxe-table
height="auto"
:data="TableData"
@@ -16,14 +16,14 @@
<vxe-column field="monitorName" title="监测点名称"></vxe-column>
<vxe-column field="timeSum" title="异常天数" width="80px">
<template v-slot="{ row }">
{{ row.dateList?.length }}
{{ row.dateTargetList?.length }}
</template>
</vxe-column>
<!-- <vxe-column field="errCount" title="异常次数" width="80px"></vxe-column> -->
</vxe-table>
</div>
<div style="width: 920px" v-loading="loading1">
<div style="width: 970px" v-loading="loading1">
<el-form :inline="true" class="form">
<el-form-item label="统计日期">
<el-select
@@ -32,15 +32,45 @@
collapse-tags
clearable
placeholder="请选择异常天数"
style="width: 200px"
style="width: 180px"
@change="change"
>
<el-option v-for="item in dateList" :key="item" :label="item" :value="item" />
<el-option
v-for="item in dateList"
:key="item.date"
:label="item.date"
:value="item.date"
/>
</el-select>
</el-form-item>
<el-form-item label="统计指标" v-if="numKey != 0">
<el-select
v-model="targetKey"
filterable
clearable
placeholder="请选择指标"
style="width: 150px"
>
<el-option
v-for="item in targetList"
:key="item.key"
:label="item.targetName"
:value="item.key"
/>
</el-select>
</el-form-item>
<el-form-item class="form_but">
<span class="mr20">异常时间<span class="title">{{ timeSum }}</span>分钟</span>
<span class="mr10">异常次数<span class="title">{{ errCount }}</span></span>
<span class="mr20">
异常时间
<span class="title">{{ timeSum }}</span>
分钟
</span>
<span class="mr10">
异常次数
<span class="title">{{ errCount }}</span>
</span>
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
</el-form-item>
@@ -136,17 +166,19 @@ const pageNum = ref(1)
const pageSize = ref(20)
const numKey = ref(0)
const targetKey = ref('')
const targetList: any = ref([])
const errCount = ref('')
const timeSum = ref('')
const timeList = ref([])
const showColumn = ref(true)
const open = (data: anyObj, time: string[], num: number) => {
// title.value = (num == 0 ? data.targetName : data.monitorName) + '_异常监测点详情'
loading.value = true
title.value = '异常监测点详情'
TableData.value = []
numKey.value = num
targetKey.value = data.key
targetKey.value = data.key || ''
monitorAbnormalTable({
monitorIds: num == 0 ? data.ids : [data.monitorId],
targetKey: num == 0 ? data.key : '',
@@ -167,13 +199,14 @@ const open = (data: anyObj, time: string[], num: number) => {
const currentChangeEvent = () => {
let data = tableRef.value.getCurrentRecord()
dateList.value = data.dateList
console.log('🚀 ~ currentChangeEvent ~ dateList.value:', dateList.value)
timeList.value = [data.dateList[0]]
dateList.value = data.dateTargetList
targetList.value = dateList.value[0].targetKeys
timeList.value = [data.dateTargetList[0].date]
init()
}
const init = () => {
if(timeList.value.length == 0) return ElMessage.warning('请选择异常天数!')
if (timeList.value.length == 0) return ElMessage.warning('请选择异常天数!')
loading1.value = true
TableData1.value = []
let data = tableRef.value.getCurrentRecord()
@@ -181,7 +214,7 @@ const init = () => {
monitorIds: [data.monitorId],
time: timeList.value,
searchBeginTime: data.date,
targetKey: numKey.value == 0 ? targetKey.value : ''
targetKey: targetKey.value || '' //numKey.value == 0 ? targetKey.value : ''
})
.then(res => {
errCount.value = res.data.errCount
@@ -195,6 +228,33 @@ const init = () => {
loading1.value = false
})
}
const change = () => {
if (timeList.value.length == 0) targetKey.value = ''
let list = dateList.value
.filter(item => timeList.value.includes(item.date))
?.map(item => {
return item.targetKeys
})
.flat()
targetList.value = deduplicateByKey(list)
if (!targetList.value.some(item => item.key == targetKey.value)) {
targetKey.value = ''
}
}
// 核心去重逻辑
function deduplicateByKey(data) {
// 使用Map存储唯一key保证顺序且去重
const uniqueMap = new Map()
data.forEach(item => {
if (!uniqueMap.has(item.key)) {
uniqueMap.set(item.key, item)
}
})
// 转换为数组并按sort排序
const deduplicatedData = Array.from(uniqueMap.values())
return deduplicatedData
}
const formatter = (row: any) => {
return row.cellValue == null ? '/' : (row.cellValue - 0).toFixed(2)
}
@@ -224,8 +284,11 @@ defineExpose({ open })
right: -22px;
}
}
.title{
.title {
font-weight: 600;
font-size: 16px;
}
:deep(.el-select) {
min-width: 100px !important;
}
</style>