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/detail/comRecommendDetailCard.vue b/src/mycomponents/detail/comRecommendDetailCard.vue index 4eda6a01..463a4fbd 100644 --- a/src/mycomponents/detail/comRecommendDetailCard.vue +++ b/src/mycomponents/detail/comRecommendDetailCard.vue @@ -13,14 +13,12 @@ -
- - +
@@ -30,7 +28,7 @@ 际 - + diff --git a/src/mycomponents/package/packageList.vue b/src/mycomponents/package/packageList.vue index a4458dd7..445cf283 100644 --- a/src/mycomponents/package/packageList.vue +++ b/src/mycomponents/package/packageList.vue @@ -131,13 +131,13 @@ this.edit(item) } else if (e.content.text == "移除") { if (type == 'parent') { - this.removeParent(item); + this.removeParent(item,type); } else { - this.remove(item,index,ele) + this.remove(item,type,index,ele) } } }, - removeParent(item) { + removeParent(item,type) { this.$refs.comMessage.showQuestionMessage("确定移除扫描信息?", res => { if (res) { @@ -148,7 +148,7 @@ subItem.handleQty = null; }) - this.$emit('updateData') + this.$emit('updateData',type,item) this.$forceUpdate() } }); @@ -156,14 +156,14 @@ - remove(item,index,ele) { + remove(item,type,index,ele) { this.$refs.comMessage.showQuestionMessage("确定移除扫描信息?", res => { if (res) { item.scaned = false item.handleQty = null; this.collapseChange() - this.$emit('updateData',ele,index) + this.$emit('updateData',type,item,index,ele) this.$forceUpdate() } }); 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/mycomponents/scan/winScanPackAndLocation.vue b/src/mycomponents/scan/winScanPackAndLocation.vue index ba3aeae9..acc6abb2 100644 --- a/src/mycomponents/scan/winScanPackAndLocation.vue +++ b/src/mycomponents/scan/winScanPackAndLocation.vue @@ -320,14 +320,11 @@ // return; // } else // 直接合格转隔离直接调用的时候需要 - console.log(88,businessType) if(businessType){ this.businessType = businessType; this.fromInventoryStatuses = getDirectoryItemArray(this.businessType.outInventoryStatuses) this.inventoryStatus = getDirectoryItemArray(this.businessType.outInventoryStatuses); //出库库存状态 this.fromLocationAreaTypeList = getDirectoryItemArray(this.businessType.outAreaTypes); //出库库区 - console.log(99,this.fromInventoryStatuses) - console.log(99,this.balanceFromInventoryStatuses) } diff --git a/src/pages/inventoryMove/coms/comMoveRecord.vue b/src/pages/inventoryMove/coms/comMoveRecord.vue index 520cff17..53118cf2 100644 --- a/src/pages/inventoryMove/coms/comMoveRecord.vue +++ b/src/pages/inventoryMove/coms/comMoveRecord.vue @@ -237,6 +237,7 @@ openScanPopup() { this.isJustReplay = true + this.fromLocationCode = this.$refs.okToHoldRecordPackRef.fromLocationCode || ' ' if (this.fromLocationCode == "") { this.showFromLocationPopup(); return @@ -244,6 +245,7 @@ this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType); }, showFromLocationPopup() { + // this.$refs.scanPopup. this.$refs.scanFromLocationCode.openScanPopup(); }, showPopup() { @@ -444,7 +446,7 @@ } console.log(detail) if (detail == undefined) { - let newDetail = createDetailInfo(balance, pack); + let newDetail = createDetailInfoForLabel(balance, pack, result.label); // newDetail.inventoryStatus = balance.inventoryStatus; if (this.businessTypeCode == "Move") { newDetail.toInventoryStatus = balance.inventoryStatus; @@ -452,9 +454,9 @@ newDetail.toInventoryStatus = this.toInventoryStatus; } - if (newDetail.packingNumber == '') { - newDetail.packingNumber = pack.number; - } + // if (newDetail.packingNumber == '') { + // newDetail.packingNumber = pack.number; + // } newDetail.toLocationCode = this.toLocationCode; newDetail.managementTypeParams = managementTypeParams; newDetail.fromLocationCode = result.fromLocationCode diff --git a/src/pages/inventoryMove/coms/okToHoldRecordPack.vue b/src/pages/inventoryMove/coms/okToHoldRecordPack.vue index 6b70c023..f65a64fe 100644 --- a/src/pages/inventoryMove/coms/okToHoldRecordPack.vue +++ b/src/pages/inventoryMove/coms/okToHoldRecordPack.vue @@ -10,7 +10,8 @@ 来源库位: - + + @@ -19,7 +20,8 @@ 零件: - + + @@ -28,7 +30,8 @@ 批次: - + + @@ -73,7 +76,8 @@ fromLocationCode:'', itemCode:'', batch:'', - showOne:false + showOne:false, + isFromLocationFocus:false } }, props: { @@ -126,9 +130,9 @@ }, fromLocationScanMsg(){ if (this.fromLocationCode) { - console.log(111,this.fromLocationCode) this.scanMsg = this.fromLocationCode this.fromWitch = 'fromLocationScanMsg' + this.isFromLocationFocus = false this.handelScanMsg() } }, diff --git a/src/pages/issue/job/issueDetailBatch.vue b/src/pages/issue/job/issueDetailBatch.vue index f8af2d29..3b518718 100644 --- a/src/pages/issue/job/issueDetailBatch.vue +++ b/src/pages/issue/job/issueDetailBatch.vue @@ -617,7 +617,7 @@ autoCommit(){ // this.$throttle(this.submit, 2000, this)() // this.jobContent.allowSmallerQty = 'FALSE' - this.jobContent.allowBiggerQty = 'FALSE' + // this.jobContent.allowBiggerQty = 'FALSE' let str="" let str1="" let str2="" diff --git a/src/pages/purchaseReceipt/coms/comReceiptDetailCardBacth.vue b/src/pages/purchaseReceipt/coms/comReceiptDetailCardBacth.vue index 2d37cfe3..7013495f 100644 --- a/src/pages/purchaseReceipt/coms/comReceiptDetailCardBacth.vue +++ b/src/pages/purchaseReceipt/coms/comReceiptDetailCardBacth.vue @@ -174,13 +174,11 @@ item.subList.forEach(lst => { lst.scaned = false; lst.handleQty = null; - lst.packList.forEach(pack => { - pack.scaned = false; - pack.handleQty = null; - }) + lst.packList=[] }) // this.$forceUpdate() // this.$emit('remove', item) + this.updateData() } }); }, @@ -200,8 +198,8 @@ this.editItem.handleQty = qty; this.$emit('updateData') }, - updateData(index,packList) { - this.$emit('updateData',index,packList) + updateData(item,type,index,ele) { + this.$emit('updateData',item,type,index,ele) } } } diff --git a/src/pages/purchaseReceipt/job/receiptDetail.vue b/src/pages/purchaseReceipt/job/receiptDetail.vue index 2e755ac3..7f684684 100644 --- a/src/pages/purchaseReceipt/job/receiptDetail.vue +++ b/src/pages/purchaseReceipt/job/receiptDetail.vue @@ -575,19 +575,36 @@ } }, - updateData(ele,index) { - // if(this.managementType == 'BY_BATCH'){ - // }else{ - // calcTreeHandleQty(this.detailSource) - // } - if(ele){ + updateData(type,item,index,ele) { + if(type == 'parent'){ + item.packList=[] + item.scaned = false + }else if(type == 'child'){ + console.log(ele) ele.packList.splice(index,1) if(ele.packList.length == 0){ ele.scaned = false } - this.packingNumberList.splice(index,1) } + this.packingNumberList = [] + this.detailSource.forEach(item=>{ + item.subList.forEach(cur=>{ + if(cur.packList.length>0){ + cur.packList.forEach(i=>{ + this.packingNumberList.push(i) + }) + } + }) + }) + setTimeout(()=>{ + this.$refs.comReceiptDetailCardBacthRef.forEach(item=>{ + item.resizeCollapse() + item.$refs.packageListRef.$refs.collapse2.forEach(cur=>{ + cur.resize() + }) + }) + },500) calcTreeHandleQty(this.detailSource); }, diff --git a/src/pages/putaway/job/putawayDetail.vue b/src/pages/putaway/job/putawayDetail.vue index d5af8ddb..2ee771c1 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,46 +627,124 @@ //不允许部分提交,提示 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; + } + 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); } + }) + }, + + 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() { diff --git a/src/pages/unPlanned/job/receiptJobDetail.vue b/src/pages/unPlanned/job/receiptJobDetail.vue index cee1ad27..1a222414 100644 --- a/src/pages/unPlanned/job/receiptJobDetail.vue +++ b/src/pages/unPlanned/job/receiptJobDetail.vue @@ -105,7 +105,7 @@ managementList: [], managementType:'', jobStatus: "", - jobToLocationCode: "" + jobToLocationCode: "", }; }, onLoad(option) { @@ -385,8 +385,6 @@ return; } } - console.log(11,scanCount) - console.log(11,this.subList.length) if (scanCount < this.subList.length){ if(this.jobContent.allowPartialComplete == "TRUE"){ this.$refs.comMessage.showQuestionMessage1("任务明细未全部完成,是否提交?", 'red', res => {