From b451bcdf065ddfdd5c46dce49e19707870cb4fa6 Mon Sep 17 00:00:00 2001
From: dongyukun <1208714201@qq.com>
Date: 星期三, 16 四月 2025 09:57:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/model/pre/item/MmPredictItemForm.vue |  117 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 55 insertions(+), 62 deletions(-)

diff --git a/src/views/model/pre/item/MmPredictItemForm.vue b/src/views/model/pre/item/MmPredictItemForm.vue
index 52eae1e..6b16d06 100644
--- a/src/views/model/pre/item/MmPredictItemForm.vue
+++ b/src/views/model/pre/item/MmPredictItemForm.vue
@@ -299,18 +299,16 @@
         </el-table-column>
         <el-table-column label="数据点" align="center">
           <template #default="scope">
-            <el-select
+            <el-select-v2
               v-model="scope.row.pointid"
-              filterable
+              :options="pointList || []"
+              placeholder="请选择"
+              :props="{value:'id',label:'pointName'}"
               clearable
+              filterable
               @change="(value) => changeOutputPoint(value,scope.row)"
-              placeholder="请选择">
-              <el-option
-                v-for="item in pointList"
-                :key="item.id"
-                :label="item.pointName"
-                :value="item.id"/>
-            </el-select>
+              :fit-input-width="false"
+            />
           </template>
         </el-table-column>
         <el-table-column label="是否累计" align="center" width="150px">
@@ -334,18 +332,16 @@
         </el-table-column>
         <el-table-column label="累计数据点" align="center">
           <template #default="scope">
-            <el-select
+            <el-select-v2
               v-model="scope.row.cumulpoint"
-              :disabled="scope.row.iscumulant !== 1"
-              filterable
+              :options="pointList.filter(e => e.pointType === 'CUMULATE') || []"
+              placeholder="请选择"
+              :props="{value:'id',label:'pointName'}"
               clearable
-              placeholder="请选择">
-              <el-option
-                v-for="item in pointList.filter(e => e.pointType === 'CUMULATE')"
-                :key="item.id"
-                :label="item.pointName"
-                :value="item.id"/>
-            </el-select>
+              filterable
+              :fit-input-width="false"
+              :disabled="scope.row.iscumulant !== 1"
+            />
           </template>
         </el-table-column>
         <el-table-column prop="" label="操作" width="80" align="center">
@@ -402,36 +398,24 @@
         </el-table-column>
         <el-table-column prop="" label="参数名称" align="center">
           <template #default="scope">
-            <el-select v-if="scope.row.modelparamtype === 'NormalItem'"
+            <el-select-v2 v-if="scope.row.modelparamtype === 'NormalItem'"
               v-model="scope.row.modelparamid"
+              :options="modelparamListMap['NormalItem'] || []"
               placeholder="请选择"
+              :props="{value:'value',label:'label',options:'children'}"
+              clearable
               filterable
-              @change="changeModelparam(scope.row)"
-              style="width: 100%">
-              <el-option-group
-                v-for="group in modelparamListMap['NormalItem']"
-                :key="group.value"
-                :label="group.label"
-              >
-                <el-option
-                  v-for="item in group.children"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                />
-              </el-option-group>
-            </el-select>
-            <el-select v-else
+              :fit-input-width="false"
+            />
+            <el-select-v2 v-else
               v-model="scope.row.modelparamid"
+              :options="modelparamListMap[scope.row.modelparamtype] || []"
+              placeholder="请选择"
+              :props="{value:'id',label:'name'}"
+              clearable
               filterable
-              @change="changeModelparam(scope.row)"
-              placeholder="请选择">
-              <el-option
-                v-for="(item, index) in modelparamListMap[scope.row.modelparamtype]"
-                :key="index"
-                :label="item.name"
-                :value="item.id"/>
-            </el-select>
+              :fit-input-width="false"
+            />
           </template>
         </el-table-column>
         <el-table-column prop="" label="参数长度" width="120" align="center">
@@ -565,7 +549,6 @@
 const pointList = ref([])
 const pointMap = ref({})
 const modelparamListMap = ref({})
-const modelparamMap = ref({})
 const expressionList = ref([])
 const fileList = ref([])
 const operatorList = ['+', '-']
@@ -732,18 +715,39 @@
       return
     }
 
-    let flag = false
     dataForm.value.mmItemOutputList.forEach(e => {
       if (e.resultstr == undefined || e.resultstr === '' || e.resultType == undefined || e.resultType === ''
         || (e.resultType === 2 && (e.resultIndex == undefined || e.resultIndex === ''))
         || (e.iscumulant === 1 && e.cumuldivisor == undefined)
       ) {
-        message.error("模型输出数据异常")
-        flag = true
-        return
+        message.error("输出数据异常")
+        throw new Error('输出数据异常');
       }
     })
-    if (flag) return
+
+
+    // 校验是否有预测长度参数
+    const predictLength = dataForm.value.mmModelArithSettingsList?.find(e => e.key === 'predictLength')?.value;
+    if (predictLength === undefined) {
+      message.error("缺少模型设置参数【predictLength(预测长度)】")
+      return
+    }
+    dataForm.value.mmPredictItem.predictlength = predictLength
+
+    //校验模型输入
+    dataForm.value.mmModelParamList.forEach(e => {
+      if (e.modelparamid == undefined || e.modelparamid == '') {
+        message.error("输入数据异常")
+        throw new Error('输入数据异常');
+      }
+      // ind_ascii类型输出的序号必须是1,且所在端口序号最大为1(一个ind_ascii类型输入独占一个端口)
+      if (e.modelparamtype === 'IND_ASCII') {
+        if (e.modelparamorder != 1 || dataForm.value.mmModelParamList.filter(p => p.modelparamportorder === e.modelparamportorder).length != 1) {
+          message.error("输入数据异常:IND_ASCII类型输入独占一个端口")
+          throw new Error('输入数据异常:IND_ASCII类型输入独占一个端口');
+        }
+      }
+    })
   }
   if (dataForm.value.itemtypename === 'MergeItem') {
     if (expressionList.value == undefined || expressionList.value.length <= 1) {
@@ -762,7 +766,6 @@
     if (flag) return
   }
 
-
   // 提交请求
   formLoading.value = true
   try {
@@ -777,13 +780,7 @@
     } else {
       dataForm.value.mmPredictMergeItem.expression = ''
     }
-    if (dataForm.value.mmModelArithSettingsList) {
-      for (let item of dataForm.value.mmModelArithSettingsList) {
-        if (item.key === 'predictLength') {
-          dataForm.value.mmPredictItem.predictlength = item.value
-        }
-      }
-    }
+
     if (formType.value === 'create') {
       await MmPredictItem.createMmPredictItem(data)
       message.success(t('common.createSuccess'))
@@ -910,10 +907,6 @@
 }
 
 function uploadModelError(file, err, fileList) {
-}
-
-function changeModelparam(row) {
-  row.modelparamname = modelparamMap[row.modelparamid]
 }
 
 function changeItemtype(value) {

--
Gitblit v1.9.3