н¨Îļþ¼Ð/PDA/pages/stash/inboundorder.vue
@@ -1,237 +1,305 @@
<template>
   <view>
      <u-sticky>
         <view style="background-color: #ffffff;">
            <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
         </view>
      </u-sticky>
      <uni-list :border="true">
         <uni-list-item direction="column" clickable @click="groupClick(item.order_no)" link :to="page+item.order_no"
            v-for="item in allReceivingOrders" :key="item.order_no">
            <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.order_no}}
                  </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.supplier_name}}
                  </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;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.odrderStatus}}
                     </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.OverQty}}
                     </view>
                  </view>
               </uni-group>
            </template>
         </uni-list-item>
  <view>
    <u-sticky>
      <view style="background-color: #ffffff">
        <uni-search-bar
          @confirm="search"
          v-model="searchValue"
        ></uni-search-bar>
      </view>
    </u-sticky>
    <uni-list :border="true">
      <uni-list-item
        direction="column"
        clickable
        @click="groupClick(item.order_no)"
        link
        :to="page + item.order_no"
        v-for="item in allReceivingOrders"
        :key="item.order_no"
      >
        <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.order_no }}
            </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.supplier_name }}
            </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; 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.odrderStatus }}
              </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.OverQty }}
              </view>
            </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>
   </view>
    <u-back-top :scroll-top="scrollTop" top="400"></u-back-top>
  </view>
