254 lines
6.3 KiB
Vue
254 lines
6.3 KiB
Vue
|
<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>
|