diff --git a/src/pages/productRecycle/coms/comRecycleJobCard.vue b/src/pages/productRecycle/coms/comRecycleJobCard.vue
index 109c7daa..c0fb7f77 100644
--- a/src/pages/productRecycle/coms/comRecycleJobCard.vue
+++ b/src/pages/productRecycle/coms/comRecycleJobCard.vue
@@ -1,6 +1,6 @@
-
+
@@ -12,7 +12,11 @@ const props = defineProps({
dataContent: {
type: Object,
default: {}
- }
+ },
+ isShowToLocation: {
+ type: Boolean,
+ default: true
+ },
})
diff --git a/src/pages/productRecycle/job/productRecycleJob.vue b/src/pages/productRecycle/job/productRecycleJob.vue
index fd81005d..c40bb3b2 100644
--- a/src/pages/productRecycle/job/productRecycleJob.vue
+++ b/src/pages/productRecycle/job/productRecycleJob.vue
@@ -4,7 +4,7 @@
-
+
@@ -128,6 +128,9 @@ const getList = (type) => {
if (type === 'refresh') {
uni.stopPullDownRefresh()
}
+ res.data.list.forEach(item=>{
+ item.fromLocationCode = item.toLocationCode
+ })
const { list } = res.data
totalCount.value = res.data.total
updateTitle(`${title.value}(${totalCount.value})`)
diff --git a/src/pages/productRecycle/job/productRecycleJobDetail.vue b/src/pages/productRecycle/job/productRecycleJobDetail.vue
index 682a8afc..a3232c58 100644
--- a/src/pages/productRecycle/job/productRecycleJobDetail.vue
+++ b/src/pages/productRecycle/job/productRecycleJobDetail.vue
@@ -46,7 +46,9 @@ import { getProductRecycleDetail, productRecycleJobsubmit, cancleTakeProductRecy
import { goHome, getCurrDateTime, getPackingNumberAndBatch, navigateBack } from '@/common/basic.js'
import { getInventoryStatusName } from '@/common/directory.js'
-
+import {
+ calc
+} from '@/common/calc'
import { getDataSource, createRecordInfo, calcHandleQty, getScanCount } from '@/common/detail.js'
import { getManagementPrecisions } from '@/common/balance.js'
@@ -76,6 +78,7 @@ const comMessageRef = ref()
const jobDetailPopup = ref()
const fromLocationCode = ref()
const toLocationAreaTypeList = ref([])
+const labelInfo = ref({})
onLoad((option) => {
uni.setNavigationBarTitle({
title: `${option.title}详情`
@@ -162,8 +165,9 @@ const getDetail = () => {
getManagementPrecisions(itemCodes, fromLocationCode.value, res => {
if (res.success) {
managementList.value = res.list;
- managementType.value = managementList.value.some(item => item.ManagementPrecision ==
- 'BY_BATCH') ? 'BY_BATCH' : ''
+ managementType.value = managementList.value &&
+ managementList.value[0] &&
+ managementList.value[0].ManagementPrecision?managementList.value[0].ManagementPrecision:'BY_PACKAGING'
}
})
} else {
@@ -202,8 +206,16 @@ const calcScanCount = (closeScan) => {
const updateData = () => {
calcHandleQty1()
}
-
-const getScanResult = (result) => {
+const getScanResult = (result)=> {
+ console.log(result.label)
+ labelInfo.value = result.label
+ if(managementType.value == 'BY_BATCH' ||managementType.value == "BY_QUANTITY" ){
+ getScanResultAfterBatch(result)
+ }else{
+ getScanResultAfter(result)
+ }
+}
+const getScanResultAfter = (result) => {
try {
const { packingNumber } = result.label
const { batch } = result.label
@@ -275,6 +287,105 @@ const getScanResult = (result) => {
showErrorMessage(e.message)
}
}
+const getScanResultAfterBatch = (result)=> {
+ try {
+ const packingNumber = result.label.packingNumber;
+ const batch = result.label.batch;
+ const qty = result.label.qty;
+ const itemCode = result.label.itemCode;
+ let itemDetail = undefined;
+ const detail = detailSource.value.find(r => r.itemCode == itemCode);
+ if (detail == undefined) {
+ showMessage("物料号【" + itemCode + "】不在列表中")
+ } else {
+ detail.scaned = true
+ let balanceStatus = getInventoryStatusName(result.balance.inventoryStatus);
+ //箱码、批次、库位、状态 都相等
+ itemDetail = detail.subList.find(r => {
+ return r.batch == batch &&
+ r.fromLocationCode == result.fromLocationCode &&
+ r.inventoryStatus == result.balance.inventoryStatus
+ })
+ if (itemDetail) {
+ // 箱码、批次、库位、状态一致
+ if (itemDetail.scaned) {
+ // this.showErrorMessage("\n批次【" + batch + "】\n库位【" + result
+ // .fromLocationCode + "】\n状态【" + balanceStatus + "】\n已经扫描")
+ itemDetail.handleQty = calc.add(itemDetail.handleQty,Number(result.label.qty));
+ itemDetail.balanceQty = Number(result.label.qty);
+ } else {
+ itemDetail.scaned = true;
+ itemDetail.handleQty = Number(result.label.qty);
+ itemDetail.balanceQty = Number(result.label.qty);
+ itemDetail.toInventoryStatus = result.balance.inventoryStatus;
+ itemDetail.inventoryStatus = result.balance.inventoryStatus;
+ itemDetail.balance = result.balance;
+ itemDetail.balance.balanceQty = Number(result.balance.qty);
+ itemDetail.balance.packQty = Number(result.package.packQty)
+ itemDetail.balance.packUnit = result.package.packUnit
+ }
+ calcHandleQty();
+ } else {
+ //箱码、批次、库位相等
+ itemDetail = detail.subList.find(r => {
+ return r.batch == batch &&
+ r.fromLocationCode == result.fromLocationCode
+ })
+
+ if (itemDetail) {
+ let itemStatus = getInventoryStatusName(itemDetail.inventoryStatus);
+ //箱码、批次、库位相等,状态不相等
+ if(balanceStatus!=itemStatus){
+ if (jobContent.value.allowModifyInventoryStatus == "TRUE") {
+ showQuestionMessage('实际库存状态[' + balanceStatus + ']与推荐库存状态[' + itemStatus +
+ ']不一致,是否继续回收?', res => {
+ if (res) {
+ itemDetail.scaned = true;
+ itemDetail.handleQty = itemDetail.handleQty ? calc.add(itemDetail.handleQty,Number(result.label.qty)) : Number(result.label.qty);
+ itemDetail.toInventoryStatus = result.balance.inventoryStatus;
+ itemDetail.inventoryStatus = result.balance.inventoryStatus;
+ itemDetail.balance = result.balance;
+ itemDetail.balance.balanceQty = result.balance.qty;
+ itemDetail.balance.packQty = result.package.packQty
+ itemDetail.balance.packUnit = result.package.packUnit
+ calcHandleQty();
+ } else {
+ scanPopupGetFocus();
+ }
+ });
+ } else {
+ showQuestionMessage('任务中不允许修改库存状态,实际库存状态[' + balanceStatus + ']与推荐库存状态[' +
+ itemStatus +
+ ']不一致,不允许回收!', res => {
+ scanPopupGetFocus();
+ });
+ }
+ //箱码、批次、库位相等,状态相等
+ }else{
+ itemDetail.scaned = true;
+ itemDetail.handleQty = itemDetail.handleQty ? calc.add(itemDetail.handleQty,Number(result.label.qty)) : Number(result.label.qty);
+ itemDetail.toInventoryStatus = result.balance.inventoryStatus;
+ itemDetail.inventoryStatus = result.balance.inventoryStatus;
+ itemDetail.balance = result.balance;
+ itemDetail.balance.balanceQty = result.balance.qty;
+ itemDetail.balance.packQty = result.package.packQty
+ itemDetail.balance.packUnit = result.package.packUnit
+ calcHandleQty();
+ }
+
+ } else {
+ showErrorMessage("\n批次【" + batch + "】\n库位【" + result
+ .fromLocationCode + "】\n状态【" + balanceStatus + "】\n不在任务列表中")
+ }
+
+ }
+
+ }
+ scanPopupGetFocus();
+ } catch (e) {
+ showErrorMessage(e.message);
+ }
+}
const commit = () => {
scanCount.value = getScanCount(subList.value)
if (scanCount.value == 0) {
@@ -284,12 +395,20 @@ const commit = () => {
// //允许部分提交
// //扫描数量和任务数量相等,直接提交
if (scanCount.value == subList.value.length) {
- checkCount();
+ if(managementType.value == 'BY_BATCH' ||managementType.value == "BY_QUANTITY" ){
+ checkCountBatch()
+ }else{
+ checkCount();
+ }
} else if (scanCount.value < subList.value.length) {
//扫描数量小于任务数量,判断是否允许部分提交
if (jobContent.value.allowPartialComplete == "TRUE") {
//提交
- checkCount();
+ if(managementType.value == 'BY_BATCH' ||managementType.value == "BY_QUANTITY" ){
+ checkCountBatch()
+ }else{
+ checkCount();
+ }
} else {
//不允许部分提交,提示
comMessageRef.value.showErrorMessage("任务明细未全部完成,不允许部分提交!", res => {
@@ -327,6 +446,41 @@ const checkCount = ()=>{
submitJob()
}
}
+const checkCountBatch = ()=> {
+ // 提交的数量和任务数量不一致提示
+ let str = ''
+ let str1 = ''
+ detailSource.value.forEach((item) => {
+ item.subList.forEach(cur => {
+ if (cur.qty != cur.handleQty) {
+ let tempHandleQty = 0
+ if(cur.handleQty){
+ tempHandleQty=cur.handleQty
+ }else {
+ tempHandleQty =0
+ }
+ str += `物料号【${item.itemCode}】提交数量【${tempHandleQty}】与任务物料数量【${cur.qty}】不一致`
+ }
+ if(cur.handleQty > cur.balance.qty){
+ str1 += `物料号【${item.itemCode}】提交数量【${cur.handleQty}】不可以大于库存数量【${cur.balance.qty}】`
+ }
+ })
+ })
+ if (str1) {
+ comMessageRef.value.showMessage(str1);
+ return
+ }
+ if (str) {
+ str = '任务明细未全部完成,是否提交?\n'+ str
+ comMessageRef.value.showQuestionMessage1(str, 'red', res => {
+ if (res) {
+ this.submitJob()
+ }
+ });
+ } else {
+ submitJob()
+ }
+}
const submitJob = () => {
proxy.$modal.loading('提交中...')
let itemCodes = []
@@ -368,7 +522,7 @@ const setParams = () => {
let info = getPackingNumberAndBatch(this.managementList, detail.itemCode, detail.packingNumber, detail.batch);
detail.toPackingNumber = info.packingNumber;
detail.packingNumber = info.packingNumber;
- detail.fromPackingNumber = info.packingNumber;
+ detail.fromPackingNumber = labelInfo.value.packingNumber;
subList.push(detail)
}
})