From 1255f2244f7736340d407c08eb04d819affc9e98 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期三, 02 四月 2025 10:02:57 +0800 Subject: [PATCH] 数据分析 消息内容 显示优化 --- src/views/model/sche/model/ScheduleModelForm.vue | 230 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 122 insertions(+), 108 deletions(-) diff --git a/src/views/model/sche/model/ScheduleModelForm.vue b/src/views/model/sche/model/ScheduleModelForm.vue index b01f3d2..fe9722d 100644 --- a/src/views/model/sche/model/ScheduleModelForm.vue +++ b/src/views/model/sche/model/ScheduleModelForm.vue @@ -1,5 +1,5 @@ <template> - <Dialog v-model="dialogVisible" :title="dialogTitle" width="60%"> + <Dialog v-model="dialogVisible" :title="dialogTitle" width="75%"> <el-form ref="formRef" v-loading="formLoading" @@ -103,7 +103,7 @@ width="100" align="center"> <template #default="scope"> - <el-input v-model="scope.row.modelparamportorder" maxlength="5" clearable :disabled="true" + <el-input v-model="scope.row.modelparamportorder" maxlength="5" clearable style="width:100%; hight:100%"/> </template> </el-table-column> @@ -138,34 +138,24 @@ 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 - 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 - 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 @@ -210,6 +200,7 @@ <el-table-column prop="" label="键" + min-width="150" align="center"> <template #default="scope"> <el-input v-model="scope.row.key" maxlength="20" clearable :disabled="true" @@ -219,6 +210,7 @@ <el-table-column prop="" label="名称" + min-width="150" align="center"> <template #default="scope"> <el-input v-model="scope.row.name" maxlength="20" clearable :disabled="true" @@ -228,6 +220,7 @@ <el-table-column prop="" label="类型" + min-width="100" align="center"> <template #default="scope"> <el-select v-model="scope.row.valuetype" placeholder="请选择" :disabled="true"> @@ -243,34 +236,14 @@ <el-table-column prop="" label="值" + min-width="300" align="center"> <template #default="scope"> - <el-input v-model="scope.row.value" maxlength="256" clearable :disabled="scope.row.key === 'pyFile'" + <el-input v-model="scope.row.value" maxlength="256" clearable + :disabled="scope.row.key === 'pyFile_BAK'" style="width:100%;hight:100%"/> </template> </el-table-column> -<!-- <el-table-column--> -<!-- prop=""--> -<!-- label="操作"--> -<!-- width="100"--> -<!-- align="center">--> -<!-- <template #default="scope">--> -<!-- <el-button--> -<!-- @click.prevent="addRow(scope.$index, formData.settingList)"--> -<!-- link--> -<!-- type="primary"--> -<!-- size="small">--> -<!-- 添加--> -<!-- </el-button>--> -<!-- <el-button--> -<!-- @click.prevent="deleteRow(scope.$index, formData.settingList)"--> -<!-- link--> -<!-- type="primary"--> -<!-- size="small">--> -<!-- 删除--> -<!-- </el-button>--> -<!-- </template>--> -<!-- </el-table-column>--> </el-table> <el-divider content-position="left">模型下发配置</el-divider> <el-row :gutter="20"> @@ -284,10 +257,10 @@ style="width: 100%; margin-top: 5px;"> <el-table-column prop="resultKey" label="输出key" align="center" min-width="100"> <template #default="scope"> - <el-input size="mini" v-model="scope.row.resultKey" style="width:100%;height:100%"/> + <el-input size="small" v-model="scope.row.resultKey" style="width:100%;height:100%"/> </template> </el-table-column> - <el-table-column prop="resultType" label="数据类型" align="center" min-width="150"> + <el-table-column prop="resultType" label="数据类型" align="center" width="150"> <template #default="scope"> <el-select v-model="scope.row.resultType" placeholder="请选择"> <el-option @@ -299,17 +272,17 @@ </el-select> </template> </el-table-column> - <el-table-column prop="resultPort" label="角标1" align="center" min-width="100"> + <el-table-column prop="resultPort" label="角标1" align="center" width="100"> <template #default="scope"> - <el-input-number :min="0" clearable controls-position="right" size="mini" v-model="scope.row.resultPort" style="width:100%;height:100%"/> + <el-input-number :min="0" clearable controls-position="right" size="small" v-model="scope.row.resultPort" style="width:100%;height:100%"/> </template> </el-table-column> - <el-table-column prop="resultIndex" label="角标2" align="center" min-width="100"> + <el-table-column prop="resultIndex" label="角标2" align="center" width="100"> <template #default="scope"> - <el-input-number :min="0" clearable controls-position="right" size="mini" v-model="scope.row.resultIndex" style="width:100%;height:100%"/> + <el-input-number :min="0" clearable controls-position="right" size="small" v-model="scope.row.resultIndex" style="width:100%;height:100%"/> </template> </el-table-column> - <el-table-column prop="isWrite" label="是否下发" align="center" min-width="100"> + <el-table-column prop="isWrite" label="是否下发" align="center" width="100"> <template #default="scope"> <el-switch size="small" v-model="scope.row.isWrite" :active-value="1" :inactive-value="0"/> @@ -320,29 +293,28 @@ label="测点名称" align="center" min-width="200"> <template #default="scope"> - <el-select v-model="scope.row.pointNo" - filterable - placeholder="请选择"> - <el-option - v-for="(item, index) in modelparamListMap['DATAPOINT']" - :key="index" - :label="item.name" - :value="item.itemNo"/> - </el-select> + <el-select-v2 + v-model="scope.row.pointNo" + :options="modelparamListMap['DATAPOINT'] || []" + placeholder="请选择" + :props="{value:'itemNo',label:'name'}" + clearable + filterable + :fit-input-width="false" + /> </template> </el-table-column> <el-table-column prop="disturbancePointNo’" label="无扰切换点位" align="center" min-width="200"> <template #default="scope"> - <el-select v-model="scope.row.disturbancePointNo" - clearable - filterable - placeholder="请选择"> - <el-option - v-for="(item, index) in modelparamListMap['DATAPOINT']" - :key="index" - :label="item.name" - :value="item.itemNo"/> - </el-select> + <el-select-v2 + v-model="scope.row.disturbancePointNo" + :options="modelparamListMap['DATAPOINT'] || []" + placeholder="请选择" + :props="{value:'itemNo',label:'name'}" + clearable + filterable + :fit-input-width="false" + /> </template> </el-table-column> <el-table-column label="操作" fixed="right" header-align="center" align="center" width="100"> @@ -370,6 +342,8 @@ import { CommonStatusEnum } from '@/utils/constants' import * as MpkApi from "@/api/model/mpk/mpk"; import {generateUUID} from "@/utils"; + import { ElMessage,ElMessageBox } from 'element-plus' + import { Refresh } from '@element-plus/icons-vue' defineOptions({ name: 'ScheduleModelForm' }) @@ -392,7 +366,13 @@ resultStrId: undefined, invocation: undefined, status: CommonStatusEnum.ENABLE, - paramList: [], + paramList: [{ + modelparamportorder: 1 + '', + modelparamorder: '1', + modelparamtype: '', + modelparamid: '', + datalength: 0 + }], settingList: [], modelOut: [] }) @@ -452,7 +432,7 @@ } } // 加载参数列表 - modelparamListMap.value = await ScheduleModelApi.getModelParamList() + modelparamListMap.value = await ScheduleModelApi.getModelParamList(id) // 加载调度模型列表 getScheduleModelList() } @@ -465,6 +445,21 @@ if (!formRef) return const valid = await formRef.value.validate() if (!valid) return + //校验模型输入 + formData.value.paramList.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 || formData.value.paramList.filter(p => p.modelparamportorder === e.modelparamportorder).length != 1) { + message.error("输入数据异常:IND_ASCII类型输入独占一个端口") + throw new Error('输入数据异常:IND_ASCII类型输入独占一个端口'); + } + } + }) + // 提交请求 formLoading.value = true try { @@ -499,7 +494,13 @@ resultStrId: undefined, invocation: undefined, status: CommonStatusEnum.ENABLE, - paramList: [], + paramList: [{ + modelparamportorder: 1 + '', + modelparamorder: '1', + modelparamtype: '', + modelparamid: '', + datalength: 0 + }], settingList: [], modelOut: [] } @@ -528,23 +529,39 @@ const changeModel = async () => { // 校验 if (model.value && model.value.length > 0) { - const modelInfo = model.value[0] - const methodInfo = model.value[1] - formData.value.modelName = modelInfo.pyChineseName - formData.value.className = modelInfo.pkgName + '.impl.' + modelInfo.pyName + 'Impl'; - formData.value.methodName = methodInfo.methodName - formData.value.portLength = methodInfo.dataLength - // 参数构造 - let paramStructure = [] - for (let i = 0; i < methodInfo.dataLength; i++) { - paramStructure.push('[[D') - } - if (methodInfo.model === 1) { - paramStructure.push('java.util.HashMap') - } + ElMessageBox.confirm( + '是否更新输入参数?', + '提示', + {confirmButtonText: '是', cancelButtonText: '否', type: 'success',icon: markRaw(Refresh),closeOnClickModal:false,closeOnPressEscape:false} + ).then(() => { + relevanceModel(true) + }).catch(() => { + relevanceModel(false) + }) + }else { + message.error("请先选择模型") + } + } + + function relevanceModel(refreshParam) { + const modelInfo = model.value[0] + const methodInfo = model.value[1] + formData.value.modelName = modelInfo.pyChineseName + formData.value.className = modelInfo.pkgName + '.impl.' + modelInfo.pyName + 'Impl'; + formData.value.methodName = methodInfo.methodName + formData.value.portLength = methodInfo.dataLength + // 参数构造 + let paramStructure = [] + for (let i = 0; i < methodInfo.dataLength; i++) { + paramStructure.push('[[D') + } + if (methodInfo.model === 1) { paramStructure.push('java.util.HashMap') - formData.value.paramStructure = paramStructure.join(',') - formData.value.modelPath = modelInfo.pyModule + } + paramStructure.push('java.util.HashMap') + formData.value.paramStructure = paramStructure.join(',') + formData.value.modelPath = modelInfo.pyModule + if (refreshParam) { // 输入参数 let paramList = [] for (let i = 0; i < methodInfo.dataLength; i++) { @@ -556,23 +573,20 @@ datalength: 0 }) } - formData.value.paramList = paramList - // 设置参数 - let settingList = [] - methodInfo.methodSettings.forEach(e => { - settingList.push({ - key: e.settingKey, - value: e.value, - valuetype: e.valueType, - name: e.name - }) - }) - formData.value.settingList = settingList - modelPopover.value.hide() - }else { - message.error("请先选择模型") } + // 设置参数 + let settingList = [] + methodInfo.methodSettings.forEach(e => { + settingList.push({ + key: e.settingKey, + value: e.value, + valuetype: e.valueType, + name: e.name + }) + }) + formData.value.settingList = settingList + modelPopover.value.hide() } function changeModelparamtype(row) { -- Gitblit v1.9.3