</template>
<script>
   import {
      InboundOrderStatus
   } from '../../common/config.js'
   export default {
      data() {
         return {
            page: "/pages/stash/inboundorderDetail?",
            loadVisible: false,
            searchValue: "",
            status: "more",
            allReceivingOrders: [],
            pageNo: 1,
            scrollTop: 0,
            warehouseId: "",
            isLoaded: false
         }
      },
      onLoad(res) {
         this.warehouseId = res.warehouseId;
         this.page = this.page + "warehouseId=" + this.warehouseId + "&orderNo=";
         this.getData();
      },
      onReachBottom() {
         if (this.status === 'more') {
            this.pageNo += 1;
         this.getData();
         this.isLoaded = true;
         }
      },
      onShow() {
         this.isLoaded = uni.getStorageSync('isLoaded');
         if (this.isLoaded) {
            uni.removeStorageSync('isLoaded');
            this.pageNo = 1;
            this.allReceivingOrders = [];
            // ä»Žå…¶ä»–页面返回时刷新
            this.getData();
         }
      },
      onPageScroll(e) {
         this.scrollTop = e.scrollTop;
      },
      methods: {
         search(res) {
            this.pageNo = 1;
            this.getData();
         },
         groupClick() {
         },
   getData() {
  var postData = {
    MainData: {
      warehouseId: this.warehouseId,
      orderNo: this.searchValue,
      pageNo: this.pageNo
    },
  }
  // å¦‚果是第一页或搜索,清空数据
  if (this.pageNo === 1 || this.searchValue !== '') {
    this.allReceivingOrders = [];
    this.status = "more";
  }
  this.$u.post('/api/CabinOrder/GetCabinOrders', postData).then((res) => {
    if (res.status) {
      if (res.data && res.data.length > 0) {
        const newData = res.data.map(i => ({
          ...i,
          InboundOrderStatus: i.odrderStatus.label,
          SumQty: i.details.map(item => item.order_qty).reduce((prev, next) => prev + next, 0),
          OverQty: i.details.map(item => item.order_Inqty).reduce((prev, next) => prev + next, 0)
        }));
        // å…³é”®ä¿®æ”¹ï¼šè¿½åŠ æ•°æ®è€Œä¸æ˜¯æ›¿æ¢
        this.allReceivingOrders = [...this.allReceivingOrders, ...newData];
        // å¦‚果返回的数据少于5条,说明没有更多数据了
        if (res.data.length < 5) {
          this.status = 'noMore';
        } else {
          this.status = 'more';
        }
        // æŽ§åˆ¶åŠ è½½æç¤ºæ˜¾ç¤º
        this.loadVisible = this.allReceivingOrders.length > 0;
      } else {
        // æ²¡æœ‰æ•°æ®
        this.status = 'noMore';
        this.loadVisible = this.allReceivingOrders.length > 0;
        // å¦‚果是第一页且没有数据,显示空状态
        if (this.pageNo === 1) {
          this.allReceivingOrders = [];
        }
      }
import { InboundOrderStatus } from "../../common/config.js";
export default {
  data() {
    return {
      page: "/pages/stash/inboundorderDetail?",
      loadVisible: false,
      searchValue: "",
      status: "more",
      allReceivingOrders: [],
      pageNo: 1,
      scrollTop: 0,
      warehouseId: "",
      isLoaded: false,
    };
  },
  onLoad(res) {
    this.warehouseId = res.warehouseId;
    this.page = this.page + "warehouseId=" + this.warehouseId + "&orderNo=";
    this.getData();
  },
  onReachBottom() {
    if (this.status === "more") {
      this.pageNo += 1;
      this.getData();
      this.isLoaded = true;
    }
  }).catch(err => {
    console.error('请求失败:', err);
    this.status = 'noMore';
  })
}
      }
   }
  },
  onShow() {
    this.isLoaded = uni.getStorageSync("isLoaded");
    if (this.isLoaded) {
      uni.removeStorageSync("isLoaded");
      this.pageNo = 1;
      this.allReceivingOrders = [];
      // ä»Žå…¶ä»–页面返回时刷新
      this.getData();
    }
  },
  onPageScroll(e) {
    this.scrollTop = e.scrollTop;
  },
  methods: {
    search(res) {
      this.pageNo = 1;
      this.getData();
    },
    groupClick() {},
    getData() {
      var postData = {
        MainData: {
          warehouseId: this.warehouseId,
          orderNo: this.searchValue,
          pageNo: this.pageNo,
        },
      };
      // å¦‚果是第一页或搜索,清空数据
      if (this.pageNo === 1 || this.searchValue !== "") {
        this.allReceivingOrders = [];
        this.status = "more";
      }
      this.$u
        .post("/api/CabinOrder/GetCabinOrders", postData)
        .then((res) => {
          if (res.status) {
            if (res.data && res.data.length > 0) {
              const newData = res.data.map((i) => ({
                ...i,
                InboundOrderStatus: i.odrderStatus.label,
                SumQty: i.details
                  .map((item) => item.order_qty)
                  .reduce((prev, next) => prev + next, 0),
                OverQty: i.details
                  .map((item) => item.order_Inqty)
                  .reduce((prev, next) => prev + next, 0),
              }));
              // å…³é”®ä¿®æ”¹ï¼šè¿½åŠ æ•°æ®è€Œä¸æ˜¯æ›¿æ¢
              this.allReceivingOrders = [
                ...this.allReceivingOrders,
                ...newData,
              ];
              // å¦‚果返回的数据少于5条,说明没有更多数据了
              if (res.data.length < 5) {
                this.status = "noMore";
              } else {
                this.status = "more";
              }
              // æŽ§åˆ¶åŠ è½½æç¤ºæ˜¾ç¤º
              this.loadVisible = this.allReceivingOrders.length > 0;
            } else {
              // æ²¡æœ‰æ•°æ®
              this.status = "noMore";
              this.loadVisible = this.allReceivingOrders.length > 0;
              // å¦‚果是第一页且没有数据,显示空状态
              if (this.pageNo === 1) {
                this.allReceivingOrders = [];
              }
            }
          }
        })
        .catch((err) => {
          console.error("请求失败:", err);
          this.status = "noMore";
        });
    },
  },
};
</script>
<style lang="scss">
   @import '@/common/uni-ui.scss';
@import "@/common/uni-ui.scss";
   page {
      display: flex;
      flex-direction: column;
      box-sizing: border-box;
      background-color: #efeff4;
      min-height: 100%;
      height: auto;
   }
page {
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  background-color: #efeff4;
  min-height: 100%;
  height: auto;
}
   .tips {
      color: #67c23a;
      font-size: 14px;
      line-height: 40px;
      text-align: center;
      background-color: #f0f9eb;
      height: 0;
      opacity: 0;
      transform: translateY(-100%);
      transition: all 0.3s;
   }
.tips {
  color: #67c23a;
  font-size: 14px;
  line-height: 40px;
  text-align: center;
  background-color: #f0f9eb;
  height: 0;
  opacity: 0;
  transform: translateY(-100%);
  transition: all 0.3s;
}
   .tips-ani {
      transform: translateY(0);
      height: 40px;
      opacity: 1;
   }
.tips-ani {
  transform: translateY(0);
  height: 40px;
  opacity: 1;
}
   .content {
      width: 100%;
      display: flex;
   }
.content {
  width: 100%;
  display: flex;
}
   .list-picture {
      width: 100%;
      height: 145px;
   }
.list-picture {
  width: 100%;
  height: 145px;
}
   .thumb-image {
      width: 100%;
      height: 100%;
   }
.thumb-image {
  width: 100%;
  height: 100%;
}
   .ellipsis {
      display: flex;
      overflow: hidden;
   }
.ellipsis {
  display: flex;
  overflow: hidden;
}
   .uni-ellipsis-1 {
      overflow: hidden;
      white-space: nowrap;
      text-overflow: ellipsis;
   }
.uni-ellipsis-1 {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
   .uni-ellipsis-2 {
      overflow: hidden;
      text-overflow: ellipsis;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
   }
.uni-ellipsis-2 {
  overflow: hidden;
  text-overflow: ellipsis;
  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%;
   }
.customcss {
  display: flex;
  position: fixed;
  width: 100%;
  top: 10px;
  text-align: center;
  z-index: 999;
  left: 30px;
  height: 20%;
}
   .footer {
      padding-top: 50%;
   }
.footer {
  padding-top: 50%;
}
</style>