From cede521babc248ed553b5a45d3ee7ef5fd2a51d6 Mon Sep 17 00:00:00 2001
From: dengzedong <dengzedong@email>
Date: 星期二, 17 六月 2025 18:52:19 +0800
Subject: [PATCH] 接口响应时间和一些loading状态

---
 src/views/model/pre/item/MmPredictItemForm.vue |  101 ++++++++++++++++++---------------
 src/api/model/mpk/project.ts                   |    4 
 src/api/model/pre/item/index.ts                |    2 
 src/views/model/mpk/file/MpkRun.vue            |   44 ++++++++------
 src/api/model/mpk/mpk.ts                       |    2 
 5 files changed, 85 insertions(+), 68 deletions(-)

diff --git a/src/api/model/mpk/mpk.ts b/src/api/model/mpk/mpk.ts
index 42d0ed4..1dba287 100644
--- a/src/api/model/mpk/mpk.ts
+++ b/src/api/model/mpk/mpk.ts
@@ -43,7 +43,7 @@
 }
 
 export const saveModel = (data) => {
-  return request.downloadByPost({ url: '/model/mpk/api/saveModel', data })
+  return request.downloadByPost({ url: '/model/mpk/api/saveModel', data, timeout: 5 * 60 * 1000 })
 }
 
 export const list = (params) => {
diff --git a/src/api/model/mpk/project.ts b/src/api/model/mpk/project.ts
index 33f1cf6..06da4bf 100644
--- a/src/api/model/mpk/project.ts
+++ b/src/api/model/mpk/project.ts
@@ -21,8 +21,8 @@
 }
 
 export const packageProject = (params) => {
-  // 超时时间两分钟
-  return request.download({ url: '/model/mpk/file/packageModel', params, timeout: 2 * 60 * 1000 })
+  // 超时时间十分钟
+  return request.download({ url: '/model/mpk/file/packageModel', params, timeout: 10 * 60 * 1000 })
 }
 
 export const list = () => {
diff --git a/src/api/model/pre/item/index.ts b/src/api/model/pre/item/index.ts
index d6511d5..042efd9 100644
--- a/src/api/model/pre/item/index.ts
+++ b/src/api/model/pre/item/index.ts
@@ -113,7 +113,7 @@
 }
 
 export const updateModel = (data: any) => {
-  return request.upload({ url: '/model/pre/item/upload-model', data })
+  return request.upload({ url: '/model/pre/item/upload-model', data, timeout: 5 * 60 * 1000 })
 }
 
 export const useUpload = () => {
diff --git a/src/views/model/mpk/file/MpkRun.vue b/src/views/model/mpk/file/MpkRun.vue
index 908d883..c9e82ba 100644
--- a/src/views/model/mpk/file/MpkRun.vue
+++ b/src/views/model/mpk/file/MpkRun.vue
@@ -110,7 +110,7 @@
 <!--        </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-button type="primary" size="small" link @click="saveModel" v-if="showSaveModel && formData.methodName === 'train'" :loading="saveModelLoading">下载模型(.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>
@@ -145,6 +145,8 @@
   // 模型方法下拉列表
   const methodList = ref([])
   const hasModel = ref(false)
+
+  const saveModelLoading =  ref(false)
 
   /** 打开弹窗 */
   const open = async (row) => {
@@ -345,24 +347,30 @@
   })
 
   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;
-      })
+    try {
+      saveModelLoading.value = true
+      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')
+    } finally {
+      saveModelLoading.value = false
     }
-    saveModelParams.hasModel = predMethod.model === 1
 
-    saveModelParams.dataLength = predMethod.dataLength
-
-    const data = await MpkApi.saveModel(saveModelParams)
-    download.downloadFile(data, saveModelParams.pyName + '.miail')
   }
 </script>
diff --git a/src/views/model/pre/item/MmPredictItemForm.vue b/src/views/model/pre/item/MmPredictItemForm.vue
index 6b16d06..5b363ca 100644
--- a/src/views/model/pre/item/MmPredictItemForm.vue
+++ b/src/views/model/pre/item/MmPredictItemForm.vue
@@ -184,6 +184,7 @@
             :on-error="uploadModelError"
             :action="uploadUrl"
             :show-file-list="false"
+            v-loading="updateModelLoading"
             :http-request="httpRequest">
             <el-button type="primary" @click="setReplaceModelOnly(false)">
               <Icon icon="ep:upload"/>
@@ -553,6 +554,7 @@
 const fileList = ref([])
 const operatorList = ['+', '-']
 const replaceModelOnly = ref(false)
