1
yangpeixing
2025-12-04 885092869d8a27a0b77d6e55d3dd3f00f29e8002
ÏîÄ¿´úÂë/PDA/pages/task/Outbound.vue
@@ -1,113 +1,62 @@
<template>
   <view>
      <u-sticky>
         <view style="background-color: #ffffff;">
            <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
      <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
      </uni-segmented-control>
      <view v-show="current === 0">
         <view style="padding: 5%;">
            <uni-forms label-width="120">
               <uni-forms-item label="托盘条码">
                  <uni-easyinput type="text" :focus="barcodeFocus" v-model="PalletCode" placeholder="请输入托盘条码"
                     ref='midInput'/>
               </uni-forms-item>
            </uni-forms>
            <button @click="InboundTask" type="primary" size="default" style="margin-top: 2%;">出库</button>
         </view>
      </u-sticky>
      <uni-list :border="true">
         <uni-list-item direction="column" clickable
            v-for="item in allReceivingOrders" :key="item.id">
            <template v-slot:body>
               <uni-group margin-top="20">
                  <view class="flex-row">
                     <view class="label">托盘条码:</view>
                     <view class="value">{{item.palletCode}}</view>
                  </view>
                  <view class="flex-row">
                     <view class="label">货位编码:</view>
                     <view class="value">{{item.locationCode}}</view>
                  </view>
                  <view class="flex-row">
                     <view class="label">物料编码:</view>
                     <view class="value">{{item.materielCode}}</view>
                  </view>
                  <view class="flex-row">
                     <view class="label">物料名称:</view>
                     <view class="value">{{item.materielName}}</view>
                  </view>
                  <view class="flex-row">
                     <view class="label">库存数量:</view>
                     <view class="value">{{item.quantity}}</view>
                  </view>
                  <view>
                     <button @click="Outbound(item.palletCode)" type="primary" size="default" style="margin-top: 2%;">出库</button>
                  </view>
               </uni-group>
            </template>
         </uni-list-item>
      </uni-list>
      <!-- <uni-load-more :status="status" v-if="loadVisible"></uni-load-more>
      <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> -->
      <u-toast ref="luToast" />
   </view>
</template>
<script>
   const innerAudioContext = uni.createInnerAudioContext();
   export default {
      data() {
         return {
            page: "/pages/Production/ProductionOutorderboxing?orderNo=",
            loadVisible: false,
            istrue: false,
            searchValue: "",
            status: "more",
            allReceivingOrders: [],
            pageNo: 1,
            scrollTop: 0
            barcodeFocus:true,
            PalletCode: "",
            items: ['出库'],
            current: 0
         }
      },
      onLoad(res) {
         this.getData();
      },
      onReachBottom() {
         this.pageNo += 1;
         this.getData();
      },
      onPageScroll(e) {
         this.scrollTop = e.scrollTop;
      onLoad() {
      },
      methods: {
         search(res) {
            this.getData();
         onClickItem(e) {
            if (this.current != e.currentIndex) {
               this.current = e.currentIndex;
            }
         },
         getData() {
            var postData = {
               materielCode: this.searchValue,
               pageNo: this.pageNo
            }
            this.allReceivingOrders=[];
            this.$u.post('/api/StockInfo/GetStockView', postData).then((res) => {
               if (res.status) {
                  if (this.searchValue == '') {
                     this.allReceivingOrders = res.data;
                     if (this.allReceivingOrders.length > 3) {
                        this.loadVisible = true;
                     } else {
                        this.loadVisible = false;
                     }
                  } else {
                     this.allReceivingOrders = res.data;
                     if (this.allReceivingOrders.length > 3) {
                        this.loadVisible = true;
                     } else {
                        this.loadVisible = false;
                     }
                  }
               }
         voiceSpeech(src) {
            innerAudioContext.src = src; // '../../static/success.mp3';
            innerAudioContext.play();
         },
         InboundTask() {
            if (this.PalletCode.length <= 0) {
               this.$refs.luToast.show({
                  title: "托盘条码不能为空",
                  type: "error"
            })
         },
         Outbound(palletCode) {
            this.$u.post('/api/Task/OutBoundTaskAsync?palletCode='+palletCode, "").then((res) => {
               return;
            }
            this.$u.post('/api/Task/OutBoundTaskAsync?palletCode='+this.PalletCode+'&remark=""').then(res => {
               if (res.status) {
               this.$refs.luToast.show({
                     title: res.message,
                     type: "success"
                  })
                  this.getData();
                  this.PalletCode = "";
                  this.barcodeFocus=true;
               } else {
                  this.$refs.luToast.show({
                     title: res.message,
@@ -115,7 +64,7 @@
                  })
               }
            })
         }
         },
      }
   }
</script>
@@ -182,43 +131,5 @@
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
   }
   .customcss {
      display: flex;
      position: fixed;
      width: 100%;
      top: 10px;
      text-align: center;
      z-index: 999;
      left: 30px;
      height: 20%;
   }
   .footer {
      padding-top: 50%;
   }
   .flex-row {
      display: flex;
      justify-content: space-between;
      /* å·¦å³å¯¹é½ */
      align-items: center;
      /* åž‚直居中 */
      padding: 10rpx 0;
   }
   .label {
      color: #666;
      width: 200rpx;
      /* å›ºå®šæ ‡ç­¾å®½åº¦ */
      text-align: left;
   }
   .value {
      flex: 1;
      text-align: right;
      color: #333;
      font-weight: bold;
   }
</style>