order.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <script setup lang="ts">
  2. import { StaticUrl } from '@/config'
  3. import { createGlobalLoadingMiddleware } from '@/api/core/middleware'
  4. import router from '@/router'
  5. const { statusBarHeight, MenuButtonHeight } = storeToRefs(useSysStore())
  6. const tab = ref<number>(0)
  7. const tabsList = ref(['全部', '成功', '失败'])
  8. const rechargeStatus = ref<string>('')
  9. const { data: orderList, isLastPage, page, refresh } = usePagination((pageNum, pageSize) =>
  10. Apis.videoRight.orderList({ data: { pageNum, pageSize, rechargeStatus: rechargeStatus.value } }), {
  11. data: (resp) => {
  12. return resp.data?.list
  13. },
  14. initialData: [],
  15. initialPage: 1,
  16. initialPageSize: 10,
  17. append: true,
  18. immediate: true,
  19. middleware: createGlobalLoadingMiddleware(),
  20. })
  21. onShow(() => {
  22. refresh()
  23. })
  24. onReachBottom(() => {
  25. if (!isLastPage.value) {
  26. page.value++
  27. refresh()
  28. }
  29. })
  30. function handleClick(e: any) {
  31. if (e.index === 0) {
  32. rechargeStatus.value = ''
  33. }
  34. else if (e.index === 1) {
  35. rechargeStatus.value = '2'
  36. }
  37. else if (e.index === 2) {
  38. rechargeStatus.value = '3'
  39. }
  40. refresh()
  41. }
  42. </script>
  43. <template>
  44. <view class="video-rights-order-page">
  45. <wd-navbar
  46. title="订单" custom-style="background-color:#FFF" :bordered="false" :z-index="99"
  47. safe-area-inset-top fixed
  48. />
  49. <view :style="{ paddingTop: `${(Number(statusBarHeight) || 44) + MenuButtonHeight + 12}px` }" />
  50. <wd-tabs v-model="tab" :offset-top="statusBarHeight + MenuButtonHeight + 12" animated @click="handleClick">
  51. <block v-for="item in tabsList" :key="item">
  52. <wd-tab :title="item">
  53. <view class="box-border bg-#f6f6f6 px24rpx">
  54. <view class="h-4rpx" />
  55. <view v-for=" order in orderList" :key="order.orderNumber" class="mt-28rpx rounded-16rpx bg-#FFF p-24rpx" @click="router.push({ name: 'video-rights-order-info', params: { orderNo: order.orderNumber || '' } })">
  56. <view class="flex items-center justify-between">
  57. <view class="text-28rpx">
  58. {{ order.createTime }}
  59. </view>
  60. <view class="text-28rpx font-bold">
  61. {{ order.rechargeStatusDesc }}
  62. </view>
  63. </view>
  64. <view class="mt-24rpx h-2rpx w-full bg-#F0F0F0" />
  65. <view class="mt-24rpx flex items-center justify-between">
  66. <view class="flex items-center gap-20rpx">
  67. <view class="h-160rpx w-160rpx">
  68. <image class="h-160rpx w-160rpx" :src="`${StaticUrl}/list-page-img.png`" />
  69. </view>
  70. <view>
  71. <view class="text-32rpx font-bold">
  72. {{ order.productName }}
  73. </view>
  74. <view class="mt-16rpx text-#FF4D3A">
  75. <text class="text-22rpx font-500">
  76. </text>
  77. <text class="text-36rpx font-800">
  78. {{ order.sellPrice }}
  79. </text>
  80. </view>
  81. <view class="mt-16rpx text-24rpx">
  82. {{ order.orderNumber }}
  83. </view>
  84. </view>
  85. </view>
  86. <wd-icon name="chevron-right" size="22px" color="#222222" />
  87. </view>
  88. </view>
  89. <StatusTip v-if="!orderList.length" tip="暂无内容" />
  90. </view>
  91. </wd-tab>
  92. </block>
  93. </wd-tabs>
  94. </view>
  95. </template>
  96. <style lang="scss" scoped></style>