#
whycq
2022-03-04 3af3fe4338e97d52e7811bad2689c71c7a4acdc4
pages/basics/combPro.vue
@@ -10,36 +10,56 @@
            <input v-model="code" placeholder="扫码 / 输入" name="input">
         </view>
      </form>
      <view class="margin-top">
         <uni-table ref="table" border stripe emptyText="暂无更多数据" rowKey="">
         <view class="cu-bar search bg-white">
            <view class="search-form round">
               <text class="cuIcon-search"></text>
               <input :adjust-position="false" type="text" placeholder="产品代号" confirm-type="search" v-model="size" @input="searchSize()"></input>
            </view>
         </view>
         <uni-table ref="table" border stripe emptyText="暂无更多数据" type="selection" @selection-change="selectionChange">
            <uni-tr>
               <uni-th align="center" width="90">数量</uni-th>
               <uni-th align="center" width="90">组托数量</uni-th>
               <uni-th align="center" width="90">产品代号</uni-th>
               <uni-th align="center" width="90">产品编码</uni-th>
               <uni-th align="center" width="90">产品名称</uni-th>
               <uni-th align="center" width="90">序号</uni-th>
               <uni-th align="center" width="90">批号</uni-th>
               <uni-th align="center" width="200">组托数量</uni-th>
               
            </uni-tr>
            <uni-tr v-for="(item, index) in matData" :key="index">
               <uni-td align="center">{{item.count}}</uni-td>
               <uni-td align="center">{{item.qty}}</uni-td>
               <uni-td align="center">
                  <button class ="cu-btn bg-orange margin-xs" @click="confirm(index,item)">{{item.count}}</button>
                  <!-- <button class="uni-button" size="mini" type="warn" @click="remove(index,item)">删除</button> -->
               </uni-td>
               <uni-td align="center">{{item.size}}</uni-td>
               <uni-td align="center">{{item.matNo}}</uni-td>
               <uni-td align="center">{{item.matName}}</uni-td>
               <uni-td align="center">{{item.seqNo}}</uni-td>
               <uni-td align="center">{{item.itemBatch}}</uni-td>
               <uni-td align="center">
                  <button class="uni-button" size="mini" type="primary" @click="confirm(index,item)">修改</button>
                  <button class="uni-button" size="mini" type="warn" @click="remove(index,item)">删除</button>
               </uni-td>
            </uni-tr>
         </uni-table>
      </view>
      <view>
         <button class="cu-btn bg-yellow pda-btn" @click="comb()">组 托</button>
         <button class="cu-btn bg-grey pda-btn" @click="reset">重 置</button>
      <view class="flex solid-bottom  padding justify-start">
         <button class ="cu-btn bg-red margin-xs" @click="delTable">批量删除</button>
         <button class ="cu-btn bg-cyan margin-xs" @click="clearSel">清空选择</button>
         <button class ="cu-btn bg-olive margin-xs" @click="reSelection">反选</button>
      </view>
      <view style="height: 200rpx;">
          <!-- 空白层 -->
      </view>
      <view class="cu-bar foot input">
         <view class="flex solid-bottom padding justify-start">
            <button class="cu-btn bg-yellow  lg margin-xs" style="width: 250rpx;" @click="comb()">组 托</button>
            <button class="cu-btn bg-grey lg margin-xs" @click="reset">重 置</button>
         </view>
      </view>
      <view>
         <!-- 提示信息弹窗 -->
         <uni-popup ref="message" type="message">
@@ -49,11 +69,16 @@
      <view>
         <!-- 输入框示例 -->
         <uni-popup ref="inputDialog" type="dialog">
            <uni-popup-dialog ref="inputClose" mode="input" title="组托数量"
               placeholder="请输入组托数量" @confirm="dialogInputConfirm">
            <uni-popup-dialog ref="inputClose" mode="input" title="组托数量" @confirm="dialogInputConfirm">
                  <uni-number-box :min="minCount" :max="maxCount" v-model="value" />
            </uni-popup-dialog>
         </uni-popup>
      </view>
      <view>
         <!-- 提示窗示例 -->
         <uni-popup ref="alertDialog" type="dialog">
            <uni-popup-dialog :type="msgType" title="警告" :content="message" @confirm="dialogConfirm"
               @close="dialogClose"></uni-popup-dialog>
         </uni-popup>
      </view>
   </view>
