You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
482 lines
13 KiB
482 lines
13 KiB
9 months ago
|
<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>
|