skyouc
2025-11-13 3a770819f22efdc0ecb0ba57de0ac64f08421c55
pages/listing/matnrPalletising.vue
@@ -1,31 +1,32 @@
<template>
   <view class="has-foot">
      <view>
      <form>
         <view class="cu-form-group margin-top">
            <view class="title">容器号</view>
            <input placeholder="请扫描容器号" v-model="container" focus></input>
            <text class='cuIcon-search text-blue' @click="getList"></text>
         </view>
         <view class="cu-form-group">
            <view class="title">物料编码</view>
            <input placeholder="请扫描物料编码" v-model="matnrCode"></input>
            <text class='cuIcon-search text-blue' @click="search"></text>
         <form>
            <view class="cu-form-group margin-top">
               <view class="title">容器号</view>
               <input placeholder="请扫描容器号" v-model="container" focus></input>
               <text class='cuIcon-search text-blue' @click="getList"></text>
            </view>
            <view class="cu-form-group">
               <view class="title">物料编码</view>
               <input placeholder="请扫描物料编码" v-model="matnrCode"></input>
               <text class='cuIcon-search text-blue' @click="search"></text>
            </view>
            <view class="cu-form-group">
               <view class="title">票号</view>
               <input placeholder="请扫描现品票号" v-model="fieldsIndex"></input>
               <text class='cuIcon-search text-blue' @click="search"></text>
            </view>
            <view class="cu-form-group">
               <view class="title">ASN单号</view>
               <input placeholder="请输入ASN单号" v-model="asnCode"></input>
            </view>
         </form>
         <view class="flex solid-bottom padding-sm justify-between">
            <view class="text-blue">物料总类:{{list.length}}</view>
            <view class="text-blue">组盘总数:{{allCount}}</view>
         </view>
         <view class="cu-form-group">
            <view class="title">ASN单号</view>
            <input placeholder="请输入ASN单号" v-model="asnCode"></input>
         </view>
      </form>
      <view class="flex solid-bottom padding-sm justify-between">
         <view class="text-blue">物料总类:{{list.length}}</view>
         <view class="text-blue">组盘总数:{{allCount}}</view>
      </view>
      </view>
      <view class="padding-lr margin-top-sm">
         <block v-for="(item, index) in list" :key="index">
            <view class="cu-list det menu sm-border margin-bottom-sm " :class="[item.trackCode===barcode&&'act']"
@@ -36,7 +37,7 @@
                        {{index+1}}
                     </view>
                     <view class="text-blue">
                        编码:
                        编码:
                        {{`${item.matnrCode}`}}
                     </view>
                  </view>
@@ -46,7 +47,13 @@
               </view>
               <view class="cu-item">
                  <view class="content">
                     <text class="text-black">ASN:</text>
                     <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">单号:</text>
                  </view>
                  <view class="action">
                     <text class="text-grey ">{{item.asnCode}}</text>
@@ -54,15 +61,7 @@
               </view>
               <view class="cu-item">
                  <view class="content">
                     <text class="text-black">物料条码:</text>
                  </view>
                  <view class="action">
                     <text class="text-grey ">{{item.trackCode}}</text>
                  </view>
               </view>
               <view class="cu-item">
                  <view class="content">
                     <text class="text-black">供应商批次:</text>
                     <text class="text-black">供应商批次:</text>
                  </view>
                  <view class="action">
                     <text class="text-grey ">{{item.splrBatch}}</text>
@@ -70,10 +69,7 @@
               </view>
               <view class="cu-item">
                  <view class="content">
                     <text class="text-black">库存批次:</text>
                  </view>
                  <view class="action">
                     <text class="text-grey ">{{item.batch}}</text>
                     <text class="text-black">票号:<text class="text-grey ">{{item.crushNo}}</text></text>
                  </view>
               </view>
               <!-- <view class="cu-item">
@@ -87,31 +83,30 @@
               <view class="cu-item">
                  <view class="content">
                     <text class="text-black">库存单位: <text class="text-grey ">{{item.stockUnit}}</text></text>
                     <text class="text-black">库存单位: <text class="text-grey ">{{item.stockUnit}}</text></text>
                  </view>
                  <view class="content">
                     <text class="text-black">收货数量: <text class="text-grey ">{{item.anfme}}</text></text>
                     <text class="text-black">收货数量: <text class="text-grey ">{{item.anfme}}</text></text>
                  </view>
                  <view class="content">
                     <text class="text-black">已上架数量: <text
                     <text class="text-black">已上架数量: <text
                           class="text-grey ">{{item.workQty + item.qty}}</text></text>
                  </view>
               </view>
               <view class="cu-item">
                  <view class="content">
                     <text class="text-black">可组盘数量: <text
                           class="text-grey ">{{item.anfme - item.workQty}}</text></text>
                     <text class="text-black">可组盘数量:<text
                           class="text-grey ">{{item.anfme - item.workQty - item.qty}}</text></text>
                  </view>
               </view>
               <view class="cu-item">
               <view class="cu-item">
                  <view class="content">
                     <view class="cu-form-group padding-lr-0">
                        <view class="title text-blue"><text
                              class="text-red text-xl vertical-middle">*</text>组盘数量:
                              class="text-red text-xl vertical-middle">*</text>组盘数量:
                        </view>
                        <uni-number-box style="width: 70%;" :max="max" v-model="item.receiptQty"
                           :step='1'></uni-number-box>
                        <uni-number-box style="width: 70%;" :min="0" :max="max" :decimal="2" :step="0.01"
                           v-model="item.receiptQty"></uni-number-box>
                     </view>
                  </view>
               </view>
