From 4d2b0aac68e1a531febe4092b01338a2584370f7 Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期四, 20 三月 2025 17:47:31 +0800 Subject: [PATCH] 数据分析el-tree filter --- src/views/model/pre/analysis/index.vue | 67 +++++++++++++++++++++++++++++++-- 1 files changed, 62 insertions(+), 5 deletions(-) diff --git a/src/views/model/pre/analysis/index.vue b/src/views/model/pre/analysis/index.vue index d2828d6..5c75f02 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"> @@ -158,6 +168,11 @@ <el-col :span="4"> <el-form-item label="真实累积量:"> {{ 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> @@ -249,7 +264,9 @@ itemPreMax: 0, itemPreMin: 0, preCumulant: 0, - realCumulant: 0 + realCumulant: 0, + deviation: 0, //平均绝对误差 + deviationCumulant: 0, //累积量平均绝对误差 }) let itemData = ref({ currentTreeList: [], @@ -267,6 +284,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) => { @@ -544,6 +572,12 @@ tooltip: { trigger: 'axis' }, + toolbox: { + show: true, + feature: { + saveAsImage: {} + } + }, legend: { show: true, data: legendData, @@ -714,6 +748,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() } @@ -768,6 +804,24 @@ calRateForm.value.IN_ACCURACY_RATE = Number(rateIn); calRateForm.value.OUT_ACCURACY_RATE = Number(rateOut); 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() { @@ -832,7 +886,9 @@ itemPreMax: 0, itemPreMin: 0, preCumulant: 0, - realCumulant: 0 + realCumulant: 0, + deviation: 0, //平均绝对误差 + deviationCumulant: 0, //累积量平均绝对误差 } calRateFormRef.value?.resetFields() } @@ -851,7 +907,8 @@ .his-body-tree { height: 100%; border: 1px solid lightgray; - padding: 10px; + padding: 10px 10px 20px 10px; + overflow-y: auto; } .his-body-right { -- Gitblit v1.9.3