whycq
2022-03-04 009851b4daec9895cfe6bcb895dce5fed2cf59b0
pages/basics/combPro.vue
@@ -3,33 +3,83 @@
      <form>
         <view class="cu-form-group margin-top">
            <view class="title">单号</view>
            <input v-model="billNo" placeholder="扫码 / 输入" name="input" autocomplete="off">
            <input v-model="billNo" placeholder="扫码 / 输入" name="input" autocomplete="off" focus @input="find()">
         </view>
         <view class="cu-form-group margin-top">
            <view class="title">托盘码</view>
            <input v-model="code" placeholder="扫码 / 输入" name="input">
         </view>
      </form>
      <view class="margin-top">
         <uni-table border stripe emptyText="暂无更多数据">
         <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>物料编码</uni-th>
               <uni-th>生产单号</uni-th>
               <uni-th>数量</uni-th>
               <uni-th>物料名称</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="90">批号</uni-th>
            </uni-tr>
            <uni-tr>
               <uni-td>1121</uni-td>
               <uni-td>1121</uni-td>
               <uni-td>1121</uni-td>
               <uni-td>1121</uni-td>
            <uni-tr v-for="(item, index) in matData" :key="index">
               <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-tr>
         </uni-table>
      </view>
      <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">
            <uni-popup-message :type="msgType" :message="messageText" :duration="2000"></uni-popup-message>
         </uni-popup>
      </view>
      <view>
         <button class="cu-btn bg-yellow pda-btn">组托</button>
         <button class="cu-btn bg-grey pda-btn" @click="reset">重置</button>
         <!-- 输入框示例 -->
         <uni-popup ref="inputDialog" type="dialog">
            <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>
</template>
@@ -40,23 +90,311 @@
         return {
            billNo:'',
            code:'',
            matData:[], // 主要数据表
            type: '',
            msgType: '',
            messageText: '',
            minCount:0,
            maxCount:1,
            rowNum:'',
            value:'',
            couChange:true,
            baseIP:'',
            basePORT:'',
            selectArr : [],
            selectedIndexs:[],
            size:'',
            message:'123'
         }
      },
      mounted(){
         const UIP = uni.getStorageSync('UIP');
         this.baseIP = UIP;
         const UPORT = uni.getStorageSync('UPORT');
         this.basePORT = UPORT
      },
      methods: {
            reset:function() {
               let that =this;
               that.billNo = '';
               that.code = '';
            },
         // 多选
         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(); // 清空选择
            
         },
         // 反选
         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/query/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){
                     }else {
                     }
                  }
               }
            })
            // var str = ''
            // var tempData = []
            // str = val.detail.value;
            // tempData = this.tableData
            // for (var i = 0; i < tempData.length; i++) {
            //    var size = tempData[i].size
            //    if (str != '') {
            //       if (str === size) {
            //          tempData =[]
            //          tempData.push(this.matData[i])
            //          break
            //       }
            //    }
            // }
            // this.tableData = tempData
            // this.matData = tempData
         }, //SA290475 SH3102081
         // 重置
         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/query/auth",
               header: {
                  'content-type':'application/x-www-form-urlencoded',
                  'token':uni.getStorageSync('token')},
               data: {
                   billNo: billNo,
                  size:size
               },
               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 {
                     }
                  }
               }
            })
         },
         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 ){
                     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++) {
               console.log(that.value)
               console.log(that.matData[i].qty)
               var sad = that.matData[i].qty - that.value
               console.log(sad)
               if (sad <= 5 && sad > 0) {
                  this.$refs.alertDialog.open()
                  that.message = '产品代号' + that.matData[i].size + '剩余待组托数量少于5,是否继续组托'
                  return
               } 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 = '组托成功'
                        }
                     }
                  })
               }
            }
         },
         // 确定组托
         dialogConfirm() {
            console.log(1)
            let that = this
            let barcode = that.code
            let billNo = this.billNo
            console.log(that.matData)
            for (var i = 0; i < that.matData.length; i++) {
               that.matData[i].oveFlag = 1
            }
            console.log(that.matData)
            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 = '组托成功'
                  }
               }
            })
         },
         // 取消组托
         dialogClose() {
            console.log('取消组托了')
         }
      },
      onShow() {
         // const query = uni.createSelectorQuery()
         // console.log(prototype.placeholder)
      }
   }
</script>
<style>
   .delTable {
      margin-left:0;
      margin-right: auto;
      width: 200rpx;
      height: 80rpx;
      font-size: 30upx;
      font-weight: bold;
   }
</style>