|  |  | 
 |  |  | <template> | 
 |  |  |    <view> | 
 |  |  |       <view class="cu-form-group margin-top"> | 
 |  |  |          <view> | 
 |  |  |             出库口 | 
 |  |  |          </view> | 
 |  |  |          <view class="uni-list-cell-db"> | 
 |  |  |             <picker @change="bindPickerChange" :value="index" :range="array" range-key="name"> | 
 |  |  |                <view class="uni-input">{{array[index]}}</view> | 
 |  |  |             </picker> | 
 |  |  |          </view> | 
 |  |  |          <view> | 
 |  |  |             <button v-model="matBtn" class="cu-btn bg-yellow" @click="toggle('right')"><text>+补充</text></button> | 
 |  |  |          </view> | 
 |  |  |          <view class="title">托盘码</view> | 
 |  |  |          <input v-model="billNo" placeholder="扫码 / 输入" name="input" @input="findCode()" focus> | 
 |  |  |          <button v-model="matBtn" class="cu-btn bg-yellow" @click="toggle('right')"><text>+补充</text></button> | 
 |  |  | 			 | 
 |  |  |       </view> | 
 |  |  |       <view class="margin-top"> | 
 |  |  |          <uni-table border stripe emptyText="暂无更多数据"> | 
 |  |  |             <uni-tr> | 
 |  |  |                <uni-th width="50">数量</uni-th> | 
 |  |  |                <uni-th width="100">产品ID</uni-th> | 
 |  |  |                <uni-th width="100">产品名称</uni-th> | 
 |  |  |                <uni-th width="100">库位</uni-th> | 
 |  |  |                <uni-th align="center" width="80">数量</uni-th> | 
 |  |  |                <uni-th align="center" width="100">产品编码</uni-th> | 
 |  |  |                <uni-th align="center" width="100">产品名称</uni-th> | 
 |  |  |                <uni-th align="center" width="100">产品批号</uni-th> | 
 |  |  |                <uni-th align="center" width="100">库位</uni-th> | 
 |  |  |                <uni-th align="center" width="150">确认数量</uni-th> | 
 |  |  |             </uni-tr> | 
 |  |  |             <uni-tr v-for="(item, index) in locDetlData" :key="index"> | 
 |  |  |                <uni-td>{{item.count}}</uni-td> | 
 |  |  |                <uni-td>{{item.matNo}}</uni-td> | 
 |  |  |                <uni-td>{{item.matName}}</uni-td> | 
 |  |  |                <uni-td>{{item.itemBatch}}</uni-td> | 
 |  |  |                <uni-td>{{item.locNo}}</uni-td> | 
 |  |  |                <uni-td align="center"> | 
 |  |  |                   <button class ="cu-btn bg-orange margin-xs" @click="conf(index,item)">修改</button> | 
 |  |  |                   <button class ="cu-btn bg-red margin-xs" @click="remove(index,item)">删除</button> | 
 |  |  |                </uni-td> | 
 |  |  |             </uni-tr> | 
 |  |  |          </uni-table> | 
 |  |  | 			 | 
 |  |  |       </view> | 
 |  |  |       <view> | 
 |  |  |          <button class="cu-btn bg-yellow pda-btn">确 认</button> | 
 |  |  |          <button class="cu-btn bg-grey pda-btn">重 置</button> | 
 |  |  |       <view style="height: 200rpx;"> | 
 |  |  |           <!-- 空白层 --> | 
 |  |  |       </view>  | 
 |  |  |       <view class="cu-bar foot input" style="height: 130rpx;"> | 
 |  |  |          <view class="flex solid-bottom padding justify-start" > | 
 |  |  |             <button class="cu-btn bg-yellow main-btn margin-xs" style="width: 430rpx;" @click="check">确 认</button> | 
 |  |  |             <button class="cu-btn bg-grey main-btn margin-xs" @click="reset">重 置</button> | 
 |  |  |          </view> | 
 |  |  |       </view> | 
 |  |  |       <view> | 
 |  |  | 		 | 
 |  |  |       <scroll-view> | 
 |  |  |          <uni-popup ref="popup" background-color="#fff" style="width: 500rpx;"> | 
 |  |  |             <view class="popup-content" :class="{ 'popup-height': type === 'left' || type === 'right' }"> | 
 |  |  |                   <view class="cu-form-group margin-top"> | 
 |  |  | 
 |  |  |                   </view> | 
 |  |  |                   <view class="cu-form-group margin-top"> | 
 |  |  |                      <text class="title">规格型号</text> | 
 |  |  |                      <input type="text" name="input" autocomplete="off" v-model="specs"> | 
 |  |  |                      <input type="text" name="input" autocomplete="off" v-model="size"> | 
 |  |  |                   </view> | 
 |  |  |                   <view class="cu-form-group margin-top"> | 
 |  |  |                      <text class="title">单位</text> | 
 |  |  | 
 |  |  |                   </view> | 
 |  |  |                   <view class="cu-form-group margin-top"> | 
 |  |  |                      <text class="title">数量</text> | 
 |  |  |                      <uni-number-box @change="countDom" v-model="count" /> | 
 |  |  |                      <uni-number-box :min="0" :max="999" @change="countDom" v-model="count" /> | 
 |  |  |                   </view> | 
 |  |  |                   <button class="cu-btn bg-yellow pda-btn2" @click="confirm">补充</button> | 
 |  |  | 						 | 
 |  |  |                   <view class="flex solid-bottom padding justify-center"> | 
 |  |  |                      <button class="cu-btn bg-yellow pda-btn2" @click="confirm">提取</button> | 
 |  |  |                   </view> | 
 |  |  |                   <view style="height: 200rpx;"> | 
 |  |  |                       <!-- 空白层 --> | 
 |  |  |                   </view> | 
 |  |  |             </view> | 
 |  |  |          </uni-popup> | 
 |  |  |       </view> | 
 |  |  |       </scroll-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="inputDialog" type="dialog"> | 
 |  |  |             <uni-popup-dialog ref="inputClose" mode="input" title="产品数量"  | 
 |  |  |                placeholder="请输入组托数量" @confirm="dialogInputConfirm"> | 
 |  |  |                   <uni-number-box :min="0" :max="999" v-model="value" /> | 
 |  |  |             </uni-popup-dialog>	 | 
 |  |  |          </uni-popup> | 
 |  |  |       </view> | 
 |  |  |       <!-- <view> | 
 |  |  |          <view class="uni-padding-wrap uni-common-mt"> | 
 |  |  |             <view class="uni-btn-v"> | 
 |  |  |                <button type="default" @tap="noTitlemodalTap">无标题的modal</button> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |       </view> --> | 
 |  |  |    </view> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | 
 |  |  |    export default { | 
 |  |  |       data() { | 
 |  |  |          return { | 
 |  |  |             index: 0, | 
 |  |  |             array: [], | 
 |  |  |             msgType: '', | 
 |  |  |             messageText: '', | 
 |  |  |             matBtn:'', | 
 |  |  |             souceData:[], // 初始化表格数据记录 | 
 |  |  |             locDetlData:[], | 
 |  |  |             matNo:'', | 
 |  |  |             matName:'', | 
 |  |  |             specs:'', | 
 |  |  |             size:'', | 
 |  |  |             unit:'', | 
 |  |  |             count:'0', | 
 |  |  |             count:0, | 
 |  |  |             type: '', | 
 |  |  |             msgType:'', | 
 |  |  |             messageText:'', | 
 |  |  |             baseIP:'', | 
 |  |  |             basePORT:'', | 
 |  |  |             checkList:[], | 
 |  |  |             sourceList:[], | 
 |  |  |             billNo:'', | 
 |  |  |             matData:[], | 
 |  |  |             rowNum:'', | 
 |  |  |             value:'0', | 
 |  |  |          } | 
 |  |  |       }, | 
 |  |  |       onLoad(){ | 
 |  |  |          let that = this | 
 |  |  |          uni.request({ | 
 |  |  |             url: that.baseUrl + "/available/take/check/site", | 
 |  |  |             header: { | 
 |  |  |                'token':uni.getStorageSync('token') | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             async: false, | 
 |  |  |             success(res){ | 
 |  |  |                if(res.data.code === 200){ | 
 |  |  |                   that.array = res.data.data | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |          }) | 
 |  |  |       mounted(){ | 
 |  |  |          // 获取IP端口 | 
 |  |  |          const UIP = uni.getStorageSync('UIP'); | 
 |  |  |          this.baseIP = UIP; | 
 |  |  |          const UPORT = uni.getStorageSync('UPORT'); | 
 |  |  |          this.basePORT = UPORT; | 
 |  |  |       }, | 
 |  |  |       methods: { | 
 |  |  |          bindPickerChange: function(e) { | 
 |  |  |             this.index = e.detail.value | 
 |  |  |          // 提示窗口 | 
 |  |  |          messageToggle(type) { | 
 |  |  |             this.msgType = type | 
 |  |  |             this.messageText = '提取失败' | 
 |  |  |             this.$refs.message.open() | 
 |  |  |          }, | 
 |  |  |          // 提取 | 
 |  |  |          // 根据托盘码查询 | 
 |  |  |          findCode() { | 
 |  |  |             let that = this | 
 |  |  |             if (that.billNo.length === 0 || that.billNo.length !== 8) { | 
 |  |  |                return | 
 |  |  |             } | 
 |  |  |             let barCode = that.billNo | 
 |  |  |             // 赋值前清空表格 | 
 |  |  |             that.locDetlData = [] | 
 |  |  |             uni.request({ | 
 |  |  |                url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/check/queryMatFromBarCode?barCode=" + barCode, | 
 |  |  |                header: { | 
 |  |  |                   'content-type':'application/x-www-form-urlencoded', | 
 |  |  |                   'token':uni.getStorageSync('token') | 
 |  |  |                }, | 
 |  |  |                data: { | 
 |  |  |                   barCode: barCode | 
 |  |  |                }, | 
 |  |  |                method:'GET', | 
 |  |  |                success(res) { | 
 |  |  |                   if (res.data.code === 200) { | 
 |  |  |                      that.locDetlData = res.data.data | 
 |  |  |                      if (res.data.data && res.data.data.length > 0) { | 
 |  |  |                         res.data.data.map(function(item){ | 
 |  |  |                            that.souceData.push(item) | 
 |  |  |                         }) | 
 |  |  |                      } | 
 |  |  |                   } else if (res.data.code === 403) { | 
 |  |  |                      uni.navigateBack({ | 
 |  |  |                          delta: 1 | 
 |  |  |                      }) | 
 |  |  |                   } else { | 
 |  |  |                      that.messageToggle('error') | 
 |  |  |                      that.messageText = res.data.msg | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          // 点击补充的弹窗 | 
 |  |  |          toggle(type) { | 
 |  |  |             this.type = type | 
 |  |  |             // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性 | 
 |  |  | 
 |  |  |          countDom(value) { | 
 |  |  |              | 
 |  |  |          }, | 
 |  |  |          // 根据产品ID查询产品详情 | 
 |  |  |          find(){ | 
 |  |  |             let that = this | 
 |  |  |             let thatId = that.matNo | 
 |  |  | 
 |  |  |                return; | 
 |  |  |             } | 
 |  |  |             uni.request({ | 
 |  |  |                url: that.baseUrl + "/matCode/auth", | 
 |  |  |                url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/matCode/auth", | 
 |  |  |                header: { | 
 |  |  |                   'content-type':'application/x-www-form-urlencoded', | 
 |  |  |                   'token':uni.getStorageSync('token') | 
 |  |  | 
 |  |  |                method: 'POST', | 
 |  |  |                success(res){ | 
 |  |  |                   let data = res.data.data | 
 |  |  | 							 | 
 |  |  |                   if(res.data.code === 200){ | 
 |  |  |                      if(data != null){ | 
 |  |  |                         that.matName = data.matName | 
 |  |  |                         that.specs = data.specs | 
 |  |  |                         that.size = data.size | 
 |  |  |                         that.unit = data.unit | 
 |  |  |                      } | 
 |  |  |                   } else if (res.data.code ===403 ){ | 
 |  |  |                      // 待定 | 
 |  |  |                      uni.navigateBack({ | 
 |  |  |                          delta: 1 | 
 |  |  |                      }) | 
 |  |  |                   } else { | 
 |  |  |                      // 待定 | 
 |  |  |                      this.messageToggle('error') | 
 |  |  |                      this.messageText = res.data.msg | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          // 弹窗 确认补充 | 
 |  |  |          confirm(){ | 
 |  |  |             let that = this | 
 |  |  |             let data = { | 
 |  |  | 
 |  |  |             that.addTableData(data) | 
 |  |  |              | 
 |  |  |          }, | 
 |  |  |          initTableData(data){ | 
 |  |  |             for(var i=0;i<data.length;i++){ | 
 |  |  |                var toPush =true | 
 |  |  |                for(var j = 0; j<this.locDetlDate.length;j++){ | 
 |  |  |                   if (data[i].matNo === this.locDetlData[j].matNo && data[i].locNo === this.locDetlData[j].locNo) { | 
 |  |  |                      toPush = false; | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |                if(toPush){ | 
 |  |  |                   this.locDetlDate.push(data[i]) | 
 |  |  |                } | 
 |  |  |          // 修改数量 | 
 |  |  |          conf(index,item){ | 
 |  |  |             this.$refs.inputDialog.open() | 
 |  |  |             this.rowNum = index | 
 |  |  |             if (item.count === undefined ) { | 
 |  |  |                this.value = 0 | 
 |  |  |             } | 
 |  |  |          }, | 
 |  |  |          // 修改数量弹窗 | 
 |  |  |          dialogInputConfirm(value) { | 
 |  |  |              this.locDetlData[this.rowNum].count = this.value | 
 |  |  |              this.messageToggle('success') | 
 |  |  |              this.messageText = '修改成功'     | 
 |  |  |          }, | 
 |  |  |          // 移除物料 | 
 |  |  |          remove(index,item){ | 
 |  |  |             this.locDetlData.splice(index,1) | 
 |  |  |             this.messageToggle('success') | 
 |  |  |             this.messageText = '删除成功' | 
 |  |  |          }, | 
 |  |  |          // 表格渲染 | 
 |  |  |          addTableData(data){ | 
 |  |  |             let that = this | 
 |  |  |             if(data.matNo.length === 0){ | 
 |  |  | 
 |  |  |                that.messageText = '提取失败' | 
 |  |  |                return | 
 |  |  |             } | 
 |  |  |             this.$refs.popup.close() | 
 |  |  |             var toPush = true | 
 |  |  |             for (var j = 0; j < this.locDetlData.length; j++) { | 
 |  |  |                if (data.matNo === this.locDetlData[j].matNo && data.locNo === this.locDetlData[j].locNo) { | 
 |  |  |             for (var j = 0; j < that.locDetlData.length; j++) { | 
 |  |  |                if (data.matNo === that.locDetlData[j].matNo && data.locNo === that.locDetlData[j].locNo) { | 
 |  |  |                   toPush = false; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if (toPush) { | 
 |  |  |                var pushData = { | 
 |  |  |                   locNo: this.locDetlData[0] ? this.locDetlData[0].locNo : null, | 
 |  |  |                   locNo: that.locDetlData[0] ? that.locDetlData[0].locNo : null, | 
 |  |  |                   matNo: data.matNo, | 
 |  |  |                   count: data.count, | 
 |  |  |                   matName: data.matName | 
 |  |  |                 } | 
 |  |  |                 locDetlData.push(pushData); | 
 |  |  |                 that.locDetlData.push(pushData); | 
 |  |  |             } | 
 |  |  | 				 | 
 |  |  |             that.$refs.popup.close() | 
 |  |  |          }, | 
 |  |  |          // 重置 | 
 |  |  |          reset(){ | 
 |  |  |             this.billNo = '' | 
 |  |  |             this.locDetlData = [] | 
 |  |  |          }, | 
 |  |  |          check(){ | 
 |  |  |             let that = this | 
 |  |  |             if(that.billNo.length === 0) { | 
 |  |  |                that.messageToggle('error') | 
 |  |  |                that.messageText = '请 扫码 / 输入 托盘码' | 
 |  |  |                return | 
 |  |  |             } | 
 |  |  |             if(that.billNo.length < 8) { | 
 |  |  |                that.messageToggle('error') | 
 |  |  |                that.messageText = '托盘码必须为8位' | 
 |  |  |                return | 
 |  |  |             } | 
 |  |  |             if(that.locDetlData.length > 0) { | 
 |  |  |                for(var i = 0; i < that.locDetlData.length; i++){ | 
 |  |  |                   if (that.locDetlData[i].count === null || that.locDetlData[i].count === 0 ||  | 
 |  |  |                   that.locDetlData[i].count === undefined) { | 
 |  |  |                      that.messageToggle('error') | 
 |  |  |                      that.messageText = that.locDetlData[i].matNo + '商品数量错误' | 
 |  |  |                      return | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             if (that.locDetlData.length > 0) { | 
 |  |  |                 that.locDetlData.map(function (item) { | 
 |  |  |                     that.checkList.push({ | 
 |  |  |                         locNo: item.locNo, | 
 |  |  |                         matNo: item.matNo, | 
 |  |  |                         checkQty: item.count, | 
 |  |  |                      itemBatch: item.itemBatch | 
 |  |  |                     }); | 
 |  |  |                 }); | 
 |  |  |             } | 
 |  |  |             if (that.souceData.length > 0) { | 
 |  |  |                 that.souceData.map(function (item) { | 
 |  |  |                     that.sourceList.push({ | 
 |  |  |                         locNo: item.locNo, | 
 |  |  |                         matNo: item.matNo, | 
 |  |  |                         count: item.count, | 
 |  |  |                      itemBatch: item.itemBatch | 
 |  |  |                     }); | 
 |  |  |                 }); | 
 |  |  |             } | 
 |  |  |             // this.noTitlemodalTap() | 
 |  |  |             uni.request({ | 
 |  |  |                url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/stock/check", | 
 |  |  |                header: { | 
 |  |  |                   'token':uni.getStorageSync('token') | 
 |  |  |                }, | 
 |  |  |                data: JSON.stringify({ | 
 |  |  |                   checkList: that.checkList | 
 |  |  |                }), | 
 |  |  |                method:'POST', | 
 |  |  |                async:false, | 
 |  |  |                success(res){ | 
 |  |  |                   if(res.data.code === 200){ | 
 |  |  |                      that.reset(); | 
 |  |  |                      that.messageToggle('success') | 
 |  |  |                      that.messageText = '盘点成功' | 
 |  |  |                   } else if (res.data.code === 403) { | 
 |  |  |                      uni.navigateBack({ | 
 |  |  |                          delta: 1 | 
 |  |  |                      }) | 
 |  |  |                   } else { | 
 |  |  |                      that.messageToggle('error') | 
 |  |  |                      that.messageText = res.data.msg | 
 |  |  |                   } | 
 |  |  |                }  | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          noTitlemodalTap: function (e) { | 
 |  |  |             uni.showModal({ | 
 |  |  |                content: "是否确认盘点", | 
 |  |  |                confirmText: "是", | 
 |  |  |                cancelText: "否" | 
 |  |  |             }) | 
 |  |  | 				 | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | </script> |