Explorar el Código

feat: 完成动态添加多算法

Rmengdi hace 1 año
padre
commit
9555607c32
Se han modificado 1 ficheros con 160 adiciones y 74 borrados
  1. 160 74
      src/views/taais/homePage/createTask.vue

+ 160 - 74
src/views/taais/homePage/createTask.vue

@@ -92,6 +92,7 @@ let model = ref({
   enhanceModel: '',
   pretreatmentModel: ''
 })
+
 let formItem = reactive({
   taskName: '',
   selectTask: [2, 5],
@@ -110,8 +111,7 @@ let formItem = reactive({
 })
 let prevTreeData = ref([3])
 const router = useRouter()
-let trainSubSystem = 0
-let selectAgloId
+let trainSubSystem, selectAgloId
 let pageIndex = ref<number>(1)
 const selectTaskTreeRef = ref<InstanceType<typeof ElTree>>()
 const proTable1 = ref<ProTableInstance>()
@@ -377,7 +377,7 @@ let items = reactive<ProForm.ItemsOptions[]>([
         formItem.trainDataEnhancement['algorithmId'] = val
         formItem.trainDataEnhancement['params'] = {}
         // (参数信息,第几页,数组名称)
-        addForm(params, 3, 'trainDataEnhancement')
+        addForm(params, 3, 'trainDataEnhancement', 0)
       }
     }
   },
@@ -400,7 +400,7 @@ let items = reactive<ProForm.ItemsOptions[]>([
         formItem.trainDataExpansion['algorithmId'] = val
         formItem.trainDataExpansion['params'] = {}
         // (参数信息,第几页,数组名称)
-        addForm(params, 4, 'trainDataExpansion')
+        addForm(params, 4, 'trainDataExpansion', 0)
       }
     }
   },
@@ -470,15 +470,18 @@ let items = reactive<ProForm.ItemsOptions[]>([
         getAlgorithmApi(1, trainSubSystem).then(res => {
           res.data.forEach(item => {
             if (item.id === selectAgloId) {
-              console.log('item.parameterConfig', item.parameterConfig)
-
-              // const params = JSON.parse(item.parameterConfig)
-              // console.log('params', params)
+              const params = eval('(' + item.parameterConfig + ')')
+              params.forEach(config => {
+                if (config.validate == '/d') {
+                  config.validate = '\\d'
+                }
+              })
+              console.log('params', params)
 
               formItem.train[0]['modelId'] = val
               formItem.train[0]['params'] = {}
-              // // (参数信息,第几页,数组名称)
-              // addForm(params, 5, 'train[0]')
+              // (参数信息,第几页,数组名称)
+              addForm(params, 5, 'train[0]', 0)
             }
           })
         })
@@ -516,7 +519,7 @@ let items = reactive<ProForm.ItemsOptions[]>([
         formItem.testDataEnhancement['modelId'] = val
         formItem.testDataEnhancement['params'] = {}
         // (参数信息,第几页,数组名称)
-        addForm(params, 7, 'testDataEnhancement')
+        addForm(params, 7, 'testDataEnhancement', 0)
       }
     }
   },
@@ -551,14 +554,37 @@ let items = reactive<ProForm.ItemsOptions[]>([
         formItem.testDataExpansion['modelId'] = val
         formItem.testDataExpansion['params'] = {}
         // (参数信息,第几页,数组名称)
-        addForm(params, 8, 'testDataExpansion')
+        addForm(params, 8, 'testDataExpansion', 0)
       }
     }
   },
   // 9
