userVip.vue 9.1 KB

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