whycq
2024-10-18 2b5bf2b63f6b8718a396f16f02c682f635744425
pages/phyz/bcp/bcpDbList.vue
@@ -1,48 +1,75 @@
<template>
   <view>
      <view class="station" :class="station.style" v-if="station">
   <view style="font-size: 13px;">
      <view class="station station-wrk" v-if="station">
         <view class="mt-flex">
            <view class="station-title" style="flex: 1;">{{station.devNo}}</view>
            <view class="station-title" style="flex: 4;">{{station.threeCode}}</view>
            <view class="station-title" style="flex: 1;">
               <button size="mini" @click="allChecked()">{{allCheckBtnTitle}}</button>
            </view>
         </view>
         <view>站点类型:{{station.locType1$}}区</view>
         <view>货架前两位:{{station.locType2$}}</view>
         <view>站点状态:{{station.locSts$}}</view>
         <view class="mt-flex">
            <view class="station-barcode" style="flex: 1">货架码:<text>{{station.barcode ? station.barcode : '--'}}</text></view>
            <view v-if="station.barcode && station.locSts == 'F'"><button size="mini" type="warn" @click="unbind()">解除绑定</button></view>
         <view>调拨单号:{{station.orderNo}}</view>
         <view>物料编号:{{station.matnr}}</view>
         <view style="width: 100%;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;">物料名称:{{station.maktx}}</view>
         <view style="display: flex;">
            <view style="flex: 2;">调拨数量:{{station.anfme}}</view>
            <view style="flex: 3;">库存数量:{{station.stock}}</view>
         </view>
         <view style="display: flex;">
            <view style="flex: 2;">已调拨数量:{{station.qty}}</view>
            <view style="flex: 3;">当前选择调拨数量:{{station.count ? station.count : 0}}</view>
         </view>
      </view>
      <!-- 垫高 -->
      <!-- <view style="height: 330rpx;text-align: center;color: #b9b9b9;">
      </view> -->
      <view class="list list-font-color" :class="orderDetl.color" v-for="(orderDetl,index) in dataList" :key="index">
         <view class="list-left" style="display: flex;flex-direction: column;">
            <!-- 上 -->
            <view>
               <view class="detl-threeCode">{{orderDetl.threeCode}}</view>
               <view class="detl-locNo">{{orderDetl.locNo}}</view>
               <view class="detl-locNo">货架码:{{orderDetl.suppCode}}</view>
            </view>
            <!-- 中 -->
            <view style="display: flex;">
               <view style="flex: 1;">
                  <view>主单号:{{orderDetl.orderNo}}</view>
                  <view>编号:{{orderDetl.matnr}}</view>
                  <view>名称:{{orderDetl.maktx}}</view>
                  <view>库位状态:{{orderDetl.locSts$}}</view>
                  <view>库存数量:{{orderDetl.anfme}}</view>
               </view>
               <view class="out-btn" @click="pakoutPrive(orderDetl)">
                  <view>出库</view>
               </view>
            </view>
            <!-- 下 -->
         </view>
         <!-- <view class="list-right" @click="goToLocDetl(orderDetl)">
            <uni-icons type="right" size="25"  color="#fff"></uni-icons>
         </view> -->
         <view class="list-right" @click="checkboxChange(orderDetl)">
            <label >
               <checkbox :value="orderDetl.orderNo" :checked="orderDetl.checked" v-show="orderDetl.locSts == 'F'" style="transform:scale(0.7)" /><text></text>
            </label>
         </view>
      </view>
      
      <!-- 垫高 -->
      <view style="height: 340rpx;text-align: center;color: #b9b9b9;">
      <view style="height: 160rpx;text-align: center;color: #b9b9b9;">
         - 已经到底了 -
      </view>
      <!-- 选择楼层弹窗 -->
      <view>
         <uni-popup ref="filter" type="dialog">
            <view class="filter-popup">
               <!-- 标题 -->
               <view class="title">调拨楼层</view>
               <view class="popup-item" style="width: 100%;display: flex;justify-content: center;">
                  <view style="margin-top: 50rpx;width: 60%;">
                     <uni-combox :candidates="floorList" placeholder="请选择目标楼层" v-model="floor"></uni-combox>
                  </view>
               </view>
               <view class="btn filter-btn">
                  <button class="btn-right" @click="filterConfirm()" :disabled="isAutoDis">开始调拨</button>
               </view>
            </view>
         </uni-popup>
      </view>
      <!-- 底部操作按钮 -->
      <view class="buttom">
         <button size="mini" @click="isAuto('unAuto')">手动</button>
         <button size="mini" type="primary" @click="isAuto('auto')" >自动</button>
      </view>
   </view>
