<template> <view class="member"> <view> <u-navbar title="开通续费管理" :border-bottom="false" title-color="#333" :background="background"></u-navbar> </view> <!-- <view class="khy"> 开通<text v-if="type=='fx'">分销</text>会员,人均立省¥<text>2389</text> </view> --> <view class="tips"> <image src="/static/default-logo.png" mode="" class="headIcon"></image> <view class="meInfo"> <view class="info"> <view class="name"> {{userInfo.nick_name}} </view> <view class="hy"> {{userInfo.user_type_text}} </view> </view> <view class="time" v-if="userInfo.user_type == 20 || userInfo.user_type == 30"> 会员有效期至{{type == 'hy'?userInfo.effective_time:userInfo.fx_effective_time}} </view> </view> <view class="buyInfo" @click="goBuyInfo"> 购买记录 <u-icon name="arrow-right"></u-icon> </view> </view> <view class="notVip"> <view class="openVip"> 开通<text v-if="type=='fx'">分销</text>会员获得以下 <text>10项</text>特权 </view> <view class="vipList"> <view class="vipItem"> <image :src="$picUrl+'/static/member/my.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 天天免邮 </view> </view> <view class="vipItem"> <image :src="$picUrl+'/static/member/lp.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 超低会员价 </view> </view> <view class="vipItem"> <image :src="$picUrl+'/static/member/dz.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 折上95折 </view> </view> <view class="vipItem"> <image :src="$picUrl+'/static/member/th.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 退换免运费 </view> </view> <view class="vipItem"> <image :src="$picUrl+'/static/member/cx.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 促销福利 </view> </view> <view class="vipItem"> <image :src="$picUrl+'/static/member/tq.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 极速售后 </view> </view> <view class="vipItem"> <image :src="$picUrl+'/static/member/my.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 门店特权 </view> </view> <view class="vipItem"> <image :src="$picUrl+'/static/member/cj.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 不回本退差价 </view> </view> <view class="vipItem"> <image :src="$picUrl+'/static/member/tg.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 团购优惠券 </view> </view> <view class="vipItem"> <image :src="$picUrl+'/static/member/jf.png'" mode="" class="itemImg"></image> <view class="vipInfo"> 双倍积分 </view> </view> </view> <view class="choseType"> <view class="typeTitle"> 选择 <text v-if="userInfo.user_type==20 || userInfo.user_type==30">续费</text> <text v-if="userInfo.user_type==10">开卡</text> 套餐 </view> <view class="typeList"> <view class="first common" v-for="(item,index) in packageList" :key="index" :style="{'border':isChose==index?'2rpx solid #F34A40':none}" @click="chosePackage(item,index)"> <view class="limitPrice" v-if="index==0"> 限时活动价 </view> <!-- :style="{'marginTop':isChose!=index?'62rpx':0}" --> <view class="timeLong"> {{Number(item.month)}}个月 </view> <view class="firPrice"> ¥{{item.price?Number(item.price):0}} </view> <view class="avePrice"> ¥{{item.price&&item.month?(Number(item.price)/Number(item.month)).toFixed(2):0}}/月 </view> </view> </view> <view class="payType"> <view v-for="(item,index) in paymentMethods" :key="index" @click="chosePayType(item,index)"> <view class="firLine"> <view class="left"> <image src="/static/order/wChat.png" mode="" class="weChatImg" v-if="item.method=='wechat'"></image> <image :src="$picUrl+'/static/member/others.png'" mode="" class="weChatImg" v-if="item.method=='balance'"></image> <text v-if="item.method=='wechat'">微信支付</text> <text v-if="item.method=='balance'">余额支付</text> </view> <image src="../../static/order/right.png" mode="" class="choseImg" v-if="item.is_default"> </image> </view> <view class="line"> </view> </view> </view> </view> </view> <view class="footer"> <view class="fLeft"> <view class="ys" v-if="choseItem"> 已省 <text>¥{{choseItem.cheap_price?Number((choseItem.cheap_price).toFixed(2)):0}}</text> </view> <!-- <view class="yj"> 原价 ¥{{choseItem.price}} </view> --> </view> <view class="btn" style="background: gray;opacity: 0.5;" v-if="user.user_type == 40"> <text>¥{{choseItem.price?Number(choseItem.price):0}}</text>开卡{{choseItem.month?Number(choseItem.month):0}}个月 </view> <view class="btn" @click="gotoPay" v-else> <text>¥{{choseItem.price?Number(choseItem.price):0}}</text>开卡{{choseItem.month?Number(choseItem.month):0}}个月 </view> </view> </view> </template> <script> // import img from "@/static/member/top.png"; import * as member from '@/api/member/index.js'; import { Wechat } from '@/core/payment' export default { data() { let img = 'https://www.royaum.com.cn/static/member/top.png' return { packageList: [], userInfo: {}, payTypeChose: true, isChose: 0, isVip: false, background: { background: 'url(' + img + ') center top no-repeat', backgroundSize: '100% auto', }, paymentMethods: [], choseItem: {}, payType: 'wechat', type: 'hy', user: '' } }, onShow() { this.getMemberInfo() }, onLoad(options) { this.user = uni.getStorageSync('userInfo') this.type = options.type }, methods: { getMemberInfo() { const that = this let params = { client: 'MP-WEIXIN' } if (that.type == 'hy') { member.info(params) .then(res => { if (res.status == 200) { that.userInfo = res.data.list.personal; that.packageList = res.data.list.list; that.paymentMethods = res.data.list.paymentMethods; that.choseItem = that.packageList[0] } }) .finally(() => that.isLoading = false) } else { member.dealerPriceList(params) .then(res => { if (res.status == 200) { that.userInfo = res.data.list.personal; that.packageList = res.data.list.list; that.paymentMethods = res.data.list.paymentMethods; that.choseItem = that.packageList[0] } }) .finally(() => that.isLoading = false) } }, chosePackage(item, index) { this.isChose = index; this.choseItem = item; }, goBuyInfo() { uni.navigateTo({ url: '/pages/memberInfo/index?userInfo=' + JSON.stringify(this.userInfo) }) }, chosePayType(item, index) { // 选择支付方式 this.paymentMethods[index].is_default = true; this.payType = item.method; for (var i = 0; i < this.paymentMethods.length; i++) { if (i != index) { this.paymentMethods[i].is_default = false } } }, gotoPay() { // 去支付 if (this.payType == 'wechat') { this.weChatPay() } else if (this.payType == 'balance') { this.balancePay() } }, weChatPay() { // 微信支付 const that = this let params = { identity_id: that.choseItem.identity_id, method: 'wechat', client: 'MP-WEIXIN' } member.submit(params) .then(res => { let paymentData = res.data.payment Wechat.payment({ orderKey: res.data.payment.out_trade_no, ...paymentData }) .then((result) => { console.log(result) that.getMemberInfo(); }) .catch(err => { console.log(err) }) }) .finally(() => that.isLoading = false) }, balancePay() { // 余额支付 const that = this let params = { identity_id: that.choseItem.identity_id, method: 'balance', client: 'MP-WEIXIN' } member.submit(params) .then(res => { that.$toast(res.message) that.getMemberInfo(); }) .finally(() => that.isLoading = false) }, } } </script> <style lang="scss" scoped> .member { width: 100%; background: url('https://www.royaum.com.cn/static/member/merBack.png') center top no-repeat; background-size: 100% auto; position: relative; } .khy { height: 36rpx; font-size: 26rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #785B45; line-height: 36rpx; text-align: center; margin: 40rpx 0 28rpx 0; image { width: 15rpx; height: 10rpx; } text { height: 56rpx; font-size: 40rpx; font-family: PingFang SC, PingFang SC; font-weight: 600; color: #785B45; line-height: 56rpx; margin-right: 8rpx; } } .tips { width: 698rpx; height: 234rpx; margin: 46rpx 0 0 26rpx; background-image: url('https://www.royaum.com.cn/static/member/bg.png'); background-repeat: no-repeat; background-size: 100% 100%; display: flex; align-items: center; padding: 0rpx 0 0 34rpx; .headIcon { width: 114rpx; height: 114rpx; margin-right: 20rpx; margin-top: 12rpx; border-radius: 50%; } .meInfo { width: 360rpx; .info { display: flex; align-items: center; .name { height: 50rpx; font-size: 31rpx; font-weight: 500; color: #785B45; line-height: 50rpx; margin-right: 15rpx; max-width: 250rpx; overflow: hidden; white-space: nowrap; } .hy { width: 126rpx; height: 42rpx; background: rgba(255, 255, 255, 0.71); border-radius: 62rpx 62rpx 62rpx 62rpx; opacity: 1; text-align: center; font-size: 24rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #785B45; line-height: 42rpx; } } .time { height: 34rpx; font-size: 24rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #785B45; line-height: 34rpx; margin-top: 26rpx; } } .buyInfo { // width: 112rpx; height: 40rpx; font-size: 28rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #785B45; line-height: 40rpx; // margin-left: 86rpx; } } .notVip { padding-bottom: 200rpx; .openVip { height: 44rpx; font-size: 32rpx; font-family: PingFang SC, PingFang SC; font-weight: 500; color: #8B4338; line-height: 44rpx; margin: 30rpx 0 0 38rpx; text { color: #EF2C21; } } .vipList { display: flex; flex-wrap: wrap; margin: 24rpx 0 0 0rpx; .vipItem { display: flex; justify-content: center; flex-direction: column; align-items: center; margin-right: 6rpx; margin-bottom: 8rpx; .itemImg { width: 88rpx; height: 88rpx; } .vipInfo { width: 144rpx; height: 34rpx; font-size: 24rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #7D2D21; line-height: 34rpx; margin-top: 30rpx; text-align: center; } } } .choseType { width: 726rpx; height: 546rpx; background: #FFFFFF; border-radius: 12rpx 12rpx 12rpx 12rpx; opacity: 1; margin: 28rpx 0 0 12rpx; padding: 18rpx 0 0 26rpx; .typeTitle { height: 44rpx; font-size: 32rpx; font-family: PingFang SC, PingFang SC; font-weight: 500; color: #8B4338; line-height: 44rpx; } .typeList { display: flex; margin: 28rpx 0 0 22rpx; .first { margin-right: 12rpx; width: 220rpx; height: 242rpx; background: #FFEEE8; border-radius: 8rpx 8rpx 8rpx 8rpx; opacity: 1; // border: 2rpx solid #F34A40; .limitPrice { width: 169rpx; height: 46rpx; background: linear-gradient(180deg, #FFFFFF 0%, #FEF8F5 100%); border-radius: 0rpx 0rpx 0rpx 0rpx; opacity: 1; margin: 0 0 20rpx 32rpx; text-align: center; } .timeLong { width: 100%; text-align: center; height: 40rpx; font-size: 28rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #7D2D21; line-height: 40rpx; margin: 30rpx 0 12rpx 0; } .sec { margin-top: 62rpx; } .firPrice { width: 100%; text-align: center; height: 72rpx; font-size: 36rpx; font-family: PingFang SC, PingFang SC; font-weight: 600; color: #F34A40; line-height: 72rpx; } .avePrice { width: 100%; text-align: center; height: 34rpx; font-size: 24rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #F34A40; line-height: 34rpx; } } } .payType { margin-top: 30rpx; .firLine { display: flex; justify-content: space-between; .left { height: 40rpx; font-size: 28rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #7D2D21; line-height: 40rpx; display: flex; align-items: center; .weChatImg { width: 28rpx; height: 24rpx; margin-right: 12rpx; } } .choseImg { width: 34rpx; height: 24rpx; margin-right: 60rpx; } } .line { width: 622rpx; height: 0rpx; opacity: 1; border: 2rpx solid #F6F6F6; margin: 26rpx 0 26rpx 60rpx; } } } } .footer { position: fixed; bottom: 0rpx; height: 200rpx; width: 100%; display: flex; justify-content: space-between; align-items: center; z-index: 99; background-color: #fff; .fLeft { margin: 24rpx 0 0 44rpx; .ys { height: 40rpx; font-size: 28rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #7D2D21; line-height: 40rpx; width: 230rpx; text { height: 40rpx; font-size: 28rpx; font-family: PingFang SC, PingFang SC; font-weight: 500; color: #F34A40; line-height: 40rpx; } } .yj { width: 230rpx; height: 34rpx; font-size: 24rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #CAABA6; line-height: 34rpx; } } .btn { width: 440rpx; height: 80rpx; background: #F34A40; border-radius: 8rpx 8rpx 8rpx 8rpx; opacity: 1; margin: 22rpx 70rpx 0 0; text-align: center; font-size: 24rpx; font-family: PingFang SC, PingFang SC; font-weight: 500; color: #FFFFFF; text { font-size: 44rpx; font-family: PingFang SC, PingFang SC; font-weight: 500; color: #FFFFFF; line-height: 80rpx; } } } </style>