huangxiaoqiang
2025-10-27 387731cab892804912e68cb91e6fb804411c4756
ÏîÄ¿´úÂë/PDA/pages/task/Inbound.vue
@@ -6,62 +6,132 @@
         <view style="padding: 5%;">
            <uni-forms label-width="120">
               <uni-forms-item label="托盘编码">
                  <uni-easyinput type="text" :focus="!istrue" @input="carNoInputChange" v-model="PalletCode"
                     placeholder="请输入托盘编码" ref='midInput' />
                  <uni-easyinput type="text" :focus="!istrue" v-model="PalletCode1" placeholder="请输入托盘编码"
                     ref='midInput' />
               </uni-forms-item>
               <uni-forms-item label="入库起点">
                  <uni-easyinput type="text" :focus="istrue" v-model="SourceAddress"
                     placeholder="请输入入库起点" ref='midInput' />
                  <uni-easyinput type="text" :focus="istrue" v-model="SourceAddress" placeholder="请输入入库起点"
                     ref='midInput' />
               </uni-forms-item>
               <uni-forms-item label="入库终点">
                  <uni-easyinput type="text" :focus="!istrue" @input="carNoInputChange" v-model="TargetAddress"
                     placeholder="请输入入库终点" ref='midInput' />
                  <uni-easyinput type="text" :focus="istrue" v-model="TargetAddress" placeholder="请输入入库终点"
                     ref='midInput' />
               </uni-forms-item>
               <uni-forms-item label="终 ç‚¹ åŒº åŸŸ">
                  <uni-data-select :focus="!istrue" v-model="AreaId" :localdata="range"
                     placeholder="请输选择入库终点区域"></uni-data-select>
               </uni-forms-item>
            </uni-forms>
            <button @click="InboundTask" type="primary" size="default" style="margin-top: 2%;">入库</button>
            <u-toast ref="InboundTaskluToast" />
         </view>
      </view>
      <view v-show="current === 1">
         <view style="padding: 5%;">
            <uni-forms label-width="120">
               <uni-forms-item label="托盘编码">
                  <uni-easyinput type="text" :focus="barcodefocus" @input="inputChangebarcode" v-model="Barcode"
                     placeholder="请输入托盘编码" ref='midInput' />
                  <uni-easyinput type="text" :focus="barcodefocus" @input="inputChangebarcode"
                     v-model="PalletCode2" placeholder="请输入托盘编码" ref='midInput' />
               </uni-forms-item>
               <uni-forms-item label="出库起点">
                  <uni-easyinput type="text" :focus="barcodefocus" v-model="StartAddress"
                     placeholder="请输入出库起点" ref='midInput' />
               <uni-forms-item label="外箱标签:">
                  <uni-easyinput type="text" placeholder="请扫描外箱标签" ref='midInput' :focus="focus" v-model="materSn"
                     @input="snInput" />
               </uni-forms-item>
               <uni-forms-item label="出库终点">
                  <uni-easyinput type="text" :focus="barcodefocus" v-model="EndAddress"
                     placeholder="请输入出库终点" ref='midInput' />
               </uni-forms-item>
               <view v-if="group.length" class="scan-result">
                  <uni-card v-for="(item, index) in group" :key="item.orderNo">
                     <view class="info-grid">
                        <view class="info-row">
                           <text class="label">订单编码:</text>
                           <text>{{ item.orderNo }}</text>
                        </view>
                        <br>
                        <view class="info-row">
                           <text class="label">仓库名称:</text>
                           <text>{{ item.warehouseName }}</text>
                        </view><br>
                        <view class="info-row">
                           <text class="label">物料编码:</text>
                           <text>{{ item.materialNo }}</text>
                        </view><br>
                        <uni-forms-item label="组盘数量">
                           <uni-easyinput v-model="item.quantity" type="number" />
                        </uni-forms-item>
                     </view>
                     <uni-icons type="trash" class="delete-icon" @click="removeScanItem(item.orderNo)" />
                  </uni-card>
               </view>
               <!-- <uni-list>
                  <uni-list-item direction="column" v-for="(item,index) in InBoundOrder" :key="item.sn">
                     <template v-slot:body>
                        <view class="uni-list-box">
                           <uni-icons type="trash" size="22" style="position: absolute;right: 5%;"
                              @click="deleteList(item.orderNo)">
                           </uni-icons>
                           <view class="uni-content">
                              <view class="uni-title-sub uni-ellipsis-2">订单唯一编码:{{item.orderNo}}</view>
                           </view>
                           <view class="uni-content">
                              <view class="uni-title-sub uni-ellipsis-2">仓库:{{item.warehouseName}}</view>
                           </view>
                           <view class="uni-content">
                              <view class="uni-title-sub uni-ellipsis-2">物料编码:{{item.materialNo}}</view>
                           </view>
                           <uni-forms-item label="数量">
                              <uni-easyinput type="text" :focus="barcodefocus" @input="quantity"
                                 v-model="PalletCode2" placeholder="数量" ref='midInput' />
                           </uni-forms-item>
                        </view>
                     </template>
                  </uni-list-item>
               </uni-list> -->
            </uni-forms>
            <button @click="OutboundTask" type="primary" size="default" style="margin-top: 2%;">出库</button>
            <u-toast ref="OutboundTaskluToast" />
            <button @click="GroupPlate" type="primary" size="default" style="margin-top: 2%;">组盘</button>
         </view>
      </view>
      <view v-show="current === 2">
         <view style="padding: 5%;">
            <uni-forms label-width="120">
               <uni-forms-item label="托盘编码">
                  <uni-easyinput type="text" :focus="barcodefocus" @input="inputChange" v-model="PalletCode3"
                     placeholder="请输入托盘编码" ref='midInput' />
               </uni-forms-item>
            </uni-forms>
            <button @click="SolvePlate" type="primary" size="default" style="margin-top: 2%;">解盘</button>
         </view>
      </view>
      <u-toast ref="luToast" />
   </view>
   </view>
