From 5ef62fb37bd3c030887ad140427a8fa4948568f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BF=97=E5=9B=BD?= <854933521@qq.com> Date: Fri, 1 Nov 2024 10:17:53 +0800 Subject: [PATCH] =?UTF-8?q?page/purchaseReceipt=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=208/8-10/25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coms/comReceiptDetailCard.vue | 2 +- .../coms/comReceiptDetailCardBacth.vue | 193 +++++++++++++++++ .../purchaseReceipt/job/receiptDetail.vue | 199 ++++++++++++++++-- src/pages/purchaseReceipt/job/receiptJob.vue | 12 +- 4 files changed, 387 insertions(+), 19 deletions(-) create mode 100644 src/pages/purchaseReceipt/coms/comReceiptDetailCardBacth.vue diff --git a/src/pages/purchaseReceipt/coms/comReceiptDetailCard.vue b/src/pages/purchaseReceipt/coms/comReceiptDetailCard.vue index 2a400242..9793b029 100644 --- a/src/pages/purchaseReceipt/coms/comReceiptDetailCard.vue +++ b/src/pages/purchaseReceipt/coms/comReceiptDetailCard.vue @@ -11,7 +11,7 @@ - + diff --git a/src/pages/purchaseReceipt/coms/comReceiptDetailCardBacth.vue b/src/pages/purchaseReceipt/coms/comReceiptDetailCardBacth.vue new file mode 100644 index 00000000..63b25b5c --- /dev/null +++ b/src/pages/purchaseReceipt/coms/comReceiptDetailCardBacth.vue @@ -0,0 +1,193 @@ + + + + + \ No newline at end of file diff --git a/src/pages/purchaseReceipt/job/receiptDetail.vue b/src/pages/purchaseReceipt/job/receiptDetail.vue index 67fcd393..0a1ccc0d 100644 --- a/src/pages/purchaseReceipt/job/receiptDetail.vue +++ b/src/pages/purchaseReceipt/job/receiptDetail.vue @@ -26,7 +26,14 @@ - + + + + + @@ -74,7 +81,7 @@ import winScanPack from '@/mycomponents/scan/winScanPack.vue' import locationCompare from '@/mycomponents/location/locationCompare.vue' import comReceiptDetailCard from '@/pages/purchaseReceipt/coms/comReceiptDetailCard.vue' import jobTopAsn from '@/mycomponents/job/jobTopAsn.vue' - +import comReceiptDetailCardBacth from '@/pages/purchaseReceipt/coms/comReceiptDetailCardBacth.vue' import { useCountStore } from '@/store' // 获取自定义的store const store = useCountStore() @@ -104,6 +111,8 @@ const locationCompareRef = ref() const scanPopup = ref() const comReceiptDetailCardRef = ref() const count = ref(0) +const managementType = ref('') +const switchCode1 = ref('') onLoad((option) => { id.value = option.id scanMessage.value = option.scanMessage @@ -111,6 +120,7 @@ onLoad((option) => { status.value = option.status || '' operation.value = option.operation switchCode.value = 'purchasereceiptPrintPDA' // pda打印 + switchCode1.value = "EnableQms" //根据开关中是否启用QMS去判断,如果为TRUE显示检验指引单,如果为FALSE不显示检验指引单 }) onShow(() => { @@ -190,6 +200,18 @@ const getDetail = () => { toLocationCode.value = jobToLocationCode.value } isAllReceived.value = false + //获取管理模式,封装参数 + let itemCodes = [] + detailSource.value.forEach(item => { + itemCodes.push(item.itemCode) + }) + getManagementPrecisions(itemCodes, that.jobToLocationCode, res => { + if (res.success) { + managementList.value = res.list; + managementType.value = managementList.value.some(item => item.ManagementPrecision == + 'BY_BATCH') ? 'BY_BATCH' : '' + } + }) if (scanMessage.value) { scanPopup.value.simulateScan(scanMessage.value) } @@ -203,9 +225,18 @@ const getDetail = () => { }) } const getScanResult = (result) => { + if(managementType.value == 'BY_BATCH'){ + getScanResultAfterBatch(result) + }else{ + getScanResultAfter(result) + } + +} +const getScanResultAfter = (result) => { try { const { itemCode } = result.label - var detail = detailSource.value.find((r) => r.itemCode == itemCode) + let detail = detailSource.value.find((r) => r.itemCode == itemCode) + detail.scaned = true; if (detail == undefined) { showErrorMessage(`物料号【${itemCode}】不在列表中`) return @@ -273,20 +304,20 @@ const getScanResult = (result) => { showMessage(`箱码【${packingNumber}】已经扫描`) } else { itemDetail.scaned = true - itemDetail.scanDate = new Date(); + itemDetail.scanDate = new Date(); detailSource.value[0].subList.sort(compareAsc('scaned')) // 按扫描信息排序 itemDetail.handleQty = Number(result.label.qty) itemDetail.toLocationCode = toLocationCode.value itemDetail.labelQty = Number(result.label.qty) itemDetail.packList.forEach((pac) => { pac.scaned = true - pac.scanDate = new Date(); + pac.scanDate = new Date(); pac.handleQty = Number(pac.qty) pac.toLocationCode = toLocationCode.value }) calcTreeHandleQty(detailSource.value) - detailSource[0].subList.sort(compareDesc('scanDate')) + detailSource[0].subList.sort(compareDesc('scanDate')) const test = detailSource.value continueScan() } @@ -297,6 +328,113 @@ const getScanResult = (result) => { showErrorMessage(e.message) } } +// 批次扫码之后逻辑 +const getScanResultAfterBatch = (result)=>{ + try { + let itemCode = result.label.itemCode; + let detail = detailSource.value.find(r => r.itemCode == itemCode); + detail.scaned = true; + if (detail == undefined) { + showErrorMessage("物料号【" + itemCode + "】不在列表中") + return; + } + if (result.label.labelType == "ContainerLabel") { + let containerNumber = result.label.container; + let itemDetail = detail.subList.filter(r => r.containerNumber == containerNumber); + if (itemDetail.length == 0) { + showErrorMessage("物料【" + itemCode + "】、托码【" + containerNumber + "】不在列表中") + } else { + if (itemDetail[0].scaned) { + showErrorMessage("物料【" + itemCode + "】、托码【" + containerNumber + "】已经扫描") + } else { + itemDetail.forEach(item => { + item.scaned = true; + itemDetail.scanDate = new Date(); + item.handleQty = item.qty; + item.toLocationCode = toLocationCode.value; + }) + calcHandleQty(detailSource.value); + detailSource.value[0].subList.sort(compareDesc('scanDate')); //按扫描信息排序 + continueScan() + } + } + } else if (result.label.labelType == "PurchaseLabel") { + let packingNumber = result.package.number; + let parentpackingNumber = result.package.parentNumber; + let batch = result.label.batch; + let qty = result.label.qty; + let detail = detailSource.value.find(r => r.itemCode == itemCode); + if (detail == undefined) { + showMessage("物料号【" + itemCode + "】不在列表中") + } else { + //物料在列表中 + let itemDetail = detail.subList.find(r => r.batch == + batch); + if (itemDetail == undefined) { + itemDetail = detail.subList.find(r => r.batch == + batch); + + if (itemDetail == undefined) { + showMessage("批次【" + batch + "】不在列表中") + } else { + let pack = itemDetail.packList.find(p => + p.batch == batch) + if (pack == undefined) { + showMessage("批次【" + batch + "】不在列表中") + } else { + if (pack.scaned) { + pack.scanDate = new Date(); + showMessage("批次【" + batch + "】已经扫描"); + } else { + pack.scaned = true + pack.scanDate = new Date(); + pack.handleQty = Number(result.label.qty); + pack.toLocationCode = toLocationCode.value; + pack.labelQty = Number(result.label.qty); + } + } + calcTreeHandleQty(detailSource.value); + itemDetail.packList.sort(compareDesc('scanDate')); //按扫描信息排序 + } + + } else { + //扫描的是外包装,将包装集合全部扫描 + let scanedLength = 0; + itemDetail.packList.forEach(res => { + if (res.scaned) { + scanedLength++; + } + }) + if (itemDetail.scaned && scanedLength == itemDetail + .packList.length) { + itemDetail.scanDate = new Date(); + showMessage("批次【" + batch + "】已经扫描") + } else { + itemDetail.scaned = true; + itemDetail.scanDate = new Date(); + itemDetail.handleQty = Number(result.label.qty); + itemDetail.toLocationCode = toLocationCode.value; + itemDetail.labelQty = Number(result.label.qty); + itemDetail.packList.forEach(pac => { + pac.scaned = true + pac.scanDate = new Date(); + pac.handleQty = Number(pac.qty); + pac.toLocationCode = toLocationCode.value; + }) + + calcTreeHandleQty(detailSource.value); + this.detailSource[0].subList.sort(compareDesc('scanDate')); //按扫描信息排序 + this.continueScan() + this.$forceUpdate() + } + } + } + } + + } catch (e) { + this.showErrorMessage(e.message) + } +} // 继续扫描 const continueScan = () => { scanCount.value = getScanCount(subList.value) @@ -315,6 +453,7 @@ const updateData = () => { const scanLocationCode = (location, code) => { if (jobContent.value.allowModifyLocation == 'TRUE') { toLocationCode.value = code + jobToLocationCode.value= code } else if (code == jobToLocationCode.value) { toLocationCode.value = code } else { @@ -342,12 +481,16 @@ const commit = () => { // 提交 comMessageRef.value.showQuestionMessage('还有未扫描的物料,是否继续提交?', (res) => { if (res) { - submitJob() + comMessageRef.value.showQuestionMessage1("任务明细未全部完成,是否提交?", 'red', res => { + if (res) { + submitJob() + } + }); } }) } else { // 不允许部分提交,提示 - comMessageRef.value.showErrorMessage('请完成扫描后,再进行提交
' + `已经扫描[${scanCount.value}]箱总共[${subList.value.length}]箱`, (res) => { + comMessageRef.value.showErrorMessage("任务明细未全部完成,不允许部分提交!", res => { if (res) { openScanPopup() } @@ -361,7 +504,7 @@ const reject = () => { showMessage('请输入拒收原因') return } - comMessageRef.value.showErrorMessage(`是否要拒收任务
[${jobContent.value.asnNumber}]?`, (res) => { + comMessageRef.value.showErrorMessage(`是否要拒收任务\n[${jobContent.value.asnNumber}]?`, (res) => { console.log(res) if (res) { proxy.$modal.loading('提交中....') @@ -404,13 +547,16 @@ const submitJob = () => { if (res.data) { // showCommitSuccessMessage(`提交成功
生成采购收货记录
${res.data}`) const isCheckPrint = getSwitchInfoByCode(switchCode.value) + let isCheckPrint1 = getSwitchInfoByCode(switchCode1.value)//是否显示采购收货检验指引单 if (!isCheckPrint) { uni.hideLoading() // showCommitSuccessMessage(`提交成功
生成采购收货记录
${res.data.number}`) uni.redirectTo({ - url: '/pages/pointPutawayJob/index?number='+that.jobContent.number + url: '/pages/pointPutawayJob/index?number='+jobContent.value.number }) - } else { + } else if(!isCheckPrint1 && !isCheckPrint){ + showCommitSuccessMessage("提交成功\n生成采购收货记录\n" + res.data.number) + }else { uni.showLoading({ title: '提交成功,将跳转到打印页面', mask: true @@ -438,6 +584,7 @@ const submitJob = () => { if (res1.data && res1.data.list && res1.data.list.length && res1.data.total >= res.data.detailCount) { uni.hideLoading() clearInterval(timer1) + uni.hideLoading() const dataParams = { toLocationCode: res1.data.list[0].toLocationCode, number: res1.data.list[0].number, @@ -447,10 +594,18 @@ const submitJob = () => { } console.log(dataParams) uni.hideLoading() - uni.redirectTo({ - uurl: '/pages/pointPutawayJob/index?number='+jobContent.value.number+'&data=' + - encodeURIComponent(JSON.stringify(dataParams)) - }) + if(!isCheckPrint1 && isCheckPrint){ + uni.redirectTo({ + url: '/pages/pointPutawayJob/index?data=' + + encodeURIComponent(JSON.stringify(dataParams)) + }) + }else if(isCheckPrint1 && isCheckPrint){ + uni.redirectTo({ + url: '/pages/pointPutawayJob/index?number=' + that.jobContent.number + + '&data=' + + encodeURIComponent(JSON.stringify(dataParams)) + }) + } } }) }, 2000) @@ -461,7 +616,11 @@ const submitJob = () => { }) .catch((error) => { uni.hideLoading() - showErrorMessage(error) + comMessageRef.value.showErrorMessage(error, res => { + if (res) { + navigateBack(1) + } + }); }) } else { uni.hideLoading() @@ -487,6 +646,8 @@ const setParams = () => { }) const info = getPackingNumberAndBatch(managementList.value, detail.itemCode, detail.packingNumber, detail.batch) detail.toPackingNumber = info.packingNumber + detail.packingNumber = info.packingNumber; + detail.formPackingNumber = info.packingNumber; detail.toBatch = info.batch subList.push(detail) }) @@ -546,6 +707,9 @@ const switchChange = (isOn) => { } const showMessage = (message) => { + if (scanPopup.value) { + scanPopup.value.losefocus(); + } setTimeout((r) => { scanPopupLoseFocus() comMessageRef.value.showMessage(message, (res) => { @@ -555,6 +719,9 @@ const showMessage = (message) => { } const showErrorMessage = (message) => { + if (scanPopup.value) { + scanPopup.value.losefocus(); + } setTimeout((r) => { scanPopupLoseFocus() comMessageRef.value.showErrorMessage(message, (res) => { diff --git a/src/pages/purchaseReceipt/job/receiptJob.vue b/src/pages/purchaseReceipt/job/receiptJob.vue index 66ac1efa..5a7bc820 100644 --- a/src/pages/purchaseReceipt/job/receiptJob.vue +++ b/src/pages/purchaseReceipt/job/receiptJob.vue @@ -273,6 +273,9 @@ const switchChangeWait = (state, jobStatus) => { getList('refresh') } const showMessage = (message) => { + if(scanPopup.value){ + scanPopup.value.packLoseFocus() + } comMessageRef.value.showErrorMessage(message, (res) => { if (res) { if (scanPopup.value) { @@ -315,6 +318,11 @@ const getScanResult = (result) => { column: 'status', action: 'in', value: '1,2' + }, + { + column: "accept_user_id", + action: "==", + value: store.id } ] } else { @@ -382,14 +390,14 @@ const getScanResult = (result) => { selectItem(list[0], result.scanMessage.indexOf('ASN') > -1) } } else { - showMessage('未查找到任务
' + `扫描[${result.scanMessage}]`) + showMessage('未查找到任务\n' + `扫描[${result.scanMessage}]`) } }) .catch((error) => { showMessage(error) }) } catch (e) { - showMessage(`${error}
扫描[${result.scanMessage}]`) + showMessage(`${error}\n扫描[${result.scanMessage}]`) } } defineExpose({