+const updateModelLoading = ref(false)
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
@@ -843,6 +845,7 @@
 }
 
 function beforeUpload(file) {
+  updateModelLoading.value = true
   let fileName = file.name
   let first = fileName.lastIndexOf('.')
   let nameLength = fileName.length
@@ -854,59 +857,65 @@
 }
 
 function uploadModelSuccess(response, file, fileList) {
-  if (response.code === 0) {
-    message.success(t('上传成功'))
-    dataForm.value.mmModelArithSettingsList = []
-    if (!replaceModelOnly.value) {
-      dataForm.value.mmModelParamList = []
-    }
-    dataForm.value.mmPredictModel.modelpath = ''
-    dataForm.value.mmPredictModel.modelparamstructure = ''
-    if (response.data.loadFieldSetList && response.data.loadFieldSetList[0].propertyList) {
-      response.data.loadFieldSetList[0].propertyList.forEach(function (value) {
-        //匹配  data数字
-        if (!/^data\d+$/.test(value.key)) {
-          dataForm.value.mmModelArithSettingsList.push({
-            key: value.key,
-            name: value.name,
-            valuetype: value.valueType,
-            value: value.value
-          })
-        }
-      })
-    }
-    dataForm.value.mmPredictModel.modelname = response.data.originalFilename
-    dataForm.value.mmPredictModel.classname = response.data.className
-    dataForm.value.mmPredictModel.methodname = response.data.methodName
-    if (response.data.paramPathList) {
-      dataForm.value.mmPredictModel.modelpath = response.data.paramPathList[0]
-    }
-    if (response.data.paramsArray) {
-      dataForm.value.mmPredictModel.modelparamstructure = response.data.paramsArray.join(',')
-    }
-    if (response.data.paramsCount && !replaceModelOnly.value) {
-      for (let i = 0; i < response.data.paramsCount; i++) {
-        dataForm.value.mmModelParamList.push({
-          modelparamportorder: (i + 1),
-          modelparamorder: (i + 1),
-          modelparamtype: '',
-          modelparamid: '',
-          modelparamname: '',
-          datalength: 0
+  try {
+    if (response.code === 0) {
+      message.success(t('上传成功'))
+      dataForm.value.mmModelArithSettingsList = []
+      if (!replaceModelOnly.value) {
+        dataForm.value.mmModelParamList = []
+      }
+      dataForm.value.mmPredictModel.modelpath = ''
+      dataForm.value.mmPredictModel.modelparamstructure = ''
+      if (response.data.loadFieldSetList && response.data.loadFieldSetList[0].propertyList) {
+        response.data.loadFieldSetList[0].propertyList.forEach(function (value) {
+          //匹配  data数字
+          if (!/^data\d+$/.test(value.key)) {
+            dataForm.value.mmModelArithSettingsList.push({
+              key: value.key,
+              name: value.name,
+              valuetype: value.valueType,
+              value: value.value
+            })
+          }
         })
       }
+      dataForm.value.mmPredictModel.modelname = response.data.originalFilename
+      dataForm.value.mmPredictModel.classname = response.data.className
+      dataForm.value.mmPredictModel.methodname = response.data.methodName
+      if (response.data.paramPathList) {
+        dataForm.value.mmPredictModel.modelpath = response.data.paramPathList[0]
+      }
+      if (response.data.paramsArray) {
+        dataForm.value.mmPredictModel.modelparamstructure = response.data.paramsArray.join(',')
+      }
+      if (response.data.paramsCount && !replaceModelOnly.value) {
+        for (let i = 0; i < response.data.paramsCount; i++) {
+          dataForm.value.mmModelParamList.push({
+            modelparamportorder: (i + 1),
+            modelparamorder: (i + 1),
+            modelparamtype: '',
+            modelparamid: '',
+            modelparamname: '',
+            datalength: 0
+          })
+        }
+      }
+      if (response.data.settingConfigMap && response.data.settingConfigMap.settingMap) {
+        dataForm.value.mmPredictModel.settingmap = JSON.stringify(response.data.settingConfigMap.settingMap)
+      }
+    } else {
+      message.error('上传失败!' + response.msg)
+      return
     }
-    if (response.data.settingConfigMap && response.data.settingConfigMap.settingMap) {
-      dataForm.value.mmPredictModel.settingmap = JSON.stringify(response.data.settingConfigMap.settingMap)
-    }
-  } else {
-    message.error('上传失败!' + response.msg)
-    return
+    fileList = []
+  }finally {
+    updateModelLoading.value = false
   }
-  fileList = []
+
 }
 
 function uploadModelError(file, err, fileList) {
+  updateModelLoading.value = false
 }
 
 function changeItemtype(value) {

--
Gitblit v1.9.3