Explorar el Código

feat: 正向逻辑正确、封装公用API简化代码

Rmengdi hace 1 año
padre
commit
42e44551ef
Se han modificado 1 ficheros con 417 adiciones y 229 borrados
  1. 417 229
      src/views/taais/homePage/createTask.vue

+ 417 - 229
src/views/taais/homePage/createTask.vue

@@ -25,28 +25,67 @@
               />
             </template>
             <template #proTable="{}">
-              <el-tabs tab-position="left" v-model="activeName" style="min-height: 450px" class="demo-tabs">
+              <el-tabs
+                tab-position="left"
+                v-model="activeName"
+                style="min-height: 450px"
+                class="demo-tabs"
+                :before-leave="beforeTabLeave"
+                @tab-click="handleClick"
+              >
                 <el-tab-pane label="数据一" name="one">
                   <div class="table-box">
-                    <ProTable ref="proTable1" row-key="id" :columns="dataColumns" :request-api="listDataApi" :tool-button="false" height="45vh">
+                    <ProTable
+                      ref="proTable"
+                      row-key="id"
+                      :columns="dataColumns"
+                      :request-api="listDataApi"
+                      :tool-button="false"
+                      :init-param="initParam1"
+                      height="45vh"
+                    >
                     </ProTable>
                   </div>
                 </el-tab-pane>
                 <el-tab-pane label="数据二" name="two">
                   <div class="table-box">
-                    <ProTable ref="proTable2" row-key="id" :columns="dataColumns" :request-api="listDataApi" :tool-button="false" height="45vh">
+                    <ProTable
+                      ref="proTable"
+                      row-key="id"
+                      :columns="dataColumns"
+                      :request-api="listDataApi"
+                      :init-param="initParam2"
+                      :tool-button="false"
+                      height="45vh"
+                    >
                     </ProTable>
                   </div>
                 </el-tab-pane>
                 <el-tab-pane label="数据三" name="three">
                   <div class="table-box">
-                    <ProTable ref="proTable3" row-key="id" :columns="dataColumns" :request-api="listDataApi" :tool-button="false" height="45vh">
+                    <ProTable
+                      ref="proTable"
+                      row-key="id"
+                      :columns="dataColumns"
+                      :request-api="listDataApi"
+                      :init-param="initParam3"
+                      :tool-button="false"
+                      height="45vh"
+                    >
                     </ProTable>
                   </div>
                 </el-tab-pane>
                 <el-tab-pane label="数据四" name="four">
                   <div class="table-box">
-                    <ProTable ref="proTable4" row-key="id" :columns="dataColumns" :request-api="listDataApi" :tool-button="false" height="45vh">
+                    <ProTable
+                      ref="proTable"
+                      row-key="id"
+                      :columns="dataColumns"
+                      :request-api="listDataApi"
+                      :init-param="initParam4"
+                      :tool-button="false"
+                      height="45vh"
+                    >
                     </ProTable>
                   </div>
                 </el-tab-pane>
@@ -85,8 +124,14 @@ import { ColumnProps, ProTableInstance } from '@/components/ProTable/interface'
 import { listDataApi } from '@/api/modules/demo/data'
 import { ElMessage, ElTree } from 'element-plus'
 import { getDictsApi } from '@/api/modules/system/dictData'
-// :request-api="getImageApi(1)" getImageApi,
+import type { TabsPaneContext } from 'element-plus'
+// :request-api="getImageApi(1)" getImageApi,, Select, TabsPaneContext
 const activeName = ref('one')
