You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
640 lines
14 KiB
640 lines
14 KiB
<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">
|
|
¥{{Number(item.price)}}
|
|
</view>
|
|
<view class="avePrice">
|
|
¥{{item.price?(Number(item.price)/Number(item.month)).toFixed(2):""}}/月
|
|
</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="btn" style="background: gray;opacity: 0.5;" v-if="user.user_type == 40 && choseItem">
|
|
<text>¥{{Number(choseItem.price)}}</text>开卡{{Number(choseItem.month)}}个月
|
|
</view>
|
|
<template v-else>
|
|
<view class="btn" @click="gotoPay" v-if="choseItem">
|
|
<text>¥{{Number(choseItem.price)}}</text>开卡{{choseItem?Number(choseItem.month):""}}个月
|
|
</view>
|
|
</template>
|
|
</view>
|
|
<addShuiyin />
|
|
</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]
|
|
console.log("dealerPriceList",that.userInfo)
|
|
}
|
|
})
|
|
.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: center;
|
|
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 0 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>
|
|
|