From d563effe980f0bf25bc1f9bccf60709494eaa000 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期三, 11 六月 2025 12:44:43 +0800
Subject: [PATCH] 数据分析恢复多选

---
 src/views/model/pre/analysis/index.vue |   68 ++++++++++++++++++++-------------
 1 files changed, 41 insertions(+), 27 deletions(-)

diff --git a/src/views/model/pre/analysis/index.vue b/src/views/model/pre/analysis/index.vue
index e377c25..63b67d1 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">计算精准度
@@ -370,7 +379,7 @@
   return data.label.includes(value)
 }
 
-let xAxisData = []
+// let xAxisData = []
 
 /** 查询列表 */
 const getList = async (isClear = true) => {
@@ -380,18 +389,19 @@
       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,
       startTime: formData.value.startTime,
       endTime: formData.value.endTime
     })
-
 
     const data = await McsApi.getPreDataCharts(params)
     formData.value.predictTime = data.predictTime;
@@ -432,7 +442,7 @@
     suggestList.value = await ScheSuggestApi.getListByOut(paramsAlarm)
     loadingAdjust.value = false
 
-    xAxisData = data.categories;
+    let xAxisData = data.categories;
     let defaultYAxis = [
       {
         type: 'value',
@@ -1129,21 +1139,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].id.indexOf('-') !== -1) {
+        continue
+      }
+      formData.value.checkedItemData.push(cns[i])
+    }
+  }
   debounce(getList, 1000);
 }
 
@@ -1168,6 +1173,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 +1189,12 @@
     calDeviation(dataView.realData,dataView.preDataL,'deviation')
     calDeviation(dataView.cumulantRealData,dataView.cumulantPreData,'deviationCumulant')
     calAccuracyRate()
+
+    // 影响因素
+    // 获取影响因素结果列表
+    influenceFactorList.value = influenceFactorApi.getListByOutId(formData.value.checkedItemData.id)
+    // 根据factorOutputId去重,因为不同的统计规则会有重复的影响因素
+    influenceFactorList.value = Array.from(new Map(influenceFactorList.value.map(item => [item.factorOutputId, item])).values());
   }
 }
 

--
Gitblit v1.9.3