|
|
@ -9,7 +9,7 @@ |
|
|
|
<view class="cell_box uni-flex uni-row"> |
|
|
|
<view class="cell_info"> |
|
|
|
<view class="text_lightblue">发货类型</view> |
|
|
|
<view style="line-height: 34rpx;">{{jobContent.deliverType}}</view> |
|
|
|
<view>{{jobContent.deliverType}}</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="cell_info"> |
|
|
@ -19,7 +19,7 @@ |
|
|
|
|
|
|
|
<view class="cell_info"> |
|
|
|
<view class="text_lightblue">目标库位</view> |
|
|
|
<view >{{toLocationCode}}</view> |
|
|
|
<view>{{toLocationCode}}</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -28,19 +28,20 @@ |
|
|
|
|
|
|
|
<view class="page-main"> |
|
|
|
<scroll-view scroll-y="true" class="page-main-scroll"> |
|
|
|
<view> |
|
|
|
|
|
|
|
</view> |
|
|
|
<view v-for="(toLocation, index) in detailSource"> |
|
|
|
<comDeliverDetailCardBatch ref='comIssueDetailCard' |
|
|
|
:dataContent="toLocation" |
|
|
|
:settingParam="jobContent" |
|
|
|
@updateData='updateData'> |
|
|
|
</comDeliverDetailCardBatch> |
|
|
|
<comDeliverDetailCardBatch ref='comIssueDetailCardBatch' :dataContent="toLocation" :settingParam="jobContent" |
|
|
|
@updateData='updateData' :allowBiggerQty='allowBiggerQty'> |
|
|
|
</comDeliverDetailCardBatch> |
|
|
|
<view class="split_line"></view> |
|
|
|
</view> |
|
|
|
</scroll-view> |
|
|
|
</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=""> |
|
|
|
</view> |
|
|
|
<view class=" uni-flex uni-row"> |
|
|
@ -48,9 +49,14 @@ |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<win-scan-button @goScan='openScanDetailPopup'></win-scan-button> |
|
|
|
<comScanDeliverPackBatch ref="comScanIssuePack" @closeScan='closeScan' @updateData='updateData' :locationCode='fromLocationCode'> |
|
|
|
</comScanDeliverPackBatch> |
|
|
|
|
|
|
|
<win-scan-button @goScan='openScanPopup'></win-scan-button> |
|
|
|
<!-- <comScanDeliverPackBatch ref="comScanIssuePack" @closeScan='closeScan' @updateData='updateData'> |
|
|
|
</comScanDeliverPackBatch> --> |
|
|
|
|
|
|
|
<winScanPackAndLocation :balanceFromInventoryStatuses="false" :toLocationCode="jobToLocationCode" ref="scanPopup" |
|
|
|
@getResult='getScanResult' :noShowBalanceMessage="false" @confirm='confirmFromLocation'> |
|
|
|
</winScanPackAndLocation> |
|
|
|
<comMessage ref="comMessage"></comMessage> |
|
|
|
</view> |
|
|
|
</template> |
|
|
@ -74,13 +80,19 @@ |
|
|
|
getRemoveOption, |
|
|
|
getCurrDateTime, |
|
|
|
getPackingNumberAndBatch, |
|
|
|
deepCopyData |
|
|
|
deepCopyData, |
|
|
|
compareAsc, |
|
|
|
} from '@/common/basic.js'; |
|
|
|
|
|
|
|
import { |
|
|
|
getDataSource |
|
|
|
} from '@/pages/issue/js/issue.js'; |
|
|
|
|
|
|
|
import { |
|
|
|
getTreeDataSource, |
|
|
|
calcTreeHandleQty, |
|
|
|
getScanCount, |
|
|
|
getThreeDataSource, |
|
|
|
getDataSource, |
|
|
|
calcHandleQty, |
|
|
|
} from '@/common/detail.js'; |
|
|
|
import { |
|
|
|
getManagementPrecisions |
|
|
|
} from '@/common/balance.js'; |
|
|
@ -88,10 +100,10 @@ |
|
|
|
|
|
|
|
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue' |
|
|
|
import winScanButton from '@/mycomponents/scan/winScanButton.vue' |
|
|
|
import comDeliverDetailCard from '@/pages/deliver/coms/comDeliverDetailCard.vue' |
|
|
|
import comDeliverDetailCardBatch from '@/pages/deliver/coms/comDeliverDetailCardBatch.vue' |
|
|
|
import comScanDeliverPackBatch from '@/pages/deliver/coms/comScanDeliverPackBatch.vue' |
|
|
|
import jobTop from '@/mycomponents/job/jobTop.vue' |
|
|
|
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue" |
|
|
|
|
|
|
|
export default { |
|
|
|
name: 'issueDetail', |
|
|
@ -99,8 +111,9 @@ |
|
|
|
jobDetailPopup, |
|
|
|
winScanButton, |
|
|
|
comDeliverDetailCardBatch, |
|
|
|
comScanDeliverPackBatch, |
|
|
|
jobTop, |
|
|
|
comScanDeliverPackBatch |
|
|
|
winScanPackAndLocation |
|
|
|
}, |
|
|
|
data() { |
|
|
|
return { |
|
|
@ -113,7 +126,7 @@ |
|
|
|
status: "", |
|
|
|
toLocationCode: "", |
|
|
|
jobStatus: "", |
|
|
|
fromLocationCode:'' |
|
|
|
allowBiggerQty:"TRUE",//开启数量校验提示 |
|
|
|
}; |
|
|
|
}, |
|
|
|
|
|
|
@ -184,13 +197,16 @@ |
|
|
|
}); |
|
|
|
getDeliverDetail(that.id).then(res => { |
|
|
|
uni.hideLoading(); |
|
|
|
if (res.data &&res.data.subList.length > 0) { |
|
|
|
if (res.data && res.data.subList.length > 0) { |
|
|
|
that.jobContent = res.data; |
|
|
|
that.jobStatus = res.data.status; |
|
|
|
that.subList = res.data.subList; |
|
|
|
that.detailSource = getDataSource(that.detailSource, that.subList) |
|
|
|
that.fromLocationCode = that.subList[0].fromLocationCode |
|
|
|
// that.detailSource = res.data; |
|
|
|
that.detailSource = getThreeDataSource(that.jobContent) |
|
|
|
console.log(999,that.detailSource) |
|
|
|
|
|
|
|
that.toLocationCode = that.subList[0].toLocationCode |
|
|
|
that.allowBiggerQty = res.data.allowBiggerQty; |
|
|
|
that.resizeCollapse(); |
|
|
|
} else { |
|
|
|
that.showMessage('未获取到详情'); |
|
|
@ -207,14 +223,201 @@ |
|
|
|
|
|
|
|
resizeCollapse() { |
|
|
|
this.$nextTick(r => { |
|
|
|
this.$refs.comIssueDetailCard.forEach(r => { |
|
|
|
this.$refs.comIssueDetailCardBatch.forEach(r => { |
|
|
|
r.resizeCollapse(); |
|
|
|
}) |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getScanResult(result, managementTypeParams) { |
|
|
|
console.log(222,result) |
|
|
|
this.managementType = managementTypeParams |
|
|
|
if(managementTypeParams == "BY_BATCH" ||managementTypeParams == "BY_QUANTITY" ){ |
|
|
|
this.setDataBatch(result) |
|
|
|
}else{ |
|
|
|
this.setData(result) |
|
|
|
} |
|
|
|
}, |
|
|
|
setDataBatch(result) { |
|
|
|
try { |
|
|
|
let that = this |
|
|
|
this.balanceinfo = result.balance |
|
|
|
var packingNumber = result.label.packingNumber; |
|
|
|
var batch = result.label.batch; |
|
|
|
var qty = result.label.qty; |
|
|
|
var itemCode = result.label.itemCode; |
|
|
|
var locationCode = result.fromLocationCode; |
|
|
|
|
|
|
|
if (!result.balance) { |
|
|
|
this.showMessage("没有库存余额") |
|
|
|
return; |
|
|
|
} |
|
|
|
console.log(9558,result) |
|
|
|
// var inventoryStatus = "OK"; |
|
|
|
var detail = this.detailSource.find(r => r.itemCode == itemCode); |
|
|
|
|
|
|
|
if (detail == undefined) { |
|
|
|
this.showErrorMessage("物料号【" + itemCode + "】不在列表中") |
|
|
|
} else { |
|
|
|
|
|
|
|
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 + "】不在列表中") |
|
|
|
console.log(222,this.fromLocationCode) |
|
|
|
detail.subList.push({ |
|
|
|
scaned:true, |
|
|
|
fromLocationCode:this.fromLocationCode, |
|
|
|
toLocationCode:this.toLocationCode, |
|
|
|
batch:result.label.batch, |
|
|
|
handleQty:result.label.qty, |
|
|
|
qty:result.balance.qty, |
|
|
|
inventoryStatus:result.balance.inventoryStatus, |
|
|
|
toLocation:result.balance.toLocation, |
|
|
|
balance:result.balance, |
|
|
|
balanceQty:result.balance.qty, |
|
|
|
packQty:result.package.packQty, |
|
|
|
packUnit:result.package.packUnit, |
|
|
|
uom:result.balance.uom, |
|
|
|
// packList:[{ |
|
|
|
// scaned : true, |
|
|
|
// handleQty : Number(result.label.qty), |
|
|
|
// toLocationCode : result.balance.toLocationCode, |
|
|
|
// }] |
|
|
|
}) |
|
|
|
console.log(999,detail) |
|
|
|
detail.handleQty = 0 |
|
|
|
detail.qty = 0 |
|
|
|
detail.subList.forEach(item=>{ |
|
|
|
detail.handleQty = calc.add(detail.handleQty,item.handleQty) |
|
|
|
detail.qty = calc.add(detail.qty,item.qty) |
|
|
|
// item.packList.forEach(cur=>{ |
|
|
|
// cur.handleQty = calc.add(detail.handleQty,item.handleQty) |
|
|
|
// }) |
|
|
|
}) |
|
|
|
setTimeout(r => { |
|
|
|
that.resizeCollapse(); |
|
|
|
that.$forceUpdate() |
|
|
|
}, 100) |
|
|
|
} 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; |
|
|
|
} |
|
|
|
itemDetail.handleQty = calc.add(itemDetail.handleQty,result.label.qty); |
|
|
|
detail.handleQty = 0 |
|
|
|
detail.balance = result.balance, |
|
|
|
detail.subList.forEach(item=>{ |
|
|
|
detail.handleQty = calc.add(detail.handleQty,item.handleQty) |
|
|
|
// item.packList.forEach(cur=>{ |
|
|
|
// cur.handleQty = calc.add(detail.handleQty,item.handleQty) |
|
|
|
// }) |
|
|
|
}) |
|
|
|
// calcHandleQtyAdd(this.detailSource, result.label); |
|
|
|
} |
|
|
|
this.continueScan() |
|
|
|
this.$forceUpdate() |
|
|
|
} else { |
|
|
|
var scanedLength = 0; |
|
|
|
// itemDetail.packList.forEach(res => { |
|
|
|
// if (res.scaned) { |
|
|
|
// scanedLength++; |
|
|
|
// } |
|
|
|
// }) |
|
|
|
//大哥让加的 |
|
|
|
itemDetail.fromInventoryStatus = result.balance.inventoryStatus; |
|
|
|
|
|
|
|
if (itemDetail.scaned ) { |
|
|
|
// this.showMessage("箱码【" + packingNumber + "】已经扫描") |
|
|
|
// calcHandleQtyAdd(this.detailSource, result.label); |
|
|
|
itemDetail.balance=result.balance |
|
|
|
itemDetail.balanceQty=result.balance.qty |
|
|
|
itemDetail.uom=result.balance.uom, |
|
|
|
itemDetail.handleQty = calc.add(itemDetail.handleQty,result.label.qty); |
|
|
|
detail.handleQty = 0 |
|
|
|
detail.subList.forEach(item=>{ |
|
|
|
detail.handleQty = calc.add(detail.handleQty,item.handleQty) |
|
|
|
}) |
|
|
|
} else { |
|
|
|
debugger |
|
|
|
itemDetail.scaned = true; |
|
|
|
this.detailSource[0].subList.sort(compareAsc('scaned')); //按扫描信息排序 |
|
|
|
itemDetail.handleQty = result.label.qty; |
|
|
|
itemDetail.scaned = true |
|
|
|
itemDetail.balance=result.balance |
|
|
|
itemDetail.balanceQty=result.balance.qty |
|
|
|
itemDetail.uom=result.balance.uom |
|
|
|
itemDetail.packQty=result.package.packQty |
|
|
|
itemDetail.packUnit=result.package.packUnit |
|
|
|
itemDetail.fromlocationCode=this.fromLocationCode |
|
|
|
itemDetail.toLocationCode=this.toLocationCode |
|
|
|
// itemDetail.toInventoryStatus = "OK" |
|
|
|
// itemDetail.packList.forEach(pac => { |
|
|
|
// pac.scaned = true |
|
|
|
// pac.handleQty = Number(result.label.qty); |
|
|
|
// pac.toLocationCode = result.balance.toLocationCode; |
|
|
|
// }) |
|
|
|
detail.handleQty = 0 |
|
|
|
detail.subList.forEach(item=>{ |
|
|
|
detail.handleQty = calc.add(detail.handleQty,item.handleQty) |
|
|
|
// item.packList.forEach(cur=>{ |
|
|
|
// cur.handleQty = calc.add(detail.handleQty,item.handleQty) |
|
|
|
// }) |
|
|
|
}) |
|
|
|
// calcTreeHandleQty(this.detailSource); |
|
|
|
this.continueScan() |
|
|
|
this.$forceUpdate() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
this.detailSource.forEach(item => { |
|
|
|
item.subList.forEach(detail => { |
|
|
|
detail.packingNumber = '' |
|
|
|
}) |
|
|
|
}) |
|
|
|
} catch (e) { |
|
|
|
this.showMessage(e.message) |
|
|
|
} |
|
|
|
}, |
|
|
|
//继续扫描 |
|
|
|
continueScan() { |
|
|
|
this.scanCount = getScanCount(this.subList); |
|
|
|
if (this.scanCount == this.subList.length) { |
|
|
|
this.closeScanPopup(); |
|
|
|
} else { |
|
|
|
this.scanPopupGetFocus(); |
|
|
|
} |
|
|
|
}, |
|
|
|
submit() { |
|
|
|
uni.showLoading({ |
|
|
|
title: "提交中....", |
|
|
@ -223,103 +426,168 @@ |
|
|
|
|
|
|
|
//目前任务只到一个库位 |
|
|
|
var itemCodes = [] |
|
|
|
let locationCode = this.detailSource[0].toLocationCode |
|
|
|
this.detailSource.forEach(toLocationCode => { |
|
|
|
toLocationCode.Items.forEach(item => { |
|
|
|
itemCodes.push(item.itemCode) |
|
|
|
}) |
|
|
|
//目前任务只到一个库位 |
|
|
|
var itemCodes = [] |
|
|
|
let locationCode = this.detailSource[0].subList[0].toLocationCode |
|
|
|
this.detailSource.forEach(toLocation => { |
|
|
|
itemCodes.push(toLocation.itemCode) |
|
|
|
}) |
|
|
|
|
|
|
|
//使用在途库,不查询管理模式 |
|
|
|
if (locationCode == null) { |
|
|
|
this.submitJob(); |
|
|
|
} else { |
|
|
|
//获取管理模式,封装参数 |
|
|
|
getManagementPrecisions(itemCodes, locationCode, res => { |
|
|
|
if (res.success) { |
|
|
|
this.managementList = res.list; |
|
|
|
this.submitJob(); |
|
|
|
} else { |
|
|
|
uni.hideLoading(); |
|
|
|
this.showErrorMessage(res.message); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
console.log( this.detailSource) |
|
|
|
|
|
|
|
//获取管理模式,封装参数 |
|
|
|
getManagementPrecisions(itemCodes, locationCode, res => { |
|
|
|
if (res.success) { |
|
|
|
this.managementList = res.list; |
|
|
|
console.log(res) |
|
|
|
this.managementType = this.managementList && this.managementList[0] ? this.managementList[0].ManagementPrecision : 'BY_PACKAGING' |
|
|
|
|
|
|
|
this.submitJob(); |
|
|
|
} else { |
|
|
|
uni.hideLoading(); |
|
|
|
// this.showErrorMessage(res.message); |
|
|
|
} |
|
|
|
}); |
|
|
|
// //使用在途库,不查询管理模式 |
|
|
|
// if (locationCode == null) { |
|
|
|
// this.submitJob(); |
|
|
|
// } else { |
|
|
|
// //获取管理模式,封装参数 |
|
|
|
// getManagementPrecisions(itemCodes, locationCode, res => { |
|
|
|
// if (res.success) { |
|
|
|
// this.managementList = res.list; |
|
|
|
// this.submitJob(); |
|
|
|
// } else { |
|
|
|
// uni.hideLoading(); |
|
|
|
// this.showErrorMessage(res.message); |
|
|
|
// } |
|
|
|
// }); |
|
|
|
// } |
|
|
|
}, |
|
|
|
|
|
|
|
checkCount(){ |
|
|
|
let str="" |
|
|
|
this.detailSource.forEach(detail => { |
|
|
|
detail.Items.forEach(item => { |
|
|
|
var taskQty =0; |
|
|
|
item.taskQty =calc.add(taskQty,item.qty) |
|
|
|
var totalQty =0; |
|
|
|
item.Locations.forEach(lco => { |
|
|
|
lco.Batchs.forEach(batch => { |
|
|
|
batch.Records.forEach(record => { |
|
|
|
// if (batch.qty != record.qty) { |
|
|
|
// var tempHandleQty = 0 |
|
|
|
// if (record.qty) { |
|
|
|
// tempHandleQty = record.qty |
|
|
|
// } else { |
|
|
|
// tempHandleQty = 0 |
|
|
|
// } |
|
|
|
// if (batch.qty != 0) { |
|
|
|
// str += |
|
|
|
// `包装号【${record.packingNumber}】提交数量【${tempHandleQty}】与任务物料数量【${batch.qty}】不一致\n` |
|
|
|
// } |
|
|
|
// } |
|
|
|
if(record){ |
|
|
|
var hanleQty =record.qty?record.qty:0 |
|
|
|
totalQty = calc.add(totalQty,hanleQty) |
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
checkCount() { |
|
|
|
let str="" |
|
|
|
this.detailSource.forEach(detail => { |
|
|
|
detail.Items.forEach(item => { |
|
|
|
var taskQty =0; |
|
|
|
item.taskQty =calc.add(taskQty,item.qty) |
|
|
|
var totalQty =0; |
|
|
|
item.Locations.forEach(lco => { |
|
|
|
lco.Batchs.forEach(batch => { |
|
|
|
batch.Records.forEach(record => { |
|
|
|
if(record){ |
|
|
|
var hanleQty =record.qty?record.qty:0 |
|
|
|
totalQty = calc.add(totalQty,hanleQty) |
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
//实际扫描的数量 |
|
|
|
item.totalQty =totalQty |
|
|
|
|
|
|
|
}) |
|
|
|
//实际扫描的数量 |
|
|
|
item.totalQty =totalQty |
|
|
|
|
|
|
|
}) |
|
|
|
//如果允许部分提交任务有扫描记录就可以直接提交;如果不允许部分执行,任务数量和提交数量不一致给出提示 |
|
|
|
this.detailSource.forEach(detail=>{ |
|
|
|
detail.Items.forEach(item=>{ |
|
|
|
if(this.jobContent.allowPartialComplete=="FALSE"){ |
|
|
|
if(item.taskQty!=item.totalQty){ |
|
|
|
str += `物料号【${item.itemCode}】任务数量【${item.taskQty}】与实际提交数量【${item.totalQty}】不一致\n` |
|
|
|
} |
|
|
|
}) |
|
|
|
//如果允许部分提交任务有扫描记录就可以直接提交;如果不允许部分执行,任务数量和提交数量不一致给出提示 |
|
|
|
this.detailSource.forEach(detail=>{ |
|
|
|
detail.Items.forEach(item=>{ |
|
|
|
if(this.jobContent.allowPartialComplete=="FALSE"){ |
|
|
|
if(item.taskQty!=item.totalQty){ |
|
|
|
str += `物料号【${item.itemCode}】任务数量【${item.taskQty}】与实际提交数量【${item.totalQty}】不一致\n` |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
if(str){ |
|
|
|
str = '不允许提交\n' + str |
|
|
|
this.showErrorMessage(str) |
|
|
|
} |
|
|
|
|
|
|
|
return str?false:true |
|
|
|
}, |
|
|
|
checkCountBatch() { |
|
|
|
let str = "" |
|
|
|
let str1 = "" |
|
|
|
let str2 = "" |
|
|
|
this.detailSource.forEach(detail => { |
|
|
|
var taskQty = 0; |
|
|
|
var totalQty = 0; |
|
|
|
detail.subList.forEach(item => { |
|
|
|
if(item.scaned){ |
|
|
|
item.taskQty=0 |
|
|
|
item.totalQty=0 |
|
|
|
item.taskQty =calc.add(item.taskQty,item.qty) |
|
|
|
item.totalQty =calc.add(item.totalQty,item.handleQty) |
|
|
|
if (this.jobContent.allowPartialComplete == "FALSE") { |
|
|
|
if(item.handleQty!=item.taskQty){ |
|
|
|
str += `批次【${item.batch}】提交数量【${item.handleQty}】与任务物料数量【${item.taskQty}】不一致\n` |
|
|
|
} |
|
|
|
} |
|
|
|
if (this.allowBiggerQty == 'FALSE') { |
|
|
|
if ( item.taskQty < item.totalQty) { |
|
|
|
str1 += '数量[' + item.totalQty + ']不允许大于任务数量[' + item.taskQty + ']' |
|
|
|
} |
|
|
|
} |
|
|
|
if(item.handleQty>item.balance.qty){ |
|
|
|
str2 += `批次【${item.batch}】提交数量【${item.handleQty}】不可以大于库存数量【${item.balance.qty}】` |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
if(str){ |
|
|
|
|
|
|
|
|
|
|
|
if (str) { |
|
|
|
str = '不允许提交\n' + str |
|
|
|
this.showErrorMessage(str) |
|
|
|
} |
|
|
|
|
|
|
|
return str?false:true |
|
|
|
|
|
|
|
if (str1) { |
|
|
|
str1 = '不允许提交\n' + str1 |
|
|
|
this.showErrorMessage(str1) |
|
|
|
} |
|
|
|
if (str2) { |
|
|
|
str2 = '不允许提交\n' + str2 |
|
|
|
this.showErrorMessage(str2) |
|
|
|
} |
|
|
|
return str || str1 || str2 ? false : true |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
submitJob() { |
|
|
|
var params = this.setParams() |
|
|
|
console.log("提交参数", JSON.stringify(params)); |
|
|
|
|
|
|
|
if (params.subList.length == 0) { |
|
|
|
uni.hideLoading() |
|
|
|
this.$refs.comMessage.showConfirmMessageModal('请扫描箱码') |
|
|
|
return |
|
|
|
console.log("提交参数", params); |
|
|
|
const isTrue = params.subList.some(item=>{ |
|
|
|
console.log(item.recordList.some(cur=>cur.scaned)) |
|
|
|
return item.recordList.some(cur=>cur.scaned) == true |
|
|
|
}) |
|
|
|
if(!isTrue){ |
|
|
|
uni.hideLoading() |
|
|
|
this.showErrorMessage("请扫描您需要提交的发货任务") |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
if(!this.checkCount()){ |
|
|
|
uni.hideLoading() |
|
|
|
return ; |
|
|
|
// return; |
|
|
|
// if (params.subList.length == 0) { |
|
|
|
// uni.hideLoading() |
|
|
|
// this.$refs.comMessage.showConfirmMessageModal('请扫描箱码') |
|
|
|
// return |
|
|
|
// } |
|
|
|
if(this.managementType == "BY_BATCH" ||this.managementType == "BY_QUANTITY" ){ |
|
|
|
if (!this.checkCountBatch()) { |
|
|
|
uni.hideLoading() |
|
|
|
return; |
|
|
|
} |
|
|
|
}else{ |
|
|
|
if (!this.checkCount()) { |
|
|
|
uni.hideLoading() |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
debugger |
|
|
|
|
|
|
|
deliverJobSubmit(params).then(res => { |
|
|
|
uni.hideLoading() |
|
|
|
if (res.data) { |
|
|
|
|
|
|
|
this.showCommitSuccessMessage("提交成功\n生成发货记录\n" + res.data) |
|
|
|
} else { |
|
|
|
this.showErrorMessage("提交失败[" + res.msg + "]") |
|
|
@ -334,55 +602,34 @@ |
|
|
|
var subList = [] |
|
|
|
var createTime = getCurrDateTime(); |
|
|
|
var creator = this.$store.state.user.id |
|
|
|
console.log(222,this.detailSource) |
|
|
|
this.detailSource.forEach(toLocationCode => { |
|
|
|
toLocationCode.Items.forEach(item => { |
|
|
|
item.Locations.forEach(fromLocation => { |
|
|
|
fromLocation.Batchs.forEach(batch => { |
|
|
|
let subItem = batch.detail; |
|
|
|
subItem.recordList = []; |
|
|
|
if (batch.Records.length > 0) { |
|
|
|
batch.Records.forEach(r => { |
|
|
|
let record = {}; |
|
|
|
record.handleQty = r.qty; |
|
|
|
record.fromPackingNumber = r |
|
|
|
.packingNumber; |
|
|
|
record.toContainerNumber = r |
|
|
|
.ContainerNumber; |
|
|
|
record.toInventoryStatus = r |
|
|
|
.inventoryStatus; |
|
|
|
// record.toLocationCode = subItem |
|
|
|
// .toLocationCode; |
|
|
|
record.toLocationCode = this.toLocationCode; |
|
|
|
record.supplierCode = r.supplierCode; |
|
|
|
|
|
|
|
//使用在途库不改变管理模式 |
|
|
|
if (this.toLocationCode == null) { |
|
|
|
record.toPackingNumber = r |
|
|
|
.packingNumber; |
|
|
|
record.toBatch = r.batch; |
|
|
|
} else { |
|
|
|
var info = |
|
|
|
getPackingNumberAndBatch( |
|
|
|
this.managementList, r |
|
|
|
.itemCode, |
|
|
|
r.packingNumber, r |
|
|
|
.batch); |
|
|
|
record.toPackingNumber = info |
|
|
|
.packingNumber; |
|
|
|
record.toBatch = info.batch; |
|
|
|
} |
|
|
|
record.fromParentPackingNumber = r |
|
|
|
.parentPackingNumber; |
|
|
|
subItem.toLocationCode = this.toLocationCode |
|
|
|
subItem.recordList.push(record); |
|
|
|
}) |
|
|
|
subList.push(deepCopyData(subItem)); |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
let obj = {...toLocationCode} |
|
|
|
delete obj.subList |
|
|
|
obj.recordList = [] |
|
|
|
let obj1 ={} |
|
|
|
let arr = toLocationCode.subList.filter(item=>item.scaned) |
|
|
|
arr.forEach(record=>{ |
|
|
|
obj1.scaned =record.scaned; |
|
|
|
obj1.handleQty =record.handleQty; |
|
|
|
obj1.fromLocationCode =record.fromLocationCode; |
|
|
|
obj1.fromInventoryStatus =record.fromInventoryStatus; |
|
|
|
obj1.copyContent =record.copyContent; |
|
|
|
obj1.toContainerNumber = record.ContainerNumber; |
|
|
|
obj1.toInventoryStatus =record.inventoryStatus; |
|
|
|
obj1.toLocationCode = record.toLocationCode; |
|
|
|
obj1.supplierCode = record.supplierCode; |
|
|
|
obj1.toPackingNumber =''; |
|
|
|
obj1.packingNumber = '' |
|
|
|
obj1.fromPackingNumber = ''; |
|
|
|
obj1.toBatch = record.batch; |
|
|
|
obj1.toPackingNumber = ''; |
|
|
|
obj1.packingNumber = ''; |
|
|
|
obj1.fromPackingNumber =''; |
|
|
|
obj.recordList.push(obj1) |
|
|
|
}) |
|
|
|
subList.push(obj) |
|
|
|
}) |
|
|
|
|
|
|
|
this.jobContent.subList = subList |
|
|
|
this.jobContent.createTime = createTime; |
|
|
|
this.jobContent.creator = creator; |
|
|
@ -420,30 +667,12 @@ |
|
|
|
}, |
|
|
|
|
|
|
|
updateData(record) { |
|
|
|
let requestLocation = this.detailSource.find(r => r.toLocationCode == record.toLocationCode); |
|
|
|
let item = requestLocation.Items.find(r => r.itemCode == record.itemCode); |
|
|
|
let itemHandleQty = 0; |
|
|
|
if (item != undefined) { |
|
|
|
item.Locations.forEach(l => { |
|
|
|
let batch = l.Batchs.find(b => (b.packingNumber == record.packingNumber || b |
|
|
|
.packingNumber == null || b.packingNumber == '') && b.batch == |
|
|
|
record.batch); |
|
|
|
let handleQty = 0; |
|
|
|
if (batch != undefined) { |
|
|
|
batch.Records.forEach(res => { |
|
|
|
handleQty = calc.add(handleQty, res.qty) |
|
|
|
}) |
|
|
|
batch.handleQty = handleQty; |
|
|
|
itemHandleQty = calc.add(itemHandleQty, handleQty) |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
// item.handleQty=itemHandleQty; |
|
|
|
calcHandleQty(this.detailSource); |
|
|
|
}, |
|
|
|
|
|
|
|
scanPopupGetFocus() { |
|
|
|
if (this.$refs.scanPopup != undefined) { |
|
|
|
this.$refs.scanPopup.getfocus(); |
|
|
|
this.$refs.scanPopup.packGetFocus(); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
@ -496,15 +725,42 @@ |
|
|
|
this.dataContent = result; |
|
|
|
this.$forceUpdate(); |
|
|
|
}, |
|
|
|
openScanDetailPopup() { |
|
|
|
var datacontent = {} |
|
|
|
//克隆对象,深度克隆,防止双向绑定同一个变量 |
|
|
|
// Object.assign(datacontent, this.detailSource); |
|
|
|
this.$refs.comScanIssuePack.openScanPopup(this.detailSource, this.jobContent); |
|
|
|
}, |
|
|
|
// openScanDetailPopup() { |
|
|
|
// var datacontent = {} |
|
|
|
// //克隆对象,深度克隆,防止双向绑定同一个变量 |
|
|
|
// // Object.assign(datacontent, this.detailSource); |
|
|
|
// this.$refs.comScanIssuePack.openScanPopup(this.detailSource, this.jobContent); |
|
|
|
// }, |
|
|
|
closeScanPopup() { |
|
|
|
this.updateCommitBtn(); |
|
|
|
// this.updateCommitBtn(); |
|
|
|
}, |
|
|
|
openScanPopup() { |
|
|
|
let fromLocationCode = ''; |
|
|
|
let fromlocationList = []; |
|
|
|
for (var i = 0; i < this.detailSource.length; i++) { |
|
|
|
let item = this.detailSource[i]; |
|
|
|
item.subList.forEach(l => { |
|
|
|
//重复的库位不往里面插入 |
|
|
|
var location = fromlocationList.find(res => res == l.fromLocationCode) |
|
|
|
if (location == undefined) { |
|
|
|
fromlocationList.push(l.fromLocationCode); |
|
|
|
} |
|
|
|
//来源库位赋默认值 |
|
|
|
if (fromLocationCode == '') { |
|
|
|
if (!l.scaned) { |
|
|
|
fromLocationCode = l.fromLocationCode; |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
this.fromLocationCode = fromLocationCode |
|
|
|
console.log(this.fromLocationCode) |
|
|
|
this.$refs.scanPopup.openScanPopupForJob(fromLocationCode, fromlocationList, this.jobContent); |
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
confirmFromLocation(fromLocationCodeParams){ |
|
|
|
this.fromlocationCode = fromLocationCodeParams |
|
|
|
} |
|
|
|
}; |
|
|
|
</script> |
|
|
|