|
@@ -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';
|