327 lines
7.8 KiB
Vue
Raw Normal View History

2025-08-01 11:39:06 +08:00
<template>
<view class="xilu">
<view class="page-foot bg-normal" @click.stop="submitRecharge()">
<view class="plr25 pb50">
<view :class="[agreeFlag ? 'btn1' : 'btn2']">支付¥{{rechargeInfo.recharge_amount || 0}} 立即开通</view>
</view>
</view>
<view class="container">
<view class="pt30 pb50 plr25">
<view class="xilu_info_nav">
<image v-if="web_url" :src="web_url+'/uniapp_image/xilu_bg_big.png'" mode="aspectFill" class="xilu_info_nav_bg"></image>
<view class="xilu_info_nav_view">
<view class="flex-box">
<image :src="userInfo.xilufitness_urls.avatar || '../../static/images/avatar.png'"
mode="aspectFill" class="xilu_head_img">
</image>
<view class="flex-grow-1 pl30 pr30">
<view class="flex-box">
<view class="flex-grow-1 m-ellipsis pr20 fs40 colf fw500 lh56">
{{userInfo.nickname || ''}}
</view>
<view @click.stop="cms_detail(6)" class="tdu fs28 cola lh40">充值须知</view>
</view>
<view class="col8 mt20 fs28 lh40" v-if="userInfo.is_vip == 0">未开通会员</view>
</view>
</view>
<view class="mt30 xilu_text">MEMBERSHIP CARD</view>
<view class="mt20 fs30 colf lh42">开通会员卡预计省¥{{rechargeInfo.cut_amount || 0}}/</view>
</view>
</view>
<view class="xilu_box">
<view class="colf fs36 colf lh36 pb10">充值开通</view>
<view>
<template v-for="(vo,keys) in recharge_list">
<view :class="[vo.id == recharge_id ? 'xilu_money_item active' : 'xilu_money_item']"
@click="chooseRecharge(vo)">
<text class="fs36 fw500">¥{{vo.recharge_amount || 0}}</text><text
class="fs24">到账{{vo.account_amount || vo.recharge_amount}}</text>
<image src="@/static/images/xilu_choose.png" mode="aspectFill"
class="xilu_money_item_choose" v-if="vo.id == recharge_id"></image>
</view>
</template>
</view>
</view>
<view class="xilu_box1">
<template v-if="member_tips">
<view class="fs36 colf lh36 pl25">会员权益</view>
<view class="mt30 xilu_interests colf p25">
<mp-html :content="member_tips"></mp-html>
</view>
</template>
<view class="xilu_box1_fixed flex-box">
<image @click="argeeAccount()"
:src="'../../static/images/xilu_radio_'+(agreeFlag ? 's' : 'u')+'c.png'" mode="aspectFill"
class="ico30"></image>
<view class="pl15 fs28 col9">我已同意并阅读<text class="col2" @click.stop="cms_detail(6)">充值须知</text>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
const webConfig = require("@/util/config");
var eventChannel = null;
export default {
data() {
return {
userInfo: null,
rechargeInfo: null,
recharge_id: 0,
recharge_list: [],
agreeFlag: false,
member_tips: ''
}
},
methods: {
getRechargeList() {
let _this = this;
this.$http({
url: '/addons/xilufitness/recharge/index',
method: 'get'
}).then(res => {
if (res.code == 1) {
_this.recharge_list = res.data.list;
}
}).catch(error => {
console.log('rechargeError', error);
})
},
//选择套餐
chooseRecharge(rechargeInfo) {
this.rechargeInfo = rechargeInfo;
this.recharge_id = rechargeInfo.id || 0;
},
//同意协议
argeeAccount() {
this.agreeFlag = !this.agreeFlag;
},
//立即充值
submitRecharge() {
let _this = this;
if (!_this.agreeFlag) {
_this.$api.toast('请先同意协议');
} else if (!_this.rechargeInfo) {
_this.$api.toast('请选择套餐');
} else {
_this.$http({
url: '/addons/xilufitness/order/createOrder',
data: {
id: _this.recharge_id,
is_type: 0,
num: 1,
pay_type: 2
},
method: 'POST'
}).then(res => {
if (res.code == 1) {
//去支付
_this.toPay(res.data);
} else {
_this.$api.toast(res.msg);
}
}).catch(error => {
console.log('rechargeError', error);
});
}
},
//去支付
toPay(data) {
let _this = this;
this.$http({
url: '/addons/xilufitness/pay/index',
data: data,
method: 'get'
}).then(res => {
if (res.code == 1) {
if (data.pay_type == 2) {
//发起微信支付
_this.wechatPay(res.data, data.order_type);
} else {
//预约订单
_this.$api.navigate('../booking/booking');
}
} else {
_this.$api.toast(res.msg);
}
}).catch(error => {
console.log('payError', error);
})
},
//发起微信支付
wechatPay(data, order_type) {
let _this = this;
this.$api.toPay(data, order_type, function(res) {
if (order_type == 0) {
//会员充值
_this.$api.navigate('../member_order/member_order');
} else {
//预约订单
_this.$api.navigate('../booking/booking');
}
}, function(error) {
console.log('payError', error);
})
},
//充值须知
cms_detail(is_type) {
this.$api.navigate('../about_us/about_us?is_type=' + is_type);
},
//会员权益
getMemberTips() {
let _this = this;
this.$http({
url: '/addons/xilufitness/cms/detail',
data: {
is_type: 5
}
}).then(res => {
if (res.code == 1) {
_this.member_tips = (res.data.info && res.data.info.content) ? res.data.info.content : '';
}
}).catch(error => {
console.log('tipsError', error);
})
}
},
onLoad(options) {
let _this = this;
this.web_url = webConfig.base_url || '';
_this.recharge_id = options.recharge_id || 0;
console.log('recharge_id', _this.recharge_id);
eventChannel = this.getOpenerEventChannel();
eventChannel.on('memberCardData', function(params) {
_this.userInfo = params.userInfo || null;
_this.rechargeInfo = params.rechargeInfo;
});
this.getRechargeList();
this.getMemberTips();
},
onShareAppMessage() {
}
}
</script>
<style lang="scss" scoped>
.xilu {
&_info_nav {
width: 700rpx;
height: 312rpx;
position: relative;
&_bg {
width: 700rpx;
height: 312rpx;
position: relative;
z-index: 1;
}
&_view {
width: 700rpx;
height: 312rpx;
position: absolute;
z-index: 1;
top: 0;
left: 0;
right: 0;
padding-left: 20rpx;
padding-right: 0;
padding-top: 30rpx;
}
}
&_head_img {
width: 130rpx;
height: 130rpx;
border: 5rpx solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
}
&_text {
font-size: 22rpx;
font-weight: 400;
color: #999999;
line-height: 30rpx;
letter-spacing: 30rpx;
}
&_box {
width: 700rpx;
padding: 30rpx 25rpx;
background: #292B2C;
border-radius: 20rpx;
margin-top: 30rpx;
}
&_money_item {
width: 315rpx;
height: 98rpx;
border-radius: 20rpx;
border: 1px solid #999999;
display: inline-block;
vertical-align: top;
margin-right: 20rpx;
padding-left: 20rpx;
line-height: calc(98rpx - 2px);
color: #999999;
position: relative;
margin-top: 20rpx;
&.active {
background: rgba(246, 204, 25, 0.2);
color: #FFCF00;
border: 1rpx solid #FFCF00;
}
&_choose {
width: 38rpx;
height: 36rpx;
position: absolute;
right: -1px;
bottom: -1px;
}
}
&_money_item:nth-of-type(2n) {
margin-right: 0;
}
&_box1 {
width: 700rpx;
height: 528rpx;
background: #292B2C;
border-radius: 20rpx;
margin-top: 30rpx;
padding-top: 30rpx;
position: relative;
&_fixed {
width: 700rpx;
height: 70rpx;
background: #404243;
border-radius: 15rpx;
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding-left: 20rpx;
}
}
&_interests {
width: 100%;
height: auto;
}
}
.tdu {
text-decoration: underline;
}
</style>