|
|
@ -6,42 +6,20 @@ |
|
|
|
<view class="page-wraper" v-if="currentPackage!=null"> |
|
|
|
<view class="page-main"> |
|
|
|
<uni-collapse> |
|
|
|
<uni-collapse-item> |
|
|
|
<uni-collapse-item :open="true"> |
|
|
|
<template v-slot:title> |
|
|
|
<view class="card_itemName" style="padding: 3px 5px; font-size: 28rpx;"> |
|
|
|
变更前包装信息 |
|
|
|
变更信息 |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
<PackageAndItemCard :dataContent='currentPackage'></PackageAndItemCard> |
|
|
|
</uni-collapse-item> |
|
|
|
</uni-collapse> |
|
|
|
|
|
|
|
<view> |
|
|
|
<scroll-view scroll-y="true" class=""> |
|
|
|
<view class="" v-for="(item, index) in fgList" :key="index"> |
|
|
|
<uni-swipe-action> |
|
|
|
<uni-swipe-action-item :right-options="options"> |
|
|
|
<view class="uni-flex uni-row " |
|
|
|
style="margin-left: 50rpx; padding-top: 10rpx; padding-bottom: 10rpx;"> |
|
|
|
<!-- scan_view --> |
|
|
|
<view class="auto-wrap" |
|
|
|
style="font-size: 35rpx;font-weight: bold; width: 100%;"> |
|
|
|
<text style="font-size: 30rpx;color: #B66463;">唯一码 </text> |
|
|
|
{{item.remark}} |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</uni-swipe-action-item> |
|
|
|
</uni-swipe-action> |
|
|
|
<u-line color="#D8D8D8"></u-line> |
|
|
|
</view> |
|
|
|
</scroll-view> |
|
|
|
<view class=""> |
|
|
|
<view class="uni-flex uni-row u-col-center padding_10 "> <text |
|
|
|
style="font-size: 28rpx;">变更前物料</text> |
|
|
|
<view class="card_itemCode" style="margin-left: 20rpx; "> |
|
|
|
{{currentPackage.itemCode}} |
|
|
|
</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=""> |
|
|
|
<view class="uni-flex uni-row u-col-center"> |
|
|
|
<view class="uni-flex uni-row u-col-center padding_10"> |
|
|
|
<text style="font-size: 28rpx;">变更后物料</text> |
|
|
|
<view class="uni-flex u-col-center uni-row" @click="showSelect"> |
|
|
|
<view class="card_itemCode" style="margin-left: 20rpx; color: blue;"> |
|
|
@ -49,26 +27,53 @@ |
|
|
|
</view> |
|
|
|
<view class=""> |
|
|
|
<image src="/static/icons/down.svg" mode="" |
|
|
|
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelect"> |
|
|
|
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;"> |
|
|
|
</image> |
|
|
|
</view> |
|
|
|
<u-select v-model="show" mode="single-column" :list="toItemList" |
|
|
|
@confirm="confirmSelect"></u-select> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="uni-flex uni-row u-col-center padding_10"><text |
|
|
|
style="font-size: 28rpx;">变更原因</text> |
|
|
|
<view class="uni-flex uni-row"> |
|
|
|
<uni-easyinput style=" margin-left: 20px;" v-model="reason"></uni-easyinput> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
</uni-collapse-item> |
|
|
|
</uni-collapse> |
|
|
|
|
|
|
|
<balance style="margin-top: 5px;" :dataContent='currentPackage' :isShowFromLocation='false'></balance> |
|
|
|
<view style="margin-left: 30rpx; margin-top: 10rpx; margin-bottom: 10rpx;" |
|
|
|
v-for="(item, index) in fgList" :key="index"> |
|
|
|
<uni-swipe-action> |
|
|
|
<uni-swipe-action-item :right-options="options"> |
|
|
|
<view :class="item.scaned==true?'scan_view':'auto-wrap'"> |
|
|
|
<light :lightCode='item.remark'></light> |
|
|
|
</view> |
|
|
|
</uni-swipe-action-item> |
|
|
|
</uni-swipe-action> |
|
|
|
|
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="page-footer"> |
|
|
|
<view class="uni-flex u-col-center space-between padding_10" |
|
|
|
style="background-color:ghostwhite; width: 100%; "> |
|
|
|
<view></view> |
|
|
|
<view class=" uni-flex uni-row"> |
|
|
|
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<win-scan-button @goScan='openScanPopup'></win-scan-button> |
|
|
|
<win-scan-button @goScan='openScanFgPopup'></win-scan-button> |
|
|
|
</view> |
|
|
|
|
|
|
|
<win-com-scan-balance ref="scanPopup" @getBalance='getPackScanResult' :bussinessCode="bussinessCode"> |
|
|
|
<win-com-scan-balance ref="scanPopup" @getBalance='getPackScanResult' :bussinessCode="bussinessCode" :verifyCategory='true'> |
|
|
|
</win-com-scan-balance> |
|
|
|
|
|
|
|
<win-scan-fg-label ref="scanPopup" @getResult='getFgScanResult' title='制品标签'></win-scan-fg-label> |
|
|
|
<win-scan-fg-label ref="scanFgPopup" @getResult='getFgScanResult' title='灯码'></win-scan-fg-label> |
|
|
|
<!-- <win-scan-pack ref="scanPopup" @getResult='getScanResult' title="制品标签" headerType="HMQ"></win-scan-pack> --> |
|
|
|
<comMessage ref="comMessage"></comMessage> |
|
|
|
</view> |
|
|
@ -114,6 +119,8 @@ |
|
|
|
import PackageAndItemCard from '@/mycomponents/package/PackageAndItemCard.vue' |
|
|
|
import winComScanBalance from '@/mycomponents/scan/winComScanBalance.vue' |
|
|
|
import winScanFgLabel from "@/mycomponents/scan/winScanFgLabel.vue" |
|
|
|
import balance from '@/mycomponents/balance/balance.vue' |
|
|
|
import light from '@/mycomponents/balance/light.vue' |
|
|
|
|
|
|
|
export default { |
|
|
|
components: { |
|
|
@ -123,24 +130,20 @@ |
|
|
|
comBlankView, |
|
|
|
PackageAndItemCard, |
|
|
|
winComScanBalance, |
|
|
|
winScanFgLabel |
|
|
|
winScanFgLabel, |
|
|
|
balance, |
|
|
|
light |
|
|
|
}, |
|
|
|
data() { |
|
|
|
return { |
|
|
|
detailSource: [], //绑定在页面上的数据源 |
|
|
|
toLocationCode: "", |
|
|
|
fromLocationTypeList: [], |
|
|
|
fromLocationCode: "", |
|
|
|
bussinessCode: "Relegate", |
|
|
|
businessType: {}, |
|
|
|
dataContent: {}, |
|
|
|
managementList: [], |
|
|
|
show: false, |
|
|
|
toItemCode: "请选择变更后物料", |
|
|
|
toItemList: [], |
|
|
|
fgList: [], |
|
|
|
options: [], |
|
|
|
currentPackage: null, |
|
|
|
bussinessCode: "Relegate" |
|
|
|
reason: '' |
|
|
|
}; |
|
|
|
}, |
|
|
|
mounted() { |
|
|
@ -179,7 +182,6 @@ |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
getPackScanResult(result) { |
|
|
|
let label = result.label; |
|
|
|
let pack = result.package; |
|
|
@ -218,6 +220,7 @@ |
|
|
|
getProductreceiptDetailbByPackingNumber(pack.number).then(res => { |
|
|
|
if (res.data.length > 0) { |
|
|
|
this.fgList = res.data; |
|
|
|
|
|
|
|
let pack = result.package; |
|
|
|
let balance = result.balance; |
|
|
|
this.currentPackage = result.package; |
|
|
@ -231,9 +234,6 @@ |
|
|
|
}).catch(res => { |
|
|
|
this.showErrorMessage(res.message); |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
}).catch(res => { |
|
|
|
this.showErrorMessage(res.message); |
|
|
@ -241,36 +241,38 @@ |
|
|
|
}, |
|
|
|
|
|
|
|
getFgScanResult(result) { |
|
|
|
let that = this; |
|
|
|
var itemIndex = this.allList.findIndex(r => |
|
|
|
r.content == result.content); |
|
|
|
var item = this.fgList.find(r => |
|
|
|
r.remark == result.content); |
|
|
|
//不存在 |
|
|
|
if (itemIndex == -1) { |
|
|
|
// if (this.allList.length > this.dataContent.packQty) { |
|
|
|
// this.showErrorMessage("唯一码数量不能大于计划数量") |
|
|
|
// return; |
|
|
|
// } |
|
|
|
result.countTime = new Date(); |
|
|
|
this.allList.push(result); |
|
|
|
this.allList.sort(compare('countTime')); //按扫描信息排序 |
|
|
|
this.initList() |
|
|
|
this.scanPopupGetFocus(); |
|
|
|
this.calcFgQty(); |
|
|
|
} else { |
|
|
|
this.$refs.comMessage.showQuestionMessage("唯一码【" + result.content + |
|
|
|
if (item != undefined) { |
|
|
|
var index = this.fgList.findIndex(r => |
|
|
|
r.remark == result.content); |
|
|
|
if (item.scaned == true) { |
|
|
|
this.$refs.comMessage.showQuestionMessage("灯码【" + result.content + |
|
|
|
'】已经扫描,是否移除', |
|
|
|
res => { |
|
|
|
if (res) { |
|
|
|
this.allList.splice(itemIndex, 1) |
|
|
|
this.allList.sort(compare('countTime')); //按扫描信息排序 |
|
|
|
this.initList() |
|
|
|
that.calcFgQty(); |
|
|
|
item.scaned = false; |
|
|
|
this.fgList.splice(index, 1) |
|
|
|
this.fgList.push(item); //置底(); |
|
|
|
} |
|
|
|
}) |
|
|
|
} else { |
|
|
|
item.scaned = true; |
|
|
|
this.fgList.unshift(this.fgList.splice(index, 1)[0]); //置顶(); |
|
|
|
} |
|
|
|
this.calcHandleQty(); |
|
|
|
} else { |
|
|
|
this.showErrorMessage("扫描的灯码不在灯码列表中") |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
calcHandleQty() { |
|
|
|
if (this.fgList.length > 0) { |
|
|
|
this.currentPackage.handleQty = |
|
|
|
this.fgList.filter(r => r.scaned == true).length |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
openScanPopup() { |
|
|
|
setTimeout(r => { |
|
|
@ -279,118 +281,45 @@ |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
openScanFgPopup() { |
|
|
|
setTimeout(r => { |
|
|
|
this.$refs.scanFgPopup.openScanPopup(this.currentPackage.itemCode); |
|
|
|
this.scanFgPopupGetFocus(); |
|
|
|
|
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
commit() { |
|
|
|
if (this.positionInfo == "请选择位置") { |
|
|
|
this.showMessage("请先选择位置") |
|
|
|
if (this.toItemCode == "请选择变更后物料") { |
|
|
|
this.showMessage("请选择变更后物料") |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (this.detailSource.length > 0 && this.detailSource[0].subList.length > 0) { |
|
|
|
//查询管理模式 |
|
|
|
uni.showLoading({ |
|
|
|
title: "提交中....", |
|
|
|
mask: true |
|
|
|
}); |
|
|
|
this.managementList = []; |
|
|
|
var precisionStrategParams = this.setPrecisionStrategParams() |
|
|
|
|
|
|
|
getPrecisionStrategyList(precisionStrategParams, res => { |
|
|
|
if (res.success) { |
|
|
|
this.managementList = res.list; |
|
|
|
var params = this.setParams() |
|
|
|
console.log("提交" + JSON.stringify(params)) |
|
|
|
productionReceiptRecordSubmit(params).then(res => { |
|
|
|
uni.hideLoading() |
|
|
|
if (res.data) { |
|
|
|
this.showCommitSuccessMessage("提交成功<br>生成制品收货记录<br>" + res.data) |
|
|
|
} else { |
|
|
|
this.showErrorMessage("提交失败[" + res.msg + "]") |
|
|
|
if (this.currentPackage.handleQty == null) { |
|
|
|
this.$refs.comMessage.showQuestionMessage('是否要将全部灯码进行变更?', res => { |
|
|
|
if (res) { |
|
|
|
this.commitRecord(); |
|
|
|
} |
|
|
|
}).catch(error => { |
|
|
|
uni.hideLoading() |
|
|
|
this.showErrorMessage(error) |
|
|
|
}) |
|
|
|
|
|
|
|
} else { |
|
|
|
uni.hideLoading(); |
|
|
|
this.showErrorMessage(res.message); |
|
|
|
this.$refs.comMessage.showQuestionMessage('是否要将已扫描的【' + this.currentPackage.handleQty + '】个灯码进行变更?', |
|
|
|
res => { |
|
|
|
if (res) { |
|
|
|
this.commitRecord(); |
|
|
|
} |
|
|
|
}) |
|
|
|
} else { |
|
|
|
this.showErrorMessage("没有要提交的数据,请先扫描") |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
setPrecisionStrategParams() { |
|
|
|
var itemList = [] |
|
|
|
this.detailSource.forEach(item => { |
|
|
|
item.subList.forEach(detail => { |
|
|
|
if (detail.scaned) { |
|
|
|
detail.toLocationCode = this.fgLocationCode; |
|
|
|
var filterResult = itemList.filter(res => { |
|
|
|
if (res.itemCode == item.itemCode && |
|
|
|
detail.toLocationCode == res.locationCode) { |
|
|
|
return res |
|
|
|
} |
|
|
|
}) |
|
|
|
//去掉重复元素 |
|
|
|
if (filterResult.length == 0) { |
|
|
|
var result = { |
|
|
|
itemCode: item.itemCode, |
|
|
|
locationCode: detail.toLocationCode |
|
|
|
} |
|
|
|
itemList.push(result) |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
return itemList; |
|
|
|
commitRecord() { |
|
|
|
// this.showCommitSuccessMessage('提交成功') |
|
|
|
}, |
|
|
|
|
|
|
|
setParams() { |
|
|
|
let scanedList = this.fgList.filter(r => r.scaned == true) |
|
|
|
if (this.currentPackage.handleQty > 0) { |
|
|
|
scanedList = this.fgList.filter(r => r.scaned == true) |
|
|
|
} |
|
|
|
|
|
|
|
var subList = [] |
|
|
|
var creator = this.$store.state.user.id |
|
|
|
this.detailSource.forEach(item => { |
|
|
|
item.subList.forEach(detail => { |
|
|
|
if (detail.scaned) { |
|
|
|
var submitItem = deepCopyData(detail) |
|
|
|
var info = getPackingNumberAndBatchByList(this.managementList, detail.itemCode, |
|
|
|
detail.packingNumber, detail.toLocationCode, detail.batch); |
|
|
|
submitItem.itemCode = detail.itemCode; |
|
|
|
submitItem.itemName = detail.package.itemName; |
|
|
|
submitItem.itemDesc1 = detail.package.itemDesc1; |
|
|
|
submitItem.itemDesc2 = detail.package.itemDesc2; |
|
|
|
|
|
|
|
submitItem.inventoryStatus = detail.inventoryStatus; |
|
|
|
|
|
|
|
submitItem.fromPackingNumber = info.packingNumber; |
|
|
|
submitItem.toPackingNumber = info.packingNumber; |
|
|
|
|
|
|
|
submitItem.fromContainerNumber = detail.containerNumber; |
|
|
|
submitItem.toContainerNumber = detail.containerNumber |
|
|
|
|
|
|
|
submitItem.fromBatch = info.batch; |
|
|
|
submitItem.toBatch = info.batch; |
|
|
|
|
|
|
|
submitItem.fromLocationCode = detail.locationCode; |
|
|
|
submitItem.toLocationCode = detail.toLocationCode; |
|
|
|
|
|
|
|
submitItem.productionlineCode = this.productionLineCode; |
|
|
|
submitItem.workStationCode = this.workStationCode; |
|
|
|
|
|
|
|
submitItem.qty = detail.handleQty; |
|
|
|
submitItem.package = ""; |
|
|
|
|
|
|
|
subList.push(submitItem) |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
this.dataContent.subList = subList; |
|
|
|
this.dataContent.creator = creator; |
|
|
|
this.dataContent.workshopCode = this.workshopCode; |
|
|
|
return this.dataContent; |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
@ -426,6 +355,12 @@ |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
scanFgPopupGetFocus() { |
|
|
|
if (this.$refs.scanFgPopup != undefined) { |
|
|
|
this.$refs.scanFgPopup.getfocus(); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
scanPopupLoseFocus() { |
|
|
|
if (this.$refs.scanPopup != undefined) { |
|
|
|
this.$refs.scanPopup.losefocus(); |
|
|
@ -443,29 +378,17 @@ |
|
|
|
showCommitSuccessMessage(hint) { |
|
|
|
this.$refs.comMessage.showSuccessMessage(hint, res => { |
|
|
|
this.clearData(); |
|
|
|
this.openScanPopup(); |
|
|
|
}) |
|
|
|
}, |
|
|
|
clearData() { |
|
|
|
this.subList = []; |
|
|
|
this.detailSource = []; |
|
|
|
this.toLocationCode = ''; |
|
|
|
this.dataContent = {}; |
|
|
|
this.positionInfo = "请选择位置"; |
|
|
|
this.fgLocationCode = "" |
|
|
|
}, |
|
|
|
removePack() { |
|
|
|
for (var i = 0; i < this.detailSource.length; i++) { |
|
|
|
var item = this.detailSource[i]; |
|
|
|
if (item.subList.length == 0) { |
|
|
|
this.detailSource.splice(i, 1) |
|
|
|
} |
|
|
|
} |
|
|
|
this.updateData(); |
|
|
|
this.toItemCode = "请选择变更后物料"; |
|
|
|
this.toItemList = []; |
|
|
|
this.fgList = []; |
|
|
|
this.currentPackage = null; |
|
|
|
this.reason = ''; |
|
|
|
}, |
|
|
|
|
|
|
|
removeItem(index, item) { |
|
|
|
this.detailSource.splice(index, 1) |
|
|
|
}, |
|
|
|
|
|
|
|
showSelect() { |
|
|
|
this.show = !this.show |
|
|
|