青蛙卖大米小程序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.

431 lines
8.6 KiB

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