<template>
|
<view >
|
<scroll-view scroll-y catch:touchmove="touchmove">
|
<view class="square-2">
|
<view class="square-title">
|
<view class="title-sign"><view class="sign"></view></view>
|
<view class="title-text"><text>托盘条码</text></view>
|
</view>
|
<view class="square-content">
|
<view class="content-input">
|
<input readonly="value" v-model="barcode" type="text" placeholder="扫码 / 输入" maxlength="8"
|
:focus="barcodeFocus" @input="nextInput">
|
<uni-icons type="closeempty" size="20" color="#dadada" @click="removeBarcode()"></uni-icons>
|
</view>
|
</view>
|
</view>
|
<view class="square-2">
|
<view class="square-title">
|
<view class="title-sign"><view class="sign"></view></view>
|
<view class="title-text"><text>检索商品</text></view>
|
</view>
|
<view class="square-content">
|
<view class="content-input">
|
<input v-model="matnrId" type="text" placeholder="扫码 / 输入" @input="findMat()"
|
:focus="focus"@focus="empty()">
|
<!-- :focus="focus" @blur="clear "> -->
|
<!-- @focus="focuss" -->
|
<uni-icons type="closeempty" size="20" color="#dadada" @click="foucss()"></uni-icons>
|
</view>
|
</view>
|
</view>
|
<view class="square-1">
|
<view class="square-title" style="display: flex;">
|
<view class="title-sign"><view class="sign"></view></view>
|
<view class="title-text" style="width: 200rpx;"><text>拥有者</text></view>
|
<view style="margin: auto auto;">
|
<uni-combox :candidates="ownerList" placeholder="请选择拥有者" v-model="owner"></uni-combox>
|
</view>
|
</view>
|
</view>
|
<view class="square-1">
|
<view class="square-title">
|
<view class="title-sign"><view class="sign"></view></view>
|
<view class="title-text"><text>商品列表</text></view>
|
</view>
|
</view>
|
<view class="square-none" v-show="matList.length === 0">
|
<view class="v-show">暂无更多数据...</view>
|
</view>
|
<checkbox-group >
|
<view v-for="(item,index) in matList" :key="index" class="data-list bg-false" :class="'bg-'+item.checked" >
|
<view class="data-list-left">
|
<view class="matnr">No:{{listLen-index}} <text style="margin-left: 4em;font-size: 10px;">{{item.memo}}</text></view>
|
<view class="matnr">{{item.matnr}}-{{item.batch}}</view>
|
</view>
|
<view class="data-list-right">
|
<label><uni-icons type="compose" size="20" color="#a5a5a5" @click="revise(item,index)"></uni-icons></label>
|
<label style="margin-left: 10%;"><uni-icons type="trash" size="21" color="#a5a5a5" @click="remove(item,index)"></uni-icons></label>
|
</view>
|
</view>
|
</checkbox-group>
|
</scroll-view>
|
<view class="footer flex justify-around">
|
<view>
|
<button class="cu-btn lg" @click="resst()">重置</button>
|
</view>
|
<view>
|
<button class="cu-btn lg pakin-btn bg-blue" @click="comb()">组托</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="checkOrigin" type="center" backgroundColor="#fff">
|
<view class="origin-box">
|
<view class="square-title">
|
<view class="title-sign"><view class="sign"></view></view>
|
<view class="title-text"><text>确认仓库</text></view>
|
</view>
|
|
<view style="width: 100%;">
|
<radio-group @change="radioChange" style="display: block;">
|
<label class="radio" v-for="(origin, index) in origins" :key="origins.value">
|
<radio style="transform:scale(0.7)" :value="origin.value" :checked="index === current" />{{origin.value}}
|
</label>
|
</radio-group>
|
</view>
|
|
<view class="pop-btn flex justify-around">
|
<button class="cu-btn bg-blue lg" @click="check()">确认</button>
|
</view>
|
</view>
|
</uni-popup>
|
</view>
|
|
<!-- 弹窗 -->
|
<!-- 修改数量 -->
|
<uni-popup ref="revise" background-color="#fff">
|
<view class="revise-box ">
|
<view class="revise-box-top">
|
<view class="color-block-blue"></view>
|
<text class="title">修改</text>
|
</view>
|
<view class="" style="position: relative;left: 40px;margin-bottom: 20px;">
|
<text style="display: inline-block;float: left;width: 45px;line-height: 21px;height: 21px;">翻包:</text>
|
<input type="text" style="width: 100px;border-bottom: 1px solid #9e9e9e;float: left;" v-model="memo">
|
</view>
|
<view class="revise-box-buttom">
|
<view>
|
<button class="cu-btn bg-blue" @click="confirm()">确认</button>
|
</view>
|
</view>
|
</view>
|
</uni-popup>
|
|
</view>
|
</template>
|
|
<script>
|
import permision from "@/common/permission.js"
|
export default {
|
data() {
|
return {
|
commonUrl:null,
|
barcode: '',
|
barcodeFocus:true,
|
focus:false,
|
type: 'center',
|
searchBox: 'hide',
|
pick:'hide',
|
matnrId:'',
|
// matList:[{matnr:'1101842-10000',batch:'22047515999'}],
|
matList:[],
|
result: '',
|
listLen:0,
|
msgType: 'success',
|
messageText: '这是一条成功提示',
|
origins: [{value:'1288'},{value:'5055'}],
|
origin: null, // 仓库
|
current: 0,
|
isNum:false,
|
memo:'',
|
hide:true,
|
ownerList: [],
|
ownerList2: '',
|
owner: '',
|
ownerId: 0
|
|
}
|
},
|
mounted(){
|
const UIP = uni.getStorageSync('UIP');
|
this.baseIP = UIP;
|
const UPORT = uni.getStorageSync('UPORT');
|
this.basePORT = UPORT
|
const PROJ = uni.getStorageSync('UPROJ');
|
this.baseUrl = PROJ
|
this.getUrl()
|
this.getOwner()
|
},
|
onLoad() {
|
// #ifdef APP
|
setInterval(()=>{
|
if (this.hide) {
|
uni.hideKeyboard()
|
} else {
|
|
}
|
},20)
|
// #endif
|
},
|
methods: {
|
// 获取url
|
getUrl() {
|
this.commonUrl = this.baseHttp + this.baseIP + ':' +this.basePORT + "/" +this.baseUrl
|
},
|
getOwner() {
|
let that = this
|
uni.request({
|
url: that.commonUrl + '/locOwner/list/auth',
|
header: {'token':uni.getStorageSync('token')},
|
success(result) {
|
console.log(result);
|
for (var i = 0; i < result.data.data.records.length; i++) {
|
if(result.data.data.records[i].id == 1){
|
break
|
}
|
that.ownerList.push(result.data.data.records[i].owner)
|
}
|
that.ownerList2 = result.data.data.records
|
}
|
|
})
|
setTimeout(()=>{
|
|
},100)
|
},
|
getOwnerId(owner) {
|
|
for (var key in this.ownerList2) {
|
if (this.ownerList2[key].owner == owner) {
|
this.ownerId = this.ownerList2[key].id
|
}
|
}
|
console.log(this.ownerId);
|
},
|
radioChange(evt) {
|
for (let i = 0; i < this.origins.length; i++) {
|
if (this.origins[i].value === evt.detail.value) {
|
this.current = i;
|
break;
|
}
|
}
|
},
|
// 确认出库口
|
check() {
|
let that = this
|
if (this.current == 0) {
|
this.origin = 1288
|
} else {
|
this.origin = 5055
|
}
|
this.$refs.checkOrigin.close()
|
uni.request({
|
url: that.commonUrl + '/mobile/comb/auth',
|
data: JSON.stringify({
|
barcode: that.barcode,
|
origin: that.origin,
|
owner: that.owner,
|
combMats: that.matList
|
}),
|
method: 'POST',
|
header: {
|
'token':uni.getStorageSync('token')
|
},
|
success(result) {
|
uni.showLoading();
|
var res = result.data
|
if (res.code === 200) {
|
uni.showToast({
|
title: res.msg,
|
position: 'bottom',
|
duration: 1000
|
});
|
that.barcode = '';
|
that.matList = '';
|
that.matList = [];
|
that.owner = '';
|
that.barcodeFocuss();
|
} else if (res.code == 403) {
|
uni.showToast({title: res.msg, icon: "none", position: 'top'})
|
setTimeout(() => {
|
uni.reLaunch({
|
url: '../login/login'
|
});
|
}, 1000);
|
} else {
|
uni.showToast({title: res.msg, icon: "none",position: 'top'})
|
}
|
}
|
});
|
},
|
nextInput() {
|
if (this.barcode.length == 8) {
|
this.foucss()
|
}
|
},
|
empty() {
|
return this.inputValue='';
|
},
|
barcodeFocuss() {
|
// #ifdef APP
|
let that = this;
|
that.barcodeFocus = false;
|
setTimeout(()=>{
|
that.matnrId = '';
|
that.barcodeFocus = true;
|
}, 100);
|
// #endif
|
|
},
|
foucss() {
|
// #ifdef APP
|
let that = this;
|
that.focus = false;
|
setTimeout(()=>{
|
that.matnrId = '';
|
that.focus = true;
|
}, 100);
|
// #endif
|
},
|
clear() {
|
this.matnrId = ''
|
},
|
messageToggle(type) {
|
this.msgType = type
|
this.messageText = `这是一条${type}消息提示`
|
this.$refs.message.open()
|
},
|
resst() {
|
this.matnrId = '';
|
this.matList = [];
|
this.barcode = '';
|
this.owner = ''
|
this.barcodeFocuss();
|
},
|
removeBarcode() {
|
this.barcode = ''
|
this.barcodeFocus = false;
|
this.$nextTick(function() {
|
this.barcodeFocus = true;
|
});
|
},
|
remove(item,index) {
|
this.matnrId = ''
|
this.matList.splice(index,1)
|
this.listLen = this.matList.length
|
this.messageToggle('success')
|
this.messageText = '删除成功'
|
},
|
comb() {
|
let that = this;
|
if (that.barcode === '') {
|
uni.showToast({title: '请扫描托盘条码', icon: "none", position: 'top'});
|
return;
|
}
|
if (that.matList.length === 0) {
|
uni.showToast({title: '请添加商品列表', icon: "none", position: 'top'});
|
return;
|
}
|
that.$refs.checkOrigin.open()
|
this.getOwnerId(that.owner)
|
},
|
// 输入的不是数字的排除
|
checkNum(theObj) {
|
var reg = /^[0-9]*$/;
|
if (!reg.test(theObj)) {
|
this.isNum = false;
|
return ;
|
}
|
var year = theObj.substring(0,2)
|
//获取当前年份
|
var dt = new Date();
|
var thisYear = new Date().getFullYear() + ''
|
thisYear = thisYear.substring(2,4)
|
if(year > thisYear) {
|
this.isNum = false;
|
return ;
|
}
|
this.isNum = true;
|
},
|
// 添加扫描日志
|
addLog(matCode,userName) {
|
|
let that = this;
|
uni.request({
|
url: that.commonUrl + "/mobile/addLog/auth",
|
data: {
|
matcode:matCode,
|
username:userName
|
},
|
header: {
|
'token':uni.getStorageSync('token')
|
},
|
// method:"POST",
|
success(result) {
|
var res = result.data
|
if(res.code === 200) {
|
// uni.showToast({title: "添加成功", icon: "none",position: 'center'})
|
}
|
}
|
})
|
|
},
|
// 检索商品
|
findMat() {
|
let that = this
|
let userName = uni.getStorageSync('HCuname')
|
let matCode = that.matnrId
|
// 开启扫描日志
|
that.addLog(matCode,userName)
|
// that.foucss();
|
// return;
|
if(that.matList.length > 15) {
|
that.messageToggle('warn');
|
that.messageText = '组托商品数量已超过16件,请完成当前组托';
|
that.foucss();
|
return;
|
}
|
if (that.matnrId.length > 25){
|
that.messageToggle('warn');
|
that.messageText = '商品编码超长,请重试';
|
that.foucss();
|
return;
|
}
|
let str = that.matnrId.split('-')
|
let matnr = str[0] + '-' + str[1]
|
// 检查条码中非数字
|
that.checkNum(str[2])
|
// 检查序列码长度
|
if (str[2].length != 11) {
|
that.messageToggle('warn');
|
that.messageText = '商品序列码长度有误,请重试!';
|
that.foucss();
|
return;
|
}
|
// 检查年份
|
var dt = new Date();
|
var year = (dt.getFullYear() + '').substring(2,4)
|
var month = (dt.getMonth()+1) < 10 ? '0'+ (dt.getMonth()+1) : (dt.getMonth()+1);
|
if (str[2].substring(0,2) > year) {
|
that.messageToggle('warn');
|
that.messageText = '商品序列码年份有误,请重试!';
|
that.foucss();
|
return;
|
}
|
// 检查月份
|
if (str[2].substring(2,4) > 12) {
|
that.messageToggle('warn');
|
that.messageText = '商品序列码月份有误,请重试!';
|
that.foucss();
|
return;
|
}
|
if (str)
|
if (that.isNum == false) {
|
that.messageToggle('warn');
|
that.messageText = '商品编码有误,请重试!';
|
that.foucss();
|
return;
|
}
|
for (let k = 0; k < that.matList.length;k++) {
|
if (that.matList[k].matnr != matnr) {
|
that.messageToggle('warn');
|
that.messageText = '商品种类不一致,请重试!';
|
that.foucss();
|
return;
|
}
|
}
|
|
// return;
|
// uni.showLoading();
|
uni.request({
|
url: that.commonUrl + '/barcode/check/auth',
|
data: {
|
barcode:that.matnrId
|
},
|
header: {
|
'token':uni.getStorageSync('token')
|
},
|
success(result) {
|
uni.hideLoading();
|
// uni.vibrateShort();
|
let res = result.data
|
if (res.code === 200 && res.data) {
|
let add = true;
|
let mat = res.data;
|
mat['batch'] = str[2];
|
mat['anfme'] = 1
|
for(let i = 0;i < that.matList.length;i++) {
|
if(that.matList[i].batch == str[2]) {
|
that.messageToggle('warn');
|
that.messageText = '重复扫描';
|
that.foucss();
|
add = false;
|
}
|
}
|
if(add) {
|
that.messageToggle('success');
|
that.messageText = '检索成功';
|
that.matList.unshift(res.data)
|
that.foucss();
|
}
|
that.listLen = that.matList.length;
|
} else if (res.code == 403) {
|
that.messageToggle('error')
|
that.messageText = res.msg
|
setTimeout(() => {
|
uni.reLaunch({
|
url: '../login/login'
|
});
|
}, 1000);
|
uni.hideLoading();
|
} else {
|
that.messageToggle('error')
|
that.messageText = res.msg
|
uni.hideLoading();
|
// uni.showToast({title: res.msg, icon: "none",position: 'top'})
|
}
|
}
|
|
});
|
},
|
|
change(e) {
|
console.log('当前模式:' + e.type + ',状态:' + e.show);
|
},
|
revise(item,index) {
|
this.memo = this.matList[index].memo
|
// var maxCount = this.matList[index].maxCount
|
// if (maxCount == undefined ) {
|
// this.matList[index]["maxCount"] = item.enableQty
|
// }
|
// this.enableQty = item.enableQty
|
// this.count = this.minCount
|
// this.maxCount = item.maxCount
|
this.rowNum = index
|
this.eject()
|
},
|
eject(type) {
|
this.hide = false
|
this.type = type
|
// open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
|
this.$refs.revise.open(type)
|
},
|
confirm() {
|
this.matList[this.rowNum].memo = this.memo
|
this.hide = true
|
this.$refs.revise.close()
|
this.$forceUpdate() // 强制刷新
|
},
|
|
}
|
}
|
</script>
|
|
|
|
<style>
|
/* @import "../../colorui/main.css";
|
@import "../../colorui/icon.css"; */
|
/*
|
|
*/
|
.revise-box {
|
position: relative;
|
width: 500rpx;
|
height: 400rpx;
|
border-radius: 25px;
|
}
|
.revise-box-top {
|
width: 400rpx;
|
height: 120rpx;
|
border-radius: 25px;
|
}
|
.changeBox {
|
width: 400rpx;
|
height: 100rpx;
|
}
|
.num-box {
|
margin-left: 100rpx;
|
}
|
.revise-box-buttom{
|
margin-left: 190rpx;
|
margin-top: 200rpx;
|
}
|
.pak-seach-box {
|
background-color: #FFFFFF;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
width: 96%;
|
height: 150rpx;
|
border-radius: 20rpx;
|
}
|
.box-top{
|
display: block;
|
height: 60rpx;
|
width: 720rpx;
|
}
|
.color-block-blue {
|
background-color: #1E9FFF;
|
display: inline-block;
|
float: left;
|
margin: 15rpx 15rpx 0 15rpx;
|
width: 12rpx;
|
height: 40rpx;
|
border: 5rpx solid #1E9FFF;
|
border-radius: 20rpx;
|
}
|
.title {
|
display: inline-block;
|
float: left;
|
font-size: 34rpx;
|
font-weight: 700;
|
height: 50rpx;
|
line-height: 50rpx;
|
margin-top: 10rpx;
|
}
|
.box-buttom {
|
display: inline-block;
|
background-color: #ededed;
|
width: 65%;
|
height: 60rpx;
|
border-radius: 20rpx;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
}
|
.box-buttom input {
|
width: 75%;
|
float: left;
|
margin: 8rpx 10rpx 0rpx 25rpx;
|
}
|
.box-buttom .search-icon{
|
width: 60rpx;
|
height: 60rpx;
|
float: right;
|
margin-top: 5rpx;
|
margin-right: 10rpx;
|
}
|
/* .pak-seach-box input {
|
background-color: #ededed;
|
border: 1rpx solid #d8d8d8;
|
display: inline-block;
|
border-radius: 20rpx;
|
float: left;
|
width: 70%;
|
height: 60rpx;
|
line-height: 60rpx;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
padding-left: 20rpx;
|
} */
|
.pak-seach-box button {
|
background-color: #1E9FFF;
|
color: #ffffff;
|
display: inline-block;
|
float: right;
|
width: 180rpx;
|
height: 60rpx;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
line-height: 60rpx;
|
}
|
|
.pop-btn {
|
position: absolute;
|
width: 100%;
|
bottom: 20rpx;
|
}
|
.pak-seach-box {
|
background-color: #FFFFFF;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
width: 96%;
|
height: 150rpx;
|
border-radius: 20rpx;
|
}
|
.box-top{
|
display: block;
|
height: 60rpx;
|
width: 720rpx;
|
}
|
.color-block-blue {
|
background-color: #1E9FFF;
|
display: inline-block;
|
float: left;
|
margin: 15rpx 15rpx 0 15rpx;
|
width: 12rpx;
|
height: 40rpx;
|
border: 5rpx solid #1E9FFF;
|
border-radius: 20rpx;
|
}
|
.title {
|
display: inline-block;
|
float: left;
|
font-size: 34rpx;
|
font-weight: 700;
|
height: 50rpx;
|
line-height: 50rpx;
|
margin-top: 10rpx;
|
}
|
.box-buttom {
|
display: inline-block;
|
background-color: #ededed;
|
width: 65%;
|
height: 60rpx;
|
border-radius: 20rpx;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
}
|
.box-buttom input {
|
width: 75%;
|
float: left;
|
margin: 8rpx 10rpx 0rpx 25rpx;
|
}
|
.box-buttom .search-icon{
|
width: 60rpx;
|
height: 60rpx;
|
float: right;
|
margin-top: 5rpx;
|
margin-right: 10rpx;
|
}
|
/* .pak-seach-box input {
|
background-color: #ededed;
|
border: 1rpx solid #d8d8d8;
|
display: inline-block;
|
border-radius: 20rpx;
|
float: left;
|
width: 70%;
|
height: 60rpx;
|
line-height: 60rpx;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
padding-left: 20rpx;
|
} */
|
.pak-seach-box button {
|
background-color: #1E9FFF;
|
color: #ffffff;
|
display: inline-block;
|
float: right;
|
width: 180rpx;
|
height: 60rpx;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
line-height: 60rpx;
|
}
|
.pakin-btn {
|
background-color: #1E9FFF;
|
}
|
.pak-data-box {
|
background-color: #F1F1F1;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
width: 96%;
|
height: 70rpx;
|
border-radius: 20rpx;
|
}
|
.pak-data-box .box-top {
|
background-color: #FFFFFF;
|
height: 70rpx;
|
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
}
|
.bg-false {
|
background-color: #FFFFFF;
|
}
|
.bg-true {
|
background-color: #ebebeb;
|
}
|
.data-list {
|
border-bottom: 1px solid #d8d8d8;
|
height: 130rpx;
|
margin: 15rpx;
|
border-radius: 20rpx;
|
}
|
.data-list:first-child {
|
margin-top: 20rpx;
|
}
|
.data-list:last-child {
|
margin-bottom: 200rpx;
|
}
|
/* .data-list-left {
|
display: inline-block;
|
float: left;
|
text-align: center;
|
width: 100rpx;
|
height: 180rpx;
|
line-height: 180rpx;
|
} */
|
.data-list-left {
|
display: inline-block;
|
float: left;
|
margin-left: 6%;
|
height: 130rpx;
|
/* line-height: 100rpx; */
|
color: #676767;
|
}
|
.matnr {
|
font-size: 14px;
|
font-weight: 700;
|
/* padding-top: 15rpx; */
|
padding-top: 15rpx;
|
}
|
.data-list-right {
|
display: inline-block;
|
float: right;
|
height: 130rpx;
|
line-height: 130rpx;
|
margin-right: 2%;
|
width: 20%;
|
}
|
|
</style>
|