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.
 
 
 
 
 
 
yanzong_qianduan/pages/member/index.vue

633 lines
14 KiB

<template>
<view class="member">
<view>
<u-navbar title="会员中心" back-icon-color="#fff" :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">
有效期至{{userInfo.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="/static/member/my.png" mode="" class="itemImg"></image>
<view class="vipInfo">
天天免邮
</view>
</view>
<view class="vipItem">
<image src="/static/member/lp.png" mode="" class="itemImg"></image>
<view class="vipInfo">
超低会员价
</view>
</view>
<view class="vipItem">
<image src="/static/member/dz.png" mode="" class="itemImg"></image>
<view class="vipInfo">
折上95折
</view>
</view>
<view class="vipItem">
<image src="/static/member/th.png" mode="" class="itemImg"></image>
<view class="vipInfo">
退换免运费
</view>
</view>
<view class="vipItem">
<image src="/static/member/cx.png" mode="" class="itemImg"></image>
<view class="vipInfo">
促销福利
</view>
</view>
<view class="vipItem">
<image src="/static/member/tq.png" mode="" class="itemImg"></image>
<view class="vipInfo">
极速售后
</view>
</view>
<view class="vipItem">
<image src="/static/member/my.png" mode="" class="itemImg"></image>
<view class="vipInfo">
门店特权
</view>
</view>
<view class="vipItem">
<image src="/static/member/cj.png" mode="" class="itemImg"></image>
<view class="vipInfo">
不回本退差价
</view>
</view>
<view class="vipItem">
<image src="/static/member/tg.png" mode="" class="itemImg"></image>
<view class="vipInfo">
团购优惠券
</view>
</view>
<view class="vipItem">
<image src="/static/member/jf.png" mode="" class="itemImg"></image>
<view class="vipInfo">
双倍积分
</view>
</view>
</view>
<view class="choseType">
<view class="typeTitle">
选择 <text v-if="userInfo.effective_time">续费</text> <text v-if="!userInfo.effective_time">开卡</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" >
{{item.month}}个月
</view>
<view class="firPrice">
¥{{item.price}}
</view>
<view class="avePrice">
¥{{Number(item.price)/Number(item.month)}}/月
</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="/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.cheap_price!=0">
已省 <text>¥{{choseItem.cheap_price}}</text>
</view>
<view class="yj">
原价 ¥{{choseItem.price}}
</view>
</view>
<view class="btn" @click="gotoPay">
<text>{{choseItem.price}}</text>开卡{{choseItem.month}}个月
</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() {
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',
}
},
onShow() {
this.getMemberInfo()
},
onLoad(options) {
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)
})
.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)
})
.finally(() => that.isLoading = false)
},
}
}
</script>
<style lang="scss" scoped>
.member {
width: 100%;
background: url('../../static/member/merBack.png') 100% no-repeat;
background-size: 100% 100%;
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('/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: 30rpx;
margin-top: 12rpx;
border-radius: 50%;
}
.meInfo {
.info {
display: flex;
margin-bottom: 26rpx;
.name {
height: 50rpx;
font-size: 36rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #785B45;
line-height: 50rpx;
margin-right: 18rpx;
}
.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;
}
}
.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 74rpx;
.ys {
height: 40rpx;
font-size: 28rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #7D2D21;
line-height: 40rpx;
text {
height: 40rpx;
font-size: 28rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #F34A40;
line-height: 40rpx;
}
}
.yj {
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>