From e295922209fb87c6dcd68ea1560fd16c3e6d808c Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期五, 27 六月 2025 09:36:51 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/feature/ai' --- src/views/model/pre/analysis/index.vue | 111 ++++++++++++++++++++++++++++++------------------------- 1 files changed, 61 insertions(+), 50 deletions(-) diff --git a/src/views/model/pre/analysis/index.vue b/src/views/model/pre/analysis/index.vue index e377c25..945e674 100644 --- a/src/views/model/pre/analysis/index.vue +++ b/src/views/model/pre/analysis/index.vue @@ -69,7 +69,6 @@ node-key="id" ref="treeRef" highlight-current - check-strictly :filter-node-method="filterNode" @check="onCheckTree"/> </div> @@ -79,23 +78,33 @@ <el-form :inline="true" :model="calRateForm" :rules="formRules" ref="calRateFormRef" label-width="108px"> <el-row> -<!-- <el-col :span="6" style="display: flex;align-items: center;justify-content: center">--> -<!-- <span>预测项:{{formData.checkedItemData?.label || ''}}</span>--> -<!-- </el-col>--> - <el-col :span="8"> + <el-col :span="6"> + <el-form-item label="预测项" prop="calItem" style="width: 90%"> + <el-select size="small" v-model="calRateForm.calItem" + @change="calItemBaseVale" + placeholder="请选择"> + <el-option + v-for="itemOut in formData.checkedItemData" + :key="itemOut.id" + :label="itemOut.label" + :value="itemOut.id"/> + </el-select> + </el-form-item> + </el-col> + <el-col :span="6"> <el-form-item label="精准度偏差" prop="IN_DEVIATION"> <el-input-number size="small" v-model="calRateForm.IN_DEVIATION" controls-position="right" :min="0"/> </el-form-item> </el-col> - <el-col :span="8"> + <el-col :span="6"> <el-form-item label="不可信率偏差" prop="OUT_DEVIATION"> <el-input-number size="small" v-model="calRateForm.OUT_DEVIATION" controls-position="right" :min="1"/> </el-form-item> </el-col> - <el-col :span="8"> + <el-col :span="6"> <el-form-item> <el-button size="small" type="primary" plain :loading="loading2" @click="calAccuracyRate">计算精准度 @@ -380,11 +389,13 @@ formData.value.chartCheck = ['真实值'] } let chartCheckArray = formData.value.chartCheck; - if (!formData.value.checkedItemData) { + if (!formData.value.checkedItemData || formData.value.checkedItemData.length == 0) { itemData.value.option = {}; return; } - let outIds = [formData.value.checkedItemData.id] + let outIds = formData.value.checkedItemData.map(item => { + return item.id + }) const params = reactive({ outIds: outIds, predictTime: formData.value.predictTime, @@ -392,31 +403,10 @@ endTime: formData.value.endTime }) - const data = await McsApi.getPreDataCharts(params) formData.value.predictTime = data.predictTime; formData.value.startTime = data.startTime formData.value.endTime = data.endTime - - // 默认影响时间 - changeInfluenceFactorTime(data.predictTime); - - // 获取影响因素结果列表 - influenceFactorResultList.value = await influenceFactorApi.getResultList({ - outIds: outIds, - startTime: data.startTime, - endTime: data.endTime - }) - - // 获取影响因素结果列表 - influenceFactorList.value = await influenceFactorApi.getListByOutId(formData.value.checkedItemData.id) - if (influenceFactorList.value && influenceFactorList.value.length > 0) { - // 根据factorOutputId去重,因为不同的统计规则会有重复的影响因素 - influenceFactorList.value = Array.from(new Map(influenceFactorList.value.map(item => [item.factorOutputId, item])).values()); - // 默认选中第一个影响因素 - influenceFactor.value = influenceFactorList.value?.[0]?.factorOutputId - getInfluenceFactorChart(influenceFactorList.value?.[0]?.factorOutputId) - } const paramsAlarm = reactive({ @@ -432,7 +422,7 @@ suggestList.value = await ScheSuggestApi.getListByOut(paramsAlarm) loadingAdjust.value = false - xAxisData = data.categories; + let xAxisData = data.categories; let defaultYAxis = [ { type: 'value', @@ -817,7 +807,6 @@ symbol: ['circle', 'none'], }, }); - itemDataObject.value = {} yAxisData.push({ type: 'value', name: "累计值", @@ -835,7 +824,6 @@ }) for (let i = 0; i < data.dataViewList.length; i++) { let dataView = data.dataViewList[i] - itemDataObject.value[dataView.outId] = dataView; let maxValue = dataView.maxValue; let minValue = dataView.minValue; yAxisIndex = (formData.value.isMultipleY ? i : 0) + 1; @@ -1043,7 +1031,7 @@ function changeInfluenceFactorTime(time) { if (time && new Date(time)?.getTime()) { influenceFactorResultTime.value = time - influenceFactorResult.value = influenceFactorResultList.value?.[formData.value.checkedItemData?.id]?.filter(e => e.time === new Date(time).getTime()).sort((a, b) => b.value - a.value) || []; + influenceFactorResult.value = influenceFactorResultList.value?.[calRateForm.value.calItem]?.filter(e => e.time === new Date(time).getTime()).sort((a, b) => b.value - a.value) || []; } }// 选择影响因素 function changeInfluenceFactor(value) { @@ -1129,21 +1117,16 @@ } function onCheckTree(data, checked, indeterminate) { - // 单选 - treeRef.value.setCheckedKeys([]) - treeRef.value.setCheckedNodes([data]) - - formData.value.checkedItemData = data - calRateForm.value.calItem = data.id - // if (checked.checkedNodes) { - // let cns = [...checked.checkedNodes] - // for (let i = 0; i < cns.length; i++) { - // if (cns[i].id.indexOf('-') !== -1) { - // continue - // } - // formData.value.checkedItemData.push(cns[i]) - // } - // } + formData.value.checkedItemData = []; + if (checked.checkedNodes) { + let cns = [...checked.checkedNodes] + for (let i = 0; i < cns.length; i++) { + if (cns[i].disabled) { + continue + } + formData.value.checkedItemData.push(cns[i]) + } + } debounce(getList, 1000); } @@ -1158,7 +1141,7 @@ }, wait) } -function calItemBaseVale() { +const calItemBaseVale = async () => { if (!calRateForm.value.calItem) { calRateForm.value.itemPreMax = 0; calRateForm.value.itemPreMin = 0; @@ -1168,6 +1151,9 @@ calRateForm.value.itemMin = 0; calRateForm.value.itemAvg = 0; calRateForm.value.realCumulant = 0; + + // 影响因素 + influenceFactorList.value = [] } else { let dataView = itemDataObject.value[calRateForm.value.calItem] calRateForm.value.itemPreMax = dataView.preMax; @@ -1181,6 +1167,31 @@ calDeviation(dataView.realData,dataView.preDataL,'deviation') calDeviation(dataView.cumulantRealData,dataView.cumulantPreData,'deviationCumulant') calAccuracyRate() + + // 获取影响因素结果列表 + const outPutId = calRateForm.value.calItem + influenceFactorResultList.value = await influenceFactorApi.getResultList({ + outIds: [outPutId], + startTime: formData.value.startTime, + endTime: formData.value.endTime + }) + + // 默认影响时间 + changeInfluenceFactorTime(formData.value.predictTime); + + // 获取影响因素列表 + influenceFactorList.value = await influenceFactorApi.getListByOutId(outPutId) + if (influenceFactorList.value && influenceFactorList.value.length > 0) { + // 根据factorOutputId去重,因为不同的统计规则会有重复的影响因素 + influenceFactorList.value = Array.from(new Map(influenceFactorList.value.map(item => [item.factorOutputId, item])).values()); + // 默认选中第一个影响因素 + influenceFactor.value = influenceFactorList.value?.[0]?.factorOutputId + getInfluenceFactorChart(influenceFactorList.value?.[0]?.factorOutputId) + }else { + // 清除历史 + influenceFactor.value = undefined + myInfluenceFactorChart.clear() + } } } -- Gitblit v1.9.3