Junjie
2024-07-24 7b6184907d70a14b129996d0010566f39307ccb7
pages/project/jmAGV/floorOne.vue
@@ -1,104 +1,169 @@
<template>
   <view  class="container">
      <uni-icons type="bars" size="30" color="#b1b3b8" class="select" @click="jump()"></uni-icons>
      <!-- 左 -->
      <view class="zcard">
         <view class="zcard-flex">
            <view class="button-nk" @click="click('left')">上架</view>
            <view class="button-nk" v-for="item in groundSiteList" @click="click(item,'left')">{{item.name}}</view>
         </view>
      </view>
      <!-- 右 -->
      <view class="zcard">
         <view class="zcard-flex">
            <view class="button-nk" style="background-color: brown;" @click="click('right')">下架</view>
            <view class="button-nk" style="background-color: brown;" @click="putOut('out2')">仓库-满托盘(出库)</view>
            <view class="button-nk" style="background-color: brown;" v-for="item in cacheSiteList"
               @click="click(item,'right')">{{item.name}}</view>
         </view>
      </view>
      
      <view>
         <uni-popup ref="revise" type="dialog">
            <view class="popup">
            <view v-if="outType" class="popup">
               <view  class="popup3-input-title">{{text}}</view>
               <view class="button-nk" @click="option(item)" v-for="item in btns">{{item.name}}</view>
               <view class="button-nk" @click="upPallet()">盘头上架</view>
            </view>
            <view v-else class="popup">
               <view class="popup3-input-title">{{text}}</view>
               <view class="button-nk" @click="downPallet()">盘头下架</view>
            </view>
         </uni-popup>
      </view>
      
      <view>
         <uni-popup ref="numberPopup" type="dialog">
         <uni-popup ref="downPalletPopup" type="dialog">
            <view class="popup2">
               <view  class="popup3-input-title">{{tipsTitle}}</view>
               <view class="popup3-input-title">盘头下架</view>
               <uni-data-select v-model="groundSite" :localdata="groundEmptySiteList"></uni-data-select>
               <view class="button-nk" @click="goDown(2)">2个</view>
               <view class="button-nk" @click="goDown(4)">4个</view>
            </view>
         </uni-popup>
      </view>
      <view>
         <uni-popup ref="upPalletPopup" type="dialog">
            <view class="popup2">
               <view class="popup3-input-title">盘头上架</view>
               <view class="popup3-input-box">
                  <uni-data-select v-model="chooseCacheSite" :localdata="chooseCacheSiteList" placeholder="请选择站点"></uni-data-select>
               </view>
               <view class="popup3-input-box">
                  <uni-data-select v-model="chooseMat" :localdata="emptyMatList" placeholder="请选择物料"></uni-data-select>
               </view>
               <view class="popup3-input-box">
                  <text>订单号:</text>
                  <view style="margin-left: 3rpx;">
                     <input type="text" v-model="code" />
                  </view>
               </view>
               <view class="popup3-input-box">
                  <text>米数:</text>
                  <view style="margin-left: 3rpx;">
                     <input type="text" v-model="meter" />
                  </view>
               </view>
               <view class="button-nk" @click="goUp(2)">2个</view>
               <view class="button-nk" @click="goUp(4)">4个</view>
            </view>
         </uni-popup>
      </view>
      
      <view>
         <uni-popup ref="inputPopup" type="dialog">
            <view class="popup3">
               <view class="popup3-input-title">{{tipsTitle}}</view>
               <view class="popup3-input-box2"  :class="item.chose"
                  v-if="!meterShow" v-for="item in emptyMatList" @click="chose(item.matnr)">
                  <view>
                     {{item.maktx}}
                  </view>
               </view>
               <view class="popup3-input-box" v-if="meterShow">
                  <text>{{desc}}:</text>
                  <view style="margin-left: 3rpx;">
                     <input type="text" v-model="code"/>
                  </view>
               </view>
               <view class="popup3-input-box" v-if="meterShow">
                  <text>米数:</text>
                  <view style="margin-left: 3rpx;">
                     <input type="text" v-model="meter"/>
                  </view>
               </view>
               <view class="button-nk" @click="confirm(2)">确定</view>
            </view>
         </uni-popup>
      </view>
   </view>
