<template> <view> <view class="user-vip"> <view class="header"> <view class="user-vip-info flex"> <u-image width="110rpx" height="110rpx" border-radius="50%" :src="userInfo.avatar"></u-image> <view class="m-l-20"> <view class="user-text white xxl flex">{{userInfo.nickname}}</view> <view class="flex"> <view class="user-level white xs flex row-center m-t-10">当前等级:{{userInfo.level_name || "无"}}</view> </view> </view> </view> </view> <view class="content m-t-50"> <view class="vip-swiper-container"> <swiper class="swiper" style="height: 360rpx" previous-margin="30rpx" :current="currentIndex" @change="bindchange"> <swiper-item v-for="(item, index) in levelList" :key="index"> <view class="vip-card-item" :style="'background-image: url(' + item.background_image + ');'"> <view class="flex row-between"> <view class="flex grade white sm"> {{item.lock_desc}} <!-- <view v-if="item.current_level_status == 1" class="flex grade white sm">当前等级</view> <view v-else-if="item.current_level_status == -1" class="flex white sm ml20">未解锁</view> <view v-else-if="item.current_level_status == 0" class="flex white sm ml20">已解锁</view> --> </view> <image class="grade-icon m-r-34" :src="item.image"></image> </view> <view class="flex row-between vip-name white"> <view class="bold">{{item.name}}</view> <!-- <view class="sm">{{item.tips2}}</view> --> </view> <view class="flex row-center m-l-30 m-r-30" v-if="item.diff_growth_percent"> <view class="vip-progress bg-white flex"> <view class="vip-progress-bar" :style="'width: ' + (item.diff_growth_percent*100) + '%'"></view> </view> </view> <view class="flex row-between m-t-30" style="padding: 0 30rpx"> <view class="sm white" style="line-height: 36rpx" v-if="item.current_level_status == 0"> {{item.tips1}} </view> <router-link to="/bundle/pages/user_growth/user_growth" class="flex" v-else> <view class="sm white" style="line-height: 36rpx"> <!-- {{item.current_level_status == 0 ? '当前高于该等级' : item.current_growth_tips}} --> {{item.tips1}} <u-icon name="arrow-right"></u-icon> </view> </router-link> <view class="white">{{item.tips2}}</view> </view> </view> </swiper-item> </swiper> </view> <view class="vip-grade-rule"> <view class="title flex"> <view class="line br60"></view> <view class="xl m-l-20 bold">说明</view> </view> <view class="p-t-20"> <text class="rule-content column lighter"> {{growthRule}} </text> </view> </view> <!-- <view class="vip-rights"> <view class="title flex"> <view class="line br60"></view> <view class="xl ml20 bold">会员权益</view> </view> <view class="rights-list flex"> <view v-for="(item, index) in privilegeList" :key="index" class="rights-item column-center"> <image class="mb10" :src="item.image"></image> <view class="sm">{{item.name}}</view> </view> </view> </view> --> </view> </view> <loading-view v-if="!userInfo.nickname"></loading-view> </view> </template> <script> import { getLevelList } from '@/api/user'; export default { data() { return { userInfo: {}, currentIndex: 0, levelList: [], growthRule: "", privilegeList: [] }; }, onLoad() { this.getLevelListFun(); }, methods: { bindchange(e) { let { current } = e.detail; let currentLevel = this.levelList[current]; this.currentIndex = current }, getLevelListFun() { getLevelList().then(res => { const { code, data } = res; if (code != 1) return; const { user, level_intro, level } = data; let index = level.findIndex(item => item.current_level_status == 1); if (index == -1) index = 0; this.userInfo = user this.growthRule = level_intro this.levelList = level this.currentIndex = index }); }, } }; </script> <style lang="scss"> page { background-color: #fff; background-image: url(../../static/vip_grade_bg.png); background-size: 100% auto; background-repeat: no-repeat; .user-vip { .header { padding-top: 40rpx; .user-vip-info { padding-left: 30rpx; .user-level { border: 1px solid white; border-radius: 100rpx; padding: 4rpx 20rpx; line-height: 30rpx; } .user-text { line-height: 50rpx; font-weight: bold; } } } .content { .vip-card-item { height: 360rpx; width: 690rpx; position: relative; background-size: 100% 100%; .grade { line-height: 36rpx; background-color: rgba(0, 0, 0, 0.5); border-top-right-radius: 100rpx; border-bottom-right-radius: 100rpx; height: 50rpx; padding: 0 28rpx; } .user-grade { line-height: 36rpx; margin-left: 30rpx; } .grade-icon { width: 160rpx; height: 145rpx; } .vip-name { padding: 10rpx 30rpx; font-size: 46rpx; text-align: center; align-items: flex-end; margin-bottom: 30rpx; margin-top: -20rpx; } .vip-progress { height: 8rpx; border-radius: 8rpx; width: 100%; overflow: hidden; .vip-progress-bar { background-color: #f8d07c; height: 100%; } } } .vip-grade-rule { margin: 24rpx 40rpx; .title { .line { width: 8rpx; height: 34rpx; background-color: #f79c0c; } } } .vip-rights { margin: 24rpx 40rpx; .title { padding: 28rpx 0; .line { width: 8rpx; height: 34rpx; background-color: #f79c0c; } } .rights-item { width: 25%; padding-bottom: 30rpx; image { width: 82rpx; height: 82rpx; } } } } } } </style>