#
whycq
2024-05-30 0e78823dd6ee8de811246e687298b17b28cd80c7
pages/phyz/stationManage/pickAgain.vue
@@ -1,7 +1,42 @@
<template>
   <view>
      <view class="list list-font-color" :class="orderDetl.color" v-for="(orderDetl,index) in dataList" :key="index">
         <view class="list-left">
            <view class="detl-threeCode">{{orderDetl.threeCode}}</view>
            <view>主单号:{{orderDetl.orderNo}}</view>
            <view>编号:{{orderDetl.matnr}}</view>
            <view>名称:{{orderDetl.maktx}}</view>
            <view>库存数量:{{orderDetl.anfme}}</view>
            <view>订单可出数量:{{orderDetl.stock}}</view>
            <view>已拣数量:{{orderDetl.pickedAnfme}}</view>
            <view>拣料数量:{{orderDetl.count}}</view>
         </view>
         <view class="list-right" @click="addItem(index)">
            <uni-icons type="folder-add" size="25"  color="#fff"></uni-icons>
         </view>
      </view>
      <!-- 垫高 -->
      <view style="height: 100rpx;text-align: center;color: #b9b9b9;"></view>
      <!-- 弹窗 -->
      <view>
         <uni-popup ref="addItem" type="dialog">
            <view class="popup">
               <!-- 标题 -->
               <view class="title">拣料数量</view>
               <view class="popup-item">
                  <uni-number-box :value="count" :step='1' :max="maxCount" color="#747474" @change="changeValue" />
               </view>
               <view class="btn">
                  <view class="btn-left" @click="addClose">取消</view>
                  <view class="btn-right" @click="addConfirm()">添加</view>
               </view>
            </view>
         </uni-popup>
      </view>
      <!-- 底部操作按钮 -->
      <view class="buttom">
         <button size="mini" type="primary" @click="confirmPick('warn')">确认拣料</button>
      </view>
   </view>
