From 2f5d6c0e841baef553ed0793779b3e8ca7aff490 Mon Sep 17 00:00:00 2001 From: niexiting <85552560@qq.com> Date: Sat, 17 Aug 2024 13:53:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=84=E4=BB=B6=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9B=B4=E6=8E=A5=E5=8F=91=E6=96=99=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/record.js | 17 +- src/mycomponents/balance/balance.vue | 7 +- .../record/recordComDetailCard.vue | 12 +- .../scan/winScanParentPackage.vue | 273 ++++++++++++++++++ src/pages/issue/record/directIssue0816.vue | 203 ++++++------- 5 files changed, 385 insertions(+), 127 deletions(-) create mode 100644 src/mycomponents/scan/winScanParentPackage.vue diff --git a/src/common/record.js b/src/common/record.js index df840606..6cbcb38b 100644 --- a/src/common/record.js +++ b/src/common/record.js @@ -39,7 +39,7 @@ export function createDetailInfo(balance, pack) { let detail = deepCopyData(balance); detail.balanceQty = new Decimal(detail.qty).toNumber() detail.qty = new Decimal(detail.qty).toNumber(); - detail.packQty = pack.packQty?new Decimal(pack.packQty).toNumber():0 + detail.packQty = pack.packQty ? new Decimal(pack.packQty).toNumber() : 0 detail.packUnit = pack.packUnit detail.handleQty = new Decimal(detail.qty).toNumber(); detail.package = pack; @@ -49,6 +49,21 @@ export function createDetailInfo(balance, pack) { return detail; } + +export function createDetailByPackInfo(pack) { + + // data.toInventoryStatus = this.toInventoryStatus == "" ? data.inventoryStatus : this.toInventoryStatus; + // data.inventoryStatus = data.inventoryStatus; + let detail = deepCopyData(pack); detail.scaned = true; + detail.balanceQty = new Decimal(detail.qty).toNumber() + detail.qty = new Decimal(detail.qty).toNumber(); + detail.packQty = pack.packQty ? new Decimal(pack.packQty).toNumber() : 0 + detail.packUnit = pack.packUnit + detail.handleQty = new Decimal(detail.qty).toNumber(); + detail.package = pack; + return detail; +} + //计算实际数量 export function calcHandleQty(detailSource) { for (let item of detailSource) { diff --git a/src/mycomponents/balance/balance.vue b/src/mycomponents/balance/balance.vue index b4ed53fb..fc5582ab 100644 --- a/src/mycomponents/balance/balance.vue +++ b/src/mycomponents/balance/balance.vue @@ -2,7 +2,8 @@ - + @@ -91,6 +92,10 @@ type: Boolean, default: false }, + isShowParentPack: { + type: Boolean, + default: true + }, }, watch: { diff --git a/src/mycomponents/record/recordComDetailCard.vue b/src/mycomponents/record/recordComDetailCard.vue index 26d24503..cd6be527 100644 --- a/src/mycomponents/record/recordComDetailCard.vue +++ b/src/mycomponents/record/recordComDetailCard.vue @@ -9,7 +9,8 @@ :isShowBalanceQty="isShowBalanceQty"> - + @@ -21,7 +22,7 @@ :right-options="detail.scaned?scanOptions:detailOptions"> + :isShowToLocation="isShowToLocation" :isShowParentPack="isShowParentPack"> @@ -100,6 +101,11 @@ type: Boolean, default: false }, + + isShowParentPack: { + type: Boolean, + default: true + }, }, watch: { @@ -146,7 +152,7 @@ this.$refs.comMessage.showQuestionMessage("确定清空物料及箱码信息?", res => { if (res) { - this.$emit('removeItem',dataContent) + this.$emit('removeItem', dataContent) // this.$emit('removeItem', this.dataContent) } }); diff --git a/src/mycomponents/scan/winScanParentPackage.vue b/src/mycomponents/scan/winScanParentPackage.vue new file mode 100644 index 00000000..8a0553a8 --- /dev/null +++ b/src/mycomponents/scan/winScanParentPackage.vue @@ -0,0 +1,273 @@ + + + + + \ No newline at end of file diff --git a/src/pages/issue/record/directIssue0816.vue b/src/pages/issue/record/directIssue0816.vue index 6e4668b1..9a28e633 100644 --- a/src/pages/issue/record/directIssue0816.vue +++ b/src/pages/issue/record/directIssue0816.vue @@ -18,9 +18,8 @@ + @removePack="removePack" :isShowParentPack="false"> - @@ -45,7 +44,8 @@ - + + @@ -79,6 +79,7 @@ getBusinessType, createItemInfo, createDetailInfo, + createDetailByPackInfo, calcTreeHandleQty, calcHandleQty } from '@/common/record.js'; @@ -100,7 +101,7 @@ import balanceSelect from '@/mycomponents/balance/balanceSelect.vue' import winComScanBalance from '@/mycomponents/scan/winComScanBalance.vue' // import balanceQuery from '@/mycomponents/query/balanceQuery.vue' - import winScanPackage from '@/mycomponents/scan/winScanPackage.vue' + import winScanParentPackage from '@/mycomponents/scan/winScanParentPackage.vue' export default { components: { @@ -114,7 +115,7 @@ recordDetailCard, balanceSelect, winComScanBalance, - winScanPackage + winScanParentPackage // balanceQuery }, data() { @@ -196,82 +197,87 @@ }, getScanResult(result) { - // let balance = result.balance; let pack = result.package; - result.balance.forEach( - b => { - this.setPackageData(b,pack); + let childBalance = result.balance.childBalance; + let parentBalance = result.balance.parentBalance[0]; + + //1.先判断是否重复扫描 + if (this.itemCode) { + var item = this.detailSource.find(res => res.itemCode == pack.itemCode) + if (item == undefined) { + this.showErrorMessage("请扫描物料为【" + this.itemCode + "】不在此次发料记录中") + return; } - ) - }, - - // getScanResult(result) { - // let pack = result.package; - // let balance = result.balance; - - // if (this.fromLocationCode && this.fromLocationCode != balance.locationCode) { - // this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]在库位[" + this - // .fromLocationCode + "]没有库存余额") - // return; - // } + if (item.subList.length > 0) { + var detail = item.subList.find(r => { + if (r.packingNumber == pack.number && + r.batch == pack.batch) { + return r; + } + }) - // //扫描的是子包装 - // if (pack.parentNumber) { - // this.setPackageData(result); - // } else { - // this.setContainerData(result); - // } - // }, + if (detail && detail.scaned) { + this.showErrorMessage("箱码[" + pack.number + "批次[" + pack.batch + "]重复扫描") + return; + } + } + } - setPackageData(balance, pack) { - // let balance = result.balance; - // let pack = result.package; + //2.向列表中增加明细 + //扫描的是子包装 + if (pack.parentNumber) { + //子包装没有库存 + if (childBalance.length == 0) { + this.setPackageData(parentBalance, pack); + } else { //子包装有库存 + this.setPackageData(childBalance[0], pack); + } + } else { + //扫描的是父包装,要过滤掉不在超市的库存,加上没有的库存 + pack.subList.forEach(sub => { + let subBalance = childBalance.find(r => r.packingNumber == sub.number); + if (subBalance) { + //校验父包装和子包装是否在一个库位 + if (subBalance.locationCode == parentBalance.locationCode) { + this.setPackageData(subBalance, sub); + } else { + //不在一个库位暂时先不加 + } + } else { + //如果子包装没有库存,取父包装库存 + this.setPackageData(parentBalance, sub); + } + }) + } + }, + + setPackageData(balance, pack) { var item = this.detailSource.find(res => { if (res.itemCode == balance.itemCode) { return res } }) if (item == undefined) { - if (this.itemCode != "" && this.itemCode != balance.itemCode) { - this.showErrorMessage("请扫描物料为【" + this.itemCode + "】的箱码") - return; - } - if (this.fromWarehouseCode == '') { - this.fromWarehouseCode = balance.warehouseCode; - } var itemp = createItemInfo(balance, pack); - let newDetail = createDetailInfo(balance, pack); // - newDetail.parentNumber = pack.parentNumber; - newDetail.packingNumber = pack.number - newDetail.packUnit = pack.packUnit; - newDetail.packQty = pack.packQty; - if (balance.lableQty) { - newDetail.handleQty = balance.lableQty - } + let newDetail = this.createPackageDetail(balance, pack); itemp.subList.push(newDetail); - this.detailSource.push(itemp) + this.detailSource.push(itemp); this.itemCode = balance.itemCode; - this.fromLocationCode = balance.locationCode + this.fromLocationCode = balance.locationCode; + this.fromWarehouseCode = balance.warehouseCode; this.scanPopupGetFocus() } else { var detail = item.subList.find(r => { if (r.packingNumber == pack.number && - r.batch == balance.batch && - r.locationCode == balance.locationCode && + r.batch == pack.batch && + r.locationCode == pack.locationCode && r.inventoryStatus == balance.inventoryStatus) { return r; } }) if (detail == undefined) { - let newDetail = createDetailInfo(balance, pack); - newDetail.parentNumber = pack.parentNumber; - newDetail.packingNumber = pack.number - newDetail.packUnit = pack.packUnit; - newDetail.packQty = pack.packQty; - if (balance.lableQty) { - newDetail.handleQty = balance.lableQty - } + let newDetail = this.createPackageDetail(balance, pack); item.subList.push(newDetail); this.scanPopupGetFocus() } else { @@ -283,73 +289,26 @@ calcHandleQty(this.detailSource); }, - setContainerData(result) { - //1.查询托和箱所有的库存 - this.getBalance(result, resList => { - - }); - }, - - getBalance(result, callback) { - let packageInfo = result.package; - let filters = [{ - column: "itemCode", - action: "==", - value: packageInfo.itemCode - }, { - column: "batch", - action: "==", - value: packageInfo.batch - }]; - if (this.businessType.outInventoryStatuses != null) { - filters.push({ - column: "inventoryStatus", - action: "in", - value: this.businessType.outInventoryStatuses - }) - } - if (this.businessType.outAreaTypes != null) { - filters.push({ - column: "areaType", - action: "in", - value: this.businessType.outAreaTypes - }) - } - - - let packingNumber = packageInfo.number; - packageInfo.subList.forEach(sub => { - packingNumber = packingNumber + ',' + sub.number - }) - packingNumber = packingNumber.trimEnd(','); - filters.push({ - column: "packingNumber", - action: "in", - value: packingNumber - }) - var params = { - filters: filters, - pageNo: 1, - pageSize: 100, - } - getBalanceByFilter(params).then(res => { - if (res.data.list.length > 0) { - res.data.list.forEach(r => { - // if (packageInfo.parentNumber !== null) { - // r.parentPackingNumber = packageInfo.parentNumber - // } else { - // r.parentPackingNumber = packageInfo.number - // } - }) - callback(res.data.list) - } else { + createPackageDetail(balance, pack) { + let newDetail = {}; + if (balance.packingNumber != pack.number) { + newDetail = createDetailByPackInfo(pack); + newDetail.inventoryStatus = balance.inventoryStatus; + } else { + newDetail = createDetailInfo(balance, pack); + if (balance.lableQty) { + newDetail.handleQty = balance.lableQty } - }).catch(err => { - this.showErrorMessage(err.message); - }) + } + newDetail.parentNumber = pack.parentNumber; + newDetail.packingNumber = pack.number + newDetail.packUnit = pack.packUnit; + newDetail.packQty = pack.packQty; + return newDetail; }, + showErrorMessage(message) { this.$refs.comMessage.showErrorMessage(message, res => { if (res) { @@ -448,7 +407,7 @@ // this.getBusinessType() // } // }, - + openScanPopup() { setTimeout(r => { this.$refs.scanPopup.openScanPopupByBusinessType(this.businessType);