niexiting
4 months ago
8 changed files with 516 additions and 20 deletions
@ -0,0 +1,482 @@ |
|||
<template> |
|||
<view class="page-wraper"> |
|||
<view class=""> |
|||
<com-blank-view @goScan='openScanPopup' v-if="currentPackage==null"></com-blank-view> |
|||
</view> |
|||
<view class="page-wraper" v-if="currentPackage!=null"> |
|||
<view class="page-main"> |
|||
<uni-collapse> |
|||
<uni-collapse-item> |
|||
<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> |
|||
</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"> |
|||
<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;"> |
|||
{{toItemCode}} |
|||
</view> |
|||
<view class=""> |
|||
<image src="/static/icons/down.svg" mode="" |
|||
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelect"> |
|||
</image> |
|||
</view> |
|||
<u-select v-model="show" mode="single-column" :list="toItemList" |
|||
@confirm="confirmSelect"></u-select> |
|||
</view> |
|||
</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> |
|||
</view> |
|||
|
|||
<win-com-scan-balance ref="scanPopup" @getBalance='getPackScanResult' :bussinessCode="bussinessCode"> |
|||
</win-com-scan-balance> |
|||
|
|||
<win-scan-fg-label ref="scanPopup" @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> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
getSpareitemcode, |
|||
getProductreceiptDetailbByPackingNumber |
|||
} from '@/api/request2.js'; |
|||
|
|||
import { |
|||
getPrecisionStrategyList |
|||
} from '@/common/balance.js'; |
|||
import { |
|||
goHome, |
|||
getPackingNumberAndBatchByList, |
|||
deepCopyData, |
|||
getRemoveOption |
|||
} from '@/common/basic.js'; |
|||
|
|||
import { |
|||
calc |
|||
} from '@/common/calc.js'; |
|||
|
|||
import { |
|||
Decimal |
|||
} from 'decimal.js'; //引入 |
|||
|
|||
import { |
|||
getInventoryStatusDesc, |
|||
getDirectoryItemArray |
|||
} from '@/common/directory.js'; |
|||
|
|||
import { |
|||
getBusinessType, |
|||
} from '@/common/record.js'; |
|||
|
|||
import winScanButton from '@/mycomponents/scan/winScanButton.vue' |
|||
import winScanPack from '@/mycomponents/scan/winScanPack.vue' |
|||
import comProductRecord from '@/pages/productReceipt/coms/comProductRecord.vue' |
|||
import comBlankView from '@/mycomponents/common/comBlankView.vue' |
|||
import PackageAndItemCard from '@/mycomponents/package/PackageAndItemCard.vue' |
|||
import winComScanBalance from '@/mycomponents/scan/winComScanBalance.vue' |
|||
import winScanFgLabel from "@/mycomponents/scan/winScanFgLabel.vue" |
|||
|
|||
export default { |
|||
components: { |
|||
winScanButton, |
|||
winScanPack, |
|||
comProductRecord, |
|||
comBlankView, |
|||
PackageAndItemCard, |
|||
winComScanBalance, |
|||
winScanFgLabel |
|||
}, |
|||
data() { |
|||
return { |
|||
detailSource: [], //绑定在页面上的数据源 |
|||
toLocationCode: "", |
|||
fromLocationTypeList: [], |
|||
fromLocationCode: "", |
|||
businessType: {}, |
|||
dataContent: {}, |
|||
managementList: [], |
|||
show: false, |
|||
toItemCode: "请选择变更后物料", |
|||
toItemList: [], |
|||
fgList: [], |
|||
options: [], |
|||
currentPackage: null, |
|||
bussinessCode: "Relegate" |
|||
}; |
|||
}, |
|||
mounted() { |
|||
|
|||
}, |
|||
onLoad(option) { |
|||
uni.setNavigationBarTitle({ |
|||
title: option.title |
|||
}); |
|||
this.getBusinessType(); |
|||
this.options = getRemoveOption() |
|||
}, |
|||
//返回首页 |
|||
onNavigationBarButtonTap(e) { |
|||
if (e.index === 0) { |
|||
goHome(); |
|||
} |
|||
}, |
|||
//拦截返回按钮事件 |
|||
onBackPress(e) {}, |
|||
|
|||
onPullDownRefresh() {}, |
|||
|
|||
mounted() {}, |
|||
methods: { |
|||
getBusinessType() { |
|||
getBusinessType(this.bussinessCode, res => { |
|||
if (res.success) { |
|||
this.businessType = res.businessType; |
|||
this.fromInventoryStatuses = getDirectoryItemArray(res.fromInventoryStatuses); |
|||
this.fromLocationAreaTypeList = res.fromLocationAreaTypeList |
|||
this.openScanPopup(); |
|||
} else { |
|||
this.showErrorMessage(res.message) |
|||
} |
|||
}); |
|||
}, |
|||
|
|||
|
|||
getPackScanResult(result) { |
|||
let label = result.label; |
|||
let pack = result.package; |
|||
uni.showLoading({ |
|||
title: '加载中...', |
|||
mask: true |
|||
}) |
|||
let params = { |
|||
available: "TRUE", |
|||
changeBeforeCode: pack.itemCode, |
|||
pageSize: 20, |
|||
pageNo: 1 |
|||
}; |
|||
|
|||
getSpareitemcode(params).then(res => { |
|||
uni.hideLoading(); |
|||
if (res.data.list.length == 0) { |
|||
this.showErrorMessage('未查找到变更后的物料,请在《量产件备件关系中进行配置》') |
|||
return; |
|||
} else { |
|||
this.closeScanPopup(); |
|||
|
|||
res.data.list.forEach(r => { |
|||
r.value = r.code; |
|||
r.label = r.code + "(" + r.name + ")"; |
|||
}) |
|||
|
|||
this.toItemList = res.data.list; |
|||
if (res.data.list.length == 1) { |
|||
this.toItemCode = res.data.list[0].code; |
|||
} else { |
|||
this.show = true; |
|||
} |
|||
|
|||
//查询唯一码 |
|||
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; |
|||
this.currentPackage.packingNumber = pack.number; |
|||
this.currentPackage.locationCode = balance.locationCode; |
|||
this.currentPackage.inventoryStatus = balance.inventoryStatus; |
|||
//this.getDataSource(result); |
|||
} else { |
|||
this.showErrorMessage('箱码【' + pack.number + '】未查找到绑定的灯码信息') |
|||
} |
|||
}).catch(res => { |
|||
this.showErrorMessage(res.message); |
|||
}) |
|||
|
|||
|
|||
|
|||
} |
|||
}).catch(res => { |
|||
this.showErrorMessage(res.message); |
|||
}) |
|||
}, |
|||
|
|||
getFgScanResult(result) { |
|||
let that = this; |
|||
var itemIndex = this.allList.findIndex(r => |
|||
r.content == 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 + |
|||
'】已经扫描,是否移除', |
|||
res => { |
|||
if (res) { |
|||
this.allList.splice(itemIndex, 1) |
|||
this.allList.sort(compare('countTime')); //按扫描信息排序 |
|||
this.initList() |
|||
that.calcFgQty(); |
|||
} |
|||
}) |
|||
} |
|||
|
|||
}, |
|||
|
|||
|
|||
openScanPopup() { |
|||
setTimeout(r => { |
|||
this.$refs.scanPopup.openScanPopup(this.businessType); |
|||
this.scanPopupGetFocus(); |
|||
}) |
|||
}, |
|||
|
|||
commit() { |
|||
if (this.positionInfo == "请选择位置") { |
|||
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 + "]") |
|||
} |
|||
}).catch(error => { |
|||
uni.hideLoading() |
|||
this.showErrorMessage(error) |
|||
}) |
|||
|
|||
} else { |
|||
uni.hideLoading(); |
|||
this.showErrorMessage(res.message); |
|||
} |
|||
}) |
|||
} 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; |
|||
}, |
|||
|
|||
setParams() { |
|||
|
|||
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; |
|||
}, |
|||
|
|||
|
|||
showMessage(message) { |
|||
setTimeout(r => { |
|||
this.scanPopupLoseFocus(); |
|||
this.$refs.comMessage.showMessage(message, res => { |
|||
if (res) { |
|||
this.scanPopupGetFocus(); |
|||
} |
|||
}); |
|||
}) |
|||
}, |
|||
|
|||
showErrorMessage(message) { |
|||
setTimeout(r => { |
|||
this.scanPopupLoseFocus(); |
|||
this.$refs.comMessage.showErrorMessage(message, res => { |
|||
if (res) { |
|||
this.scanPopupGetFocus(); |
|||
} |
|||
}); |
|||
}) |
|||
}, |
|||
|
|||
closeScanPopup() { |
|||
this.$refs.scanPopup.closeScanPopup(); |
|||
}, |
|||
|
|||
scanPopupGetFocus() { |
|||
if (this.$refs.scanPopup != undefined) { |
|||
this.$refs.scanPopup.getfocus(); |
|||
} |
|||
}, |
|||
|
|||
scanPopupLoseFocus() { |
|||
if (this.$refs.scanPopup != undefined) { |
|||
this.$refs.scanPopup.losefocus(); |
|||
} |
|||
}, |
|||
|
|||
afterCloseMessage() { |
|||
this.scanPopupGetFocus(); |
|||
}, |
|||
|
|||
closeScanMessage() { |
|||
this.scanPopupGetFocus(); |
|||
}, |
|||
|
|||
showCommitSuccessMessage(hint) { |
|||
this.$refs.comMessage.showSuccessMessage(hint, res => { |
|||
this.clearData(); |
|||
}) |
|||
}, |
|||
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(); |
|||
}, |
|||
|
|||
removeItem(index, item) { |
|||
this.detailSource.splice(index, 1) |
|||
}, |
|||
|
|||
showSelect() { |
|||
this.show = !this.show |
|||
|
|||
}, |
|||
confirmSelect(e) { |
|||
this.toItemCode = e[0].value; |
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
</style> |
Loading…
Reference in new issue