431 lines
14 KiB
Vue
Raw Normal View History

2025-03-10 13:49:13 +08:00
<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="dlistShowA" mode="single-column" value-name="id" :list="dlistA" @confirm="selConfirmA" confirm-text="确认选择" />
<u-input
:border="true"
v-model="shipRequestName"
placeholder="请选择单据"
:focus="focusShipRequest"
@confirm="checkShipRequest"
style="background: #ffffff; margin-right: 10rpx"
/>
<u-button @click="selectShipRequest">选择单号</u-button>
</u-form-item>
<u-form-item :border-bottom="false">
<p>订单行项:</p>
<u-select v-model="dlistShowB" mode="single-column" value-name="id" :list="dlistB" @confirm="selConfirmB" confirm-text="确认选择" />
<u-input
:border="true"
v-model="shipRequestNameDetail"
placeholder="请选择行项"
:focus="focusShipRequestDetail"
@confirm="checkShipRequestDetail"
style="background: #ffffff; margin-right: 10rpx"
/>
<u-button @click="selectShipRequestDetail">选择订单行项</u-button>
</u-form-item>
<u-form-item :border-bottom="false">
<p>栈板:</p>
<u-input
:border="true"
v-model="palletName"
placeholder="请扫描栈板"
:focus="focusPalletName"
@confirm="SearchPalletInfo"
style="background: #ffffff; margin-right: 10rpx"
/>
</u-form-item>
</u-form>
<u-card style="border: 1rpx solid #0081ff" :show-head="false" :full="true" :body-style="{ height: '320rpx' }">
<view slot="body">
<u-row>
<u-col span="10">
<view>单据类型{{ SHIPREQUESTDETAILTYPE || '' }}</view>
</u-col>
<u-col span="10">
<view>ERP工厂{{ erpFactoryName || '' }}</view>
</u-col>
<u-col span="10">
<view>ERP库位{{ erpLocationName || '' }}</view>
</u-col>
<u-col span="10">
<view>fgcode{{ productSpec || '' }}</view>
</u-col>
<u-col span="10">
<view>等级{{ PackingGrade || '' }}</view>
</u-col>
<u-col span="10">
<view>请求数量{{ requestQuantity || '0' }}</view>
</u-col>
<u-col span="10">
<view>出库数量{{ assignedQuantity || '0' }}</view>
</u-col>
</u-row>
</view>
</u-card>
<view>
<uni-table ref="table" :loading="loading" border stripe type="false">
<uni-tr>
<uni-th align="center">fgcode</uni-th>
<uni-th align="center">等级</uni-th>
<uni-th align="center">panel数量</uni-th>
<uni-th align="center">box数量</uni-th>
<uni-th align="center">checkincode</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in PalletInfo" :key="index" @row-click="rowclick(item)" :style="{ backgroundColor: '' }">
<uni-td align="center">{{ item.PRODUCTSPECNAME }}</uni-td>
<uni-td align="center">{{ item.PACKINGGRADE }}</uni-td>
<uni-td align="center">{{ item.PRODUCTQUANTITY }}</uni-td>
<uni-td align="center">{{ item.SUBPACKINGQUANTITY }}</uni-td>
<uni-td align="center">{{ item.CHECKINCODE }}</uni-td>
</uni-tr>
</uni-table>
<u-button :loading="Comloading" @click="ReserveStockOut" style="background: #0081ff; color: #ffffff">确认出库</u-button>
</view>
</view>
</template>
<script>
import { QueryInfo, ReserveStockOutPallet } from '../../../../common/api.js';
export default {
data() {
return {
background: {
backgroundImage: 'linear-gradient(45deg, rgb(28, 187, 180), rgb(141, 198, 63))'
},
myStyle: {
background: '#007aff'
},
Comloading: false,
//下拉框属性---------------------------------------
dlistShowA: false, //是否显示单据选择框
dlistShowB: false, //是否显示单据行项选择框
dlistA: [], //选择单据内容
dlistB: [], //选择单据行项内容
shipRequestName: '', //text绑定的订单号
shipRequestNameDetail: '', //text绑定的订单行项
//焦点-----------------------------------------------
focusShipRequest: true, //订单焦点
focusShipRequestDetail: false, //订单行项焦点
focusPalletName: false, //pallet焦点
//pallet扫码和信息列表-------------------------------
shipRequestInfo: [], //校验订单时查询订单信息
shipRequestDetailInfo: [], //校验订单行项时查询订单详细信息
palletName: '', //text绑定的栈板号
PalletInfo: [], //pallet查询信息显示在表格
//卡片绑定信息--------------------------------------
erpFactoryName: '', //ERP工厂
erpLocationName: '', //ERP库位
SHIPREQUESTDETAILTYPE: '', //单据类型
productSpec: '', //fgcode
PackingGrade: '', //等级
requestQuantity: '', //请求数量
assignedQuantity: '', //绑定数量
//查询-----------------------------------------------
Queryaram: {
queryID: '',
version: '',
BINDV: {}
},
stockOut: {
SITENAME: '',
USERNAME: '',
SHIPREQUESTNAME: '',
SHIPREQUESTDETAILNAME: '',
PRODUCTPACKINGNAME: ''
}
};
},
methods: {
//焦点初始化,让页面所有的焦点同时只能存在一个
initfocus() {
this.focusShipRequest = true;
this.focusShipRequestDetail = false;
this.focusPalletName = false;
},
//获取焦点的公共方法
getfocus(nextfocus) {
this.initfocus();
this[nextfocus]; //不能用this.nextfocus
this.$nextTick(() => {
this[nextfocus] = true;
});
},
//弹出的选择器的值赋值给单号输入框----------
selConfirmA(e) {
this.shipRequestName = e[0].value;
this.checkShipRequest();
},
selConfirmB(e) {
this.shipRequestNameDetail = e[0].value;
this.checkShipRequestDetail();
},
//查询选择器的订单号
selectShipRequest() {
this.dlistA = []; //清空下拉选择,否则会重复添加
let _param = this.Queryaram;
_param.queryID = 'GetShipRequestList';
_param.version = 'YYL06';
_param.BINDV.SITENAME = uni.getStorageSync('SITENAME');
_param.BINDV.SHIPREQUESTNAME = '%' + this.shipRequestName.trim() + '%';
QueryInfo({
param: JSON.stringify(_param)
})
.then((res) => {
if (res.DATA != undefined) {
for (var i = 0; i <= res.DATA.length; i++) {
this.dlistA.push({
id: res.DATA[i].SHIPREQUESTNAME,
label: res.DATA[i].SHIPREQUESTNAME
});
this.dlistShowA = true;
}
} else {
this.$showMessage('未查询到单据明细');
this.shipRequestName = ''; //清空text
}
})
.catch((err) => {
this.$showMessage(err);
return;
});
},
//查询选择器的订单行项
selectShipRequestDetail() {
this.dlistB = []; //清空下拉选择,否则会重复添加
let _param = this.Queryaram;
_param.queryID = 'GetShipRequestList';
_param.version = 'xx009';
_param.BINDV.SITENAME = uni.getStorageSync('SITENAME');
_param.BINDV.SHIPREQUESTNAME = this.shipRequestName.trim();
QueryInfo({
param: JSON.stringify(_param)
})
.then((res) => {
if (res.DATA != undefined) {
//查询订单信息
this.erpFactoryName = '', //赋值前先清空
this.erpLocationName = '',
this.SHIPREQUESTDETAILTYPE = '',
this.shipRequestInfo = res.DATA;
this.erpFactoryName = this.shipRequestInfo[0]['ERPFACTORYNAME'];
this.erpLocationName = this.shipRequestInfo[0]['ERPLOCATIONNAME'];
this.SHIPREQUESTDETAILTYPE = this.shipRequestInfo[0]['SHIPREQUESTDETAILTYPE'];
for (var i = 0; i <= this.shipRequestInfo.length; i++) {
this.dlistB.push({
id: res.DATA[i].SHIPREQUESTDETAILNAME,
label: res.DATA[i].SHIPREQUESTDETAILNAME
});
this.dlistShowB = true;
}
} else {
this.$showMessage('未查询到单据行项');
this.shipRequestNameDetail = ''; //清空text
}
})
.catch((err) => {
this.$showMessage(err);
return;
});
},
//查询订单信息是否为空,不为空就跳转到订单行项
checkShipRequest() {
if (this.shipRequestName == null || '' == this.shipRequestName.trim()) {
this.$showMessage('订单为空,请确认', 'error');
return;
}
this.cleardetailInfo(); //清空订单明细以及pallet信息
this.getfocus('focusShipRequestDetail');
},
//校验订单行项信息
checkShipRequestDetail() {
if (this.shipRequestNameDetail == null || '' == this.shipRequestNameDetail.trim()) {
this.$showMessage('订单为空,请确认', 'error');
return;
}
let _param = this.Queryaram;
_param.queryID = 'GetShipRequestList';
_param.version = 'xx010';
_param.BINDV.SITENAME = uni.getStorageSync('SITENAME');
_param.BINDV.SHIPREQUESTNAME = this.shipRequestName.trim();
_param.BINDV.SHIPREQUESTDETAILNAME = this.shipRequestNameDetail.trim();
QueryInfo({
param: JSON.stringify(_param)
})
.then((res) => {
this.shipRequestDetailInfo = res.DATA;
//将行项信息清空,然后进行赋值
this.productSpec = '';
this.PackingGrade = '';
this.requestQuantity = '';
this.assignedQuantity = '';
this.productSpec = this.shipRequestDetailInfo[0]['PRODUCTSPECNAME'];
this.PackingGrade = this.shipRequestDetailInfo[0]['GRADE'];
this.requestQuantity = this.shipRequestDetailInfo[0]['REQUESTQUANTITY'];
this.assignedQuantity = this.shipRequestDetailInfo[0]['ASSIGNEDQUANTITY'];
if (
this.SHIPREQUESTDETAILTYPE != 'S30028' &&
this.SHIPREQUESTDETAILTYPE != 'S30029' &&
this.SHIPREQUESTDETAILTYPE != 'S30629'
) {
this.$showMessage('单据类型不正确:' + this.SHIPREQUESTDETAILTYPE);
this.shipRequestName = '';
this.shipRequestNameDetail = ''; //清空text
this.productSpec = '';
this.PackingGrade = '';
this.requestQuantity = '';
this.assignedQuantity = '';
return;
}
if (this.requestQuantity == this.assignedQuantity) {
this.$showMessage('该订单行项目已完全出库');
this.shipRequestNameDetail = ''; //清空text
this.productSpec = '';
this.PackingGrade = '';
this.requestQuantity = '';
this.assignedQuantity = '';
this.getfocus('focusShipRequestDetail');
} else {
this.getfocus('focusPalletName');
}
})
.catch((err) => {
this.$showMessage(err);
return;
});
},
//扫描pallet回车后查询pallet信息到表格
SearchPalletInfo() {
let _param = this.Queryaram;
_param.queryID = 'GetPalletRow';
_param.version = 'YYL03';
_param.BINDV.SITENAME = uni.getStorageSync('SITENAME');
_param.BINDV.PRODUCTPACKINGNAME = this.palletName.trim();
QueryInfo({
param: JSON.stringify(_param)
})
.then((res) => {
if (res.DATA != undefined) {
this.PalletInfo = res.DATA;
//校验pallet信息是否符合标准
let leaveCount = this.requestQuantity - this.assignedQuantity;
if (parseInt(this.PalletInfo[0]['PRODUCTQUANTITY']) > leaveCount) {
this.$showMessage('该托数量超过该订单行项剩余数量,无法拣配:' + this.palletName);
this.PalletInfo = [];
this.palletName = '';
return;
}
if (this.PalletInfo[0]['ERPFACTORYNAME'] != this.erpFactoryName.trim()) {
this.$showMessage('该托ERP工厂与订单不匹配:' + this.palletName);
this.PalletInfo = [];
this.palletName = '';
return;
}
if (this.PalletInfo[0]['ERPLOCATIONNAME'] != this.erpLocationName.trim()) {
this.$showMessage('该托ERP库位与订单不匹配:' + this.palletName);
this.PalletInfo = [];
this.palletName = '';
return;
}
if (this.PalletInfo[0]['PRODUCTSPECNAME'] != this.productSpec.trim()) {
this.$showMessage('该托fgcode与订单不匹配:' + this.palletName);
this.PalletInfo = [];
this.palletName = '';
return;
}
// if(this.PalletInfo[0]['PACKINGGRADE']!=this.PackingGrade.trim()){
// this.$showMessage('该托等级与订单不匹配:'+this.palletName);
// this.PalletInfo=[];
// this.palletName='';
// return;
// }
} else {
this.$showMessage(' 是否被冻结和拣配,或者托盘不在库:' + this.palletName);
this.PalletInfo = [];
this.palletName = '';
return;
}
})
.catch((err) => {
this.$showMessage(err);
this.PalletInfo = [];
this.palletName = '';
return;
});
},
//确认出库
ReserveStockOut() {
if (this.shipRequestName == '') {
this.$showMessage('订单号不能为空');
return;
}
if (this.shipRequestNameDetail == '') {
this.$showMessage('订单行项不能为空');
return;
}
if (this.palletName == '') {
this.$showMessage('未扫入Pallet,请扫入Pallet信息');
return;
}
if (
this.SHIPREQUESTDETAILTYPE != 'S30028' &&
this.SHIPREQUESTDETAILTYPE != 'S30029' &&
this.SHIPREQUESTDETAILTYPE != 'S30629'
) {
this.$showMessage('单据类型不正确,请确认该单据是否在该页面出:' + this.SHIPREQUESTDETAILTYPE);
this.cleardetailInfo();
return;
}
this.Comloading = true;
this.stockOut.SITENAME = uni.getStorageSync('SITENAME'); //现地
this.stockOut.USERNAME = uni.getStorageSync('username'); //操作人
this.stockOut.SHIPREQUESTNAME = this.shipRequestName;
this.stockOut.SHIPREQUESTDETAILNAME = this.shipRequestNameDetail;
this.stockOut.PRODUCTPACKINGNAME = this.palletName;
//发送出库请求
ReserveStockOutPallet({
param: JSON.stringify(this.stockOut)
})
.then((res) => {
if (res['status'] == 'success') {
this.$showMessage(res['message'][0]); //后端返回的信息
this.cleardetailInfo();
this.$playSuccess(); //成功提示音
this.getfocus('focusShipRequestDetail'); //焦点聚焦到条码
} else {
this.$showMessage(res['message'][0]);
this.$playFail(); //提示音
}
this.Comloading = false;
})
.catch((err) => {
this.Comloading = false;
console.log(err);
//调用失败的话报错提示
this.$showMessage(err);
this.$palyFail();
});
},
//清空pallet信息和明细信息
cleardetailInfo() {
this.palletName = '';
this.shipRequestNameDetail = '';
this.productSpec = '';
this.PackingGrade = '';
this.requestQuantity = '';
this.assignedQuantity = '';
this.PalletInfo = []; //清空查询信息
this.shipRequestDetailInfo = [];
}
}
};
</script>
<style></style>