潘志宝
2025-06-11 d563effe980f0bf25bc1f9bccf60709494eaa000
数据分析恢复多选
已修改1个文件
68 ■■■■■ 文件已修改
src/views/model/pre/analysis/index.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
  }
}