#
whycq
2024-09-03 f58e0464b4ec59d78babbb5760dac9f718df3a5b
pages/phyz/checkLocDetl/locDetlList.vue
@@ -1,24 +1,58 @@
<template>
   <view>
      <view style="padding: 16rpx 32rpx;font-size: 20px;font-weight: bold;">
         <view>当前库位号:{{locNo}}</view>
         <view>当前货架码:{{barcode}}</view>
      </view>
      <view class="list list-font-color" :class="locDetl.color" v-for="(locDetl,index) in dataList" :key="index">
         <view class="list-left">
            <view>销售订单号:{{locDetl.threeCode}}</view>
            <view>主订单号:{{locDetl.orderNo}}</view>
            <view>商品编码:{{locDetl.matnr}}</view>
            <view>商品名称:{{locDetl.maktx}}</view>
            <view>库存:{{locDetl.anfme}}</view>
            <view>调整库存为:{{locDetl.barcode}}</view>
            <view>工序:{{locDetl.processSts$}}</view>
            <view>库存:{{locDetl.count}}</view>
         </view>
         <view class="list-right" @click="goToLocDetl(locDetl)">
            <uni-icons type="right" size="25"  color="#fff"></uni-icons>
         <view class="list-right" @click="chageDetl(index)">
            <uni-icons type="settings" size="25"  color="#fff"></uni-icons>
         </view>
      </view>
      <view style="height: 100rpx;display: flex;align-items: center;justify-content: center;" @click="add()">
         <uni-icons type="folder-add" size="25"  color="#000" style="padding-right: 20rpx;"></uni-icons> 添加物料
      </view>
      <!-- 弹窗 -->
      <view>
         <uni-popup ref="chageDetl" type="dialog">
            <view class="popup">
               <!-- 标题 -->
               <view class="title">商品信息</view>
               <view class="popup-item">
                  <view style="width: 70px;">订单号</view>
                  <view style="margin-left: 20rpx;border-bottom: 1px solid #d8d8d8;"> <input type="text" v-model="orderNo"> </view>
               </view>
               <view class="popup-item">
                  <view  style="width: 70px;">销售单号</view>
                  <view style="margin-left: 20rpx;border-bottom: 1px solid #d8d8d8;"> <input type="text" v-model="threeCode"> </view>
               </view>
               <view class="popup-item">
                  <view  style="width: 70px;">工序</view>
                     <uni-combox style="height: 20px;" :candidates="processSts$List" placeholder="请选择工序" v-model="processSts$"></uni-combox>
                  </view>
               <view class="popup-item">
                  <uni-number-box :value="count" :step='1' :max="9999999" color="#747474" @change="changeValue" />
               </view>
               <view class="btn">
                  <view class="btn-left" @click="remove()">移除</view>
                  <view class="btn-right" @click="changeCount()">修改</view>
               </view>
            </view>
         </uni-popup>
      </view>
      <!-- 底部操作按钮 -->
      <view class="buttom">
         <button size="mini" type="primary" @click="agvStart('warn')">添加物料</button>
         <button size="mini" type="primary" @click="adjust('warn')">调整库存</button>
      </view>
   </view>
</template>
@@ -29,8 +63,15 @@
         return {
            baseUrl: '',
            token: '',
            dataList: []
            dataList: [],
            count: '',
            index: 0,
            locNo: '',
            barcode: '',
            orderNo: '',
            threeCode: '',
            processSts$: '',
            processSts$List: ['待加工','已加工','无需加工']
         }
      },
      onShow() {
@@ -42,6 +83,11 @@
         // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
         eventChannel.on('item', function(data) {
            console.log(data);
            _this.locNo = data.item.locNo
            _this.barcode = data.item.barcode
            for (let k of data.item.data) {
               k['count'] = k.anfme
            }
            _this.dataList = data.item.data
         })
      },
@@ -73,6 +119,7 @@
               },
               events: {
                  matList: function(data) {
                     data.data.suppCode = _this.barcode
                     _this.checkMat(data.data)
                  },
               },
@@ -84,12 +131,12 @@
            for (var i = 0; i < len; i++) {
               if (mat.matnr == this.dataList[i].matnr) {
                  for (var j = 0; j < len; j++) {
                     if (mat.batch == this.dataList[j].batch) {
                     if (mat.threeCode == this.dataList[j].threeCode) {
                        sameItem = true
                     }
                  }
                  // 相同物料 不同批号  新加列表
                  if (mat.batch != this.dataList[i].batch) {
                  if (mat.threeCode != this.dataList[i].threeCode) {
                     this.$forceUpdate() // 强制刷新
                     if (sameItem) {
                        add = false
@@ -99,7 +146,7 @@
                     
                  } else {
                     // 相同物料相同批号 数量累加
                     this.dataList[i].anfme += mat.anfme
                     this.dataList[i].count += mat.count
                     this.$forceUpdate() // 强制刷新
                     add = false
                  }
@@ -108,11 +155,147 @@
            if (add) {
               this.dataList.unshift(mat)
            }
         }
         },
         chageDetl(index) {
            this.index = index
            this.count = this.dataList[index].count
            this.threeCode = this.dataList[index].threeCode
            this.orderNo = this.dataList[index].orderNo
            this.processSts$ = this.dataList[index].processSts$
            this.$refs.chageDetl.open()
         },
         // 修改数量
         changeCount() {
            this.dataList[this.index].count = this.count
            this.dataList[this.index].threeCode = this.threeCode
            this.dataList[this.index].orderNo = this.orderNo
            this.dataList[this.index].processSts$ = this.processSts$
            switch(this.processSts$) {
               case '待加工':
                  this.dataList[this.index].processSts = 1
                  break;
               case '已加工':
                  this.dataList[this.index].processSts = 2
                  break;
               case '无需加工':
                  this.dataList[this.index].processSts = 3
                  break;
            }
            this.$forceUpdate() // 强制刷新
            this.$refs.chageDetl.close()
         },
         // 移除物料
         remove() {
            this.dataList.splice(this.index, 1)
            this.$refs.chageDetl.close()
         },
         adjust() {
            let _this = this
            let param = {
               locNo: _this.locNo,
               list: _this.dataList
            }
            uni.request({
               url: `${_this.baseUrl}/agv/locDdetl/adjust/start`,
               header: {'token': uni.getStorageSync('token')},
               data: param,
               method: 'POST',
               success(res) {
                  res = res.data
                  if (res.code == 200) {
                     uni.showToast({ title: res.msg, icon: "success", position: 'top' })
                     _this.$refs.chageDetl.close()
                     _this.getOpenerEventChannel().emit('acceptDataFromOpenedPage', {data: this.mat});
                     setTimeout(()=> {
                        uni.navigateBack()
                     },1000)
                  } 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' })
                  }
               }
            })
         },
         changeValue(value) {
            this.count = value
         },
      }
   }
</script>
<style>
   @import url('../../../static/css/common/order.css');
   .list-font-color {
      color: #fff;
      background-color: #2299ff;
   }
   .order-sts-start {
      background-color: #3eb689;
   }
   .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: #e2231a;
      border-right: 1px solid #DCDFE6;
   }
   .btn-right {
      display: flex;
      flex: 1;
      justify-content: center;
      align-items: center;
      color: #409EFF;
   }
</style>