From b4c932958716b19600933fc27baa9cbf42cf9814 Mon Sep 17 00:00:00 2001
From: zhang_li
Date: Mon, 12 May 2025 10:01:19 +0800
Subject: [PATCH] =?UTF-8?q?asn=E6=94=B6=E8=B4=A7=E9=80=BB=E8=BE=91?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../job/purchaseReceiptAsn.vue | 331 +++++++++++-------
1 file changed, 201 insertions(+), 130 deletions(-)
diff --git a/src/pages/purchaseReceipt/job/purchaseReceiptAsn.vue b/src/pages/purchaseReceipt/job/purchaseReceiptAsn.vue
index 86153c12..bafcbc97 100644
--- a/src/pages/purchaseReceipt/job/purchaseReceiptAsn.vue
+++ b/src/pages/purchaseReceipt/job/purchaseReceiptAsn.vue
@@ -69,7 +69,8 @@
jobList: [],
detailOptions: [],
detailRemoveOption: [],
- ishsowLoading:false
+ ishsowLoading:false,
+ asnNumberList:[]
};
},
onShow() {},
@@ -128,160 +129,230 @@
});
const asnNumber = result.label.asn || result.label.code
const isAsn = result.label.code ? true : false
-
- try {
- if (!asnNumber) {
- this.showMessage("标签格式异常,请重新补打标签")
- uni.hideLoading();
- return;
- }
- this.scanMessage = ""
- let filters = []
- // ASN单号
- filters = [{
- column: "asn_number",
- action: "==",
- value: asnNumber
- }, {
- column: "status",
- action: "in",
- value: '1,2',
- }
- // , {
- // column: "accept_user_id",
- // action: "==",
- // value: this.$store.state.user.id
- // },
- ]
- getPurchaseReceiptASNJobList({
- filters: filters,
- pageNo: 1,
- pageSize: 100,
- }).then(async res => {
- this.scanMessage = result.scanMessage
- let resultList = res.data.list;
+ if (!asnNumber) {
+ this.showMessage("标签格式异常,请重新补打标签")
+ uni.hideLoading();
+ return;
+ }
+ // 如果扫描箱标签
+ if (!isAsn) {
+ //asn已经被扫描过,不需要重新获取任务接口
+ if(this.asnNumberList.includes(asnNumber)){
uni.hideLoading()
- if (resultList.length > 0) {
- // 判断目前是否有已扫描的asn单号
- const asnObj = this.jobList.find(item => item.asnNumber == asnNumber)
- if (resultList[0].acceptUserId && resultList[0].acceptUserId != this.$store.state.user.id) {
- this.showMessage(`ASN单号【${asnNumber}】已经被${resultList[0].acceptUserName}承接`)
+ result.label.lookNumber = result.package.number.substring(result.package.number
+ .length - 5);
+ // 扫描的箱标签asn单号已经在列表中
+ const itemObj = this.jobList.find(item => item.asnNumber == asnNumber && item.itemCode == result
+ .label.itemCode)
+ if (!itemObj) {
+ this.showMessage(`ASN单号【${asnNumber}】物料代码【${result.label.itemCode}】不在列表中 `)
return
}
- // 如果扫描箱标签
- if (!isAsn) {
- result.label.lookNumber = result.package.number.substring(result.package.number
- .length - 5);
-
- // 扫描的箱标签asn单号不在列表中给个提示
- if (!asnObj) {
- this.$refs.comMessage.showQuestionMessage(`ASN单号【${asnNumber}】不在列表中,是否要按此ASN收货?`, async res => {
- if (res) {
- // 承接任务 // 如果任务状态是待处理的情况需要承接
- if (resultList[0].status == '1') {
- await this.handleTakePurchaseReceiptJob(resultList[0].masterId, () => {
- resultList.forEach(item => {
- item.status = '2'
- item.acceptUserId = 4
- })
- })
- } else if (resultList[0].status == '2') {
- // 如果任务状态是进行中的时候需要判断承接人和登录人是否一致
- if (resultList[0].acceptUserId != this.$store.state.user.id) {
- this.showMessage(`ASN单号【${asnNumber}】已经被${resultList[0].acceptUserName}承接`)
- return
+ const packObj = itemObj.packageDOS.find(cur => cur.number == result.label.packingNumber)
+ if (!packObj) {
+ this.showMessage(
+ `ASN单号【${asnNumber}】物料代码【${result.label.itemCode}】不存在看板编号【${ result.label.lookNumber}】`)
+ return
+ }
+ if (packObj.requestNumber) {
+ this.showMessage(`看板编号【${ result.label.lookNumber}】已经收货`)
+ returns
+ }
+ if (packObj.scaned) {
+ this.showMessage(`看板编号【${ result.label.lookNumber}】已扫描`)
+ return
+ }
+ itemObj.scaned = true
+ packObj.scaned = true
+ packObj.handleQty = result.label.qty
+ this.calcHandleQty(this.jobList);
+ this.scanPopupGetFocus()
+ // 改asn单号没有被扫描过
+ }else{
+ try {
+ this.scanMessage = ""
+ let filters = []
+ // ASN单号
+ filters = [{
+ column: "asn_number",
+ action: "==",
+ value: asnNumber
+ }, {
+ column: "status",
+ action: "in",
+ value: '1,2',
+ }
+ ]
+ getPurchaseReceiptASNJobList({
+ filters: filters,
+ pageNo: 1,
+ pageSize: 100,
+ }).then(async res => {
+ this.asnNumberList.push(asnNumber)
+ this.scanMessage = result.scanMessage
+ let resultList = res.data.list;
+ uni.hideLoading()
+ if (resultList.length > 0) {
+ // 判断目前是否有已扫描的asn单号
+ const asnObj = this.jobList.find(item => item.asnNumber == asnNumber)
+ if (resultList[0].acceptUserId && resultList[0].acceptUserId != this.$store.state.user.id) {
+ this.showMessage(`ASN单号【${asnNumber}】已经被${resultList[0].acceptUserName}承接`)
+ return
+ }
+ result.label.lookNumber = result.package.number.substring(result.package.number
+ .length - 5);
+ // 扫描的箱标签asn单号不在列表中给个提示
+ if (!asnObj) {
+ this.$refs.comMessage.showQuestionMessage(`ASN单号【${asnNumber}】不在列表中,是否要按此ASN收货?`, async res => {
+ if (res) {
+ // 承接任务 // 如果任务状态是待处理的情况需要承接
+ if (resultList[0].status == '1') {
+ await this.handleTakePurchaseReceiptJob(resultList[0].masterId, () => {
+ resultList.forEach(item => {
+ item.status = '2'
+ item.acceptUserId = 4
+ })
+ })
+ } else if (resultList[0].status == '2') {
+ // 如果任务状态是进行中的时候需要判断承接人和登录人是否一致
+ if (resultList[0].acceptUserId != this.$store.state.user.id) {
+ this.showMessage(`ASN单号【${asnNumber}】已经被${resultList[0].acceptUserName}承接`)
+ return
+ }
+ }
+ this.jobList = [...this.jobList, ...resultList]
+ const itemObj = this.jobList.find(item => item.asnNumber == asnNumber && item
+ .itemCode == result.label.itemCode)
+ const packObj = itemObj.packageDOS.find(cur => cur.number == result.label
+ .packingNumber)
+ if (packObj.requestNumber) {
+ this.showMessage(`看板编号【${ result.label.lookNumber}】已经收货`)
+ return
+ }
+ if (packObj.scaned) {
+ this.showMessage(`看板编号【${ result.label.lookNumber}】已经扫描`)
+ return
+ }
+ itemObj.scaned = true
+ packObj.scaned = true
+ packObj.handleQty = result.label.qty
+ packObj.packingNumber = result.package.number
+ packObj.packQty = Number(result.package.packQty);
+ packObj.packUnit = result.package.packUnit
+ packObj.labelQty = Number(result.label.qty);
+ packObj.convertRate = result.label.convertRate
+ packObj.supplierQty = parseFloat(calc.div(parseFloat(packObj.handleQty), parseFloat(packObj.convertRate)).toFixed(5))
+ packObj.supplierUom = result.label.purchaseUom
+ this.calcHandleQty(this.jobList);
+ this.scanPopupGetFocus()
+ }else{
+ this.scanPopupGetFocus()
}
+ });
+ } else {
+ // 扫描的箱标签asn单号已经在列表中
+ const itemObj = this.jobList.find(item => item.asnNumber == asnNumber && item.itemCode == result
+ .label.itemCode)
+ if (!itemObj) {
+ this.showMessage(`ASN单号【${asnNumber}】物料代码【${result.label.itemCode}】不在列表中 `)
+ return
+ }
+ const packObj = itemObj.packageDOS.find(cur => cur.number == result.label.packingNumber)
+ if (!packObj) {
+ this.showMessage(
+ `ASN单号【${asnNumber}】物料代码【${result.label.itemCode}】不存在看板编号【${ result.label.lookNumber}】`)
+ return
}
- this.jobList = [...this.jobList, ...resultList]
- const itemObj = this.jobList.find(item => item.asnNumber == asnNumber && item
- .itemCode == result.label.itemCode)
- const packObj = itemObj.packageDOS.find(cur => cur.number == result.label
- .packingNumber)
if (packObj.requestNumber) {
this.showMessage(`看板编号【${ result.label.lookNumber}】已经收货`)
return
}
if (packObj.scaned) {
- this.showMessage(`看板编号【${ result.label.lookNumber}】已经扫描`)
+ this.showMessage(`看板编号【${ result.label.lookNumber}】已扫描`)
return
}
itemObj.scaned = true
packObj.scaned = true
packObj.handleQty = result.label.qty
- packObj.packingNumber = result.package.number
- packObj.packQty = Number(result.package.packQty);
- packObj.packUnit = result.package.packUnit
- packObj.labelQty = Number(result.label.qty);
- packObj.convertRate = result.label.convertRate
- packObj.supplierQty = parseFloat(calc.div(parseFloat(packObj.handleQty), parseFloat(packObj.convertRate)).toFixed(5))
- packObj.supplierUom = result.label.purchaseUom
this.calcHandleQty(this.jobList);
- this.scanPopupGetFocus()
- }else{
- this.scanPopupGetFocus()
+ this.scanPopupGetFocus()
}
- });
} else {
- // 扫描的箱标签asn单号已经在列表中
- const itemObj = this.jobList.find(item => item.asnNumber == asnNumber && item.itemCode == result
- .label.itemCode)
- if (!itemObj) {
- this.showMessage(`ASN单号【${asnNumber}】物料代码【${result.label.itemCode}】不在列表中 `)
- return
- }
- const packObj = itemObj.packageDOS.find(cur => cur.number == result.label.packingNumber)
- if (!packObj) {
- this.showMessage(
- `ASN单号【${asnNumber}】物料代码【${result.label.itemCode}】不存在看板编号【${ result.label.lookNumber}】`)
- return
- }
- if (packObj.requestNumber) {
- this.showMessage(`看板编号【${ result.label.lookNumber}】已经收货`)
- return
- }
- if (packObj.scaned) {
- this.showMessage(`看板编号【${ result.label.lookNumber}】已扫描`)
- return
- }
- itemObj.scaned = true
- packObj.scaned = true
- packObj.handleQty = result.label.qty
- this.calcHandleQty(this.jobList);
- this.scanPopupGetFocus()
- }
-
- } else {
- if (asnObj) {
- this.showMessage(`ASN单号【${asnNumber}】已经扫描`)
- return;
+ this.showMessage("未查询到此ASN关联的采购收货任务")
}
- // 承接任务 // 如果任务状态是待处理的情况需要承接
- if (resultList[0].status == '1') {
- await this.handleTakePurchaseReceiptJob(resultList[0].masterId, () => {
- resultList.forEach(item => {
- item.status = '2'
- item.acceptUserId = this.$store.state.user.id
- })
- })
- } else if (resultList[0].status == '2') {
- // 如果任务状态是进行中的时候需要判断承接人和登录人是否一致
- if (resultList[0].acceptUserId != this.$store.state.user.id) {
+ }).catch(error => {
+ this.showMessage(error + "\n扫描[" + result.scanMessage + "]")
+ })
+ } catch (e) {
+ this.showMessage(e.message)
+ }
+ };
+ }else{
+ //asn已经被扫描过,不需要重新获取任务接口
+ if(this.asnNumberList.includes(asnNumber)){
+ this.showMessage(`ASN单号【${asnNumber}】已经扫描`)
+ uni.hideLoading()
+ return;
+ }else{
+ try {
+ this.scanMessage = ""
+ let filters = []
+ // ASN单号
+ filters = [{
+ column: "asn_number",
+ action: "==",
+ value: asnNumber
+ }, {
+ column: "status",
+ action: "in",
+ value: '1,2',
+ }
+ ]
+ getPurchaseReceiptASNJobList({
+ filters: filters,
+ pageNo: 1,
+ pageSize: 100,
+ }).then(async res => {
+ this.asnNumberList.push(asnNumber)
+ this.scanMessage = result.scanMessage
+ let resultList = res.data.list;
+ uni.hideLoading()
+ if (resultList.length > 0) {
+ // 判断目前是否有已扫描的asn单号
+ const asnObj = this.jobList.find(item => item.asnNumber == asnNumber)
+ if (resultList[0].acceptUserId && resultList[0].acceptUserId != this.$store.state.user.id) {
this.showMessage(`ASN单号【${asnNumber}】已经被${resultList[0].acceptUserName}承接`)
return
}
+ // 承接任务 // 如果任务状态是待处理的情况需要承接
+ if (resultList[0].status == '1') {
+ await this.handleTakePurchaseReceiptJob(resultList[0].masterId, () => {
+ resultList.forEach(item => {
+ item.status = '2'
+ item.acceptUserId = this.$store.state.user.id
+ })
+ })
+ } else if (resultList[0].status == '2') {
+ // 如果任务状态是进行中的时候需要判断承接人和登录人是否一致
+ if (resultList[0].acceptUserId != this.$store.state.user.id) {
+ this.showMessage(`ASN单号【${asnNumber}】已经被${resultList[0].acceptUserName}承接`)
+ return
+ }
+ }
+ this.jobList = [...this.jobList, ...resultList]
+ this.scanPopupGetFocus()
+ } else {
+ this.showMessage("未查询到此ASN关联的采购收货任务")
}
- this.jobList = [...this.jobList, ...resultList]
- this.scanPopupGetFocus()
- }
- } else {
- this.showMessage("未查询到此ASN关联的采购收货任务")
+ }).catch(error => {
+ this.showMessage(error + "\n扫描[" + result.scanMessage + "]")
+ })
+ } catch (e) {
+ this.showMessage(e.message)
}
- }).catch(error => {
- this.showMessage(error + "\n扫描[" + result.scanMessage + "]")
- })
- } catch (e) {
- this.showMessage(e.message)
+ }
}
+
},
calcHandleQty(detailSource) {
for (let item of detailSource) {