@@ -145,65 +140,54 @@
            range: [],
            asnCode: '',
            repeatClick: false,
            isconfirm: false,
            matnrCode:'',
            fieldsIndex: null,
            isconfirm: false,
            matnrCode: '',
            max: 99999999,
         }
      },
      computed: {
         ...mapState('user', ['dynamicFields']),
         allCount() {
            return this.list.reduce((acc, row) => +row.anfme + acc, 0) || 0
            return this.list.reduce((acc, row) => + (row.anfme + acc).toFixed(2), 0) || 0
         }
      },
      mounted() {},
      methods: {
      methods: {
         async search() {
            const find = this.list.find(el => el.trackCode === this.barcode);
            find ? this.scrollTo() : this.getDet();
         },
         async getDet() {
         getDet() {
            let that = this;
            const {
               code,
               data,
               msg
            } = await request('/asnOrderItem/trackCode', {
            let param = {
               matnrCode: that.matnrCode.trim(),
               asnCode: that.asnCode.trim(),
               fieldsIndex: that.fieldsIndex.trim()
            }
            that.getDetl(param);
         },
         async getDetl(req) {
            let that = this;
            // uni.showLoading({
            //    title: '加载中...'
            // })
            const { code, data, msg } = await request('/asnOrderItem/trackCode', {
               matnrCode: that.matnrCode,
               asnCode: that.asnCode
               asnCode: that.asnCode,
               code: that.asnCode,
               fieldsIndex: that.fieldsIndex,
               batch: req.batch
            }, "post")
            if (code === 200) {
               data.map(item => {
                  item.receiptQty = 0;
                  item.selected = false;
               })
               // for (var i = 0; i < data.length; i++) {
               //    data[i].receiptQty =1;
               //    data[i].selected = false;
               // }
               if(data !== [] || data !== null){
               uni.navigateTo({
                     url: "../listing/itemSelect",
                     success: function(res) {
                        // 通过eventChannel向被打开页面传送数据   向另外一个页面传递值的
                        res.eventChannel.emit('data', {
                           item: data
                        })
                     },
                     events: {
                        // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据  另外一个页面传过来的
                        backData: function(data) {
                           that.showBackData(data.data)
                        },
                     },
                  });
               for (var i = 0; i < data.length; i++) {
                  data[i].receiptQty = data[i].anfme - data[i].workQty;
                  data[i].crushNo = that.fieldsIndex;
                  data[i].selected = true;
               }
               // this.list = data
               that.fieldsIndex = null;
               that.showBackData(data)
            } else {
               uni.showToast({
                  title: msg,
@@ -211,17 +195,27 @@
                  position: 'top'
               })
            }
            // uni.hideLoading();
         },
         async getList() {
            const {
               code,
               data,
               msg
            } = await request('/asnOrderItem/container', {
            if (this.container === '' || this.container === null) {
               uni.showToast({
                  title: "容器码为空",
                  icon: "none",
                  position: 'top'
               })
               return;
            }
            const {   code, data,   msg   } = await request('/asnOrderItem/container', {
               barcode: this.container
            })
            if (code === 200) {
               this.list = data
               uni.showToast({
                  title: msg,
                  icon: "success",
                  position: 'top'
               })
            } else {
               uni.showToast({
                  title: msg,
@@ -230,12 +224,33 @@
               })
            }
         },
         showBackData(data){
            this.list = data.map(item => {
               return {
                  ...item
               };
            });
         showBackData(data) {
            let status;
            data.map(item => {
               this.list.push(item)
            })
            let oldLength = this.list.length
            this.list = this.list.filter((item, index, self) =>
               self.findIndex(i => (
                  i.id === item.id // 根据id去重
               )) === index && item.isptResult === self[0].isptResult
            );
            let newLength = this.list.length
            if (oldLength > newLength) {
               this.showMsg("新明细被过滤,请检查状态")
            }
         },
         showMsg(msg) {
            setTimeout(function() {
               uni.showToast({
                  icon: "none",
                  position: 'top',
                  title: msg,
                  duration: 2000,
               })
            }, 200);
         },
         scrollTo() {
            const ref = this.$refs[`${this.barcode}ref`][0];
@@ -265,12 +280,28 @@
            this.isconfirm = false
         },
         async confirm() {
            if (this.container === '' || this.container === null) {
               uni.showToast({
                  title: "容器码为空",
                  icon: "none",
                  position: 'top'
               })
               return;
            }
            if (this.list.length === 0 || this.list === null) {
               uni.showToast({
                  title: "未添加明细",
                  icon: "none",
                  position: 'top'
               })
               return;
            }
            this.repeatClick = true
            const newArr = this.list.map(item => {
               return {
                  ...item,
                  anfme: item.anfme === null ? 0 : +item.anfme,
                  anfme: item.anfme === null ? 0 : +item.anfme,
               };
            });
@@ -280,7 +311,7 @@
               msg
            } = await request('/waitPakin/merge', {
               items: newArr,
               barcode: this.container,
               barcode: this.container,
            })
            if (code === 200) {
               uni.showToast({