</template>
@@ -10,7 +45,15 @@
   export default {
      data() {
         return {
            dataList: [],
            orderCarList: [],
            pickList: [],
            index: 0,
            count: 0,
            maxCount: 0,
            wrkNo: '',
            locNo: '',
            pickedAnfme: 0
         }
      },
      onShow() {
@@ -22,22 +65,146 @@
         // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
         eventChannel.on('item', function(data) {
            console.log(data);
            _this.pickList = data.wrkDetls
            _this.wrkNo = data.wrkDetls[0].wrkNo
            _this.locNo = data.item.sourceLocNo
            _this.getLocDetl(data.item.sourceLocNo)
         })
      },
      methods: {
         getLocDetl() {
         getLocDetl(locNo) {
            let _this = this
            uni.request({
               url: `${_this.baseUrl}/agvMobile/query/locDetl/v1`,
               url: `${_this.baseUrl}/agv/locDetl/list/auth/v2`,
               header: { 'token': uni.getStorageSync('token') },
               data: {
                  curr: 1,
                  limit: 999,
                  loc_no: locNo
               },
               method: 'POST',
               method: 'GET',
               success(res) {
                  res = res.data
                  console.log(res);
                  if (res.code === 200) {
                     _this.chosed(_this.pickList,res.data.records)
                     return
                     let enbleList = [], isfl;
                     for (let k of res.data.records) {
                        isfl = false;
                        for (let j of _this.pickList) {
                           if (j.matnr == k.matnr && j.threeCode == k.threeCode) {
                              isfl = true;
                              break
                           } else {
                              if (k.stock == -1) {
                                 k['color'] = 'order-sts-end'
                              } else {
                                 k.stock = k.stock >= k.anfme ? k.anfme : k.stock
                                 k['color'] = 'order-sts-start'
                              }
                              k['count'] = 0
                           }
                        }
                        if (!isfl) {
                           enbleList.push(k)
                        }
                     }
                     _this.dataList = enbleList
                     
                  } 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' })
                  }
               }
            })
         },
         // 已选拣料列表
         chosed(wrkDetls,locDetls) {
            let isfl = false, enbleList = []
            for (let locDetl of locDetls) {
               locDetl['color'] = 'order-sts-start'
               locDetl['pickedAnfme'] = 0
               locDetl['count'] = 0
               for (let wrkDetl of wrkDetls) {
                  if (wrkDetl.threeCode == locDetl.threeCode && wrkDetl.matnr == locDetl.matnr) {
                     locDetl['pickedAnfme'] = wrkDetl.anfme
                     if (locDetl.stock == -1) {
                        locDetl.stock = 0
                     }
                     if (wrkDetl.anfme < locDetl.anfme) {
                        locDetl['color'] = 'order-sts-working'
                        locDetl['pickedAnfme'] = wrkDetl.anfme
                        locDetl['count'] = 0
                     } else {
                        locDetl['color'] = 'order-sts-end'
                     }
                     break
                  }
               }
            }
            this.dataList = locDetls
         },
         // 添加入库商品至 待组托列表
         addItem(index) {
            // 判断添加的商品是否和已经添加的重复
            let dataList = this.dataList
            this.index = index
            let orderCount = this.dataList[index].stock
            let locCount = this.dataList[index].anfme
            let pickedAnfme = this.dataList[index].pickedAnfme
            // 预计最大要出库
            let ftCount = pickedAnfme + orderCount
            if (orderCount > locCount) {
               this.maxCount = locCount - pickedAnfme
            } else {
               if (ftCount > locCount) {
                  this.maxCount = locCount -pickedAnfme
               } else {
                  this.maxCount = orderCount
               }
            }
            this.$refs.addItem.open()
         },
         addClose() {
            this.$refs.addItem.close()
         },
         addConfirm() {
            this.dataList[this.index].count = this.count
            this.count = 0
            this.$refs.addItem.close()
         },
         changeValue(value) {
            this.count = value
         },
         // 确认再次拣料
         confirmPick() {
            let _this = this
            uni.request({
               url: `${_this.baseUrl}/agvMobile/pick/again/auth`,
               header: { 'token': uni.getStorageSync('token') },
               data: JSON.stringify({
                  wrkNo: _this.wrkNo,
                  locNo: _this.locNo,
                  picks: _this.dataList
               }),
               method: 'POST',
               success(res) {
                  res = res.data
                  console.log(res);
                  if  (res.code === 200) {
                     _this.getOpenerEventChannel().emit('acceptDataFromOpenedPage', {data: 1});
                     setTimeout(()=>{
                        uni.navigateBack()
                     },700)
                  } else if (res.code == 403) {
                     uni.showToast({ title: res.msg, icon: "error", position: 'top' })
                     setTimeout(() => { uni.reLaunch({ url: '../../login/login' }); }, 1000);
@@ -52,5 +219,109 @@
</script>
<style>
   @import url('../../../static/css/common/order.css');
   .list-font-color {
      color: #fff;
      /* background-color: #33bb44; */
   }
   .order-sts-start {
      background-color: #3eb689;
   }
   .order-sts-working {
      background-color: #ff9d46;
   }
   .order-sts-end {
      background-color: #ff7356;
   }
   .detl-threeCode {
      font-size: 28px;
      font-weight: bold;
   }
   .shop-car {
      position: fixed;
      left: 22rpx;
      bottom: 150rpx;
      background-color: #2299ff;
      width: 260rpx;
      height: 90rpx;
      display: flex;
      align-items: center;
      box-shadow: 0 0 10px 5px rgba(0, 0, 0, .6);
      border-radius: 10rpx;
      color: #fff;
      font-size: 28px;
      font-weight: bold;
   }
   .car-left {
      padding: 16rpx;
      flex: 5;
   }
   .car-right {
      flex: 4;
   }
   .popup {
      width: 80vw;
      min-height: 100rpx;
      background-color: #FFF;
      border-radius: 25rpx;
      position: relative;
   }
   .title {
      height: 100rpx;
      line-height: 100rpx;
      width: 100%;
      color: #606266;
      text-align: center;
      font-size: 16px;
   }
   .popup-item {
      height: 80rpx;
      line-height: 80rpx;
      display: flex;
      align-items: center;
      justify-content: center;
   }
   .popup-item-left {
      width: 16vw;
      padding-right: 20rpx;
      text-align: right;
      color: #606266;
   }
   .popup-item-right {
      display: flex;
      align-items: center;
      width: 50vw;
      height: 50rpx;
      padding: 2px 5px;
      border: 1px solid #E4E7ED;
      border-radius: 5rpx;
   }
   .popup-item-right input{
      color: #606266;
   }
   .btn {
      display: flex;
      height: 90rpx;
      margin-top: 20rpx;
      border-top: 1px solid #DCDFE6;
      justify-content: center;
      align-items: center;
   }
   .btn-left {
      display: flex;
      flex: 1;
      height: 100%;
      justify-content: center;
      align-items: center;
      color: #606266;
      border-right: 1px solid #DCDFE6;
   }
   .btn-right {
      display: flex;
      flex: 1;
      justify-content: center;
      align-items: center;
      color: #409EFF;
   }
</style>