1
yangpeixing
2026-03-12 9181f3dce9e6f617b34fa80b7bb72bb490be788b
¼ª°²PDA/pages/stash/CPinboundorder.vue
@@ -5,58 +5,58 @@
            <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
         </view>
      </u-sticky>
      <!-- å°†é¡µé¢å†…容包装在 scroll-view ä¸­ -->
      <scroll-view
         scroll-y
         :style="{height: 'calc(100vh - 100px)'}"
         @scrolltolower="onReachBottom"
         ref="scrollView"
      >
         <uni-list :border="true">
            <uni-list-item direction="column" clickable @click="groupClick(item.orderNo)" link :to="page+item.orderNo"
               v-for="item in allReceivingOrders" :key="item.orderNo">
               <template v-slot:body>
                  <uni-group margin-top="20">
      <uni-list :border="true">
         <uni-list-item direction="column" clickable @click="groupClick(item.orderNo)" link :to="page+item.orderNo"
            v-for="item in allReceivingOrders" :key="item.orderNo">
            <template v-slot:body>
               <uni-group margin-top="20">
                  <view
                     style="line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                     å…¥åº“单号&nbsp;&nbsp;{{item.orderNo}}
                  </view>
                  <view
                     style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                     åˆ›å»ºäººå‘˜&nbsp;&nbsp;{{item.creater}}
                  </view>
                  <view
                     style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                     åˆ›å»ºæ—¥æœŸ&nbsp;&nbsp;{{item.createDate}}
                  </view>
                  <view  style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: left;">
                     ç‰©æ–™æ–™å·ï¼š&nbsp;&nbsp;
                     <view class="container">
                        <view v-for="(materielCode, index) in getUniqueMaterielCodes(item.details)" :key="index">
                           {{materielCode}}
                           <u-line color="blue" v-if="index < getUniqueMaterielCodes(item.details).length - 1" />
                        </view>
                     </view>
                  </view>
                  <view style="margin-top: 10rpx;display: flex;align-items: center; ">
                     <view
                        style="line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                        å…¥åº“单号&nbsp;&nbsp;{{item.orderNo}}
                        style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 238rpx;height: 40rpx;font-size: 22rpx;background-color:rgba(22,127,247,0.18);color: #1F63FF;">
                        è®¢å•状态&nbsp;&nbsp;{{item.InboundOrderStatus}}
                     </view>
                     <view
                        style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                        åˆ›å»ºäººå‘˜&nbsp;&nbsp;{{item.creater}}
                        style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                        æ€»é‡&nbsp;&nbsp;{{item.SumQty}}
                     </view>
                     <view
                        style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
                        åˆ›å»ºæ—¥æœŸ&nbsp;&nbsp;{{item.createDate}}
                        style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                        å·²ç»„盘&nbsp;&nbsp;{{item.RecQty}}
                     </view>
                     <view style="margin-top: 10rpx;display: flex;align-items: center; ">
                        <view
                           style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 238rpx;height: 40rpx;font-size: 22rpx;background-color:rgba(22,127,247,0.18);color: #1F63FF;">
                           è®¢å•状态&nbsp;&nbsp;{{item.InboundOrderStatus}}
                        </view>
                        <view
                           style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                           æ€»é‡&nbsp;&nbsp;{{item.SumQty}}
                        </view>
                        <view
                           style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                           å·²ç»„盘&nbsp;&nbsp;{{item.RecQty}}
                        </view>
                        <view
                           style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                           å·²å…¥&nbsp;&nbsp;{{item.OverQty}}
                        </view>
                     <view
                        style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
                        å·²å…¥&nbsp;&nbsp;{{item.OverQty}}
                     </view>
                  </uni-group>
               </template>
            </uni-list-item>
                  </view>
               </uni-group>
            </template>
         </uni-list-item>
         </uni-list>
         <uni-load-more :status="status" v-if="loadVisible"></uni-load-more>
      </uni-list>
      <uni-load-more :status="status" v-if="loadVisible"></uni-load-more>
         <u-back-top :scroll-top="scrollTop" top="400"></u-back-top>
      </scroll-view>
      <u-back-top :scroll-top="scrollTop" top="400"></u-back-top>
   </view>
