5 changed files with 448 additions and 79 deletions
@ -0,0 +1,281 @@ |
|||
<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 style="width: 80px;">目标库位:</text> |
|||
<view class="" style="width: 70% ;"> |
|||
{{toLocationCode}} |
|||
</view> |
|||
<view class=""> |
|||
<image src="/static/search.svg" mode="" |
|||
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" |
|||
@click="locationCodeClick"> |
|||
</image> |
|||
</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> |
|||
<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> |
|||
|
|||
<win-scan-location ref="scanLocationPopup" title='目标库位' @getLocation='getLocationCode' |
|||
:locationTypeList="toLocationTypeList"> |
|||
</win-scan-location> |
|||
|
|||
<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' |
|||
import winScanLocation from '@/mycomponents/scan/winScanLocation.vue' |
|||
|
|||
export default { |
|||
components: { |
|||
uom, |
|||
balanceStatus, |
|||
comMessage, |
|||
winScanItem, |
|||
winScanLocation |
|||
}, |
|||
data() { |
|||
return { |
|||
itemCode: '请扫描物料信息', |
|||
toLocation: {}, |
|||
toLocationCode: '请扫目标库位', |
|||
itemName: "", |
|||
qty: 0, |
|||
rawLocationCode: "", |
|||
fgLocationCode: "", |
|||
itemCodeFocus: false, |
|||
isCheckItemCode: false, |
|||
counQty: 0, |
|||
editPosition: true, |
|||
numberFocus: false, |
|||
uom: "", |
|||
positionInfo: "请选择位置", |
|||
show: false, |
|||
isModifiedPosition: true, |
|||
positionList: [], |
|||
} |
|||
}, |
|||
props: { |
|||
title: { |
|||
type: String, |
|||
default: '补料需求信息' |
|||
}, |
|||
toLocationTypeList: { |
|||
type: Array, |
|||
default: [] |
|||
}, |
|||
}, |
|||
mounted() { |
|||
|
|||
}, |
|||
methods: { |
|||
openRequestPopup(editPosition) { |
|||
// this.editPosition = editPosition; |
|||
// if (this.isModifiedPosition) { |
|||
// this.isModifiedPosition = false |
|||
// } else { |
|||
// this.itemCode = ""; |
|||
// this.uom = "" |
|||
// this.qty = 0 |
|||
// this.itemCodeGetFocus(); |
|||
// } |
|||
|
|||
this.$refs.popup.open('bottom'); |
|||
this.showScanLocation(); |
|||
}, |
|||
closeRequestPopup() { |
|||
this.$refs.popup.close() |
|||
}, |
|||
|
|||
locationCodeClick() { |
|||
this.showScanLocation(); |
|||
}, |
|||
|
|||
showScanLocation() { |
|||
this.$nextTick(() => { |
|||
this.$refs.scanLocationPopup.openScanPopup(); |
|||
}) |
|||
}, |
|||
|
|||
itemCodeClick() { |
|||
this.$refs.scanPopup.openScanPopup(); |
|||
}, |
|||
|
|||
showScanItem() { |
|||
this.$nextTick(() => { |
|||
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 |
|||
} |
|||
|
|||
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 = { |
|||
toLocation: this.toLocation, |
|||
itemCode: this.itemCode, |
|||
itemName: this.itemName, |
|||
uom: this.uom, |
|||
qty: this.qty |
|||
}; |
|||
this.closeRequestPopup(); |
|||
this.$emit("confirm", action, item); |
|||
}, |
|||
|
|||
|
|||
change(value) { |
|||
this.qty = value; |
|||
}, |
|||
|
|||
cancel(e) { |
|||
this.closeRequestPopup(); |
|||
}, |
|||
|
|||
getScanCode(code) { |
|||
if (code == "") { |
|||
this.showErrorMessage('物料号不能为空') |
|||
return; |
|||
} |
|||
this.itemCode = ""; |
|||
this.checkItemCode(code) |
|||
}, |
|||
|
|||
getLocationCode(location, code) { |
|||
if (location != null) { |
|||
this.toLocation = location; |
|||
this.toLocationCode = code; |
|||
this.showScanItem(); |
|||
} |
|||
}, |
|||
|
|||
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; |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
.title { |
|||
font-size: 30rpx; |
|||
} |
|||
</style> |
Loading…
Reference in new issue