lijuncheng
5 months ago
4 changed files with 443 additions and 41 deletions
@ -0,0 +1,397 @@ |
|||
<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="uni-flex uni-row padding title u-col-center" style="width: 100%;"> |
|||
<view class="" style="width:25% "> |
|||
<text>生产线:</text> |
|||
</view> |
|||
|
|||
<view class="" > |
|||
<uni-combox :candidates="productLineList" v-model="productLineCode" placeholder="请扫描来源库位" |
|||
@confirm="handleConfirm" style='height: 30rpx;border:1px solid #fff ;'></uni-combox> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
<view class='split_line'></view> |
|||
|
|||
<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> |
|||
|
|||
<view class='split_line'></view> |
|||
<view class="uni-flex uni-row padding title u-col-center"> |
|||
<text>数量: </text> |
|||
<view class="uni-flex uni-row uni-center" |
|||
style="display: flex; align-items: center;margin-left: 20rpx;justify-content: center;"> |
|||
|
|||
<input style="text-align: center;" class="qty_input" v-model="counQty" type="number" |
|||
@confirm="confirm()" :focus="numberFocus" @input="checkNum" |
|||
:maxlength="maxlength" /> |
|||
|
|||
<uom :uom="uom"></uom> |
|||
<view class="" v-if="stdPackInfo!=undefined" |
|||
style="display: flex;flex-direction: row;margin-left: 10rpx;"> |
|||
(<packQty :dataContent="stdPackInfo"></packQty>) |
|||
</view> |
|||
</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> |
|||
<win-scan-item ref="scanPopup" title='物料代码' @getScanResult='getItemScanResult' |
|||
:itemCodeTypeList="itemCodeTypeList"> |
|||
</win-scan-item> |
|||
<comMessage ref="comMessage"></comMessage> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
getBasicItemByCode, |
|||
getProductionlineItem, |
|||
getWorkShopLineStation, |
|||
getWarehouseCodeList |
|||
} from '@/api/request2.js'; |
|||
import { |
|||
getLocationTypeName, |
|||
getListLocationTypeDesc, |
|||
checkDirectoryItemExist |
|||
} from '@/common/directory.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 { |
|||
workshopCode: "", //车间 |
|||
workShopName: "", |
|||
productionLineCode: "", //生产线 |
|||
productionLineName: "", |
|||
workStationCode: "", //工位 |
|||
workStationName: "", |
|||
itemCode: '请扫描物料信息', |
|||
fromWarehouseCode: "请选择仓库代码", |
|||
itemName: "", |
|||
qty: 0, |
|||
rawLocationCode: "", |
|||
fgLocationCode: "", |
|||
itemCodeFocus: false, |
|||
requestInfo: null, |
|||
itemCodeList: [], |
|||
counQty: undefined, |
|||
editPosition: true, |
|||
numberFocus: false, |
|||
uom: "", |
|||
positionInfo: "请选择位置", |
|||
show: false, |
|||
isModifiedPosition: true, |
|||
positionList: [], |
|||
stdQty: 0, //标包 |
|||
maxlength: 10, |
|||
stdPackInfo: undefined, |
|||
wareHouseList: [], |
|||
showWareHouse: false, |
|||
productLineList:[], |
|||
productLineCode:"" |
|||
} |
|||
}, |
|||
props: { |
|||
title: { |
|||
type: String, |
|||
default: '完工信息' |
|||
}, |
|||
itemCodeTypeList: { |
|||
type: Array, |
|||
default: [] |
|||
}, |
|||
}, |
|||
methods: { |
|||
checkNum(e) { |
|||
let value = e.detail.value; |
|||
let dot = value.indexOf('.'); //包含小数点 |
|||
let reg = /^[0-9]+$/; //正整数 |
|||
if (dot > -1) { |
|||
this.maxlength = dot + 7; //长度是小数点后两位 |
|||
if (value.length > dot + 7) { |
|||
|
|||
} |
|||
} |
|||
if (reg.test(value)) { //如果是正整数不包含小数点 |
|||
this.maxlength = 10; |
|||
} |
|||
this.change(value) |
|||
}, |
|||
openRequestPopup(editPosition) { |
|||
if (this.positionList.length == 0) { |
|||
getWorkShopLineStation().then(res => { |
|||
if (res.data != null && res.data.length > 0) { |
|||
this.positionList = res.data |
|||
} else { |
|||
this.showErrorMessage('未查找到位置信息'); |
|||
} |
|||
|
|||
}).catch(error => { |
|||
this.showErrorMessage(error); |
|||
}) |
|||
} |
|||
|
|||
|
|||
this.editPosition = editPosition; |
|||
if (this.isModifiedPosition) { |
|||
this.isModifiedPosition = false |
|||
} else { |
|||
this.itemCode = "请扫描物料信息"; |
|||
this.show = false |
|||
this.showWareHouse = false |
|||
this.uom = "" |
|||
this.qty = 0; |
|||
this.stdPackInfo = undefined; |
|||
this.counQty = undefined; |
|||
this.numberFocus = false |
|||
this.itemCodeGetFocus(); |
|||
} |
|||
|
|||
setTimeout(res => { |
|||
this.$refs.popup.open('bottom') |
|||
}, 500) |
|||
}, |
|||
initData() { |
|||
this.positionList = []; |
|||
this.wareHouseList= [], |
|||
this.showWareHouse = false |
|||
this.editPosition =true; |
|||
this.itemCode = "请扫描物料信息"; |
|||
this.rawLocationCode = "" |
|||
this.positionInfo = "请选择位置" |
|||
this.fromWarehouseCode = "请选择仓库代码" |
|||
this.workshopCode = "" //车间 |
|||
this.workShopName = "" |
|||
this.productionLineCode = "" //生产线 |
|||
this.productionLineName = "" |
|||
this.workStationCode = "" //工位 |
|||
this.workStationName = "" |
|||
this.show = false |
|||
this.uom = "" |
|||
this.qty = 0; |
|||
this.stdPackInfo = undefined; |
|||
this.counQty = undefined; |
|||
this.numberFocus = false |
|||
}, |
|||
|
|||
closeRequestPopup() { |
|||
this.$refs.popup.close() |
|||
}, |
|||
locationConfirm() { |
|||
//查询库位信息 |
|||
this.checkLocatioCode(); |
|||
}, |
|||
itemCodeClick() { |
|||
this.$refs.scanPopup.openScanPopup(); |
|||
}, |
|||
|
|||
itemCodeGetFocus() { |
|||
this.itemCodeFocus = true; |
|||
}, |
|||
itemCodeLoseFocus() { |
|||
this.itemCodeFocus = false; |
|||
}, |
|||
|
|||
confirm() { |
|||
if (this.positionInfo == "请选择位置") { |
|||
this.showErrorMessage("请选择位置") |
|||
return |
|||
} |
|||
|
|||
if (this.fromWarehouseCode == "请选择仓库代码") { |
|||
this.showErrorMessage("请选择仓库代码") |
|||
return |
|||
} |
|||
|
|||
|
|||
if (this.itemCode == "请扫描物料信息") { |
|||
this.showErrorMessage("请输入物料", "itemCode") |
|||
return |
|||
} |
|||
if (this.counQty == undefined) { |
|||
this.showErrorMessage("请输入数量") |
|||
return |
|||
} |
|||
|
|||
if (this.qty == 0) { |
|||
this.showErrorMessage("数量必须大于0") |
|||
return |
|||
} |
|||
|
|||
if (this.rawLocationCode == '') { |
|||
this.showErrorMessage(this.workStationName + "的原材料库位为空") |
|||
return |
|||
} |
|||
this.callback('add'); |
|||
}, |
|||
|
|||
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, |
|||
fromWarehouseCode: this.fromWarehouseCode, |
|||
toWarehouseCode: this.fromWarehouseCode, |
|||
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 = "请扫描物料信息" |
|||
} |
|||
}) |
|||
}, |
|||
change(value) { |
|||
this.qty = value; |
|||
}, |
|||
cancel(e) { |
|||
this.closeRequestPopup(); |
|||
}, |
|||
showSelect() { |
|||
if (this.editPosition) { |
|||
this.show = true |
|||
} |
|||
}, |
|||
|
|||
showWarseHouseSelect() { |
|||
if (this.editPosition) { |
|||
this.wareHouseClick(); |
|||
} |
|||
}, |
|||
|
|||
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) { |
|||
this.itemCode = code; |
|||
this.itemName = scanResult.name |
|||
this.uom = scanResult.uom |
|||
this.stdPackInfo = scanResult.package; |
|||
this.numberFocus = true |
|||
}, |
|||
wareHouseClick() { |
|||
uni.showLoading({ |
|||
title: "查询中....", |
|||
mask: true |
|||
}); |
|||
getWarehouseCodeList(1, 100).then(res => { |
|||
uni.hideLoading() |
|||
if (res.data != null && res.data.list.length > 0) { |
|||
res.data.list.forEach(item => { |
|||
item.value = item.code; |
|||
item.label = item.name; |
|||
}) |
|||
this.wareHouseList = res.data.list |
|||
this.showWareHouse = true |
|||
} else { |
|||
this.showErrorMessage('未查找到仓库代码'); |
|||
} |
|||
}).catch(error => { |
|||
uni.hideLoading() |
|||
this.showErrorMessage(error); |
|||
}) |
|||
}, |
|||
|
|||
|
|||
confirmWareHouse(e) { |
|||
this.fromWarehouseCode = e[0].value; |
|||
}, |
|||
|
|||
|
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
.title { |
|||
font-size: 30rpx; |
|||
} |
|||
</style> |
Loading…
Reference in new issue