<template> <view class=""> <uni-popup ref="popup" :maskClick="false"> <view class="uni-flex uni-column pop_customer"> <view class="" style="padding:10rpx"> <view class="uni-flex u-col-center uni-row space-between" style="padding: 10rpx 10rpx 20rpx 10rpx"> <view class="" style="font-size: 35rpx;"> {{title}} </view> <image style="width: 35rpx;height: 35rpx;" src="/static/icons/icons_close.svg" @click="closeRequestPopup()"></image> </view> <view class='split_line'></view> <view class="uni-flex uni-column" style="background-color: white; "> <view class="uni-flex uni-column"> <view class="title " style="display: flex; align-items: center;padding: 10rpx;"> <text style=" flex-shrink: 0;width: 25%;">生产线:</text> <view class="customerBorder" @click="showSelectLine"> {{productionLineName}} </view> <u-select v-model="showProductLineSelect" mode="mutil-column-auto" :list="productLineList" @confirm="confirmSelectLine"></u-select> <view class=""> <image src="/static/icons/down.svg" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelectLine"> </image> </view> </view> <view class='split_line'></view> <view class="title " style="display: flex; align-items: center;padding: 10rpx;"> <text style=" flex-shrink: 0;width: 25%;">计划日期:</text> <view class="customerBorder" @click="showSelectDate"> {{planDate}} </view> <u-select v-model="showDateSelect" mode="mutil-column-auto" :list="planDateList" @confirm="confirmSelectDate"></u-select> <view class=""> <image src="/static/icons/down.svg" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelectDate"> </image> </view> </view> <view class='split_line'></view> <view class="title " style="display: flex;align-items: center;padding: 10rpx;"> <text style=" flex-shrink: 0; width: 25%;">物料代码:</text> <view class="customerBorder"> {{itemCode}} </view> <view v-if="planQty>0">{{planQty}}({{getUomInfo(uom)}})</view> <u-select v-model="showItemCodeSelect" mode="single-column" :list="itemCodeList" @confirm="confirmSelectItem"></u-select> <view class=""> <image src="/static/icons/down.svg" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelectItemCode"> </image> </view> </view> <!-- <view class="title " style="display: flex;align-items: center;padding: 10rpx;"> <text style=" flex-shrink: 0; width: 25%;">计划数量:</text> <view class="customerBorder"> {{planQty}} </view> <view class=""> <image src="" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;"> </image> </view> </view> --> <view class='split_line'></view> <view class="title " style="display: flex;align-items: center;padding: 10rpx;"> <text style=" flex-shrink: 0; width: 25%;">包装规格:</text> <view class="customerBorder"> {{packUnitName}} </view> <u-select v-model="showPackUnitSelect" mode="single-column" :list="packUnitList" @confirm="confirmSelectPackUnit"></u-select> <view class=""> <image src="/static/icons/down.svg" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelectPackUnit"> </image> </view> </view> <view class='split_line'></view> <view class="title " style="display: flex;align-items: center;padding: 10rpx;"> <text style=" flex-shrink: 0; width: 25%;">批次:</text> <uni-easyinput v-model="batch"></uni-easyinput> <view class=""> <image src="" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelectLine"> </image> </view> </view> <view class='split_line'></view> </view> </view> </view> <view class="uni-flex uni-row hide_border"> <button class="btn_edit_big_cancle" hover-class="btn_edit_big_after" @click="cancel()">取消</button> <button class="btn_edit_big_confirm" hover-class="btn_edit_big_after" @click="confirm()">确认</button> </view> </view> </uni-popup> <comMessage ref="comMessage"></comMessage> </view> </template> <script> import { getIssueJobByProductionline, getPlaneInfoByproductLine, getPackUnitByItemCode, getProductionlineAndWorkStation } from '@/api/request2.js'; import { getPackUnitName, getUomInfo } from '@/common/directory.js'; import { getCurrDate, getBatch8, dateFormatData, lastThreeDays } from '@/common/basic.js'; import { calc } from '@/common/calc.js'; import uom from '@/mycomponents/qty/uom.vue' import packQty from '@/mycomponents/qty/packQty.vue' import balanceStatus from '@/mycomponents/status/balanceStatus.vue' import winScanItem from '@/mycomponents/scan/winScanItem.vue' export default { components: { uom, balanceStatus, winScanItem, packQty, }, data() { return { itemCode: '请选择物料信息', uom: "", qty: null, planQty: 0, goodQty: 0, planNumber: "", productLineCode: "", showProductLineSelect: false, productLineList: [], productionLineName: "请选择生产线", productionLineCode: "", batch: "", packUnitName: "请选择包装规格", packUnit: "", packUnitList: [], packQtyHint: "", packQty: 0, showPackUnitSelect: false, itemCodeList: [], showItemCodeSelect: false, workStationCode: "", planDate: '', showDateSelect:false, planDateList:[], fgLocationCode:"", rawLocationCode:"" } }, props: { title: { type: String, default: '开工阶段' }, itemCodeTypeList: { type: Array, default: [] }, }, methods: { openRequestPopup() { this.initData(); this.planDate =getCurrDate() this.batch = getBatch8() this.$refs.popup.open('bottom') }, initData() { this.itemCode = '请选择物料信息'; this.uom = "" this.planQty = 0 this.goodQty = 0; this.packQty = 0; this.planNumber = "" this.productLineCode = "" this.showProductLineSelect = false this.productLineList = [] this.productionLineName = "请选择生产线" this.productionLineCode = "" this.batch = "" this.packUnitName = "请选择包装规格" this.packUnit = "", this.packQtyHint = "" this.showPackUnitSelect = false // this.packUnitList = [] this.itemCodeList = [] this.showItemCodeSelect = false this.workStationCode = "" this.planDate="" this.showDateSelect =false this.planDateList=[] this.fgLocationCode="" this.rawLocationCode="" }, closeRequestPopup() { this.$refs.popup.close() }, itemCodeLoseFocus() { this.itemCodeFocus = false; }, confirm() { if (!this.planDate) { this.showErrorMessage('请先选择计划日期'); return; } if (this.productionLineName == "请选择生产线") { this.showErrorMessage("请选择生产线") return } if (!this.batch) { this.showErrorMessage("请输入批次例如:20200101") return } if (this.itemCode == "请选择物料信息") { this.showErrorMessage("请选择物料信息") return } if (this.packUnitName == "请选择包装规格") { this.showErrorMessage("请选择包装规格") return } this.callback(); }, callback() { let item = { productionLineName: this.productionLineName, productionLineCode: this.productionLineCode, //生产线 itemCode: this.itemCode, uom: this.getUomInfo(this.uom), batch: this.batch, packUnitName: this.packUnitName, packUnit: this.packUnit, packQtyHint: this.packQtyHint, packQty: this.packQty, planQty: this.planQty, goodQty: this.goodQty, planNumber: this.planNumber, workStationCode: this.workStationCode, fgLocationCode:this.fgLocationCode, rawLocationCode:this.rawLocationCode }; this.closeRequestPopup(); this.$emit("confirm", item); }, showErrorMessage(message, type) { setTimeout(r => { this.$refs.comMessage.showErrorMessage(message, res => {}) }) }, cancel(e) { this.closeRequestPopup(); }, confirmSelectLine(data) { this.productionLineName = data[0].label + "—" + data[1].label this.productionLineCode = data[0].value this.workStationCode = data[1].value var parent =this.productLineList.filter(res=>res.value==this.productionLineCode) var fgLocation =parent[0].children.filter(children=>children.value==this.workStationCode) this.fgLocationCode= fgLocation[0].fgLocationCode; this.clearItemCode() this.clearPackUnit() }, clearItemCode(){ this.planDate =getCurrDate() this.itemCode ="请选择物料信息" this.uom = "" this.planQty = 0; this.goodQty = 0 this.planNumber = "" }, confirmSelectDate(data) { this.planDate=data[0].label }, showSelectDate(){ this.showDateSelect =true; var list =lastThreeDays(3); this.planDateList=[] list.forEach(res=>{ this.planDateList.push({ label :res, value:"" }) }) }, showSelectLine() { if (this.productLineList.length == 0) { uni.showLoading({ title: "加载中", mask: true }) getProductionlineAndWorkStation().then(res => { uni.hideLoading() if (res.data && res.data.length > 0) { this.productLineList = res.data this.showProductLineSelect = true } else { this.showErrorMessage('未查找到生产线信息'); } }).catch(error => { uni.hideLoading() this.showErrorMessage(error); }) } else { this.showProductLineSelect = true } }, showSelectItemCode() { if (!this.planDate) { this.showErrorMessage('请先选择计划日期'); return; } if (!this.productionLineCode) { this.showErrorMessage('请先选择生产线'); return; } uni.showLoading({ title: "加载中", mask: true }) getPlaneInfoByproductLine(this.productionLineCode, this.planDate).then(res => { uni.hideLoading() if (res.data && res.data.length > 0) { res.data.forEach(item => { item.label = item.itemCode + "(" + item.planQty + this.getUomInfo(item.uom) + ")" item.value = item }) this.itemCodeList = res.data this.showItemCodeSelect = true } else { this.showErrorMessage('未查找到物料信息'); } }).catch(error => { uni.hideLoading() this.showErrorMessage(error); }) }, confirmSelectItem(data) { let productionPlan = data[0].value; this.itemCode = productionPlan.itemCode; this.uom = productionPlan.uom this.planQty = productionPlan.planQty; this.goodQty = productionPlan.goodQty this.planNumber = productionPlan.number //清除其他数据 this.clearPackUnit(); uni.showLoading({ title: "加载中", mask: true }) getPackUnitByItemCode(this.itemCode).then(res => { uni.hideLoading() if (res.data && res.data.list.length > 0) { res.data.list.forEach(item => { item.value = item.packUnit item.label = getPackUnitName(item.packUnit) + "(" + item.packQty + this .getUomInfo(item.uom) + ")"; }) this.packUnitList = res.data.list var defaultData =res.data.list.filter(item=>item.defaultPackageunit=="TRUE") this.confirmSelectPackUnit(defaultData) } }).catch(error => { uni.hideLoading() }) }, clearPackUnit(){ this.packUnitName = "请选择包装规格" this.packUnit = "" let pack = this.packUnitList.filter(r => r.packUnit == this.packUnit); this.packQtyHint = ""; this.packQty = 0 }, showSelectPackUnit() { if (this.itemCode == "请选择物料信息") { this.showErrorMessage('请先选择物料'); return; } uni.showLoading({ title: "加载中", mask: true }) getPackUnitByItemCode(this.itemCode).then(res => { uni.hideLoading() if (res.data && res.data.list.length > 0) { res.data.list.forEach(item => { item.value = item.packUnit item.label = getPackUnitName(item.packUnit) + "(" + item.packQty + this .getUomInfo(item.uom) + ")"; }) this.packUnitList = res.data.list this.showPackUnitSelect = true } else { this.showErrorMessage('未查找到包装信息'); } }).catch(error => { uni.hideLoading() this.showErrorMessage(error); }) }, confirmSelectPackUnit(data) { this.packUnitName = data[0].label this.packUnit = data[0].value let pack = this.packUnitList.filter(r => r.packUnit == this.packUnit); this.packQtyHint = pack[0].packQty + "(" + this .getUomInfo(pack[0].uom) + ")"; this.packQty = pack[0].packQty }, getUomInfo(uom) { let item = getUomInfo(uom); if (item == '') { return uom; } else { return item.label } }, } } </script> <style lang="scss"> .title { font-size: 30rpx; } .customerBorder { width: 100%; border: 1rpx solid lightgray; border-radius: 5rpx; padding: 15rpx; } </style>