</template>
<script>
   import {
      config
   } from '../../common/config';
   const innerAudioContext = uni.createInnerAudioContext();
   export default {
      data() {
         return {
            focus: false,
            istrue: false,
            barcodefocus: false,
            range: [],
            EndAddress: "",
            StartAddress: "",
            Barcode: "",
            TargetAddress:"",
            PalletCode: "",
            group: [],
            AreaId: 0,
            quantity: "",
            SourceAddress: "",
            items: ['入库', '出库'],
            TargetAddress: "",
            PalletCode1: "",
            PalletCode2: "",
            PalletCode3: "",
            materSn: "",
            items: ['入库', '组盘', '解盘'],
            current: 0
         }
      },
      onLoad(res) {
         this.range = config.AreaId;
      },
      methods: {
         onClickItem(e) {
@@ -69,69 +139,147 @@
               this.current = e.currentIndex;
            }
         },
         voiceSpeech(src) {
            innerAudioContext.src = src; // '../../static/success.mp3';
            innerAudioContext.play();
         },
         InboundTask() {
            if (this.PalletCode.length <= 0 && this.Point.length) {
               this.$refs.InboundTaskluToast.show({
            if (this.PalletCode1.length <= 0 && this.SourceAddress.length) {
               this.$refs.luToast.show({
                  title: "托盘编码跟绑定货位不能为空",
                  type: "error"
               })
               return;
            }
            var param = {
               "PalletCode": this.PalletCode,
               "PalletCode": this.PalletCode1,
               "Position": this.SourceAddress,
               "TargetAddress":this.TargetAddress
               "TargetAddress": this.TargetAddress,
               "AreaId": this.AreaId,
            }
            console.log(param);
            this.$u.post('/api/Task/RequestTaskAsync', param).then(res => {
            this.$u.post('/api/Task/RequestInboundTaskAsync', param).then(res => {
               if (res.status) {
                  this.$refs.InboundTaskluToast.show({
                  this.$refs.luToast.show({
                     title: res.message,
                     type: "success"
                  })
                  this.PalletCode = "";
                  this.PalletCode1 = "";
                  this.SourceAddress = "";
                  this.TargetAddress="";
                  this.TargetAddress = "";
                  this.AreaId = "";
                  this.istrue = false;
               } else {
                  this.$refs.InboundTaskluToast.show({
                  this.$refs.luToast.show({
                     title: res.message,
                     type: "error"
                  })
               }
            })
         },
         OutboundTask() {
            if (this.EndAddress.length <= 0 && this.Barcode.length) {
               this.$refs.OutboundTaskluToast.show({
         GroupPlate() {
            if (this.PalletCode2.length <= 0 && this.InBoundOrder.length) {
               this.$refs.luToast.show({
                  title: "请输入起点站台",
                  type: "error"
               })
               return;
            }
            var param = {
               "PalletCode": this.Barcode,
               "Position": this.StartAddress,
               "TargetAddress":this.EndAddress
               "PalletCode": this.PalletCode2,
               "groups": this.group
            }
            this.$u.post('/api/Task/RequestOutTaskAsync', param).then(res => {
            this.$u.post('/api/BoxingInfo/AddGroupPlateAsync', param).then(res => {
               if (res.status) {
                  this.$refs.OutboundTaskluToast.show({
                  this.$refs.luToast.show({
                     title: res.message,
                     type: "success"
                  })
                  this.Barcode = "";
                  this.EndAddress = "";
                  this.StartAddress="";
                  this.PalletCode2 = "";
                  this.group = [];
                  this.barcodefocus = false;
               } else {
                  this.$refs.OutboundTaskluToast.show({
                  this.$refs.luToast.show({
                     title: res.message,
                     type: "error"
                  })
               }
            })
         },
         SolvePlate() {
            if (this.PalletCode3.length <= 0) {
               this.$refs.luToast.show({
                  title: "请输入托盘条码",
                  type: "error"
               })
               return;
            }
            var param = {
               "PalletCode": this.PalletCode3,
            }
            this.$u.post('/api/StockInfo/DeleteGroupPlateAsync', param).then(res => {
               if (res.status) {
                  this.$refs.luToast.show({
                     title: res.message,
                     type: "success"
                  })
                  this.PalletCode3 = "";
                  this.barcodefocus = false;
               } else {
                  this.$refs.luToast.show({
                     title: res.message,
                     type: "error"
                  })
               }
            })
         },
         updateFocus() {
            this.$nextTick(() => {
               this.materSn = '';
               if (!this.focus) {
                  this.focus = true;
               }
            });
         },
         snInput() {
            this.$nextTick(() => {
               var matObj = {
                  orderNo: this.materSn,
               }
               var temp = this.group.find(x => x.orderNo == matObj.orderNo);
               if (!temp) {
                  this.$u.post('/api/InboundOrder/GetInboundOrderInfo?orderNo=' + this.materSn, "").then(
                     res => {
                        if (res.status) {
                           this.group.push(res.data);
                           setTimeout(this.updateFocus, 200);
                           setTimeout(() => {
                              this.voiceSpeech('../../static/success.mp3');
                           }, 100);
                        } else {
                           this.$refs.luToast.show({
                              title: res.message,
                              type: "error"
                           })
                        }
                     })
               } else {
                  this.$refs.luToast.show({
                     title: "扫码重复",
                     type: "error"
                  })
                  setTimeout(this.updateFocus, 200);
                  setTimeout(() => {
                     this.voiceSpeech('../../static/fail.mp3');
                  }, 100);
               }
            })
         },
         removeScanItem(orderNo) {
            this.group = this.group.filter(item => item.orderNo !== orderNo);
         }
      }
   }
</script>