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 @@
+
+
+
+
+
+ swipeClick(event,dataContent)"
+ options="dataContent.handleQty>0? removeOptions:options"
+ :class="dataContent.scaned?'scan_view':''">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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({