<template>
|
|
<view class="pages" v-if="upgrade_list.length>0">
|
|
<view class="top">
|
|
<image :src="userInfo.headUrl" mode=""></image>
|
|
<view class="user_info">
|
|
<view :class="userInfo.level == 0? 'user_row m-t-32': 'user_row'">
|
|
<text class="user_name">{{userInfo.nickName}}</text>
|
|
<view class="lv" v-if="userInfo.level ==0">
|
|
<image :src="img_url+'vip/0.png'" mode=""></image>
|
|
</view>
|
|
<view class="lv" v-if="userInfo.level ==1">
|
|
<image :src="img_url+'vip/1.png'" mode=""></image>
|
|
</view>
|
|
<view class="lv" v-if="userInfo.level ==2">
|
|
<image :src="img_url+'vip/2.png'" mode=""></image>
|
|
</view>
|
|
<view class="lv" v-if="userInfo.level ==3">
|
|
<image :src="img_url+'vip/3.png'" mode=""></image>
|
|
</view>
|
|
<view class="lv" v-if="userInfo.level ==4">
|
|
<image :src="img_url+'vip/4.png'" mode=""></image>
|
|
</view>
|
|
</view>
|
|
<text class="expire_time" v-if="userInfo.level !==0 && userInfo.levelTime" >到期时间:{{userInfo.levelTime}}</text>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="card">
|
|
<view class="title">
|
|
<image :src="img_url+'member/min.png'" mode=""></image>
|
|
<text>耀实惠 等级越高,实惠更多!</text>
|
|
</view>
|
|
<view class="select_pic_video">
|
|
<u-subsection mode="subsection" :list="listPicVideo" fontSize="36" height="64" :current="curNow"
|
|
@change="sectionChange"></u-subsection>
|
|
</view>
|
|
<!-- 升级 -->
|
|
<view v-if="curNow == 0">
|
|
<view class="upgrade">
|
|
<view class="item" v-for="(item,index) in upgrade_list" :key="index">
|
|
<view :class="index== status? 'item select_item ': 'item'" @click="changeStatus(index)">
|
|
<text class="title">{{item.title}}</text>
|
|
<view class="momey_box">
|
|
<text class="icons">¥</text>
|
|
<text class="price">{{item.money}}</text>
|
|
</view>
|
|
<view class="old_money">
|
|
<text>原价:</text>
|
|
<text class="through">¥{{item.oldMoney}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 权益 -->
|
|
<view class="equities">
|
|
<view class="title">
|
|
<image :src="img_url+'member/max.png'" mode=""></image>
|
|
<text>{{upgrade_list[status].name}}</text>
|
|
</view>
|
|
<view class="item">
|
|
<rich-text :nodes="upgrade_list[status].concert"></rich-text>
|
|
</view>
|
|
</view>
|
|
|
|
</view>
|
|
<!-- 续费 -->
|
|
<view v-if="curNow == 1">
|
|
<view class="select">
|
|
<view class="item" v-for="(item,index) in select_list" :key="index">
|
|
<view :class="index== status_tow? 'item select_item ': 'item'" @click="changeStatus(index)">
|
|
<text class="title">{{item.name}}</text>
|
|
<text class="price" v-if="index == 0">¥{{item.money}}/{{item.overdue}}{{ item.overdueType==0?'天':'h'}}</text>
|
|
<text class="price" v-else>¥{{item.money}}/年</text>
|
|
<view class="old_money">
|
|
<text>原价:</text>
|
|
<text class="through">¥{{item.oldMoney}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 权益 -->
|
|
<view class="equities">
|
|
<view class="title">
|
|
<image :src="img_url+'member/max.png'" mode=""></image>
|
|
<text v-if="curNow == 0">{{upgrade_list[status].title}}</text>
|
|
<text v-else>{{select_list[status_tow].title}}</text>
|
|
</view>
|
|
<rich-text v-if="curNow == 0"> :nodes="upgrade_list[status].concert"></rich-text>
|
|
<rich-text v-else :nodes="select_list[status_tow].concert"></rich-text>
|
|
<!-- <view class="item" v-for="(item,index) in select_list[status].equitiesList" :key="index">
|
|
<image :src="img_url+'member/dot.png'" mode=""></image>
|
|
<text>{{item}}</text>
|
|
</view> -->
|
|
</view>
|
|
</view>
|
|
<!-- 按钮 -->
|
|
<view class="btn">
|
|
<view class="left">
|
|
<text class="icons">¥</text>
|
|
<text class="num" v-if="curNow == 0">{{upgrade_list[status].money}}</text>
|
|
<text class="num" v-else>{{select_list[status_tow].money}}</text>
|
|
<!-- <text class="info_text">开通即享特权</text> -->
|
|
</view>
|
|
<text v-if="curNow == 0" class="right" @click="toDredge">升级</text>
|
|
<text v-else class="right" @click="toDredge">续费</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import config_img from "@/utils/js/config.js"
|
|
export default {
|
|
data() {
|
|
return {
|
|
img_url: config_img.img_url,
|
|
status: 0,
|
|
status_tow: 0,
|
|
listPicVideo: ['升级', '续费'],
|
|
curNow: 0,
|
|
upgrade_list: [],
|
|
select_list: [],
|
|
userInfo: {},
|
|
url: null, //从哪里来
|
|
}
|
|
},
|
|
onUnload() {
|
|
uni.navigateBack({
|
|
delta: 3
|
|
})
|
|
},
|
|
onLoad() {
|
|
this.userInfo = uni.getStorageSync("__user_info");
|
|
this.getVipRoleList();
|
|
|
|
},
|
|
methods: {
|
|
// 刷新用户个人信息
|
|
getUserInfo () {
|
|
uni.showLoading();
|
|
this.$api('getUserInfo')
|
|
.then(res => {
|
|
let { code, result, message } = res
|
|
uni.hideLoading();
|
|
if (code === 200) {
|
|
const userInfo = {...result.userInfo,...result.account}
|
|
this.$storage.setStorage("__user_info",userInfo)
|
|
console.log(userInfo)
|
|
} else {
|
|
this.$Toast(message)
|
|
|
|
}
|
|
})
|
|
.catch(err => {
|
|
this.$Toast(err.message)
|
|
uni.hideLoading();
|
|
})
|
|
},
|
|
sectionChange(index) {
|
|
console.log(index)
|
|
this.curNow = index
|
|
if(index == 0) {
|
|
// 升级
|
|
this.getVipRoleList();
|
|
}else {
|
|
// 续费
|
|
this.getVipList();
|
|
}
|
|
// this.rightList[index].show_pic_video = !this.rightList[index].show_pic_video
|
|
// if(index == 0) {
|
|
// this.show_pic_video = true
|
|
// }else {
|
|
// this.show_pic_video = false
|
|
// }
|
|
// this.curNow = index;
|
|
},
|
|
getVipList() {
|
|
// 续费
|
|
uni.showLoading();
|
|
this.$api('getVipList').then(res => {
|
|
let { code, result, message } = res;
|
|
uni.hideLoading();
|
|
if(code == 200) {
|
|
console.log(result)
|
|
this.select_list = result.records
|
|
}else {
|
|
this.$Toast(message);
|
|
}
|
|
}).catch(err => {
|
|
uni.hideLoading();
|
|
this.$Toast(err.message);
|
|
})
|
|
},
|
|
getVipRoleList() {
|
|
// 升级
|
|
uni.showLoading();
|
|
this.$api('getVipRoleList').then(res => {
|
|
let { code, result, message } = res;
|
|
uni.hideLoading();
|
|
if(code == 200) {
|
|
console.log(result)
|
|
this.upgrade_list = result.records
|
|
}else {
|
|
this.$Toast(message);
|
|
}
|
|
}).catch(err => {
|
|
uni.hideLoading();
|
|
this.$Toast(err.message);
|
|
})
|
|
},
|
|
changeStatus(index) {
|
|
console.log(index,this.curNow)
|
|
if(this.curNow == 0) {
|
|
this.status = index
|
|
} else {
|
|
this.status_tow = index
|
|
}
|
|
},
|
|
toDredge() {
|
|
if(this.curNow == 0) {
|
|
// 升级 0
|
|
const id = this.upgrade_list[this.status].id;
|
|
if(this.userInfo.cardType == 0) {
|
|
uni.navigateTo({
|
|
url: "./../dredge/index?type=0&id="+id
|
|
})
|
|
}else{
|
|
this.toUpgradesRenewals(0,id)
|
|
}
|
|
} else {
|
|
// 续费 1
|
|
const id = this.select_list[this.status_tow].id;
|
|
if(this.userInfo.cardType == 0) {
|
|
uni.navigateTo({
|
|
url: "../dredge/index?type=1&id="+id
|
|
})
|
|
}else{
|
|
this.toUpgradesRenewals(1,id)
|
|
}
|
|
}
|
|
},
|
|
toUpgradesRenewals(type,id) {
|
|
let url = type == 0 ? 'vipRolePay': 'vipPay'
|
|
this.$api(url,{id}).then(res =>{
|
|
const { code, result, message } = res
|
|
console.log(res)
|
|
if (code == 200) {
|
|
uni.requestPayment({
|
|
provider: 'wxpay',
|
|
timeStamp: result.timeStamp,
|
|
nonceStr: result.nonceStr,
|
|
package: result.packageValue,
|
|
signType: result.signType,
|
|
paySign: result.paySign,
|
|
success: res => {
|
|
this.$Toast('支付成功');
|
|
// 刷新用户数据
|
|
this.getUserInfo();
|
|
setTimeout(() => {
|
|
this.$tools.navigateTo({
|
|
url: './../upgrades_renewals/index'
|
|
})
|
|
},1500)
|
|
},
|
|
fail:error=>{
|
|
this.$Toast('取消支付')
|
|
}
|
|
})
|
|
} else{
|
|
this.$Toast(message)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.pages {
|
|
position: relative;
|
|
.top {
|
|
background-color: #000;
|
|
height: 404rpx;
|
|
display: flex;
|
|
align-items: flex-start;
|
|
border-bottom-left-radius: 49rpx;
|
|
border-bottom-right-radius: 49rpx;
|
|
|
|
image {
|
|
width: 160rpx;
|
|
height: 160rpx;
|
|
border-radius: 50%;
|
|
margin-top: 31rpx;
|
|
margin-left: 45rpx;
|
|
}
|
|
|
|
.user_info {
|
|
display: flex;
|
|
padding-left: 17rpx;
|
|
flex-direction: column;
|
|
|
|
.user_row {
|
|
padding-top: 53rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
color: #fff;
|
|
|
|
.user_name {
|
|
font-size: 38rpx;
|
|
}
|
|
|
|
.lv {
|
|
position: relative;
|
|
margin-left: 20rpx;
|
|
width: 144rpx;
|
|
height: 42rpx;
|
|
image {
|
|
position: absolute;
|
|
width: 144rpx;
|
|
height: 42rpx;
|
|
border-radius: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
text {
|
|
position: absolute;
|
|
display: inline-block;
|
|
width: 144rpx;
|
|
padding-top: 10rpx;
|
|
padding-left: 45rpx;
|
|
box-sizing: border-box;
|
|
font-size: 20rpx;
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.expire_time {
|
|
padding-top: 20rpx;
|
|
font-size: 32rpx;
|
|
}
|
|
}
|
|
|
|
text {
|
|
color: #fff;
|
|
}
|
|
}
|
|
|
|
.card {
|
|
position: absolute;
|
|
top: 224rpx;
|
|
left: 12rpx;
|
|
right: 12rpx;
|
|
width: 729rpx;
|
|
border-top-left-radius: 70rpx;
|
|
border-top-right-radius: 70rpx;
|
|
background-color: #fff;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
|
|
.title {
|
|
margin-top: 42rpx;
|
|
margin-bottom: 42rpx;
|
|
|
|
image {
|
|
width: 55rpx;
|
|
height: 40rpx;
|
|
margin-right: 10rpx;
|
|
}
|
|
|
|
text {
|
|
font-size: 36rpx;
|
|
font-weight: bold;
|
|
color: #000;
|
|
}
|
|
}
|
|
|
|
.select_pic_video {
|
|
background-color: #fff;
|
|
border-radius: 25rpx;
|
|
width: 693rpx;
|
|
height: 64rpx;
|
|
margin: 0 auto;
|
|
background-color: #F5F5F5;
|
|
font-size: 32rpx;
|
|
|
|
/deep/ .u-subsection {
|
|
border-radius: 25rpx !important;
|
|
width: 700rpx !important;
|
|
|
|
.u-item {
|
|
width: 346rpx !important;
|
|
border: none !important;
|
|
}
|
|
|
|
.u-item-bg {
|
|
width: 350rpx !important;
|
|
background-color: #F6D27F !important;
|
|
border-radius: 25rpx !important;
|
|
color: #FFF;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
.upgrade {
|
|
margin-top: 51rpx;
|
|
display: flex;
|
|
// justify-content: space-between;
|
|
.item {
|
|
width: 200rpx;
|
|
// height: 224rpx;
|
|
margin: 0 15rpx;
|
|
background-color: #F5F5F5;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
border-radius: 15rpx;
|
|
// padding-bottom: 20rpx;
|
|
.title {
|
|
margin-top: 31rpx;
|
|
margin-bottom: 0;
|
|
color: #8B5B13;
|
|
font-size: 36rpx;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.momey_box {
|
|
margin-top: 20rpx;
|
|
margin-bottom: 22rpx;
|
|
.icons {
|
|
font-size: 36rpx;
|
|
}
|
|
|
|
.price {
|
|
font-size: 49rpx;
|
|
}
|
|
}
|
|
|
|
.old_money {
|
|
margin-bottom: 35rpx;
|
|
font-size: 25rpx;
|
|
|
|
.through {
|
|
text-decoration: line-through;
|
|
}
|
|
}
|
|
}
|
|
|
|
.select_item {
|
|
background-color: #FFEDCF;
|
|
color: #8B5B13;
|
|
}
|
|
}
|
|
|
|
|
|
.select {
|
|
width: 605rpx;
|
|
margin: 0 auto;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: space-between;
|
|
|
|
.item {
|
|
background-color: #F5F5F5;
|
|
margin-top: 33rpx;
|
|
color: #000000;
|
|
width: 285rpx;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
border-radius: 15rpx;
|
|
|
|
.title {
|
|
margin-top: 0rpx;
|
|
margin-bottom: 0;
|
|
font-size: 36rpx;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.price {
|
|
font-size: 40rpx;
|
|
margin-top: 20rpx;
|
|
margin-bottom: 22rpx;
|
|
}
|
|
|
|
.old_money {
|
|
margin-bottom: 35rpx;
|
|
font-size: 25rpx;
|
|
|
|
.through {
|
|
text-decoration: line-through;
|
|
}
|
|
}
|
|
}
|
|
|
|
.select_item {
|
|
background-color: #FFEDCF;
|
|
margin: 0;
|
|
padding-top: 32rpx;
|
|
color: #8B5B13;
|
|
}
|
|
}
|
|
|
|
.equities {
|
|
margin-top: 57rpx;
|
|
margin-left: 65rpx;
|
|
width: 596rpx;
|
|
|
|
.title {
|
|
margin-top: 0;
|
|
margin-bottom: 0;
|
|
|
|
image {
|
|
width: 61rpx;
|
|
height: 41rpx;
|
|
}
|
|
|
|
text {
|
|
font-size: 36rpx;
|
|
font-weight: bold;
|
|
color: #000;
|
|
}
|
|
}
|
|
image {
|
|
width: 31rpx;
|
|
height: 35rpx;
|
|
margin-top: 8rpx;
|
|
margin-right: 17rpx;
|
|
}
|
|
font-size: 32rpx;
|
|
}
|
|
|
|
.btn {
|
|
width: 642rpx;
|
|
height: 93rpx;
|
|
border-radius: 47rpx;
|
|
overflow: hidden;
|
|
margin-top: 140rpx;
|
|
margin-bottom: 47rpx;
|
|
display: flex;
|
|
|
|
.left {
|
|
width: 309rpx;
|
|
background-color: #302F2D;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
|
|
.icons {
|
|
font-size: 24rpx;
|
|
padding-top: 10rpx;
|
|
color: #FFDA85;
|
|
}
|
|
|
|
.num {
|
|
font-size: 43rpx;
|
|
color: #FFDA85;
|
|
}
|
|
|
|
.info_text {
|
|
font-size: 14rpx;
|
|
padding-left: 10rpx;
|
|
padding-top: 20rpx;
|
|
color: #C2B09A;
|
|
}
|
|
}
|
|
|
|
.right {
|
|
flex: 1;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
font-size: 38rpx;
|
|
font-weight: bold;
|
|
color: #6F4920;
|
|
background-color: #F6D27F;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
</style>
|