From d0fdc8e4351c737f41a8108c913f8b2e546c666d Mon Sep 17 00:00:00 2001
From: dengzedong <dengzedong@email>
Date: 星期四, 05 六月 2025 13:58:52 +0800
Subject: [PATCH] 建议快照 真实数据分割线

---
 src/views/model/sche/snapshotConf/det/configDetForm.vue |  205 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 129 insertions(+), 76 deletions(-)

diff --git a/src/views/model/sche/snapshotConf/det/configDetForm.vue b/src/views/model/sche/snapshotConf/det/configDetForm.vue
index 470a342..08670fc 100644
--- a/src/views/model/sche/snapshotConf/det/configDetForm.vue
+++ b/src/views/model/sche/snapshotConf/det/configDetForm.vue
@@ -10,19 +10,45 @@
       <el-row :gutter="24">
         <el-col :span="12">
           <el-form-item label="数据类型" prop="dataType">
-            <el-input v-model="formData.dataType" placeholder=""/>
+            <el-select v-model="formData.dataType" placeholder="请选择" @change="changeDataType()">
+              <el-option
+                  v-for="dict in getStrDictOptions(DICT_TYPE.SUGGEST_SNAPSHOT_DATA_TYPE)"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="数据名称" prop="dataName">
-            <el-input v-model="formData.dataName" placeholder=""/>
+          <el-form-item label="数据编号" prop="dataNo">
+            <el-select-v2 v-if="formData.dataType === 'PREDICT_ITEM_N' || formData.dataType === 'PREDICT_ITEM_L' || formData.dataType === 'PREDICT_ITEM_CUR'"
+              v-model="formData.dataNo"
+              :options="modelparamListMap['NormalItem'] || []"
+              placeholder="请选择"
+              :props="{value:'value',label:'label',options:'children'}"
+              clearable
+              filterable
+              :fit-input-width="false"
+              @change="changeDataNo"
+            />
+            <el-select-v2 v-else
+              v-model="formData.dataNo"
+              :options="modelparamListMap[formData.dataType] || []"
+              placeholder="请选择"
+              :props="{value:'itemNo',label:'name'}"
+              clearable
+              filterable
+              :fit-input-width="false"
+              @change="changeDataNo"
+            />
           </el-form-item>
         </el-col>
       </el-row>
       <el-row :gutter="20">
         <el-col :span="12">
-          <el-form-item label="数据编号" prop="dataNo">
-            <el-input v-model="formData.dataNo" placeholder=""/>
+          <el-form-item label="数据名称" prop="dataName">
+            <el-input v-model="formData.dataName" placeholder=""/>
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -83,38 +109,43 @@
 </template>
 <script lang="ts" setup>
   import * as ConfigDetApi from '@/api/model/sche/suggest/snapshotConfigDet'
-import {deleteIcon} from "@/api/model/mpk/icon";
+  import {deleteIcon} from "@/api/model/mpk/icon";
+  import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from '@/utils/dict'
+  import * as ScheduleModelApi from "@/api/model/sche/model";
 
-defineOptions({ name: 'ConfigDetForm' })
+  defineOptions({name: 'ConfigDetForm'})
+  const {t} = useI18n() // 国际化
+  const message = useMessage() // 消息弹窗
 
-const { t } = useI18n() // 国际化
-const message = useMessage() // 消息弹窗
+  const dialogVisible = ref(false) // 弹窗的是否展示
+  const dialogTitle = ref('') // 弹窗的标题
+  const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+  const formType = ref('') // 表单的类型:create - 新增;update - 修改
+  const formData = ref({
+    id: undefined,
+    confId: undefined,
+    dataType: undefined,
+    dataName: undefined,
+    dataNo: undefined,
+    leftLength: undefined,
+    rightLength: undefined,
+    sort: undefined,
+    ext1: undefined,
+    ext2: undefined,
+    ext3: undefined,
+    ext4: undefined,
+    ext5: undefined,
+  })
+  const formRules = reactive({
+    dataType: [{required: true, message: '不能为空', trigger: 'blur'}],
+    dataName: [{required: true, message: '不能为空', trigger: 'blur'}],
+    dataNo: [{required: true, message: '不能为空', trigger: 'blur'}],
+    leftLength: [{required: true, message: '不能为空', trigger: 'blur'}],
+    rightLength: [{required: true, message: '不能为空', trigger: 'blur'}],
+  })
+  const formRef = ref() // 表单 Ref
 
