| <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 v-model="barcode" type="text" placeholder="扫码 / 输入" maxlength="10"  | 
|                         :focus="barcodeFocus" @input="barcodeInput" placeholder-style="line-height:  85rpx;"> | 
|                         <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-btn"> | 
|                         <input v-model="matnr" type="text" placeholder="扫码 / 输入" @input="findMat()" | 
|                         :focus="focus" placeholder-style="line-height:  85rpx;"> | 
|                         <uni-icons type="closeempty" size="20" color="#dadada" @click="removeMatnr()"></uni-icons> | 
|                     </view> | 
|                     <view class="content-btn"> | 
|                         <button class="cu-btn bg-blue pda-btn" @click="selectMat()">+提取</button> | 
|                     </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> | 
|                     <!-- <label v-show="matList.length != 0" style="float: right;margin-right: 20px;margin-top: 13px;"><uni-icons type="trash" size="25" color="#a5a5a5" @click="remove()"></uni-icons></label> --> | 
|                 </view> | 
|             </view> | 
|              | 
|             <view class="square-none"  v-show="matList.length === 0"> | 
|                 <view class="v-show">暂无更多数据...</view> | 
|             </view> | 
|              | 
|             <checkbox-group @change="checkbox"> | 
|                 <view v-for="(item,index) in matList" :key="index" class="data-list bg-false" :class="'bg-'+item.checked" > | 
|                     <view class="data-list-left"> | 
|                         <!-- <view> | 
|                             <checkbox :value="item.id+''" :checked="item.checked" style="display: block;" /> | 
|                         </view> --> | 
|                         <view class="matnr"><text style="width: 400rpx;">编码:{{item.matnr}}</text></view> | 
|                         <view><text style="width: 400rpx;">品名:{{item.maktx}}</text></view> | 
|                         <view><text style="width: 400rpx;">批号:{{item.batch}}</text></view> | 
|                         <view> | 
|                             <text style="width: 400rpx;">数量:{{item.anfme}}</text> | 
|                         </view> | 
|                     </view> | 
|                     <view class="data-list-right"> | 
|                         <label><uni-icons type="compose" size="20" color="#a5a5a5" @click="revise(item,index)"></uni-icons></label> | 
|                         <label><uni-icons type="trash" size="25" color="#a5a5a5" @click="remove(item,index)"></uni-icons></label> | 
|                     </view> | 
|                 </view> | 
|             </checkbox-group> | 
|         </scroll-view> | 
|          | 
|          | 
|         <!-- 底部按钮 --> | 
|         <view class="footer flex justify-around"> | 
|             <!-- <label class="label-btn" style="width: 170rpx;"> | 
|                 <checkbox :checked="check" @click="allChecked()">{{checkText}}</checkbox> | 
|             </label> | 
|             <label class="label-btn" style="width: 100rpx;"> | 
|                 <text  @click="reChecked()">反选</text> | 
|             </label> --> | 
|              | 
|             <label class="label-btn" style="width: 150rpx;"> | 
|                 <button class="cu-btn" @click="resst()">重置</button> | 
|             </label> | 
|             <label class="label-btn"> | 
|                 <button class="cu-btn bg-blue " @click="comb()">组托</button> | 
|             </label> | 
|         </view> | 
|          | 
|         <!-- 弹窗 --> | 
|         <!-- 修改数量 --> | 
|         <uni-popup ref="revise" background-color="#fff" @change="change"> | 
|             <view class="revise-box"> | 
|                 <view class="revise-box-top"> | 
|                     <view class="color-block-blue"></view> | 
|                     <text class="title">组托数量</text> | 
|                 </view> | 
|                 <view class="text-box"> | 
|                     <text>可组数量:{{enableQty}}</text> | 
|                 </view> | 
|                 <view class="changeBox"> | 
|                     <view class="num-box"> | 
|                         <uni-number-box v-model="count" :min="minCount" :max="maxCount" color="#747474"  @change="changeValue"/> | 
|                     </view>  | 
|                 </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 { | 
|                 barcode: '', | 
|                 barcodeFocus:true, | 
|                 focus:false, | 
|                 type: 'center', | 
|                 searchBox: 'hide', | 
|                 pick:'hide', | 
|                 matnr:'', | 
|                 matList:[], | 
|                 result: '', | 
|                 enableQty:'', | 
|                 count:'', | 
|                 minCount:0, | 
|                 maxCount:'', | 
|                 rowNum:'', | 
|                 check:false, | 
|                 checkText:'全选', | 
|                 checkedData:[], | 
|             } | 
|         }, | 
|         onShow() { | 
|             setTimeout(()=>{ | 
|                 // this.focuss() | 
|             }, 100); | 
|              | 
|         }, | 
|         mounted(){ | 
|             const UIP = uni.getStorageSync('UIP'); | 
|             this.baseIP = UIP; | 
|             const UPORT = uni.getStorageSync('UPORT'); | 
|             this.basePORT = UPORT | 
|         }, | 
|         methods: { | 
|             // barcode input 事件 | 
|             barcodeInput() { | 
|                 var len = this.barcode.length | 
|                 if (len != 8) { | 
|                     uni.showToast({title: '托盘码有误请重试', icon: "none", position: 'top'}); | 
|                     this.barcodeFocuss() | 
|                     return; | 
|                 } | 
|                 if (len == 8) { | 
|                     this.focuss() | 
|                 } | 
|             }, | 
|             // 托盘码有误重置 | 
|             barcodeFocuss() { | 
|                 // #ifdef APP | 
|                 let that = this; | 
|                 that.barcodeFocus = false; | 
|                 setTimeout(()=>{ | 
|                     that.barcode = ''; | 
|                     that.barcodeFocus = true; | 
|                 }, 100); | 
|                 // #endif | 
|             }, | 
|             // 商品光标清空重置 | 
|             focuss() { | 
|                 // #ifdef APP | 
|                 let that = this; | 
|                 that.focus = false; | 
|                 setTimeout(()=>{ | 
|                     that.matnr = ''; | 
|                     that.focus = true; | 
|                 }, 100); | 
|                 // #endif | 
|             }, | 
|             resst() { | 
|                 this.matList = [] | 
|                 this.barcode = '' | 
|                 this.barcodeFocuss() | 
|                 uni.vibrateShort(); | 
|             }, | 
|             removeBarcode() { | 
|                 this.barcode = '' | 
|                 uni.vibrateShort(); | 
|                 this.barcodeFocus = false; | 
|                 this.$nextTick(function() { | 
|                     this.barcodeFocus = true; | 
|                 }); | 
|             }, | 
|             removeMatnr() { | 
|                 this.matnr = '' | 
|                 uni.vibrateShort(); | 
|                 this.focus = false; | 
|                 this.$nextTick(function() { | 
|                     this.focus = true; | 
|                 }); | 
|             }, | 
|             remove() { | 
|                 // this.matList.splice(index,1) | 
|                 for (var i = 0; i < this.matList.length; i++) { | 
|                     if (this.matList[i].checked == true) { | 
|                         this.matList.splice(i,1) | 
|                     } | 
|                 } | 
|                 this.checkList(); | 
|                 uni.vibrateShort(); | 
|             }, | 
|             comb() { | 
|                 uni.vibrateShort(); | 
|                 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; | 
|                 } | 
|                 uni.showLoading(); | 
|                 uni.request({ | 
|                     url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + '/mobile/comb/auth', | 
|                     data: JSON.stringify({ | 
|                         barcode: that.barcode, | 
|                         combMats: that.matList | 
|                     }), | 
|                     method: 'POST', | 
|                     header: { | 
|                         'token':uni.getStorageSync('token') | 
|                     }, | 
|                     success(result) { | 
|                         uni.hideLoading(); | 
|                         var res = result.data | 
|                         if (res.code === 200) { | 
|                             that.resst(); | 
|                             uni.showToast({ | 
|                                 title: res.msg, | 
|                                 position: 'bottom', | 
|                                 duration: 1000 | 
|                             }); | 
|                         } 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'}) | 
|                         } | 
|                     } | 
|                 }); | 
|             }, | 
|             selectMat() { | 
|                 let that = this | 
|                 uni.vibrateShort(); | 
|                 uni.navigateTo({ | 
|                     url: "matSelect", | 
|                     events: { | 
|                         // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据  另外一个页面传过来的 | 
|                         acceptDataFromOpenedPage: function(data) { | 
|                             that.matnr = data.data | 
|                             that.findMat(that.matnr) | 
|                         }, | 
|                     }, | 
|                     success: function(res) { | 
|                         // 通过eventChannel向被打开页面传送数据   向另外一个页面传递值的 | 
|                         res.eventChannel.emit('acceptDataFromOpenerPage', {baseIP:that.baseIP, basePORT:that.basePORT }) | 
|                     }, | 
|                      | 
|                 }); | 
|                 that.matnr = '' | 
|             }, | 
|             findMat() { | 
|                 let that = this | 
|                 uni.request({ | 
|                     url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + '/mat/auth', | 
|                     data: { | 
|                         matnr:that.matnr | 
|                     }, | 
|                     header: { | 
|                         'token':uni.getStorageSync('token') | 
|                     }, | 
|                     success(result) { | 
|                         uni.vibrateShort(); | 
|                         let res = result.data | 
|                         if (res.code === 200 && res.data) { | 
|                             that.matData = res.data | 
|                             that.matnr = '' | 
|                             uni.navigateTo({ | 
|                                 url: "matQuery", | 
|                                 events: { | 
|                                     // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 | 
|                                     matList: function(data) { | 
|                                         that.matList.push(data.data) | 
|                                         console.log(that.matList) | 
|                                     }, | 
|                                 }, | 
|                                 success: function(res) { | 
|                                     // 通过eventChannel向被打开页面传送数据 | 
|                                     res.eventChannel.emit('matData', { data: that.matData }) | 
|                                 }, | 
|                             }); | 
|                         } | 
|                          | 
|                     } | 
|                 }); | 
|                  | 
|             }, | 
|          | 
|             change(e) { | 
|                 console.log('当前模式:' + e.type + ',状态:' + e.show); | 
|             }, | 
|             toggle(type) { | 
|                 this.type = type | 
|                 // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性 | 
|                 this.$refs.goodsSearch.open(type) | 
|             }, | 
|             checkbox: function (e) { | 
|                 var items = this.matList, | 
|                     values = e.detail.value; | 
|                 for (var i = 0, lenI = items.length; i < lenI; ++i) { | 
|                     const item = items[i] | 
|                     item.id = item.id + '' | 
|                     if(values.indexOf(item.id) >= 0){ | 
|                         this.$set(item,'checked',true) | 
|                     }else{ | 
|                         this.$set(item,'checked',false) | 
|                     } | 
|                 } | 
|                 if (values.length == items.length) { | 
|                     this.check = true | 
|                     this.checkText = "取消全选" | 
|                 } else { | 
|                     this.check = false | 
|                     this.checkText = "全选" | 
|                 } | 
|                 uni.vibrateShort(); | 
|             }, | 
|             revise(item,index) { | 
|                 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.type = type | 
|                 // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性 | 
|                 this.$refs.revise.open(type) | 
|             }, | 
|             changeValue() { | 
|                  | 
|             }, | 
|             confirm() { | 
|                 this.matList[this.rowNum].anfme = this.count | 
|                 this.$refs.revise.close() | 
|             }, | 
|             // 列表反选 | 
|             reChecked() {  | 
|                 if (this.matList.length == 0) { | 
|                     return; | 
|                 } | 
|                 var checkArr = [] | 
|                 for (var i = 0; i < this.matList.length;i++) { | 
|                     if (this.matList[i].checked == true) { | 
|                         this.$set(this.matList[i],'checked',false) | 
|                     }else{ | 
|                         this.$set(this.matList[i],'checked',true) | 
|                     } | 
|                     if (this.matList[i].checked == true) { | 
|                         checkArr.push(this.matList[i].checked)  | 
|                     } | 
|                 } | 
|                 if (checkArr.length == this.matList.length) { | 
|                     this.check = true | 
|                     this.checkText = "取消全选" | 
|                 } else { | 
|                     this.check = false | 
|                     this.checkText = "全选" | 
|                 } | 
|                 uni.vibrateShort(); | 
|             }, | 
|             // 列表全选 | 
|             allChecked(e){  | 
|                  | 
|                 if (this.check == true) { | 
|                     for (var i = 0; i < this.matList.length;i++) { | 
|                         this.$set(this.matList[i],'checked',false) | 
|                     } | 
|                     this.check = false | 
|                     this.checkText = "全选" | 
|                 } else { | 
|                     for (var i = 0; i < this.matList.length;i++) { | 
|                         this.$set(this.matList[i],'checked',true) | 
|                     } | 
|                     this.check = true | 
|                     this.checkText = "取消全选" | 
|                 } | 
|                 uni.vibrateShort(); | 
|             }, | 
|             // 检验列表长度 等于0 显示全选   | 
|             checkList() { | 
|                 if (this.matList.length == 0) { | 
|                     this.check = false | 
|                     this.checkText = "全选" | 
|                     return; | 
|                 } | 
|             } | 
|         } | 
|     } | 
| </script> | 
|   | 
| <style> | 
|     /* @import "../../colorui/main.css"; | 
|     @import "../../colorui/icon.css"; */ | 
|      | 
|     .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: 180rpx; | 
|         margin: 15rpx; | 
|         border-radius: 20rpx; | 
|     } | 
|     .data-list:first-child { | 
|         margin-top: 20rpx; | 
|     } | 
|     .data-list:last-child { | 
|         margin-bottom: 120rpx; | 
|     } | 
|     /* .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: 180rpx; | 
|         color: #676767; | 
|     } | 
|     .matnr { | 
|         padding-top: 10rpx; | 
|     } | 
|     .data-list-right { | 
|         display: inline-block; | 
|         float: right; | 
|         height: 180rpx; | 
|         line-height: 180rpx; | 
|     } | 
|     /* display: inline-block; | 
|     float: right; | 
|     width: 200rpx; | 
|     height: 180rpx; | 
|     line-height: 180rpx; */ | 
|     .data-list-right label { | 
|         display: inline-block; | 
|         float: left; | 
|         width: 80rpx; | 
|         height: 180rpx; | 
|     } | 
| </style> |