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

236 lines
7.1 KiB
Vue

<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="selShipRequestName" confirm-text="确认选择" class="single-out" />
<u-input :focus="focusShipRequest" :border="true" v-model="ShipRequestName" placeholder="请输入单号"
@confirm="serachMaterialList" />
<u-button @click="selectShipRequestName" type="primary" size="mini">选择单号</u-button>
</u-form-item>
<u-form-item :border-bottom="false">
<p>条码:</p>
<u-input :border="true" v-model="barCode" placeholder="请扫描条码" :focus="focusBarCode"
@confirm="confirmBarcode" />
</u-form-item>
</u-form>
<uni-table ref="ConfirmTable" border stripe type="false" height="650" style="width: 100%" emptyText="暂无更多数据"
virtualScroll>
<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-th align="center">校验标识</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in BoxInfoList" :key="index"
:style="{ backgroundColor: item.ISCHECK != '' ? 'yellowgreen' : 'white' }"><!-- :style="getStyle(index)"--><!--:style="{ backgroundColor: item.color === 0 ? 'white' : 'blue' }" -->
<uni-td align="center">{{ item.MATERIALPACKINGNAME}}</uni-td>
<uni-td align="center">{{ item.CHARGE}}</uni-td>
<uni-td align="center">{{ item.MATERIALSPECNAME}}</uni-td>
<uni-td align="center">{{ item.DES_CN}}</uni-td>
<uni-td align="center">{{ item.SDK_SPEC}}</uni-td>
<uni-td align="center">{{ item.PHASE }}</uni-td>
<uni-td align="center">{{ item.ERPLOCATION }}</uni-td>
<uni-td align="center">{{ item.LOCATIONNAME }}</uni-td>
<uni-td align="center">{{ item.MATERIALQUANTITY }}</uni-td>
<uni-td align="center">{{ item.ISCHECK }}</uni-td>
</uni-tr>
</uni-table>
<view class="zwsj" @click="scrolltolower">{{ moreContent }}</view>
<u-form>
<u-form-item>
<u-button @click="ConfirmButton" type="primary" size="mini"
style="background-color: green;width: 80%;">发货确认</u-button>
</u-form-item>
</u-form>
</view>
</template>
<script>
export default {
data() {
return {
pageNum: 1, // 页数
pageSize: 5, // 条数
total: 0, //每页总数
flag: true, // 上拉加载开关 防止一次触底查询多次问题,防止数据查完后触底还调接口问题
moreContent: '上拉加载更多数据...',
utrData: [], //列表数组
dlist: [{
id: '',
label: ''
}], //选择内容
dlistShow: false, //是否显示选择框
BoxInfoList: [],
ShipRequestName: "",
shipRequestType: "",
barCode: "",
userId: "",
siteName: "",
background: {
backgroundImage: 'linear-gradient(45deg, rgb(28, 187, 180), rgb(141, 198, 63))'
},
focusBarCode: false, //焦点是否被选中
focusShipRequest: true, //默认焦点在单号
}
},
mounted() {
this.tabH = this.$GetRemainingHeight(4, 0); //定义表格的高度
let that = this
uni.getStorage({
key: "siteName",
success(res) {
that.siteName = res.data
}
})
uni.getStorage({
key: "userid",
success(res) {
that.userId = res.data
}
})
},
methods: {
tableRowStyleName({
row
}) {
if (row.ISCHECK == 'Y') {
return 'background-color: yellowgreen;';
}
},
selShipRequestName(e) {
this.ShipRequestName = e[0].value;
this.serachMaterialList();
},
selectShipRequestName() {
console.log(111)
this.dlist = [];
this.$MyRequest('/invoice/getShipList', {
ShipRequestName: this.ShipRequestName,
shipRequestType: "4C"
}).then(res => {
if (res.data.success) {
for (var i = 0; i < res.data.resultObj.length; i++) {
console.log(res.data.resultObj[i].SHIPREQUESTNAME)
this.dlist.push({
id: res.data.resultObj[i].SHIPREQUESTNAME,
label: res.data.resultObj[i].SHIPREQUESTNAME
});
}
console.log(this.dlist[0].id + "############################################");
this.dlistShow = true;
} else {
this.$showMessage(res.data.message)
}
}).catch(err => {
this.$showMessage(err)
})
},
//监听页面触底函数
scrolltolower() {
if (!this.flag) {
this.serachMaterialList()
}
},
serachMaterialList() {
this.$MyRequest('/invoice/getShipReservedBoxInfo', {
ShipRequestName: this.ShipRequestName,
pageSize: this.pageSize,
pageNum: this.pageNum
}).then(res => {
this.flag = true
if (res.data.success) {
console.log(res.data)
let result = res.data.resultObj.list || [];
// this.BoxInfoList = result //接数据
this.BoxInfoList = this.BoxInfoList.concat(result);
if (result.length == 0 && this.pageNum == 1) {
// 一开始就没有数据
this.moreContent = '暂无数据'
} else {
this.total = result ? result.length : 0
if (this.total < this.pageSize) {
// 只有一页数据,不足5条
this.moreContent = '数据已加载完,共' + this.BoxInfoList.length + '条'
this.flag = true
}
this.flag = false
// 有很多页
this.pageNum += 1
}
} else {
this.moreContent = '暂无数据'
uni.showToast({
title: res.data.message,
icon: 'none'
});
}
this.focusBarCode = true
this.focusShipRequest = false
}).catch(err => {
this.$showMessage(err)
})
},
confirmBarcode() {
let list = this.BoxInfoList;
for (var i = 0; i < list.length; ++i) {
var LbarCode = this.barCode;
if (this.BoxInfoList[i]['MATERIALPACKINGNAME'] === LbarCode) {
this.BoxInfoList[i]['ISCHECK'] = "Y"
this.barCode = ""
}
this.focusBarCode = true
}
},
ConfirmButton() {
let list = this.BoxInfoList;
if (list <= 0) {
this.$showMessage("不存在需要提交的信息")
return;
}
for (var i = 0; i < list.length; ++i) {
var judge = this.BoxInfoList[i]['ISCHECK']
if (judge != "Y") {
this.$showMessage("存在未审核确认的信息")
return;
}
}
this.$MyRequest('/invoice/commitShipRequestName', {
ShipRequestName: this.ShipRequestName,
user: this.userId,
siteName: this.siteName
}).then(res => {
this.$showMessage(res.data.message) //执行出库后返回的消息
this.BoxInfoList = null; //清空条码,继续扫
this.focusShipRequest = true //获取焦点,好继续扫描
}).catch(err => {
this.BoxInfoList = null; //请空条码
this.focusShipRequest = true
this.$showMessage(err)
})
}
}
}
</script>
<style lang="scss">
.single-out {
pointerEvents: "none"
}
</style>