From 62c452107417690bc1f48fe55a4cc222e9900b13 Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期四, 10 四月 2025 14:58:17 +0800 Subject: [PATCH] 数据分析 添加T+L(未调整) 自动调整配置 --- src/views/model/pre/analysis/index.vue | 83 +++++++++++++++++++++++++++++++++++++---- 1 files changed, 75 insertions(+), 8 deletions(-) diff --git a/src/views/model/pre/analysis/index.vue b/src/views/model/pre/analysis/index.vue index fd7b296..8425969 100644 --- a/src/views/model/pre/analysis/index.vue +++ b/src/views/model/pre/analysis/index.vue @@ -58,13 +58,18 @@ <div class="his-body"> <div class="his-body-left"> <div class="his-body-tree"> + <el-input + v-model="filterText" + class="mb-2" + placeholder="Filter" + /> <el-tree :data="treeData" show-checkbox node-key="id" - ref="tree" + ref="treeRef" highlight-current - :props="defaultProps" + :filter-node-method="filterNode" @check="onCheckTree"/> </div> </div> @@ -133,6 +138,11 @@ {{ calRateForm.preCumulant }} </el-form-item> </el-col> + <el-col :span="4"> + <el-form-item label="平均绝对误差:" label-width="110px"> + {{ calRateForm.deviation }} + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="4"> @@ -160,11 +170,16 @@ {{ calRateForm.realCumulant }} </el-form-item> </el-col> + <el-col :span="4"> + <el-form-item label="累积量平均绝对误差:" label-width="152px"> + {{ calRateForm.deviationCumulant }} + </el-form-item> + </el-col> </el-row> </el-form> <el-form :inline="true" :model="formData" label-width="100px"> <el-row> - <el-col :span="16"> + <el-col :span="18"> <el-form-item label="数据类型"> <el-checkbox-group v-model="formData.chartCheck" @change="changeChartCheck"> <el-checkbox v-for="item in formData.chartOptions" :label="item" @@ -191,7 +206,7 @@ <h3 class="chart-foot-title">预警信息</h3> <div class="chart-foot-table"> <el-table :data="alarmList" style="width: 100%" v-loading="loadingAlarm" height="100px"> - <el-table-column prop="content" header-align="center" align="left" label="消息内容" min-width="200" /> + <el-table-column prop="content" header-align="center" align="left" label="消息内容" min-width="240" /> <el-table-column prop="alarmType" label="预警类型" header-align="center" align="left" min-width="150"/> <el-table-column prop="alarmTime" label="预警时间" header-align="center" align="left" min-width="150"/> </el-table> @@ -265,7 +280,7 @@ currentStamp60: '', predictStamp: '', chartCheck: ['T+L', '真实值'], - chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值', '预测累计', '真实累计'], + chartOptions: ['T+N', 'T+L','T+L(未调整)', '当时', '真实值', '调整值', '预测累计', '真实累计'], checkedItemData: [], backItem: '', backValue: 0, @@ -291,7 +306,9 @@ itemPreMax: 0, itemPreMin: 0, preCumulant: 0, - realCumulant: 0 + realCumulant: 0, + deviation: 0, //平均绝对误差 + deviationCumulant: 0, //累积量平均绝对误差 }) let itemData = ref({ currentTreeList: [], @@ -313,6 +330,17 @@ IN_DEVIATION: [{required: true, message: '精准度偏差不能为空', trigger: 'blur'}], OUT_DEVIATION: [{required: true, message: '不可信率偏差不能为空', trigger: 'blur'}], }) + +// 树形过滤 +const filterText = ref('') +const treeRef = ref() +watch(filterText, (val) => { + treeRef.value!.filter(val) +}) +const filterNode = (value: string, data) => { + if (!value) return true + return data.label.includes(value) +} /** 查询列表 */ const getList = async (isClear = true) => { @@ -498,6 +526,23 @@ seriesData.push({ name: legendName, data: dataView.preDataL || [], + type: 'line', + showSymbol: false, + connectNulls: true, + yAxisIndex: yAxisIndex, + smooth: false, + lineStyle: { + width: 2 + } + }); + } + if (chartCheckArray.indexOf('T+L(未调整)') !== -1) { + let legendName = dataView.resultName + '(T+L(未调整))'; + legendData.push(legendName); + seriesData.push({ + name: legendName, + data: dataView.preDataLOriginal + || [], type: 'line', showSymbol: false, connectNulls: true, @@ -780,6 +825,8 @@ calRateForm.value.itemMin = dataView.hisMin; calRateForm.value.itemAvg = dataView.hisAvg; calRateForm.value.realCumulant = dataView.hisCumulant; + calDeviation(dataView.realData,dataView.preDataL,'deviation') + calDeviation(dataView.cumulantRealData,dataView.cumulantPreData,'deviationCumulant') } calAccuracyRate() } @@ -836,6 +883,24 @@ loading2.value = false; } +function calDeviation(realData,preDataL,key) { + if (realData == null || preDataL == null || realData.length === 0 || preDataL.length === 0) { + return; + } + const realObj = {} + realData.map(e => realObj[e[0]] = e[1]) + + let sum = 0; + let index = 0; + preDataL.forEach(e => { + if (realObj[e[0]] != undefined) { + sum += Math.abs(e[1] - realObj[e[0]]) + index++ + } + }) + calRateForm.value[key] = Number((sum / index).toFixed(2)) +} + function rightSearchDataByRange() { let mins = getRangeMins(); let startTime = formData.value.startTime; @@ -873,7 +938,7 @@ currentStamp60: '', predictStamp: '', chartCheck: ['T+L', '真实值'], - chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值', '预测累计', '真实累计'], + chartOptions: ['T+N', 'T+L','T+L(未调整)', '当时', '真实值', '调整值', '预测累计', '真实累计'], checkedItemData: [], backItem: '', backValue: 0, @@ -898,7 +963,9 @@ itemPreMax: 0, itemPreMin: 0, preCumulant: 0, - realCumulant: 0 + realCumulant: 0, + deviation: 0, //平均绝对误差 + deviationCumulant: 0, //累积量平均绝对误差 } calRateFormRef.value?.resetFields() } -- Gitblit v1.9.3