From 67b64ee5d6f791d8ae79209e84bb4d8544ee5807 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期二, 19 十一月 2024 08:45:11 +0800 Subject: [PATCH] predictTime --- src/views/model/mpk/file/MpkRun.vue | 131 ++++++++++++++++++++++++++++--------------- 1 files changed, 86 insertions(+), 45 deletions(-) diff --git a/src/views/model/mpk/file/MpkRun.vue b/src/views/model/mpk/file/MpkRun.vue index f3a0318..d3ff1c9 100644 --- a/src/views/model/mpk/file/MpkRun.vue +++ b/src/views/model/mpk/file/MpkRun.vue @@ -12,19 +12,27 @@ <el-form-item style="width: 100%"> <el-divider content-position="left">模型信息</el-divider> </el-form-item> - <el-form-item label="全类名" style="width: 90%" prop="className"> - <el-input v-model="formData.className" placeholder=""/> - </el-form-item> - <el-form-item label="方法名" prop="methodName"> - <el-select v-model="formData.methodName" @change="methodChange" style="width: 240px"> - <el-option - v-for="item in methodList" - :key="item.id" - :label="item.methodName" - :value="item.methodName" - /> - </el-select> - </el-form-item> + <el-row> + <el-col :span="24"> + <el-form-item label="全类名" style="width: 100%" prop="className"> + <el-input v-model="formData.className" placeholder=""/> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item label="方法名" prop="methodName"> + <el-select v-model="formData.methodName" @change="methodChange" style="width: 240px"> + <el-option + v-for="item in methodList" + :key="item.id" + :label="item.methodName" + :value="item.methodName" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> <el-divider content-position="left">模型参数信息</el-divider> <el-row :gutter="20"> <el-col :span="2" style="margin-bottom: 10px;margin-left: 20px"> @@ -48,10 +56,10 @@ </el-upload> </el-col> </el-row> - <el-row v-for="(item,index) in formData.datas" :key="index" :gutter="20"> - <el-col :span="20"> + <el-row v-for="(item,index) in datas" :key="index" :gutter="20"> + <el-col :span="24"> <el-form-item :label="'参数_' + (index)" required style="width: 100%"> - <el-input v-model="formData.datas[index]" placeholder="" /> + <el-input type="textarea" :disabled="true" :rows="3" v-model="datas[index]" placeholder="" /> </el-form-item> </el-col> </el-row> @@ -63,18 +71,18 @@ </el-col> </el-row> <el-divider content-position="left">模型设置信息</el-divider> - <el-row :gutter="20"> - <el-col :span="4"> - <el-button type="primary" size="small" @click="addRow()">新增</el-button> - </el-col> - </el-row> +<!-- <el-row :gutter="20">--> +<!-- <el-col :span="4">--> +<!-- <el-button type="primary" size="small" @click="addRow()">新增</el-button>--> +<!-- </el-col>--> +<!-- </el-row>--> <el-table :data="formData.modelSettings" border> <el-table-column prop="" label="参数key" align="center"> <template #default="scope"> - <el-input size="small" v-model="scope.row.settingKey" maxlength="50" clearable /> + <el-input size="small" v-model="scope.row.settingKey" :disabled="true" maxlength="50" clearable /> </template> </el-table-column> <el-table-column @@ -116,12 +124,15 @@ const dialogTitle = ref('模型运行') // 弹窗的标题 const formData = reactive({ + pyName: '', className: '', methodName: '', - datas: [], + uuids: [], modelSettings: [], model: undefined }) + + const datas = ref([]) // 模型方法下拉列表 const methodList = ref([]) @@ -131,14 +142,25 @@ const open = async (row) => { dialogVisible.value = true formData.className = row.pkgName + '.impl.' + row.pyName + 'Impl'; + formData.pyName = row.pyName; const mpk = await MpkApi.getMpk(row.id) methodList.value = mpk.modelMethods formData.methodName = mpk.modelMethods[0].methodName - formData.datas = [] + datas.value = [] + formData.uuids = []; for (let i = 0 ; i < mpk.modelMethods[0].dataLength ; i++) { - formData.datas[i] = '[[]]' + datas.value[i] = '[[]]'; + formData.uuids[i] = ''; } hasModel.value = mpk.modelMethods[0].model === 1 + + // 回显参数 + if (mpk.modelMethods[0].methodSettings && mpk.modelMethods[0].methodSettings.length > 0) { + formData.modelSettings = mpk.modelMethods[0].methodSettings.map(e => { + e.settingValue = e.value; + return e; + }) + } } defineExpose({ open }) // 提供 open 方法,用于打开弹窗 @@ -161,11 +183,23 @@ formData.modelSettings.splice(index, 1) } const methodChange = function (value) { - formData.datas = [] - for (let i = 0 ; i < methodList.value.find(e => e.methodName === value)?.dataLength ; i++) { - formData.datas[i] = '[[]]' + datas.value = [] + formData.uuids = []; + var method = methodList.value.find(e => e.methodName === value); + for (let i = 0 ; i < method?.dataLength ; i++) { + datas.value[i] = '[[]]'; + formData.uuids[i] = ''; } - hasModel.value = methodList.value.find(e => e.methodName === value)?.model === 1 + hasModel.value = method?.model === 1 + // 回显参数 + if (method.methodSettings && method.methodSettings.length > 0) { + formData.modelSettings = method.methodSettings.map(e => { + e.settingValue = e.value; + return e; + }) + }else { + formData.modelSettings = [] + } } const fileList = ref([]) // 文件列表 @@ -179,17 +213,24 @@ formLoading.value = false } const submitFormSuccess = (response: any) => { - if (response.code !== 0) { - message.error(response.msg) + try { + if (response.code !== 0) { + message.error(response.msg) + return + } + const data = response.data; + if (datas.value.length > data.length) { + message.error("导入数据长度为" + data.length + ",应≥" + datas.value.length) + return + } + for (let i = 0; i < datas.value.length; i++) { + datas.value[i] = data[i].data + formData.uuids[i] = data[i].uuid; + } + message.success('导入成功') + } finally { formLoading.value = false - return } - const datas = response.data; - for (let i=0;i<formData.datas.length;i++) { - formData.datas[i] = datas[i] - } - message.success('导入成功') - formLoading.value = false } const beforeUpload = function (file) { // 提交请求 @@ -209,6 +250,7 @@ const formRef = ref() // 运行 const modelRun = async () => { + modelRunResult.value = '' // 校验表单 if (!formRef) return const valid = await formRef.value.validate() @@ -221,20 +263,19 @@ } //处理modelSettings - let settingsPredict = {}; - data.modelSettings.forEach(e => { - settingsPredict[e.settingKey] = e.settingValue; - }) - data.modelSettings = settingsPredict + // let settingsPredict = {}; + // data.modelSettings.forEach(e => { + // settingsPredict[e.settingKey] = e.settingValue; + // }) + // data.modelSettings = settingsPredict data.hasModel = hasModel.value if (data.hasModel && data.model) { - data.model = {model_path:data.model} + data.model = JSON.parse(data.model) }else { data.model = undefined } modelRunResult.value = await MpkApi.modelRun(data) - modelRunloading.value = false message.success('运行成功') } finally { modelRunloading.value = false -- Gitblit v1.9.3