diff --git a/core/core-frontend/src/views/visualized/data/datasource/form/ExcelDetail.vue b/core/core-frontend/src/views/visualized/data/datasource/form/ExcelDetail.vue index f06feafef8..f49bc54e4e 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/form/ExcelDetail.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/form/ExcelDetail.vue @@ -14,6 +14,7 @@ import { onBeforeUnmount, nextTick } from 'vue' +import { fieldType as fieldTypeLowercase } from '@/utils/attr' import { ElMessage, ElMessageBox } from 'element-plus-secondary' import { save, update } from '@/api/datasource' import type { Action } from 'element-plus-secondary' @@ -44,6 +45,7 @@ export interface Field { fieldSize: number fieldType: string name: string + deExtractType: number checked: boolean primaryKey: boolean length: number @@ -119,10 +121,17 @@ const fieldType = { DOUBLE: 'value' } +const fieldTypeToStr = { + 0: 'TEXT', + 2: 'LONG', + 3: 'DOUBLE' +} + const generateColumns = (arr: Field[]) => arr.map(ele => ({ key: ele.originName, fieldType: ele.fieldType, + deExtractType: ele.deExtractType, dataKey: ele.originName, title: ele.name, checked: ele.checked, @@ -462,6 +471,18 @@ const refreshData = () => { currentMode.value = 'preview' } +const deExtractTypeChange = item => { + item.deType = item.deExtractType + const sheet = state.excelData[0]?.sheets.find(ele => ele.sheetId === activeTab.value) + sheet.fields.forEach(row => { + if (row.originName === item.dataKey) { + row.deExtractType = item.deExtractType + row.deType = item.deExtractType + row.fieldType = fieldTypeToStr[item.deExtractType] + } + }) +} + const lengthChange = val => { const sheet = state.excelData[0]?.sheets.find(ele => ele.sheetId === activeTab.value) sheet.fields.forEach(row => { @@ -479,6 +500,15 @@ const primaryKeyChange = val => { }) } +const fieldOptions = [ + { label: t('dataset.text'), value: 0 }, + { label: t('dataset.value'), value: 2 }, + { + label: t('dataset.value') + '(' + t('dataset.float') + ')', + value: 3 + } +] + const handleSelectionChange = val => { if (!initMultipleTable.value) { multipleSelection.value = val @@ -520,7 +550,7 @@ const disabledFieldLength = item => { if (!item.checked) { return true } - if (item.fieldType !== 'TEXT') { + if (item.deExtractType !== 0) { return true } } @@ -537,6 +567,9 @@ const changeCurrentMode = val => { } initMultipleTable.value = false }) + } else { + const sheet = state.excelData[0]?.sheets.find(ele => ele.sheetId === activeTab.value) + handleNodeClick(sheet) } } @@ -726,20 +759,48 @@ defineExpose({ {{ scope.row.title }} - - - - - - - - - {{ t(`dataset.${fieldType[scope.row.fieldType]}`) }} - + + + + + + + + + + + + + + + {{ + item.label + }} + +