</template>
@@ -54,12 +81,20 @@
            baseUrl: '',
            token: '',
            dataList: [],
            dbList: [],
            count: 0,
            containerType: '',
            isOpen: true,
            option: '',
            selects: [],
            orderId: ''
            orderId: '',
            station: '',
            allCheck: false,
            allCheckBtnTitle: '全选',
            floorList: ['2楼','3楼'],
            floor: '',
            moveType: '',
            isAutoDis: false
         }
      },
      onShow() {
@@ -71,6 +106,8 @@
         // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
         eventChannel.on('item', function(data) {
            console.log(data.item);
            data.item['count'] = 0
            _this.station = data.item
            _this.orderId = data.item.id
            _this.getLocDetl(data.item.orderNo,data.item.threeCode,data.item.matnr,data.item.id)
         })
@@ -84,7 +121,8 @@
               data: {
                  orderNo: orderNo,
                  threeCode: threeCode ,
                  matnr: matnr
                  matnr: matnr,
                  floor: "F1"
               },
               method: 'POST',
               success(res) {
@@ -164,12 +202,147 @@
         selected(option) {
            this.containerType = option
         },
         checkboxChange(e) {
            console.log(e);
            let items = this.dataList,
            values = e.orderNo;
            if (e.checked) {
               this.$set(e,'checked',false)
            } else {
               if (e.locSts != "F") {
                  this.$set(e,'checked',false)
               } else {
                  this.$set(e,'checked',true)
               }
            }
            let num = 0
            for (let k of items) {
               if (k.checked) {
                  num++
               }
               if (num == items.length) {
                  this.allCheck = true
                  this.allCheckBtnTitle = '取消'
               } else {
                  this.allCheck = false
                  this.allCheckBtnTitle = '全选'
               }
            }
            this.upDateCount()
         },
         upDateCount() {
            let num = 0
            for (let k of this.dataList) {
               if (k.checked) {
                  num = num + k.anfme
               }
            }
            this.station.count = num
         },
         allChecked() {
            if (this.allCheck) {
               this.allCheck = false
               this.allCheckBtnTitle = '全选'
            } else {
               this.allCheck = true
               this.allCheckBtnTitle = '取消'
            }
            for (let item of this.dataList) {
               if (this.allCheck) {
                  // if (item.locSts == "F")
                  if (item.locSts != "F") {
                     this.$set(item,'checked',false)
                  } else {
                     this.$set(item,'checked',true)
                  }
               } else {
                  this.$set(item,'checked',false)
               }
            }
            this.upDateCount()
         },
         isAuto(type) {
            this.dbList = []
            for (let k of this.dataList) {
               if (k.checked) {
                  this.dbList.push(k)
               }
            }
            if (this.dbList.length == 0) {
               uni.showToast({ title: '请选择调拨库位', icon: "error", position: 'top' })
               return
            }
            this.moveType = type
            this.$refs.filter.open('bottom')
         },
         filterConfirm() {
            console.log(this.dbList);
            this.isAutoDis = true
            if (this.floor == '') {
               uni.showToast({ title: '请选择调拨楼层', icon: "error", position: 'top' })
               return
            }
            let _this = this
            let param = {floor: this.floor,dbList: this.dbList,moveType: this.moveType}
            uni.request({
               url: `${_this.baseUrl}/agvMobile/agv/v2/locMove`,
               header: {'token': uni.getStorageSync('token'),},
               data: param,
               method: 'POST',
               success(res) {
                  _this.isAutoDis = false
                  console.log(res);
                  res = res.data
                  if (res.code === 200) {
                     uni.navigateBack({
                        delta: 1
                     });
                  } else if (res.code == 403) {
                     uni.showToast({ title: res.msg, icon: "error", position: 'top' })
                     setTimeout(() => { uni.reLaunch({ url: '../../login/login' }); }, 1000);
                  } else {
                     uni.showToast({ title: res.msg, icon: "error", position: 'top' })
                  }
               },
               fail(res) {
                  _this.isAutoDis = false
               }
            })
            this.$refs.filter.close('bottom')
         }
      }
   }
</script>
<style>
   @import url('../../../static/css/common/order.css');
   .station {
      /* position: fixed; */
      font-size: 18px;
      width: 96%;
      padding: 24rpx;
      z-index: 999;
      font-size: 14px;
   }
   .station-title {
      font-size: 32px;
      font-weight: bold;
      /* padding: 2rpx 0; */
   }
   .station-barcode {
      font-size: 24px;
      font-weight: bold;
      padding: 24rpx 0;
   }
   .station-wrk {
      background-color: #ff7356;
      color: #fff;
   }
   .station-nowrk {
      background-color: #3eb689;
      color: #fff;
   }
   .list-font-color {
      color: #fff;
      /* background-color: #33bb44; */
@@ -218,8 +391,6 @@
   }
   .popup-item {
      position: relative;
      height: 80rpx;
      line-height: 80rpx;
      display: flex;
      align-items: center;
      font-size: 14px;
@@ -291,4 +462,31 @@
      font-size: 22px;
      color: #3a3a3a;
   }
   .filter-popup {
      width: 100%;
      height: 40vh;
      background-color: #FFF;
      position: relative;
      border-radius: 30rpx 30rpx 0rpx 0rpx;
   }
   .filter-popup-item {
      height: 100%;
      width: 100%;
      background-color: #c9cdd5;
   }
   .filter-popup-item-left {
      width: 30%;
      height: 100%;
      background-color: #DCDFE6;
   }
   .filter-btn {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      background-color: #FFF;
   }
</style>