userVip.vue 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. <script setup lang="ts">
  2. import router from '@/router'
  3. import { StaticUrl } from '@/config'
  4. const { statusBarHeight, MenuButtonHeight, opcity } = storeToRefs(useSysStore())
  5. definePage({
  6. name: 'smqjh-user-vip',
  7. islogin: true,
  8. style: {
  9. navigationBarTitleText: '会员中心',
  10. navigationStyle: 'custom',
  11. },
  12. })
  13. const { userMemberInfo } = storeToRefs(useUserStore())
  14. const rightsInfo = ref()
  15. onMounted(() => {
  16. useUserStore().getUserInfo()
  17. opcity.value = 0
  18. rightsInfo.value = JSON.parse(userMemberInfo.value.benefitConfigJson || '')
  19. console.log(JSON.parse(userMemberInfo.value.benefitConfigJson || ''), '解析出的json')
  20. })
  21. onPageScroll((e) => {
  22. const calculatedOpacity = e.scrollTop / 100
  23. opcity.value = Math.min(1, Math.max(0.1, calculatedOpacity))
  24. })
  25. function toUse() {
  26. wx.openOfficialAccountArticle({
  27. url: 'https://mp.weixin.qq.com/s/lxpdZ6DUhgqg00AT9klu5Q',
  28. })
  29. }
  30. function toShoppingList() {
  31. if (!userMemberInfo?.value.giftReceived) {
  32. router.push({ name: 'smqjh-giveaways-vip' })
  33. }
  34. else {
  35. useGlobalToast().show({ msg: '您已经领取过咯~~' })
  36. }
  37. }
  38. </script>
  39. <template>
  40. <view class="min-h-screen" :class="userMemberInfo.active ? 'bg-[linear-gradient(225deg,#13141D_0%,#55565D_34.72%,#15161F_100%)]' : ''">
  41. <wd-navbar
  42. title="会员中心" :custom-style="`background-color: rgba(226, 255, 145, ${opcity});color: ${opcity > 0.5 ? '#000' : '#FFF'};`"
  43. :bordered="false" :z-index="999" safe-area-inset-top left-arrow fixed @click-left="router.back()"
  44. />
  45. <view :style="{ paddingTop: `${(Number(statusBarHeight) || 44) + MenuButtonHeight + 12}px` }" />
  46. <view v-if="userMemberInfo.active" class="px24rpx">
  47. <view class="mt-54rpx">
  48. <image :src="`${StaticUrl}/vip-welcome.png`" class="h-46rpx w-339rpx" />
  49. <view class="mt-36rpx text-28rpx text-#b5b5b5">
  50. 甄选权益,开启您的购物之旅
  51. </view>
  52. </view>
  53. <view class="mt-36rpx h-370rpx pl-50rpx" :style="{ backgroundImage: `url(${StaticUrl}/vip-card.png)`, backgroundSize: 'cover', backgroundPosition: 'center' }">
  54. <image :src="`${StaticUrl}/vip-tags.png`" class="mt-72rpx h-54rpx w-238rpx" />
  55. <view class="mt-20rpx text-24rpx text-#b5b5b5">
  56. <text v-if="userMemberInfo.memberStatus === 'ACTIVE'">
  57. 有效期至
  58. </text>
  59. <text v-if="userMemberInfo.memberStatus === 'PENDING_EXPIRE'">
  60. 会员已退订
  61. </text>
  62. <text v-if="userMemberInfo.memberStatus === 'EXPIRED'">
  63. 会员已失效
  64. </text>
  65. </view>
  66. <view class="mt-20rpx text-28rpx text-#b5b5b5">
  67. <text v-if="userMemberInfo.memberStatus === 'PENDING_EXPIRE'">
  68. 权益将于
  69. </text>
  70. <text v-if="userMemberInfo.memberStatus === 'EXPIRED'">
  71. 失效时间
  72. </text>
  73. </view>
  74. <view class="mt-20rpx text-28rpx text-#b5b5b5">
  75. {{ userMemberInfo.expireTime }}
  76. <text v-if="userMemberInfo.memberStatus != 'ACTIVE'">
  77. 失效
  78. </text>
  79. </view>
  80. </view>
  81. <view class="mt-30rpx">
  82. <view class="flex items-center justify-center gap-36rpx">
  83. <view class="flex items-center gap-6rpx">
  84. <view class="h-16rpx w-8rpx bg-#FEE3AD" style="transform: skew(30deg);" />
  85. <view class="h-16rpx w-8rpx bg-#FEE3AD" style="transform: skew(30deg);" />
  86. <view class="h-16rpx w-8rpx bg-#FEE3AD" style="transform: skew(30deg);" />
  87. <view class="h-16rpx w-8rpx bg-#FEE3AD" style="transform: skew(30deg);" />
  88. </view>
  89. <view class="text-36rpx text-#FEE3AD font-800">
  90. 我的权益
  91. </view>
  92. <view class="flex items-center gap-6rpx">
  93. <view class="h-16rpx w-8rpx bg-#FEE3AD" style="transform: skew(-30deg);" />
  94. <view class="h-16rpx w-8rpx bg-#FEE3AD" style="transform: skew(-30deg);" />
  95. <view class="h-16rpx w-8rpx bg-#FEE3AD" style="transform: skew(-30deg);" />
  96. <view class="h-16rpx w-8rpx bg-#FEE3AD" style="transform: skew(-30deg);" />
  97. </view>
  98. </view>
  99. </view>
  100. <view class="mt-44rpx flex flex-wrap gap-14rpx">
  101. <view v-if="rightsInfo?.oilPerLiterDiscount" class="w-304rpx border-[1rpx_solid_#F4E5BD] rounded-32rpx bg-[rgba(255,255,255,0.3)] p-20rpx">
  102. <view class="text-28rpx text-#FEE3AD font-bold">
  103. 全省中石化优惠
  104. </view>
  105. <view class="mt-20rpx flex items-center justify-between">
  106. <view>
  107. <view class="text-28rpx text-#b5b5b5">
  108. 每升立减{{ rightsInfo?.oilPerLiterDiscount }}元
  109. </view>
  110. <view class="mt-16rpx h-42rpx w-108rpx rounded-22rpx bg-#F4E5BD text-center text-24rpx text-#7F5935 line-height-42rpx" @click="toUse">
  111. 去使用
  112. </view>
  113. </view>
  114. <image :src="rightsInfo?.oilIcon" class="h-80rpx w-80rpx" />
  115. </view>
  116. </view>
  117. <view v-if="rightsInfo?.mallDiscountRate" class="w-304rpx border-[1rpx_solid_#F4E5BD] rounded-32rpx bg-[rgba(255,255,255,0.3)] p-20rpx">
  118. <view class="text-28rpx text-#FEE3AD font-bold">
  119. 市民请集合平台快消品
  120. </view>
  121. <view class="mt-20rpx flex items-center justify-between">
  122. <view>
  123. <view class="text-28rpx text-#b5b5b5">
  124. 折扣率{{ rightsInfo?.mallDiscountRate }}折
  125. </view>
  126. <view class="mt-16rpx h-42rpx w-108rpx rounded-22rpx bg-#F4E5BD text-center text-24rpx text-#7F5935 line-height-42rpx" @click="router.push({ name: 'xsb-homeTabbar' })">
  127. 去使用
  128. </view>
  129. </view>
  130. <image :src="rightsInfo?.mallIcon" class="h-80rpx w-80rpx" />
  131. </view>
  132. </view>
  133. <view v-if="rightsInfo?.chargePerKwhDiscount" class="w-304rpx border-[1rpx_solid_#F4E5BD] rounded-32rpx bg-[rgba(255,255,255,0.3)] p-20rpx">
  134. <view class="text-28rpx text-#FEE3AD font-bold">
  135. 全省贵阳城投充电桩优惠
  136. </view>
  137. <view class="mt-20rpx flex items-center justify-between">
  138. <view>
  139. <view class="text-28rpx text-#b5b5b5">
  140. 每度电立减{{ rightsInfo?.chargePerKwhDiscount }}元
  141. </view>
  142. <view class="mt-16rpx h-42rpx w-108rpx rounded-22rpx bg-#F4E5BD text-center text-24rpx text-#7F5935 line-height-42rpx" @click="router.push({ name: 'charge-index' })">
  143. 去使用
  144. </view>
  145. </view>
  146. <image :src="rightsInfo?.chargeIcon" class="h-80rpx w-80rpx" />
  147. </view>
  148. </view>
  149. <view v-if="rightsInfo?.parkingDiscountRate" class="w-304rpx border-[1rpx_solid_#F4E5BD] rounded-32rpx bg-[rgba(255,255,255,0.3)] p-20rpx">
  150. <view class="text-28rpx text-#FEE3AD font-bold">
  151. 贵阳城投停车场优惠
  152. </view>
  153. <view class="mt-20rpx flex items-center justify-between">
  154. <view>
  155. <view class="text-28rpx text-#b5b5b5">
  156. 折扣率{{ rightsInfo?.parkingDiscountRate }}折
  157. </view>
  158. <view class="mt-16rpx h-42rpx w-108rpx rounded-22rpx bg-#F4E5BD text-center text-24rpx text-#7F5935 line-height-42rpx" @click="router.push({ name: rightsInfo?.parkingRoutePath })">
  159. 去使用
  160. </view>
  161. </view>
  162. <image :src="rightsInfo?.parkingIcon" class="h-80rpx w-80rpx" />
  163. </view>
  164. </view>
  165. <view v-if="userMemberInfo?.couponConfig.length > 0" class="w-304rpx border-[1rpx_solid_#F4E5BD] rounded-32rpx bg-[rgba(255,255,255,0.3)] p-20rpx">
  166. <view class="text-28rpx text-#FEE3AD font-bold">
  167. 优惠券
  168. </view>
  169. <view class="mt-20rpx flex items-center justify-between">
  170. <view>
  171. <view class="text-28rpx text-#b5b5b5">
  172. 优惠券{{ userMemberInfo?.couponCount }}张
  173. </view>
  174. <view class="mt-16rpx h-42rpx w-108rpx rounded-22rpx bg-#F4E5BD text-center text-24rpx text-#7F5935 line-height-42rpx" @click="router.push({ name: 'xsb-coupon', params: { type: 'VIP' } })">
  175. 去查看
  176. </view>
  177. </view>
  178. <image :src="userMemberInfo?.couponConfig[0].icon" class="h-80rpx w-80rpx" />
  179. </view>
  180. </view>
  181. <view v-if="userMemberInfo?.giftConfig.length > 0" class="w-304rpx border-[1rpx_solid_#F4E5BD] rounded-32rpx bg-[rgba(255,255,255,0.3)] p-20rpx">
  182. <view class="text-28rpx text-#FEE3AD font-bold">
  183. 自选赠品
  184. </view>
  185. <view class="mt-20rpx flex items-center justify-between">
  186. <view>
  187. <view class="text-28rpx text-#b5b5b5">
  188. 自选赠品{{ userMemberInfo?.giftCount }}个
  189. </view>
  190. <view class="mt-16rpx h-42rpx w-108rpx rounded-22rpx bg-#F4E5BD text-center text-24rpx text-#7F5935 line-height-42rpx" @click="toShoppingList">
  191. {{ userMemberInfo?.giftReceived ? '已领取' : '待领取' }}
  192. </view>
  193. </view>
  194. <image :src="userMemberInfo?.giftConfig[0].icon" class="h-80rpx w-80rpx" />
  195. </view>
  196. </view>
  197. </view>
  198. </view>
  199. <StatusTip v-else image="vip-not-data.png" tip="敬请期待" />
  200. </view>
  201. </template>
  202. <style lang="scss" scoped>
  203. </style>