|  |  | 
 |  |  |    <view> | 
 |  |  |       <view class="code"> | 
 |  |  |          <view class="item"> | 
 |  |  |             <view class="code-decs">订单号:</view> | 
 |  |  |             <input type="text" placeholder=" 扫码 / 输入" v-model="order" :focus="orderFocus" | 
 |  |  |                @input="orderInput()" disabled> | 
 |  |  |          </view> | 
 |  |  |          <view class="item"> | 
 |  |  |             <view class="code-decs">库位号:</view> | 
 |  |  |             <input type="text" placeholder=" 扫码 / 输入" v-model="barcode" :focus="barcodeFocus" | 
 |  |  |                @confirm="barcodeInput()"> | 
 |  |  |          </view> | 
 |  |  |          <view class="item"> | 
 |  |  |             <view class="code-decs">物料码:</view> | 
 |  |  |             <view class="code-decs">物料号:</view> | 
 |  |  |             <input type="text" placeholder=" 扫码 / 输入" v-model="matnr" :focus="matFocus" @input="findMat()"> | 
 |  |  |             <view class="item-right"> | 
 |  |  |                <button></button> | 
 |  |  |                <!-- <text style="text-align: right;color: #409EFF;" @click="selectMat()">提取+</text> --> | 
 |  |  |                <!-- <uni-icons type="right" color="#c1c1c1"></uni-icons> --> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <view class="item"> | 
 |  |  |             <view class="code-decs">库位号:</view> | 
 |  |  |             <input type="text" placeholder=" 扫码 / 输入" v-model="barcode" :focus="barcodeFocus"> | 
 |  |  |                <button v-show="recommendLocs.length" size="mini" type="primary" @click="toggle('right')">推荐</button> | 
 |  |  |          </view> | 
 |  |  |       </view> | 
 |  |  |       <view class="mat-list-title"> | 
 |  |  | 
 |  |  |                   <view class="left-item">{{i + 1}}</view> | 
 |  |  |                </view> | 
 |  |  |                <view class="list-left-item"> | 
 |  |  |                   <view class="desc">编码:</view> | 
 |  |  |                   <view class="desc">订单号:</view> | 
 |  |  |                   <view class="left-item"> | 
 |  |  |                      <uni-tag :text="item.orderNo" type="primary"></uni-tag> | 
 |  |  |                   </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> | 
 |  |  |                <view class="list-left-item"> | 
 |  |  |                   <view class="desc">品名:</view> | 
 |  |  |                   <view class="desc">名称:</view> | 
 |  |  |                   <view class="left-item">{{item.maktx}}</view> | 
 |  |  |                </view> | 
 |  |  |                <view class="list-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="buttom"> | 
 |  |  |          <button size="mini" @click="reset('warn')">重置</button> | 
 |  |  |          <button size="mini" type="primary" @click="combConfirm('warn')">组托</button> | 
 |  |  |          <button size="mini" type="primary" @click="combConfirm('warn')">上架</button> | 
 |  |  |       </view> | 
 |  |  |       <!-- 弹窗 --> | 
 |  |  |       <!-- 修改数量 --> | 
 |  |  | 
 |  |  |                <!-- 标题 --> | 
 |  |  |                <view class="title">修改</view> | 
 |  |  |                <view class="popup-item"> | 
 |  |  |                   <view class="popup-item-left">编码:</view> | 
 |  |  |                   <view class="popup-item-left">料号:</view> | 
 |  |  |                   <view class="popup-item-right"> | 
 |  |  |                      <input type="text" v-model="matnr" disabled="true" | 
 |  |  |                      <input type="text" v-model="matnr1" 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"> | 
 |  |  | 
 |  |  |             <uni-popup-message :type="msgType1" :message="messageText" :duration="2000"></uni-popup-message> | 
 |  |  |          </uni-popup> | 
 |  |  |       </view> | 
 |  |  |       <view> | 
 |  |  |          <!-- 普通弹窗 --> | 
 |  |  |          <uni-popup ref="popup" background-color="#fff"> | 
 |  |  |             <scroll-view scroll-y="true" class="popup-content" :class="{ 'popup-height': type === 'left' || type === 'right' }"> | 
 |  |  |                <view class="recommend" v-for="item in recommendLocs" @click="chose(item)"> {{ item }}</view> | 
 |  |  |             </scroll-view> | 
 |  |  |          </uni-popup> | 
 |  |  |       </view> | 
 |  |  |    </view> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | 
 |  |  |             baseUrl: '', | 
 |  |  |             token: '', | 
 |  |  |             order: '', | 
 |  |  |             orderFocus: true, | 
 |  |  |             barcode: '', | 
 |  |  |             barcodeFocus: '', | 
 |  |  |             dataList: [], | 
 |  |  |             count: 0, | 
 |  |  |             rowNum: '', | 
 |  |  |             matnr: '', | 
 |  |  |             matnr1: '', | 
 |  |  |             batch: '', | 
 |  |  |             weight: '', | 
 |  |  |             msgType1: 'success', | 
 |  |  |             msgType: 'success', | 
 |  |  |             messageText: '', | 
 |  |  |             title: '', | 
 |  |  |             content: '', | 
 |  |  |             barcodeFocus: false, | 
 |  |  |             matFocus: false, | 
 |  |  |             matData: '' | 
 |  |  |             matFocus: true, | 
 |  |  |             matData: '', | 
 |  |  |             removeNum: 0, | 
 |  |  |             type: 'center', | 
 |  |  |             recommendLocs: [] | 
 |  |  |          } | 
 |  |  |       }, | 
 |  |  |       onShow() { | 
 |  |  | 
 |  |  |             this.msgType1 = type | 
 |  |  |             this.$refs.message.open() | 
 |  |  |          }, | 
 |  |  |          orderInput() { | 
 |  |  |             let that = this | 
 |  |  |             var order =  that.order.split(";") | 
 |  |  |             that.order = order[0] | 
 |  |  |             that.matnr = order[1] | 
 |  |  |          // barcode input 事件 | 
 |  |  |          barcodeInput() { | 
 |  |  |             // 不设置定时器 会出现扫入的字符串不全 | 
 |  |  |             setTimeout(() => { | 
 |  |  |                that.orderFocus = true | 
 |  |  |                var len = this.barcode.length | 
 |  |  |                this.focuss() | 
 |  |  |             }, 200) | 
 |  |  |             uni.request({ | 
 |  |  |                url: that.baseUrl + '/ManPakOut/list/auth', | 
 |  |  |                data: { | 
 |  |  |                   matnr: that.matnr | 
 |  |  |                }, | 
 |  |  |                header: { | 
 |  |  |                   'token': uni.getStorageSync('token') | 
 |  |  |                }, | 
 |  |  |                success(res) { | 
 |  |  |                   console.log(res); | 
 |  |  |                } | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          // 托盘码有误重置 | 
 |  |  |          barcodeFocuss() { | 
 |  |  |             let that = this; | 
 |  |  |             that.barcodeFocus = false; | 
 |  |  |             setTimeout(() => { | 
 |  |  |                that.barcode = ''; | 
 |  |  |                that.barcodeFocus = true; | 
 |  |  |             }, 100); | 
 |  |  |          }, | 
 |  |  |          // 商品光标清空重置 | 
 |  |  |          focuss() { | 
 |  |  |             setTimeout(() => { | 
 |  |  |                this.matnr = ''; | 
 |  |  |                this.matFocus = true; | 
 |  |  |             }, 100); | 
 |  |  |          }, | 
 |  |  |          // 搜索物料 | 
 |  |  |          findMat() { | 
 |  |  |             let that = this | 
 |  |  |             var matnr =  that.matnr.split(";") | 
 |  |  |             if (that.order != '') { | 
 |  |  |                if (that.order != matnr[0]) { | 
 |  |  |                   this.messageText = "当前物料不在订单内,请重新选择!!" | 
 |  |  |                   this.messageToggle('error') | 
 |  |  |                   setTimeout(()=> { | 
 |  |  |                      that.matnr = '' | 
 |  |  |                      that.matFocus = true | 
 |  |  |                   },1000) | 
 |  |  |                   return | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             that.order = matnr[0] | 
 |  |  |             that.matnr = matnr[1] | 
 |  |  |             uni.request({ | 
 |  |  |                url: that.baseUrl + '/mat/auth', | 
 |  |  |                data: { | 
 |  |  |                   matnr: that.matnr | 
 |  |  |                }, | 
 |  |  |                header: { | 
 |  |  |                   'token': uni.getStorageSync('token') | 
 |  |  |                }, | 
 |  |  |                data: { matnr: that.matnr }, | 
 |  |  |                header: { 'token': uni.getStorageSync('token') }, | 
 |  |  |                success(result) { | 
 |  |  |                   result = result.data | 
 |  |  |                   if (result.code === 200 && result.data) { | 
 |  |  |                      that.matData = result.data | 
 |  |  |                      that.matnr = '' | 
 |  |  |                      that.matData['batch'] = '' | 
 |  |  |                      result.data.batch = matnr[2] | 
 |  |  |                      uni.navigateTo({ | 
 |  |  |                         url: "../mat/matSelected", | 
 |  |  |                         // 通过eventChannel向被打开页面传送数据 | 
 |  |  | 
 |  |  |                         // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 | 
 |  |  |                         events: { | 
 |  |  |                            matList: function(data) { | 
 |  |  |                               that.recommendLoc() | 
 |  |  |                               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' | 
 |  |  |                         }); | 
 |  |  |                         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' }) | 
 |  |  |                   } | 
 |  |  |           | 
 |  |  |                } | 
 |  |  |             }); | 
 |  |  |           | 
 |  |  |          }, | 
 |  |  |          // 推荐库位 | 
 |  |  |          recommendLoc() { | 
 |  |  |             let that = this | 
 |  |  |             that.recommendLocs = [] | 
 |  |  |             uni.request({ | 
 |  |  |                url: that.baseUrl + '/node/recommendLoc', | 
 |  |  |                data: {matnr: that.matnr}, | 
 |  |  |                header: {'token': uni.getStorageSync('token')}, | 
 |  |  |                success(res) { | 
 |  |  |                   res = res.data | 
 |  |  |                   if (res.code == 200 && res.data) { | 
 |  |  |                      that.recommendLocs = res.data | 
 |  |  |                   }  | 
 |  |  |                } | 
 |  |  | 					 | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          checkMat(mat) { | 
 |  |  |             mat['orderNo'] = this.order | 
 |  |  |             var len = this.dataList.length | 
 |  |  |             var add = true ,sameItem = false | 
 |  |  |             for (var i = 0; i < len; i++) { | 
 |  |  |                if (mat.matnr == this.dataList[i].matnr) { | 
 |  |  |                   for (var j = 0; j < len; j++) { | 
 |  |  |                      if (mat.batch == this.dataList[j].batch) { | 
 |  |  |                         sameItem = true | 
 |  |  |                if (mat.orderNo != this.dataList[i].orderNo) { | 
 |  |  |                   add = true | 
 |  |  |                   break; | 
 |  |  |                } else { | 
 |  |  |                   if (mat.matnr == this.dataList[i].matnr) { | 
 |  |  |                      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 | 
 |  |  |                      // 相同物料 不同批号  新加列表 | 
 |  |  |                      if (mat.batch != this.dataList[i].batch) { | 
 |  |  |                         this.$forceUpdate() // 强制刷新 | 
 |  |  |                         if (sameItem) { | 
 |  |  |                            add = false | 
 |  |  |                         } else { | 
 |  |  |                            add = true | 
 |  |  |                         } | 
 |  |  | 								 | 
 |  |  |                      } else { | 
 |  |  |                         add = true | 
 |  |  |                         // 相同物料相同批号 数量累加 | 
 |  |  |                         this.dataList[i].anfme += mat.anfme | 
 |  |  |                         this.$forceUpdate() // 强制刷新 | 
 |  |  |                         add = false | 
 |  |  |                      } | 
 |  |  | 							 | 
 |  |  |                   } else { | 
 |  |  |                      // 相同物料相同批号 数量累加 | 
 |  |  |                      this.dataList[i].anfme += mat.anfme | 
 |  |  |                      this.$forceUpdate() // 强制刷新 | 
 |  |  |                      add = false | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  | 					 | 
 |  |  |             } | 
 |  |  |             if (add) { | 
 |  |  |                this.dataList.unshift(mat) | 
 |  |  |             } | 
 |  |  |          }, | 
 |  |  |          combConfirm() { | 
 |  |  |          combConfirm(type) { | 
 |  |  |             this.msgType = type | 
 |  |  |             this.title = '警告' | 
 |  |  |             this.content = '是否现在组托!' | 
 |  |  | 
 |  |  |             uni.vibrateShort(); | 
 |  |  |             let that = this; | 
 |  |  |             if (that.barcode === '') { | 
 |  |  |                this.messageText = "请扫描托盘条码" | 
 |  |  |                this.messageToggle('error') | 
 |  |  |                uni.showToast({ title:"请扫描托盘条码", icon: "error", position: 'center' }) | 
 |  |  |                return; | 
 |  |  |             } | 
 |  |  |             if (that.dataList.length === 0) { | 
 |  |  |                this.messageText = "请添加商品列表" | 
 |  |  |                this.messageToggle('error') | 
 |  |  |                uni.showToast({ title:"请添加商品列表", icon: "error", position: 'center' }) | 
 |  |  |                return; | 
 |  |  |             } | 
 |  |  |             for (var i = 0; i < that.dataList.length; i++) { | 
 |  |  |                if (that.dataList[i].anfme == 0 || that.dataList[i].anfme == '') { | 
 |  |  |                   this.messageText = that.dataList[i].matnr + '组托数量不能为0' | 
 |  |  |                   this.messageToggle('error') | 
 |  |  |                   uni.showToast({ title: that.dataList[i].matnr + '组托数量不能为0', icon: "error", position: 'center' }) | 
 |  |  |                   return; | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             uni.request({ | 
 |  |  |                url: that.baseUrl + '/mobile/comb/auth', | 
 |  |  |                url: that.baseUrl + '/mobile/manDetl/in', | 
 |  |  |                data: JSON.stringify({ | 
 |  |  |                   barcode: that.barcode, | 
 |  |  |                   locNo: 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') | 
 |  |  |                      uni.showToast({ title:"组托成功", icon: "success", position: 'center' }) | 
 |  |  |                   } else if (res.code == 403) { | 
 |  |  |                      that.messageText = res.msg | 
 |  |  |                      that.messageToggle('error') | 
 |  |  |                      uni.showToast({ title: res.msg, icon: "none", position: 'top' }) | 
 |  |  |                      setTimeout(() => { | 
 |  |  |                         uni.reLaunch({ | 
 |  |  |                            url: '../login/login' | 
 |  |  |                         }); | 
 |  |  |                      }, 1000); | 
 |  |  |                   } else { | 
 |  |  |                      that.messageText = res.msg | 
 |  |  |                      that.messageToggle('error') | 
 |  |  |                      uni.showToast({ title: res.msg, icon: "none", position: 'top' }) | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |             }); | 
 |  |  |          }, | 
 |  |  |          reset(type) { | 
 |  |  |             this.msgType = type | 
 |  |  |             this.title = '警告' | 
 |  |  |             this.content = '是否重置!' | 
 |  |  |             this.$refs.resetConfirm.open() | 
 |  |  |          }, | 
 |  |  |          // 确认重置 | 
 |  |  |          resetConfirm() { | 
 |  |  |             this.dataList = [] | 
 |  |  |             this.order = '' | 
 |  |  |             this.barcode = '' | 
 |  |  |             this.messageText = "重置完成" | 
 |  |  |             this.messageToggle('success') | 
 |  |  |          }, | 
 |  |  |          // 取消重置 | 
 |  |  |          resetClose() { | 
 |  |  | 			 | 
 |  |  |          }, | 
 |  |  |          // 修改批号 | 
 |  |  |          revise(item, i) { | 
 |  |  |             this.matnr1 = 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() | 
 |  |  |          }, | 
 |  |  |          eject(type) { | 
 |  |  |             this.type = type | 
 |  |  |             this.$refs.revise.open(type) | 
 |  |  |          }, | 
 |  |  |          // 列表移除按钮 | 
 |  |  |          remove(item, i, type) { | 
 |  |  |             this.removeNum  = i | 
 |  |  |             this.msgType = type | 
 |  |  |             this.title = '警告' | 
 |  |  |             this.content = '是否移除当前商品!' | 
 |  |  |             this.$refs.alertDialog.open(i) | 
 |  |  |          }, | 
 |  |  |          // 确认移除 | 
 |  |  |          removeConfirm(i) { | 
 |  |  |             uni.showToast({ title: "移除成功", icon: "success", position: 'top' }) | 
 |  |  |             this.dataList.splice(this.removeNum, 1) | 
 |  |  |          }, | 
 |  |  |          reviseConfirm() { | 
 |  |  |             this.dataList[this.rowNum].anfme = this.count | 
 |  |  |             this.dataList[this.rowNum].batch = this.batch | 
 |  |  |             this.dataList[this.rowNum].weight = this.weight | 
 |  |  |             uni.showToast({ title: "修改成功", icon: "success", position: 'top' }) | 
 |  |  |             this.$refs.revise.close() | 
 |  |  |             this.$forceUpdate() // 强制刷新 | 
 |  |  |          }, | 
 |  |  |          reviseClose() { | 
 |  |  |             this.$refs.revise.close() | 
 |  |  |          }, | 
 |  |  |          changeValue(value) { | 
 |  |  |             this.count = value | 
 |  |  |          }, | 
 |  |  |          // 清空 | 
 |  |  |          resst() { | 
 |  |  |             this.dataList = [] | 
 |  |  |             this.barcode = '' | 
 |  |  |             this.barcodeFocuss() | 
 |  |  |          }, | 
 |  |  |          combClose() { | 
 |  |  |             this.$refs.combConfirm.close() | 
 |  |  |          }, | 
 |  |  |          // 取消移除 | 
 |  |  |          removeClose() { | 
 |  |  |             this.$refs.alertDialog.close() | 
 |  |  |          }, | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | 
 |  |  |       width: 100%; | 
 |  |  |       background-color: white; | 
 |  |  |       position: fixed; | 
 |  |  |       margin-top: 300rpx; | 
 |  |  |       margin-top: 200rpx; | 
 |  |  |       z-index: 9; | 
 |  |  |       /* border-top: 1px solid #DCDFE6; */ | 
 |  |  |       text-align: center; |