+let initParam1 = reactive({ type: 1 })
+let initParam2 = reactive({ type: 2 })
+let initParam3 = reactive({ type: 3 })
+let initParam4 = reactive({ type: 4 })
+const proTable = ref<ProTableInstance>()
 let model = ref({
   taskType: '1',
   enhanceModel: '',
@@ -97,43 +142,67 @@ let formItem = reactive({
   taskName: '',
   selectTask: [2, 5],
   trainDataSelect: [] as any[],
-  trainDataEnhancement: {},
-  trainDataExpansion: {},
+  trainDataEnhancement: {
+    algorithmId: null,
+    modelId: null,
+    params: {}
+  },
+  trainDataExpansion: {
+    algorithmId: null,
+    modelId: null,
+    params: {}
+  },
   train: [{}],
-  testDataSelect: [],
-  testDataEnhancement: {},
-  testDataExpansion: {},
+  testDataSelect: [] as any[],
+  testDataEnhancement: {
+    algorithmId: null,
+    modelId: null,
+    params: {}
+  },
+  testDataExpansion: {
+    algorithmId: null,
+    modelId: null,
+    params: {}
+  },
   test: [{}],
-  reasoningDataSelect: [],
-  reasoningDataEnhancement: {},
-  reasoningDataExpansion: {},
+  reasoningDataSelect: [] as any[],
+  reasoningDataEnhancement: {
+    algorithmId: null,
+    modelId: null,
+    params: {}
+  },
+  reasoningDataExpansion: {
+    algorithmId: null,
+    modelId: null,
+    params: {}
+  },
   reasoning: [{}]
 })
 let prevTreeData = ref([3])
 const router = useRouter()
-let trainSubSystem, selectAgloId
+let subSystem, selectTrainAgloId, selectTestAgloId, selectReasoningAgloId
+const trainActiveTab = ref()
+const testActiveTab = ref()
+const reasoningActiveTab = ref()
 let pageIndex = ref<number>(1)
 const selectTaskTreeRef = ref<InstanceType<typeof ElTree>>()
-const proTable1 = ref<ProTableInstance>()
-const proTable2 = ref<ProTableInstance>()
-const proTable3 = ref<ProTableInstance>()
-const proTable4 = ref<ProTableInstance>()
+
 let title = ref('目标精准捕获任务选择')
 let nextBtnText = ref('下一步')
-const enumData = [
-  {
-    label: 'rtdetr',
-    value: '1'
-  },
-  {
-    label: 'yolov5',
-    value: '2'
-  },
-  {
-    label: 'yolov8',
-    value: '3'
-  }
-]
+// const enumData = [
+//   {
+//     label: 'rtdetr',
+//     value: '1'
+//   },
+//   {
+//     label: 'yolov5',
+//     value: '2'
+//   },
+//   {
+//     label: 'yolov8',
+//     value: '3'
+//   }
+// ]
 const data1 = [
   {
     id: 98,
@@ -248,7 +317,8 @@ const dataColumns = reactive<ColumnProps<any>[]>([
     prop: 'objectType',
     label: '目标类型',
     search: {
-      el: 'input'
+      el: 'input',
+      defaultValue: ''
     },
     width: 120
   },
@@ -256,7 +326,8 @@ const dataColumns = reactive<ColumnProps<any>[]>([
     prop: 'objectSubtype',
     label: '目标子类型',
     search: {
-      el: 'input'
+      el: 'input',
+      defaultValue: ''
     },
     width: 120
   },
@@ -264,7 +335,8 @@ const dataColumns = reactive<ColumnProps<any>[]>([
     prop: 'batchNum',
     label: '批次号',
     search: {
-      el: 'input'
+      el: 'input',
+      defaultValue: ''
     },
     width: 120
   },
@@ -345,6 +417,24 @@ let items = reactive<ProForm.ItemsOptions[]>([
       enum: taskTypeData
     }
   },
+  {
+    label: '选择子系统',
+    prop: 'subConfig',
+    span: 12,
+    rules: [{ required: true, message: '请选择子系统' }],
+    show: () => {
+      return pageIndex.value === 1 ? true : false
+    },
+    compOptions: {
+      elTagName: 'select',
+      labelKey: 'dictLabel',
+      valueKey: 'dictValue',
+      enum: () => getDictsApi('biz_sub_config'),
+      onChange: val => {
+        subSystem = val
+      }
+    }
+  },
   // 2  6  10
   {
     label: '',
@@ -363,21 +453,36 @@ let items = reactive<ProForm.ItemsOptions[]>([
     label: '选择增强算法',
     prop: 'trainEnhanceAlgo',
     span: 14,
+    rules: [{ required: true, message: '选择增强算法' }],
     show: () => {
       return pageIndex.value === 3 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'algorithmName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        const params = [
-          { name: 'aaa', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 },
-          { name: 'aaa1', value: 'bbb2', defaultValue: 'xxx3', required: false, index: 4 }
-        ]
-        formItem.trainDataEnhancement['algorithmId'] = val
-        formItem.trainDataEnhancement['params'] = {}
-        // (参数信息,第几页,数组名称)
-        addForm(params, 3, 'trainDataEnhancement', 0)
+        formItem.trainDataEnhancement.algorithmId = val
+        agloChange('trainEnhanceModel', val)
+      }
+    }
+  },
+  {
+    label: '选择增强模型',
+    prop: 'trainEnhanceModel',
+    span: 14,
+    rules: [{ required: true, message: '选择增强模型' }],
+    show: () => {
+      return pageIndex.value === 3 ? true : false
+    },
+    compOptions: {
+      elTagName: 'select',
+      labelKey: 'modelName',
+      valueKey: 'id',
+      enum: null,
+      onChange: val => {
+        getAgloParams(4, 'trainDataEnhancement', 3, val, 0)
       }
     }
   },
@@ -386,47 +491,40 @@ let items = reactive<ProForm.ItemsOptions[]>([
     label: '选择扩充算法',
     prop: 'trainExpansionAlgo',
     span: 14,
+    rules: [{ required: true, message: '选择扩充算法' }],
     show: () => {
       return pageIndex.value === 4 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'algorithmName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        const params = [
-          { name: 'bbb', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 },
-          { name: 'bbb1', value: 'bbb2', defaultValue: 'xxx3', required: false, index: 4 }
-        ]
-        formItem.trainDataExpansion['algorithmId'] = val
-        formItem.trainDataExpansion['params'] = {}
-        // (参数信息,第几页,数组名称)
-        addForm(params, 4, 'trainDataExpansion', 0)
+        formItem.trainDataExpansion.algorithmId = val
+        agloChange('trainExpansionModel', val)
       }
     }
   },
-  // 5
   {
-    label: '选择子系统',
-    prop: 'trainSubConfig',
+    label: '选择扩充模型',
+    prop: 'trainExpansionModel',
     span: 14,
-    rules: [{ required: true, message: '请选择子系统' }],
+    rules: [{ required: true, message: '选择扩充模型' }],
     show: () => {
-      return pageIndex.value === 5 ? true : false
+      return pageIndex.value === 4 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      labelKey: 'dictLabel',
-      valueKey: 'dictValue',
-      enum: () => getDictsApi('biz_sub_config'),
+      labelKey: 'modelName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        trainSubSystem = val
-        getAlgorithmApi(1, val).then(res => {
-          console.log('111', res)
-          formItems.value[0].items[7].compOptions.enum = res.data as any[]
-        })
+        getAgloParams(5, 'trainDataExpansion', 4, val, 0)
       }
     }
   },
+  // 5
   {
     label: '选择训练算法',
     prop: 'trainAlgo',
@@ -440,15 +538,10 @@ let items = reactive<ProForm.ItemsOptions[]>([
       labelKey: 'algorithmName',
       valueKey: 'id',
       enum: null,
-      // enum: enumData,
       onChange: val => {
-        // console.log("val5",val);
-        selectAgloId = val
+        selectTrainAgloId = val
         formItem.train[0]['algorithmId'] = val
-        getModelApi(val).then(res => {
-          console.log('222', res)
-          formItems.value[0].items[8].compOptions.enum = res.data as any[]
-        })
+        agloChange('trainModel', val)
       }
     }
   },
@@ -467,17 +560,15 @@ let items = reactive<ProForm.ItemsOptions[]>([
       // enum: () => getModelApi(1),
       enum: null,
       onChange: val => {
-        getAlgorithmApi(1, trainSubSystem).then(res => {
+        getAlgorithmApi(1, subSystem).then(res => {
           res.data.forEach(item => {
-            if (item.id === selectAgloId) {
+            if (item.id === selectTrainAgloId) {
               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'] = {}
               // (参数信息,第几页,数组名称)
@@ -493,14 +584,18 @@ let items = reactive<ProForm.ItemsOptions[]>([
     label: '选择增强算法',
     prop: 'testEnhanceAlgo',
     span: 14,
+    rules: [{ required: true, message: '选择增强算法' }],
     show: () => {
       return pageIndex.value === 7 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'algorithmName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
         formItem.testDataEnhancement['algorithmId'] = val
+        agloChange('testEnhanceModel', val)
       }
     }
   },
@@ -508,18 +603,17 @@ let items = reactive<ProForm.ItemsOptions[]>([
     label: '选择增强模型',
     prop: 'testEnhanceModel',
     span: 14,
+    rules: [{ required: true, message: '选择增强模型' }],
     show: () => {
       return pageIndex.value === 7 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'modelName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        const params = [{ name: 'ccc', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 }]
-        formItem.testDataEnhancement['modelId'] = val
-        formItem.testDataEnhancement['params'] = {}
-        // (参数信息,第几页,数组名称)
-        addForm(params, 7, 'testDataEnhancement', 0)
+        getAgloParams(4, 'testDataEnhancement', 7, val, 0)
       }
     }
   },
@@ -528,14 +622,18 @@ let items = reactive<ProForm.ItemsOptions[]>([
     label: '选择扩充算法',
     prop: 'testExpansionAlgo',
     span: 14,
+    rules: [{ required: true, message: '选择扩充算法' }],
     show: () => {
       return pageIndex.value === 8 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'algorithmName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
         formItem.testDataExpansion['algorithmId'] = val
+        agloChange('testExpansionModel', val)
       }
     }
   },
@@ -543,48 +641,24 @@ let items = reactive<ProForm.ItemsOptions[]>([
     label: '选择扩充模型',
     prop: 'testExpansionModel',
     span: 14,
+    rules: [{ required: true, message: '选择扩充模型' }],
     show: () => {
       return pageIndex.value === 8 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'modelName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        const params = [{ name: 'ccc111', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 }]
-        formItem.testDataExpansion['modelId'] = val
-        formItem.testDataExpansion['params'] = {}
-        // (参数信息,第几页,数组名称)
-        addForm(params, 8, 'testDataExpansion', 0)
+        getAgloParams(5, 'testDataExpansion', 8, val, 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: () => {
@@ -596,8 +670,9 @@ let items = reactive<ProForm.ItemsOptions[]>([
       valueKey: 'id',
       enum: null,
       onChange: val => {
-        // console.log("val5",val);
+        selectTestAgloId = val
         formItem.test[0]['algorithmId'] = val
+        agloChange('testModel', val)
       }
     }
   },
@@ -611,16 +686,27 @@ let items = reactive<ProForm.ItemsOptions[]>([
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'modelName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        const params = [
-          { name: 'ccc', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 },
-          { name: 'ccc1', value: 'bbb2', defaultValue: 'xxx3', required: false, index: 4 }
-        ]
-        formItem.test[0]['modelId'] = val
-        formItem.test[0]['params'] = {}
-        // (参数信息,第几页,数组名称)
-        addForm(params, 9, 'test[0]', 0)
+        // getAgloParams(1, 'test[0]', 9, val, 0)
+        getAlgorithmApi(2, subSystem).then(res => {
+          res.data.forEach(item => {
+            if (item.id === selectTestAgloId) {
+              const params = eval('(' + item.parameterConfig + ')')
+              params.forEach(config => {
+                if (config.validate == '/d') {
+                  config.validate = '\\d'
+                }
+              })
+              formItem.test[0]['modelId'] = val
+              formItem.test[0]['params'] = {}
+              // (参数信息,第几页,数组名称)
+              addForm(params, 9, 'test[0]', 0)
+            }
+          })
+        })
       }
     }
   },
@@ -629,14 +715,18 @@ let items = reactive<ProForm.ItemsOptions[]>([
     label: '选择增强算法',
     prop: 'reasoningEnhanceAlgo',
     span: 14,
+    rules: [{ required: true, message: '选择增强算法' }],
     show: () => {
       return pageIndex.value === 11 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'algorithmName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
         formItem.reasoningDataEnhancement['algorithmId'] = val
+        agloChange('reasoningEnhanceModel', val)
       }
     }
   },
@@ -644,18 +734,17 @@ let items = reactive<ProForm.ItemsOptions[]>([
     label: '选择增强模型',
     prop: 'reasoningEnhanceModel',
     span: 14,
+    rules: [{ required: true, message: '选择增强模型' }],
     show: () => {
       return pageIndex.value === 11 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'modelName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        const params = [{ name: 'ccc', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 }]
-        formItem.reasoningDataEnhancement['modelId'] = val
-        formItem.reasoningDataEnhancement['params'] = {}
-        // (参数信息,第几页,数组名称)
-        addForm(params, 11, 'reasoningDataEnhancement', 0)
+        getAgloParams(4, 'reasoningDataEnhancement', 11, val, 0)
       }
     }
   },
@@ -664,101 +753,95 @@ let items = reactive<ProForm.ItemsOptions[]>([
     label: '选择扩充算法',
     prop: 'reasoningExpansionAlgo',
     span: 14,
+    rules: [{ required: true, message: '选择扩充算法' }],
     show: () => {
       return pageIndex.value === 12 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'algorithmName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
         formItem.reasoningDataExpansion['algorithmId'] = val
+        agloChange('reasoningExpansionModel', val)
       }
     }
   },
   {
     label: '选择扩充模型',
     prop: 'reasoningExpansionModel',
+    rules: [{ required: true, message: '选择扩充模型' }],
     span: 14,
     show: () => {
       return pageIndex.value === 12 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'modelName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        const params = [{ name: 'ccc111', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 }]
-        formItem.reasoningDataExpansion['modelId'] = val
-        formItem.reasoningDataExpansion['params'] = {}
-        // (参数信息,第几页,数组名称)
-        addForm(params, 12, 'reasoningDataExpansion', 0)
+        getAgloParams(5, 'reasoningDataExpansion', 12, val, 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: '选择测试算法',
+    label: '选择推理算法',
     prop: 'reasoningAlgo',
     span: 14,
-    rules: [{ required: true, message: '请选择测试算法' }],
+    rules: [{ required: true, message: '请选择推理算法' }],
     show: () => {
       return pageIndex.value === 13 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'algorithmName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        // console.log("val5",val);
+        selectReasoningAgloId = val
         formItem.reasoning[0]['algorithmId'] = val
+        agloChange('reasoningModel', val)
       }
     }
   },
   {
-    label: '选择测试模型',
+    label: '选择推理模型',
     prop: 'reasoningModel',
     span: 14,
-    rules: [{ required: true, message: '请选择测试模型' }],
+    rules: [{ required: true, message: '请选择推理模型' }],
     show: () => {
       return pageIndex.value === 13 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      labelKey: 'modelName',
+      valueKey: 'id',
+      enum: null,
       onChange: val => {
-        const params = [
-          { name: 'ccc', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 },
-          { name: 'ccc1', value: 'bbb2', defaultValue: 'xxx3', required: false, index: 4 }
-        ]
-        formItem.reasoning[0]['modelId'] = val
-        formItem.reasoning[0]['params'] = {}
-        // (参数信息,第几页,数组名称)
-        addForm(params, 13, 'reasoning[0]', 0)
+        getAlgorithmApi(3, subSystem).then(res => {
+          res.data.forEach(item => {
+            if (item.id === selectReasoningAgloId) {
+              const params = eval('(' + item.parameterConfig + ')')
+              params.forEach(config => {
+                if (config.validate == '/d') {
+                  config.validate = '\\d'
+                }
+              })
+              formItem.reasoning[0]['modelId'] = val
+              formItem.reasoning[0]['params'] = {}
+              // (参数信息,第几页,数组名称)
+              addForm(params, 13, 'reasoning[0]', 0)
+            }
+          })
+        })
       }
     }
   }
 ])
-// let formItemsTemp4 = ref([
+// let formItemsTemp2 = ref([
 //   {
 //     items,
 //     model: model.value
@@ -806,7 +889,7 @@ const onAdd = pageNum => {
   if (!formEl) return
   formEl.validate(valid => {
     if (valid) {
-      getAlgorithmApi(type, trainSubSystem).then(res1 => {
+      getAlgorithmApi(type, subSystem).then(res1 => {
         console.log('agloIndex', agloIndex)
 
         formItems.value[0].items.push({
@@ -875,7 +958,7 @@ const addForm = (params, index, arrayName, paramsIndex) => {
   params.forEach(item => {
     formItems.value[0].items.push({
       label: item.name,
-      prop: `${item.name}${paramsIndex}`,
+      prop: `${arrayName}${item.name}${paramsIndex}`,
       span: 12,
       rules: [{ required: item.required, pattern: item.validate }],
       show: () => {
@@ -901,6 +984,41 @@ const addForm = (params, index, arrayName, paramsIndex) => {
     })
   })
 }
+const agloChange = (propName, agloId) => {
+  const Column = formItems.value[0].items.find(column => column.prop === propName)
+  if (Column) {
+    getModelApi(agloId).then(res => {
+      Column.compOptions.enum = res.data as any[]
+    })
+  }
+}
+const getAlgo = (propName, type) => {
+  const column = formItems.value[0].items.find(column => column.prop === propName)
+  if (column) {
+    getAlgorithmApi(type, subSystem).then(res => {
+      column.compOptions.enum = res.data as any[]
+    })
+  }
+}
+// 算法类型:1-5、算法类型名称:如训练数据增强、页码、模型Id、模型的参数下标
+const getAgloParams = (agloType, agloTypeName, page, modelId, paramIndex) => {
+  const algoId = formItem[agloTypeName].algorithmId
+  getAlgorithmApi(agloType, subSystem).then(res => {
+    res.data.forEach(item => {
+      if (item.id === algoId) {
+        const params = eval('(' + item.parameterConfig + ')')
+        params.forEach(config => {
+          if (config.validate == '/d') {
+            config.validate = '\\d'
+          }
+        })
+        formItem[agloTypeName].modelId = modelId
+        // (参数信息,第几页,数组名称)
+        addForm(params, page, agloTypeName, paramIndex)
+      }
+    })
+  })
+}
 // 返回按钮
 const onReturn = () => {
   router.push(`/index`)
@@ -916,14 +1034,19 @@ const onNext = () => {
         ElMessage.warning('请选择任务')
         return
       }
-      if (pageIndex.value === 2) {
+      if (pageIndex.value === 2 || pageIndex.value === 6 || pageIndex.value === 10) {
+        let dataName
+        if (pageIndex.value === 2) dataName = 'trainDataSelect'
+        else if (pageIndex.value === 6) dataName = 'testDataSelect'
+        else if (pageIndex.value === 10) dataName = 'reasoningDataSelect'
+        formItem[dataName] = []
         for (let i = 0; i <= 3; i++) {
-          // if (Object.keys(proTable1.value![i].searchParam).length !== 0) {
-          //   formItem.trainDataSelect.push({
-          //     conditionSelected: true,
-          //     condition: proTable1.value![i].searchParam
-          //   })
-          // }
+          if (Object.keys(proTable.value![i].searchParam).length !== 0) {
+            formItem[dataName].push({
+              conditionSelected: true,
+              condition: proTable.value![i].searchParam
+            })
+          }
         }
         console.log('formItem.trainDataSelect', formItem.trainDataSelect)
       }
@@ -943,7 +1066,7 @@ const onNext = () => {
 // 上一步
 const onBack = () => {
   nextBtnText.value = '下一步'
-  if (pageIndex.value === 2) {
+  if (pageIndex.value === formItem.selectTask[0]) {
     pageIndex.value = 1
     return
   }
@@ -965,44 +1088,37 @@ const changeTree = (newVal, allVal) => {
       [10, 13]
     ]
   ])
+  const updateCheckedKeys = keysSet => {
+    prevTreeData.value = Array.from(keysSet)
+    selectTaskTreeRef.value![0].setCheckedKeys(Array.from(keysSet), false)
+  }
 
-  if (prevTreeData.value.includes(newId)) {
+  if (!allVal.checkedKeys.includes(newId)) {
     if (newId === 2 || newId === 5) {
       const data = delNumber(2, 5, allVal.checkedKeys)
-      prevTreeData.value = Array.from(data)
-      // formItem.selectTask = Array.from(data)
-      selectTaskTreeRef.value![0].setCheckedKeys(Array.from(data), false)
+      updateCheckedKeys(new Set(data))
     } else if (newId === 6 || newId === 9) {
       const data = delNumber(6, 9, allVal.checkedKeys)
-      prevTreeData.value = Array.from(data)
-      selectTaskTreeRef.value![0].setCheckedKeys(Array.from(data), false)
+      updateCheckedKeys(new Set(data))
     } else if (newId === 10 || newId === 13) {
       const data = delNumber(10, 13, allVal.checkedKeys)
-      prevTreeData.value = Array.from(data)
-      selectTaskTreeRef.value![0].setCheckedKeys(Array.from(data), false)
+      updateCheckedKeys(new Set(data))
     }
   } else {
     for (const [keysToCheck, keysToAdd] of dependencyMap.entries()) {
-      if (keysToCheck.some(key => allVal.checkedKeys.includes(key))) {
-        const data = new Set<number>([...allVal.checkedKeys, ...keysToAdd].sort())
-        prevTreeData.value = Array.from(data)
-        // formItem.selectTask = Array.from(data)
-        selectTaskTreeRef.value![0].setCheckedKeys(Array.from(data), false)
+      if (keysToCheck.includes(newId)) {
+        const keysSet = new Set([...allVal.checkedKeys, ...keysToAdd])
+        updateCheckedKeys(keysSet)
+        break
       }
     }
   }
+
   formItem.selectTask = selectTaskTreeRef.value![0].getCheckedKeys().filter(item => item < 90)
 }
 // 树组件去除节点函数
 const delNumber = (start, end, dataList) => {
-  for (let i = 0; i < dataList.length; i++) {
-    const number = dataList[i]
-    if (number >= start && number <= end) {
-      dataList.splice(i, 1)
-      i--
-    }
-  }
-  return dataList.sort
+  return dataList.filter(number => !(number >= start && number <= end)).sort((a, b) => a - b)
 }
 const onSubmit = val => {
   const data = Object.assign(val, formItem)
@@ -1010,21 +1126,84 @@ const onSubmit = val => {
 
   console.log('ssssss', data)
 }
+const beforeTabLeave = (activeName, oldActiveName) => {
+  let dataSelect1
+  if (pageIndex.value === 2) {
+    dataSelect1 = 'trainDataSelect'
+  } else if (pageIndex.value === 6) {
+    dataSelect1 = 'testDataSelect'
+  } else if (pageIndex.value === 10) {
+    dataSelect1 = 'reasoningDataSelect'
+  }
+
+  switch (oldActiveName) {
+    case 'one':
+      Object.assign(initParam1, formItem[dataSelect1]?.[0]?.condition)
+      break
+    case 'two':
+      Object.assign(initParam2, formItem[dataSelect1]?.[1]?.condition)
+      break
+    case 'three':
+      Object.assign(initParam3, formItem[dataSelect1]?.[2]?.condition)
+      break
+    case 'four':
+      Object.assign(initParam4, formItem[dataSelect1]?.[3]?.condition)
+      break
+    default:
+      break
+  }
+}
+const handleClick = (tab: TabsPaneContext) => {
+  let dataSelect
+  if (pageIndex.value === 2) {
+    dataSelect = 'trainDataSelect'
+    trainActiveTab.value = tab
+  } else if (pageIndex.value === 6) {
+    dataSelect = 'testDataSelect'
+    testActiveTab.value = tab
+  } else if (pageIndex.value === 10) {
+    dataSelect = 'reasoningDataSelect'
+    reasoningActiveTab.value = tab
+  }
+  const tabName = tab.paneName
+  switch (tabName) {
+    case 'one':
+      const data1 = formItem[dataSelect]?.[0]?.condition
+      console.log('data1', data1)
+      updateDefaultValue(data1?.objectType, data1?.objectSubtype, data1?.batchNum)
+      break
+    case 'two':
+      const data2 = formItem[dataSelect]?.[1]?.condition
+      console.log('data2', data2)
+      updateDefaultValue(data2?.objectType, data2?.objectSubtype, data2?.batchNum)
+      break
+    case 'three':
+      const data3 = formItem[dataSelect]?.[2]?.condition
+      console.log('data3', data3)
+      updateDefaultValue(data3?.objectType, data3?.objectSubtype, data3?.batchNum)
+      break
+    case 'four':
+      const data4 = formItem[dataSelect]?.[3]?.condition
+      updateDefaultValue(data4?.objectType, data4?.objectSubtype, data4?.batchNum)
+      break
+    default:
+      break
+  }
+}
+const updateDefaultValue = (objectType, objectSubtype, batchNum) => {
+  dataColumns.map(column => {
+    if (column.prop === 'objectType') {
+      column.search!.defaultValue = objectType
+    } else if (column.prop === 'objectSubtype') {
+      column.search!.defaultValue = objectSubtype
+    } else if (column.prop === 'batchNum') {
+      column.search!.defaultValue = batchNum
+    }
+  })
+}
 watch(
   () => pageIndex.value,
   value => {
-    // if (oldValue === 4) formItemsTemp4.value = formItems.value
-    // if (oldValue === 7) formItemsTemp7.value = formItems.value
-    // if (value === 4) formItems.value = formItemsTemp4.value
-    // if (value === 7) formItems.value = formItemsTemp7.value
-    // else {
-    //   formItems.value = [
-    //     {
-    //       items,
-    //       model: model.value
-    //     }
-    //   ]
-    // }
     switch (value) {
       case 1:
         title.value = '任务创建:目标精准捕获任务选择'
@@ -1032,55 +1211,64 @@ watch(
         break
       case 2:
         title.value = '训练数据选择'
+        if (trainActiveTab.value) {
+          handleClick(trainActiveTab.value)
+        }
         break
       case 3:
         title.value = '训练数据增强'
+        getAlgo('trainEnhanceAlgo', 4)
         break
       case 4:
         title.value = '训练数据扩充'
+        getAlgo('trainExpansionAlgo', 5)
         break
       case 5:
         title.value = '训练算法选择'
+        getAlgo('trainAlgo', 1)
         break
       case 6:
         title.value = '测试数据选择'
+        if (testActiveTab.value) {
+          handleClick(testActiveTab.value)
+        }
         break
       case 7:
         title.value = '测试数据增强'
+        getAlgo('testEnhanceAlgo', 4)
         break
       case 8:
         title.value = '测试数据扩充'
+        getAlgo('testExpansionAlgo', 5)
         break
       case 9:
         title.value = '测试算法选择'
+        getAlgo('testAlgo', 2)
         break
       case 10:
         title.value = '推理数据选择'
+        if (reasoningActiveTab.value) {
+          handleClick(reasoningActiveTab.value)
+        }
         break
       case 11:
         title.value = '推理数据增强'
+        getAlgo('reasoningEnhanceAlgo', 4)
         break
       case 12:
         title.value = '推理数据扩充'
+        getAlgo('reasoningExpansionAlgo', 5)
         nextBtnText.value = '下一步'
         break
       case 13:
         title.value = '推理算法选择'
+        getAlgo('reasoningAlgo', 3)
         break
       default:
         break
     }
   }
 )
-// onMounted(() => {
-//   const query = {
-//     pageNum: 1,
-//     pageSize: 10
-//   }
-//   listDataApi(query).then(res => {
-//     tableData.value = res.data
-//   })
-// })
 </script>
 <style scoped lang="scss">
 @import './index.scss';