</template>
<script>
   import code from '../../../uni_modules/uview-ui/libs/config/props/code';
   export default {
      data() {
         return {
            baseUrl: '',
            token: '',
            onBtns: [
               {name: '1号空盘位上架',code:'1-Q1',traget: '12-F1',type: 'foolr'},
               {name: '2号空盘位上架',code:'2-Q1',traget: '12-F1',type: 'foolr'},
            groundSiteList: [{
                  name: 'B-C-K-1',
                  code: 'B-C-K-1',
                  type: 'ground-k'
               },
               {
                  name: 'B-C-M-1',
                  code: 'B-C-M-1',
                  type: 'ground-m'
               },
               {
                  name: 'B-C-K-2',
                  code: 'B-C-K-2',
                  type: 'ground-k'
               },
               {
                  name: 'B-C-M-2',
                  code: 'B-C-M-2',
                  type: 'ground-m'
               },
            ],
            outBtns: [
               {name: '下架至1号位',code:'11-Q1',traget: '1-F1',type: 'foolr'},
               {name: '下架至2号位',code:'11-Q1',traget: '2-F1',type: 'foolr'},
               {name: '下架至3号位',code:'11-Q1',traget: '3-F1',type: 'foolr'},
            cacheSiteList: [{
                  name: 'B-H-1',
                  code: 'B-H-1',
                  type: 'cache'
               },
               {
                  name: 'B-H-2',
                  code: 'B-H-2',
                  type: 'cache'
               },
               {
                  name: 'B-H-3',
                  code: 'B-H-3',
                  type: 'cache'
               },
               {
                  name: 'B-H-4',
                  code: 'B-H-4',
                  type: 'cache'
               },
               {
                  name: 'B-H-5',
                  code: 'B-H-5',
                  type: 'cache'
               },
               {
                  name: 'B-H-6',
                  code: 'B-H-6',
                  type: 'cache'
               },
               {
                  name: 'B-H-7',
                  code: 'B-H-7',
                  type: 'cache'
               },
            ],
            btns: [],
            outType: '',
            emptyMatList: [],
            chooseMat: '',
            groundSite: '',
            groundEmptySiteList: [],
            chooseCacheSite: '',
            chooseCacheSiteList: [],
            item: '',
            text: '',
            btnTitle: '',
            btnTitle1: '',
            btnTitle2: '',
            btnTitle3: '',
            outType: '',
            stationType: 'load',
            type: '',
            tipsTitle: '',
            item: {},
            meterShow: false,
            originLocal: '',
            targetLocal: '',
            code: '',
            emptyMatList: '',
            meter: ''
            meter: '',
            meterShow: '',
            desc: '',
            tipsTitle: '',
         }
      },
      onShow() {
         if (uni.getStorageSync('Network')) {
            let network = uni.getStorageSync('Network')
            this.baseUrl = `http://${network[0].ip}:${network[0].port}/${network[0].address}`
            this.token = uni.getStorageSync('token');
         }
         this.getEmptyMatList()
      },
      methods: {
         jump() {
@@ -106,16 +171,17 @@
               url: '/pages/project/jmAGV/home'
            })
         },
         // 满版出库
         putOut(type) {
            this.type = type
            this.inputPopup()
         click(item, type) {
            this.item = item
            this.text = item.name
            if (type == 'left') {
               this.outType = true
            } else {
               this.outType = false
            }
            this.$refs.revise.open(type)
         },
         inputPopup() {
            if (this.type == 'out1') {
               this.tipsTitle = '空托盘出库'
               this.desc = '物料码'
               this.meterShow = false
         getEmptyMatList() {
               let that = this
               uni.request({
                  url: `${that.baseUrl}/agv/getEmptyMat`,
@@ -124,62 +190,128 @@
                  success(res) {
                     res = res.data
                     if (res.code === 200) {
                        res.data['chose'] = ''
                        that.emptyMatList = res.data
                     let tmp = []
                     res.data.forEach((item) => {
                        tmp.push({
                           text: item.maktx,
                           value: item.matnr
                        })
                     })
                     that.emptyMatList = tmp
                     }
                  }
               })
            } else {
               this.tipsTitle = '满托盘出库'
               this.desc = '订单号'
               this.meterShow = true
               this.$refs.inputPopup.open('center')
            }
            this.$refs.inputPopup.open('center')
         },
         click(type) {
            if (type == 'left') {
               this.btns = this.onBtns
               this.text = '上架'
               this.type = 'load'
               this.tipsTitle = '上架数量'
            } else {
               this.btns = this.outBtns
               this.type = 'unload'
               this.text = '下架'
               this.tipsTitle = '下架数量'
            }
            this.$refs.revise.open(type)
         upPallet() {
            let tmp = [];
            this.cacheSiteList.forEach((item) => {
               tmp.push({
                  text: item.name,
                  value: item.code
               })
            })
            this.chooseCacheSiteList = tmp;
            this.upPalletPopup()
         },
         option(item) {
            this.item = item
            this.$refs.numberPopup.open('center')
         downPallet() {
            let tmp = [];
            this.groundSiteList.forEach((item) => {
               if (item.type == 'ground-k') {
                  tmp.push({
                     text: item.name,
                     value: item.code
                  })
               }
            })
            this.groundEmptySiteList = tmp;
            this.downPalletPopup()
         },
         upPalletPopup() {
            this.$refs.upPalletPopup.open('center')
         },
         downPalletPopup() {
            this.$refs.downPalletPopup.open('center')
         },
         goUp(num) {
            let _this = this
            let data = {
               originLocal: this.item.code,
               targetLocal: this.item.traget,
               type: this.type,
               anfme: num
            }
            this.webServer(data)
         },
         confirm() {
            let data = {}
            if(this.chooseCacheSite == ''){
               uni.showToast({
                  title: '请选择站点',
                  icon: "none",
                  position: 'top'
               })
               return;
            }
            if(this.chooseMat == ''){
               uni.showToast({
                  title: '请选择物料',
                  icon: "none",
                  position: 'top'
               })
               return;
            }
            if(this.code == ''){
               uni.showToast({
                  title: '请输入订单号',
                  icon: "none",
                  position: 'top'
               })
               return;
            }
            if(this.meter == ''){
               uni.showToast({
                  title: '请输入米数',
                  icon: "none",
                  position: 'top'
               })
               return;
            }
            data = {
               originLocal: '11-Q1',
               targetLocal: '11-Q1',
               type: this.type,
               originLocal: this.item.code,
               targetLocal: this.chooseCacheSite,
               type: 'load',
               anfme: num,
               matnr: this.chooseMat,
               orderNo: this.code,
               meter: this.meter
            }
            this.webServer(data)
            setTimeout(()=>{
               this.$refs.inputPopup.close()
               this.$refs.upPalletPopup.close()
               this.chooseMat = ''
               this.code = ''
               this.meter = ''
               this.chooseCacheSite = ''
            },300)
         },
         goDown(num) {
            let data = {}
            if(this.groundSite == ''){
               uni.showToast({
                  title: '请选择站点',
                  icon: "none",
                  position: 'top'
               })
               return;
            }
            data = {
               originLocal: this.item.code,
               targetLocal: this.groundSite,
               type: 'unload',
               anfme: num,
            }
            this.webServer(data)
            setTimeout(()=>{
               this.$refs.downPalletPopup.close()
            },300)
         },
         // 所有服务
@@ -188,17 +320,25 @@
            uni.request({
               url: `${_this.baseUrl}/agv/requestTask`,
               data: data,
               header: { 'token': uni.getStorageSync('token') },
               header: {
                  'token': uni.getStorageSync('token')
               },
               method: 'POST',
               success(res) {
                  res = res.data
                  if (res.code === 200) {
                     setTimeout(()=>{
                        this.$refs.revise.close()
                     },300)
                     uni.showToast({ title: '操作成功', icon: "none", position: 'top' })
                     uni.showToast({
                        title: '操作成功',
                        icon: "none",
                        position: 'top'
                     })
                     _this.$refs.revise.close()
                  } else {
                     uni.showToast({ title: res.msg, icon: "none", position: 'top' })
                     uni.showToast({
                        title: res.msg,
                        icon: "none",
                        position: 'top'
                     })
                  }
               }
            })
@@ -210,26 +350,43 @@
<style>
   .container {
      height: 100%;
      display: grid;
      grid-template-columns: 50% 50%;
      /* background-color: aqua; */
      /* display: grid;
      grid-template-columns: 50% 50%; */
      width: 100%;
   }
   .btn-box {
      /* margin: 1%; */
      background-color: azure;
   }
   .zcard {
      display: flex;
      flex-wrap: wrap;
      margin-top: 20px;
   }
   .zcard-flex {
      /* background-color: coral; */
      /* flex-direction: column; */
      margin-top: 20rpx;
      width: 100%;
      height: 100%;
      display: flex;
      flex-wrap: wrap;
      /* flex-direction: column; */
      justify-content: space-around;
      align-items: center;
      margin-right: 20px;
      margin-left: 20px;
   }
   .button-nk {
      margin: 10rpx 0rpx;
      margin: 30rpx 50rpx;
      /* padding: 20rpx 70rpx; */
      /* background-color: azure; */
      min-width: 350rpx;
      min-width: 150rpx;
      /* margin: 0 auto; */
      height: 50rpx;
      text-align: center;
@@ -242,12 +399,14 @@
         inset -4px -4px 4px rgba(255, 255, 255, .4),
         -4px -4px 5px rgba(0, 0, 0, .4);
   }
   .button-nk:active {
      transform: translateY(2px) scale(0.99, 0.99);
      box-shadow: inset 4px 4px 4px rgba(0, 0, 0, .3),
         inset -4px -4px 8px rgba(255, 255, 255, .7),
         -5px -5px 5px rgba(0, 0, 0, .3);
   }
   .popup {
      background-color: #eee;
      width: 30vw;
@@ -257,6 +416,7 @@
      flex-direction: column;
      justify-content: space-around;
   }
   .popup2 {
      background-color: #eee;
      width: 30vw;
@@ -267,22 +427,7 @@
      justify-content: space-around;
      border-radius: 10rpx;
   }
   .popup3-input-title {
      text-align: center;
      margin: 10rpx;
      font-size: 18px;
      font-weight: bold;
   }
   .select {
      position: absolute;
      bottom: 12px;
      right: 16px;
      border-radius: 10px;
      padding: 4px 10px;
      box-shadow: inset 2px 2px 2px rgba(0, 0, 0, .3),
         inset -2px -2px 2px rgba(255, 255, 255, .7),
         -2px -2px 2px rgba(0, 0, 0, .4);
   }
   .popup3 {
      background-color: #eee;
      max-height: 80vw;
@@ -294,12 +439,14 @@
      border-radius: 10rpx;
      color: #565656;
   }
   .popup3-input-title {
      text-align: center;
      margin: 10rpx;
      font-size: 18px;
      font-weight: bold;
   }
   .popup3-input-box  {
      display: flex;
      border: 1px solid #cecece;
@@ -307,6 +454,7 @@
      padding: 2rpx 10rpx;
      margin: 20rpx;
   }
   .popup3-input-box2 {
      display: flex;
      border: 1px solid #cecece;
@@ -315,4 +463,20 @@
      margin: 10rpx;
      background-color: #FFF;
   }
   .chosed {
      background-color: #67C23A;
      color: #e8e8e8;
   }
   .select {
      position: absolute;
      bottom: 12px;
      right: 16px;
      border-radius: 10px;
      padding: 4px 10px;
      box-shadow: inset 2px 2px 2px rgba(0, 0, 0, .3),
         inset -2px -2px 2px rgba(255, 255, 255, .7),
         -2px -2px 2px rgba(0, 0, 0, .4);
   }
</style>