647556386
2025-10-18 d01658c63cd541fe4ea5cec5c4bd7f23b9408cdb
¼ª°²PDA/pages/stash/TakeStock.vue
@@ -1,437 +1,272 @@
<template>
   <view>
      <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
      </uni-segmented-control>
      <view class="content">
         <view v-if="current === 0" class="headerstyle">
            <view class="itemstyle">
               <uni-forms label-width="120">
                  <uni-forms-item label="托盘条码">
                     <uni-easyinput type="text" :focus="!istrue" v-model="barcode" placeholder="请扫描托盘条码"
                        ref='midInput' @confirm="inputChangebarcode()" />
                  </uni-forms-item>
                  <uni-forms-item label="实盘数量">
                     <uni-easyinput type="number" v-model="num" placeholder="请输入实盘数量" ref='midInput' />
                  </uni-forms-item>
                  <uni-forms-item>
                     <button @click="picking" type="primary" style="margin-left: 0px;">盘点完成</button>
                  </uni-forms-item>
               </uni-forms>
               <view class="uni-content" v-if="takeStockObj">
                  <view class="uni-title-sub uni-ellipsis-2">盘点单号:{{orderNo}}</view>
                  <view class="uni-note">物料编码:{{takeStockObj.materielCode}}</view>
                  <view class="uni-note">物料批次:{{takeStockObj.batchNo}}</view>
                  <view class="uni-note">物料名称:{{takeStockObj.materielName}}</view>
                  <view class="uni-note">物料规格:{{takeStockObj.materielSpec}}</view>
                  <view class="uni-note">账面数量:{{takeStockObj.sysQty}}</view>
               </view>
            </view>
         </view>
         <view v-if="current === 1" class="headerstyle">
            <view class="itemstyle">
               <uni-forms label-width="120">
                  <uni-forms-item label="托盘条码">
                     <uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode"
                        placeholder="请扫描托盘条码" ref='midInput' @confirm="inputChangebarcode3" />
                  </uni-forms-item>
                  <uni-forms-item label="地址条码">
                     <uni-easyinput type="text" v-model="address" :disabled="addressdisabled" placeholder="请扫描地址条码" ref='midInput'
                        :focus="addressFocus" />
                  </uni-forms-item>
                  <uni-forms-item>
                     <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">入库确认</button>
                  </uni-forms-item>
               </uni-forms>
            </view>
            <view>
               <uni-list>
                  <uni-list-item direction="column" v-if="inboundBarcode">
                     <template v-slot:body>
                        <view class="uni-list-box">
                           <view class="uni-content">
                              <view class="uni-title-sub uni-ellipsis-2">组盘总数量:{{Summmary}}</view>
                           </view>
                        </view>
                     </template>
                  </uni-list-item>
                  <uni-list-item direction="column" v-for="(item,index) in stockInfoDetail" :key="index">
                     <template v-slot:body>
                        <view class="uni-list-box">
                           <view class="uni-content">
                              <view class="uni-title-sub uni-ellipsis-2">物料编号:{{item.materielCode}}</view>
                              <view class="uni-note">物料名称:{{item.materielName}}</view>
                              <view class="uni-note">物料批次:{{item.batchNo}}</view>
                              <view class="uni-note">组盘数量:{{item.stockQuantity}}</view>
                              <view class="uni-note">生产日期:{{item.productionDate}}</view>
                              <view class="uni-note">有 æ•ˆ æœŸï¼š{{item.effectiveDate}}</view>
                           </view>
                        </view>
                     </template>
                  </uni-list-item>
               </uni-list>
            </view>
         </view>
      </view>
      <u-toast ref="uToast" />
   </view>
  <view>
    <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
    </uni-segmented-control>
    <view class="content">
      <view v-if="current === 0" class="headerstyle">
        <view class="itemstyle">
          <uni-forms label-width="120">
            <uni-forms-item label="托盘条码">
              <uni-easyinput type="text" :focus="!istrue" v-model="barcode" placeholder="请扫描托盘条码"
                ref='midInput' @confirm="inputChangebarcode" />
            </uni-forms-item>
            <uni-forms-item label="实盘数量">
              <uni-easyinput type="number" v-model="num" placeholder="请输入实盘数量" ref='midInput' />
            </uni-forms-item>
            <uni-forms-item>
              <button @click="picking" type="primary" style="margin-left: 0px;">盘点完成</button>
            </uni-forms-item>
          </uni-forms>
          <view class="uni-content" v-if="takeStockObj">
            <view class="uni-title-sub uni-ellipsis-2">盘点单号:{{orderNo}}</view>
            <view class="uni-note">物料编码:{{takeStockObj.materielCode}}</view>
            <view class="uni-note">物料批次:{{takeStockObj.batchNo}}</view>
            <view class="uni-note">物料名称:{{takeStockObj.materielName}}</view>
            <view class="uni-note">物料规格:{{takeStockObj.materielSpec}}</view>
            <view class="uni-note">账面数量:{{takeStockObj.sysQty}}</view>
          </view>
        </view>
      </view>
      <view v-if="current === 1" class="headerstyle">
        <view class="itemstyle">
          <uni-forms label-width="120">
            <uni-forms-item label="托盘条码">
              <uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode"
                placeholder="请扫描托盘条码" ref='midInput' @confirm="inputChangebarcode3" />
            </uni-forms-item>
            <uni-forms-item label="地址条码">
              <uni-easyinput type="text" v-model="address" :disabled="addressdisabled" placeholder="请扫描地址条码" ref='midInput'
                :focus="addressFocus" />
            </uni-forms-item>
            <uni-forms-item>
              <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">入库确认</button>
            </uni-forms-item>
          </uni-forms>
        </view>
        <view>
          <uni-list>
            <uni-list-item direction="column" v-if="inboundBarcode">
              <template v-slot:body>
                <view class="uni-list-box">
                  <view class="uni-content">
                    <view class="uni-title-sub uni-ellipsis-2">组盘总数量:{{Summmary}}</view>
                  </view>
                </view>
              </template>
            </uni-list-item>
            <uni-list-item direction="column" v-for="(item,index) in stockInfoDetail" :key="index">
              <template v-slot:body>
                <view class="uni-list-box">
                  <view class="uni-content">
                    <view class="uni-title-sub uni-ellipsis-2">物料编号:{{item.materielCode}}</view>
                    <view class="uni-note">物料名称:{{item.materielName}}</view>
                    <view class="uni-note">物料批次:{{item.batchNo}}</view>
                    <view class="uni-note">组盘数量:{{item.stockQuantity}}</view>
                    <view class="uni-note">生产日期:{{item.productionDate}}</view>
                    <view class="uni-note">有 æ•ˆ æœŸï¼š{{item.effectiveDate}}</view>
                  </view>
                </view>
              </template>
            </uni-list-item>
          </uni-list>
        </view>
      </view>
    </view>
    <u-toast ref="uToast" />
  </view>
