#
whycq
2024-05-29 4a3cec49a290c733ca7f7fdab858c43098a2892e
pages/phyz/checkLocDetl/locDetl.vue
@@ -1,24 +1,60 @@
<template>
   <view>
      <view>当前库位号:{{locNo}}</view>
      <view>当前货架码:{{barcode}}</view>
      <view>
         <view>实际库存</view>
         <view>库位号{{containerDetl.locNo}}</view>
         <view>货架码{{containerDetl.barcode}}</view>
         <view>库存品类{{containerDetl.count}}</view>
      <view style="padding: 16rpx 32rpx;font-size: 20px;font-weight: bold;">
         <view>当前库位号:{{locNo}}</view>
         <view>当前货架码:{{barcode}}</view>
      </view>
      <view v-if="locDetlShow">
         <view>数据库存</view>
         <view>库位号{{locDetl.locNo}}</view>
         <view>货架码{{locDetl.barcode}}</view>
         <view>库存品类{{locDetl.count}}</view>
      <view class="list locSts-O">
         <view class="list-left">
            <view>实际库存</view>
            <view>库位号:{{containerDetl.locNo}}</view>
            <view>货架码:{{containerDetl.barcode}}</view>
            <view>库存品类:{{containerDetl.count}}</view>
         </view>
         <view class="list-right" @click="goToLocDetl(containerDetl)">
            <uni-icons type="right" size="25"  color="#fff"></uni-icons>
         </view>
      </view>
      <view class="list locSts-D" v-if="locDetlShow">
         <view class="list-left">
            <view>数据库存</view>
            <view>库位号:{{locDetl.locNo}}</view>
            <view>货架码:{{locDetl.barcode}}</view>
            <view>库存品类:{{locDetl.count}}</view>
         </view>
         <view class="list-right" @click="goToLocDetl(locDetl)">
            <uni-icons type="right" size="25"  color="#fff"></uni-icons>
         </view>
      </view>
      <!-- 弹窗 -->
      <view>
         <uni-popup ref="chageDetl" type="dialog">
            <view class="popup">
               <!-- 标题 -->
               <view class="title">修改库位状态</view>
               <view class="popup-item">
                  <view class="dropdown" @click="toggleDropdown()">
                     <input type="text" style="width: 270rpx;" v-model="locSts" placeholder="更改为">
                     <uni-icons :type="isOpen ? 'top' : 'bottom'" color="#c1c1c1" style="margin-left: 10rpx;"></uni-icons>
                     <scroll-view scroll-y="ture" class="dropdown-content" v-if="isOpen">
                        <view class="dropdown-item" v-for="option in locStss" @click="selected(option)">{{option.title}}</view>
                     </scroll-view>
                  </view>
               </view>
               <view class="btn">
                  <view class="btn-left" @click="changeClose()">取消</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="changeSts('warn')">更改库位状态</button>
         <button size="mini" type="primary" @click="changeStart('warn')">纠正库位</button>
      </view>
   </view>
</template>
@@ -34,15 +70,27 @@
            containerDetl: {
               locNo: '',
               barcode: '',
               count: ''
               count: '',
               data: []
            },
            locDetl: {
               locNo: '',
               barcode: '',
               count: ''
               count: '',
               data: []
            },
            dataList: [],
            locDetlShow: false
            locDetlShow: true,
            isOpen: false,
            locSts: '',
            locSts2: '',
            locStss: [
               {title: 'F.在库',val: 'F'},
               {title: 'D.空桶/空栈板',val: 'D'},
               {title: 'O.空库位',val: 'O'},
               {title: 'X.禁用',val: 'X'},
            ],
            sourceLoc: ''
         }
      },
      onShow() {
@@ -55,6 +103,9 @@
         eventChannel.on('item', function(data) {
            console.log(data);
            _this.locNo = data.item.locNo
            _this.barcode = data.item.barcode
            _this.sourceLoc = data.item.item
            console.log(_this.sourceLoc);
            _this.getLocDetl(data.item.locNo,data.item.barcode)
         })
      },
