index.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <script setup lang="ts">
  2. // import { navTabTypeList } from '@/subPack-smqjh/order/order-data'
  3. definePage({
  4. name: 'common-integral',
  5. islogin: true,
  6. style: {
  7. navigationBarTitleText: '积分',
  8. disableScroll: true,
  9. },
  10. })
  11. const navTabTypeList = [
  12. { name: '全部', value: 'all' },
  13. { name: '星闪豹', value: 'XSB' },
  14. { name: '充电', value: 'CD' },
  15. { name: '电影演出', value: 'DYY' },
  16. { name: '视频权益', value: 'VIDEO' },
  17. { name: '大牌点餐', value: 'SHOP' },
  18. ]
  19. const { data: info } = useRequest(() =>
  20. Apis.xsb.findUserPoints({}),
  21. )
  22. const type = ['充值', '下单', '退款', '过期积分', '退款过期积分']
  23. const { data: pointList, isLastPage, page } = usePagination((pageNum, pageSize) => Apis.xsb.findUserPointsPage({ data: { pageNum, pageSize } }), { data: resp => resp.data?.list, initialPage: 1, initialPageSize: 10, immediate: true, append: true })
  24. function handleScrollBottom() {
  25. console.log(isLastPage.value, '=====')
  26. if (!isLastPage.value) {
  27. page.value++
  28. }
  29. }
  30. function getLabel(val: string) {
  31. return navTabTypeList.find(i => i.value === val)?.name || '未知类型'
  32. }
  33. </script>
  34. <template>
  35. <view class="pages pty24rpx">
  36. <view class="grid grid-cols-4 w-full bg-white py-24rpx">
  37. <view class="flex flex-col items-center justify-center">
  38. <view class="text-28rpx text-[#AAAAAA]">
  39. 总充值积分
  40. </view>
  41. <view class="text-36rpx text-[#222] font-semibold">
  42. {{ info?.data?.pointsTotal || 0 }}
  43. </view>
  44. </view>
  45. <view class="flex flex-col items-center justify-center">
  46. <view class="text-28rpx text-[#AAAAAA]">
  47. 当前可用积分
  48. </view>
  49. <view class="text-36rpx text-[#222] font-semibold">
  50. {{ info?.data?.availablePointsTotal || 0 }}
  51. </view>
  52. </view>
  53. <view class="flex flex-col items-center justify-center">
  54. <view class="text-28rpx text-[#AAAAAA]">
  55. 已过期积分
  56. </view>
  57. <view class="text-36rpx text-[#222] font-semibold">
  58. {{ info?.data?.expiryPointsTotal || 0 }}
  59. </view>
  60. </view>
  61. <view class="flex flex-col items-center justify-center">
  62. <view class="text-28rpx text-[#AAAAAA]">
  63. 已消耗积分
  64. </view>
  65. <view class="text-36rpx text-[#222] font-semibold">
  66. {{ info?.data?.consumePointsTotal || 0 }}
  67. </view>
  68. </view>
  69. </view>
  70. <view class="px-24rpx py-20rpx">
  71. 可用积分记录
  72. </view>
  73. <scroll-view scroll-y class="view" @scrolltolower="handleScrollBottom">
  74. <view v-for="item, index in pointList" :key="item.pointsId" class="bg-white p-24rpx">
  75. <view class="flex items-center justify-between text-32rpx font-semibold">
  76. <view class="text-[#222]">
  77. {{ (type[Number(item.pointsType) - 1] == '下单' ? getLabel(item.businessType) : type[Number(item.pointsType) - 1]) || '未知状态' }}
  78. </view>
  79. <view class="text-[#FF4A39]">
  80. {{ item?.variablePoints || 0 }}
  81. </view>
  82. </view>
  83. <view class="mt-20rpx flex items-center justify-between text-28rpx text-[#AAAAAA]">
  84. <view>{{ item?.creationDate }}</view>
  85. <view>当前可用积分 {{ item?.currentlyAvailablePoints || 0 }}</view>
  86. </view>
  87. <view v-if="index < pointList.length - 1" class="mt-24rpx h-2rpx w-full bg-[#F0F0F0]" />
  88. </view>
  89. <StatusTip v-if="!pointList.length" tip="暂无内容" />
  90. </scroll-view>
  91. </view>
  92. </template>
  93. <style scoped>
  94. .view {
  95. height: calc(100vh - var(--window-top) - 250rpx);
  96. }
  97. </style>