2025-03-11 17:57:17 +08:00

404 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<u-navbar back-text="返回" title="到货单入库" :background="background"></u-navbar>
<u-form ref="testForm">
<u-form-item :border-bottom="false">
<p>单据:</p>
<u-select v-model="dlistShow" mode="single-column" value-name="id" :list="dlist" @confirm="selConfirm"
confirm-text="确认选择" />
<u-input :border="true" v-model="ReceiveRequestName" placeholder="请选择单据" :focus="focusReceiveRequest"
@confirm="checkReceiveRequest" style="background: #ffffff; margin-right: 10rpx" />
<u-button @click="selectReceiveRequest" type="primary" size="mini">选择单号</u-button>
</u-form-item>
<u-form-item :border-bottom="false">
<picker @change="bindPickerChange" :range="array">
<label>选择行:</label>
<label class="">{{array[index]}}</label>
</picker>
</u-form-item>
<u-form-item :border-bottom="false">
<label>物料描述:</label>
<label>{{description}}</label>
</u-form-item>
<u-form-item :border-bottom="false">
<u-row>
<u-col span="4"><label>制造日期:</label> </u-col>
<u-col span="8">
<picker mode="date" :end="endDate" @change="bindDateChange">
<label class="">{{date}}</label>
</picker>
</u-col>
</u-row>
</u-form-item>
<u-card style="border: 1rpx solid #0081ff" :show-head="false" :full="true"
:body-style="{ height: '100rpx' }">
<view slot="body">
<u-row>
<u-col span="6">
<view>应收数量:{{ REQUESTQUANTITY || '0' }}</view>
</u-col>
<u-col span="6">
<view>接收数量:{{ RECEIVEDQUANTITY || '0' }}</view>
</u-col>
</u-row>
</view>
</u-card>
<u-form-item :border-bottom="false">
<u-row>
<u-col span="4">
<p>来料条码:</p>
</u-col>
<u-col span="8">
<u-input :border="true" v-model="palletName" @confirm="AnalyBarCode" placeholder="请扫描条码"
:focus="focusPalletName" style="background: #ffffff;" />
</u-col>
</u-row>
</u-form-item>
<u-form-item :border-bottom="false">
<u-row>
<u-col span="4">
<p>货位条码:</p>
</u-col>
<u-col span="8">
<u-input :border="true" v-model="locationName" @confirm="AnalyBarCode" placeholder="请扫描货位"
style="background: #ffffff;" />
</u-col>
</u-row>
</u-form-item>
</u-form>
<uni-table ref="BoxList" :loading="loading" border stripe type="false">
<uni-tr>
<uni-th align="center">条码</uni-th>
<uni-th align="center">批次</uni-th>
<uni-th align="center">品名</uni-th>
<uni-th align="center">料号</uni-th>
<uni-th align="center">规格</uni-th>
<uni-th align="center">数量</uni-th>
<uni-th align="center">组织</uni-th>
<uni-th align="center">仓库</uni-th>
<uni-th align="center">货位</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in BoxListInfo" :key="index">
<!-- :style="getStyle(index)"-->
<!--:style="{ backgroundColor: item.color === 0 ? 'white' : 'blue' }" -->
<uni-td align="center">{{ item.MATERIALPACKING}}</uni-td>
<uni-td align="center">{{ item.CHARGE}}</uni-td>
<uni-td align="center">{{ item.DESC_CN}}</uni-td>
<uni-td align="center">{{ item.MATERIALSPECNAME }}</uni-td>
<uni-td align="center">{{ item.DESCRIPTION }}</uni-td>
<uni-td align="center">{{ item.MATERIALQUANTITY }}</uni-td>
<uni-td align="center">{{ item.ERPFACTORY }}</uni-td>
<uni-td align="center">{{ item.ERPLOCATION }}</uni-td>
<uni-td align="center">{{ item.LOCATIONNAME }}</uni-td>
</uni-tr>
</uni-table>
<u-button @click="GenerateBox" style="background: #0081ff; color: #ffffff">确认提交</u-button>
</view>
</template>
<script>
import {
print
} from '../../../../common/BluetoothPrint.js';
export default {
data() {
return {
array: ['请选择行号'],
background: {
backgroundImage: 'linear-gradient(45deg, rgb(28, 187, 180), rgb(141, 198, 63))'
},
date: this.getDate(),
index: 0,
REQUESTQUANTITY: 0,
RECEIVEDQUANTITY: 0,
RECEIVEACT:'',
MATERIALSPECNAME:'',
BOX_QTY: "",
palletName: "",
focusPalletName: false,
ReceiveRequestName: "",
focusReceiveRequest: "",
dlist: [], //选择内容
dlistShow: false, //是否显示选择框
description: "描述",
loading: false,
BoxListInfo: [],
jg: "",
zpl: "",
focusBoxQty: false,
rangedata: [],
}
},
created() {
//挂载页面的时候就查询下拉框的数据,这是无参请求所以没参数
this.$MyRequest('/split/getbluetoothprinter', {}, 'GET').then(res => {
if (res.data.success) {
this.rangedata = res.data.resultObj //接数据,是一个对象数组
this.show = true //设置为true展示picker组件
} else {
console.log(this.data.message)
}
}).catch(err => {
this.$showMessage(err)
});
let that = this
uni.getStorage({
key: "sitename",
success(res) {
that.siteName = res.data
}
})
uni.getStorage({
key: "userid",
success(res) {
that.userId = res.data
}
})
},
computed: {
endDate() {
return this.getDate();
}
},
methods: {
selConfirm(e) {
this.ReceiveRequestName = e[0].value;
this.checkReceiveRequest();
},
bindPickerChange: function(e) { //改变的事件名
console.log('picker发送选择改变携带值为', e.target.value) // 用于输出改变索引值
this.index = e.target.value //将数组改变索引赋给定义的index变量
this.jg = this.array[this.index] //将array【改变索引】的值赋给定义的jg变量
this.$MyRequest('/barCode/getSLInfo', {
ReceiveRequestName: this.jg
}).then(res => {
if (res.data.success) {
var _Arr = res.data.resultObj;
for (let i = 0; i < _Arr.length; ++i) {
this.description = _Arr[i]['DESCRIPTION'];
this.REQUESTQUANTITY = _Arr[i]['PLAN_QTY'];
this.RECEIVEDQUANTITY = _Arr[i]['PRTBARCODEQTY'];
this.MATERIALSPECNAME=_Arr[i]['MATERIALSPECNAME'];
}
}
}).catch(err => {
this.$showMessage(err)
})
},
getDate() {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
return `${year}-${month}-${day}`;
},
bindDateChange: function(e) {
this.date = e.detail.value;
},
//查找代打条码的领料单集合
selectReceiveRequest() {
this.dlist = [];
this.BoxListInfo = [];
this.$MyRequest('/barCode/getSLList', {
ReceiveRequestName: this.ReceiveRequestName
}).then(res => {
console.log(res.data)
if (res.data.success) {
console.log(res.data.resultObj.length)
for (var i = 0; i <= res.data.resultObj.length; i++) {
console.log(res.data.resultObj[i].RECEIVEREQUESTNAME)
this.dlist.push({
id: res.data.resultObj[i].RECEIVEREQUESTNAME,
label: res.data.resultObj[i].RECEIVEREQUESTNAME
});
console.log(this.dlist);
this.dlistShow = true;
this.checkReceiveRequest();
}
}
}).catch(err => {
this.$showMessage(err)
})
},
checkReceiveRequest() {
this.resetValue();
this.$MyRequest('/barCode/getSLCBM', {
ReceiveRequestName: this.ReceiveRequestName
}).then(res => {
if (res.data.success) {
var _Arr = res.data.resultObj;
for (let i = 0; i < _Arr.length; ++i) {
console.log(_Arr[i])
this.array[i] = _Arr[i]['WL'];
}
}
this.focusBarCode = true
this.focusReceiveRequest = false
}).catch(err => {
this.$showMessage(err)
})
},
//创建条码信息
AnalyBarCode() {
//判断标签是否扫过了
if (this.BoxListInfo.some(box => box.MATERIALPACKING === this.palletName)) {
this.$showMessage("改标签已扫描,请不要重复扫描!");
return;
}
if(parseFloat(this.REQUESTQUANTITY)*1.05<parseFloat(this.RECEIVEDQUANTITY))
{
this.$showMessage("标签数量大于最大接收数量");
return;
}
var barCodeArr = this.palletName.split("|");
// 470110856|1|C|75mm*1000m|SHBP01JT1202305240009|20230524|11|75
if (barCodeArr.length != 8) return;
var materialSpecName = barCodeArr[0];
var phase = barCodeArr[2];
var description = barCodeArr[3];
var materialPackingName = barCodeArr[4];
var makeDate = barCodeArr[5];
var materialUnit = barCodeArr[6];
var materialQuantity = barCodeArr[7];
if(!(this.MATERIALSPECNAME==materialSpecName))
{
this.$showMessage("该标签物料与到货单明细物料不相同")
return;
}
if (Number(this.RECEIVEDQUANTITY) + Number(materialQuantity) > Number(this.REQUESTQUANTITY)) {
this.$showMessage("可收货数量不足")
return;
}
this.RECEIVEDQUANTITY = Number(this.RECEIVEDQUANTITY) + Number(materialQuantity);
//生成入库单,判断入库单状态
this.$MyRequest('/invoice/createActNo', {
ReceiveRequestName: this.jg, //单号
palletName: this.palletName,
makeDate: new Date(),
qty: this.BOX_QTY
}).then(res => {
console.log(res.data.success)
if (res.data.success) {
var _Arr = res.data.resultObj;
console.log(_Arr)
this.BoxListInfo.push(_Arr[0]);
console.log("***********************")
console.log(this.BoxListInfo)
}
this.focusBarCode = true
this.focusReceiveRequest = false
}).catch(err => {
this.$showMessage(err)
})
this.BOX_QTY = "";
this.focusBoxQty = true;
},
GenerateBox() {
if (this.BoxListInfo.length > 0) {
let macaddress = this.rangedata[0].ENUMVALUE
this.$MyRequest('/barCode/getZICOXCPCL', {
info: this.BoxListInfo
}).then(res => {
if (res.data.success) {
this.zpl = res.data.resultObj[0]['LABELSTRING'].toString();
console.log(this.zpl)
}
}).catch(err => {
this.$showMessage(err)
})
for (let i = 0; i < this.BoxListInfo.length; ++i) {
let _zpl = '! 0 200 200 400 1\n' +
'PAGE-WIDTH 560\n' +
/* 'PW 848\n' + */
'TONE 0\n' +
'SPEED 0\n' +
'GAP-SENSE\n' +
'NO-PACE\n' +
'POSTFEED 0\n' +
'LEFT\n' +
'T 65 1 20 20 物料编码:\n' +
'SETBOLD 2\n' +
'T 65 1 135 20 ' + this.BoxListInfo[i]['MATERIALSPECNAME'] + '\n' +
'SETBOLD 0\n' +
'T 65 1 20 50 客供料号:\n' +
'T 65 1 135 50 ' + this.BoxListInfo[i]['FK_TWH_NUMBER'] + '\n' +
'T 65 0 20 80 物料名称:\n' +
'T 65 1 135 80 ' + this.BoxListInfo[i]['DESCRIPTION'] + '\n' +
'T 65 0 20 110 SN\n' +
'T 65 1 135 110 ' + this.BoxListInfo[i]['MATERIALPACKING'] + '\n' +
'T 65 0 20 140 客户S/N\n' +
'T 65 1 135 140 ' + this.BoxListInfo[i]["SOURCESN"] + '\n' +
'T 65 0 20 170 供应商:\n' +
'T 65 1 135 170 ' + this.BoxListInfo[i]["SUPPLIERNAME"] + '\n' +
'T 65 0 20 200 批次:\n' +
'T 65 1 135 200 ' + this.BoxListInfo[i]["CHARGE"] + '\n' +
'T 65 0 20 230 收料日期:\n' +
'T 65 1 135 230 ' + this.BoxListInfo[i]['SLDATE'] + '\n' +
'T 65 0 20 260 数量:\n' +
'T 65 1 135 260 ' + this.BoxListInfo[i]['QTY'] + '\n' +
'SETBOLD 2\n' +
'SETBOLD 0\n' +
'B QR 400 230 M 6 U 3\n' +
'MA,' + this.BoxListInfo[i]['MATERIALPACKING'] + '\n' +
'ENDQR\n' +
/* 'B 128 2 1 50 50 560 ' + this.barCode + '\n' +
'T 65 1 200 620 ' + this.barCode + '\n' + */
'FORM\n' +
'PRINT\n';
console.log(_zpl);
print(macaddress, _zpl);
}
this.BoxListInfo = []
} else {
this.$showMessage("入库标签数量为空!")
}
},
resetValue() {
this.palletName = "";
this.BOX_QTY = "";
this.BoxListInfo = [];
this.PLAN_QTY = 0;
this.PRTBARCODEQTY = 0;
this.description = "";
this.array = [];
}
}
}
</script>
<style>
</style>