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.

339 lines
8.1 KiB

10 months 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">
10 months ago
<view class="" style="margin-left: 20rpx;">
10 months ago
{{positionInfo}}
</view>
<u-select v-model="show" mode="mutil-column-auto" :list="list"
@confirm="confirmSelect"></u-select>
</view>
</view>
<u-line />
<view class="uni-flex uni-row padding title u-col-center">
<text>零件 : </text>
<view class="uni-flex u-col-center uni-row">
10 months ago
<u-input v-model="itemCode" :focus="itemCodeFocus" :border="true"
placeholder="请输入需求零件" @confirm="itemCodeConfirm" />
<image src="/static/search.svg" mode=""
style=" width: 40rpx;height: 40rpx;margin-left: 10rpx;" @click="itemCodeClick">
</image>
10 months ago
</view>
</view>
<u-line />
<view class="uni-flex uni-row padding title u-col-center">
<text>数量 : </text>
10 months ago
<view class="uni-flex uni-row uni-center"
style="align-items: center;margin-left: 20rpx;">
10 months 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>
10 months ago
10 months ago
<comMessage ref="comMessage"></comMessage>
10 months ago
<selectList ref='selectList' @selectedItem="selectedItem"></selectList>
10 months ago
</view>
</template>
<script>
import {
getBasicLocationByCode,
10 months ago
getBasicItemByCode,
getProductionlineItem
10 months 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'
10 months ago
import selectList from '@/mycomponents/popup/selectList.vue'
10 months ago
export default {
components: {
uom,
balanceStatus,
10 months ago
comMessage,
selectList
10 months ago
},
data() {
return {
// itemCode: 'CE115F11161AG',
10 months ago
workShopCode: "",
productionLineCode: "",
workStationCode: "",
10 months ago
itemCode: '',
10 months ago
itemName: "",
10 months ago
qty: 0,
itemCodeFocus: false,
requestInfo: null,
10 months ago
itemCodeList: [],
10 months ago
isCheckItemCode: false,
counQty: 0,
10 months ago
editPosition: true,
10 months ago
numberFocus: false,
uom: "",
positionInfo: "请选择位置",
show: false,
10 months ago
isModifiedPosition: true,
10 months 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'
}
10 months ago
]
10 months ago
},
]
}
]
}
},
props: {
title: {
type: String,
default: '需求信息'
},
},
methods: {
10 months ago
openRequestPopup(editPosition) {
this.editPosition = editPosition;
if (this.isModifiedPosition) {
this.isModifiedPosition = false
10 months ago
} else {
10 months ago
this.itemCode = "";
10 months ago
this.uom = ""
10 months ago
this.qty = 0
this.itemCodeGetFocus();
10 months ago
}
10 months ago
10 months ago
this.$refs.popup.open('bottom')
},
closeRequestPopup() {
this.$refs.popup.close()
},
locationConfirm() {
//查询库位信息
this.checkLocatioCode();
},
10 months ago
itemCodeClick() {
if (this.positionInfo == "请选择位置") {
this.showErrorMessage("请先选择位置")
return
}
this.$refs.selectList.queryList("111dsda")
// this.refs.selectList
// this.getItemCodeListByProLine("111")
},
10 months ago
itemCodeGetFocus() {
this.itemCodeFocus = true;
},
itemCodeLoseFocus() {
this.itemCodeFocus = false;
},
10 months ago
selectedItem(item) {
this.itemCode = item.itemCode;
this.checkItemCode();
10 months ago
},
confirm() {
10 months ago
if (this.itemCode == "" || !this.isCheckItemCode) {
this.showErrorMessage("请输入零件", "itemCode")
return
}
if (this.qty == 0) {
this.showErrorMessage("数量必须大于0")
return
10 months ago
}
10 months ago
this.callback('add');
10 months ago
},
checkItemCode() {
//校验零件
getBasicItemByCode(this.itemCode).then(res => {
uni.hideLoading();
10 months 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 {
10 months ago
this.showErrorMessage('未查找到零件【' + this.itemCode + '】', "itemCode");
}
}).catch(error => {
uni.hideLoading();
this.showErrorMessage(error, "itemCode");
})
},
callback(action) {
let item = {
10 months ago
positionInfo: this.positionInfo,
workShopCode: this.workShopCode,
productionLineCode: this.productionLineCode,
workStationCode: this.workStationCode,
10 months ago
itemCode: this.itemCode,
10 months ago
itemName: this.itemName,
uom: this.uom,
10 months ago
qty: this.qty
};
this.closeRequestPopup();
this.$emit("confirm", action, item);
},
showErrorMessage(message, type) {
setTimeout(r => {
this.$refs.comMessage.showErrorMessage(message, res => {
10 months ago
if (type == "itemCode") {
10 months ago
this.itemCodeGetFocus();
} else {
this.numberFocus = true;
}
})
10 months ago
if (type == "itemCode") {
10 months ago
this.itemCode = ""
this.isCheckItemCode = false;
}
})
},
itemCodeConfirm() {
this.checkItemCode();
},
change(value) {
this.qty = value;
},
cancel(e) {
10 months ago
this.closeRequestPopup();
10 months ago
},
showSelect() {
10 months ago
if (this.editPosition) {
this.show = true
}
10 months ago
},
confirmSelect(e) {
this.positionInfo = e[0].label + "-" + e[1].label + "-" + e[2].label
10 months ago
// this.productionLineCode =e[1].label;
// this.getItemCodeListByProLine(lineCode)
this.workShopCode = e[0].label
this.productionLineCode = e[1].label
this.workStationCode = e[2].label
},
getItemCodeListByProLine(lineCode) {
getProductionlineItem(lineCode).then(res => {
if (res.data != null && res.data.list.length > 0) {
this.$refs.selectList.openPopup(res.data.list)
} else {
//没有查询到生产线对应的零件信息
this.showErrorMessage('未查找到生产线【' + lineCode + '】对应的零件', "itemCode");
}
}).catch(error => {
this.showErrorMessage(error, "itemCode");
})
10 months ago
}
}
}
</script>
<style lang="scss">
.title {
font-size: 30rpx;
}
</style>