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.6 KiB

<template>
<view class="">
<win-blank-view @goScan='openScanPopup' v-if="containerCode==''"></win-blank-view>
<view class="top_card" v-if="containerCode">
<view class="device-detail">
<view class="ljh_box nopad">
<view class="tit_ljh">
<text class="text_black">{{containerCode}}</text>
</view>
</view>
<view class="cell_box uni-flex uni-row margin_top">
<view class="cell_info" style="margin-bottom: 0;">
<view class="text_lightblue">生产线</view>
<view class="text_black text_bold">{{prodLine.prodLineCode}}</view>
<!-- 生产线 -->
</view>
<view class="cell_info cell_long" style="margin-bottom: 0;">
<view class="text_lightblue">原料库位</view>
<view class="text_black text_bold">{{prodLine.rawLocation}}</view>
<!-- 原料库位 -->
</view>
<view class="cell_info cell_long" style="margin-bottom: 0;">
<view class="text_lightblue">成品库位</view>
<view class="text_black text_bold">
{{prodLine.productLocation==null?'无':prodLine.productLocation}}
</view>
</view>
</view>
<!-- <view class="font_sm">
线边库位:
<text class="text_bold">{{prodLine.rawLocation}}</text>
</view> -->
</view>
</view>
<scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-detail">
<view v-if="fData.length>0" class="recept_form" style="padding-bottom: 10rpx;">
<view class="recept_form_info">
<view class="form_title">
<image class="icon_normal" src="@/static/icons_ui/icon_form.svg"></image>
<text class="text_bold">上层({{fCount}})</text>
</view>
<com-tj-product :tableData='fData' style='margin: 20rpx 16rpx 0;'></com-tj-product>
</view>
</view>
<view v-if="rData.length>0" class="recept_form">
<view class="recept_form_info">
<view class="form_title">
<image class="icon_normal" src="@/static/icons_ui/icon_form.svg"></image>
<text class="text_bold">下层({{rCount}})</text>
</view>
<com-tj-product :tableData='rData' style='margin: 10px;'></com-tj-product>
</view>
</view>
</scroll-view>
<view class="uni-flex uni-row new_btn_bot" v-if="containerCode">
<button type="primary" class="new_clear_btn btn_double" @click="clear()">清空</button>
<button class="new_save_btn btn_double" @click="submit()">提交</button>
</view>
<win-scan-button @goScan='openScanPopup' v-if="containerCode!=''"></win-scan-button>
<com-scan-tj-receipt ref='scanPopup' @getContainerResult='getContainerResult' @getDoorResult='getDoorResult'>
</com-scan-tj-receipt>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script>
import {
tjproductreceipt,
} from '@/api/index.js';
import {
showConfirmMsg,
goHome
} from '@/common/basic.js';
import winBlankView from '@/mycomponents/wincom/winBlankView.vue'
import winScanButton from '@/mycomponents/wincom/winScanButton.vue'
import comScanTjReceipt from '@/mycomponents/scan/comScanTjReceipt.vue'
import comTjProduct from '@/mycomponents/coms/comTjProduct.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import moment from 'moment'
export default {
name: 'tjReceipt',
components: {
winScanButton,
winBlankView,
comScanTjReceipt,
comTjProduct,
comMessage,
},
data() {
return {
scrollTop: 0,
old: {
scrollTop: 0
},
pageSize: 100,
pageIndex: 1,
containerCode: '',
produceDate: '',
prodLine: {},
locationCode: 'FG',
fData: [], //上层门板数据列表
rData: [], //下层门板数据列表
fCount: 0, //上层门板数量
rCount: 0, //下次门板数量
postion: '', //L R
containerItem: {} //器具对象
};
},
props: {
//是否按序收货
isOrderReceipt: {
type: Boolean,
value: false
}
},
mounted: function() {
console.log('isOrderReceipt', this.isOrderReceipt == true ? '是' : '否')
uni.setNavigationBarColor({
frontColor: '#ffffff',
backgroundColor: "#5A7CF3 !important"
})
},
onLoad() {
},
//返回首页
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}else if(e.index === 1){
window.location.reload();
}
},
methods: {
openScanPopup() {
this.$refs.scanPopup.openScanPopup(this.containerCode, this.containerItem, this.postion);
},
getContainerResult(code, containerItem, prodLine) {
this.containerItem = containerItem;
this.containerCode = code;
this.prodLine = prodLine;
},
getDoorResult(type, items) {
this.postion = type;
if (type === 'F') { //上层门板
this.fData = items;
this.fCount = items.filter(r => r.itemCode != 'N').length;
} else if (type === 'R') { //下层门板
this.rData = items;
this.rCount = items.filter(r => r.itemCode != 'N').length;
}
},
submit() {
let that = this;
if (this.prodLine === null) {
this.showMessage('生产线为空,请重新扫描器具编号');
return;
}
if (that.containerCode === '') {
this.showMessage('请扫描器具编号');
return;
}
if (that.fData.length === 0) {
this.showMessage('请扫描前门板二维码');
return;
}
if (that.rData.length === 0) {
this.showMessage('请扫描后门板二维码');
return;
}
uni.showLoading({
title: '提交中...',
mask: true
})
let receiptItem = {
worker: localStorage.userName,
warehouseCode: localStorage.warehouseCode,
number: "",
productionPlanNumber: "",
jobNumber: "",
completeTime: new Date(),
Company: localStorage.company,
// WorkShop: 'a', //车间
WorkShop: that.prodLine.workShop, //车间
prodLine: this.prodLine.prodLineCode,
locationCode: this.prodLine.productLocation,
rawLocation: this.prodLine.rawLocation, //线边
details: [] //子表
};
let rdateDetails = that.createDetail(that.rData);
let fdateDetails = that.createDetail(that.fData);
rdateDetails.forEach(r => {
receiptItem.details.push(r);
})
fdateDetails.forEach(r => {
receiptItem.details.push(r);
})
that.receipt(receiptItem);
},
createDetail(datas) {
let details = [];
datas.forEach(r => {
if (r.itemCode != 'N') {
let itemCode = r.itemCode;
let detail = {
seqNo: r.seq,
itemCode: r.itemCode,
item: {
id: 'FE2E4416-E5DC-B869-38DA-3A05028BE27D', //默认的零件Id,
name: '',
desc1: '',
desc2: ''
},
prodLine: this.prodLine.prodLineCode,
lot: r.lot,
position: r.position,
productNo: r.produceNo,
projectCode: this.containerItem.projectNo,
// program: r.projectNo,
batch: {
supplierBatch: '',
produceDate: this.produceDate + "T00:00:00",
},
packingCode: r.produceNo + r.itemCode, //
containerCode: this.containerCode,
warehouseCode: localStorage.warehouseCode,
qty: {
uom: "",
qty: 1
},
shift: '',
bomVersion: '',
locationCode: this.prodLine.productLocation,
rawLocation: this.prodLine.rawLocation, //线边
worker: localStorage.userName,
status: 2 //默认赋值成合格
// locationCode: that.prodLine.value,
// rawLocation: that.prodLine.value1,
};
details.push(detail)
}
})
return details;
},
receipt(receiptItem) {
let that = this;
let params = JSON.stringify(receiptItem);
console.log('param', params);
tjproductreceipt(params)
.then(res => {
that.showMessage('提交成功')
that.clearItems();
that.clearContainerCode();
that.hideLoading();
})
.catch(err => {
that.showMessage(err.message)
that.hideLoading();
});
},
hideLoading() {
uni.hideLoading();
},
clearItems() {
this.containerCode = '';
this.prodLine = {};
this.postion = '';
this.rData = [];
this.fData = [];
this.rCount = 0;
this.fCount = 0;
},
clear() {
showConfirmMsg('是否要清空所有数据?', confirm => {
if (confirm) {
this.clearItems();
}
})
},
showMessage(message) {
this.$refs.comMessage.showMessage(message);
},
upper: function(e) {
// console.log(e)
},
lower: function(e) {
// console.log(e)
},
scroll: function(e) {
// console.log(e)
this.old.scrollTop = e.detail.scrollTop;
},
}
};
</script>
<style scoped lang="scss">
.display-input {
padding: 5rpx 5rpx;
}
.display-text {
color: #666666;
font-size: 16px;
}
/deep/ .input-value {
font-size: 16px;
}
/deep/ .uni-collapse-item__title-text {
font-size: 16px;
}
</style>