+  {
+    label: '选择子系统',
+    prop: 'trainSubConfig',
+    span: 14,
+    rules: [{ required: true, message: '请选择子系统' }],
+    show: () => {
+      return pageIndex.value === 9 ? true : false
+    },
+    compOptions: {
+      elTagName: 'select',
+      labelKey: 'dictLabel',
+      valueKey: 'dictValue',
+      enum: () => getDictsApi('biz_sub_config'),
+      // enum: enumData,
+      onChange: val => {
+        trainSubSystem = val
+        getAlgorithmApi(2, val).then(res => {
+          formItems.value[0].items[15].compOptions.enum = res.data
+        })
+      }
+    }
+  },
   {
     label: '选择测试算法',
     prop: 'testAlgo',
+
     span: 14,
     rules: [{ required: true, message: '请选择测试算法' }],
     show: () => {
@@ -566,7 +592,9 @@ let items = reactive<ProForm.ItemsOptions[]>([
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'algorithmName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
         // console.log("val5",val);
         formItem.test[0]['algorithmId'] = val
@@ -592,7 +620,7 @@ let items = reactive<ProForm.ItemsOptions[]>([
         formItem.test[0]['modelId'] = val
         formItem.test[0]['params'] = {}
         // (参数信息,第几页,数组名称)
-        addForm(params, 9, 'test[0]')
+        addForm(params, 9, 'test[0]', 0)
       }
     }
   },
@@ -627,7 +655,7 @@ let items = reactive<ProForm.ItemsOptions[]>([
         formItem.reasoningDataEnhancement['modelId'] = val
         formItem.reasoningDataEnhancement['params'] = {}
         // (参数信息,第几页,数组名称)
-        addForm(params, 11, 'reasoningDataEnhancement')
+        addForm(params, 11, 'reasoningDataEnhancement', 0)
       }
     }
   },
@@ -662,11 +690,33 @@ let items = reactive<ProForm.ItemsOptions[]>([
         formItem.reasoningDataExpansion['modelId'] = val
         formItem.reasoningDataExpansion['params'] = {}
         // (参数信息,第几页,数组名称)
-        addForm(params, 12, 'reasoningDataExpansion')
+        addForm(params, 12, 'reasoningDataExpansion', 0)
       }
     }
   },
   // 13
+  {
+    label: '选择子系统',
+    prop: 'trainSubConfig',
+    span: 14,
+    rules: [{ required: true, message: '请选择子系统' }],
+    show: () => {
+      return pageIndex.value === 13 ? true : false
+    },
+    compOptions: {
+      elTagName: 'select',
+      labelKey: 'dictLabel',
+      valueKey: 'dictValue',
+      enum: () => getDictsApi('biz_sub_config'),
+      onChange: val => {
+        trainSubSystem = val
+        getAlgorithmApi(1, val).then(res => {
+          console.log('111', res)
+          formItems.value[0].items[7].compOptions.enum = res.data as any[]
+        })
+      }
+    }
+  },
   {
     label: '选择测试算法',
     prop: 'reasoningAlgo',
@@ -703,7 +753,7 @@ let items = reactive<ProForm.ItemsOptions[]>([
         formItem.reasoning[0]['modelId'] = val
         formItem.reasoning[0]['params'] = {}
         // (参数信息,第几页,数组名称)
-        addForm(params, 13, 'reasoning[0]')
+        addForm(params, 13, 'reasoning[0]', 0)
       }
     }
   }
@@ -726,88 +776,115 @@ let formItems = ref([
     model: model.value
   }
 ])
