<template>
|
|
<view class="pages">
|
|
<!-- 头部标题 -->
|
|
<view class="title">
|
|
<text class="title_text">充值</text>
|
|
<view class="icon" @click="toDetale">
|
|
<text>充值明细</text>
|
|
<u-icon name="arrow-right"></u-icon>
|
|
</view>
|
|
</view>
|
|
<!-- 选择区域 -->
|
|
<view class="card">
|
|
<view v-for="(item,index) in list" :key="index" class="item_box">
|
|
<view :class="index == status? 'item select_item ': 'item' " @click="selectItem(index)"
|
|
v-if="item.role == -1">
|
|
<u-icon v-show="index == status" size='20' name="checkmark-circle-fill"></u-icon>
|
|
|
|
<view class="position_text">
|
|
<image class="image_img" :src="IMG_URL +'special_bg.png'" mode=""></image>
|
|
<text v-if="item.wallet !== null"
|
|
class=" text-center m-t-10 position_t">{{item.title? item.title:"今日充值特惠"}}</text>
|
|
</view>
|
|
<!-- <text v-if="item.wallet !== null" class="font-36 text-center m-t-10 position_text" >{{item.title? item.title:"今日充值特惠"}}</text> -->
|
|
|
|
<view class=" up m-t-30">
|
|
<text class="text_up">充</text>
|
|
<text class="num">{{item.wallet}}</text>
|
|
<text class="text_give">得</text>
|
|
<text class="num">{{item.getMoney+ item.getInteger}}</text>
|
|
</view>
|
|
<!-- <view class="give">
|
|
<text class="text_give">得</text>
|
|
<text class="num">{{item.getMoney+ item.getInteger}}</text>
|
|
</view> -->
|
|
<text class="alt">{{'('+item.getMoney+'消费金+'+item.getInteger +'兑购金)'}}</text>
|
|
<view class="time" v-if="item.endTime !== null && item.type == 1">
|
|
<text>活动结束时间:</text>
|
|
<text>{{item.endTime}}</text>
|
|
</view>
|
|
</view>
|
|
<view :class="index == status? 'item select_item ': 'item' " @click="selectItem(index)"
|
|
v-if="userInfo.level == item.role">
|
|
<u-icon v-show="index == status" size='20' name="checkmark-circle-fill"></u-icon>
|
|
<text v-if="item.endTime !== null"
|
|
class="font-36 text-center m-t-10 position_text">{{item.title? item.title:"今日充值特惠"}}</text>
|
|
<view class="up m-t-30">
|
|
<text class="text_up">充</text>
|
|
<text class="num">{{item.wallet}}</text>
|
|
<text class="text_give"> 得 </text>
|
|
<text class="num">{{item.getMoney+ item.getInteger}}</text>
|
|
</view>
|
|
<!-- <view class="give">
|
|
<text class="text_give">得</text>
|
|
<text class="num">{{item.getMoney+ item.getInteger}}</text>
|
|
</view> -->
|
|
<text class="alt">{{'('+item.getMoney+'消费金+'+item.getInteger +'兑购金)'}}</text>
|
|
<view class="time" v-if="item.endTime !== null && item.type == 1">
|
|
<text>活动结束时间:</text>
|
|
<text>{{item.endTime}}</text>
|
|
</view>
|
|
<text
|
|
class="alt text-red">多得实惠{{ (item.getMoney+ item.getInteger - item.wallet).toFixed(2)}}元</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!-- 充值说明 -->
|
|
<view class="explain">
|
|
<text class="explain_title">{{agreementInfo.title}}</text>
|
|
<rich-text :nodes="agreementInfo.content"></rich-text>
|
|
<!-- <text >1、{{}}</text> -->
|
|
</view>
|
|
|
|
<!-- 充值福利 -->
|
|
<!-- <view class="welfare">
|
|
<view class="welfare_title">
|
|
<text>充</text>
|
|
<text>值</text>
|
|
<text>福</text>
|
|
<text>利</text>
|
|
</view>
|
|
<view :class="'item bg'+index" v-for="(item,index) in welfareList" :key="index">
|
|
<view class="title_box">
|
|
<u-icon name="play-right-fill"></u-icon>
|
|
<text class="item_title">{{item.title}}</text>
|
|
</view>
|
|
<text>{{item.textlist[0]}}</text>
|
|
<text>{{item.textlist[1]}}</text>
|
|
<text>{{item.textlist[2]}}</text>
|
|
</view>
|
|
</view>
|
|
-->
|
|
<!-- 按钮 -->
|
|
<view class="btn_box">
|
|
<button class="up_btn btn" @click="toPay">确认充值</button>
|
|
<button class="pass_btn btn" @click="toUpMenber">去升级会员,实惠更多</button>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import dataList from "./config.js"
|
|
import {
|
|
IMG_URL
|
|
} from '@/env.js'
|
|
export default {
|
|
data() {
|
|
return {
|
|
IMG_URL,
|
|
list: [],
|
|
welfareList: dataList.welfareList,
|
|
status: 0,
|
|
userInfo: {},
|
|
rechargeId: null,
|
|
agreementInfo: {}, // 充值说明
|
|
}
|
|
},
|
|
onLoad() {
|
|
uni.showLoading();
|
|
this.getUserInfo();
|
|
this.getRechargeList();
|
|
this.getRechargeInfo();
|
|
uni.hideLoading();
|
|
},
|
|
methods: {
|
|
getRechargeInfo() {
|
|
// 获取充值说明
|
|
this.$api('getAgreement', {
|
|
type: 2
|
|
}).then(res => {
|
|
let {
|
|
code,
|
|
result,
|
|
message
|
|
} = res;
|
|
if (code == 200) {
|
|
console.log(result);
|
|
this.agreementInfo = result;
|
|
} else {
|
|
this.$Toast(message)
|
|
}
|
|
}).catch(err => {
|
|
this,
|
|
$Toast(err.message);
|
|
})
|
|
},
|
|
getRechargeList() {
|
|
// 获取充值列表
|
|
this.$api('rechargeList', {
|
|
pageSize: 999
|
|
}).then(res => {
|
|
let {
|
|
code,
|
|
result,
|
|
message
|
|
} = res;
|
|
if (code == 200) {
|
|
console.log(result);
|
|
let newList = []
|
|
result.records.forEach((item, index) => {
|
|
if (item.type == 1) {
|
|
if (item.endTime !== null) {
|
|
newList.push(item)
|
|
}
|
|
result.records[index].endTime = item.endTime.substring(5);
|
|
}
|
|
})
|
|
console.log(result.records, newList)
|
|
this.list = [...new Set([...newList, ...result.records])]
|
|
|
|
this.rechargeId = this.list[0].id
|
|
} else {
|
|
this.$Toast(message)
|
|
}
|
|
}).catch(err => {
|
|
this.$Toast(err.message);
|
|
})
|
|
},
|
|
// 获取用户信息
|
|
getUserInfo() {
|
|
uni.showLoading();
|
|
this.$api('getUserInfo')
|
|
.then(res => {
|
|
let {
|
|
code,
|
|
result,
|
|
message
|
|
} = res
|
|
uni.hideLoading();
|
|
if (code === 200) {
|
|
this.userInfo = {
|
|
...result.userInfo,
|
|
...result.account
|
|
}
|
|
this.$storage.setStorage("__user_info", this.userInfo)
|
|
console.log(this.userInfo)
|
|
} else {
|
|
this.$Toast(message)
|
|
}
|
|
})
|
|
.catch(err => {
|
|
this.$Toast(err.message)
|
|
uni.hideLoading();
|
|
})
|
|
},
|
|
toDetale() {
|
|
// 去充值明细
|
|
this.$tools.navigateTo({
|
|
url: "/pagesB/homeGridList/topUp/detale/detale"
|
|
})
|
|
|
|
},
|
|
// 选择的那个
|
|
selectItem(index) {
|
|
this.status = index;
|
|
this.rechargeId = this.list[index].id
|
|
},
|
|
// 去升级会员
|
|
toUpMenber() {
|
|
uni.navigateTo({
|
|
url: "/pagesC/member/upgrades_renewals/index"
|
|
})
|
|
},
|
|
toPay() {
|
|
const that = this;
|
|
// 创建支付订单
|
|
const params = {
|
|
id: this.rechargeId
|
|
}
|
|
console.log(this.rechargeId)
|
|
this.$api('rechargePay', params).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 => {
|
|
that.$Toast('支付成功');
|
|
alert('支付成功')
|
|
// 刷新用户数据
|
|
that.getUserInfo();
|
|
},
|
|
fail: error => {
|
|
alert('取消支付')
|
|
that.$Toast('取消支付')
|
|
}
|
|
})
|
|
} else {
|
|
that.$Toast(message)
|
|
}
|
|
})
|
|
// .catch(err => {
|
|
// console.log(err.message)
|
|
// this.$Toast(err.message)
|
|
// })
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.title {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-top: 54rpx;
|
|
margin-left: 36rpx;
|
|
margin-right: 40rpx;
|
|
|
|
.title_text {
|
|
font-size: 66rpx;
|
|
font-weight: bold;
|
|
color: #000;
|
|
}
|
|
|
|
.icon {
|
|
font-size: 38rpx;
|
|
color: #01AEEA;
|
|
}
|
|
}
|
|
|
|
.card {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
margin: 0 auto;
|
|
margin-top: 7rpx;
|
|
width: 717rpx;
|
|
|
|
justify-content: space-between;
|
|
display: flex;
|
|
.item_box {
|
|
width: 47%;
|
|
margin: 0 10rpx;
|
|
position: relative;
|
|
|
|
.position_text {
|
|
right: 260rpx;
|
|
|
|
.image_img {
|
|
width: 206rpx;
|
|
height: 50rpx;
|
|
position: absolute;
|
|
}
|
|
|
|
position: absolute;
|
|
top: 15rpx;
|
|
padding: 0 10rpx;
|
|
|
|
.position_t {
|
|
position: absolute;
|
|
width: 206rpx;
|
|
color: #FF3030;
|
|
z-index: 22;
|
|
}
|
|
|
|
// background-color: #fff;
|
|
}
|
|
}
|
|
|
|
.item {
|
|
margin: 0 10rpx;
|
|
width: 100%;
|
|
min-height: 286rpx;
|
|
border-radius: 23rpx;
|
|
border: 1px solid #707070;
|
|
box-shadow: 0 3rpx 6rpx 0 rgba(0, 0, 0, 0.16);
|
|
color: #707070;
|
|
background-color: #F3F3F3;
|
|
margin-top: 40rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
flex-direction: column;
|
|
|
|
&:nth-child(3n-2) {
|
|
margin-left: 0;
|
|
}
|
|
|
|
&:nth-child(3n) {
|
|
margin-right: 0;
|
|
}
|
|
|
|
.up {
|
|
font-size: 36rpx;
|
|
|
|
.text_up {
|
|
font-size: 36rpx;
|
|
margin-right: 12rpx;
|
|
}
|
|
|
|
.num {
|
|
// font-size: 42rpx;
|
|
}
|
|
}
|
|
|
|
.text_give {
|
|
padding: 0 6rpx;
|
|
}
|
|
|
|
|
|
.alt {
|
|
margin-top: 10rpx;
|
|
margin-bottom: 25rpx;
|
|
text-align: center;
|
|
font-size: 30rpx;
|
|
}
|
|
|
|
.time {
|
|
font-size: 30rpx;
|
|
color: #FF0000;
|
|
margin-bottom: 20rpx;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
}
|
|
|
|
.select_item {
|
|
width: 100%;
|
|
color: #01AEEA;
|
|
border-color: #01AEEA;
|
|
position: relative;
|
|
|
|
.position_text {
|
|
position: absolute;
|
|
top: -28rpx;
|
|
right: 259rpx;
|
|
padding: 0 10rpx;
|
|
|
|
.image_img {
|
|
width: 206rpx;
|
|
height: 50rpx;
|
|
position: absolute;
|
|
}
|
|
|
|
.position_t {
|
|
position: absolute;
|
|
width: 206rpx;
|
|
color: #FF3030;
|
|
z-index: 22;
|
|
}
|
|
|
|
// background-color: #fff;
|
|
}
|
|
|
|
/deep/ .u-icon {
|
|
position: absolute;
|
|
background-color: #fff;
|
|
transform: translate(50%, 50%);
|
|
top: 44%;
|
|
right: 0;
|
|
.u-icon__icon {
|
|
color: #01AEEA;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// 充值说明
|
|
.explain {
|
|
width: 674rpx;
|
|
margin-left: 60rpx;
|
|
display: flex;
|
|
flex-direction: column;
|
|
|
|
text {
|
|
font-size: 26rpx;
|
|
color: #000;
|
|
margin-top: 14rpx;
|
|
}
|
|
|
|
.explain_title {
|
|
|
|
font-size: 32rpx;
|
|
font-weight: bold;
|
|
margin-top: 40rpx;
|
|
}
|
|
}
|
|
|
|
// 充值福利
|
|
.welfare {
|
|
width: 654rpx;
|
|
margin: 94rpx auto 0;
|
|
border: 3px solid #F6CB86;
|
|
position: relative;
|
|
|
|
.welfare_title {
|
|
position: absolute;
|
|
top: -88rpx;
|
|
left: -20rpx;
|
|
transform: translate(50%, 50%);
|
|
display: flex;
|
|
|
|
text {
|
|
width: 83rpx;
|
|
height: 83rpx;
|
|
text-align: center;
|
|
line-height: 83rpx;
|
|
border-radius: 50%;
|
|
margin-right: 5rpx;
|
|
font-size: 43rpx;
|
|
font-weight: bold;
|
|
color: #A12527;
|
|
background-color: #F6CB86;
|
|
}
|
|
}
|
|
|
|
.bg0 {
|
|
background-color: #01AEEA;
|
|
margin-top: 74rpx !important;
|
|
}
|
|
|
|
.bg1 {
|
|
background-color: #59E5A3;
|
|
}
|
|
|
|
.bg2 {
|
|
background-color: #FAB875;
|
|
}
|
|
|
|
.bg3 {
|
|
background-color: #F33D3D;
|
|
}
|
|
|
|
.bg4 {
|
|
background-color: #000000;
|
|
margin-bottom: 35rpx !important;
|
|
}
|
|
|
|
.item {
|
|
width: 532rpx;
|
|
margin: 0 auto 15rpx;
|
|
display: flex;
|
|
color: #fff;
|
|
flex-direction: column;
|
|
border-radius: 10rpx;
|
|
padding-left: 20rpx;
|
|
box-sizing: border-box;
|
|
padding-bottom: 20rpx;
|
|
|
|
.title_box {
|
|
margin-top: 20rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
.item_title {
|
|
margin-left: 10rpx;
|
|
padding: 0;
|
|
}
|
|
}
|
|
|
|
text {
|
|
padding-top: 20rpx;
|
|
font-size: 21rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.btn {
|
|
height: 94rpx;
|
|
border-radius: 46rpx;
|
|
font-size: 30rpx;
|
|
font-weight: bold;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.up_btn {
|
|
margin-top: 50rpx;
|
|
width: 569rpx;
|
|
border: 3px solid #01AEEA;
|
|
background-color: #fff;
|
|
color: #01AEEA;
|
|
|
|
}
|
|
|
|
.pass_btn {
|
|
margin-top: 42rpx;
|
|
margin-bottom: 59rpx;
|
|
width: 637rpx;
|
|
background-color: #01AEEA;
|
|
color: #fff;
|
|
}
|
|
|
|
.btn_box {
|
|
position: fixed;
|
|
bottom: 0;
|
|
width: 100%;
|
|
background-color: #fff;
|
|
}
|
|
|
|
.pages {
|
|
padding-bottom: 370rpx;
|
|
}
|
|
</style>
|