referEarn.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <route lang="json5" type="page">
  2. {
  3. layout: 'default',
  4. style: {
  5. navigationStyle: 'custom',
  6. },
  7. }
  8. </route>
  9. <script lang="ts" setup>
  10. // 必须导入需要用到的页面生命周期(即使在当前页面上没有直接使用到)
  11. // eslint-disable-next-line unused-imports/no-unused-imports
  12. import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
  13. import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
  14. import { getConfigByCode } from '@/api/common'
  15. import { myUsers } from '@/api/mine'
  16. import { t } from '@/locale'
  17. import { goBack, toPage } from '@/utils/page'
  18. defineOptions({
  19. name: 'ReferEarn', // 邀请赚钱
  20. })
  21. // z-paging
  22. const paging = ref(null)
  23. // 类似mixins,如果是页面滚动务必要写这一行,并传入当前ref绑定的paging,注意此处是paging,而非paging.value
  24. useZPaging(paging)
  25. // 搜索结果
  26. const dataList = ref([])
  27. async function queryList(pageNo: number, pageSize: number) {
  28. try {
  29. const res = await myUsers({
  30. page: pageNo,
  31. size: pageSize,
  32. type: 1,
  33. })
  34. paging.value.complete(res.data.list)
  35. }
  36. catch {
  37. paging.value.complete(false)
  38. }
  39. }
  40. const invitedAmount = ref<any>(0)
  41. async function getConfig() {
  42. try {
  43. const res = await getConfigByCode({ code: 'invited_amount' })
  44. console.log(res)
  45. if (res.code === '200') {
  46. invitedAmount.value = res.data.valueInfo
  47. }
  48. }
  49. catch {
  50. }
  51. }
  52. onLoad(() => {
  53. getConfig()
  54. })
  55. </script>
  56. <template>
  57. <wd-navbar custom-class="bg-transparent!" safe-area-inset-top :bordered="false" fixed>
  58. <template #left>
  59. <wd-icon name="thin-arrow-left" color="#fff" size="32rpx" @click="() => goBack()" />
  60. </template>
  61. <template #title>
  62. <view class="text-white font-bold text-32rpx!">
  63. {{ $t('referEarn.title') }}
  64. </view>
  65. </template>
  66. </wd-navbar>
  67. <z-paging ref="paging" v-model="dataList" use-page-scroll @query="queryList">
  68. <view class="relative mb-40rpx">
  69. <!-- 邀请图 -->
  70. <image src="/static/images/refer-earn-bg.png" class="w-full" mode="widthFix" />
  71. <view class="absolute bottom-166rpx left-1/2 w-326rpx transform text-center -translate-x-1/2">
  72. <view class="px-14rpx text-36rpx text-white">
  73. <view>{{ $t('referEarn.inviteFriends') }}</view>
  74. <view class="mb-26rpx">
  75. {{ $t('referEarn.earnCash') }}
  76. <text class="text-[var(--wot-color-theme)]">
  77. ৳{{ invitedAmount }}
  78. </text>
  79. </view>
  80. </view>
  81. <view class="rounded-full bg-#F9CD96 py-14rpx text-34rpx text-[var(--wot-color-theme)] font-bold shadow-[0_2rpx_8rpx_0_rgba(249,205,150,0.5)]" @click="toPage('/pages/mine/share')">
  82. {{ $t('referEarn.shareNow') }}
  83. </view>
  84. </view>
  85. </view>
  86. <view class="px-24rpx">
  87. <view class="mb-28rpx text-center text-32rpx text-[var(--wot-color-theme)]">
  88. {{ $t('referEarn.howToShare') }}
  89. </view>
  90. <view class="mb-40rpx flex items-center justify-between text-center">
  91. <view class="shadow='0rpx 2rpx 8rpx 0rpx rgba(249,205,150,0.5)' flex flex-1 flex-col items-center rounded-16rpx bg-#F9CD96/60 px-12rpx py-30rpx">
  92. <view class="mb-10rpx text-48rpx text-[var(--wot-color-theme)]">
  93. 1
  94. </view>
  95. <view class="text-24rpx text-#8F3301 font-bold">
  96. {{ $t('referEarn.step1') }}
  97. </view>
  98. </view>
  99. <wd-icon name="caret-right-small" size="32rpx" color="#D8D8D8" class="mx-16rpx" />
  100. <view class="shadow='0rpx 2rpx 8rpx 0rpx rgba(249,205,150,0.5)' flex flex-1 flex-col items-center rounded-16rpx bg-#F9CD96/60 px-12rpx py-30rpx">
  101. <view class="mb-10rpx text-48rpx text-[var(--wot-color-theme)]">
  102. 2
  103. </view>
  104. <view class="text-24rpx text-#8F3301 font-bold">
  105. {{ $t('referEarn.step2') }}
  106. </view>
  107. </view>
  108. <wd-icon name="caret-right-small" size="32rpx" color="#D8D8D8" class="mx-16rpx" />
  109. <view class="shadow='0rpx 2rpx 8rpx 0rpx rgba(249,205,150,0.5)' flex flex-1 flex-col items-center rounded-16rpx bg-#F9CD96/60 px-12rpx py-30rpx">
  110. <view class="mb-10rpx text-48rpx text-[var(--wot-color-theme)]">
  111. 3
  112. </view>
  113. <view class="text-24rpx text-#8F3301 font-bold">
  114. {{ t('referEarn.step3', [invitedAmount]) }}
  115. </view>
  116. </view>
  117. </view>
  118. <view>
  119. <view class="mb-18rpx text-32rpx">
  120. {{ $t('referEarn.invitedFriends') }}
  121. </view>
  122. <view v-if="dataList.length" class="rounded-16rpx bg-white px-24rpx py-8rpx">
  123. <view
  124. v-for="(item, index) in dataList"
  125. :key="index"
  126. class="flex items-center justify-between py-18rpx"
  127. :class="{ 'border-b-1 border-b-solid border-#E1E1E1': index !== dataList.length - 1 }"
  128. >
  129. <view class="flex items-center">
  130. <wd-img width="80rpx" height="80rpx" round :src="item.headPic" />
  131. <view class="ml-20rpx text-28rpx font-bold">
  132. {{ item.name }}
  133. </view>
  134. </view>
  135. <view class="text-24rpx">
  136. {{ item.createTime }}
  137. </view>
  138. </view>
  139. </view>
  140. </view>
  141. </view>
  142. </z-paging>
  143. </template>
  144. <style lang="scss" scoped>
  145. //
  146. </style>