From 031a187db2013472dbcb9fbe3a31004af805b023 Mon Sep 17 00:00:00 2001 From: "huojin\\hj" <982011> Date: Tue, 29 Jul 2025 16:30:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/importData.js | 12 + src/components/Crud/CRUD.operation.vue | 61 +++- src/layout/index.vue | 24 +- src/views/business-asn/asn/index.vue | 464 ++++++++++++++++++++----- 4 files changed, 434 insertions(+), 127 deletions(-) create mode 100644 src/api/importData.js diff --git a/src/api/importData.js b/src/api/importData.js new file mode 100644 index 0000000..0870ffc --- /dev/null +++ b/src/api/importData.js @@ -0,0 +1,12 @@ +import request from '@/utils/request' + +// 导入相关API +export function importAsnData(data) { + return request({ + url: 'api/importData/importAsn', + method: 'post', + data + }) +} + +export default { importAsnData } diff --git a/src/components/Crud/CRUD.operation.vue b/src/components/Crud/CRUD.operation.vue index 60b5a20..6463c85 100644 --- a/src/components/Crud/CRUD.operation.vue +++ b/src/components/Crud/CRUD.operation.vue @@ -180,35 +180,64 @@ export default { }, methods: { - initcolumn() { this.updateTableColumns() - const strHidden=sessionStorage.getItem(this.tableKey) - this.hiddenColumns= JSON.parse(strHidden); - if(this.hiddenColumns.length>0){ - console.log("------移除---------------") + const strHidden = sessionStorage.getItem(this.tableKey) + + // 检查 sessionStorage 值是否存在 + if (!strHidden) { + this.hiddenColumns = [] + return + } + + // 安全解析 JSON 数据 + try { + this.hiddenColumns = JSON.parse(strHidden) || [] + } catch (error) { + this.hiddenColumns = [] + return + } + + if (this.hiddenColumns.length > 0) { const table = this.crud.props.table - this.table_configs_xs.forEach((column,index) => { - const vm = table.$children.find(e => e.label === column.label) + + // 预先构建 label 到 column 的映射,提高查找效率 + const labelToColumnMap = {} + if (table && table.$children) { + table.$children.forEach(child => { + if (child.label) { + labelToColumnMap[child.label] = child + } + }) + } + + this.table_configs_xs.forEach((column, index) => { + const vm = labelToColumnMap[column.label] + + // 检查元素是否存在 + if (!vm) { + return + } const columnConfig = vm.columnConfig + // 检查 columnConfig 是否有效 + if (!columnConfig) { + return + } - console.log(columnConfig) - vm.owner.store.commit('removeColumn', columnConfig, null) - + if (vm.owner && vm.owner.store) { + vm.owner.store.commit('removeColumn', columnConfig, null) + } }) + this.ignoreNextTableColumnsChange = false - console.log("--------移除完成-------------") + setTimeout(() => { // 方法区 - this.showcolumn(); + this.showcolumn() }, 200) } - - //vm.owner.store.commit('insertColumn', columnConfig, newIndex+myindex + 1 , null) - - }, showcolumn() { console.log("------显示列------") diff --git a/src/layout/index.vue b/src/layout/index.vue index 58afe12..f443245 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -69,26 +69,14 @@ export default { this.$store.dispatch('app/closeSideBar', { withoutAnimation: false }) }, getTableConfig() { - // eslint-disable-next-line no-unused-vars - // console.log("-----------------") crudTableConfig.gettables().then(res => { - - this.table_configs = res.map(function (obj) { - - return obj - }) - console.log("-------------加载Table配置数量:"+this.table_configs.length+"---------") + this.table_configs = res.map(obj => obj); + console.log("-------------加载Table配置数量:" + this.table_configs.length + "---------"); this.table_configs.forEach(config => { - sessionStorage.removeItem(config.tableType) - sessionStorage.setItem(config.tableType,config.value) - }) - - //sessionStorage.setItem(tableKey, res.value) - - //var tableKey - // eslint-disable-next-line no-unused-vars - const hiddenColumns = JSON.parse(sessionStorage.getItem(tableKey)) - }) + sessionStorage.removeItem(config.tableType); + sessionStorage.setItem(config.tableType, config.value); + }); + }); } } } diff --git a/src/views/business-asn/asn/index.vue b/src/views/business-asn/asn/index.vue index b697fcc..2aca631 100644 --- a/src/views/business-asn/asn/index.vue +++ b/src/views/business-asn/asn/index.vue @@ -4,11 +4,13 @@
- - - - - + + + + + - - - + + + - +
- - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - + + 导入 + + + + + + + + + + + + + - + + + + + + +
+
+

模板说明:

+

适用于标准导入,包含INVOICE NO.、BOI、PO&LN NO.、PART + NO.、DESCRIPTION、Q'TY 、C/NO.

+ 下载模板 +
+ + +
将文件拖到此处,或点击上传
+
注意:更新文件后请重新上传(支持.xlsx, .xls, + .csv 格式文件) +
+
+
+
+ + +
+
+

模板说明:

+

适用于大物导入,包含INVOICE NO.、BOI、PO&LN NO.、PART + NO.、DESCRIPTION、Q'TY 、C/NO.

+
+ + +
将文件拖到此处,或点击上传
+
注意:更新文件后请重新上传(支持.xlsx, .xls, + .csv 格式文件) +
+
+
+
+ + +
+
+

模板说明:

+

适用于空运发票箱单导入,包含INVOICE NO.、BOI、PO&LN NO.、PART + NO.、DESCRIPTION、Q'TY 、C/NO.

+
+ + +
将文件拖到此处,或点击上传
+
注意:更新文件后请重新上传(支持.xlsx, .xls, + .csv 格式文件) +
+
+
+
+
+ + +
- +