diff --git a/src/pages/inventoryMove/job/holdToWipMoveJob.vue b/src/pages/inventoryMove/job/holdToWipMoveJob.vue new file mode 100644 index 00000000..7749f9a6 --- /dev/null +++ b/src/pages/inventoryMove/job/holdToWipMoveJob.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/src/pages/inventoryMove/job/inventoryMoveDetail.vue b/src/pages/inventoryMove/job/inventoryMoveDetail.vue index b26dc150..afe49776 100644 --- a/src/pages/inventoryMove/job/inventoryMoveDetail.vue +++ b/src/pages/inventoryMove/job/inventoryMoveDetail.vue @@ -12,7 +12,16 @@ - + + + + @@ -42,14 +51,16 @@ import { getManagementPrecisions, getPrecisionStrategyList } from '@/common/bala import { getDataSource, getScanCount, calcHandleQty } from '@/common/detail.js' import { goHome, navigateBack, getCurrDateTime, getPackingNumberAndBatchByList, getInventoryStatusName } from '@/common/basic.js' - +import {getDirectoryItemArray} from '@/common/directory.js'; import winScanButton from '@/mycomponents/scan/winScanButton.vue' import winScanPack from '@/mycomponents/scan/winScanPack.vue' import comInventoryDetailCard from '@/pages/inventoryMove/coms/comInventoryDetailCard.vue' +import comInventoryDetailCardBatch from '@/pages/inventoryMove/coms/comInventoryDetailCardBatch.vue' import winScanPackAndLocation from '@/mycomponents/scan/winScanPackAndLocation.vue' import detailInfoPopup from '@/pages/inventoryMove/coms/detailInfoPopup.vue' import jobTop from '@/mycomponents/job/jobTop.vue' import { useCountStore } from '@/store' +import {a} from "unocss-preset-weapp/dist/utilities-322cd311"; // 获取自定义的store const store = useCountStore() const { proxy } = getCurrentInstance() @@ -70,6 +81,8 @@ const scanPopup = ref() const detailInfoPopupRef = ref() const comMessageRef = ref() const comScanLocation = ref() +const managementType = ref() +const toLocationAreaTypeList = ref([]) onLoad((option) => { title.value = option.title id.value = option.id @@ -122,7 +135,11 @@ const initData = () => { name = '隔离转合格' toLocationCode.value = '' toInventoryStatus.value = 'OK' - } else if (businessTypeCode.value == 'HoldToScrap') { + } else if(this.businessTypeCode == "HoldToWip"){ + name = '隔离转线边' + toLocationCode.value = '' + toInventoryStatus.value = 'OK' + }else if (businessTypeCode.value == 'HoldToScrap') { name = '隔离转报废' toLocationCode.value = 'SCRAP' toInventoryStatus.value = 'SCRAP' @@ -166,15 +183,30 @@ const receive = (callback) => { const getDetail = () => { proxy.$modal.loading('加载中...') getInventoryMoveJobDetail(id.value) - .then((res) => { + .then(async (res) => { uni.hideLoading() if (res.data == null) { showMessage('未获取到详情') } else if (res.data.subList.length > 0) { jobContent.value = res.data + toLocationAreaTypeList.value = getDirectoryItemArray(jobContent.value.toAreaTypes); jobStatus.value = res.data.status subList.value = res.data.subList - detailSource.value = getDataSource(subList.value) + detailSource.value = await getDataSource(subList.value) + //获取管理模式,封装参数 + let itemCodes = [] + detailSource.value.forEach(item => { + itemCodes.push(item.itemCode) + item.scaned = false + }) + toLocationCode.value = subList.value[0].toLocationCode + getManagementPrecisions(itemCodes, toLocationCode.value, res => { + if (res.success) { + managementList.value = res.list; + managementType.value = managementList.value.some(item => item.ManagementPrecision == + 'BY_BATCH') ? 'BY_BATCH' : '' + } + }) } else { showMessage('列表数据为0') } @@ -226,7 +258,7 @@ const openScanPopup = () => { scanPopup.value.openScanPopupForJob(fromlocationCode, fromlocationList, jobContent.value) } -const getScanResult = (result) => { +const getScanResult = (result,managementPrecision) => { try { const { packingNumber } = result.label const { batch } = result.label @@ -236,13 +268,20 @@ const getScanResult = (result) => { if (detail == undefined) { showMessage(`物料号【${itemCode}】不在列表中`) } else { - const itemDetail = detail.subList.find((r) => { - return r.packingNumber == packingNumber && r.batch == batch - }) - if (itemDetail == undefined) { - showErrorMessage(`箱码[${packingNumber}]` + `批次[${batch}]不在列表中`) + let itemDetail = '' + if(managementPrecision == 'BY_QUANTITY'){ + itemDetail = detail.subList.find(r => { + return r.itemCode == result.label.itemCode + }) + }else{ + itemDetail = detail.subList.find(r => { + return r.batch == batch + }) + } + if (itemDetail == undefined && managementPrecision != 'BY_QUANTITY') { + showErrorMessage(`批次[${batch}]不在列表中`) } else if (itemDetail.scaned) { - showMessage(`箱码【${packingNumber}】已经扫描`) + showMessage(`批次【${batch}】已经扫描`) } else { const balanceStatus = getInventoryStatusName(result.balance.inventoryStatus) const itemStatus = getInventoryStatusName(itemDetail.inventoryStatus) @@ -292,18 +331,43 @@ const commit = () => { showErrorMessage('扫描数为0,请先扫描') return } - + //允许部分提交 + //扫描数量和任务数量相等,直接提交 + if (scanCount.value == subList.value.length) { + checkCount(); + } else if (scanCount.value < subList.value.length) { + //扫描数量小于任务数量,判断是否允许部分提交 + if (jobContent.value.allowPartialComplete == "TRUE") { + //提交 + checkCount(); + } else { + //不允许部分提交,提示 + comMessageRef.value.showErrorMessage("任务明细未全部完成,不允许部分提交!", res => { + if (res) { + this.openScanPopup(); + } + }); + } + } +} +const checkCount = ()=>{ // 提交的数量和任务数量不一致提示 let str = '' detailSource.value.forEach((item) => { item.subList.forEach(cur => { if (cur.qty != cur.handleQty) { - str += `包装号【${cur.packingNumber}】提交数量【${cur.handleQty}】与任务物料数量【${cur.qty}】不一致` + let tempHandleQty + if (cur.handleQty) { + tempHandleQty = cur.handleQty + } else { + tempHandleQty = 0 + } + str += `包装号【${cur.packingNumber}】提交数量【${tempHandleQty}】与任务物料数量【${cur.qty}】不一致\n` } }) }) if (str) { - str += ',是否确认提交?' + str = '任务明细未全部完成,是否提交?\n' + str comMessageRef.value.showQuestionMessage1(str, 'red', res => { if (res) { submitJob() @@ -313,7 +377,6 @@ const commit = () => { submitJob() } } - const submitJob = () => { proxy.$modal.loading('提交中...') @@ -329,7 +392,11 @@ const submitJob = () => { .then((res) => { uni.hideLoading() if (res.data) { - showCommitSuccessMessage(`提交成功
生成库存转移记录
${res.data}`) + let showTitle = this.title + if (title.value.indexOf('任务') == title.value.length - 2) { + showTitle = this.title.replace('任务', '') + } + showCommitSuccessMessage(`提交成功\n生成${showTitle}库存转移记录\n${res.data}`) } else { showErrorMessage(`提交失败[${res.msg}]`) } @@ -378,6 +445,8 @@ const setParams = () => { if (detail.scaned) { const info = getPackingNumberAndBatchByList(managementList.value, detail.itemCode, detail.packingNumber, detail.toLocationCode, detail.batch) detail.toPackingNumber = info.packingNumber + detail.packingNumber = info.packingNumber; + detail.fromPackingNumber = info.packingNumber; detail.toBatch = info.batch detail.toContainerNumber = '' // detail.toLocationCode = this.toLocationCode; diff --git a/src/pages/inventoryMove/job/okToHoldMoveJob.vue b/src/pages/inventoryMove/job/okToHoldMoveJob.vue index 6f1d425f..e04fd921 100644 --- a/src/pages/inventoryMove/job/okToHoldMoveJob.vue +++ b/src/pages/inventoryMove/job/okToHoldMoveJob.vue @@ -1,6 +1,6 @@