|  |  |  | 
|---|
|  |  |  | <view class="code"> | 
|---|
|  |  |  | <view class="item"> | 
|---|
|  |  |  | <view class="code-decs">托盘码:</view> | 
|---|
|  |  |  | <input type="text" placeholder=" 扫码 / 输入" v-model="barcode" :focus="barcodeFocus" @confirm="barcodeInput()"> | 
|---|
|  |  |  | <input type="text" placeholder=" 扫码 / 输入" v-model="barcode" :focus="barcodeFocus" | 
|---|
|  |  |  | @input="barcodeInput()"> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="item"> | 
|---|
|  |  |  | <view class="code-decs">物料码:</view> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="list-left-item"> | 
|---|
|  |  |  | <view class="desc">编码:</view> | 
|---|
|  |  |  | <view class="left-item"><uni-tag :text="item.matnr" type="primary"></uni-tag></view> | 
|---|
|  |  |  | <view class="left-item"> | 
|---|
|  |  |  | <uni-tag :text="item.matnr" type="primary"></uni-tag> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="list-left-item"> | 
|---|
|  |  |  | <view class="desc">品名:</view> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="list-left-item"> | 
|---|
|  |  |  | <view class="desc">批号:</view> | 
|---|
|  |  |  | <view class="left-item"><uni-tag :text="item.batch" type="warning"></uni-tag></view> | 
|---|
|  |  |  | <view class="left-item"> | 
|---|
|  |  |  | <uni-tag :text="item.batch" type="warning"></uni-tag> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- <view class="list-left-item"> | 
|---|
|  |  |  | <view class="desc">重量:</view> | 
|---|
|  |  |  | <view class="left-item"> | 
|---|
|  |  |  | <uni-tag :text="item.weight" type="warning"></uni-tag> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> --> | 
|---|
|  |  |  | <view class="list-left-item"> | 
|---|
|  |  |  | <view class="desc">数量:</view> | 
|---|
|  |  |  | <view class="left-item">{{item.anfme}}</view> | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="popup-item"> | 
|---|
|  |  |  | <view class="popup-item-left">编码:</view> | 
|---|
|  |  |  | <view class="popup-item-right"> | 
|---|
|  |  |  | <input type="text" v-model="matnr" disabled="true" style="background-color: #f7f7f7;padding: 0;color: #d5d5d5;"> | 
|---|
|  |  |  | <input type="text" v-model="matnr" disabled="true" | 
|---|
|  |  |  | style="background-color: #f7f7f7;padding: 0;color: #d5d5d5;"> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="popup-item"> | 
|---|
|  |  |  | <view class="popup-item-left">合同号:</view> | 
|---|
|  |  |  | <!-- <view class="popup-item"> | 
|---|
|  |  |  | <view class="popup-item-left">批号:</view> | 
|---|
|  |  |  | <view class="popup-item-right"><input type="text" v-model="batch"></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> --> | 
|---|
|  |  |  | <!-- <view class="popup-item"> | 
|---|
|  |  |  | <view class="popup-item-left">重量:</view> | 
|---|
|  |  |  | <view class="popup-item-right"><input type="text" v-model="weight"></view> | 
|---|
|  |  |  | </view> --> | 
|---|
|  |  |  | <view class="popup-item"> | 
|---|
|  |  |  | <view class="popup-item-left">数量:</view> | 
|---|
|  |  |  | <view class="popup-item-right" style="border: none;justify-content: center;"> | 
|---|
|  |  |  | <uni-number-box :value="count" :max="9999999" color="#747474"  @change="changeValue"/> | 
|---|
|  |  |  | <uni-number-box :value="count" :step='0.01' :max="9999999" color="#747474" @change="changeValue" /> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="btn"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | <!-- 提示窗示例 --> | 
|---|
|  |  |  | <uni-popup ref="alertDialog" type="dialog"> | 
|---|
|  |  |  | <uni-popup-dialog :type="msgType" confirmText="移除" :title="title" :content="content" @confirm="removeConfirm" | 
|---|
|  |  |  | @close="removeClose"></uni-popup-dialog> | 
|---|
|  |  |  | <uni-popup-dialog :type="msgType" confirmText="移除" :title="title" :content="content" | 
|---|
|  |  |  | @confirm="removeConfirm()" @close="removeClose"></uni-popup-dialog> | 
|---|
|  |  |  | </uni-popup> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | 
|---|
|  |  |  | rowNum: '', | 
|---|
|  |  |  | matnr: '', | 
|---|
|  |  |  | batch: '', | 
|---|
|  |  |  | weight: '', | 
|---|
|  |  |  | msgType1: 'success', | 
|---|
|  |  |  | msgType: 'success', | 
|---|
|  |  |  | messageText: '', | 
|---|
|  |  |  | 
|---|
|  |  |  | content: '', | 
|---|
|  |  |  | barcodeFocus: true, | 
|---|
|  |  |  | matFocus: false, | 
|---|
|  |  |  | matData: '' | 
|---|
|  |  |  |  | 
|---|
|  |  |  | matData: '', | 
|---|
|  |  |  | removeNum: 0, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onLoad() { | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onShow() { | 
|---|
|  |  |  | this.baseUrl = uni.getStorageSync('baseUrl'); | 
|---|
|  |  |  | 
|---|
|  |  |  | // barcode input 事件 | 
|---|
|  |  |  | barcodeInput() { | 
|---|
|  |  |  | // 不设置定时器 会出现扫入的字符串不全 | 
|---|
|  |  |  | setTimeout(()=>{ | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | var len = this.barcode.length | 
|---|
|  |  |  | if (len != 8) { | 
|---|
|  |  |  | uni.showToast({title: '托盘码有误请重试', icon: "none", position: 'top'}); | 
|---|
|  |  |  | uni.showToast({ | 
|---|
|  |  |  | title: '托盘码有误请重试', | 
|---|
|  |  |  | icon: "none", | 
|---|
|  |  |  | position: 'top' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | this.barcodeFocuss() | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.focuss() | 
|---|
|  |  |  | },200) | 
|---|
|  |  |  | }, 200) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 托盘码有误重置 | 
|---|
|  |  |  | barcodeFocuss() { | 
|---|
|  |  |  | let that = this; | 
|---|
|  |  |  | that.barcodeFocus = false; | 
|---|
|  |  |  | setTimeout(()=>{ | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | that.barcode = ''; | 
|---|
|  |  |  | that.barcodeFocus = true; | 
|---|
|  |  |  | }, 100); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 商品光标清空重置 | 
|---|
|  |  |  | focuss() { | 
|---|
|  |  |  | // #ifdef APP | 
|---|
|  |  |  | let that = this; | 
|---|
|  |  |  | that.focus = false; | 
|---|
|  |  |  | setTimeout(()=>{ | 
|---|
|  |  |  | that.matnr = ''; | 
|---|
|  |  |  | that.focus = true; | 
|---|
|  |  |  | this.focus = false; | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | this.matnr = ''; | 
|---|
|  |  |  | this.matFocus = true; | 
|---|
|  |  |  | }, 100); | 
|---|
|  |  |  | // #endif | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 搜索物料 | 
|---|
|  |  |  | findMat() { | 
|---|
|  |  |  | let that = this | 
|---|
|  |  |  | uni.request({ | 
|---|
|  |  |  | url: that.baseUrl + '/mat/auth', | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | matnr:that.matnr | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | header: { | 
|---|
|  |  |  | 'token':uni.getStorageSync('token') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | url: that.baseUrl + '/mat/auth', | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | matnr: that.matnr | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | header: { | 
|---|
|  |  |  | 'token': uni.getStorageSync('token') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | success(result) { | 
|---|
|  |  |  | result = result.data | 
|---|
|  |  |  | if (result.code === 200 && result.data) { | 
|---|
|  |  |  | 
|---|
|  |  |  | url: "../mat/matSelected", | 
|---|
|  |  |  | // 通过eventChannel向被打开页面传送数据 | 
|---|
|  |  |  | success: function(res) { | 
|---|
|  |  |  | res.eventChannel.emit('mat', { data: result.data }) | 
|---|
|  |  |  | res.eventChannel.emit('mat', { | 
|---|
|  |  |  | data: result.data | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 | 
|---|
|  |  |  | events: { | 
|---|
|  |  |  | matList: function(data) { | 
|---|
|  |  |  | matList: function(data) { | 
|---|
|  |  |  | that.checkMat(data.data) | 
|---|
|  |  |  | that.focuss() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else if (res.code == 403) { | 
|---|
|  |  |  | uni.showToast({title: res.msg, icon: "none", position: 'top'}) | 
|---|
|  |  |  | } else if (result.code == 403) { | 
|---|
|  |  |  | uni.showToast({ | 
|---|
|  |  |  | title: result.msg, | 
|---|
|  |  |  | icon: "none", | 
|---|
|  |  |  | position: 'top' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | uni.reLaunch({ | 
|---|
|  |  |  | url: '../login/login' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, 1000); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | uni.showToast({title: res.msg, icon: "none",position: 'top'}) | 
|---|
|  |  |  | uni.showToast({ | 
|---|
|  |  |  | title: result.msg, | 
|---|
|  |  |  | icon: "none", | 
|---|
|  |  |  | position: 'top' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | selectMat() { | 
|---|
|  |  |  | let that = this | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: "../mat/matQuery", | 
|---|
|  |  |  | success: function(res) { | 
|---|
|  |  |  | // 通过eventChannel向被打开页面传送数据   向另外一个页面传递值的 | 
|---|
|  |  |  | res.eventChannel.emit('commonUrl', {commonUrl: '' }) | 
|---|
|  |  |  | // 通过eventChannel向被打开页面传送数据   向另外一个页面传递值的 | 
|---|
|  |  |  | res.eventChannel.emit('commonUrl', { | 
|---|
|  |  |  | commonUrl: '' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | events: { | 
|---|
|  |  |  | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据  另外一个页面传过来的 | 
|---|
|  |  |  | acceptDataFromOpenedPage: function(data) { | 
|---|
|  |  |  | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据  另外一个页面传过来的 | 
|---|
|  |  |  | acceptDataFromOpenedPage: function(data) { | 
|---|
|  |  |  | that.matnr = data.data | 
|---|
|  |  |  | that.findMat(that.matnr) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | that.matnr = '' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | checkMat(mat) { | 
|---|
|  |  |  | var len = this.dataList.length | 
|---|
|  |  |  | var add = true | 
|---|
|  |  |  | var add = true ,sameItem = false | 
|---|
|  |  |  | for (var i = 0; i < len; i++) { | 
|---|
|  |  |  | if (mat.matnr == this.dataList[i].matnr) { | 
|---|
|  |  |  | this.dataList[i].anfme += mat.anfme | 
|---|
|  |  |  | this.$forceUpdate() // 强制刷新 | 
|---|
|  |  |  | add = false | 
|---|
|  |  |  | for (var j = 0; j < len; j++) { | 
|---|
|  |  |  | if (mat.batch == this.dataList[j].batch) { | 
|---|
|  |  |  | sameItem = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 相同物料 不同批号  新加列表 | 
|---|
|  |  |  | if (mat.batch != this.dataList[i].batch) { | 
|---|
|  |  |  | this.$forceUpdate() // 强制刷新 | 
|---|
|  |  |  | if (sameItem) { | 
|---|
|  |  |  | add = false | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | add = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | // 相同物料相同批号 数量累加 | 
|---|
|  |  |  | this.dataList[i].anfme += mat.anfme | 
|---|
|  |  |  | this.$forceUpdate() // 强制刷新 | 
|---|
|  |  |  | add = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (add) { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 修改批号 | 
|---|
|  |  |  | revise(item,i) { | 
|---|
|  |  |  | revise(item, i) { | 
|---|
|  |  |  | this.matnr = this.dataList[i].matnr | 
|---|
|  |  |  | this.count = this.dataList[i].anfme | 
|---|
|  |  |  | this.batch = this.dataList[i].batch | 
|---|
|  |  |  | this.weight = this.dataList[i].weight | 
|---|
|  |  |  | this.rowNum = i | 
|---|
|  |  |  | this.eject() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | this.$refs.revise.open(type) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 列表移除按钮 | 
|---|
|  |  |  | remove(item,i,type) { | 
|---|
|  |  |  | remove(item, i, type) { | 
|---|
|  |  |  | this.removeNum  = i | 
|---|
|  |  |  | this.msgType = type | 
|---|
|  |  |  | this.title = '警告' | 
|---|
|  |  |  | this.content = '是否移除当前商品!' | 
|---|
|  |  |  | this.$refs.alertDialog.open(i) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 确认移除 | 
|---|
|  |  |  | removeConfirm(i) { | 
|---|
|  |  |  | removeConfirm() { | 
|---|
|  |  |  | this.messageText = "移除成功" | 
|---|
|  |  |  | this.messageToggle('success') | 
|---|
|  |  |  | this.dataList.splice(i,1) | 
|---|
|  |  |  | this.dataList.splice(this.removeNum, 1) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 取消移除 | 
|---|
|  |  |  | removeClose() { | 
|---|
|  |  |  | 
|---|
|  |  |  | reviseConfirm() { | 
|---|
|  |  |  | this.dataList[this.rowNum].anfme = this.count | 
|---|
|  |  |  | this.dataList[this.rowNum].batch = this.batch | 
|---|
|  |  |  | this.dataList[this.rowNum].weight = this.weight | 
|---|
|  |  |  | this.matnr = '' | 
|---|
|  |  |  | this.messageText = "修改成功" | 
|---|
|  |  |  | this.messageToggle('success') | 
|---|
|  |  |  | this.$refs.revise.close() | 
|---|
|  |  |  | 
|---|
|  |  |  | this.title = '警告' | 
|---|
|  |  |  | this.content = '是否现在组托!' | 
|---|
|  |  |  | this.$refs.combConfirm.open() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | combClose() { | 
|---|
|  |  |  | this.$refs.combConfirm.close() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | uni.request({ | 
|---|
|  |  |  | url: that.baseUrl + '/mobile/comb/auth', | 
|---|
|  |  |  | data: JSON.stringify({ | 
|---|
|  |  |  | url: that.baseUrl + '/mobile/comb/auth', | 
|---|
|  |  |  | data: JSON.stringify({ | 
|---|
|  |  |  | barcode: that.barcode, | 
|---|
|  |  |  | combMats: that.dataList | 
|---|
|  |  |  | }), | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | header: { | 
|---|
|  |  |  | 'token':uni.getStorageSync('token') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | header: { | 
|---|
|  |  |  | 'token': uni.getStorageSync('token') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | success(result) { | 
|---|
|  |  |  | var res = result.data | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | that.resst(); | 
|---|
|  |  |  | that.messageText = "组托成功" | 
|---|
|  |  |  | that.messageToggle('success') | 
|---|
|  |  |  | const innerAudioContext = uni.createInnerAudioContext(); | 
|---|
|  |  |  | innerAudioContext.src = '/static/music/pakinOk.mp3'; | 
|---|
|  |  |  | innerAudioContext.play() | 
|---|
|  |  |  | } else if (res.code == 403) { | 
|---|
|  |  |  | that.messageText = res.msg | 
|---|
|  |  |  | that.messageToggle('error') | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 确认重置 | 
|---|
|  |  |  | resetConfirm() { | 
|---|
|  |  |  | this.dataList = '' | 
|---|
|  |  |  | this.dataList = [] | 
|---|
|  |  |  | this.messageText = "重置完成" | 
|---|
|  |  |  | this.messageToggle('success') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 取消重置 | 
|---|
|  |  |  | resetClose() { | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 清空 | 
|---|
|  |  |  | resst() { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style> | 
|---|
|  |  |  | @import url('../../static/css/wms.css/wms.css'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .code { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | position: fixed; | 
|---|
|  |  |  | 
|---|
|  |  |  | background-color: #FFF; | 
|---|
|  |  |  | z-index: 10; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .item { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | 
|---|
|  |  |  | margin-left: 20rpx; | 
|---|
|  |  |  | border-bottom: 1px solid #DCDFE6; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .item input { | 
|---|
|  |  |  | height: 50rpx; | 
|---|
|  |  |  | line-height: 50rpx; | 
|---|
|  |  |  | 
|---|
|  |  |  | font-size: 36upx; | 
|---|
|  |  |  | font-family: PingFang SC; | 
|---|
|  |  |  | width: 55vw; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .code-decs { | 
|---|
|  |  |  | width: 20vw; | 
|---|
|  |  |  | font-size: 18px; | 
|---|
|  |  |  | color: #303133; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .item-right { | 
|---|
|  |  |  | margin-left: auto; | 
|---|
|  |  |  | margin-right: 20rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .mat-list-title { | 
|---|
|  |  |  | height: 80rpx; | 
|---|
|  |  |  | line-height: 80rpx; | 
|---|
|  |  |  | 
|---|
|  |  |  | z-index: 9; | 
|---|
|  |  |  | /* border-top: 1px solid #DCDFE6; */ | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | box-shadow: 0px 0px 30px 0px rgba(0,0,0,0.5); | 
|---|
|  |  |  | box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.2); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|
|  |  |  | </style> | 
|---|