<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> <u-line /> <view class="uni-flex uni-column" style="background-color: white; "> <view class="uni-flex uni-column "> <view class="uni-flex uni-row padding title u-col-center"> <text>位置:</text> <view class="uni-flex u-col-center uni-row" @click="showSelect"> <view class="" style="margin-left: 20rpx;"> {{positionInfo}} </view> <u-select v-model="show" mode="mutil-column-auto" :list="positionList" @confirm="confirmSelect"></u-select> </view> </view> <u-line /> <view class="title padding" style="display: flex;"> <text style=" flex-shrink: 0;">物料:</text> <view class="" style="width: 100% ;"> {{itemCode}} </view> <view class=""> <image src="/static/search.svg" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="itemCodeClick"> </image> </view> </view> <u-line /> <view class="uni-flex uni-row padding title u-col-center"> <text>数量: </text> <view class="uni-flex uni-row uni-center" style="align-items: center;margin-left: 20rpx;"> <uni-number-box :value="counQty" @change="change" style='margin-left: 10rpx;' :focus="numberFocus" @blur='numberFocus = false'> </uni-number-box> <view class="std_pack" v-if="itemCode!='请扫描物料信息'"> <text> /{{stdQty}} <!-- {{Number(dataContent.stdPackQty)}}•{{getStdPackUnit(dataContent.uom)}} --> </text> </view> <uom :uom="uom"></uom> </view> </view> <u-line /> </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> <win-scan-item ref="scanPopup" title='物料代码' @getScanResult='getItemScanResult'> </win-scan-item> <comMessage ref="comMessage"></comMessage> </view> </template> <script> import { getBasicLocationByCode, getBasicItemByCode, getProductionlineItem, getWorkShopLineStation } from '@/api/request2.js'; import { getLocationTypeName, getListLocationTypeDesc, checkDirectoryItemExist } from '@/common/directory.js'; import uom from '@/mycomponents/qty/uom.vue' import balanceStatus from '@/mycomponents/status/balanceStatus.vue' import comMessage from '@/mycomponents/common/comMessage.vue' import winScanItem from '@/mycomponents/scan/winScanItem.vue' export default { components: { uom, balanceStatus, comMessage, winScanItem }, data() { return { // itemCode: 'CE115F11161AG', workshopCode: "", //车间 workShopName: "", productionLineCode: "", //生产线 productionLineName: "", workStationCode: "", //工位 workStationName: "", itemCode: '请扫描物料信息', itemName: "", qty: 0, rawLocationCode: "", fgLocationCode: "", itemCodeFocus: false, requestInfo: null, itemCodeList: [], isCheckItemCode: false, counQty: 0, editPosition: true, numberFocus: false, uom: "", positionInfo: "请选择位置", show: false, isModifiedPosition: true, positionList: [], stdQty: 0, //标包 } }, props: { title: { type: String, default: '需求信息' }, }, methods: { openRequestPopup(editPosition) { if (this.positionList.length == 0) { getWorkShopLineStation().then(res => { this.positionList = res.data }).catch(error => { }) } this.editPosition = editPosition; if (this.isModifiedPosition) { this.isModifiedPosition = false } else { this.itemCode = ""; this.uom = "" this.qty = 0 this.itemCodeGetFocus(); } this.$refs.popup.open('bottom') }, closeRequestPopup() { this.$refs.popup.close() }, locationConfirm() { //查询库位信息 this.checkLocatioCode(); }, itemCodeClick() { this.$refs.scanPopup.openScanPopup(); }, itemCodeGetFocus() { this.itemCodeFocus = true; }, itemCodeLoseFocus() { this.itemCodeFocus = false; }, selectedItem(item) { this.itemCode = item.itemCode; this.checkItemCode(); }, confirm() { if (this.itemCode == "" || !this.isCheckItemCode) { this.showErrorMessage("请输入物料", "itemCode") return } if (this.qty == 0) { this.showErrorMessage("数量必须大于0") return } if (this.rawLocationCode == '') { this.showErrorMessage(this.workStationName + "的原材料库位为空") return } this.callback('add'); }, checkItemCode(itemCode) { //校验物料 getBasicItemByCode(itemCode).then(res => { uni.hideLoading(); this.$refs.scanPopup.closeScanPopup(); if (res.data != null && res.data.list.length > 0) { this.itemCode = res.data.list[0].code; this.itemName = res.data.list[0].name this.isCheckItemCode = true; this.numberFocus = true this.uom = res.data.list[0].uom } else { this.showErrorMessage('未查找到物料【' + itemCode + '】', "itemCode"); } }).catch(error => { uni.hideLoading(); this.showErrorMessage(error, "itemCode"); }) }, callback(action) { let item = { positionInfo: this.positionInfo, workshopCode: this.workshopCode, //车间 workShopName: this.workShopName, productionLineCode: this.productionLineCode, //生产线 productionLineName: this.productionLineName, workStationCode: this.workStationCode, //工位 workStationName: this.workStationName, rawLocationCode: this.rawLocationCode, fgLocationCode: this.fgLocationCode, itemCode: this.itemCode, itemName: this.itemName, uom: this.uom, qty: this.qty }; this.closeRequestPopup(); this.$emit("confirm", action, item); }, showErrorMessage(message, type) { setTimeout(r => { this.$refs.comMessage.showErrorMessage(message, res => { if (type == "itemCode") { this.itemCodeGetFocus(); } else { this.numberFocus = true; } }) if (type == "itemCode") { this.itemCode = "" this.isCheckItemCode = false; } }) }, change(value) { this.qty = value; }, cancel(e) { this.closeRequestPopup(); }, showSelect() { if (this.editPosition) { this.show = true } }, confirmSelect(e) { this.positionInfo = e[0].label + "-" + e[1].label + "-" + e[2].label console.log("位置", this.positionInfo) this.workshopCode = e[0].value this.productionLineCode = e[1].value this.workStationCode = e[2].value this.workShopName = e[0].label this.productionLineName = e[1].label this.workStationName = e[2].label let shop = this.positionList.find(shop => shop.value == this.workshopCode); if (shop != undefined && shop.children != undefined) { let prodLine = shop.children.find(line => line.value == this.productionLineCode); if (prodLine != undefined && prodLine.children != undefined) { let station = prodLine.children.find(r => r.value == this.workStationCode); if (station.rawLocationCode == '' && station.rawLocationCode == null) { this.showErrorMessage(this.workStationName + "的原材料库位为空,请重新选择") return; } else { this.rawLocationCode = station.rawLocationCode; this.fgLocationCode = station.fgLocationCode; } } else { this.showErrorMessage("生产线-工位基础信息维护错误") } } else { this.showErrorMessage("车间-生产线基础信息维护错误") } }, getItemScanResult(code, scanResult) { if (code == "") { this.showErrorMessage('物料号不能为空') return; } this.itemCode = ""; this.checkItemCode(code) this.stdQty = scanResult.package.stdPackQty; } } } </script> <style lang="scss"> .title { font-size: 30rpx; } </style>