From 8d139bf079918171f140a53004ad4221937e3ad0 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期五, 21 三月 2025 14:48:18 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/model/mpk/file/MpkRun.vue | 131 ++++++++++++++++++++++++++++++++----------- 1 files changed, 96 insertions(+), 35 deletions(-) diff --git a/src/views/model/mpk/file/MpkRun.vue b/src/views/model/mpk/file/MpkRun.vue index 104377d..908d883 100644 --- a/src/views/model/mpk/file/MpkRun.vue +++ b/src/views/model/mpk/file/MpkRun.vue @@ -34,28 +34,24 @@ </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"> - <el-button tag="a" :href="staticDir + '/template/模型参数导入模板.xlsx'" download="模型参数导入模板.xlsx" style="text-decoration: none;" type="primary" size="small" link>模板下载</el-button> - </el-col> - <el-col :span="2" style="margin-bottom: 10px;"> - <el-upload - ref="uploadRef" - v-model:file-list="fileList" - :show-file-list="false" - :action="importUrl" - :auto-upload="true" - :disabled="formLoading" - :before-upload="beforeUpload" - :headers="uploadHeaders" - :on-error="submitFormError" - :on-success="submitFormSuccess" - accept=".xlsx" - > - <el-button type="primary" size="small" link>参数导入</el-button> - </el-upload> - </el-col> - </el-row> + <div style="display:flex;flex-direction: row;align-items: center;margin-bottom: 6px"> + <el-button tag="a" :href="staticDir + '/template/模型参数导入模板.xlsx'" download="模型参数导入模板.xlsx" style="text-decoration: none;" type="primary" size="small" link>模板下载</el-button> + <el-upload + ref="uploadRef" + v-model:file-list="fileList" + :show-file-list="false" + :action="importUrl" + :auto-upload="true" + :disabled="formLoading" + :before-upload="beforeUpload" + :headers="uploadHeaders" + :on-error="submitFormError" + :on-success="submitFormSuccess" + accept=".xlsx" + > + <el-button type="primary" size="small" link>参数导入</el-button> + </el-upload> + </div> <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%"> @@ -87,25 +83,34 @@ </el-table-column> <el-table-column prop="" + label="参数名称" + align="center"> + <template #default="scope"> + <el-input size="small" v-model="scope.row.name" :disabled="true" maxlength="50" clearable /> + </template> + </el-table-column> + <el-table-column + prop="" label="参数value" align="center"> <template #default="scope"> <el-input size="small" v-model="scope.row.settingValue" :disabled="scope.row.settingKey === 'pyFile'" maxlength="50" clearable /> </template> </el-table-column> - <el-table-column label="操作" fixed="right" header-align="center" align="center" width="100"> - <template #default="scope"> - <el-button - @click="deleteRow(scope.$index)" - key="danger" - type="danger" - :disabled="scope.row.settingKey === 'pyFile'" - link - >删除</el-button> - </template> - </el-table-column> +<!-- <el-table-column label="操作" fixed="right" header-align="center" align="center" width="100">--> +<!-- <template #default="scope">--> +<!-- <el-button--> +<!-- @click="deleteRow(scope.$index)"--> +<!-- key="danger"--> +<!-- type="danger"--> +<!-- :disabled="scope.row.settingKey === 'pyFile'"--> +<!-- link--> +<!-- >删除</el-button>--> +<!-- </template>--> +<!-- </el-table-column>--> </el-table> <el-divider content-position="left">模型运行结果</el-divider> + <el-button type="primary" size="small" link @click="saveModel" v-if="showSaveModel && formData.methodName === 'train'">下载模型(.miail)</el-button> <el-input v-model="modelRunResult" placeholder="" rows="4" type="textarea" /> <div style="display: flex;flex-direction: row;justify-content: end;margin-top: 16px"> <el-button :loading="modelRunloading" type="primary" @click="modelRun()">运行</el-button> @@ -117,6 +122,7 @@ import * as MpkApi from '@/api/model/mpk/mpk' import {FormRules} from "element-plus"; import {getAccessToken, getTenantId} from "@/utils/auth"; + import download from "@/utils/download"; const staticDir = ref(import.meta.env.VITE_STATIC_DIR) const { t } = useI18n() // 国际化 @@ -163,6 +169,7 @@ return e; }) } + } defineExpose({ open }) // 提供 open 方法,用于打开弹窗 @@ -256,7 +263,8 @@ // 运行 const modelRun = async () => { modelRunResult.value = '' -// 校验表单 + showSaveModel.value = false + // 校验表单 if (!formRef) return const valid = await formRef.value.validate() if (!valid) return @@ -298,10 +306,63 @@ data.model = undefined } - modelRunResult.value = await MpkApi.modelRun(data) + let result = await MpkApi.modelRun(data) + + modelRunResult.value = result; message.success('运行成功') + // 训练方法 + if (formData.methodName === 'train') { + result = JSON.parse(result); + // 返回结果正确 + if (result?.status_code === '100' && result?.models?.model_path) { + // 有预测方法 + if (methodList.value.some(e => e.methodName === 'predict')) { + saveModelParams.modelResult = result + saveModelParams.model = result?.models + showSaveModel.value = true + } + } + } } finally { modelRunloading.value = false } } + + const showSaveModel = ref(false) + + const saveModelParams = reactive({ + pyName: '', + className: '', + methodName: '', + uuids: [], + modelSettings: [], + predModelSettings: [], + hasModel: false, + model: undefined, + modelResult: undefined, + dataLength: undefined, + resultKey: undefined, + }) + + const saveModel = async () => { + saveModelParams.className = formData.className + saveModelParams.pyName = formData.pyName + saveModelParams.modelSettings = formData.modelSettings + const predMethod = methodList.value.find(e => e.methodName === 'predict'); + saveModelParams.methodName = predMethod.methodName + saveModelParams.resultKey = predMethod.resultKey + //predModelSettings + if (predMethod.methodSettings && predMethod.methodSettings.length > 0) { + saveModelParams.predModelSettings = predMethod.methodSettings.map(e => { + e.settingValue = e.value; + return e; + }) + } + saveModelParams.hasModel = predMethod.model === 1 + + saveModelParams.dataLength = predMethod.dataLength + + const data = await MpkApi.saveModel(saveModelParams) + download.downloadFile(data, saveModelParams.pyName + '.miail') + } </script> -- Gitblit v1.9.3