</template>
<script>
   // const SixUniTts = uni.requireNativePlugin("SmallSix-SixUniTts")
   export default {
      data() {
         return {
            items: ['盘点',  '入库'],//'拣选组盘',
            current: 0,
            isPicking: false,
            istrue: false,
            barcode: '',
            materialsns: "",
            boxBarcodes: [],
            sns: [],
            barcodefocus: true,
            totalNum: 0,
            pickNum: 0,
            num: null,
            orderTotalNum: 0,
            orderPickNum: 0,
            orderNo: "",
            matTotal: [],
            istrue2: false,
            barcode2: '',
            Summmary:0,
            innerboxcode: "",
            takeStockObj:null,
            sns2: [],
            barcodefocus: true,
            addressFocus: false,
            inboundBarcode: "",
            address: "",
            addressdisabled: false,
            warehouseId:"",
            stockInfoDetail:[]
         }
      },
      onLoad(res) {
         this.barcodefocus = false;
         this.istrue = false;
         this.warehouseId = res.warehouseId;
         this.orderNo=res.orderNo;
         if (this.warehouseId == 3) { //板料仓库区ID
            this.address = "1011";
            this.addressdisabled = true;
         }
      },
      methods: {
         onClickItem(e) {
            this.focus = false;
            this.addressFocus = false;
            if (this.current !== e.currentIndex) {
               this.current = e.currentIndex;
            }
         },
         inbound() {
            var postData = {
               MainData: {
                  "barcode": this.inboundBarcode,
                  "startPoint": this.address,
                  "warehouseId": this.warehouseId
               }
            }
            this.$u.post('/api/Task/RequestInboundTask', postData).then(res => {
               if (res.status) {
                  this.inboundBarcode = "";
                  if (this.warehouseId !== 3) //板料仓库区ID
                  {
                     this.address = "";
                  }
                  this.Summmary=0;
                  this.stockInfoDetail=[];
                  this.$refs.uToast.show({
                     title: "成功",
                     type: "success"
                  })
               } else {
                  this.$refs.uToast.show({
                     title: res.message,
                     type: "error"
                  })
               }
            }).catch(err => {
               this.$refs.uToast.show({
                  title: err.message,
                  type: "error"
               })
            })
         },
         inputChangebarcode3() {
            this.addressFocus = false;
            this.$nextTick(function(x) {
               if (this.inboundBarcode != '') {
                  this.addressFocus = true;
               }
            })
            this.$nextTick(function(x) {
                           if (this.inboundBarcode != '') {
                              var postData = {
                                 MainData: {
                                    "barcode": this.inboundBarcode,
                                    "warehouseId": this.warehouseId,
                                 }
                              };
                              this.$u.post('/api/StockInfo/StockQueryData', postData).then(res => {
                                 // this.stockInfo = [];
                                 this.stockInfoDetail = [];
                                 this.Summmary=0;
                                 if (res.status) {
                                    // this.stockInfo = res.data,
                                    this.stockInfoDetail = res.data.details
                                    //获取总数量
                                    this.stockInfoDetail.forEach(item => {
                                       this.Summmary += item.stockQuantity;
                                    });
                                 } else {
                                    this.$refs.uToast.show({
                                       // title: "未找到托盘信息",
                                       title: res.message,
                                       type: "error"
                                    })
                                 }
                              })
                           }
                        })
         },
         picking() {
            if (this.barcode == "") {
               this.$refs.uToast.show({
                  title: "请扫描托盘条码",
                  type: "error"
               })
               return;
            }
            if(this.num==null || this.num==undefined){
               this.$refs.uToast.show({
                  title: "盘点数量不能为空(可填0—有效数字值)",
                  type: "error"
               })
               return;
            }
            if(this.takeStockObj==null){
               this.$refs.uToast.show({
                  title: "盘点信息为空",
                  type: "error"
               })
               return;
            }
            var params = {
               MainData: {
                  "num": this.num,
                  "id": this.takeStockObj.id
               }
            }
            this.$u.post('/api/TakeStockOrder/MatPicking', params).then(res => {
               if (res.status) {
                  this.barcode="";
                  this.takeStockObj=null;
                  this.num=null;
                  this.$refs.uToast.show({
                     title: "盘点成功",
                     type: "success"
                  })
               } else {
                  this.$refs.uToast.show({
                     title: res.message,
                     type: "error"
                  })
               }
            })
         },
         inputChange(e) {
            this.$nextTick(() => {
               this.istrue = false;
               var matInfo = this.materialsns.split('|');
               if (matInfo.length == 7) {
                  var matObj = {
                     matCode: matInfo[1],
                     matProductionDate: matInfo[3],
                     matQty: matInfo[5],
                     orderNo: matInfo[6],
                     sn: this.materialsns,
                     isPicking: this.isPicking
                  }
                  var temp = this.boxBarcodes.find(x => x.orderNo == matObj.orderNo);
                  if (!temp) {
                     var tmp = this.matTotal.find(x => x.matCode == matObj.matCode);
                     if (!tmp) {
                        this.matTotal.push({
                           matCode: matObj.matCode,
                           matQuantity: parseInt(matObj.matQty)
                        })
                     } else {
                        tmp.matQuantity += parseInt(matObj.matQty);
                     }
                     this.sns.push({
                        innerboxcode: this.materialsns,
                        isSplit: this.isPicking
                     });
                     this.boxBarcodes.push(matObj);
                     this.isPicking = false;
                     setTimeout(this.updateFocus, 100);
                  } else {
                     this.$refs.uToast.show({
                        title: "扫码重复",
                        type: "error"
                     })
                     setTimeout(this.updateFocus, 100);
                  }
               } else {
                  this.$refs.uToast.show({
                     title: "扫码错误,请扫描正确内箱码",
                     type: "error"
                  })
                  setTimeout(this.updateFocus, 100);
               }
            })
         },
         checkedClick() {
            this.isPicking = !this.isPicking;
            this.istrue = false;
            this.$nextTick(function(x) {
               if (this.barcode != '') {
                  this.istrue = true;
               }
            })
         },
         updateFocus() {
            this.materialsns = '';
            if (!this.istrue) {
               this.istrue = true;
            }
         },
         inputChangebarcode() {
            this.istrue = false;
            this.$nextTick(function(x) {
               if (this.barcode != '') {
                  var postData = {
                     MainData: {
                        "orderNo": this.orderNo,
                        "takePalletCode": this.barcode
                     }
                  };
                  this.$u.post('/api/TakeStockOrder/GetTakeDetailInfo', postData).then(res => {
                     if (res.status) {
                        this.takeStockObj=null;
                        this.takeStockObj= res.data;
                     } else {
                        this.barcode="";
                        this.$refs.uToast.show({
                           title: res.message,
                           type: "error"
                        })
                     }
                  })
                  this.istrue = true;
               }
            })
         },
         deleteList(res) {
            this.matTotal.map((item, index) => {
               var temp = this.boxBarcodes.find(x => x.sn == res);
               if (temp) {
                  if (item.matCode == temp.matCode) {
                     if (item.matQuantity - temp.matQty == 0) {
                        this.matTotal.splice(index, 1);
                     } else {
                        item.matQuantity -= temp.matQty;
                     }
                  }
               }
            })
            this.sns.map((item, index) => {
               if (item.innerboxcode == res) {
                  this.sns.splice(index, 1);
               }
            })
            this.boxBarcodes.map((item, index) => {
               if (item.sn == res) {
                  this.boxBarcodes.splice(index, 1);
               }
            })
         },
         submit() {
            if (this.barcode2 == "") {
               this.$refs.uToast.show({
                  title: "请扫描托盘条码",
                  type: "error"
               })
               return;
            }
            if (this.innerboxcode == "") {
               this.$refs.uToast.show({
                  title: "请扫描内箱标签",
                  type: "error"
               })
               return;
            }
            this.$u.post('/api/StockOperate/PickingBoxing', {
               MainData: {
                  "barcode": this.barcode2,
                  "innerboxcode": this.innerboxcode
               },
               DelKeys: this.sns2
            }).then(res => {
               if (res.status) {
                  uni.$showMsg('组盘成功!')
                  this.barcode2 = "";
                  this.innerboxcode = "";
               } else {
                  this.$refs.uToast.show({
                     title: res.message,
                     type: "error"
                  })
               }
            }).catch(err => {
               this.$refs.uToast.show({
                  title: err.message,
                  type: "error"
               })
            })
         },
         inputChange2(e) {
         },
         inputChangebarcode2() {
            this.istrue2 = false;
            this.$nextTick(function(x) {
               if (this.barcode2 != '') {
                  this.istrue2 = true;
               }
            })
         },
      }
   }
