list.vue 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <!-- 积分商城:商品列表 -->
  2. <template>
  3. <s-layout title="积分商城" navbar="normal" :leftWidth="0" :rightWidth="0">
  4. <scroll-view
  5. class="scroll-box"
  6. :style="{ height: pageHeight + 'rpx' }"
  7. scroll-y="true"
  8. :scroll-with-animation="false"
  9. :enable-back-to-top="true"
  10. >
  11. <s-point-card ref="sPointCardRef" class="ss-p-x-20 ss-m-t-20"/>
  12. <s-empty
  13. v-if="activityTotal === 0"
  14. icon="/static/goods-empty.png"
  15. text="暂无积分商品"
  16. ></s-empty>
  17. <uni-load-more
  18. v-if="activityTotal > 0"
  19. :status="loadStatus"
  20. :content-text="{
  21. contentdown: '上拉加载更多',
  22. }"
  23. @tap="loadMore"
  24. />
  25. </scroll-view>
  26. </s-layout>
  27. </template>
  28. <script setup>
  29. import sheep from '@/sheep';
  30. import { onLoad, onReachBottom } from '@dcloudio/uni-app';
  31. import { reactive, ref } from 'vue';
  32. import PointApi from '@/sheep/api/promotion/point';
  33. import SLayout from '@/sheep/components/s-layout/s-layout.vue';
  34. // 计算页面高度
  35. const { safeAreaInsets, safeArea } = sheep.$platform.device;
  36. const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
  37. const pageHeight =
  38. (safeArea.height + safeAreaInsets.bottom) * 2 + statusBarHeight - sheep.$platform.navbar - 350;
  39. const sPointCardRef = ref();
  40. // 查询活动列表
  41. const activityPageParams = reactive({
  42. pageNo: 1, // 页码
  43. pageSize: 5, // 每页数量
  44. });
  45. const activityTotal = ref(0); // 活动总数
  46. const activityCount = ref(0); // 已加载活动数量
  47. const loadStatus = ref(''); // 页面加载状态
  48. async function getActivityList() {
  49. loadStatus.value = 'loading';
  50. const { data } = await PointApi.getPointActivityPage(activityPageParams);
  51. await sPointCardRef.value.concatActivity(data.list);
  52. activityCount.value = sPointCardRef.value.getActivityCount();
  53. activityTotal.value = data.total;
  54. loadStatus.value = activityCount.value < activityTotal.value ? 'more' : 'noMore';
  55. }
  56. // 加载更多
  57. function loadMore() {
  58. if (loadStatus.value !== 'noMore') {
  59. activityPageParams.pageNo += 1;
  60. getActivityList();
  61. }
  62. }
  63. // 上拉加载更多
  64. onReachBottom(() => {
  65. loadMore();
  66. });
  67. onLoad(() => {
  68. getActivityList();
  69. });
  70. </script>