dengzedong
2025-06-17 cede521babc248ed553b5a45d3ee7ef5fd2a51d6
接口响应时间和一些loading状态
已修改5个文件
153 ■■■■■ 文件已修改
src/api/model/mpk/mpk.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/model/mpk/project.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/model/pre/item/index.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/model/mpk/file/MpkRun.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/model/pre/item/MmPredictItemForm.vue 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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) => {
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 = () => {
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 = () => {
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>
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) {