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.

298 lines
6.9 KiB

2 years ago
<template>
<uni-popup ref="popup">
<scroll-view scroll-y="true" class="scroll-Y">
<view class="popup_box">
<view class="pop_title">
扫描信息
<text class="fr" @click="closeScanPopup()">关闭</text>
</view>
<view class="uni-steps">
<com-steps-custom :options="list" :active="active"></com-steps-custom>
</view>
<view class="pop_tab">
<view class="tab_info tab_notitle">
<win-com-scan ref="scancom" @getScanResult="getScanResult" :placeholder="scanPlaceholder"
:boxFocus="true" :clearResult="true"></win-com-scan>
</view>
<view class="uni-list popuni_list" v-if="prodLine!=null">
<view class="list_cell uni-flex uni-row space-between">
<view>生产线</view>
<text>{{prodLine.code}}</text>
</view>
<view class="list_cell uni-flex uni-row space-between">
<view>需求库位</view>
<text>{{prodLine.rawLocation}}</text>
</view>
<view class="list_cell uni-flex uni-row space-between">
<view>需求数量</view>
<uni-easyinput ref='qtyInput' type="number" placeholder="请填写"
placeholderStyle="font-size:0.875rem" @input="allQtyInput" @confirm="qtyConfirm">
</uni-easyinput>
</view>
</view>
<view class="list_card">
<view class="ljh_box" v-for="(item, index) in itemList">
<com-replen :dataContent="item" :editQty="true"></com-replen>
</view>
</view>
</view>
<view class="pop_btn uni-flex uni-row space-between">
<button class="cancel" @click="cancel">取消</button>
<button class="save" @click="save">确定</button>
</view>
<!-- com-message必须放在最下层 -->
<com-message ref="comMessage"></com-message>
</view>
</scroll-view>
</uni-popup>
</template>
<script>
import comStepsCustom from '@/mycomponents/common/comStepsCustom.vue'
import winComScan from '@/mycomponents/wincom/winComScan.vue'
import comReplen from '@/mycomponents/coms/task/comReplen.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import {
getItemAsync,
getprodlineitem,
checkIssueJobExistAsync
} from '@/api/index.js';
import {
showConfirmMsg,
} from '@/common/basic.js';
export default {
name: 'comScanReplen',
components: {
comStepsCustom,
winComScan,
comReplen,
comMessage
},
data() {
return {
options2: [{
text: '移除',
style: {
backgroundColor: '#F56C6C'
}
}],
active: 0,
list: [{
title: '扫描生产线',
num: "1"
}, {
title: '扫描零件',
num: "2"
}],
itemList: [],
prodLine: {},
locationCode: '',
scanPlaceholder: '扫描生产线'
};
},
props: {
},
mounted() {
},
onPullDownRefresh() {
},
methods: {
openScanPopup(prodLine, itemList) {
if (itemList.length > 0) {
this.prodLine = prodLine;
this.locationCode = prodLine.rawLocation;
this.itemList = itemList;
this.active = 1
}
this.$refs.popup.open('bottom')
},
closeScanPopup() {
this.$refs.popup.close()
},
getScanResult(result) {
if (this.active == 0) //库位
{
this.scanProdLine(result);
11 months ago
} else //ERP料号
2 years ago
{
this.scanItem(result);
}
},
//扫描库位
scanProdLine(result) {
uni.showLoading({
title: '正在扫描',
mask: true
})
let prodCode = result.data.code;
if (prodCode != '') {
getprodlineitem(prodCode)
.then(res => {
if (res != null) {
this.prodLine = res;
this.locationCode = res.rawLocation;
//rawLocation
this.afterProdLine();
} else {
this.showMessage('未查询到生产线' + locationCode);
}
uni.hideLoading();
})
.catch(err => {
this.showMessage(err.message);
uni.hideLoading();
});
}
},
//扫描完库位的下一步动作
afterProdLine() {
this.active += 1;
this.scanPlaceholder = '扫描零件';
},
11 months ago
//扫描ERP料号
2 years ago
scanItem(result) {
let itemCode = '';
if (result.data.scanType === 'qrcode') {
itemCode = result.data.itemCode;
} else if (result.data.scanType === 'barcode') {
itemCode = result.data.code;
}
if (itemCode === null || itemCode === '') {
11 months ago
this.showMessage('未解析到ERP料号');
2 years ago
return;
} else {
let that = this;
let items = that.itemList.filter(r => {
return r.code === itemCode
});
if (items.length > 0) {
showConfirmMsg('零件已经存在,是否要请重新扫描?', confirm => {
if (confirm) {
that.deleteItemCode(itemCode);
that.getItemInfo(itemCode);
}
});
} else {
that.getItemInfo(itemCode);
}
}
},
async getItemInfo(itemCode) {
11 months ago
//按ERP料号查询零件
2 years ago
let that = this;
uni.showLoading({
title: '加载中',
mask: true
})
let itemInfo = await getItemAsync(itemCode);
if (itemInfo != null) {
let params = {
itemCode: itemCode,
locationCode: that.locationCode
};
let issueInfo = await checkIssueJobExistAsync(params);
if (issueInfo.length > 0) {
showConfirmMsg('[' + itemCode + ']到库位[' + that.locationCode + ']已存在发料任务,是否继续补料',
confirm => {
if (confirm) {
that.addItemInfo(itemInfo);
}
})
} else {
that.addItemInfo(itemInfo);
}
} else {
that.showMessage('未查询到零件' + itemCoe);
}
uni.hideLoading();
},
addItemInfo(item) {
item.qty = {
qty: 1,
uom: ''
};
this.itemList.unshift(item)
},
//需求数量
allQtyInput(e) {
let that = this;
that.itemList.forEach(r => {
r.qty.qty = Number(e)
})
},
//删除已经扫描的零件
deleteItemCode(itemCode) {
let that = this;
that.itemList.forEach((r, i) => {
if (r.code === itemCode) {
that.itemList.splice(i, 1);
return;
}
});
this.$forceUpdate();
},
save() {
let that = this;
if (this.locationCode == '') {
return;
} else if (this.itemList.length == 0) {
return;
} else {
this.itemList.forEach(r => {
r.itemCode = r.code;
r.item = {
id: r.id,
name: r.name,
desc1: r.desc1,
desc2: r.desc2,
};
r.qty.uom = r.basicUom,
r.toLocationCode = that.locationCode;
r.worker = localStorage.userName_CN ==""?localStorage.userName:localStorage.userName_CN
2 years ago
})
this.closeScanPopup();
this.$emit('confirm', this.prodLine, this.itemList)
this.cancel();
}
},
//取消
cancel() {
this.active = 0;
this.prodLine = {};
this.locationCode = ''
this.itemList = [];
this.scanPlaceholder = '扫描生产线';
},
//关闭
close() {
this.$emit("close");
},
showMessage(message) {
this.$refs.comMessage.showMessage(message);
},
}
};
</script>
<style>
</style>