diff --git a/src/common/data-import2/data-import2.tsx b/src/common/data-import2/data-import2.tsx index d46753e680b9c0d53ea79580365f68fa1b112d6a..8ab0d6ca8b5facdea6ace61904086902751bb68a 100644 --- a/src/common/data-import2/data-import2.tsx +++ b/src/common/data-import2/data-import2.tsx @@ -32,6 +32,22 @@ type Options = { [key: string]: string | boolean; }; +type columnMapValueType = { name: string; index: number; caption: string }; + +type columnMappingListMapValueType = { + create_date: string; + create_man: string; + data_entity_tag: string; + fields?: [{ caption: string; id: string; index: number; name: string }]; + id: string; + import_tag: string; + name: string; + owner_type: string; + system_tag: string; + update_date: string; + update_man: string; +}; + export async function importMapping( method: string, id?: string, @@ -67,7 +83,7 @@ export const DataImport2 = defineComponent({ setup(props) { const ns = useNamespace('data-import2'); - const isLoading = ref(false); + const isLoading: Ref = ref(false); const onCancelButtonClick = () => { props.dismiss(); @@ -77,7 +93,7 @@ export const DataImport2 = defineComponent({ const previewinfo: Ref<[string[]]> = ref([[]]); // 列映射集合 - const columnMap = new Map(); + const columnMap: Map = new Map(); // 维护表格中多个下拉选择属性值 const selectValues: Ref = ref([]); @@ -86,31 +102,32 @@ export const DataImport2 = defineComponent({ const dataOption: Ref = ref([]); // 定制导入组件 - const dataimport2 = ref(); + const dataimport2: Ref = ref(); // 导入模式下拉选择器 - const select = ref(); + const select: Ref = ref(); // 上传的文件名 - const fileName = ref(''); + const fileName: Ref = ref(''); // 上传的文件ID - let fileid = ''; + let fileid: string = ''; // 是否已列映射保存 - const ColumnMappingSave = ref(true); + const ColumnMappingSave: Ref = ref(true); // 导入模式下拉选择器选项值 - const listValue = ref(''); + const listValue: Ref = ref(''); // 维护所有的导入模式信息 - const columnMappingListMap = new Map(); + const columnMappingListMap: Map = + new Map(); // // 导入模式下拉选择器选项集合 const options: Ref = ref([]); // 是否是私人导入模式 - const isNoPersonel = ref(false); + const isNoPersonel: Ref = ref(false); // 重置表格中多个下拉选择属性值和列映射集合 const clearSelect = () => { @@ -118,7 +135,7 @@ export const DataImport2 = defineComponent({ keys.forEach(item => { const data = columnMap.get(item); const cloneData = clone(data); - if (data) { + if (data && cloneData) { cloneData.name = ''; columnMap.set(item, cloneData); selectValues.value[data.index] = ''; @@ -130,6 +147,9 @@ export const DataImport2 = defineComponent({ const watchValue = async (listvalue: string) => { if (listvalue) { const columnData = columnMappingListMap.get(listvalue); + if (!columnData) { + return; + } let columnMapData = columnData.fields; if (!columnData.fields) { const res = await importMapping('get', columnData.id); @@ -157,16 +177,18 @@ export const DataImport2 = defineComponent({ captionMap.set(itemName, 0); index = 0; } - const filteredObjects = columnMapData.filter( - (columnitem: { caption: string }) => - columnitem.caption === itemName, - ); - const newColumnValue = filteredObjects[index]; + const filteredObjects = + columnMapData && + columnMapData.filter( + (columnitem: { caption: string }) => + columnitem.caption === itemName, + ); + const newColumnValue = filteredObjects && filteredObjects[index]; if (newColumnValue) { const dataOptionValue = dataOption.value.find( dataOptionItem => dataOptionItem.id === newColumnValue.name, ); - if (dataOptionValue) { + if (dataOptionValue && columnMapValue) { captionMap.set(itemName, index + 1); newColumnValue.index = columnMapValue.index; columnMap.set(item, newColumnValue); @@ -213,8 +235,10 @@ export const DataImport2 = defineComponent({ }; if (listValue.value) { const columnData = columnMappingListMap.get(listValue.value); - data.name = columnData.name; - const resput = await importMapping('put', columnData.id, data); + if (columnData && columnData.name) { + data.name = columnData.name; + } + const resput = await importMapping('put', columnData?.id, data); if (resput.status === 200 && resput.ok) { columnMappingListMap.set(listValue.value, resput.data); } @@ -243,7 +267,10 @@ export const DataImport2 = defineComponent({ if (previewinfo.value[0].length) { if (listValue.value && ColumnMappingSave.value) { const data = columnMappingListMap.get(listValue.value); - const { id } = data; + let id = ''; + if (data) { + id = data.id; + } const dataEntityTag = props.appDataEntity.codeName2; const url = `${dataEntityTag}/asyncimportdata2?srfimporttag=${props.appDataEntity.defaultAppDEDataImportId}&srfossfileid=${fileid}&srfimportschemaid=${id}`; await ibiz.net.request(url, { @@ -262,11 +289,11 @@ export const DataImport2 = defineComponent({ } }; - const findDialog = (el: HTMLDivElement) => { + const findDialog = (el: HTMLElement) => { const regex = /\bel-dialog\b/; if (!regex.test(el.className)) { if (el.parentElement) { - findDialog(el.parentElement as HTMLDivElement); + findDialog(el.parentElement as HTMLElement); } } else { el.style.maxWidth = 'calc(100% - 100px)'; @@ -282,7 +309,7 @@ export const DataImport2 = defineComponent({ }; const res = await importMapping('post', 'fetch_cur_user', params); if (res.status === 200 && res.data) { - res.data.forEach((item: IData) => { + res.data.forEach((item: columnMappingListMapValueType) => { options.value.push({ value: item.name, label: item.name, @@ -306,7 +333,9 @@ export const DataImport2 = defineComponent({ } else if (props.appDataEntity.appDEFields) { dataOption.value = props.appDataEntity.appDEFields; } - findDialog(dataimport2.value.parentElement); + if (dataimport2.value && dataimport2.value.parentElement) { + findDialog(dataimport2.value.parentElement); + } columnMappingListQuery(); }); @@ -381,7 +410,7 @@ export const DataImport2 = defineComponent({ selectValues.value[index] = item; }; - const columnMapChange = (key: string, data: IData) => { + const columnMapChange = (key: string, data: columnMapValueType) => { columnMap.set(key, data); }; @@ -389,7 +418,10 @@ export const DataImport2 = defineComponent({ listValue.value = data; }; - const columnMappingListMapChange = (key: string, data?: IData) => { + const columnMappingListMapChange = ( + key: string, + data?: columnMappingListMapValueType, + ) => { if (data) { columnMappingListMap.set(key, data); } else {