@@ -65,154 +90,319 @@
         return {
            billNo:'',
            code:'',
            matData:[],
            matData:[], // 主要数据表
            type: '',
            msgType: '',
            messageText: '',
            minCount:1,
            minCount:0,
            maxCount:1,
            rowNum:'',
            value:'',
            couChange:true,
            baseIP:'',
            basePORT:'',
            selectArr : [],
            selectedIndexs:[],
            size:'',
            message:'123'
            
         }
      },
      mounted(){
         const UIP = uni.getStorageSync('UIP');
         this.baseIP = UIP
         this.baseIP = UIP;
         const UPORT = uni.getStorageSync('UPORT');
         this.basePORT = UPORT
      },
      methods: {
            reset:function() {
               this.billNo = '';
               this.code = '';
               this.matData = []
            },
            messageToggle(type) {
               this.msgType = type
               this.messageText = '提取失败'
               this.$refs.message.open()
            },
         // 多选
         selectionChange(e) {
            // 获取选中状态
            this.selectedIndexs = e.detail.index
            this.selectedIndexs.sort(function(a,b){
               return a-b
            });// 重新排序(升序)
         },
         // 全选
         // 批量删除的方法
         toggleSelection(rows) {
            if (rows) {
            this.$refs["table"].toggleAllSelection(rows);
            } else {
               this.$refs["table"].clearSelection();
            }
         },
         //批量删除
         delTable() {
            // 实现全选删除和多选删除
            let len = this.selectedIndexs.length
            for (let i = len-1; i >= 0; i--) {
               this.matData.splice(this.selectedIndexs[i],1)   // splice删除数组会改变原数组,所以需要逆向删除
            }
            this.$refs["table"].clearSelection(); // 清空选择
            
            // 根据通知单号查询物料详情
            find(){
               let billNo = this.billNo
               let that = this
               if(this.billNo.length === 0){
         },
         // 反选
         reSelection(){
            this.toggleSelection(this.selectedIndexs)
         },
         // 清空
         clearSel() {
            this.toggleSelection()
         },
         // 搜索产品代号
         searchSize() {
            let billNo = this.billNo
            let size = this.size;
            let that = this
            uni.request({
               url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/bill/query1/auth",
               header: {
                  'content-type':'application/x-www-form-urlencoded',
                  'token':uni.getStorageSync('token')},
               data: {
                   billNo: billNo,
                  size:size
               },
               method: 'POST',
               success(res){
                  if(res.data.code === 200){
                     if(res.data.data != null){
                        that.addTableData(res.data.data)
                     }else if(res.data.code === 403){
                        uni.navigateBack({
                            delta: 1
                        })
                     }else {
                        that.messageToggle('error')
                        that.messageText = res.data.msg
                     }
                  }
               }
            })
         },
         // 重置
         reset:function() {
            this.billNo = '';
            this.code = '';
            this.matData = [];
            this.size = '';
            this.toggleSelection()
         },
         messageToggle(type) {
            this.msgType = type
            this.messageText = '提取失败'
            this.$refs.message.open()
         },
         // 根据通知单号查询物料详情
         find(){
            let billNo = this.billNo
            let size = this.size
            let that = this
            if(this.billNo.length === 0){
               return
            }
            if(billNo.indexOf('=')>-1){
               billNo = billNo.split(",")[0].split("=")[1];
            }
            if(billNo.length===0){
               return
            }
            this.matData = []
            uni.request({
               url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/bill/query1/auth",
               header: {
                  'content-type':'application/x-www-form-urlencoded',
                  'token':uni.getStorageSync('token')},
               data: {
                   billNo: billNo,
                  size:size
               },
               method: 'POST',
               success(res){
                  if(res.data.code === 200){
                     if(res.data.data != null){
                        that.addTableData(res.data.data)
                     }else if(res.data.code === 403){
                        uni.navigateBack({
                            delta: 1
                        })
                     }else {
                        that.messageToggle('error')
                        that.messageText = res.data.msg
                     }
                  }
               }
            })
         },
         addTableData(data){
            this.matData=[];
            for(var i=0;i<data.length;i++){
               var toPush = true;
               for(var j=0;j<this.matData.length;j++){
                  if(data[i].matNo ===this.matData[j].matNo && data[i].itemBatch === this.matData[j].itemBatch && data[i].specs === this.matData[j].specs){
                     this.matData[j].count = Number(this.matData[j].count) + Number(data[i].count);
                     toPush = false;
                  }
               }
               if(toPush) {
                  this.matData.push(data[i]);
               }
            }
         },
         // 修改数量
         confirm(index,item){
            this.couChange=false
            this.$refs.inputDialog.open()
            this.maxCount = item.qty
            this.rowNum = index
            this.value = this.minCount
         },
         // 修改数量弹窗
         dialogInputConfirm() {
            this.matData[this.rowNum].count = this.value
            this.messageToggle('success')
            this.messageText = '修改成功'
         },
         // 删除
         remove(index,item){
            this.matData.splice(index,1)
            this.messageToggle('success')
            this.messageText = '删除成功'
         },
         // 组托
         comb(){
            let that = this
            let barcode = that.code
            let billNo = this.billNo
            if(billNo.length === 0){
               that.messageToggle('error')
               that.messageText = '入库单号为空'
               return;
            }
            if(barcode.length === 0){
               that.messageToggle('error')
               that.messageText = '请输入托盘码'
               return;
            }
            if (barcode.length !== 8) {
                that.messageToggle('error')
                that.messageText = '托盘码必须为8位'
                return;
            }
            if(that.couChange){
               that.messageToggle('error')
               that.messageText = '请先确认入库数量'
               return;
            }
            for (var i = 0; i < that.matData.length; i++) {
               var sad = that.matData[i].qty - that.value
               if (sad <= 5 && sad > 0) {
                  this.$refs.alertDialog.open()
                  that.message = '产品代号' + that.matData[i].size + '剩余待组托数量少于5,是否继续组托'
                  return
               }
               if(billNo.indexOf('=')>-1){
                  billNo = billNo.split(",")[0].split("=")[1];
               }
               if(billNo.length===0){
                  return
               }
               this.matData = []
               uni.request({
                  url: that.baseHttp + that.baseIP + that.baseUrl + "/mobile/bill/query/auth",
                  header: {
                     'content-type':'application/x-www-form-urlencoded',
                     'token':uni.getStorageSync('token')},
                  data: {
                      billNo: billNo
                  },
                  method: 'POST',
                  success(res){
                     console.log(res)
                     if(res.data.code === 200){
                        if(res.data.data != null){
                           that.addTableData(res.data.data)
                        }else if(res.data.code === 403){
                        }else {
               } else {
                  uni.request({
                     url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/comb/auth",
                     header: {'token':uni.getStorageSync('token')},
                     data:{
                        barcode:barcode,
                        combMats:that.matData,
                        billNo: billNo,
                     },
                     method:'POST',
                     success(res) {
                        if(res.data.code === 200){
                           that.reset()
                           that.matData = []
                           that.messageToggle('success')
                           that.messageText = '组托成功'
                        } else if(res.data.code === 403){
                           uni.navigateBack({
                              delta: 1
                           })
                        } else {
                           that.messageToggle('error')
                           that.messageText = res.data.msg
                        }
                     }
                  }
               })
            },
            addTableData(data){
               for(var i=0;i<data.length;i++){
                  var toPush = true;
                  for(var j=0;j<this.matData.length;j++){
                     if(data[i].matNo ===this.matData[j].matNo ){
                        this.matData[j].count = Number(this.matData[j].count) + Number(data[i].count);
                        toPush = false;
                     }
                  }
                  if(toPush) {
                     this.matData.push(data[i]);
                  }
                  })
               }
            },
            }
            
            // 修改数量
            confirm(index,item){
               this.couChange=false
               this.$refs.inputDialog.open()
               this.maxCount = item.count
               this.rowNum = index
               this.value = this.maxCount
            },
            // 修改数量弹窗
            dialogInputConfirm() {
               this.matData[this.rowNum].count = this.value
               this.messageToggle('success')
               this.messageText = '修改成功'
            },
            // 删除
            remove(index,item){
               this.matData.splice(index,1)
               this.messageToggle('success')
               this.messageText = '删除成功'
            },
            comb(){
               let that = this
               let barcode = that.code
               let billNo = this.billNo
               if(billNo.length === 0){
                  that.messageToggle('error')
                  that.messageText = '入库单号为空'
                  return;
               }
               if(barcode.length === 0){
                  that.messageToggle('error')
                  that.messageText = '请输入托盘码'
                  return;
               }
               if (barcode.length !== 8) {
                   that.messageToggle('error')
                   that.messageText = '托盘码必须为8位'
                   return;
               }
               if(that.couChange){
                  that.messageToggle('error')
                  that.messageText = '请先确认入库数量'
                  return;
               }
               uni.request({
                  url: that.baseHttp + that.baseIP + that.baseUrl + "/mobile/comb/auth",
                  header: {'token':uni.getStorageSync('token')},
                  data:{
                     barcode:barcode,
                     combMats:that.matData,
                     billNo: billNo,
                  },
                  method:'POST',
                  success(res) {
                     if(res.data.code === 200){
                        that.reset()
                        that.matData = []
                        that.messageToggle('success')
                        that.messageText = '组托成功'
                     }
         },
         // 确定组托
         dialogConfirm() {
            let that = this
            let barcode = that.code
            let billNo = this.billNo
            for (var i = 0; i < that.matData.length; i++) {
               that.matData[i].oveFlag = 1
            }
            uni.request({
               url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/comb/auth",
               header: {'token':uni.getStorageSync('token')},
               data:{
                  barcode:barcode,
                  combMats:that.matData,
                  billNo: billNo,
               },
               method:'POST',
               success(res) {
                  if(res.data.code === 200){
                     that.reset()
                     that.matData = []
                     that.messageToggle('success')
                     that.messageText = '组托成功'
                  } else if(res.data.code === 403){
                        uni.navigateBack({
                            delta: 1
                        })
                  } else {
                     that.messageToggle('error')
                     that.messageText = res.data.msg
                  }
               })
            },
               }
            })
         },
         // 取消组托
         dialogClose() {
            let that = this
            let barcode = that.code
            let billNo = this.billNo
            for (var i = 0; i < that.matData.length; i++) {
               that.matData[i].oveFlag = 0
            }
            uni.request({
               url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/comb/auth",
               header: {'token':uni.getStorageSync('token')},
               data:{
                  barcode:barcode,
                  combMats:that.matData,
                  billNo: billNo,
               },
               method:'POST',
               success(res) {
                  if(res.data.code === 200){
                     that.reset()
                     that.matData = []
                     that.messageToggle('success')
                     that.messageText = '组托成功'
                  } else if(res.data.code === 403){
                        uni.navigateBack({
                            delta: 1
                        })
                  } else {
                     that.messageToggle('error')
                     that.messageText = res.data.msg
                  }
               }
            })
         }
      },
      onShow() {
      }
@@ -220,5 +410,12 @@
</script>
<style>
   .delTable {
      margin-left:0;
      margin-right: auto;
      width: 200rpx;
      height: 80rpx;
      font-size: 30upx;
      font-weight: bold;
   }
</style>