export default {
  data() {
    return {
      items: ['盘点'],
      current: 0,
      istrue: false,
      barcode: '',
      num: null,
      orderNo: "",
      takeStockObj: null,
      addressFocus: false,
      inboundBarcode: "",
      address: "",
      addressdisabled: false,
      warehouseId: "",
      Summmary: 0,
      stockInfoDetail: []
    }
  },
  onLoad(res) {
    this.warehouseId = res.warehouseId;
    this.orderNo = res.orderNo;
    if (this.warehouseId == 3) {
      this.address = "1011";
      this.addressdisabled = true;
    }
  },
  methods: {
    onClickItem(e) {
      this.focus = false;
      this.addressFocus = false;
      if (this.current !== e.currentIndex) {
        this.current = e.currentIndex;
      }
    },
    inbound() {
      var postData = {
        MainData: {
          "barcode": this.inboundBarcode,
          "startPoint": this.address,
          "warehouseId": this.warehouseId
        }
      }
      this.$u.post('/api/Task/RequestInboundTask', postData).then(res => {
        if (res.status) {
          this.inboundBarcode = "";
          if (this.warehouseId !== 3) {
            this.address = "";
          }
          this.Summmary = 0;
          this.stockInfoDetail = [];
          this.$refs.uToast.show({
            title: "成功",
            type: "success"
          })
        } else {
          this.$refs.uToast.show({
            title: res.message,
            type: "error"
          })
        }
      }).catch(err => {
        this.$refs.uToast.show({
          title: err.message,
          type: "error"
        })
      })
    },
    inputChangebarcode3() {
      this.addressFocus = false;
      setTimeout(() => {
        if (this.inboundBarcode) {
          this.addressFocus = true;
          var postData = {
            MainData: {
              "barcode": this.inboundBarcode,
              "warehouseId": this.warehouseId,
            }
          };
          this.$u.post('/api/StockInfo/StockQueryData', postData).then(res => {
            this.stockInfoDetail = [];
            this.Summmary = 0;
            if (res.status) {
              this.stockInfoDetail = res.data.details
              this.stockInfoDetail.forEach(item => {
                this.Summmary += item.stockQuantity;
              });
            } else {
              this.$refs.uToast.show({
                title: res.message,
                type: "error"
              })
            }
          })
        }
      }, 1000);
    },
    picking() {
      if (!this.barcode) {
        this.$refs.uToast.show({
          title: "请扫描托盘条码",
          type: "error"
        })
        return;
      }
      if (this.num == null || this.num == undefined) {
        this.$refs.uToast.show({
          title: "盘点数量不能为空(可填0—有效数字值)",
          type: "error"
        })
        return;
      }
      if (!this.takeStockObj) {
        this.$refs.uToast.show({
          title: "盘点信息为空",
          type: "error"
        })
        return;
      }
      var params = {
        MainData: {
          "num": this.num,
          "id": this.takeStockObj.id
        }
      }
      this.$u.post('/api/TakeStockOrder/MatPicking', params).then(res => {
        if (res.status) {
          this.barcode = "";
          this.takeStockObj = null;
          this.num = null;
          this.$refs.uToast.show({
            title: "盘点成功",
            type: "success"
          })
        } else {
          this.$refs.uToast.show({
            title: res.message,
            type: "error"
          })
        }
      })
    },
    inputChangebarcode() {
      this.istrue = false;
      setTimeout(() => {
        if (this.barcode) {
          this.istrue = true;
          var postData = {
            MainData: {
              "orderNo": this.orderNo,
              "takePalletCode": this.barcode
            }
          };
          this.$u.post('/api/TakeStockOrder/GetTakeDetailInfo', postData).then(res => {
            if (res.status) {
              this.takeStockObj = res.data;
            } else {
              this.barcode = "";
              this.$refs.uToast.show({
                title: res.message,
                type: "error"
              })
            }
          })
        }
      }, 1000);
    }
  }
}
</script>
<style lang="scss">
   @import '@/common/uni-ui.scss';
@import '@/common/uni-ui.scss';
   .content {
      display: flex;
      height: 150px;
   }
.content {
  display: flex;
  height: 150px;
}
   .content-text {
      font-size: 14px;
      color: #666;
   }
.content-text {
  font-size: 14px;
  color: #666;
}
   .itemstyle {
      margin-top: 20px;
      margin-left: 5%;
   }
.itemstyle {
  margin-top: 20px;
  margin-left: 5%;
}
   .headerstyle {
      width: 90%;
   }
.headerstyle {
  width: 90%;
}
</style>