<template> <view class="page-wraper"> <view class=""> <com-blank-view @goScan='showFromLocationPopup' v-if="detailSource.length==0"></com-blank-view> </view> <view class="page-wraper" v-if="detailSource.length>0"> <u-line /> <view class="page-main"> <scroll-view scroll-y="true" class="page-main-scroll"> <view class="detail-list" v-for="(item, index) in detailSource" :key="item.id"> <view class=""> <com-move-record :dataContent="item" :index="index" @removeData="removeData" :isShowStatus="isShowStatus" @updateData="updateData" @removePack='removePack'> </com-move-record> </view> <u-line /> </view> </scroll-view> </view> <requiredLocation title="目标库位" :locationCode="toLocationCode" @getLocation='getToLocationCode' :locationTypeList="toLocationTypeArray"></requiredLocation> <view class="page-footer"> <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"> <button class="btn_single_commit" hover-class="btn_commit_after">提交</button> </view> </view> </view> <win-scan-button @goScan='openScanPopup'></win-scan-button> </view> <win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult' :title="'箱码'"></win-scan-pack-and-location> <win-scan-location ref="scanFromLocationCode" title="来源库位" @getLocation='getLocation' :locationTypeList="fromLocationTypeArray"></win-scan-location> <com-message ref="comMessage"></com-message> </view> </template> <script> import comEmptyView from '@/mycomponents/common/comEmptyView.vue' import winScanButton from '@/mycomponents/scan/winScanButton.vue' import requiredLocation from '@/mycomponents/location/requiredLocation.vue' import comMoveRecord from '@/pages/inventoryMove/coms/comMoveRecord.vue' import comBlankView from '@/mycomponents/common/comBlankView.vue' import winScanLocation from "@/mycomponents/scan/winScanLocation.vue" import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue" import comMessage from '@/mycomponents/common/comMessage.vue' import { getBalanceByUniquecode, } from '@/api/request.js'; import { getDirectoryItemArray } from '@/common/directory.js'; import { getBusinessType, } from '@/common/record.js'; export default { components: { comEmptyView, winScanButton, requiredLocation, comMoveRecord, comBlankView, winScanLocation, winScanPackAndLocation, comMessage }, props: { // fromInventoryStatus: { // type: String, // default: "" // }, // toInventoryStatus: { // type: String, // default: "" // }, isShowStatus: { type: Boolean, default: false }, businessTypeCode: { type: String, default: "Move" } //业务类型 }, data() { return { fromLocationCode: "", fromLocationInfo: {}, fromLocationTypeArray: [], toLocationCode: "", toLocationInfo: {}, toLocationTypeArray: [], fromInventoryStatus: [], toInventoryStatus: [], businessType: {}, //业务类型 detailSource: [], //绑定在页面上的数据源 } }, mounted() { getBusinessType(this.businessTypeCode, res => { if (res.success) { this.businessType = res.businessType; this.fromlocationTypeList = res.fromlocationTypeList; this.tolocationTypeList = res.tolocationTypeList; this.showFromLocationPopup(); } else { this.$refs.comMessage.showBreakMessage(res.message ); } }); this.updateTitle(); }, onLoad() { }, methods: { updateTitle() { var name ="" if(this.businessTypeCode=="Move"){ name = "库存转移记录"; }else if(this.businessTypeCode=="HoldToOk"){ name = "隔离转合格记录"; }else if(this.businessTypeCode=="HoldToScrap"){ name = "隔离转报废记录"; }else if(this.businessTypeCode=="OkToHold"){ name = "合格转隔离记录"; }else if(this.businessTypeCode=="OktoScrap"){ name = "合格转报废记录"; }else if(this.businessTypeCode=="ScrapToHold"){ name = "报废转隔离记录"; } uni.setNavigationBarTitle({ title: name }) }, openScanPopup() { if (this.fromLocationCode == "") { this.showFromLocationPopup(); return } this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType); }, showFromLocationPopup() { this.$nextTick(() => { this.$refs.scanFromLocationCode.openScanPopup(); }) }, getLocation(location) { this.getfromLocationCode(location) }, getfromLocationCode(location) { this.fromLocationInfo = location; this.fromLocationCode = location.code; this.openScanPopup(); }, getToLocationCode(location, code) { if (this.fromLocationCode == code) { uni.showToast({ title: "来源库位[" + this.fromLocationCode + "]不能与目标库位[" + code + "]一致", duration: 2000 }) return } this.toLocationCodeInfo = location; this.toLocationCode = code; }, getScanResult(result) { this.getDataSource(result) }, getDataSource(result) { var balance = result.balance; var pack = result.package; var item = this.detailSource.find(res => { if (res.itemCode == balance.itemCode) { return res } }) if (item == undefined) { var itemp = this.createItemInfo(balance,pack); let newDetail = this.createDetailInfo(balance, pack); // itemp.subList.push(newDetail); this.detailSource.push(itemp) } else { var detail = item.subList.find(r => { if (r.packingNumber == balance.packingNumber && r.batch == balance.batch && r.locationCode == balance.locationCode && r.inventoryStatus == balance.inventoryStatus && r.scaned == true) { return r; } }) if (detail == undefined) { let newDetail = this.createDetailInfo(balance, pack); item.subList.push(newDetail); } else { this.showErrorMessage(balance.packingNumber + "已经在列表中") } } this.calcHandleQty(); }, createItemInfo(balance, pack) { let item = { itemCode: pack.itemCode, itemName: pack.itemName, stdPackQty: pack.stdPackQty, stdPackUnit: pack.stdPackUnit, qty: balance.qty, handleQty: 0, uom: pack.uom, subList: [] } return item; }, createDetailInfo(data, pack) { data.scaned = true; data.toInventoryStatus = this.toInventoryStatus == "" ? data.inventoryStatus : this.toInventoryStatus; let detail = {}; Object.assign(detail, data) detail.balanceQty = detail.qty detail.package = pack return detail; }, calcHandleQty() { for (let item of this.detailSource) { item.qty = 0; for (let detail of item.subList) { if (detail != undefined) { item.qty += detail.qty } } } this.$forceUpdate(); }, showErrorMessage(message) { this.$refs.comMessage.showErrorMessage(message, res => { if (res) { } }); }, updateData() { this.calcHandleQty(); }, 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(); }, removeData(item) { for (let i = 0; i < this.detailSource.length; i++) { if (this.detailSource[i].itemCode == item.itemCode) { this.detailSource.splice(i, 1) } } } } } </script> <style> </style>