diff --git a/src/mycomponents/detail/comJobDetailCardBatch.vue b/src/mycomponents/detail/comJobDetailCardBatch.vue index bb2be74f..521db21e 100644 --- a/src/mycomponents/detail/comJobDetailCardBatch.vue +++ b/src/mycomponents/detail/comJobDetailCardBatch.vue @@ -13,7 +13,7 @@ @updateData="updateData" :isShowStatus="isShowStatus" :isShowPackListStatus="isShowPackListStatus" - > + >{ diff --git a/src/mycomponents/qty/compareQty.vue b/src/mycomponents/qty/compareQty.vue index 3c55af38..3d4afc90 100644 --- a/src/mycomponents/qty/compareQty.vue +++ b/src/mycomponents/qty/compareQty.vue @@ -3,6 +3,7 @@ + diff --git a/src/pages/putaway/job/putawayDetail.vue b/src/pages/putaway/job/putawayDetail.vue index d5af8ddb..58b69b33 100644 --- a/src/pages/putaway/job/putawayDetail.vue +++ b/src/pages/putaway/job/putawayDetail.vue @@ -16,7 +16,7 @@ - @@ -277,7 +277,11 @@ updateData() { console.log("updateData") // this.calcHandleQty(); + if (this.managementType == 'BY_BATCH' || managementPrecision == 'BY_QUANTITY') { + calcHandleQty(this.detailSource); + } else { calcTreeHandleQty(this.detailSource) + } }, //模拟扫描功能 openScanPopupSimulate(message) { @@ -329,36 +333,168 @@ }, getScanResult(result, managementPrecision) { - try { this.managementType = managementPrecision + let array1 = []//记录推荐的库位 + let array2 = []//记录推荐的批次 + this.detailSource.forEach(item=>{ + item.subList.forEach(cur=>{ + array1.push(cur.fromLocationCode) + array2.push(cur.batch) + }) + }) + // 扫描的库位是否在 + const obj1 = array1.find(item=>item == result.fromLocationCode) + const obj2 = array2.find(item=>item == result.label.batch) + // this.jobContent.allowModifyLocation = 'FALSE' + // this.jobContent.allowModifyBatch = 'FALSE' + if(this.jobContent.allowModifyLocation == 'FALSE'){ + if(!obj1){ + this.showErrorMessage(`不可以扫描推荐库位【${array1.join(',')}】以外的库位`) + return + } + } + if(this.jobContent.allowModifyBatch == 'FALSE'){ + if(!obj2){ + this.showErrorMessage(`不可以扫描推荐批次【${array2.join(',')}】以外的批次`) + return + } + } + if(!obj1){ + this.recommendQty = 0 + }else{ + this.recommendQty = result.balance.qty + } + // + if (this.managementType == 'BY_BATCH' || managementPrecision == 'BY_QUANTITY') { + this.setDataBatch(result, managementPrecision) + } else { + this.setData(result, managementPrecision) + } + + }, + resizeCollapse() { + this.$nextTick(r => { + this.$refs.comJobDetailCardBatchRef.forEach(r => { + r.resizeCollapse(); + }) + }); + }, + // 按批次的时候校验 代码和按包装的代码基本一致,只不过是校验提示不一致 + setDataBatch(result, managementPrecision){ + try { + var packingNumber = result.label.packingNumber; + var batch = result.label.batch; + var qty = result.label.qty; + var itemCode = result.label.itemCode; + var locationCode = result.fromLocationCode; + + if (!result.balance) { + this.showMessage("箱码【" + packingNumber + "】没有库存余额") + return; + } + + // var inventoryStatus = "OK"; + var detail = this.detailSource.find(r => r.itemCode == itemCode); + + if (detail == undefined) { + this.showErrorMessage("物料号【" + itemCode + "】不在列表中") + } else { + detail.scaned = true + + var itemDetail = detail.subList.find(r => { + return r.batch == batch && + r.fromLocationCode == result.fromLocationCode + }) + + if (itemDetail == undefined) { + // let newItemDetail = {} + detail.subList.push({ + scaned:true, + fromLocationCode:result.fromLocationCode, + toLocationCode:this.toLocationCode, + batch:result.label.batch, + handleQty:result.label.qty, + qty:this.recommendQty, + inventoryStatus:result.balance.inventoryStatus, + toLocation:result.balance.toLocation, + balance:result.balance, + balanceQty:result.balance.qty, + packQty:result.package.packQty, + packUnit:result.package.packUnit, + uom:result.balance.uom, + }) + setTimeout(r => { + this.resizeCollapse(); + this.$forceUpdate() + }, 100) + calcHandleQty(this.detailSource); + } else { + var scanedLength = 0; + itemDetail.packList.forEach(res => { + if (res.scaned) { + scanedLength++; + } + }) + + //大哥让加的 + itemDetail.fromInventoryStatus = result.balance.inventoryStatus; + + if (!itemDetail.cancleScanedHiht && itemDetail.scaned && scanedLength == itemDetail.packList + .length) { + // this.showMessage("箱码【" + packingNumber + "】已经扫描") + // this.showMessage("批次【" + batch + "】已经扫描") + itemDetail.handleQty = calc.add(Number(result.label.qty),itemDetail.handleQty) + } else { + itemDetail.scaned = true; + itemDetail.balanceQty = result.balance.qty; + this.detailSource[0].subList.sort(compareAsc('scaned')); //按扫描信息排序 + itemDetail.handleQty = result.label.qty; + // itemDetail.toInventoryStatus = "OK" + itemDetail.packList.forEach(pac => { + pac.scaned = true + pac.handleQty = Number(pac.qty); + pac.toLocationCode = this.toLocationCode; + }) + + this.continueScan() + this.$forceUpdate() + } + calcHandleQty(this.detailSource); + } + } + } catch (e) { + this.showMessage(e.message) + } + }, + + setData(result, managementPrecision){ + try { var packingNumber = result.label.packingNumber; var batch = result.label.batch; var qty = result.label.qty; var itemCode = result.label.itemCode; var locationCode = result.fromLocationCode; - + if (!result.balance) { this.showMessage("箱码【" + packingNumber + "】没有库存余额") return; } - + // var inventoryStatus = "OK"; var detail = this.detailSource.find(r => r.itemCode == itemCode); - + if (detail == undefined) { this.showErrorMessage("物料号【" + itemCode + "】不在列表中") } else { detail.scaned = true - if (this.managementType == 'BY_BATCH') { - this.verificationBatch(detail, packingNumber, batch, qty, itemCode, locationCode, result) - } else { - + + var itemDetail = detail.subList.find(r => { return r.packingNumber == packingNumber && r.batch == batch && r.fromLocationCode == result.fromLocationCode }) - + if (itemDetail == undefined) { var isExit; for (let subItem of detail.subList) { @@ -391,7 +527,7 @@ } else { qty = Number(result.label.qty); } - + isExit.handleQty = Number(result.label.qty); isExit.toLocationCode = this.toLocationCode; } @@ -406,10 +542,10 @@ scanedLength++; } }) - + //大哥让加的 itemDetail.fromInventoryStatus = result.balance.inventoryStatus; - + if (!itemDetail.cancleScanedHiht && itemDetail.scaned && scanedLength == itemDetail.packList .length) { this.showMessage("箱码【" + packingNumber + "】已经扫描") @@ -423,13 +559,12 @@ pac.handleQty = Number(pac.qty); pac.toLocationCode = this.toLocationCode; }) - + calcTreeHandleQty(this.detailSource); this.continueScan() this.$forceUpdate() } } - } } if (this.managementType == 'BY_BATCH') { this.detailSource.forEach(item => { @@ -442,88 +577,6 @@ this.showMessage(e.message) } }, - // 按批次的时候校验 代码和按包装的代码基本一致,只不过是校验提示不一致 - verificationBatch(detail,packingNumber,batch,qty,itemCode,locationCode,result){ - var itemDetail = detail.subList.find(r => { - return r.batch == batch && - r.fromLocationCode == result.fromLocationCode - }) - - if (itemDetail == undefined) { - var isExit; - for (let subItem of detail.subList) { - var item; - for (let pack of subItem.packList) { - if (pack.batch == batch) { - item = pack; - isExit = pack; - break; - } - } - if (item != undefined) { - subItem.scaned = true - subItem.handleQty = 0; - item = undefined - } - } - - if (isExit == undefined) { - this.showErrorMessage("批次【" + batch + "】库位【" + result - .fromLocationCode + "】不在列表中") - } else { - if (!isExit.cancleScanedHiht && isExit.scaned) { - // this.showMessage("批次【" + batch + "】已经扫描") - isExit.handleQty = calc.add(Number(result.label.qty),isExit.handleQty) - } else { - isExit.scaned = true - let qty = 0; - if (result.balance != null) { - qty = Number(result.balance.qty); - } else { - qty = Number(result.label.qty); - } - - isExit.handleQty = Number(result.label.qty); - isExit.toLocationCode = this.toLocationCode; - } - } - calcTreeHandleQty(this.detailSource); - this.continueScan() - this.$forceUpdate() - } else { - var scanedLength = 0; - itemDetail.packList.forEach(res => { - if (res.scaned) { - scanedLength++; - } - }) - - //大哥让加的 - itemDetail.fromInventoryStatus = result.balance.inventoryStatus; - - if (!itemDetail.cancleScanedHiht && itemDetail.scaned && scanedLength == itemDetail.packList - .length) { - // this.showMessage("箱码【" + packingNumber + "】已经扫描") - // this.showMessage("批次【" + batch + "】已经扫描") - itemDetail.handleQty = calc.add(Number(result.label.qty),itemDetail.handleQty) - } else { - itemDetail.scaned = true; - this.detailSource[0].subList.sort(compareAsc('scaned')); //按扫描信息排序 - itemDetail.handleQty = result.label.qty; - // itemDetail.toInventoryStatus = "OK" - itemDetail.packList.forEach(pac => { - pac.scaned = true - pac.handleQty = Number(pac.qty); - pac.toLocationCode = this.toLocationCode; - }) - - this.continueScan() - this.$forceUpdate() - } - calcTreeHandleQty(this.detailSource); - } - - }, scanLocationCode(location, code) { this.toLocationCode = code this.detailSource.forEach(item => { @@ -556,17 +609,8 @@ } }); }, - - commit() { - this.scanCount = getScanCount(this.subList); - if (this.scanCount == 0) { - this.showErrorMessage("扫描数为0,请先扫描") - return; - } - if (!this.checkLocation()) { - return - } - + // 校验 + check(){ //扫描数量和任务数量相等,直接提交 if (this.scanCount == this.subList.length) { this.submitJob(); @@ -583,47 +627,149 @@ //不允许部分提交,提示 this.$refs.comMessage.showErrorMessage("任务明细未全部完成,不允许部分提交!", res => { if (res) { - this.openScanPopup(); + this.openScanPopup(this.jobToLocationCode); } }); } } + + }, + //按批次的校验 + checkBatch(){ + //扫描数量和任务数量相等,直接提交 + let str = '' + let str1 = '' + let str2 = '' + var scanCount=0; + // this.jobContent.allowBiggerQty = "FALSE" + // this.jobContent.allowSmallerQty = "FALSE" + // this.jobContent.allowPartialComplete = "TRUE" + this.detailSource.forEach((item) => { + item.subList.forEach(cur=>{ + if(cur.scaned){ + scanCount++; + if(parseFloat(cur.qty)>parseFloat(cur.handleQty)){ + str += `物料号【${item.itemCode}】批次【${cur.batch}】实际提交数量【${cur.handleQty}】不可以小于任务数量【${cur.qty}】\n` + } + if(parseFloat(cur.qty)parseFloat(cur.balanceQty)){ + str2 += `物料号【${item.itemCode}】批次【${cur.batch}】实际提交数量【${cur.handleQty}】不可以大于库存数量【${cur.qty}】\n` + } + } + }) + }) + if (scanCount == 0) { + this.showErrorMessage("扫描数为0,请先扫描") + return; + } + if (!this.checkLocation()) { + return + } + if(this.jobContent.allowBiggerQty == "FALSE"){ + if(str1){ + this.$refs.comMessage.showErrorMessage(str1); + return; + } + } + if(this.jobContent.allowSmallerQty == "FALSE"){ + if(str){ + this.$refs.comMessage.showErrorMessage(str); + return; + } + } + if(str2){ + this.$refs.comMessage.showErrorMessage(str2); + return; + } + return; + if(this.scanCount < this.subList.length){ + //扫描数量小于任务数量,判断是否允许部分提交 + if (this.jobContent.allowPartialComplete == "TRUE") { + //提交 + this.$refs.comMessage.showQuestionMessage1("任务明细未全部完成,是否提交?", 'red', res => { + if (res) { + this.submitJob() + } + }); + } else { + //不允许部分提交,提示 + this.$refs.comMessage.showErrorMessage("任务明细未全部完成,不允许部分提交!", res => { + if (res) { + this.openScanPopup(this.jobToLocationCode); + } + }); + } + }else{ + this.submitJob(); + } }, - submitJob() { - uni.showLoading({ - title: "提交中....", - mask: true - }); - + commit() { var itemCodes = [] this.detailSource.forEach(item => { itemCodes.push(item.itemCode) }) - //获取管理模式,封装参数 getManagementPrecisions(itemCodes, this.toLocationCode, res => { if (res.success) { this.managementList = res.list; - var params = this.setParams() - console.log("提交参数", JSON.stringify(params)); - putawayJobSubmit(params).then(res => { - uni.hideLoading() - if (res.data) { - this.showCommitSuccessMessage("提交成功\n生成采购上架记录\n" + res.data) - } else { - this.showErrorMessage("提交失败[" + res.msg + "]") - } - }).catch(error => { - uni.hideLoading() - this.showErrorMessage(error) - }) + this.managementType = this.managementList&&this.managementList[0]&&this.managementList[0].ManagementPrecision ? this.managementList[0].ManagementPrecision : 'BY_PACKAGING' + if(this.managementType == 'BY_BATCH' || this.managementType == 'BY_QUANTITY'){ + this.checkBatch() + }else{ + this.check() + } } else { uni.hideLoading(); this.showErrorMessage(res.message); } + }) + //扫描数量和任务数量相等,直接提交 + // if (this.scanCount == this.subList.length) { + // this.submitJob(); + // } else if (this.scanCount < this.subList.length) { + // //扫描数量小于任务数量,判断是否允许部分提交 + // if (this.jobContent.allowPartialComplete == "TRUE") { + // //提交 + // this.$refs.comMessage.showQuestionMessage1("任务明细未全部完成,是否提交?", 'red', res => { + // if (res) { + // this.submitJob() + // } + // }); + // } else { + // //不允许部分提交,提示 + // this.$refs.comMessage.showErrorMessage("任务明细未全部完成,不允许部分提交!", res => { + // if (res) { + // this.openScanPopup(); + // } + // }); + // } + // } + }, + + submitJob() { + uni.showLoading({ + title: "提交中....", + mask: true }); + + var params = this.setParams() + console.log("提交参数", JSON.stringify(params)); + putawayJobSubmit(params).then(res => { + uni.hideLoading() + if (res.data) { + this.showCommitSuccessMessage("提交成功\n生成采购上架记录\n" + res.data) + } else { + this.showErrorMessage("提交失败[" + res.msg + "]") + } + }).catch(error => { + uni.hideLoading() + this.showErrorMessage(error) + }) + }, setParams() { var subList = []