<template>
|
<view>
|
<form>
|
<view class="cu-form-group margin-top">
|
<view class="title">单号</view>
|
<input v-model="billNo" placeholder="扫码 / 输入" name="input" autocomplete="off" focus @input="find()">
|
</view>
|
<view class="cu-form-group margin-top">
|
<view class="title">托盘码</view>
|
<input v-model="code" placeholder="扫码 / 输入" name="input">
|
</view>
|
</form>
|
|
<view class="margin-top">
|
<view class="cu-bar search bg-white">
|
<view class="search-form round">
|
<text class="cuIcon-search"></text>
|
<input :adjust-position="false" type="text" placeholder="产品代号" confirm-type="search" v-model="size" @input="searchSize()"></input>
|
</view>
|
</view>
|
<uni-table ref="table" border stripe emptyText="暂无更多数据" type="selection" @selection-change="selectionChange">
|
<uni-tr>
|
<uni-th align="center" width="90">数量</uni-th>
|
<uni-th align="center" width="90">组托数量</uni-th>
|
<uni-th align="center" width="90">产品代号</uni-th>
|
<uni-th align="center" width="90">产品编码</uni-th>
|
<uni-th align="center" width="90">产品名称</uni-th>
|
<uni-th align="center" width="90">序号</uni-th>
|
<uni-th align="center" width="90">批号</uni-th>
|
|
|
</uni-tr>
|
<uni-tr v-for="(item, index) in matData" :key="index">
|
<uni-td align="center">{{item.qty}}</uni-td>
|
<uni-td align="center">
|
<button class ="cu-btn bg-orange margin-xs" @click="confirm(index,item)">{{item.count}}</button>
|
<!-- <button class="uni-button" size="mini" type="warn" @click="remove(index,item)">删除</button> -->
|
</uni-td>
|
<uni-td align="center">{{item.size}}</uni-td>
|
<uni-td align="center">{{item.matNo}}</uni-td>
|
<uni-td align="center">{{item.matName}}</uni-td>
|
<uni-td align="center">{{item.seqNo}}</uni-td>
|
<uni-td align="center">{{item.itemBatch}}</uni-td>
|
|
</uni-tr>
|
</uni-table>
|
</view>
|
<view class="flex solid-bottom padding justify-start">
|
<button class ="cu-btn bg-red margin-xs" @click="delTable">批量删除</button>
|
<button class ="cu-btn bg-cyan margin-xs" @click="clearSel">清空选择</button>
|
<button class ="cu-btn bg-olive margin-xs" @click="reSelection">反选</button>
|
</view>
|
<view style="height: 200rpx;">
|
<!-- 空白层 -->
|
</view>
|
<view class="cu-bar foot input">
|
<view class="flex solid-bottom padding justify-start">
|
<button class="cu-btn bg-yellow lg margin-xs" style="width: 250rpx;" @click="comb()">组 托</button>
|
<button class="cu-btn bg-grey lg margin-xs" @click="reset">重 置</button>
|
</view>
|
</view>
|
|
<view>
|
<!-- 提示信息弹窗 -->
|
<uni-popup ref="message" type="message">
|
<uni-popup-message :type="msgType" :message="messageText" :duration="2000"></uni-popup-message>
|
</uni-popup>
|
</view>
|
<view>
|
<!-- 输入框示例 -->
|
<uni-popup ref="inputDialog" type="dialog">
|
<uni-popup-dialog ref="inputClose" mode="input" title="组托数量" @confirm="dialogInputConfirm">
|
<uni-number-box :min="minCount" :max="maxCount" v-model="value" />
|
</uni-popup-dialog>
|
</uni-popup>
|
</view>
|
<view>
|
<!-- 提示窗示例 -->
|
<uni-popup ref="alertDialog" type="dialog">
|
<uni-popup-dialog :type="msgType" title="警告" :content="message" @confirm="dialogConfirm"
|
@close="dialogClose"></uni-popup-dialog>
|
</uni-popup>
|
</view>
|
</view>
|
</template>
|
|
<script>
|
export default {
|
data() {
|
return {
|
billNo:'',
|
code:'',
|
matData:[], // 主要数据表
|
type: '',
|
msgType: '',
|
messageText: '',
|
minCount:0,
|
maxCount:1,
|
rowNum:'',
|
value:'',
|
couChange:true,
|
baseIP:'',
|
basePORT:'',
|
selectArr : [],
|
selectedIndexs:[],
|
size:'',
|
message:'123'
|
|
}
|
},
|
mounted(){
|
const UIP = uni.getStorageSync('UIP');
|
this.baseIP = UIP;
|
const UPORT = uni.getStorageSync('UPORT');
|
this.basePORT = UPORT
|
},
|
methods: {
|
// 多选
|
selectionChange(e) {
|
// 获取选中状态
|
this.selectedIndexs = e.detail.index
|
this.selectedIndexs.sort(function(a,b){
|
return a-b
|
});// 重新排序(升序)
|
},
|
|
// 全选
|
// 批量删除的方法
|
toggleSelection(rows) {
|
if (rows) {
|
this.$refs["table"].toggleAllSelection(rows);
|
} else {
|
this.$refs["table"].clearSelection();
|
}
|
},
|
//批量删除
|
delTable() {
|
// 实现全选删除和多选删除
|
let len = this.selectedIndexs.length
|
for (let i = len-1; i >= 0; i--) {
|
this.matData.splice(this.selectedIndexs[i],1) // splice删除数组会改变原数组,所以需要逆向删除
|
}
|
this.$refs["table"].clearSelection(); // 清空选择
|
|
},
|
// 反选
|
reSelection(){
|
this.toggleSelection(this.selectedIndexs)
|
},
|
// 清空
|
clearSel() {
|
this.toggleSelection()
|
},
|
// 搜索产品代号
|
searchSize() {
|
let billNo = this.billNo
|
let size = this.size;
|
let that = this
|
uni.request({
|
url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/bill/query/auth",
|
header: {
|
'content-type':'application/x-www-form-urlencoded',
|
'token':uni.getStorageSync('token')},
|
data: {
|
billNo: billNo,
|
size:size
|
},
|
method: 'POST',
|
success(res){
|
if(res.data.code === 200){
|
if(res.data.data != null){
|
that.addTableData(res.data.data)
|
}else if(res.data.code === 403){
|
|
}else {
|
|
}
|
}
|
}
|
})
|
// var str = ''
|
// var tempData = []
|
// str = val.detail.value;
|
// tempData = this.tableData
|
// for (var i = 0; i < tempData.length; i++) {
|
// var size = tempData[i].size
|
// if (str != '') {
|
// if (str === size) {
|
// tempData =[]
|
// tempData.push(this.matData[i])
|
// break
|
// }
|
// }
|
// }
|
// this.tableData = tempData
|
// this.matData = tempData
|
}, //SA290475 SH3102081
|
// 重置
|
reset:function() {
|
this.billNo = '';
|
this.code = '';
|
this.matData = [];
|
|
this.size = '';
|
this.toggleSelection()
|
},
|
messageToggle(type) {
|
this.msgType = type
|
this.messageText = '提取失败'
|
this.$refs.message.open()
|
},
|
|
// 根据通知单号查询物料详情
|
find(){
|
let billNo = this.billNo
|
let size = this.size
|
let that = this
|
if(this.billNo.length === 0){
|
return
|
}
|
if(billNo.indexOf('=')>-1){
|
billNo = billNo.split(",")[0].split("=")[1];
|
}
|
if(billNo.length===0){
|
return
|
}
|
this.matData = []
|
uni.request({
|
url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/bill/query/auth",
|
header: {
|
'content-type':'application/x-www-form-urlencoded',
|
'token':uni.getStorageSync('token')},
|
data: {
|
billNo: billNo,
|
size:size
|
},
|
method: 'POST',
|
success(res){
|
console.log(res)
|
if(res.data.code === 200){
|
if(res.data.data != null){
|
that.addTableData(res.data.data)
|
}else if(res.data.code === 403){
|
|
}else {
|
|
}
|
}
|
}
|
})
|
|
},
|
addTableData(data){
|
this.matData=[];
|
|
for(var i=0;i<data.length;i++){
|
var toPush = true;
|
for(var j=0;j<this.matData.length;j++){
|
if(data[i].matNo ===this.matData[j].matNo ){
|
this.matData[j].count = Number(this.matData[j].count) + Number(data[i].count);
|
toPush = false;
|
}
|
}
|
if(toPush) {
|
this.matData.push(data[i]);
|
|
}
|
}
|
},
|
|
// 修改数量
|
confirm(index,item){
|
this.couChange=false
|
this.$refs.inputDialog.open()
|
this.maxCount = item.qty
|
this.rowNum = index
|
this.value = this.minCount
|
},
|
// 修改数量弹窗
|
dialogInputConfirm() {
|
this.matData[this.rowNum].count = this.value
|
this.messageToggle('success')
|
this.messageText = '修改成功'
|
},
|
// 删除
|
remove(index,item){
|
this.matData.splice(index,1)
|
this.messageToggle('success')
|
this.messageText = '删除成功'
|
},
|
// 组托
|
comb(){
|
let that = this
|
let barcode = that.code
|
let billNo = this.billNo
|
if(billNo.length === 0){
|
that.messageToggle('error')
|
that.messageText = '入库单号为空'
|
return;
|
}
|
if(barcode.length === 0){
|
that.messageToggle('error')
|
that.messageText = '请输入托盘码'
|
return;
|
}
|
if (barcode.length !== 8) {
|
that.messageToggle('error')
|
that.messageText = '托盘码必须为8位'
|
return;
|
}
|
if(that.couChange){
|
that.messageToggle('error')
|
that.messageText = '请先确认入库数量'
|
return;
|
}
|
|
for (var i = 0; i < that.matData.length; i++) {
|
console.log(that.value)
|
console.log(that.matData[i].qty)
|
var sad = that.matData[i].qty - that.value
|
console.log(sad)
|
if (sad <= 5 && sad > 0) {
|
this.$refs.alertDialog.open()
|
that.message = '产品代号' + that.matData[i].size + '剩余待组托数量少于5,是否继续组托'
|
return
|
} else {
|
uni.request({
|
url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/comb/auth",
|
header: {'token':uni.getStorageSync('token')},
|
data:{
|
barcode:barcode,
|
combMats:that.matData,
|
billNo: billNo,
|
},
|
method:'POST',
|
success(res) {
|
|
if(res.data.code === 200){
|
that.reset()
|
that.matData = []
|
that.messageToggle('success')
|
that.messageText = '组托成功'
|
}
|
}
|
})
|
}
|
}
|
|
},
|
// 确定组托
|
dialogConfirm() {
|
console.log(1)
|
let that = this
|
let barcode = that.code
|
let billNo = this.billNo
|
console.log(that.matData)
|
for (var i = 0; i < that.matData.length; i++) {
|
that.matData[i].oveFlag = 1
|
}
|
console.log(that.matData)
|
uni.request({
|
url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/comb/auth",
|
header: {'token':uni.getStorageSync('token')},
|
data:{
|
barcode:barcode,
|
combMats:that.matData,
|
billNo: billNo,
|
},
|
method:'POST',
|
success(res) {
|
|
if(res.data.code === 200){
|
that.reset()
|
that.matData = []
|
that.messageToggle('success')
|
that.messageText = '组托成功'
|
}
|
}
|
})
|
},
|
// 取消组托
|
dialogClose() {
|
console.log('取消组托了')
|
}
|
},
|
onShow() {
|
}
|
}
|
</script>
|
|
<style>
|
.delTable {
|
margin-left:0;
|
margin-right: auto;
|
width: 200rpx;
|
height: 80rpx;
|
font-size: 30upx;
|
font-weight: bold;
|
}
|
</style>
|