skyouc
昨天 a232dcf6d4a59c7c47e06b6619eb7566163f95b4
pages/AGV/BindAndInTask.vue
New file
@@ -0,0 +1,294 @@
<template>
   <view class="has-foot">
      <form>
         <view class="cu-form-group ">
            <view class="title">接驳站</view>
            <input placeholder="请扫描接驳站条码" v-model="barcode" ></input>
            <text class='cuIcon-search text-blue' @click="search"></text>
         </view>
         <view class="cu-form-group ">
            <view class="title">容器码</view>
            <input placeholder="请扫描容器码" v-model="container" ></input>
            <text class='cuIcon-search text-blue' @click="getList"></text>
         </view>
         <view class="cu-form-group">
            <view class="title">目标库区</view>
            <view style="width: 75%;">
               <uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
                  placement="bottom" @change="selChange"></uni-data-select>
            </view>
         </view>
      </form>
      <view class="cu-list det menu sm-border  padding">
         <block v-for="(item, index) in list" :key="index">
            <view class="cu-bar bg-white solid-bottom margin-top-sm">
               <view class="action">
                  <view class="index">
                     {{index+1}}
                  </view>
                  <view class="text-blue">
                     编码:
                     {{`${item.matnrCode}`}}
                  </view>
               </view>
               <!--    <view class="action" >
                  <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
               </view> -->
            </view>
            <view class="cu-item">
               <view class="content">
                  <text class="text-black">名称:</text>
                  <text class="text-grey ">{{item.maktx}}</text>
               </view>
            </view>
            <view class="cu-item">
               <view class="content">
                  <text class="text-black">ASN:</text>
               </view>
               <view class="action">
                  <text class="text-grey ">{{item.asnCode}}</text>
               </view>
            </view>
            <view class="cu-item">
               <view class="content">
                  <text class="text-black">批次:</text>
               </view>
               <view class="action">
                  <text class="text-grey ">{{item.batch}}</text>
               </view>
            </view>
            <view class="cu-item">
               <view class="content">
                  <text class="text-black">收货数量:</text>
               </view>
               <view class="action">
                  <text class="text-grey ">{{item.anfme}}</text>
               </view>
            </view>
         </block>
      </view>
      <view class="cu-bar btn-group foot">
         <button class="cu-btn text-blue line-blue shadow" @click="clear">清空</button>
         <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">启动</button>
      </view>
   </view>
</template>
<script>
   import {
      request
   } from '../../common/request.js'
   import {
      mapState,
      mapMutations,
      mapActions,
      mapGetters
   } from 'vuex';
   export default {
      data() {
         return {
            barcode: '',
            areaName: '',
            locCode: '',
            container: '',
            list: [],
            range: [],
            curCode: '',
            whAreaId:'',
            repeatClick: false,
         }
      },
      computed: {
         ...mapState('user', ['dynamicFields']),
      },
      mounted() {},
      methods: {
         selChange(val) {
            uni.setStorageSync('whAreaId', val)
         },
         async search() {
            let that = this
            const {
               code,
               data,
               msg
            } = await request('/staMsg/select', {
               sta: this.barcode
            })
            if (code === 200) {
               that.range = data.warehouseAreasList.map(item => ({
                  value: item.id,
                  text: item.name
               }));
               that.whAreaId = data.area
            } else {
               uni.showToast({
                  title: msg,
                  icon: "none",
               })
            }
         },
         async getList() {
            const {
               code,
               data,
               msg
            } = await request('/asnOrderItem/container', {
               barcode: this.container,
               type: 'unbind'
            })
            if (code === 200) {
               for (var i = 0; i < data.length; i++) {
                  data[i].receiptQty = 0;
               }
               this.list = data
            } else {
               uni.showToast({
                  title: msg,
                  icon: "none",
                  position: 'top'
               })
            }
         },
         remove(index) {
            this.list.splice(index, 1);
         },
         clear() {
            this.list = []
            this.range = []
            this.container = ''
            this.barcode = ''
            this.whAreaId = ''
         },
         open() {
            this.$refs.popup.open()
         },
         close() {
            this.$refs.popup.close()
         },
         popupSubmit() {
            this.$refs.popup.close()
         },
         itemChange(el) {
            this.curCode = el
         },
         async confirm() {
            if(this.barcode === '' || this.barcode ===null){
               uni.showToast({
                  title: "接驳站码不能为空",
                  icon: "none",
               })
               return ;
            }
            if(this.whAreaId === '' || this.whAreaId ===null){
               uni.showToast({
                  title: "目标库区不能为空",
                  icon: "none",
               })
               return ;
            }
            if(this.container === '' || this.container ===null){
               uni.showToast({
                  title: "容器码不能为空",
                  icon: "none",
               })
               return ;
            }
            this.repeatClick = true
            const {
               code,
               data,
               msg
            } = await request('/AGV/bindAndIn/start',{
                  sta: this.barcode,
                  area: this.whAreaId,
                  barcode : this.container
               }
            )
            if (code === 200) {
               uni.showToast({
                  title: '启动成功'
               })
               this.clear()
            } else {
               uni.showToast({
                  title: msg,
                  icon: "none",
               })
            }
            this.repeatClick = false
         },
      }
   }
</script>
<style>
   .index {
      border: 1px solid #e54d42;
      color: #e54d42;
      border-radius: 50%;
      display: block;
      width: 50rpx;
      height: 50rpx;
      line-height: 48rpx;
      text-align: center;
      margin-right: 20rpx;
      font-size: 30rpx;
   }
   .text-blue {
      color: #0081ff !important;
   }
   .item {
      position: relative;
      display: flex;
      min-height: 80upx;
      align-items: center;
   }
   .uni-file-picker {
      width: 100%;
      margin-bottom: 10px;
   }
   .uni-select__selector {
      z-index: 999;
   }
   .tj {
      height: auto;
      padding: 6px 8px;
      display: inline-block;
      border-radius: 6px;
   }
   .item {
      display: flex;
      justify-content: center;
   }
   .item .cu-btn {
      font-size: 26upx;
   }
</style>