|
|
- <template>
- <view class="pages">
- <view class="top flex align-center">
- <image :src="userInfo.headUrl" mode=""></image>
- <text class="font-30 font-weight-bold">{{userInfo.nickName}}</text>
- </view>
- <view class="card">
- <view class="title">
- <image :src="img_url+'member/min.png'" mode=""></image>
- <!-- <text>会员购物 更省钱、更实惠</text> -->
- <text>等级越高,实惠更多!</text>
- </view>
- <view class="select">
- <view class="item" v-for="(item,index) in select_list" :key="index">
- <view :class="index== status? 'item select ': 'item'" @click="changeStatus(index)">
- <text class="title">{{item.name}}</text>
- <text class="price" v-if="index==0">¥{{item.money}}/{{'计算'}}</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>{{select_list[status].title}}</text>
- </view>
- <rich-text :nodes="select_list[status].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 class="btn">
- <view class="left">
- <text class="icons">¥</text>
- <text class="num">{{select_list[status].money}}</text>
- <text class="info_text">开通即享特权</text>
- </view>
- <text class="right" @click="toDredge">立即开通</text>
- </view>
- </view>
- </view>
- </template>
-
- <script>
- import config_img from "@/utils/js/config.js"
- export default {
- data() {
- return {
- status: 0,
- img_url: config_img.img_url,
- select_list: [],
- userInfo:{}
- }
- },
- onLoad() {
- this.getVipList();
- this.userInfo = uni.getStorageSync("__user_info");
- console.log(this.userInfo)
- },
- methods: {
- changeStatus(index) {
- this.status = 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);
- })
- },
- // 获取用户信息
- 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();
- })
- },
- toDredge() {
- const id = this.select_list[this.status].id
- if(this.userInfo.cardType == 0){
- uni.navigateTo({
- url: "./dredge/index?id="+id
- })
- }else {
-
- this.$api('vipPay',{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: 270rpx;
- display: flex;
- align-items: flex-start;
- border-bottom-left-radius: 70rpx;
- border-bottom-right-radius: 70rpx;
- image{
- width: 120rpx;
- height: 120rpx;
- border-radius: 50%;
- margin-top: 31rpx;
- margin-left: 45rpx;
- }
- text{
- color: #fff;
- padding-top: 65rpx;
- padding-left: 17rpx;
- font-size: 30rpx;
- font-weight: bold;
- }
- }
- .card{
- position: absolute;
- top: 175rpx;
- left: 10rpx;
- 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: 23rpx;
- margin-bottom: 30rpx;
- image{
- width: 45rpx;
- height: 30rpx;
- }
- text{
- font-size: 32rpx;
- font-weight: bold;
- color: #000;
- }
- }
- .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: 37rpx;
- margin-bottom: 0;
- font-size: 35rpx;
- font-weight: bold;
- }
- .price{
- font-size: 30rpx;
- margin-top: 20rpx;
- margin-bottom: 22rpx;
- }
- .old_money{
- margin-bottom: 35rpx;
- font-size: 16rpx;
- .through{
- text-decoration: line-through;
- }
- }
- }
- .select{
- 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: 32rpx;
- font-weight: bold;
- color: #000;
- }
- }
- .item{
- margin-top: 18rpx;
- display: flex;
- justify-content: flex-start;
- image{
- width: 21rpx;
- height: 25rpx;
- margin-top: 8rpx;
- margin-right: 17rpx;
- }
- text{
- display: inline-block;
- width: 557rpx;
- font-size: 28rpx;
- }
- }
- }
- .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: 28rpx;
- font-weight: bold;
- color: #6F4920;
- background-color: #F6D27F;
- }
- }
-
- }
- }
- </style>
|