Jay
2024-09-24 389a9f6bc3986523766c5efa14845efdb8d78835
提交 | 用户 | 时间
7462da 1 <template>
L 2   <Dialog v-model="dialogVisible" :title="dialogTitle" width="50%">
3     <el-form
4       ref="formRef"
5       v-loading="formLoading"
cd9f11 6       :model="dataForm"
7462da 7       :rules="formRules"
L 8       label-width="120px"
9     >
cd9f11 10       <el-divider content-position="left">基本信息</el-divider>
7462da 11       <el-row>
L 12         <el-col :span="12">
cd9f11 13           <el-form-item label="预测项名" prop="mmPredictItem.itemname">
L 14             <el-input v-model="dataForm.mmPredictItem.itemname" placeholder="预测项名"
15                       maxlength="50"
16                       clearable/>
7462da 17           </el-form-item>
L 18         </el-col>
19         <el-col :span="12">
cd9f11 20           <el-form-item label="编号" prop="mmPredictItem.itemno">
L 21             <el-input v-model="dataForm.mmPredictItem.itemno" placeholder="编号" maxlength="50"
22                       clearable/>
7462da 23           </el-form-item>
L 24         </el-col>
25       </el-row>
26       <el-row>
27         <el-col :span="12">
cd9f11 28           <el-form-item label="类型" prop="mmPredictItem.itemtypeid">
L 29             <el-select v-model="dataForm.mmPredictItem.itemtypeid"
30                        @change="changeItemtype"
31                        placeholder="请选择">
32               <el-option
33                 v-for="item in itemTypeList"
34                 :key="item.id"
35                 :label="item.itemtypename"
36                 :value="item.id"/>
37             </el-select>
7462da 38           </el-form-item>
L 39         </el-col>
40         <el-col :span="12">
cd9f11 41           <el-form-item label="粒度" prop="mmPredictItem.granularity">
L 42             <el-input v-model="dataForm.mmPredictItem.granularity" placeholder="粒度" maxlength="5"
43                       clearable/>
7462da 44           </el-form-item>
L 45         </el-col>
46       </el-row>
47       <el-row>
48         <el-col :span="12">
cd9f11 49           <el-form-item label="是否检查" prop="mmPredictItem.workchecked">
L 50             <el-select v-model="dataForm.mmPredictItem.workchecked" placeholder="请选择">
51               <el-option
52                 v-for="item in isList"
53                 :key="item.code"
54                 :label="item.name"
55                 :value="item.code"/>
56             </el-select>
7462da 57           </el-form-item>
L 58         </el-col>
59         <el-col :span="12">
cd9f11 60           <el-form-item label="是否启用" prop="dmModuleItem.status">
L 61             <el-select v-model="dataForm.dmModuleItem.status" placeholder="请选择">
62               <el-option
63                 v-for="item in isList"
64                 :key="item.code"
65                 :label="item.name"
66                 :value="item.code"/>
67             </el-select>
7462da 68           </el-form-item>
L 69         </el-col>
70       </el-row>
71       <el-row>
72         <el-col :span="12">
cd9f11 73           <el-form-item label="管网" prop="dmModuleItem.moduleid">
L 74             <el-select v-model="dataForm.dmModuleItem.moduleid" placeholder="请选择">
75               <el-option
76                 v-for="item in moduleList"
77                 :key="item.id"
78                 :label="item.modulename"
79                 :value="item.id"/>
80             </el-select>
7462da 81           </el-form-item>
L 82         </el-col>
83         <el-col :span="12">
cd9f11 84           <el-form-item label="类别" prop="dmModuleItem.categoryid">
L 85             <el-input v-model="dataForm.dmModuleItem.categoryid" placeholder="类别" maxlength="64"
86                       clearable/>
7462da 87           </el-form-item>
L 88         </el-col>
89       </el-row>
90       <el-row>
91         <el-col :span="12">
cd9f11 92           <el-form-item label="排序" prop="dmModuleItem.itemorder">
L 93             <el-input v-model="dataForm.dmModuleItem.itemorder" placeholder="排序" maxlength="36"
94                       clearable/>
7462da 95           </el-form-item>
L 96         </el-col>
97         <el-col :span="12">
cd9f11 98           <el-form-item label="数据点" prop="mmItemOutput.pointid">
L 99             <el-select
100               v-model="dataForm.mmItemOutput.pointid"
101               filterable
102               @change="changeOutputPoint"
103               placeholder="请选择">
104               <el-option
105                 v-for="item in pointList"
106                 :key="item.id"
107                 :label="item.pointname"
108                 :value="item.id"/>
109             </el-select>
7462da 110           </el-form-item>
L 111         </el-col>
112       </el-row>
113       <el-row>
114         <el-col :span="12">
cd9f11 115           <el-form-item label="保存点位" prop="mmPredictItem.saveindex">
L 116             <el-select v-model="dataForm.mmPredictItem.saveindex" placeholder="请选择">
117               <el-option
118                 v-for="item in saveIndexList"
119                 :key="item.code"
120                 :label="item.name"
121                 :value="item.code"/>
122             </el-select>
7462da 123           </el-form-item>
L 124         </el-col>
125       </el-row>
cd9f11 126       <el-row v-if="dataForm.itemtypename === 'MergeItem'">
7462da 127         <el-col :span="12">
cd9f11 128           <el-form-item label="预测长度" prop="mmPredictItem.predictlength">
L 129             <el-input v-model="dataForm.mmPredictItem.predictlength" placeholder="预测长度"
130                       maxlength="5"
131                       clearable/>
7462da 132           </el-form-item>
L 133         </el-col>
134       </el-row>
cd9f11 135       <el-divider content-position="left" v-if="dataForm.itemtypename === 'NormalItem'">模型信息
L 136       </el-divider>
137       <el-row v-if="dataForm.itemtypename === 'NormalItem'">
138         <el-col :span="24">
139           <el-form-item label="模型名称" prop="mmPredictModel.modelname">
140             <el-input v-model="dataForm.mmPredictModel.modelname" placeholder="模型名称"
141                       maxlength="50"
142                       clearable/>
143           </el-form-item>
144         </el-col>
7462da 145         <el-col :span="12">
cd9f11 146           <el-form-item label="编号" prop="mmPredictModel.modelno" v-if="!!dataForm.id">
L 147             <el-input v-model="dataForm.mmPredictModel.modelno" placeholder="编号" maxlength="32"
148                       clearable
149                       disabled/>
7462da 150           </el-form-item>
L 151         </el-col>
152       </el-row>
cd9f11 153       <el-row v-if="dataForm.itemtypename === 'NormalItem'">
L 154         <el-col :span="12">
155           <el-form-item label="上传模型" prop="itemorder">
156             <el-upload
157               class="upload-demo"
158               :limit="1"
159               :file-list="fileList"
160               :before-upload="beforeUpload"
161               :on-success="uploadModelSuccess"
162               :on-error="uploadModelError"
163               :action="uploadModelUrl">
164               <el-button size="small" type="primary" @click="setReplaceModelOnly(0)">点击上传
165               </el-button>
166               <el-button size="small" type="primary" @click="setReplaceModelOnly(1)"
167                          v-if="!!dataForm.id">只替换模型
168               </el-button>
169             </el-upload>
170           </el-form-item>
171         </el-col>
172         <el-col :span="12">
173           <el-form-item label="结果" prop="mmPredictModel.resultstrid">
174             <el-select v-model="dataForm.mmPredictModel.resultstrid" placeholder="请选择">
175               <el-option
176                 v-for="item in resultstridList"
177                 :key="item.id"
178                 :label="item.resultstr"
179                 :value="item.id"/>
180             </el-select>
181           </el-form-item>
182         </el-col>
183       </el-row>
184       <el-row v-if="dataForm.itemtypename === 'NormalItem'">
185         <el-col :span="24">
186           <el-form-item label="路径" prop="mmPredictModel.modelpath">
187             <el-input v-model="dataForm.mmPredictModel.modelpath" placeholder="路径" maxlength="32"
188                       clearable
189                       disabled/>
190           </el-form-item>
191         </el-col>
192       </el-row>
193       <el-row v-if="dataForm.itemtypename === 'NormalItem'">
194         <el-col :span="24">
195           <el-form-item label="类名" prop="mmPredictModel.classname">
196             <el-input v-model="dataForm.mmPredictModel.classname" placeholder="类名" maxlength="32"
197                       clearable
198                       disabled/>
199           </el-form-item>
200         </el-col>
201       </el-row>
202       <el-row v-if="dataForm.itemtypename === 'NormalItem'">
203         <el-col :span="12">
204           <el-form-item label="方法名" prop="mmPredictModel.methodname">
205             <el-input v-model="dataForm.mmPredictModel.methodname" placeholder="方法名"
206                       maxlength="32" clearable
207                       disabled/>
208           </el-form-item>
209         </el-col>
210         <el-col :span="12">
211           <el-form-item label="参数" prop="mmPredictModel.modelparamstructure">
212             <el-input v-model="dataForm.mmPredictModel.modelparamstructure" placeholder="参数"
213                       maxlength="32" clearable
214                       disabled/>
215           </el-form-item>
216         </el-col>
217       </el-row>
218
219       <el-table
220         v-if="dataForm.itemtypename === 'NormalItem'"
221         :data="dataForm.mmModelArithSettingsList"
222         border
223         style="width: 100%; margin-top: 5px;">
224         <el-table-column prop="key" label="键" align="center"/>
225         <el-table-column prop="name" label="名称" align="center"/>
226         <el-table-column prop="valuetype" label="类型" align="center"/>
227         <el-table-column prop="" label="值" align="center">
228           <template #default="scope">
229             <el-input v-model="scope.row.value" maxlength="256" clearable
230                       style="width:100%;hight:100%"/>
231           </template>
232         </el-table-column>
233       </el-table>
234
235       <el-divider content-position="left" v-if="dataForm.itemtypename === 'NormalItem'">输入参数
236       </el-divider>
237       <el-table
238         :data="dataForm.mmModelParamList"
239         border
240         style="width: 100%; margin-top: 5px;">
241         <el-table-column prop="modelparamportorder" label="端口" width="60" align="center"/>
242         <el-table-column prop="modelparamorder" label="序号" width="60" align="center"/>
243         <el-table-column prop="" label="类型" width="200" align="center">
244           <template #default="scope">
245             <el-select v-model="scope.row.modelparamtype"
246                        @change="changeModelparamtype(value, scope.row)" placeholder="请选择">
247               <el-option
248                 v-for="item in dataForm.modelparamtypeList"
249                 :key="item"
250                 :label="item"
251                 :value="item"/>
252             </el-select>
253           </template>
254         </el-table-column>
255         <el-table-column prop="" label="参数名称" align="center">
256           <template #default="scope">
257             <el-select
258               v-model="scope.row.modelparamid"
259               filterable
260               @change="changeModelparam(scope.row)"
261               placeholder="请选择">
262               <el-option
263                 v-for="(item, index) in modelparamListMap[scope.row.modelparamtype]"
264                 :key="index"
265                 :label="item.name"
266                 :value="item.id"/>
267             </el-select>
268           </template>
269         </el-table-column>
270         <el-table-column prop="" label="参数长度" width="120" align="center">
271           <template #default="scope">
272             <el-input v-model="scope.row.datalength" maxlength="50" clearable
273                       style="width:100%;hight:100%"/>
274           </template>
275         </el-table-column>
276         <el-table-column prop="" label="操作" width="100" align="center">
277           <template #default="scope">
278             <el-button
279               @click="addRow(scope.$index, dataForm.mmModelParamList)"
280               type="text"
281               size="small">
282               添加
283             </el-button>
284             <el-button
285               @click="deleteRow(scope.$index, dataForm.mmModelParamList)"
286               type="text"
287               size="small">
288               删除
289             </el-button>
290           </template>
291         </el-table-column>
292       </el-table>
293       <el-divider content-position="left" v-if="dataForm.itemtypename === 'MergeItem'">表达式
294       </el-divider>
295       <el-table
296         :data="expressionList"
297         border
298         style="width: 100%; margin-top: 5px;">
299         <el-table-column
300           prop=""
301           label="预测项"
302           align="center">
303           <template #default="scope">
304             <el-select
305               v-model="scope.row.point"
306               filterable
307               placeholder="请选择">
308               <el-option
309                 v-for="(item, index) in predictItemList"
310                 :key="index"
311                 :label="item.name"
312                 :value="item.code"/>
313             </el-select>
314           </template>
315         </el-table-column>
316         <el-table-column
317           prop="point"
318           label="编号"
319           align="center"/>
320         <el-table-column
321           prop=""
322           label="运算符"
323           align="center">
324           <template #default="scope">
325             <el-select v-model="scope.row.operator" placeholder="请选择">
326               <el-option
327                 v-for="item in operatorList"
328                 :key="item"
329                 :label="item"
330                 :value="item"/>
331             </el-select>
332           </template>
333         </el-table-column>
334         <el-table-column
335           prop=""
336           label="操作"
337           width="100"
338           align="center">
339           <template #default="scope">
340             <el-button
341               @click="addExpressionRow(scope.$index, expressionList)"
342               type="text"
343               size="small">
344               添加
345             </el-button>
346             <el-button
347               @click="deleteExpressionRow(scope.$index, expressionList)"
348               type="text"
349               size="small">
350               删除
351             </el-button>
352           </template>
353         </el-table-column>
354       </el-table>
7462da 355     </el-form>
L 356     <template #footer>
357       <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
358       <el-button @click="dialogVisible = false">取 消</el-button>
359     </template>
360   </Dialog>
361 </template>
362 <script lang="ts" setup>
363 import * as MmPredictItem from '@/api/model/pre/predict'
cd9f11 364 import * as MmItemType from '@/api/model/pre/item'
L 365 import * as DmModule from '@/api/model/pre/dm'
366 import * as MmResultTable from '@/api/model/pre/result'
367 import * as DaPoint from '@/api/data/da/point'
368 import request from "@/config/axios";
369 import * as ScheduleModelApi from '@/api/model/sche/model'
7462da 370
L 371 defineOptions({name: 'DataMmPredictItemForm'})
372
373 const {t} = useI18n() // 国际化
374 const message = useMessage() // 消息弹窗
375 const dialogVisible = ref(false) // 弹窗的是否展示
cd9f11 376 const pointLoading = ref(false) // 弹窗的是否展示
7462da 377 const dialogTitle = ref('') // 弹窗的标题
L 378 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
379 const formType = ref('') // 表单的类型:create - 新增;update - 修改
cd9f11 380 const uploadModelUrl = ''
L 381 const itemTypeList = ref([])
382 const itemTypeMap = ref({})
383 const moduleList = ref([])
384 const resulttableList = ref([])
385 const resultstridList = ref([])
386 const pointList = ref([])
387 const pointMap = ref({})
388 const predictItemList = ref([])
389 const modelparamList = ref([])
390 const modelparamListMap = ref([])
391 const modelparamMap = ref({})
392 const expressionList = ref([])
393 const fileList = ref([])
394 const operatorList = ['+', '-']
395 const replaceModelOnly = ref(0)
396 const queryParams = reactive({
397   pageNo: 1,
398   pageSize: 10,
399   pointNo: undefined,
400   pointName: undefined,
401 })
402 const isList = ref([
403   {
404     code: 0,
405     name: '否'
406   },
407   {
408     code: 1,
409     name: '是'
410   }])
411 const saveIndexList = ref([
412   {
413     code: '2',
414     name: 'T+2'
415   },
416   {
417     code: '30',
418     name: 'T+30'
419   },
420   {
421     code: 'n',
422     name: 'T+n'
423   }])
424 const dataForm = ref({
425   id: '',
426   itemtypename: '',
427   mmPredictItem: {
428     id: '',
429     itemno: '',
430     itemname: '',
431     caltypeid: '',
432     itemtypeid: '',
433     predictlength: '',
434     granularity: '',
435     status: '',
436     isfuse: '',
437     predictphase: '',
438     workchecked: 0,
439     unittransfactor: '',
440     saveindex: ''
441   },
442   dmModuleItem: {
443     id: '',
444     moduleid: '',
445     itemid: '',
446     itemorder: '',
447     status: 1,
448     categoryid: ''
449   },
450   mmItemOutput: {
451     id: '',
452     itemid: '',
453     pointid: '',
454     resulttableid: '3cc2b483-3a01-40f7-a419-0c260210d8eb',
455     tagname: '',
456     outputorder: 1
457   },
458   mmPredictModel: {
459     id: '',
460     modelno: '',
461     modelname: '',
462     itemid: '',
463     arithid: '',
464     trainsamplength: '',
465     predictsamplength: '',
466     isonlinetrain: '',
467     modelpath: '',
468     isnormal: '',
469     normalmax: '',
470     normalmin: '',
471     status: 1,
472     classname: '',
473     methodname: '',
474     modelparamstructure: '',
475     resultstrid: '',
476     settingmap: ''
477   },
478   mmPredictMergeItem: {
479     id: '',
480     itemid: '',
481     expression: '',
482     num: ''
483   },
484   modelparamtypeList: ['DATAPOINT', 'PREDICTITEM', 'DAYWORKPROCESSPLAN', 'MONTHWORKPROCESSPLAN', 'ST_PLAN_NQ', 'ST_PLAN_BQ', 'ST_PLAN_NQ_HI', 'ST_PLAN_BQ_HI'],
485   mmModelArithSettingsList: [],
486   mmModelParamList: []
7462da 487 })
L 488 const formRules = reactive({
cd9f11 489   // itemno: [{required: true, message: '编号不能为空', trigger: 'blur'}],
L 490   // itemname: [{required: true, message: '预测项名不能为空', trigger: 'blur'}],
7462da 491 })
L 492 const formRef = ref() // 表单 Ref
493
494 /** 打开弹窗 */
495 const open = async (type: string, id?: number) => {
496   dialogVisible.value = true
497   dialogTitle.value = t('action.' + type)
498   formType.value = type
499   resetForm()
500   // 修改时,设置数据
501   if (id) {
502     formLoading.value = true
503     try {
cd9f11 504       dataForm.value = await MmPredictItem.getMmPredictItem(id)
7462da 505     } finally {
L 506       formLoading.value = false
507     }
508   }
509 }
510 defineExpose({open}) // 提供 open 方法,用于打开弹窗
511
512 /** 提交表单 */
513 const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
514 const submitForm = async () => {
515   // 校验表单
516   if (!formRef) return
517   const valid = await formRef.value.validate()
518   if (!valid) return
519   // 提交请求
520   formLoading.value = true
521   try {
cd9f11 522     const data = dataForm.value as unknown as MmPredictItem.MmPredictItemVO
7462da 523     if (formType.value === 'create') {
L 524       await MmPredictItem.createMmPredictItem(data)
525       message.success(t('common.createSuccess'))
526     } else {
527       await MmPredictItem.updateMmPredictItem(data)
528       message.success(t('common.updateSuccess'))
529     }
530     dialogVisible.value = false
531     // 发送操作成功的事件
532     emit('success')
533   } finally {
534     formLoading.value = false
535   }
536 }
cd9f11 537 const setReplaceModelOnly = (value) => {
L 538   replaceModelOnly.value = value
539 }
540 const beforeUpload = (file) => {
541   let fileName = file.name
542   let first = fileName.lastIndexOf('.')
543   let nameLength = fileName.length
544   let fileSuffix = fileName.substring(first + 1, nameLength)
545   if (fileSuffix !== 'miail') {
546     message.error('只能上传miail类型文件')
547     return
548   }
549 }
550 const uploadModelSuccess = (response, file, fileList) => {
551   if (response.code === 0) {
552     message.success(t('上传成功'))
553     dataForm.value.mmModelArithSettingsList = []
554     if (!replaceModelOnly) {
555       dataForm.value.mmModelParamList = []
556     }
557     dataForm.value.mmPredictModel.modelpath = ''
558     dataForm.value.mmPredictModel.modelparamstructure = ''
559     if (response.data.loadFieldSetList && response.data.loadFieldSetList[0].propertyList) {
560       response.data.loadFieldSetList[0].propertyList.forEach((value) => {
561         if (value.key !== 'data1') {
562           dataForm.value.mmModelArithSettingsList.push({
563             key: value.key,
564             name: value.name,
565             valuetype: value.valueType,
566             value: value.value
567           })
568         }
569       }, this)
570     }
571     dataForm.value.mmPredictModel.classname = response.data.className
572     dataForm.value.mmPredictModel.methodname = response.data.methodName
573     if (response.data.paramPathList) {
574       dataForm.value.mmPredictModel.modelpath = response.data.paramPathList[0]
575     }
576     if (response.data.paramsArray) {
577       dataForm.value.mmPredictModel.modelparamstructure = response.data.paramsArray.join(',')
578     }
579     if (response.data.paramsCount && !replaceModelOnly) {
580       for (let i = 0; i < response.data.paramsCount; i++) {
581         dataForm.value.mmModelParamList.push({
582           modelparamportorder: (i + 1),
583           modelparamorder: (i + 1),
584           modelparamtype: '',
585           modelparamid: '',
586           modelparamname: '',
587           datalength: 0
588         })
589       }
590     }
591     if (response.data.settingConfigMap && response.data.settingConfigMap.settingMap) {
592       dataForm.value.mmPredictModel.settingmap = JSON.stringify(response.data.settingConfigMap.settingMap)
593     }
594   } else {
595     message.error('上传失败!' + response.msg)
596     return
597   }
598   fileList = []
599 }
600 const uploadModelError = (file, err, fileList) => {
601 }
602 const changeModelparam = (row) => {
603   row.modelparamname = modelparamMap[row.modelparamid]
604 }
605 const changeItemtype = (value) => {
606   dataForm.value.itemtypename = itemTypeMap[value]
607 }
608 const changeModelparamtype = (value, row) => {
609   row.modelparamid = ''
610 }
611 const changeOutputPoint = (value) => {
612   dataForm.value.mmItemOutput.tagname = pointMap[value]
613 }
614 const deleteExpressionRow = (index, rows) => {
615   rows.splice(index, 1)
616 }
617 const addExpressionRow = (index, rows) => {
618   let row = JSON.parse(JSON.stringify(rows[index]))
619   rows.splice(index, 0, row)
620 }
621 const deleteRow = (index: string, rows) => {
622   if (!rows || rows.length === 1) {
623     message.error('不能全部删除!')
624     return
625   }
626   rows.splice(index, 1)
627   orderRow(rows)
628 }
629 const addRow = (index: string, rows) => {
630   let row = JSON.parse(JSON.stringify(rows[index]))
631   rows.splice(index, 0, row)
632   orderRow(rows)
633 }
7462da 634
cd9f11 635 const orderRow = (rows) => {
L 636   let modelparamorder = 0
637   let modelparamportorder = 0
638   rows.forEach(function (value) {
639     if (value.modelparamportorder !== modelparamportorder) {
640       modelparamportorder = value.modelparamportorder
641       modelparamorder = 1
642     }
643     value.modelparamorder = modelparamorder
644     modelparamorder++
645   })
646 }
647 // 获取预测项类型列表
648 const getItemTypeList = async () => {
649   itemTypeList.value = []
650   itemTypeList.value = await MmItemType.getItemTypeList()
651   itemTypeList.value.forEach((value) => {
652     itemTypeMap[value.id] = value.itemtypename
653   })
654   if (!dataForm.value.id) {
655     // dataForm.value.mmPredictItem.itemtypeid = itemTypeList[0].id
656   }
657 }
658 // 获取管网列表
659 const getModuleList = async () => {
660   moduleList.value = []
661   moduleList.value = await DmModule.getModuleList()
662 }
663
664 const getResulttableList = async () => {
665   resulttableList.value = []
666   resulttableList.value = await MmResultTable.getResulttableList()
667 }
668 const getResultstridList = async () => {
669   resultstridList.value = []
670   resultstridList.value = await MmResultTable.getResultstridList()
671 }
672 const getPointList = async () => {
673   pointLoading.value = true
674   pointList.value = await DaPoint.getPointList(queryParams)
675   pointList.value.forEach((value) => {
676     pointList.value.push(value)
677     pointMap[value.id] = value.pointname
678   })
679 }
680 const getModelparamList = async () => {
681   modelparamListMap.value = []
682   modelparamList.value = []
683   predictItemList.value = []
684   let pointRes = await DaPoint.getPointList(queryParams)
685   let paramList = []
686   pointRes.forEach((value) => {
687     paramList.push({
688       id: value.id,
689       code: value.pointno,
690       name: value.pointname,
691       type: 'DATAPOINT'
692     })
693     modelparamMap[value.id] = value.pointname
694   })
695   modelparamListMap['DATAPOINT'] = paramList;
696
697   let predictRes = await MmPredictItem.getMmPredictItemList
698   paramList = []
699   predictRes.forEach((value) => {
700     paramList.push({
701       id: value.id,
702       code: value.itemno,
703       name: value.itemname,
704       type: 'PREDICTITEM'
705     })
706     if (value.id !== dataForm.value.id) {
707       predictItemList.push({
708         id: value.id,
709         code: value.itemno,
710         name: value.itemname
711       })
712     }
713     modelparamMap[value.id] = value.itemname
714   })
715   modelparamListMap['PREDICTITEM'] = paramList;
716
717   const dayParams = {
718     'processType': '日计划'
719   }
720   let dayScheduleRes = await ScheduleModelApi.getScheduleWorkPrecessList(dayParams)
721   paramList = []
722   dayScheduleRes.forEach((value) => {
723     paramList.push({
724       id: value.id,
725       code: value.code,
726       name: value.aliasName,
727       type: 'DAYWORKPROCESSPLAN'
728     })
729     modelparamMap[value.id] = value.aliasName
730   })
731   modelparamListMap['DAYWORKPROCESSPLAN'] = paramList;
732
733   const monthParams = {
734     'processType': '月计划'
735   }
736   let monthScheduleRes = await ScheduleModelApi.getScheduleWorkPrecessList(monthParams)
737   paramList = []
738   monthScheduleRes.forEach((value) => {
739     paramList.push({
740       id: value.id,
741       code: value.code,
742       name: value.aliasName,
743       type: 'MONTHWORKPROCESSPLAN'
744     })
745     modelparamMap[value.id] = value.aliasName
746   })
747   modelparamListMap['MONTHWORKPROCESSPLAN'] = paramList;
748 }
7462da 749 /** 重置表单 */
L 750 const resetForm = () => {
cd9f11 751   dataForm.value = {
L 752     mmModelArithSettingsList: [],
753     mmModelParamList: [],
754     modelparamtypeList: [],
755     id: '',
756     itemtypename: '',
757     mmPredictItem: {
758       id: '',
759       itemno: '',
760       itemname: '',
761       caltypeid: '',
762       itemtypeid: '',
763       predictlength: '',
764       granularity: '',
765       status: '',
766       isfuse: '',
767       predictphase: '',
768       workchecked: 0,
769       unittransfactor: '',
770       saveindex: ''
771     },
772     dmModuleItem: {
773       id: '',
774       moduleid: '',
775       itemid: '',
776       itemorder: '',
777       status: 1,
778       categoryid: ''
779     },
780     mmItemOutput: {
781       id: '',
782       itemid: '',
783       pointid: '',
784       resulttableid: '3cc2b483-3a01-40f7-a419-0c260210d8eb',
785       tagname: '',
786       outputorder: 1
787     },
788     mmPredictModel: {
789       id: '',
790       modelno: '',
791       modelname: '',
792       itemid: '',
793       arithid: '',
794       trainsamplength: '',
795       predictsamplength: '',
796       isonlinetrain: '',
797       modelpath: '',
798       isnormal: '',
799       normalmax: '',
800       normalmin: '',
801       status: 1,
802       classname: '',
803       methodname: '',
804       modelparamstructure: '',
805       resultstrid: '',
806       settingmap: ''
807     },
808     mmPredictMergeItem: {
809       id: '',
810       itemid: '',
811       expression: '',
812       num: ''
813     }
7462da 814   }
L 815   formRef.value?.resetFields()
816 }
cd9f11 817
L 818 onMounted(() => {
819   init()
820 })
821
822 const init = async () => {
823   getItemTypeList()
824   getModuleList()
825   getPointList()
826   getModelparamList()
827   getResulttableList()
828   getResultstridList()
829 }
7462da 830 </script>