-const dialogVisible = ref(false) // 弹窗的是否展示
-const dialogTitle = ref('') // 弹窗的标题
-const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
-const formType = ref('') // 表单的类型:create - 新增;update - 修改
-const formData = ref({
-  id: undefined,
-  confId: undefined,
-  dataType: undefined,
-  dataName: undefined,
-  dataNo: undefined,
-  leftLength: undefined,
-  rightLength: undefined,
-  sort: undefined,
-  ext1: undefined,
-  ext2: undefined,
-  ext3: undefined,
-  ext4: undefined,
-  ext5: undefined,
-})
-const formRules = reactive({
-  dataType: [{ required: true, message: '不能为空', trigger: 'blur' }],
-  dataName: [{ required: true, message: '不能为空', trigger: 'blur' }],
-  dataNo: [{ required: true, message: '不能为空', trigger: 'blur' }],
-})
-const formRef = ref() // 表单 Ref
+  const modelparamListMap = ref({})
 
   /** 打开弹窗 */
   const open = async (type: string, id?: string, confId?: string) => {
@@ -122,7 +153,9 @@
     dialogTitle.value = t('action.' + type)
     formType.value = type
     resetForm()
-    formData.confId = confId
+    formData.value.confId = confId
+    // 加载参数列表
+    modelparamListMap.value = await ScheduleModelApi.getModelParamList(id)
     // 修改时,设置数据
     if (id) {
       formLoading.value = true
@@ -133,50 +166,70 @@
       }
     }
   }
-defineExpose({ open }) // 提供 open 方法,用于打开弹窗
+  defineExpose({open}) // 提供 open 方法,用于打开弹窗
 
-/** 提交表单 */
-const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
-const submitForm = async () => {
-  // 校验表单
-  if (!formRef) return
-  const valid = await formRef.value.validate()
-  if (!valid) return
-  // 提交请求
-  formLoading.value = true
-  try {
-    const data = formData.value
-    if (formType.value === 'create') {
-      await ConfigDetApi.create(data)
-      message.success(t('common.createSuccess'))
-    } else {
-      await ConfigDetApi.update(data)
-      message.success(t('common.updateSuccess'))
+  /** 提交表单 */
+  const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+  const submitForm = async () => {
+    // 校验表单
+    if (!formRef) return
+    const valid = await formRef.value.validate()
+    if (!valid) return
+    // 提交请求
+    formLoading.value = true
+    try {
+      const data = formData.value
+      if (formType.value === 'create') {
+        await ConfigDetApi.create(data)
+        message.success(t('common.createSuccess'))
+      } else {
+        await ConfigDetApi.update(data)
+        message.success(t('common.updateSuccess'))
+      }
+      dialogVisible.value = false
+      // 发送操作成功的事件
+      emit('success')
+    } finally {
+      formLoading.value = false
     }
-    dialogVisible.value = false
-    // 发送操作成功的事件
-    emit('success')
-  } finally {
-    formLoading.value = false
   }
-}
 
-/** 重置表单 */
-const resetForm = () => {
-  formData.value = {
-    id: undefined,
-    confId: undefined,
-    dataType: undefined,
-    dataNo: undefined,
-    leftLength: undefined,
-    rightLength: undefined,
-    sort: undefined,
-    ext1: undefined,
-    ext2: undefined,
-    ext3: undefined,
-    ext4: undefined,
-    ext5: undefined,
+  /** 重置表单 */
+  const resetForm = () => {
+    formData.value = {
+      id: undefined,
+      confId: undefined,
+      dataType: undefined,
+      dataNo: undefined,
+      leftLength: undefined,
+      rightLength: undefined,
+      sort: undefined,
+      ext1: undefined,
+      ext2: undefined,
+      ext3: undefined,
+      ext4: undefined,
+      ext5: undefined,
+    }
+    formRef.value?.resetFields()
   }
-  formRef.value?.resetFields()
-}
+
+  function changeDataType() {
+    formData.value.dataNo = undefined
+    formData.value.dataName = undefined
+  }
+  const changeDataNo = (value) => {
+    let dataName = undefined;
+    if (formData.value.dataType === 'PREDICT_ITEM_N' || formData.value.dataType === 'PREDICT_ITEM_L' || formData.value.dataType === 'PREDICT_ITEM_CUR') {
+      for (let item of modelparamListMap.value['NormalItem']) {
+        dataName = item.children?.find(e => e.value === value)?.label;
+        if (dataName != undefined) {
+          break
+        }
+      }
+    }else {
+      dataName = modelparamListMap.value?.[formData.value.dataType]?.find(e => e.itemNo === value)?.name;
+    }
+    console.log(dataName)
+    formData.value.dataName = dataName
+  }
 </script>

--
Gitblit v1.9.3