From 4b012b0344706822daadc094f438ac257f1d96ca Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Mon, 11 Aug 2025 15:59:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E5=8A=A1=EF=BC=9A=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=BB=B4=E6=8A=A4=E6=8C=89=E7=85=A7=E5=AE=A2=E6=88=B7+?= =?UTF-8?q?=E8=BF=90=E8=BE=93=E6=96=B9=E5=BC=8F=E7=BB=B4=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ecss/ecss.js | 4 + src/utils/export-options.js | 44 +-- src/views/modules/ecss/codelnotify.vue | 3 +- src/views/modules/ecss/codelnotifyConfirm.vue | 260 +++++++++++++----- src/views/modules/ecss/createDeclaration.vue | 3 +- .../modules/ecss/pallet_upload_excel.vue | 249 +++++++++++++++-- 6 files changed, 437 insertions(+), 126 deletions(-) diff --git a/src/api/ecss/ecss.js b/src/api/ecss/ecss.js index 26a7d69..c6c3874 100644 --- a/src/api/ecss/ecss.js +++ b/src/api/ecss/ecss.js @@ -46,6 +46,8 @@ export const deleteHsCode= data => createAPI(`/ecss/coDel/deleteHsCode`,'post',d export const searchCoDelPalletData= data => createAPI(`/ecss/coDel/searchCoDelPalletData`,'post',data) +export const searchCoDelPalletDataNew= data => createAPI(`/ecss/coDel/searchCoDelPalletDataNew`,'post',data) + export const saveCoDelPalletDataByExcel= data => createAPI(`/ecss/coDel/saveCoDelPalletDataByExcel`,'post',data) export const searchEcssCoDelPalletHeaderData= data => createAPI(`/ecss/coDel/searchEcssCoDelPalletHeaderData`,'post',data) export const searchEcssCoDelPalletDetailData= data => createAPI(`/ecss/coDel/searchEcssCoDelPalletDetailData`,'post',data) @@ -86,6 +88,8 @@ export const getNotifyPartDetail = data => createAPI(`/ecss/coDel/getNotifyPartD export const saveOneClickPacking = data => createAPI(`/ecss/coDel/saveOneClickPacking`,'post',data) +export const savePalletMaintenance = data => createAPI(`/ecss/coDel/savePalletMaintenance`,'post',data) + export const getCustomerInfo = data => createAPI(`/ecss/coDel/getCustomerInfo`,'post',data) export const searchEcssTemplateData = data => createAPI(`/ecss/coDel/searchEcssTemplateData`,'post',data) diff --git a/src/utils/export-options.js b/src/utils/export-options.js index f2931cf..7e4a3bb 100644 --- a/src/utils/export-options.js +++ b/src/utils/export-options.js @@ -9,8 +9,16 @@ const PalletSku = { columnLabel: "发票号", }, { - columnProp: "seqNo", - columnLabel: "托盘号/箱号", + columnProp: "boxQty", + columnLabel: "箱数", + }, + { + columnProp: "grossWeight", + columnLabel: "毛重", + }, + { + columnProp: "netWeight", + columnLabel: "净重", }, { columnProp: "customerPO", @@ -24,42 +32,10 @@ const PalletSku = { columnProp: "qty", columnLabel: "数量", }, - { - columnProp: "boxQty", - columnLabel: "箱数", - }, { columnProp: "rolls", columnLabel: "Rolls", }, - { - columnProp: "pallet_qty", - columnLabel: "托数", - }, - { - columnProp: "length", - columnLabel: "长(M)", - }, - { - columnProp: "width", - columnLabel: "宽(M)", - }, - { - columnProp: "height", - columnLabel: "高(M)", - }, - { - columnProp: "volume", - columnLabel: "体积", - }, - { - columnProp: "grossWeight", - columnLabel: "毛重", - }, - { - columnProp: "netWeight", - columnLabel: "净重", - }, { columnProp: "shippingMode", columnLabel: "运输方式", diff --git a/src/views/modules/ecss/codelnotify.vue b/src/views/modules/ecss/codelnotify.vue index ebd1341..0c9568b 100644 --- a/src/views/modules/ecss/codelnotify.vue +++ b/src/views/modules/ecss/codelnotify.vue @@ -696,6 +696,7 @@ updateEcssDelDetail, deleteEcssDelDetail, searchCoDelPalletData, + searchCoDelPalletDataNew, queryPartListAll, searchTemplateList, getCustomers, @@ -2005,7 +2006,7 @@ }); } if(this.activeName==='pallet'){ - searchCoDelPalletData(this.currentRow).then(({data}) => { + searchCoDelPalletDataNew(this.currentRow).then(({data}) => { //区分请求成功和失败的状况 if (data && data.code == 0) { this.dataList3 = data.rows diff --git a/src/views/modules/ecss/codelnotifyConfirm.vue b/src/views/modules/ecss/codelnotifyConfirm.vue index 2cb7895..7b5c650 100644 --- a/src/views/modules/ecss/codelnotifyConfirm.vue +++ b/src/views/modules/ecss/codelnotifyConfirm.vue @@ -152,7 +152,8 @@ {{'一键装箱'}} {{'导入装箱单'}} - {{'装箱'}} + {{'栈板维护'}} + {{'导出模版'}} @@ -497,32 +498,12 @@ - - + + - - - - - - - - - - - - - - - - - + 是否显示零数箱 @@ -532,6 +513,50 @@ 关闭 + + + +
+
+ 栈板记录: + 添加行 +
+ + + + + + + + + + + + + + +
+ 暂无栈板记录,请点击"添加行"按钮添加 +
+
+ + 确定 + 关闭 + +
@@ -639,6 +664,7 @@ updateEcssDel, cancerConfirmEcssDel, searchCoDelPalletData, + searchCoDelPalletDataNew, searchEcssCoDelPalletHeaderData, searchEcssCoDelPalletDetailData, savePalletHeader, @@ -646,6 +672,7 @@ savePalletDetail, deletePalletDetail, saveOneClickPacking, + savePalletMaintenance, getNotifyPartDetail, searchPalletList, updateExportFlag @@ -704,11 +731,15 @@ }, oneClickPackingModelFlag:false, oneClickPackingModelData:{ - pallet:'', - palletRemark:'', - height:'', - palletQty:'', + boxRemnant: false, }, + // 一键装箱栈板记录 + oneClickPalletRecords: [], + currentOneClickPalletIndex: -1, // 当前选择栈板的行索引 + // 栈板维护相关 + palletMaintenanceModelFlag: false, + palletMaintenanceRecords: [], + currentPalletMaintenanceIndex: -1, // 当前选择栈板的行索引 palletModelFlag:false, palletModelData:{ addFlag:0, @@ -2097,7 +2128,7 @@ }); } if(this.activeName==='pallet'){ - searchCoDelPalletData(this.currentRow).then(({data}) => { + searchCoDelPalletDataNew(this.currentRow).then(({data}) => { //区分请求成功和失败的状况 if (data && data.code == 0) { this.dataList3 = data.rows @@ -2232,12 +2263,12 @@ }) return false } - /* if(this.currentRow.notifyStatus!=='仓库已确认'){ - this.$alert('仓库未确认无法导入装箱清单!', '错误', { + /*if(this.currentRow.walMartOrderFlag==='Y'){ + this.$alert('沃尔玛订单暂时无法导入装箱清单!', '错误', { confirmButtonText: '确定' }) return false - } */ + }*/ let inData={ site:this.currentRow.site, buNo:this.currentRow.buNo, @@ -2317,7 +2348,6 @@ }, updatePalletModel(row){ this.palletModelData=JSON.parse(JSON.stringify(row)) - this.palletModelData.pallet=row.palletNo this.palletModelData.palletRemark=row.palletRemark this.palletModelData.addFlag=1 this.palletModelFlag=true @@ -2519,7 +2549,7 @@ this.dataList5 = data.rows } }) - searchCoDelPalletData(this.currentRow).then(({data}) => { + searchCoDelPalletDataNew(this.currentRow).then(({data}) => { if (data && data.code == 0) { this.dataList3 = data.rows } else { @@ -2578,37 +2608,27 @@ return false } */ this.oneClickPackingModelData={ - addFlag:0, - site:this.currentRow.site, - buNo:this.currentRow.buNo, - delNo:this.currentRow.delNo, - seqNo:'', - palletNo:'', - palletQty:'', - length:'', - width:'', - height:'', - volume:'', - grossWeight:'', - netWeight:'', - palletRemark:'', + boxRemnant: false, } + // 重置栈板记录并默认添加一行 + this.oneClickPalletRecords = [] + this.oneClickPalletRecords.push({ + pallet: '', + palletQty: '', + height: '' + }) this.oneClickPackingModelFlag=true }, saveOneClickPacking(){ - if(this.oneClickPackingModelData.palletQty===''||this.oneClickPackingModelData.palletQty==null){ - this.$alert('请输入数量!', '错误', { - confirmButtonText: '确定' - }) - return false - } - if(this.oneClickPackingModelData.height===''||this.oneClickPackingModelData.height==null){ - this.$alert('请输入栈板高度(M)!', '错误', { - confirmButtonText: '确定' - }) - return false + let saveData = { + site: this.currentRow.site, + buNo: this.currentRow.buNo, + delNo: this.currentRow.delNo, + boxRemnant: this.oneClickPackingModelData.boxRemnant, + palletRecords: JSON.stringify(this.oneClickPalletRecords) } - saveOneClickPacking(this.oneClickPackingModelData).then(({data}) => { + + saveOneClickPacking(saveData).then(({data}) => { if (data && data.code === 0) { this.refreshCurrentTabTable() this.oneClickPackingModelFlag=false; @@ -2626,6 +2646,24 @@ }) }, + // 一键装箱栈板记录相关方法 + addOneClickPalletRecord() { + this.oneClickPalletRecords.push({ + pallet: '', + palletQty: '', + height: '' + }) + }, + + removeOneClickPalletRecord(index) { + this.oneClickPalletRecords.splice(index, 1) + }, + + selectOneClickPallet(index) { + this.currentOneClickPalletIndex = index + this.palletFlag = true + }, + openPalletDialog () { //请求 this.searchPalletList(); @@ -2635,7 +2673,7 @@ this.palletFlag = false }, searchPalletList () { - this.palletData.buNo = this.oneOrAll===2?this.oneClickPackingModelData.buNo:this.palletModelData.buNo + this.palletData.buNo = (this.oneOrAll===2 || this.oneOrAll===3)?this.currentRow.buNo:this.palletModelData.buNo searchPalletList(this.palletData).then(({data}) => { if (data && data.code === 0){ this.palletList = data.rows; @@ -2644,12 +2682,108 @@ }, palletRowDblclick (row) { if (this.oneOrAll===2) { - this.oneClickPackingModelData.pallet = row.palletNo + // 一键装箱栈板选择 + if (this.currentOneClickPalletIndex >= 0) { + this.oneClickPalletRecords[this.currentOneClickPalletIndex].pallet = row.palletNo + } + } else if (this.oneOrAll===3) { + // 栈板维护栈板选择 + if (this.currentPalletMaintenanceIndex >= 0) { + this.palletMaintenanceRecords[this.currentPalletMaintenanceIndex].pallet = row.palletNo + } } else { this.palletModelData.pallet = row.palletNo } this.palletFlag = false }, + + // 栈板维护相关方法 + palletMaintenance() { + this.oneOrAll = 3; + if(this.currentRow.site===''||this.currentRow.site==null){ + this.$alert('请先选择发货通知单!', '错误', { + confirmButtonText: '确定' + }) + return false + } + + // 重置栈板记录并默认添加一行 + this.palletMaintenanceRecords = [] + this.palletMaintenanceRecords.push({ + pallet: '', + palletQty: '', + height: '' + }) + this.palletMaintenanceModelFlag = true + }, + + addPalletMaintenanceRecord() { + this.palletMaintenanceRecords.push({ + pallet: '', + palletQty: '', + height: '' + }) + }, + + removePalletMaintenanceRecord(index) { + this.palletMaintenanceRecords.splice(index, 1) + }, + + selectPalletMaintenance(index) { + this.currentPalletMaintenanceIndex = index + this.palletFlag = true + }, + + savePalletMaintenance() { + // 验证栈板记录 + for (let i = 0; i < this.palletMaintenanceRecords.length; i++) { + const record = this.palletMaintenanceRecords[i] + if (!record.pallet) { + this.$alert(`第${i + 1}行栈板不能为空!`, '错误', { + confirmButtonText: '确定' + }) + return false + } + if (!record.palletQty || record.palletQty <= 0) { + this.$alert(`第${i + 1}行托数必须大于0!`, '错误', { + confirmButtonText: '确定' + }) + return false + } + if (!record.height || record.height <= 0) { + this.$alert(`第${i + 1}行栈板高度必须大于0!`, '错误', { + confirmButtonText: '确定' + }) + return false + } + } + + // 这里只新增栈板记录,不做其他事情 + let saveData = { + site: this.currentRow.site, + buNo: this.currentRow.buNo, + delNo: this.currentRow.delNo, + palletRecords: JSON.stringify(this.palletMaintenanceRecords), + } + + // 使用相同的API,但传递maintenanceOnly标识 + savePalletMaintenance(saveData).then(({data}) => { + if (data && data.code === 0) { + this.refreshCurrentTabTable() + this.palletMaintenanceModelFlag = false; + this.$message({ + message: '栈板记录新增成功', + type: 'success', + duration: 1500, + onClose: () => {} + }) + } else { + this.$alert(data.msg, '错误', { + confirmButtonText: '确定' + }) + } + }) + }, }, activated() { this.searchTable() diff --git a/src/views/modules/ecss/createDeclaration.vue b/src/views/modules/ecss/createDeclaration.vue index 3b735f2..b47a707 100644 --- a/src/views/modules/ecss/createDeclaration.vue +++ b/src/views/modules/ecss/createDeclaration.vue @@ -501,6 +501,7 @@ searchEcssCoDelNotifyHeaderForDanZheng, searchEcssCoDelNotifyDetail, searchCoDelPalletData, + searchCoDelPalletDataNew, getDeclarationDefaultData, saveDeclaration, }from "@/api/ecss/ecss.js" @@ -1603,7 +1604,7 @@ }); } if(this.activeName==='pallet'){ - searchCoDelPalletData(this.currentRow).then(({data}) => { + searchCoDelPalletDataNew(this.currentRow).then(({data}) => { //区分请求成功和失败的状况 if (data && data.code == 0) { this.dataList3 = data.rows diff --git a/src/views/modules/ecss/pallet_upload_excel.vue b/src/views/modules/ecss/pallet_upload_excel.vue index e998e76..3d19042 100644 --- a/src/views/modules/ecss/pallet_upload_excel.vue +++ b/src/views/modules/ecss/pallet_upload_excel.vue @@ -1,10 +1,10 @@ +