青蛙卖大米小程序2024-11-24
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

415 lines
8.3 KiB

5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
4 months ago
5 months ago
4 months ago
4 months ago
5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
  1. <template>
  2. <view class="page">
  3. <navbar title="会员"
  4. :leftClick="leftClick"
  5. @leftClick="$utils.navigateBack"
  6. />
  7. <view class="swipe">
  8. <uv-swiper
  9. :list="bannerList"
  10. indicator
  11. height="320rpx"
  12. keyName="image"></uv-swiper>
  13. </view>
  14. <view class="vip">
  15. <view class="title1">
  16. 限时活动
  17. </view>
  18. <view class="title2">
  19. 会员套餐
  20. </view>
  21. <view class="box-content">
  22. 限时活动<text>{{ configList.vip_open_num }}</text>
  23. </view>
  24. <view class="di">
  25. <view class="pad">
  26. {{ riceInfo.memberNum }}/{{ configList.vip_open_num }}
  27. </view>
  28. <view class="tips-click"
  29. v-if="userInfo.isPay">
  30. 已成为会员
  31. <text
  32. @click="$utils.navigateTo('/pages/index/category')">去购买</text>
  33. </view>
  34. <view class="submitOpen"
  35. v-else
  36. @click="submitOpen">
  37. 开通会员
  38. </view>
  39. </view>
  40. </view>
  41. <view class="middle">
  42. <view class="rights">会员权益</view>
  43. <view class="middle-one">会员条件{{ configList.vip_rloe }}</view>
  44. <!-- <view class="middle-boxs">
  45. <view class="middle-two-1">权益一</view>
  46. <view class="middle-box">
  47. <view class="middlex-minBox">
  48. <view class="middle-box-one">
  49. <view>赠送价值</view>
  50. <view style="color: #D15206; font-size: 28rpx;">100</view>
  51. <view>的三诺血糖</view>
  52. </view>
  53. <view>检测仪*1</view>
  54. </view>
  55. </view>
  56. <view class="img">
  57. <image src="../../static/image/member/1.png" mode="aspectFill"></image>
  58. </view>
  59. </view>
  60. <view class="middle-boxs">
  61. <view style="padding: 20rpx;"></view>
  62. <view class="middle-two-2">权益二</view>
  63. <view class="middle-box">
  64. <view class="middlex-minBox-2">
  65. <view class="middle-box-one">
  66. <view>会员推荐朋友购买会员</view>
  67. <view>第一个</view>
  68. </view>
  69. <view>返利10%第二个返利20%第三个返利30%</view>
  70. <view style="display: flex; align-items: center;">
  71. <view>第四个返利40%</view>
  72. <text style="color: #474747; font-size: 24rpx;">四四循环</text>
  73. </view>
  74. </view>
  75. </view>
  76. <view class="img-2">
  77. <image src="../../static/image/member/2.png" mode="aspectFill"></image>
  78. </view>
  79. </view>
  80. <view class="middle-boxs">
  81. <view class="middle-two-1">权益三</view>
  82. <view class="middle-box">
  83. <view class="middlex-minBox">
  84. <view>所推荐朋友购买产品及今后产生复购</view>
  85. <view class="middle-box-one">
  86. <view>产品的</view>
  87. <view style="color: #D15206; font-size: 28rpx;">返15%佣金</view>
  88. <view>体验价不计算在内</view>
  89. </view>
  90. </view>
  91. </view>
  92. <view class="img">
  93. <image src="../../static/image/member/3.png" mode="aspectFill"></image>
  94. </view>
  95. </view> -->
  96. <template
  97. v-for="(item, index) in vipInfoList">
  98. <view class="middle-boxs"
  99. v-if="index % 2 == 0"
  100. :key="index">
  101. <view class="middle-two-1">{{ item.title }}</view>
  102. <view class="middle-box">
  103. <view class="middlex-minBox">
  104. <uv-parse :content="item.details"></uv-parse>
  105. </view>
  106. </view>
  107. <view class="img">
  108. <image :src="item.image" mode="aspectFill"></image>
  109. </view>
  110. </view>
  111. <view class="middle-boxs"
  112. v-else
  113. :key="index">
  114. <view style="padding: 20rpx;"></view>
  115. <view class="middle-two-2">{{ item.title }}</view>
  116. <view class="middle-box">
  117. <view class="middlex-minBox-2">
  118. <uv-parse :content="item.details"></uv-parse>
  119. </view>
  120. </view>
  121. <view class="img-2">
  122. <image :src="item.image" mode="aspectFill"></image>
  123. </view>
  124. </view>
  125. </template>
  126. <!-- <view class="middle-bottom">
  127. <view>*仅限前</view>
  128. <text>1000</text>
  129. <view>充值会员</view>
  130. </view> -->
  131. <view class="middle-bottom">
  132. {{ configList.vip_text }}
  133. </view>
  134. </view>
  135. <tabber select="member" />
  136. </view>
  137. </template>
  138. <script>
  139. import tabber from '@/components/base/tabbar.vue'
  140. import { mapState } from 'vuex'
  141. export default {
  142. components: {
  143. tabber,
  144. },
  145. data() {
  146. return {
  147. bannerList: [],
  148. vipInfoList: [],
  149. leftClick : false,
  150. };
  151. },
  152. computed : {
  153. ...mapState(['userInfo', 'riceInfo']),
  154. },
  155. onLoad({leftClick}) {
  156. this.leftClick = leftClick
  157. },
  158. onShow() {
  159. this.getBanner()
  160. this.getRiceVipList()
  161. this.$store.commit('getRiceInfo')
  162. if(uni.getStorageSync('token')){
  163. this.$store.commit('getUserInfo')
  164. }
  165. },
  166. methods : {
  167. // 获取轮播图
  168. getBanner(){
  169. this.$api('getRiceBanner', res => {
  170. if(res.code == 200){
  171. this.bannerList = res.result
  172. }
  173. })
  174. },
  175. // 获取轮播图
  176. getRiceVipList(){
  177. this.$api('getRiceVipList', res => {
  178. if(res.code == 200){
  179. this.vipInfoList = res.result
  180. }
  181. })
  182. },
  183. // 开通会员
  184. submitOpen(){
  185. uni.showModal({
  186. title: this.configList.vip_rloe,
  187. confirmText: '去开通',
  188. success : res => {
  189. if(res.confirm){
  190. uni.navigateTo({
  191. url: '/pages/index/category'
  192. })
  193. }
  194. },
  195. })
  196. },
  197. }
  198. }
  199. </script>
  200. <style lang="scss">
  201. .page {
  202. min-height: 100vh;
  203. color: #F3F3F3;
  204. z-index: 0;
  205. .swipe {
  206. overflow: hidden;
  207. border-radius: 20rpx;
  208. margin: 20rpx;
  209. }
  210. .vip{
  211. background: url(/static/image/member/a.png);
  212. background-size: 100% 100%;
  213. margin: 20rpx;
  214. position: relative;
  215. color: #000;
  216. padding-bottom: 10rpx;
  217. .title1{
  218. padding: 10rpx 60rpx;
  219. }
  220. .title2{
  221. position: absolute;
  222. left: 300rpx;
  223. top: 30rpx;
  224. }
  225. .box-content{
  226. background-color: #00000013;
  227. padding: 50rpx;
  228. margin: 40rpx;
  229. text-align: center;
  230. border-radius: 20rpx;
  231. font-size: 50rpx;
  232. font-weight: 900;
  233. margin-bottom: 0;
  234. text{
  235. color: #f40;
  236. }
  237. }
  238. .di{
  239. display: flex;
  240. justify-content: space-between;
  241. padding: 20rpx;
  242. align-items: flex-end;
  243. .pad{
  244. font-size: 26rpx;
  245. }
  246. .submitOpen{
  247. padding: 20rpx 40rpx;
  248. border-radius: 40rpx;
  249. background-color: #F6CD59;
  250. color: #fff;
  251. font-size: 26rpx;
  252. }
  253. }
  254. .tips-click{
  255. font-size: 26rpx;
  256. text{
  257. color: #A3D250;
  258. }
  259. }
  260. }
  261. .middle {
  262. margin: 20rpx;
  263. border-radius: 16rpx;
  264. background-color: #fff;
  265. padding-top: 20rpx;
  266. .rights {
  267. margin-left: 20rpx;
  268. padding: 0 20rpx;
  269. color: #474747;
  270. font-size: 32rpx;
  271. font-weight: 600;
  272. border-left: 6rpx solid #A3D250;
  273. }
  274. .middle-one {
  275. font-size: 28rpx;
  276. padding: 10rpx 120rpx 10rpx 40rpx;
  277. color: #D15206;
  278. }
  279. .middle-boxs {
  280. padding: 40rpx 40rpx 20rpx 20rpx;
  281. position: relative;
  282. margin-top: 40rpx;
  283. .middle-two-1,
  284. .middle-two-2,
  285. .middle-two-3 {
  286. display: inline-block;
  287. font-size: 32rpx;
  288. font-weight: 600;
  289. color: #474747;
  290. padding: 10rpx 40rpx;
  291. background-color: #F6CD59;
  292. border-radius: 30rpx;
  293. }
  294. .middle-two-2 {
  295. position: absolute;
  296. top: 10rpx;
  297. right: 20rpx;
  298. }
  299. .middle-box {
  300. margin-top: -30rpx;
  301. min-height: 160rpx;
  302. background-color: #FFFBF2;
  303. .middlex-minBox {
  304. display: flex;
  305. flex-direction: column;
  306. padding: 60rpx 0rpx 30rpx 40rpx;
  307. font-size: 24rpx;
  308. color: #474747;
  309. .middle-box-one {
  310. display: flex;
  311. align-items: center;
  312. }
  313. }
  314. .middlex-minBox-2 {
  315. display: flex;
  316. padding: 80rpx 0rpx 30rpx 40rpx;
  317. font-size: 24rpx;
  318. color: #474747;
  319. flex-direction: column;
  320. justify-content: center;
  321. margin-right: 10rpx;
  322. .middle-box-one {
  323. display: flex;
  324. justify-content: flex-end;
  325. align-items: center;
  326. }
  327. view:nth-child(2) {
  328. font-size: 28rpx;
  329. color: #D15206;
  330. }
  331. view:nth-child(3) {
  332. font-size: 28rpx;
  333. color: #D15206;
  334. }
  335. }
  336. }
  337. .img {
  338. position: absolute;
  339. height: 220rpx;
  340. width: 180rpx;
  341. top: -40rpx;
  342. right: 80rpx;
  343. image {
  344. width: 100%;
  345. height: 100%;
  346. }
  347. }
  348. .img-2 {
  349. position: absolute;
  350. height: 220rpx;
  351. width: 180rpx;
  352. top: -40rpx;
  353. left: 50rpx;
  354. image {
  355. width: 100%;
  356. height: 100%;
  357. }
  358. }
  359. }
  360. .middle-bottom {
  361. display: flex;
  362. color: #CCCCCC;
  363. padding: 10rpx 20rpx;
  364. font-size: 24rpx;
  365. text {
  366. color: #D15206;
  367. }
  368. }
  369. }
  370. }
  371. </style>