</template>
@@ -75,9 +75,7 @@
            pageNo: 1,
            scrollTop: 0,
            warehouseId: "",
            isLoaded: false,
            // æ·»åŠ ä¸€ä¸ªå˜é‡è®°å½•æ˜¯å¦æ­£åœ¨åŠ è½½
            isLoadingMore: false
            isLoaded: false
         }
      },
      onLoad(res) {
@@ -85,7 +83,11 @@
         this.page = this.page + "warehouseId=" + this.warehouseId + "&orderNo=";
         this.getData();
      },
      // ç§»é™¤åŽŸæ¥çš„ onReachBottom,使用 scroll-view çš„ @scrolltolower
      onReachBottom() {
         this.pageNo += 1;
         this.getData();
         this.isLoaded = true;
      },
      onShow() {
         if (this.isLoaded) {
            // ä»Žå…¶ä»–页面返回时刷新
@@ -96,21 +98,19 @@
         this.scrollTop = e.scrollTop;
      },
      methods: {
         // ç‰©æ–™æ–™å·åŽ»é‡ï¼ˆä¿ç•™åŽŸæœ‰åŠŸèƒ½ï¼‰
         getUniqueMaterielCodes(details) {
            if (!details || !Array.isArray(details)) return [];
            const uniqueCodes = [...new Set(details.map(item => item.materielCode))];
            return uniqueCodes;
         },
         search(res) {
            this.getData();
         },
         groupClick() {
         },
         // scroll-view æ»šåŠ¨åˆ°åº•éƒ¨æ—¶è§¦å‘
         onReachBottom() {
            if (this.isLoadingMore || this.status === 'noMore') return;
            this.isLoadingMore = true;
            this.pageNo += 1;
            this.status = "loading";
            this.getData();
         },
         getData() {
            var postData = {
@@ -123,48 +123,48 @@
            this.$u.post('/api/InboundOrder/GetInboundOrders', postData).then((res) => {
               if (res.status) {
                  if (res.data.length > 0) {
                     const newData = res.data.map(i => ({
                        ...i,
                        InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
                           .orderStatus).label,
                        SumQty: i.details.map(item => item.orderQuantity).reduce((prev,
                           next) => prev + next, 0),
                        OverQty: i.details.map(item => item.overInQuantity).reduce((prev,
                           next) => prev + next, 0),
                        RecQty: i.details.map(item => item.receiptQuantity).reduce((prev,
                           next) => prev + next, 0)
                     }));
                     if (this.searchValue == '') {
                        // è¿½åŠ æ•°æ®è€Œä¸æ˜¯æ›¿æ¢
                        this.allReceivingOrders = [...this.allReceivingOrders, ...newData];
                        this.allReceivingOrders = res.data.map(i => ({
                           ...i,
                           InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
                              .orderStatus).label,
                           SumQty: i.details.map(item => item.orderQuantity).reduce((prev,
                              next) => prev + next, 0),
                           OverQty: i.details.map(item => item.overInQuantity).reduce((prev,
                              next) => prev + next, 0),
                           RecQty: i.details.map(item => item.receiptQuantity).reduce((prev,
                              next) => prev + next, 0)
                        }));
                        // this.allReceivingOrders = res.data;
                        if (this.allReceivingOrders.length > 3) {
                           this.loadVisible = true;
                        } else {
                           this.loadVisible = false;
                        }
                     } else {
                        // æœç´¢æ—¶æ›¿æ¢æ•°æ®
                        this.allReceivingOrders = newData;
                        this.allReceivingOrders = res.data.map(i => ({
                           ...i,
                           InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
                              .orderStatus).label,
                           SumQty: i.details.map(item => item.orderQuantity).reduce((prev,
                              next) => prev + next, 0),
                           OverQty: i.details.map(item => item.overInQuantity).reduce((prev,
                              next) => prev + next, 0),
                           RecQty: i.details.map(item => item.receiptQuantity).reduce((prev,
                              next) => prev + next, 0)
                        }));
                        if (this.allReceivingOrders.length > 3) {
                           this.loadVisible = true;
                        } else {
                           this.loadVisible = false;
                        }
                     }
                     // å¦‚果没有更多数据
                     if (res.data.length < 10) { // å‡è®¾æ¯é¡µ10条数据
                        this.status = 'noMore';
                     } else {
                        this.status = 'more';
                     }
                  } else {
                     this.status = 'noMore';
                     //this.allReceivingOrders = [];
                     this.loadVisible = true;
                  }
               }
               this.isLoadingMore = false;
            })
         }
      }
@@ -180,12 +180,7 @@
      box-sizing: border-box;
      background-color: #efeff4;
      min-height: 100%;
      height: 100vh;
   }
   /* ç¡®ä¿ scroll-view å æ®æ•´ä¸ªé¡µé¢ç©ºé—´ */
   scroll-view {
      height: calc(100vh - 100px);
      height: auto;
   }
   .tips {
@@ -254,4 +249,16 @@
   .footer {
      padding-top: 50%;
   }
</style>
<style scoped>
/* ä¼˜åŒ–:物料料号换行显示,防止横向溢出 */
.container {
   display: flex;
   flex-wrap: wrap;
   gap: 10rpx;
}
.container view {
   white-space: nowrap;
}
</style>