| New file | 
 |  |  | 
 |  |  | <template> | 
 |  |  |     <view> | 
 |  |  |         <view class="code"> | 
 |  |  |             <view class="item"> | 
 |  |  |                 <view class="code-decs">商品码:</view> | 
 |  |  |                 <input type="text" placeholder=" 扫码 / 输入" :focus="barcodeFocus"  v-model="matnr"  @input="findMat"> | 
 |  |  |             </view> | 
 |  |  |             <view class="item"> | 
 |  |  |                 <view class="code-decs">来源地:</view> | 
 |  |  |                 <uni-combox :candidates="orderNoList" placeholder="请选择来源地" :focus="barcodeFocus" v-model="orderNo" @input="findMat"></uni-combox> | 
 |  |  |             </view> | 
 |  |  |             <view class="item"> | 
 |  |  |                 <view class="code-decs">库位码:</view> | 
 |  |  |                 <input type="text" placeholder=" 扫码 / 输入" v-model="locNo" > | 
 |  |  |             </view> | 
 |  |  |         </view> | 
 |  |  |         <view class="mat-list-title"> | 
 |  |  |             <!-- <view style="width: 200rpx;"></view> --> | 
 |  |  |             <view style="-webkit-flex: 1;flex: 1;">商品列表</view> | 
 |  |  |             <!-- <view style="width: 200rpx;"><button size="mini" type="primary" @click="getChecked">提取</button></view> --> | 
 |  |  |         </view> | 
 |  |  |         <scroll-view> | 
 |  |  |             <checkbox-group class="list" v-for="(item,i) in dataList" :key="i" @change="checkboxChange"> | 
 |  |  |                 <view class="aside"> | 
 |  |  |                     <checkbox :value="item.matnr" :checked="item.checked" @click="set(i)"/> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="list-left" style="margin: 0;"> | 
 |  |  |                     <view class="list-left-item"> | 
 |  |  |                         <view class="desc">No:</view> | 
 |  |  |                         <view class="left-item">{{i + 1}}</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="left-item">{{item.origin}}</view> | 
 |  |  |                     </view> | 
 |  |  |                     <!-- <view class="list-left-item"> | 
 |  |  |                         <view class="desc">规格:</view> | 
 |  |  |                         <view class="left-item">{{item.specs}}</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> | 
 |  |  |                     <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> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="list-right"> | 
 |  |  |                     <uni-icons type="compose" color="#9add8b" size="24" @click="revise(item,i)"></uni-icons> | 
 |  |  |                     <uni-icons type="trash" color="#f58a8a" size="24" @click="remove(item,i,'warn')"></uni-icons> | 
 |  |  |                 </view> | 
 |  |  |             </checkbox-group> | 
 |  |  |         </scroll-view> | 
 |  |  |         <!-- 底部操作按钮 --> | 
 |  |  |         <view class="buttom"> | 
 |  |  |             <button size="mini" @click="reset('warn')">重置</button> | 
 |  |  |             <button size="mini" type="primary" @click="combConfirm('warn')">上架</button> | 
 |  |  |         </view> | 
 |  |  |         <!-- 弹窗 --> | 
 |  |  |         <!-- 修改数量 --> | 
 |  |  |         <view> | 
 |  |  |             <uni-popup ref="revise" type="dialog"> | 
 |  |  |                 <view class="popup"> | 
 |  |  |                     <!-- 标题 --> | 
 |  |  |                     <view class="title">修改</view> | 
 |  |  |                     <view class="popup-item"> | 
 |  |  |                         <view class="popup-item-left">料号:</view> | 
 |  |  |                         <view class="popup-item-right"> | 
 |  |  |                             <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-right"><input type="text" v-model="batch"></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" :step='0.01' :max="9999999" color="#747474" | 
 |  |  |                                 @change="changeValue" /> | 
 |  |  |                         </view> | 
 |  |  |                     </view> | 
 |  |  |                     <view class="btn"> | 
 |  |  |                         <view class="btn-left" @click="reviseClose">取消</view> | 
 |  |  |                         <view class="btn-right" @click="reviseConfirm()">修改</view> | 
 |  |  |                     </view> | 
 |  |  |                 </view> | 
 |  |  |             </uni-popup> | 
 |  |  |         </view> | 
 |  |  |         <!-- 移除确认 --> | 
 |  |  |         <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> | 
 |  |  |         </view> | 
 |  |  |         <view> | 
 |  |  |             <!-- 提示信息弹窗 --> | 
 |  |  |             <uni-popup ref="message" type="message"> | 
 |  |  |                 <uni-popup-message :type="msgType1" :message="messageText" :duration="2000"></uni-popup-message> | 
 |  |  |             </uni-popup> | 
 |  |  |         </view> | 
 |  |  |         <!-- 确认组托 --> | 
 |  |  |         <view> | 
 |  |  |             <uni-popup ref="combConfirm" type="dialog"> | 
 |  |  |                 <uni-popup-dialog :type="msgType" cancelText="取消" confirmText="确认" :title="title" :content="content" | 
 |  |  |                     @confirm="comb" @close="combClose"></uni-popup-dialog> | 
 |  |  |             </uni-popup> | 
 |  |  |         </view> | 
 |  |  |         <!-- 确认重置 --> | 
 |  |  |         <view> | 
 |  |  |             <uni-popup ref="resetConfirm" type="dialog"> | 
 |  |  |                 <uni-popup-dialog :type="msgType" cancelText="取消" confirmText="确认" :title="title" :content="content" | 
 |  |  |                     @confirm="resetConfirm" @close="resetClose"></uni-popup-dialog> | 
 |  |  |             </uni-popup> | 
 |  |  |         </view> | 
 |  |  |         <view> | 
 |  |  |             <!-- 提示信息弹窗 --> | 
 |  |  |             <uni-popup ref="message" type="message"> | 
 |  |  |                 <uni-popup-message :type="msgType1" :message="messageText" :duration="2000"></uni-popup-message> | 
 |  |  |             </uni-popup> | 
 |  |  |         </view> | 
 |  |  |     </view> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  |     export default { | 
 |  |  |         data() { | 
 |  |  |             return { | 
 |  |  |                 baseUrl: '', | 
 |  |  |                 token: '', | 
 |  |  |                 order: '', | 
 |  |  |                 barcode: '', | 
 |  |  |                 barcodeFocus: '', | 
 |  |  |                 dataList: [], | 
 |  |  |                 checkedDataList: [], | 
 |  |  |                 count: 0, | 
 |  |  |                 rowNum: '', | 
 |  |  |                 matnr: '', | 
 |  |  |                 matnr1: '', | 
 |  |  |                 batch: '', | 
 |  |  |                 weight: '', | 
 |  |  |                 msgType1: 'success', | 
 |  |  |                 msgType: 'success', | 
 |  |  |                 messageText: '', | 
 |  |  |                 title: '', | 
 |  |  |                 content: '', | 
 |  |  |                 barcodeFocus: true, | 
 |  |  |                 matFocus: false, | 
 |  |  |                 matData: '', | 
 |  |  |                 removeNum: 0, | 
 |  |  |                 orderNoList: [], | 
 |  |  |                 orderNo: '', | 
 |  |  |                 locNo:'' | 
 |  |  |             } | 
 |  |  |         }, | 
 |  |  |         onShow() { | 
 |  |  |                     this.baseUrl = uni.getStorageSync('baseUrl'); | 
 |  |  |                     this.token = uni.getStorageSync('token'); | 
 |  |  |                     this.getOrderNoList() | 
 |  |  |                 }, | 
 |  |  |         methods: { | 
 |  |  |             set(e) { | 
 |  |  |                 var ck = this.dataList[e].checked | 
 |  |  |                 this.dataList[e].checked = ck ? false:true | 
 |  |  |             }, | 
 |  |  |             getChecked() { | 
 |  |  |                 var checkedList = [] | 
 |  |  |                 for(var i = 0; i < this.dataList.length; i++) { | 
 |  |  |                     var t = !this.dataList[i].checked | 
 |  |  |                     if (this.dataList[i].checked) { | 
 |  |  |                         checkedList.push(this.dataList[i]) | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 this.dataList = checkedList | 
 |  |  |             }, | 
 |  |  |             getOrderDet() { | 
 |  |  |                 let that = this | 
 |  |  |                 uni.request({ | 
 |  |  |                     url: that.baseUrl + '/order/list/orderNo', | 
 |  |  |                     data: {orderNo: that.orderNo} , | 
 |  |  |                     method: 'GET', | 
 |  |  |                     success(res) { | 
 |  |  |                         res = res.data; | 
 |  |  |                         if (res.code === 200) { | 
 |  |  |                             that.dataList = res.data | 
 |  |  |                             for (var i = 0; i < that.dataList.length; i++) { | 
 |  |  |                                 that.$set(that.dataList[i],'checked',false) | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 }) | 
 |  |  |             }, | 
 |  |  |             checkboxChange: function (e) { | 
 |  |  |             }, | 
 |  |  |             getOrderNoList() { | 
 |  |  |                 let that = this | 
 |  |  |                 uni.request({ | 
 |  |  |                     url: this.baseUrl + '/originRule/list/all', | 
 |  |  |                     method: 'POST', | 
 |  |  |                     success(res) { | 
 |  |  |                         res = res.data | 
 |  |  |                         for (var i = 0; i < res.data.length; i++) { | 
 |  |  |                             that.orderNoList.push(res.data[i]) | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 }) | 
 |  |  |             }, | 
 |  |  |  | 
 |  |  |             messageToggle(type) { | 
 |  |  |                 this.msgType1 = type | 
 |  |  |                 this.$refs.message.open() | 
 |  |  |             }, | 
 |  |  |             // barcode input 事件 | 
 |  |  |             barcodeInput() { | 
 |  |  |                 // 不设置定时器 会出现扫入的字符串不全 | 
 |  |  |                 setTimeout(() => { | 
 |  |  |                     var len = this.barcode.length | 
 |  |  |                     this.focuss() | 
 |  |  |                 }, 200) | 
 |  |  |             }, | 
 |  |  |             // 托盘码有误重置 | 
 |  |  |             barcodeFocuss() { | 
 |  |  |                 let that = this; | 
 |  |  |                 that.barcodeFocus = false; | 
 |  |  |                 setTimeout(() => { | 
 |  |  |                     that.matnr = ''; | 
 |  |  |                     that.orderNo = '' | 
 |  |  |                     that.barcodeFocus = true; | 
 |  |  |                 }, 100); | 
 |  |  |             }, | 
 |  |  |             // 商品光标清空重置 | 
 |  |  |             focuss() { | 
 |  |  |                 setTimeout(() => { | 
 |  |  |                     this.matnr = ''; | 
 |  |  |                     this.matFocus = true; | 
 |  |  |                 }, 100); | 
 |  |  |             }, | 
 |  |  |             // 搜索物料 | 
 |  |  |             findMat() { | 
 |  |  |                 let that = this | 
 |  |  |                 if(that.matnr.length < 10){ | 
 |  |  |                     that.barcodeFocuss() | 
 |  |  |                     return; | 
 |  |  |                 } | 
 |  |  |                 if(that.orderNo ===''){ | 
 |  |  |                     return; | 
 |  |  |                 } | 
 |  |  |                 that.checkMat({"matnr":that.matnr,"anfme":0,"origin":that.orderNo}) | 
 |  |  |                 that.barcodeFocuss() | 
 |  |  |             }, | 
 |  |  |             checkMat(mat) { | 
 |  |  | 				 | 
 |  |  |                 var len = this.dataList.length | 
 |  |  |                 var add = true, | 
 |  |  |                     sameItem = false | 
 |  |  |                 for (var i = 0; i < len; i++) { | 
 |  |  |                     if (mat.matnr != this.dataList[i].matnr) { | 
 |  |  |                         add = true | 
 |  |  |                     }else{ | 
 |  |  |                         add = false | 
 |  |  |                     }  | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |                 if (add) { | 
 |  |  |                     this.dataList.unshift(mat) | 
 |  |  | 					 | 
 |  |  |                 } | 
 |  |  | 				 | 
 |  |  |             }, | 
 |  |  |             combConfirm(type) { | 
 |  |  |                 this.msgType = type | 
 |  |  |                 this.title = '警告' | 
 |  |  |                 this.content = '是否现在组托!' | 
 |  |  |                 this.$refs.combConfirm.open() | 
 |  |  |             }, | 
 |  |  |             comb() { | 
 |  |  |                 uni.vibrateShort(); | 
 |  |  |                 let that = this; | 
 |  |  |                 if (that.locNo === '') { | 
 |  |  |                     this.messageText = "请输入库位码" | 
 |  |  |                     this.messageToggle('error') | 
 |  |  |                     return; | 
 |  |  |                 } | 
 |  |  |                 if (that.dataList.length === 0) { | 
 |  |  |                     this.messageText = "请添加商品列表" | 
 |  |  |                     this.messageToggle('error') | 
 |  |  |                     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') | 
 |  |  |                         return; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 uni.request({ | 
 |  |  |                     url: that.baseUrl + '/mobile/manDetl/in/origin', | 
 |  |  |                     data: JSON.stringify({						 | 
 |  |  |                         locNo:that.locNo, | 
 |  |  |                         combMats: that.dataList | 
 |  |  |                     }), | 
 |  |  |                     method: 'POST', | 
 |  |  |                     header: { | 
 |  |  |                         'token': uni.getStorageSync('token') | 
 |  |  |                     }, | 
 |  |  |                     success(result) { | 
 |  |  |                         var res = result.data | 
 |  |  |                         if (res.code === 200) { | 
 |  |  |                             that.resst(); | 
 |  |  |                             that.messageText = "组托成功" | 
 |  |  |                             that.messageToggle('success') | 
 |  |  |                         } else if (res.code == 403) { | 
 |  |  |                             that.messageText = res.msg | 
 |  |  |                             that.messageToggle('error') | 
 |  |  |                             setTimeout(() => { | 
 |  |  |                                 uni.reLaunch({ | 
 |  |  |                                     url: '../login/login' | 
 |  |  |                                 }); | 
 |  |  |                             }, 1000); | 
 |  |  |                         } else { | 
 |  |  |                             that.messageText = res.msg | 
 |  |  |                             that.messageToggle('error') | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |             }, | 
 |  |  |             reset(type) { | 
 |  |  |                 this.msgType = type | 
 |  |  |                 this.title = '警告' | 
 |  |  |                 this.content = '是否重置!' | 
 |  |  |                 this.$refs.resetConfirm.open() | 
 |  |  |             }, | 
 |  |  |             // 确认重置 | 
 |  |  |             resetConfirm() { | 
 |  |  |                 this.dataList = [] | 
 |  |  |                 this.orderNo = '' | 
 |  |  |                 this.barcode = '' | 
 |  |  |                 this.locNo = '' | 
 |  |  |                 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) { | 
 |  |  |                 this.messageText = "移除成功" | 
 |  |  |                 this.messageToggle('success') | 
 |  |  |                 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 | 
 |  |  |                 this.messageText = "修改成功" | 
 |  |  |                 this.messageToggle('success') | 
 |  |  |                 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() | 
 |  |  |             }, | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style> | 
 |  |  |     @import url('../../static/css/wms.css/wms.css'); | 
 |  |  |  | 
 |  |  |     .list { | 
 |  |  |         display: flex; | 
 |  |  |         min-height: 80rpx; | 
 |  |  |         background-color: #FFF; | 
 |  |  |         margin: 20rpx 20rpx; | 
 |  |  |         border-radius: 20rpx; | 
 |  |  |         box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.2); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .list:first-child { | 
 |  |  |         margin-top: 420rpx; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .list:last-child { | 
 |  |  |         margin-bottom: 120rpx; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .aside { | 
 |  |  |         width: 100rpx; | 
 |  |  |         /* background-color: #303133; */ | 
 |  |  |         display: flex; | 
 |  |  |         align-items: center; | 
 |  |  |         justify-content: center; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .code { | 
 |  |  |         width: 100%; | 
 |  |  |         position: fixed; | 
 |  |  |         min-height: 300rpx; | 
 |  |  |         background-color: #FFF; | 
 |  |  |         z-index: 10; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .item { | 
 |  |  |         display: flex; | 
 |  |  |         align-items: center; | 
 |  |  |         height: 100rpx; | 
 |  |  |         margin-left: 20rpx; | 
 |  |  |         border-bottom: 1px solid #DCDFE6; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .item input { | 
 |  |  |         height: 50rpx; | 
 |  |  |         line-height: 50rpx; | 
 |  |  |         /* font-family: PingFang SC; uniapp 默认字体不居中 */ | 
 |  |  |         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 { | 
 |  |  |         display: flex; | 
 |  |  |         align-items: center; | 
 |  |  |         height: 80rpx; | 
 |  |  |         width: 100%; | 
 |  |  |         background-color: white; | 
 |  |  |         position: fixed; | 
 |  |  |         margin-top: 300rpx; | 
 |  |  |         z-index: 9; | 
 |  |  |         /* border-top: 1px solid #DCDFE6; */ | 
 |  |  |         text-align: center; | 
 |  |  |         box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.5); | 
 |  |  | 		 | 
 |  |  |  | 
 |  |  |     } | 
 |  |  | </style> |