From e295922209fb87c6dcd68ea1560fd16c3e6d808c Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期五, 27 六月 2025 09:36:51 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/feature/ai' --- src/views/model/sche/model/ScheduleModelForm.vue | 194 +++++++++++------------------------------------- 1 files changed, 46 insertions(+), 148 deletions(-) diff --git a/src/views/model/sche/model/ScheduleModelForm.vue b/src/views/model/sche/model/ScheduleModelForm.vue index dd68526..fe9722d 100644 --- a/src/views/model/sche/model/ScheduleModelForm.vue +++ b/src/views/model/sche/model/ScheduleModelForm.vue @@ -11,7 +11,7 @@ <el-row> <el-col :span="12"> <el-form-item label="模型编号" prop="modelCode"> - <el-input v-model="formData.modelCode" placeholder="请输入模型编号"/> + <el-input v-model="formData.modelCode" placeholder="请输入模型编号" /> </el-form-item> </el-col> </el-row> @@ -43,17 +43,13 @@ </el-row> <el-divider content-position="left">模型信息</el-divider> <div style="width: 120px;text-align: right;margin-bottom: 8px"> - <el-popover placement="right" :width="300" trigger="click" ref="modelPopover" - @before-enter="model = undefined"> + <el-popover placement="right" :width="300" trigger="click" ref="modelPopover" @before-enter="model = undefined"> <template #reference> <span style="color: #409eff;cursor: pointer">关联模型信息</span> </template> <template #default> <div style="display:flex;flex-direction: row;align-items: center;"> - <el-cascader style="width: 100%" v-model="model" placeholder="选择模型" - :teleported="false" @change="changeModel" :options="scheduleModelList" v-if="formData.invocation != '4'"/> - <el-cascader style="width: 100%" v-model="model" placeholder="选择模型" - :teleported="false" @change="changeAiModel" :options="aiModelList" v-if="formData.invocation === '4'"/> + <el-cascader style="width: 100%" v-model="model" placeholder="选择模型" :teleported="false" @change="changeModel" :options="scheduleModelList"/> </div> </template> </el-popover> @@ -66,34 +62,33 @@ </el-col> <el-col :span="12"> <el-form-item label="类名" prop="className"> - <el-input v-model="formData.className" placeholder="请输入类名" :disabled="true"/> + <el-input v-model="formData.className" placeholder="请输入类名" :disabled="true" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="方法名" prop="methodName"> - <el-input v-model="formData.methodName" placeholder="请输入方法名" :disabled="true"/> + <el-input v-model="formData.methodName" placeholder="请输入方法名" :disabled="true" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="参数数量" prop="portLength"> - <el-input-number v-model="formData.portLength" :min="0" controls-position="right" - :disabled="true"/> + <el-input-number v-model="formData.portLength" :min="0" controls-position="right" :disabled="true" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item label="参数构造" prop="paramStructure"> - <el-input v-model="formData.paramStructure" placeholder="请输入参数构造" :disabled="true"/> + <el-input v-model="formData.paramStructure" placeholder="请输入参数构造" :disabled="true" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item label="模型路径" prop="modelPath"> - <el-input v-model="formData.modelPath" placeholder="模型路径" :disabled="true"/> + <el-input v-model="formData.modelPath" placeholder="模型路径" :disabled="true" /> </el-form-item> </el-col> </el-row> @@ -128,8 +123,7 @@ width="150" align="center"> <template #default="scope"> - <el-select v-model="scope.row.modelparamtype" placeholder="请选择" - @change="changeModelparamtype(scope.row)"> + <el-select v-model="scope.row.modelparamtype" placeholder="请选择" @change="changeModelparamtype(scope.row)"> <el-option v-for="dict in getStrDictOptions(DICT_TYPE.MODEL_PARAM_TYPE)" :key="dict.value" @@ -145,22 +139,22 @@ align="center"> <template #default="scope"> <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 - :fit-input-width="false" + v-model="scope.row.modelparamid" + :options="modelparamListMap['NormalItem'] || []" + placeholder="请选择" + :props="{value:'value',label:'label',options:'children'}" + clearable + filterable + :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 - :fit-input-width="false" + v-model="scope.row.modelparamid" + :options="modelparamListMap[scope.row.modelparamtype] || []" + placeholder="请选择" + :props="{value:'id',label:'name'}" + clearable + filterable + :fit-input-width="false" /> </template> </el-table-column> @@ -170,8 +164,7 @@ width="160" align="center"> <template #default="scope"> - <el-input-number v-model="scope.row.datalength" :min="0" clearable - controls-position="right" + <el-input-number v-model="scope.row.datalength" :min="0" clearable controls-position="right" style="width:100%;hight:100%"/> </template> </el-table-column> @@ -255,7 +248,7 @@ <el-divider content-position="left">模型下发配置</el-divider> <el-row :gutter="20"> <el-col :span="4"> - <el-button type="primary" size="small" @click="addRowOut()">新增</el-button> + <el-button type="primary" size="small" @click="addRowOut()" >新增</el-button> </el-col> </el-row> <el-table @@ -281,14 +274,12 @@ </el-table-column> <el-table-column prop="resultPort" label="角标1" align="center" width="100"> <template #default="scope"> - <el-input-number :min="0" clearable controls-position="right" size="small" - 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" width="100"> <template #default="scope"> - <el-input-number :min="0" clearable controls-position="right" size="small" - 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" width="100"> @@ -313,7 +304,7 @@ /> </template> </el-table-column> - <el-table-column prop="disturbancePointNo" label="无扰切换点位" align="center" min-width="200"> + <el-table-column prop="disturbancePointNo’" label="无扰切换点位" align="center" min-width="200"> <template #default="scope"> <el-select-v2 v-model="scope.row.disturbancePointNo" @@ -346,17 +337,17 @@ </Dialog> </template> <script lang="ts" setup> - import {DICT_TYPE, getStrDictOptions} from '@/utils/dict' + import { DICT_TYPE, getStrDictOptions } from '@/utils/dict' import * as ScheduleModelApi from '@/api/model/sche/model' - import {CommonStatusEnum} from '@/utils/constants' + 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' + import { ElMessage,ElMessageBox } from 'element-plus' + import { Refresh } from '@element-plus/icons-vue' - defineOptions({name: 'ScheduleModelForm'}) + defineOptions({ name: 'ScheduleModelForm' }) - const {t} = useI18n() // 国际化 + const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 const dialogVisible = ref(false) // 弹窗的是否展示 const dialogTitle = ref('') // 弹窗的标题 @@ -386,16 +377,14 @@ modelOut: [] }) const formRules = reactive({ - modelCode: [{required: true, message: '模型编号不能为空', trigger: 'blur'}], - modelName: [{required: true, message: '模型名称不能为空', trigger: 'blur'}], - modelType: [{required: true, message: '模型类型不能为空', trigger: 'blur'}] + modelCode: [{ required: true, message: '模型编号不能为空', trigger: 'blur' }], + modelName: [{ required: true, message: '模型名称不能为空', trigger: 'blur' }], + modelType: [{ required: true, message: '模型类型不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref const modelparamListMap = ref({}) // 调度模型列表 const scheduleModelList = ref([]) - const aiModelList = ref([]) - const aiModel = ref([]) const model = ref() const modelPopover = ref() @@ -446,10 +435,8 @@ modelparamListMap.value = await ScheduleModelApi.getModelParamList(id) // 加载调度模型列表 getScheduleModelList() - // 加载ai模型列表 - getAiModelList() } - defineExpose({open}) // 提供 open 方法,用于打开弹窗 + defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 @@ -538,24 +525,6 @@ } } - const getAiModelList = async () => { - aiModel.value = await MpkApi.aiList(null) - if (aiModel.value && aiModel.value.length > 0) { - aiModelList.value = aiModel.value.map(e => { - return { - value: e.id, - label: e.name, - children: e.children.map(template => { - return { - value: template.id, - label: template.questionName - } - }) - } - }) - } - }; - // 选择调度模型 const changeModel = async () => { // 校验 @@ -563,86 +532,16 @@ ElMessageBox.confirm( '是否更新输入参数?', '提示', - { - confirmButtonText: '是', - cancelButtonText: '否', - type: 'success', - icon: markRaw(Refresh), - closeOnClickModal: false, - closeOnPressEscape: false - } + {confirmButtonText: '是', cancelButtonText: '否', type: 'success',icon: markRaw(Refresh),closeOnClickModal:false,closeOnPressEscape:false} ).then(() => { relevanceModel(true) }).catch(() => { relevanceModel(false) }) - } else { + }else { message.error("请先选择模型") } } - - // 选择ai模型 - const changeAiModel = () => { - if (!model.value && model.value.length > 0) return - // 查找选中的模型组 - const modelGroup = aiModel.value.find( - group => group.id === model.value[0] - ) - // 查找选中的模板 - const template = modelGroup?.children.find( - t => t.id === model.value[1] - ) - if (!modelGroup || !template) return - // 弹窗确认 - ElMessageBox.confirm( - '是否更新输入参数?', - '提示', - { - confirmButtonText: '是', - cancelButtonText: '否', - type: 'success', - icon: markRaw(Refresh), - closeOnClickModal: false, - closeOnPressEscape: false - } - ).then(() => { - // 更新表单数据 - updateAiModelForm(modelGroup, template, true) - }).catch(() => { - updateAiModelForm(modelGroup, template, false) - }) - } - - // 更新AI模型表单数据 - const updateAiModelForm = (modelGroup, template, updateParams) => { - // 设置基本信息 - formData.value.modelName = modelGroup.name - formData.value.methodName = template.questionName - formData.value.portLength = template.dataLength - - // 设置参数列表转换 - formData.value.settingList = template.settingList.map(setting => { - return { - key: setting.settingKey, - name: setting.settingName, - value: setting.settingValue, - valuetype: 'string' - } - }) - // 输入参数 - let paramList = [] - for (let i = 0; i < formData.value.portLength; i++) { - paramList.push({ - modelparamportorder: i + 1 + '', - modelparamorder: '1', - modelparamtype: '', - modelparamid: '', - datalength: 0 - }) - } - formData.value.paramList = paramList - } - function relevanceModel(refreshParam) { const modelInfo = model.value[0] @@ -667,7 +566,7 @@ let paramList = [] for (let i = 0; i < methodInfo.dataLength; i++) { paramList.push({ - modelparamportorder: i + 1 + '', + modelparamportorder: i+1 + '', modelparamorder: '1', modelparamtype: '', modelparamid: '', @@ -693,9 +592,8 @@ function changeModelparamtype(row) { row.modelparamid = '' } - - const addRowOut = function () { - if (formData.value.modelOut === undefined) { + const addRowOut= function () { + if(formData.value.modelOut===undefined) { formData.value.modelOut = [] } formData.value.modelOut.push({ @@ -705,9 +603,9 @@ port: 0, index: 0, isWrite: 1, - pointNo: undefined, - sort: undefined, - disturbancePointNo: undefined, + pointNo:undefined, + sort:undefined, + disturbancePointNo:undefined, }) } const deleteModelOutRow = function (index) { -- Gitblit v1.9.3