|
|
@ -15,11 +15,15 @@ |
|
|
|
<scroll-view scroll-y="true" class="page-main-scroll"> |
|
|
|
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id"> |
|
|
|
<view class=""> |
|
|
|
<comJobDetailCard :dataContent="item" :index="index" :settingParam="jobContent" |
|
|
|
:isShowStatus="true" @remove="updateData" @updateData="updateData" |
|
|
|
:locationAreaTypeList='toLocationAreaTypeList' |
|
|
|
:isShowPackListStatus="false" |
|
|
|
> |
|
|
|
<!-- 物料按照批次的组件 批次不显示包装 --> |
|
|
|
<comJobDetailCardBatch :dataContent="item" :index="index" :settingParam="jobContent" :isShowStatus="true" |
|
|
|
@remove="updateData" @updateData="updateData" :locationAreaTypeList='toLocationAreaTypeList' |
|
|
|
:isShowPackListStatus="false" v-if="managementType == 'BY_BATCH'"> |
|
|
|
</comJobDetailCardBatch> |
|
|
|
<!-- 物料按照包装的组件 --> |
|
|
|
<comJobDetailCard :dataContent="item" :index="index" :settingParam="jobContent" :isShowStatus="true" |
|
|
|
@remove="updateData" @updateData="updateData" :locationAreaTypeList='toLocationAreaTypeList' |
|
|
|
:isShowPackListStatus="false" v-else> |
|
|
|
</comJobDetailCard> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -27,8 +31,7 @@ |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="page-footer"> |
|
|
|
<view class="uni-flex u-col-center space-between padding_10" |
|
|
|
style="background-color:ghostwhite; width: 100%; "> |
|
|
|
<view class="uni-flex u-col-center space-between padding_10" style="background-color:ghostwhite; width: 100%; "> |
|
|
|
<view class=""> |
|
|
|
<locationCompare ref='comScanLocation' title="目标库位" :recommendLocationCode="jobToLocationCode" |
|
|
|
:locationCode="toLocationCode" @getLocation='scanLocationCode' :isShowEdit="isCheckLocation" |
|
|
@ -44,8 +47,8 @@ |
|
|
|
<!-- <winScanPackAndLocationNoBalance ref="scanPopup" @getResult='getScanResult' :allowNullBalance="true"> |
|
|
|
</winScanPackAndLocationNoBalance> --> |
|
|
|
|
|
|
|
<winScanPackAndLocation :balanceFromInventoryStatuses="false" ref="scanPopup" @getResult='getScanResult' |
|
|
|
:noShowBalanceMessage="false"> |
|
|
|
<winScanPackAndLocation :balanceFromInventoryStatuses="false" :toLocationCode="jobToLocationCode" ref="scanPopup" |
|
|
|
@getResult='getScanResult' :noShowBalanceMessage="false"> |
|
|
|
</winScanPackAndLocation> |
|
|
|
|
|
|
|
<comMessage ref="comMessage"></comMessage> |
|
|
@ -88,6 +91,7 @@ |
|
|
|
import winScanButton from '@/mycomponents/scan/winScanButton.vue' |
|
|
|
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue" |
|
|
|
import comJobDetailCard from "@/mycomponents/detail/comJobDetailCard.vue" |
|
|
|
import comJobDetailCardBatch from "@/mycomponents/detail/comJobDetailCardBatch.vue" |
|
|
|
import locationCompare from '@/mycomponents/location/locationCompare.vue' |
|
|
|
import jobTop from '@/mycomponents/job/jobTop.vue' |
|
|
|
|
|
|
@ -98,7 +102,8 @@ |
|
|
|
winScanPackAndLocation, |
|
|
|
locationCompare, |
|
|
|
comJobDetailCard, |
|
|
|
jobTop |
|
|
|
jobTop, |
|
|
|
comJobDetailCardBatch |
|
|
|
}, |
|
|
|
data() { |
|
|
|
return { |
|
|
@ -114,7 +119,8 @@ |
|
|
|
jobStatus: "", |
|
|
|
jobToLocationCode: "", |
|
|
|
isCheckLocation: false, |
|
|
|
scanMessage: "" |
|
|
|
scanMessage: "", |
|
|
|
managementType: '' //储存扫描后的管理精度 |
|
|
|
}; |
|
|
|
}, |
|
|
|
onLoad(option) { |
|
|
@ -210,6 +216,19 @@ |
|
|
|
} else { |
|
|
|
that.toLocationCode = that.jobToLocationCode; |
|
|
|
} |
|
|
|
//获取管理模式,封装参数 |
|
|
|
var itemCodes = [] |
|
|
|
this.detailSource.forEach(item => { |
|
|
|
itemCodes.push(item.itemCode) |
|
|
|
item.scaned = false |
|
|
|
}) |
|
|
|
getManagementPrecisions(itemCodes, that.jobToLocationCode, res => { |
|
|
|
if (res.success) { |
|
|
|
this.managementList = res.list; |
|
|
|
this.managementType = this.managementList.some(item => item.ManagementPrecision == |
|
|
|
'BY_BATCH') ? 'BY_BATCH' : '' |
|
|
|
} |
|
|
|
}) |
|
|
|
//外部进入详情,如果有扫描信息,模拟自动扫描 |
|
|
|
if (this.scanMessage) { |
|
|
|
this.openScanPopupSimulate(this.scanMessage) |
|
|
@ -256,7 +275,7 @@ |
|
|
|
updateData() { |
|
|
|
console.log("updateData") |
|
|
|
// this.calcHandleQty(); |
|
|
|
calcTreeHandleQty(this.detailSource) |
|
|
|
// calcTreeHandleQty(this.detailSource) |
|
|
|
}, |
|
|
|
//模拟扫描功能 |
|
|
|
openScanPopupSimulate(message) { |
|
|
@ -307,8 +326,9 @@ |
|
|
|
this.$refs.scanPopup.closeScanPopup(); |
|
|
|
}, |
|
|
|
|
|
|
|
getScanResult(result) { |
|
|
|
getScanResult(result, managementPrecision) { |
|
|
|
try { |
|
|
|
this.managementType = managementPrecision |
|
|
|
var packingNumber = result.label.packingNumber; |
|
|
|
var batch = result.label.batch; |
|
|
|
var qty = result.label.qty; |
|
|
@ -326,6 +346,11 @@ |
|
|
|
if (detail == undefined) { |
|
|
|
this.showErrorMessage("物料号【" + itemCode + "】不在列表中") |
|
|
|
} else { |
|
|
|
detail.scaned = true |
|
|
|
if (this.managementType == 'BY_BATCH') { |
|
|
|
this.verificationBatch(detail, packingNumber, batch, qty, itemCode, locationCode, result) |
|
|
|
} else { |
|
|
|
|
|
|
|
var itemDetail = detail.subList.find(r => { |
|
|
|
return r.packingNumber == packingNumber && |
|
|
|
r.batch == batch && |
|
|
@ -403,11 +428,98 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (this.managementType == 'BY_BATCH') { |
|
|
|
this.detailSource.forEach(item => { |
|
|
|
item.subList.forEach(detail => { |
|
|
|
detail.packingNumber = '' |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
} catch (e) { |
|
|
|
this.showMessage(e.message) |
|
|
|
} |
|
|
|
}, |
|
|
|
// 按批次的时候校验 代码和按包装的代码基本一致,只不过是校验提示不一致 |
|
|
|
verificationBatch(detail,packingNumber,batch,qty,itemCode,locationCode,result){ |
|
|
|
var itemDetail = detail.subList.find(r => { |
|
|
|
return r.batch == batch && |
|
|
|
r.fromLocationCode == result.fromLocationCode |
|
|
|
}) |
|
|
|
|
|
|
|
if (itemDetail == undefined) { |
|
|
|
var isExit; |
|
|
|
for (let subItem of detail.subList) { |
|
|
|
var item; |
|
|
|
for (let pack of subItem.packList) { |
|
|
|
if (pack.batch == batch) { |
|
|
|
item = pack; |
|
|
|
isExit = pack; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
if (item != undefined) { |
|
|
|
subItem.scaned = true |
|
|
|
subItem.handleQty = 0; |
|
|
|
item = undefined |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (isExit == undefined) { |
|
|
|
this.showErrorMessage("批次【" + batch + "】库位【" + result |
|
|
|
.fromLocationCode + "】不在列表中") |
|
|
|
} else { |
|
|
|
if (!isExit.cancleScanedHiht && isExit.scaned) { |
|
|
|
this.showMessage("批次【" + batch + "】已经扫描") |
|
|
|
} else { |
|
|
|
isExit.scaned = true |
|
|
|
let qty = 0; |
|
|
|
if (result.balance != null) { |
|
|
|
qty = Number(result.balance.qty); |
|
|
|
} else { |
|
|
|
qty = Number(result.label.qty); |
|
|
|
} |
|
|
|
|
|
|
|
isExit.handleQty = Number(result.label.qty); |
|
|
|
isExit.toLocationCode = this.toLocationCode; |
|
|
|
} |
|
|
|
} |
|
|
|
calcTreeHandleQty(this.detailSource); |
|
|
|
this.continueScan() |
|
|
|
this.$forceUpdate() |
|
|
|
} else { |
|
|
|
var scanedLength = 0; |
|
|
|
itemDetail.packList.forEach(res => { |
|
|
|
if (res.scaned) { |
|
|
|
scanedLength++; |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
//大哥让加的 |
|
|
|
itemDetail.fromInventoryStatus = result.balance.inventoryStatus; |
|
|
|
|
|
|
|
if (!itemDetail.cancleScanedHiht && itemDetail.scaned && scanedLength == itemDetail.packList |
|
|
|
.length) { |
|
|
|
// this.showMessage("箱码【" + packingNumber + "】已经扫描") |
|
|
|
this.showMessage("批次【" + batch + "】已经扫描") |
|
|
|
} else { |
|
|
|
itemDetail.scaned = true; |
|
|
|
this.detailSource[0].subList.sort(compareAsc('scaned')); //按扫描信息排序 |
|
|
|
itemDetail.handleQty = result.label.qty; |
|
|
|
// itemDetail.toInventoryStatus = "OK" |
|
|
|
itemDetail.packList.forEach(pac => { |
|
|
|
pac.scaned = true |
|
|
|
pac.handleQty = Number(pac.qty); |
|
|
|
pac.toLocationCode = this.toLocationCode; |
|
|
|
}) |
|
|
|
|
|
|
|
calcTreeHandleQty(this.detailSource); |
|
|
|
this.continueScan() |
|
|
|
this.$forceUpdate() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
scanLocationCode(location, code) { |
|
|
|
this.toLocationCode = code |
|
|
|
this.detailSource.forEach(item => { |
|
|
@ -518,6 +630,8 @@ |
|
|
|
var info = getPackingNumberAndBatch(this.managementList, detail.itemCode, |
|
|
|
detail.packingNumber, detail.batch); |
|
|
|
detail.toPackingNumber = info.packingNumber; |
|
|
|
detail.packingNumber = info.packingNumber; |
|
|
|
detail.fromPackingNumber = info.packingNumber; |
|
|
|
detail.toBatch = info.batch; |
|
|
|
detail.toContainerNumber = ''; |
|
|
|
|
|
|
|