439 lines
12 KiB
Vue
Raw Normal View History

2025-03-11 09:45:29 +08:00
<template>
<view>
<u-navbar back-text="返回" title="盘点" :background="background"></u-navbar>
<!-- 第一个分段器-->
<uni-segmented-control :current="currentChoose" :values="chooseitems" :style-type="styleType"
:active-color="activeColor" @clickItem="chooseItem" />
<view v-show="currentChoose === 0">
<table>
<tr>
<td>单号:</td>
<td width="82%">
<u-input :border="true" v-model="checkPlanName" :focus="focusCheckPlanName" placeholder="请扫描单号"
@confirm="serachCheckPlan" />
</td>
</tr>
<tr>
<td>盘点描述:</td>
<td>
<u-input :border="true" v-model="checkPlanDescription" placeholder="" :disabled="true" />
</td>
</tr>
</table>
<!-- 第二个分段器-->
<uni-segmented-control :current="current" :values="items" :style-type="styleType"
:active-color="activeColor" @clickItem="onClickItem" />
<view>
<view v-show="current === 0">
<view class="material">
<u-form ref="materialform">
<uni-z-table :style="{'height': tabH+'px'}" :tableData="requestData" :columns="matColumns"
:showBottomSum="true" :rowNumbers="true" :pagination="true" @onSelect="onSelectMatTb">
</uni-z-table>
</u-form>
</view>
</view>
<view v-show="current === 1">
<uni-z-table :style="{'height': tabH+'px'}" :tableData="matDetailData" :columns="matLocation"
:showBottomSum="true" :rowNumbers="true" :pagination="true">
</uni-z-table>
</view>
</view>
</view>
<view v-show="currentChoose === 1">
<table>
<tr>
<td> :</td>
<td>
<u-input placeholder="请扫描条码" :border="true" v-model="barCode" :focus="focusBarCode"
@confirm="searchByBarcode" />
</td>
</tr>
<tr>
<td>物料编码:</td>
<td>
<u-input placeholder="" :disabled="true" :border="true" v-model="materialCode" />
</td>
</tr>
<tr>
<td>物料描述:</td>
<td>
<u-input placeholder="" :disabled="true" :border="true" v-model="materialDescription" />
</td>
</tr>
<tr>
<td>账面数量:</td>
<td>
<u-input placeholder="" :disabled="true" :border="true" v-model="QTY" />
</td>
</tr>
<tr>
<td>库位编码:</td>
<td>
<u-input placeholder="" :disabled="true" :border="true" v-model="Kw" />
</td>
</tr>
<tr>
<td>新库位:</td>
<td>
<u-input placeholder="" :border="true" v-model="newKw" :focus="focusNewKw" />
</td>
</tr>
<tr>
<td>盘点数量:</td>
<td>
<u-input placeholder="" :border="true" v-model="checkQty" :focus="focusQty" />
</td>
</tr>
<tr>
<td><button type="warn" size="mini" @click="clear">清除</button></td>
<td><button type="primary" size="mini" @click="submit">确认</button></td>
</tr>
</table>
</view>
</view>
</template>
<script>
export default {
data() {
return {
items: ['盘点明细', '库位明细'], //第二分段器选项卡
chooseitems: ['盘点信息', '单个条码'], //第一个分栏器
tabH: 800, //表格的宽度
background: {
backgroundImage: 'linear-gradient(45deg, rgb(28, 187, 180), rgb(141, 198, 63))'
}, //返回按钮的样式
//分栏器的样式
styles: [{
value: 'button',
text: '按钮',
checked: true
},
{
value: 'text',
text: '文字'
}
],
colors: ['#007aff', '#4cd964', '#dd524d'],
current: 0,
currentChoose: 0,
colorIndex: 0,
activeColor: '#007aff',
styleType: 'text',
//---------------------------------------- 分割线上方都是引用的外部的组件使用的样式,下方才是是使用的数据
newKw: "", //新库位
checkQty: "", //盘点数量
checkPlanName: "", //盘点单号
barCode: "", //条码
requestData: [], //获取的盘点信息
matDetailData: [], //获取库位明细
infoList: [], //条码接口查询的信息
focusBarCode: false, //条码焦点
focusCheckPlanName: true, //默认选中单号焦点
focusNewKw: false, //新库位焦点
queryParam: {
queryID: "",
version: "",
BINDV: {}
},
focusQty: false, //盘点数量焦点
//---------------------------仅展示的数据
checkPlanDescription: "", //盘点描述
materialCode: "", //物料编码
materialDescription: "", //物料描述
QTY: "", //账面数量
Kw: "", //库位编码
//对应的表格的信息---------盘点明细下的表格
matColumns: [{
title: '未盘数',
field: "WEIPAN",
width: 120,
sort: true,
align: "right"
},
{
title: '物料编号',
field: "MATERIALSPECNAME",
width: 280,
sort: true,
align: "left"
},
{
title: '已盘',
field: "YIPAN",
width: 150,
sort: true,
align: "right"
},
{
title: '物料描述',
field: "DESCRIPTION",
width: 280,
sort: true,
align: "left"
}
],
//对应的相应的库位明细下面的表格
matLocation: [{
title: '仓库',
field: "ERPLOCATION",
width: 150,
sort: true,
align: "left"
},
{
title: '库位',
field: "LOCATIONNAME",
width: 150,
sort: true,
align: "left"
},
{
title: '条码编号',
field: "MATERIALPACKINGNAME",
width: 380,
sort: true,
align: "left"
},
{
title: '条码数量',
field: "MATERIALQUANTITY",
width: 180,
sort: true,
align: "right"
}
]
}
},
mounted() {
this.tabH = this.$GetRemainingHeight(4, 0); //定义表格的高度
},
methods: {
//第一个分段器的点击事件
chooseItem(e) {
if (this.currentChoose !== e.currentIndex) {
this.currentChoose = e.currentIndex //获取当前选中的index
}
if (this.currentChoose == 1)
this.getfocus('focusBarCode')
else this.getfocus('focusCheckPlanName')
},
//第二个分段器的点击事件
onClickItem(e) {
if (this.current !== e.currentIndex) {
this.current = e.currentIndex //获取当前选中的index
}
},
//焦点初始化,让页面所有的焦点同时只能存在一个
initfocus() {
this.focusCheckPlanName = false //单号焦点
this.focusBarCode = false //条码焦点
this.focusNewKw = false //新库位焦点
this.focusQty = false //盘点数量焦点
},
//获取焦点的公共方法
getfocus(nextfocus) {
this.initfocus()
this[nextfocus] //不能用this.nextfocus
this.$nextTick(() => { //vue是数据全部修改后才进行的视图更新哪nextTick函数就是为了拿到最新的数据还不懂的可以去百度
this[nextfocus] = true
})
},
//选中盘点明细的某一行带出库位明细
onSelectMatTb(e) {
let matCode = e.row["MATERIALSPECNAME"] //获取物料编号
this.getKwDetailList(matCode) //调用点中当前行的方法
},
//扫描单号-----------回车搜索
serachCheckPlan() {
if (this.checkPlanName != "") {
this.getCheckPlanList() //获取材料信息
} else {
this.$showMessage("单号不能为空")
this.getfocus('focusCheckPlanName') //焦点继续保持到单号输入框
return
}
},
//扫描条码回车搜索
searchByBarcode() {
if (this.checkPlanName != "") {
if (this.barCode != "") {
this.getListByCode() //获取该条码的全部信息
} else {
this.$showMessage("条码不能为空")
this.getfocus('focusBarCode') //重新聚焦
return
}
} else {
this.$showMessage("单号不能为空")
this.currentChoose = 0
this.getfocus('focusCheckPlanName')
}
},
//获取盘点明细
getCheckPlanList() {
let _param = this.queryParam;
_param.queryID = 'getCheckPlanList';
_param.version = 'PDA01';
_param.BINDV.CHECKPLANNAME = this.checkPlanName;
this.$MyRequest('/common/query', {
param: JSON.stringify(_param)
}).then(res => {
console.log("res+++++"+res)
if (res.data.status === 'success') {
this.requestData = res.data.DATA //接返回的数据
this.checkPlanDescription = this.requestData[0]["PLANTYPENAME"]
this.$playSuccess()
} else {
this.$showMessage(res.data.message)
this.$playFail()
}
}).catch(err => {
this.$showMessage(err)
})
},
//获取库位明细
getKwDetailList(matCode) {
let _param = this.queryParam;
_param.queryID = 'getCheckCordListByMaterialSpec';
_param.version = 'PDA01';
_param.BINDV.MATERIALSPECNAME = this.matCode;
this.$MyRequest('/common/query', {
param: JSON.stringify(_param)
}).then(res => {
console.log("res+++++"+res)
if (res.data.status === 'success') {
this.matDetailData = res.data.DATA //接返回的数据
this.$playSuccess()
} else {
this.$showMessage(res.data.message)
this.$playFail()
}
}).catch(err => {
this.$showMessage(err)
})
},
//通过单个条码搜索信息
getListByCode() {
let _param = this.queryParam;
_param.queryID = 'getCheckCordListByMaterialPacking';
_param.version = 'PDA01';
_param.BINDV.MATERIALPACKINGNAME = this.barCode;
_param.BINDV.CHECKPLANNAME =this.checkPlanName;
this.$MyRequest('/common/query', {
param: JSON.stringify(_param)
}).then(res => {
console.log("res+++++"+res)
if (res.data.status === 'success') {
this.materialCode = res.data.DATA[0]["MATERIALSPECNAME"] //物料编码
this.materialDescription = res.data.DATA[0]["DESCRIPTION"] //物料描述
this.QTY = res.data.DATA[0]["MATERIALQUANTITY"] //账面数量
this.Kw = res.data.DATA[0]["SYSLOCATION"] //库位
this.getfocus('focusQty')
this.$playSuccess()
} else {
this.$showMessage(res.data.message)
this.$playFail()
}
}).catch(err => {
this.$showMessage(err)
})
},
//盘点结果发送
sendCheckedPlan(kw) {
let count = this.barCode.split("|").length;
//标准标签格式中 | 出现次数为5
//SN|物料号|数量|供应商|制造日期|过期日
if (count != 6) {
this.showToast('标签不符合规范请确认', 'error');
return;
}
let boxId = qrCodeArr[0];
//发送请求
this.$MyRequest('/pdaExecuteBpel', {
bpelName: "PDAUpdateCheckRecord",
bpelParam: {
CHECKPLANNAME: this.checkPlanName,
SITENAME: this.siteName,
MATERIALPACKINGNAME:boxId,
ACTLOCATION:kw,
MATERIALACTQUANTITY: this.checkQty
}
}).then(res => {
if (res.data.RETURNCODE === "0") {
this.$showMessage("操作成功")
this.barCode=""//清空条码
this.newKw=""//清空库位
this.checkQty=""//清空盘点数量
//只读输入框的清空
this.materialCode = ""
this.materialDescription = ""
this.QTY = ""
this.Kw = ""
//下面重聚焦
this.getfocus('focusBarCode')
} else {
this.$showMessage(res.data.RETURNMSG)
return
}
}).catch(err => {
this.$showMessage(err.RETURNMSG)
})
},
//清除按钮
clear() {
this.barCode = ""
this.QTY = ""
this.Kw = ""
this.materialCode = ""
this.materialDescription = ""
this.newKw = ""
this.checkQty = ""
this.getfocus('focusBarCode') //重新聚焦
},
//确认按钮的提交事件
submit() {
if (this.checkQty < 0 || this.checkQty=="") {
this.$showMessage("盘点数量不能为空或负")
this.checkQty = "" //清空盘点数量
this.getfocus('focusQty') //重新聚焦
return
} else {
if (this.newKw == "") {
let oldkw = this.Kw //当新库位为空的时候传旧的库位编码进去
this.sendCheckedPlan(oldkw) //调用方法
} else {
this.sendCheckedPlan(this.newKw) //传新的库位编码
}
}
},
}
}
</script>
<style lang="scss">
</style>