-let addTrainAgloIndex = 0
-let addTestAgloIndex = 0
-let addReasoningAgloIndex = 0
+let addTrainAgloIndex = 1
+let addTestAgloIndex = 1
+let addReasoningAgloIndex = 1
 const proFormRef = ref<InstanceType<typeof ProForm> | null>(null)
 // 增加训练算法
 const onAdd = pageNum => {
-  let arrayName = ''
-  let agloIndex
-  if (pageNum === 5) {
-    arrayName = 'train'
-    agloIndex = addTrainAgloIndex
-  } else if (pageNum === 9) {
-    arrayName = 'test'
-    agloIndex = addTestAgloIndex
-  } else if (pageNum === 13) {
-    arrayName = 'reasoning'
-    agloIndex = addReasoningAgloIndex
+  let arrayName, agloIndex, type
+  switch (pageNum) {
+    case 5:
+      arrayName = 'train'
+      agloIndex = addTrainAgloIndex
+      type = 1
+      break
+    case 9:
+      arrayName = 'test'
+      agloIndex = addTestAgloIndex
+      type = 2
+      break
+    case 13:
+      arrayName = 'reasoning'
+      agloIndex = addReasoningAgloIndex
+      type = 3
+      break
+    default:
+      break
   }
   const formEl = proFormRef.value![0].proFormRef
   if (!formEl) return
   formEl.validate(valid => {
     if (valid) {
-      // const params = [
-      //   { label: '选择训练算法', vmodel: `${arrayName}AgloIndex${agloIndex}` },
-      //   { label: '选择训练模型', vmodel: `${arrayName}ModelIndex${agloIndex}` }
-      // ]
-      getModelApi(1).then((res: any) => {
-        const params = res.data
-        params.forEach((item, index) => {
-          formItems.value[0].items.push({
-            label: item.label,
-            prop: item.vmodel,
-            span: 14,
-            rules: [{ required: true, message: '请选择训练算法' }],
-            show: () => {
-              return pageIndex.value === pageNum ? true : false
-            },
-            compOptions: {
-              elTagName: 'select',
-              enum: index === 0 ? enumData : enumData,
-              onChange: val => {
-                if (index === 0) {
-                  formItem[`${arrayName}`].push({})
-                  console.log(`formItem[${arrayName}][${agloIndex}] ['algorithmId']`)
+      getAlgorithmApi(type, trainSubSystem).then(res1 => {
+        console.log('agloIndex', agloIndex)
 
-                  formItem[`${arrayName}`][`${agloIndex}`]['algorithmId'] = val
-                } else {
-                  const params = [
-                    { name: 'greg', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 },
-                    { name: 'greg1', value: 'bbb2', defaultValue: 'xxx3', required: false, index: 4 }
-                  ]
-                  formItem[`${arrayName}`][`${agloIndex}`]['modelId'] = val
-                  formItem[`${arrayName}`][`${agloIndex}`]['params'] = {}
-                  // (参数信息,第几页,数组名称)
-                  addForm(params, pageNum, `${arrayName}[${agloIndex}]  `)
-                }
-              }
+        formItems.value[0].items.push({
+          label: '选择训练算法',
+          prop: `${arrayName}Aglo${agloIndex}`,
+          span: 14,
+          rules: [{ required: true, message: '请选择训练算法' }],
+          show: () => {
+            return pageIndex.value === pageNum ? true : false
+          },
+          compOptions: {
+            elTagName: 'select',
+            labelKey: 'algorithmName',
+            valueKey: 'id',
+            enum: res1.data,
+            onChange: agloId => {
+              formItem[`${arrayName}`].push({})
+              console.log(`formItem[${arrayName}][${agloIndex}]['algorithmId']`)
+              formItem[`${arrayName}`][`${agloIndex}`]['algorithmId'] = agloId
+              getModelApi(agloId).then(res2 => {
+                formItems.value[0].items.push({
+                  label: '选择训练模型',
+                  prop: `${arrayName}Model${agloIndex}`,
+                  span: 14,
+                  rules: [{ required: true, message: '请选择训练模型' }],
+                  show: () => {
+                    return pageIndex.value === pageNum ? true : false
+                  },
+                  compOptions: {
+                    elTagName: 'select',
+                    labelKey: 'modelName',
+                    valueKey: 'id',
+                    enum: res2.data,
+                    onChange: modelId => {
+                      console.log(res1.data, agloId)
+
+                      res1.data.forEach(agloItem => {
+                        if (agloItem.id === agloId) {
+                          const params = eval('(' + agloItem.parameterConfig + ')')
+                          params.forEach(config => {
+                            if (config.validate == '/d') {
+                              config.validate = '\\d'
+                            }
+                          })
+                          formItem[`${arrayName}`][`${agloIndex}`]['modelId'] = modelId
+                          formItem[`${arrayName}`][`${agloIndex}`]['params'] = {}
+                          addForm(params, pageNum, `${arrayName}[${agloIndex}]`, agloIndex)
+                        }
+                      })
+                    }
+                  }
+                })
+              })
             }
-          })
-          console.log('formItems.value', formItems.value)
+          }
         })
-        agloIndex++
       })
-      // const params = getModelApi(1)
+      if (pageNum === 5) addTrainAgloIndex++
+      if (pageNum === 9) addTestAgloIndex++
+      if (pageNum === 13) addReasoningAgloIndex++
     }
   })
 }
 // 增加表单事件
-const addForm = (params, index, arrayName) => {
+const addForm = (params, index, arrayName, paramsIndex) => {
   params.forEach(item => {
     formItems.value[0].items.push({
       label: item.name,
-      prop: item.name,
-      span: 14,
-      required: item.required,
+      prop: `${item.name}${paramsIndex}`,
+      span: 12,
+      rules: [{ required: item.required, pattern: item.validate }],
       show: () => {
         return pageIndex.value === index ? true : false
       },
       compOptions: {
         elTagName: 'input',
         clearable: true,
-        placeholder: '请输入...',
+        placeholder: item.prompt,
         onChange: val1 => {
           let label = item.name
           if (arrayName.includes(']')) {
@@ -995,6 +1072,15 @@ watch(
     }
   }
 )
+// onMounted(() => {
+//   const query = {
+//     pageNum: 1,
+//     pageSize: 10
+//   }
+//   listDataApi(query).then(res => {
+//     tableData.value = res.data
+//   })
+// })
 </script>
 <style scoped lang="scss">
 @import './index.scss';