Переглянути джерело

feat: 创建任务前端功能基本完成版

Rmengdi 1 рік тому
батько
коміт
f0dc9b2a0f

+ 23 - 4
src/api/modules/taais/task.ts

@@ -22,11 +22,30 @@ export const getTransferImgList1 = () => {
 export const getTransferImgList2 = () => {
   return tableData.transferImgList2
 }
+// /task/task/create
 /**
- * @name 查询字典类型详细
- * @param dictId dictId
+ * @name 得到图像数据
+ * @param type type
  * @returns returns
  */
-export const getImageApi = (type: string | number) => {
-  return http.get<any>(`/task/task/getImage/${type}`)
+export const getImageApi = (type: any) => {
+  return http.post<any>(`/task/task/getImage`, type)
+}
+/**
+ * @name 创建算法任务
+ * @param data data
+ * @returns returns
+ */
+export const createTaskApi = (data: any) => {
+  return http.post<any>(`/task/task/create`, data)
+}
+
+/**
+ * @name 模型查询
+ * @param data data
+ * @returns returns
+ */
+export const getModelApi = (data: any) => {
+  return http.post<any>(`/task/task/getModel/${data}`)
+  // return http.post<any>(`/task/task/getModel`, data)
 }

+ 7 - 0
src/components/ProForm/index.vue

@@ -146,6 +146,13 @@ props.itemsOptions.forEach(async item => {
   await setEnumMap(item)
 })
 const emits = defineEmits<EmitEvent>()
+// 监听itemsOptions变化
+watch(props, () => {
+  // 处理表单项需要的参数
+  props.itemsOptions.forEach(async item => {
+    await setEnumMap(item)
+  })
+})
 // 根据items初始化model, 如果items有传值就用传递的model数据模型,否则就给上面声明的formModel设置相应的(key,value) [item.prop], item.value是表单的默认值(选填)
 watch(
   () => props.model,

+ 0 - 1
src/components/ProTable/index.vue

@@ -138,7 +138,6 @@ const radio = ref('')
 
 // 表格多选 Hooks
 const { selectionChange, selectedList, selectedListIds, isSelected } = useSelection(props.rowKey)
-
 // 表格操作 Hooks
 const { tableData, pageable, searchParam, searchInitParam, getTableList, search, reset, handleSizeChange, handleCurrentChange } = useTable(
   props.requestApi,

+ 325 - 70
src/views/taais/homePage/createTask.vue

@@ -1,23 +1,27 @@
 <template>
   <div class="createTask-bigBox">
-    <dv-border-box1 ref="borderRef" style="width: 80%; height: calc(100% - 50px); margin: 0 auto">
+    <dv-border-box1 ref="borderRef" style="width: 80%; height: calc(100% - 20px); margin: 0 auto">
       <div class="createTask-container">
         <h3 class="title" style="margin-top: 0">{{ title }}</h3>
         <!-- <h4 class="title2" v-if="pageIndex === 4">训练算法</h4> -->
         <div v-for="(item, index) in formItems" :key="index" class="createTask-main">
-          <ProForm :items-options="item.items" :form-options="_options" :model="item.model" class="proform">
-            <template #selectTask="{}">
+          <ProForm ref="proFormRef" :items-options="item.items" :form-options="_options" :model="item.model" class="proform">
+            <template #selectTask>
               <el-tree
                 style="max-width: 600px"
+                ref="selectTaskTreeRef"
                 :default-checked-keys="formItem.selectTask"
                 :default-expanded-keys="formItem.selectTask"
                 :props="defaultProps"
-                check-strictly
                 :check-on-click-node="true"
                 :data="data1"
                 node-key="id"
                 show-checkbox
-                @check="changeTree"
+                @check="
+                  (click, checked) => {
+                    changeTree(click, checked)
+                  }
+                "
               />
             </template>
             <template #proTable="{}">
@@ -25,31 +29,33 @@
                 <el-tab-pane label="数据一">
                   <div class="table-box">
                     <ProTable
-                      ref="proTable"
+                      ref="proTable1"
                       row-key="id"
                       :columns="dataColumns"
                       :request-api="listDataApi"
                       :init-param="initParam"
                       :tool-button="false"
-                      height="280"
-                      :request-auto="false"
+                      height="45vh"
                     >
                     </ProTable>
                   </div>
                 </el-tab-pane>
                 <el-tab-pane label="数据二">
                   <div class="table-box">
-                    <ProTable ref="proTable" row-key="id" :columns="dataColumns" :tool-button="false" height="250" :request-auto="false"> </ProTable>
+                    <ProTable ref="proTable1" row-key="id" :columns="dataColumns" :request-api="listDataApi" :tool-button="false" height="45vh">
+                    </ProTable>
                   </div>
                 </el-tab-pane>
                 <el-tab-pane label="数据三">
                   <div class="table-box">
-                    <ProTable ref="proTable" row-key="id" :columns="dataColumns" :tool-button="false" height="250" :request-auto="false"> </ProTable>
+                    <ProTable ref="proTable1" row-key="id" :columns="dataColumns" :request-api="listDataApi" :tool-button="false" height="45vh">
+                    </ProTable>
                   </div>
                 </el-tab-pane>
                 <el-tab-pane label="数据四">
                   <div class="table-box">
-                    <ProTable ref="proTable" row-key="id" :columns="dataColumns" :tool-button="false" height="250" :request-auto="false"> </ProTable>
+                    <ProTable ref="proTable1" row-key="id" :columns="dataColumns" :request-api="listDataApi" :tool-button="false" height="45vh">
+                    </ProTable>
                   </div>
                 </el-tab-pane>
               </el-tabs>
@@ -58,10 +64,15 @@
               <div class="footBtn">
                 <el-button class="btn back" v-if="pageIndex === 1" @click="onReturn()"> 返回 </el-button>
                 <el-button class="btn back" v-else @click="onBack()"> 上一步 </el-button>
-                <el-button class="btn add" style="margin-left: -15px" v-if="pageIndex === 5 || pageIndex === 9" @click="onAdd()">
+                <el-button
+                  class="btn add"
+                  style="margin-left: -15px"
+                  v-if="pageIndex === 5 || pageIndex === 9 || pageIndex === 13"
+                  @click="onAdd(pageIndex)"
+                >
                   增加算法
                 </el-button>
-                <el-button class="btn next" type="success" @click="pageIndex === 13 ? onSubmit(formModel) : onNext()">
+                <el-button class="btn next" type="success" @click="nextBtnText === '提交' ? onSubmit(formModel) : onNext()">
                   {{ nextBtnText }}
                 </el-button>
               </div>
@@ -76,36 +87,42 @@
 import { ref, ComputedRef, computed, watch, reactive } from 'vue'
 import ProForm from '@/components/ProForm/index.vue'
 import { useRouter } from 'vue-router'
-// import { getImageApi } from '@/api/modules/taais/task'
+import { getModelApi } from '@/api/modules/taais/task'
 import ProTable from '@/components/ProTable/index.vue'
-import { ColumnProps } from '@/components/ProTable/interface'
+import { ColumnProps, ProTableInstance } from '@/components/ProTable/interface'
 import { listDataApi } from '@/api/modules/demo/data'
-import { ElMessage } from 'element-plus'
+import { ElMessage, ElTree } from 'element-plus'
+import { getDictsApi } from '@/api/modules/system/dictData'
 // :request-api="getImageApi(1)" getImageApi,
-const initParam = reactive({ type: 1 })
+const initParam = reactive({
+  type: 1
+})
 let model = ref({
   taskType: '1',
   enhanceModel: '',
   pretreatmentModel: ''
 })
-let formItem = ref({
+let formItem = reactive({
   taskName: '',
-  selectTask: [3],
-  trainDataSelect: [],
+  selectTask: [2, 5],
+  trainDataSelect: [] as any[],
   trainDataEnhancement: {},
   trainDataExpansion: {},
   train: [{}],
   testDataSelect: [],
   testDataEnhancement: {},
   testDataExpansion: {},
-  test: [],
+  test: [{}],
   reasoningDataSelect: [],
   reasoningDataEnhancement: {},
   reasoningDataExpansion: {},
-  reasoning: []
+  reasoning: [{}]
 })
+let prevTreeData = ref([3])
 const router = useRouter()
 let pageIndex = ref<number>(1)
+const selectTaskTreeRef = ref<InstanceType<typeof ElTree>>()
+const proTable1 = ref<ProTableInstance>()
 let title = ref('目标精准捕获任务选择')
 let nextBtnText = ref('下一步')
 const enumData = [
@@ -124,6 +141,7 @@ const enumData = [
 ]
 const data1 = [
   {
+    id: 98,
     label: '训练',
     disabled: true,
     children: [
@@ -150,6 +168,7 @@ const data1 = [
     ]
   },
   {
+    id: 99,
     label: '测试',
     disabled: true,
     children: [
@@ -176,6 +195,7 @@ const data1 = [
     ]
   },
   {
+    id: 100,
     label: '推理',
     disabled: true,
     children: [
@@ -279,9 +299,24 @@ const dataColumns = reactive<ColumnProps<any>[]>([
     width: 120
   }
 ])
-// const dataOne = getImageApi(1)
-// console.log('dataOne', dataOne)
+// const dataOne = getModelApi(1)
+// const dataOne = listDataApi({
+//   type: 1,
+//   pageNum: 1,
+//   pageSize: 10
+// })
+// const dataOne = getModelApi({
+//   algorithmId: 1
+// })
+let subsystemData = []
+getDictsApi('biz_algorithm_config').then((res: any) => {
+  console.log('res', res)
+
+  // subsystemData = res.data
+})
+console.log('subsystemData.value', subsystemData)
 
+// console.log('dataOne', dataOne)
 const defaultProps = {
   children: 'children',
   label: 'label'
@@ -301,10 +336,10 @@ let items: ProForm.ItemsOptions[] = [
     label: '任务名称',
     prop: 'taskName',
     span: 12,
+    rules: [{ required: true, message: '请输入任务名称' }],
     show: () => {
       return pageIndex.value === 1 ? true : false
     },
-
     compOptions: {
       elTagName: 'input',
       clearable: true,
@@ -359,8 +394,8 @@ let items: ProForm.ItemsOptions[] = [
           { name: 'aaa', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 },
           { name: 'aaa1', value: 'bbb2', defaultValue: 'xxx3', required: false, index: 4 }
         ]
-        formItem.value.trainDataEnhancement['algorithmId'] = val
-        formItem.value.trainDataEnhancement['params'] = {}
+        formItem.trainDataEnhancement['algorithmId'] = val
+        formItem.trainDataEnhancement['params'] = {}
         // (参数信息,第几页,数组名称)
         addForm(params, 3, 'trainDataEnhancement')
       }
@@ -381,17 +416,18 @@ let items: ProForm.ItemsOptions[] = [
           { name: 'bbb', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 },
           { name: 'bbb1', value: 'bbb2', defaultValue: 'xxx3', required: false, index: 4 }
         ]
-        formItem.value.trainDataExpansion['algorithmId'] = val
-        formItem.value.trainDataExpansion['params'] = {}
+        formItem.trainDataExpansion['algorithmId'] = val
+        formItem.trainDataExpansion['params'] = {}
         // (参数信息,第几页,数组名称)
         addForm(params, 4, 'trainDataExpansion')
       }
     }
   },
   {
-    label: '选择训练算法1',
+    label: '选择训练算法',
     prop: 'trainAlgo',
     span: 14,
+    rules: [{ required: true, message: '请选择训练算法' }],
     show: () => {
       return pageIndex.value === 5 ? true : false
     },
@@ -400,7 +436,7 @@ let items: ProForm.ItemsOptions[] = [
       enum: enumData,
       onChange: val => {
         // console.log("val5",val);
-        formItem.value.train[0]['algorithmId'] = val
+        formItem.train[0]['algorithmId'] = val
       }
     }
   },
@@ -408,19 +444,20 @@ let items: ProForm.ItemsOptions[] = [
     label: '选择训练模型',
     prop: 'trainModel',
     span: 14,
+    rules: [{ required: true, message: '请选择训练模型' }],
     show: () => {
       return pageIndex.value === 5 ? true : false
     },
     compOptions: {
       elTagName: 'select',
-      enum: enumData,
+      enum: subsystemData,
       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.value.train[0]['modelId'] = val
-        formItem.value.train[0]['params'] = {}
+        formItem.train[0]['modelId'] = val
+        formItem.train[0]['params'] = {}
         // (参数信息,第几页,数组名称)
         addForm(params, 5, 'train[0]')
       }
@@ -437,7 +474,7 @@ let items: ProForm.ItemsOptions[] = [
       elTagName: 'select',
       enum: enumData,
       onChange: val => {
-        formItem.value.testDataEnhancement['algorithmId'] = val
+        formItem.testDataEnhancement['algorithmId'] = val
       }
     }
   },
@@ -453,8 +490,8 @@ let items: ProForm.ItemsOptions[] = [
       enum: enumData,
       onChange: val => {
         const params = [{ name: 'ccc', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 }]
-        formItem.value.testDataEnhancement['modelId'] = val
-        formItem.value.testDataEnhancement['params'] = {}
+        formItem.testDataEnhancement['modelId'] = val
+        formItem.testDataEnhancement['params'] = {}
         // (参数信息,第几页,数组名称)
         addForm(params, 7, 'testDataEnhancement')
       }
@@ -471,7 +508,7 @@ let items: ProForm.ItemsOptions[] = [
       elTagName: 'select',
       enum: enumData,
       onChange: val => {
-        formItem.value.testDataExpansion['algorithmId'] = val
+        formItem.testDataExpansion['algorithmId'] = val
       }
     }
   },
@@ -487,13 +524,53 @@ let items: ProForm.ItemsOptions[] = [
       enum: enumData,
       onChange: val => {
         const params = [{ name: 'ccc111', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 }]
-        formItem.value.testDataExpansion['modelId'] = val
-        formItem.value.testDataExpansion['params'] = {}
+        formItem.testDataExpansion['modelId'] = val
+        formItem.testDataExpansion['params'] = {}
         // (参数信息,第几页,数组名称)
         addForm(params, 8, 'testDataExpansion')
       }
     }
   },
+  {
+    label: '选择测试算法',
+    prop: 'testAlgo',
+    span: 14,
+    rules: [{ required: true, message: '请选择测试算法' }],
+    show: () => {
+      return pageIndex.value === 9 ? true : false
+    },
+    compOptions: {
+      elTagName: 'select',
+      enum: enumData,
+      onChange: val => {
+        // console.log("val5",val);
+        formItem.test[0]['algorithmId'] = val
+      }
+    }
+  },
+  {
+    label: '选择测试模型',
+    prop: 'testModel',
+    span: 14,
+    rules: [{ required: true, message: '请选择测试模型' }],
+    show: () => {
+      return pageIndex.value === 9 ? true : false
+    },
+    compOptions: {
+      elTagName: 'select',
+      enum: enumData,
+      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]')
+      }
+    }
+  },
   {
     label: '选择增强算法',
     prop: 'reasoningEnhanceAlgo',
@@ -505,7 +582,7 @@ let items: ProForm.ItemsOptions[] = [
       elTagName: 'select',
       enum: enumData,
       onChange: val => {
-        formItem.value.reasoningDataEnhancement['algorithmId'] = val
+        formItem.reasoningDataEnhancement['algorithmId'] = val
       }
     }
   },
@@ -521,8 +598,8 @@ let items: ProForm.ItemsOptions[] = [
       enum: enumData,
       onChange: val => {
         const params = [{ name: 'ccc', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 }]
-        formItem.value.reasoningDataEnhancement['modelId'] = val
-        formItem.value.reasoningDataEnhancement['params'] = {}
+        formItem.reasoningDataEnhancement['modelId'] = val
+        formItem.reasoningDataEnhancement['params'] = {}
         // (参数信息,第几页,数组名称)
         addForm(params, 11, 'reasoningDataEnhancement')
       }
@@ -539,7 +616,7 @@ let items: ProForm.ItemsOptions[] = [
       elTagName: 'select',
       enum: enumData,
       onChange: val => {
-        formItem.value.reasoningDataExpansion['algorithmId'] = val
+        formItem.reasoningDataExpansion['algorithmId'] = val
       }
     }
   },
@@ -555,12 +632,52 @@ let items: ProForm.ItemsOptions[] = [
       enum: enumData,
       onChange: val => {
         const params = [{ name: 'ccc111', value: 'bbb', defaultValue: 'xxx', required: true, index: 1 }]
-        formItem.value.reasoningDataExpansion['modelId'] = val
-        formItem.value.reasoningDataExpansion['params'] = {}
+        formItem.reasoningDataExpansion['modelId'] = val
+        formItem.reasoningDataExpansion['params'] = {}
         // (参数信息,第几页,数组名称)
         addForm(params, 12, 'reasoningDataExpansion')
       }
     }
+  },
+  {
+    label: '选择测试算法',
+    prop: 'reasoningAlgo',
+    span: 14,
+    rules: [{ required: true, message: '请选择测试算法' }],
+    show: () => {
+      return pageIndex.value === 13 ? true : false
+    },
+    compOptions: {
+      elTagName: 'select',
+      enum: enumData,
+      onChange: val => {
+        // console.log("val5",val);
+        formItem.reasoning[0]['algorithmId'] = val
+      }
+    }
+  },
+  {
+    label: '选择测试模型',
+    prop: 'reasoningModel',
+    span: 14,
+    rules: [{ required: true, message: '请选择测试模型' }],
+    show: () => {
+      return pageIndex.value === 13 ? true : false
+    },
+    compOptions: {
+      elTagName: 'select',
+      enum: enumData,
+      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]')
+      }
+    }
   }
 ]
 // let formItemsTemp4 = ref([
@@ -581,9 +698,72 @@ let formItems = ref([
     model: model.value
   }
 ])
+let addTrainAgloIndex = 0
+let addTestAgloIndex = 0
+let addReasoningAgloIndex = 0
+const proFormRef = ref<InstanceType<typeof ProForm> | null>(null)
 // 增加训练算法
-const onAdd = () => {
-  // formItems.value[0].items.push()
+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
+  }
+  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']`)
+
+                  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}]  `)
+                }
+              }
+            }
+          })
+          console.log('formItems.value', formItems.value)
+        })
+        agloIndex++
+      })
+      // const params = getModelApi(1)
+    }
+  })
 }
 // 增加表单事件
 const addForm = (params, index, arrayName) => {
@@ -601,51 +781,126 @@ const addForm = (params, index, arrayName) => {
         clearable: true,
         placeholder: '请输入...',
         onChange: val1 => {
-          let sss = item.name
+          let label = item.name
           if (arrayName.includes(']')) {
             // 截取数组和下标
             let array = arrayName.slice(0, -3)
             let index = arrayName.slice(-2, -1)
-            formItem.value[`${array}`][`${index}`]['params'][`${sss}`] = val1
+            console.log(`formItem[${array}][${index}]['params'][${label}]`)
+            formItem[`${array}`][`${index}`]['params'][`${label}`] = val1
           } else {
-            formItem.value[`${arrayName}`]['params'][`${sss}`] = val1
+            formItem[`${arrayName}`]['params'][`${label}`] = val1
           }
         }
       }
     })
   })
 }
+// 返回按钮
 const onReturn = () => {
   router.push(`/index`)
 }
 let flag = ref<number>(0) //跳转到日志页面的flag,0为训练日志、1为推理日志
+// 下一步
 const onNext = () => {
-  if (pageIndex.value === 1) {
-    if (formItem.value.selectTask.length === 0) {
-      ElMessage.warning('请选择任务')
-      return
+  const formEl = proFormRef.value![0].proFormRef
+  if (!formEl) return
+  formEl.validate(valid => {
+    if (valid) {
+      if (formItem.selectTask.length === 0 && pageIndex.value === 1) {
+        ElMessage.warning('请选择任务')
+        return
+      }
+      if (pageIndex.value === 2) {
+        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
+            })
+          }
+        }
+        console.log('formItem.trainDataSelect', formItem.trainDataSelect)
+      }
+      if (pageIndex.value === formItem.selectTask[formItem.selectTask.length - 2]) {
+        nextBtnText.value = '提交'
+      }
+      if (pageIndex.value === formItem.selectTask[formItem.selectTask.length - 1]) {
+        console.log('flag.value', flag.value)
+        return
+        // router.push({ path: `/logPage/${flag.value}`, query: { type: 1 } })
+      }
+      pageIndex.value = formItem.selectTask[formItem.selectTask.findIndex(page => page === pageIndex.value) + 1]
     }
+  })
+}
+// 上一步
+const onBack = () => {
+  nextBtnText.value = '下一步'
+  if (pageIndex.value === 2) {
+    pageIndex.value = 1
+    return
   }
-  if (pageIndex.value === 13) {
-    console.log('flag.value', flag.value)
+  pageIndex.value = formItem.selectTask[formItem.selectTask.findIndex(page => page === pageIndex.value) - 1]
+}
+const changeTree = (newVal, allVal) => {
+  const newId = newVal.id
+  const dependencyMap = new Map([
+    [
+      [3, 4, 2, 5],
+      [2, 5]
+    ], // 如果包含3或4,则添加2和5
+    [
+      [7, 8, 6, 9],
+      [6, 9]
+    ],
+    [
+      [11, 12, 10, 13],
+      [10, 13]
+    ]
+  ])
 
-    // router.push({ path: `/logPage/${flag.value}`, query: { type: 1 } })
+  if (prevTreeData.value.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)
+    } 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)
+    } 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)
+    }
   } else {
-    pageIndex.value++
+    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)
+      }
+    }
   }
+  formItem.selectTask = selectTaskTreeRef.value![0].getCheckedKeys().filter(item => item < 90)
 }
-const onBack = () => {
-  if (pageIndex.value === 1) return
-  pageIndex.value--
-}
-const changeTree = (newVal, allVal) => {
-  // console.log('val1', newVal)
-  console.log('val2', allVal)
-  formItem.value.selectTask = allVal.checkedKeys
+// 树组件去除节点函数
+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
 }
 const onSubmit = val => {
-  const data = Object.assign(val, formItem.value)
-  console.log('formItem.value', formItem.value)
+  const data = Object.assign(val, formItem)
+  console.log('formItem', formItem)
 
   console.log('ssssss', data)
 }
@@ -683,6 +938,7 @@ watch(
         break
       case 6:
         title.value = '测试数据选择'
+        break
       case 7:
         title.value = '测试数据增强'
         break
@@ -704,7 +960,6 @@ watch(
         break
       case 13:
         title.value = '推理算法选择'
-        nextBtnText.value = '提交'
         break
       default:
         break

+ 8 - 7
src/views/taais/homePage/index.scss

@@ -6,6 +6,9 @@
     padding: 60px 65px 60px 85px;
   }
 }
+:deep(::-webkit-scrollbar) {
+  display: none;
+}
 
 // :deep(.card) {
 //   width: 100%;
@@ -79,18 +82,16 @@
   margin: 0 auto;
   margin-top: 1%;
   overflow: hidden;
-
-  // overflow-y: scroll;
   .footBtn {
     position: fixed;
-    bottom: 10%;
-    left: 12%;
+    bottom: 4%;
+    left: 10%;
     display: flex;
-    justify-content: space-around;
-    width: 88%;
+    justify-content: space-evenly;
+    width: 86%;
   }
   .createTask-main {
-    height: 92%;
+    height: 100%;
     overflow: hidden;
     overflow-y: scroll;
   }