@@ -64,30 +115,143 @@
            let param = {locNo:locNo,containerCode: barcode}
            uni.request({
               url: `${_this.baseUrl}/agvMobile/check/detl/v1`,
               header: {'token': uni.getStorageSync('token')},
               data: param,
               method: 'POST',
               success(res) {
                  res = res.data
                  console.log(res);
                  if (res.code === 200) {
                     _this.dataList = res.data.containerCode
                     if (res.data.containerCode[0].locNo) {
                        _this.containerDetl.locNo = res.data.containerCode[0].locNo
                        _this.containerDetl.barcode = res.data.containerCode[0].suppCode
                        _this.containerDetl.count = res.data.containerCode.length
                     if (res.data.containerCode.length > 0) {
                        _this.dataList = res.data.containerCode
                        if (res.data.containerCode[0].locNo) {
                           _this.containerDetl.locNo = res.data.containerCode[0].locNo
                           _this.containerDetl.barcode = res.data.containerCode[0].suppCode
                           _this.containerDetl.count = res.data.containerCode.length
                           _this.containerDetl.data = res.data.containerCode
                        }
                     }
                     
                     if (res.data.locNo.length > 0) {
                        if (res.data.containerCode[0].locNo == res.data.locNo[0].locNo
                        && res.data.containerCode[0].suppCode == res.data.locNo[0].suppCode) {
                           _this.locDetlShow = false
                        } else {
                        }
                        _this.locDetl.locNo = res.data.locNo[0].locNo
                        _this.locDetl.barcode = res.data.locNo[0].suppCode
                        _this.locDetl.count = res.data.locNo.length
                        _this.locDetl.data = res.data.locNo
                     }
                     
                     
                  } 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' })
                  }
               }
            })
         },
         goToLocDetl(item) {
            let _this = this
            if (item.data.length <= 0) {
               uni.showToast({ title: '没有库存', icon: "error", position: 'top' })
               return
            }
            uni.navigateTo({
               url: "./locDetlList",
               success: function(res) {
                  // 通过eventChannel向被打开页面传送数据   向另外一个页面传递值的
                  res.eventChannel.emit('item', {
                     item: item
                  })
               },
               events: {
                  // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据  另外一个页面传过来的
                  acceptDataFromOpenedPage: function(data) {
                     _this.getLocDetl(_this.locNo,_this.barcode)
                  }
               },
            });
         },
         toggleDropdown() {
            this.isOpen = !this.isOpen;
         },
         changeSts() {
            this.$refs.chageDetl.open()
         },
         selected(option) {
            this.locSts = option.title
            this.locSts2 = option.val
         },
         changeClose() {
            this.$refs.chageDetl.close()
         },
         changeCount() {
            let _this = this
            _this.sourceLoc.locSts = this.locSts2
            let barcode = _this.barcode
            if (this.locSts2 == 'O') {
               barcode = ''
            }
            let param = {
               locNo: _this.sourceLoc.locNo,
               locSts: _this.sourceLoc.locSts,
               barcode: _this.barcode,
               row1: _this.sourceLoc.row1,
               bay1: _this.sourceLoc.bay1,
               lev1: _this.sourceLoc.lev1,
               floor: _this.sourceLoc.floor
            }
            Object.keys(_this.sourceLoc).forEach(function(key){
               if (_this.sourceLoc[key] == null) {
                  _this.sourceLoc[key] = ''
               }
            })
            uni.request({
               url: `${_this.baseUrl}/agv/locMast/update/auth`,
               header: {
                  'token': uni.getStorageSync('token'),
                  'content-type': 'application/x-www-form-urlencoded'
               },
               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()
                     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' })
                  }
               }
            })
         },
         changeStart() {
            let _this = this
            let param = {locNo:_this.locNo,containerCode: _this.barcode}
            uni.request({
               url: `${_this.baseUrl}/agvMobile/update/detl/v1`,
               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()
                     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' })
                  }
               }
            })
@@ -98,4 +262,76 @@
<style>
   @import url('../../../static/css/common/order.css');
   .locSts-D {
      color: #FFF;
      background-color: #daad25;
   }
   .locSts-O {
      color: #FFF;
      background-color: #55aaff;
   }
   .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>