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.

373 lines
9.3 KiB

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