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.

621 lines
15 KiB

<template>
<view style="background: #F5F5F5;">
<!-- <view class="bg" style="margin: 12upx;border-radius: 16upx;position: absolute;width: 96%;height: 380upx"></view> -->
<view style="color: #FFFFFF;position: relative;width: 100%;height: 200upx;display: block;">
<view class="user-box">
<view class="user-info-box">
<view class="avatar" @tap="checkLogin()">
<image :src="avatar"></image>
</view>
<view class="user-info">
<view class="nick-wrap">
<text class="nick">{{ nickName }}</text>
</view>
<text class="code" v-if="zhifubaoName === ''">支付宝未实名</text>
</view>
<view class="user-info">
<view class="nick-wrap" style="widh:100%;text-align: right;display: block">
<view class="nick">{{total}}</view>
</view>
<text class="code"
style="widh:100%;text-align: right;display: block;line-height: 50upx;">可用积分</text>
</view>
</view>
</view>
</view>
<view style="padding: 32upx;background: #fff;border-radius: 30upx 30upx 0 0;">
<view>兑换金额</view>
<view class="main"
style="position: relative;padding: 20upx 0;border-bottom: 1px solid #ccc;align-items: center;">
<view style="position: absolute;font-weight: 600;font-size: 30upx;">¥</view>
<input style="margin-left: 40upx;width: 60%;position: absolute;" v-model="jifen" type="number"
maxlength="11" placeholder="请输入要兑换的积分" />
<view style="margin-left: 65%;text-align: right;" @click="dhBtn">全部兑换</view>
<!-- <wInput v-model="jifen" type="number" maxlength="11" placeholder="请输入要兑换的积分"></wInput> -->
</view>
<view style="color: red;font-size: 24rpx;" v-if="type == 2">*注微信单笔限制最大兑换额度为{{WxMaxMoney}}积分</view>
<view class="duihuan_view" v-if="wxCash != '否'">
<view>兑换方式</view>
<view class="duihuan_item">
<view class="item_view" @tap="typeSelect(1)" :class="type == 1 ? 'item_view_sel' : 'item_view'">
<image src="../../static/img/my/zhifubao.png"></image>
<view class="name">支付宝</view>
</view>
<view class="item_view" @tap="typeSelect(2)" :class="type == 2 ? 'item_view_sel' : 'item_view'">
<image src="../../static/img/share/icon_weixin.png"></image>
<view class="name">微信</view>
</view>
</view>
</view>
<button style="background: #ffc705;color: #FFFFFF;border-radius: 16rpx;margin-top: 47rpx;"
@click="duihuan">立即兑换</button>
<!-- <wButton text="立即兑换" :rotate="isRotate" @click.native="duihuan()"></wButton> -->
<view class="duihuan_title">积分兑换规则</view>
<view style="margin-top: 30upx;font-size: 26upx;color: #999;">1.{{bili}}积分=1最低可提现积分为{{zuidi}}积分</view>
<view style="margin-top: 30upx;font-size: 26upx;color: #999;">2.申请兑换后3-7个工作日内到账</view>
<view style="margin-top: 30upx;font-size: 26upx;color: #999;">3.仅支持整数兑换兑换手续费{{shouxufei * 100}}%</view>
</view>
<!-- <button class="btn" :style="type == 2 ? 'background-color: #04BE02;' : 'background-color: #3F64FF;'" @tap="getOut">{{type == 2 ? '微信提现' : '支付宝提现'}}</button> -->
<view class="footer">
<view class="bottom_view" @click="goDetail">
<image src="../../static/img/my/bangding.png"></image>
<view class="text">兑换记录</view>
</view>
<view class="payinfo" style="font-size: 50upx;color: #e6e6e6;width: 2%;">|</view>
<view class="bottom_view" @click="duihuanjilu">
<image src="../../static/img/my/duihuan.png"></image>
<view class="text">积分明细</view>
</view>
</view>
</view>
</template>
<script>
import wInput from '../../components/watch-login/watch-input.vue'; //input
import wButton from '../../components/watch-login/watch-button.vue'; //button
export default {
data() {
return {
contents: [],
modalName: '',
fen: 0,
zuidi: 0,
wxCash: '否',
jifen: '',
isRotate: false, //是否加载旋转
isLogin: false,
page: 1,
bili: 100,
shouxufei: 0.01,
percent: 0,
total: 0,
type: 1,
WxMaxMoney: 0,
phone: '',
isStudent: 1,
sex: 0,
avatar: '',
nickName: '',
zhifubao: '',
zhifubaoName: '',
arr: [],
showModal: true
};
},
components: {
wInput,
wButton
},
onLoad() {
this.WxMaxMoney = this.$queue.getData('WxMaxMoney');
this.wxCash = this.$queue.getData('wxCashSelect');
let avatar = this.$queue.getData('avatar');
if (avatar && avatar !== 'undefined') {
this.avatar = avatar;
} else {
this.avatar = '/static/img/logo.png';
}
let nickName = this.$queue.getData('nickName');
if (nickName && nickName !== 'undefined') {
this.nickName = nickName;
} else {
this.nickName = '';
}
let that = this;
that.$Request.getT('/common/type/203').then(res => { //订单审核提醒
if (res.code == 0) {
if (res.data && res.data.value) {
that.arr.push(res.data.value)
}
}
})
that.$Request.getT('/common/type/206').then(res => { //积分变动提醒
if (res.code == 0) {
if (res.data && res.data.value) {
that.arr.push(res.data.value)
}
}
})
this.$Request.getT('/common/type/87').then(res => {
if (res.code == 0) {
if (res.data && res.data.value) {
this.zuidi = res.data.value;
}
}
})
this.$Request.getT('/common/type/116').then(res => {
if (res.code == 0) {
if (res.data && res.data.value) {
this.bili = res.data.value;
}
}
})
this.$Request.getT('/common/type/113').then(res => {
if (res.code == 0) {
if (res.data && res.data.value) {
this.shouxufei = res.data.value;
}
}
})
this.$Request.getT('/common/type/102').then(res => {
if (res.code == 0) {
if (res.data && res.data.value) {
this.fen = res.data.value;
}
}
})
},
onShow() {
let userId = this.$queue.getData('userId');
if (userId) {
this.getUserInfodetail(userId);
this.getUserInfointegral(userId);
//订阅
if(this.showModal) {
this.openMsg()
}
}
},
methods: {
// 开启订阅消息
openMsg() {
var that = this
wx.getSetting({
withSubscriptions: true, //是否获取用户订阅消息的订阅状态,默认false不返回
success(ret) {
// console.log(ret,'------------------')
console.log(Object.keys(ret.subscriptionsSetting.itemSettings).length)
// if (JSON.stringify(ret.subscriptionsSetting.itemSettings).indexOf('accept')!=-1) {
if (ret.subscriptionsSetting.itemSettings) {
uni.setStorageSync('sendjifenMsg', true)
uni.openSetting({ // 打开设置页
success(rea) {
console.log(rea.authSetting)
}
});
} else { // 用户没有点击“总是保持以上,不再询问”则每次都会调起订阅消息
uni.setStorageSync('sendjifenMsg', false)
uni.showModal({
title: '提示',
content: '为了更好的体验,请绑定消息推送',
confirmText: '确定',
cancelText: '取消',
success: function(res) {
if (res.confirm) {
uni.requestSubscribeMessage({
tmplIds: that.arr,
success(re) {
// console.log(re,'**********')
var datas = JSON.stringify(re);
if (datas.indexOf("accept") != -1) {
console.log(re)
}
},
fail: (res) => {
console.log(res)
}
})
that.showModal = false
} else if (res.cancel) {
that.showModal = true
}
}
})
}
}
})
},
typeSelect(type) {
this.type = type;
},
getUserInfodetail(userId) {
this.$Request.postT("/app/selectUserById?userId=" + userId).then(res => {
if (res.code === 0) {
this.zhifubao = res.data.zhifubao;
this.zhifubaoName = res.data.zhifubaoName;
this.phone = res.data.phone;
}
uni.hideLoading();
});
},
//获取用户积分信息
getUserInfointegral(userId) {
this.$Request.getT('/userMoney/selectUserMoney?userId=' + userId).then(res => {
if (res.code === 0) {
this.total = res.data.money;
}
});
},
duihuan() {
if(uni.getStorageSync('sendjifenMsg')) {
uni.requestSubscribeMessage({
tmplIds: this.arr,
success(re) {
// console.log(re,'**********')
var datas = JSON.stringify(re);
if (datas.indexOf("accept") != -1) {
console.log(re)
}
},
fail: (res) => {
console.log(res)
}
})
}
if (!this.phone) {
uni.navigateTo({
url: '../public/mobile'
});
} else if (!this.jifen) {
this.$queue.showToast('请输入要兑换的积分');
return;
} else if (this.jifen > this.total) {
uni.showModal({
title: '积分提醒',
content: '积分不足,当前可用积分为' + this.total + '!',
showCancel: false
});
return;
} else if (this.jifen < this.zuidi) {
this.$queue.showToast('最低可兑换积分为' + this.zuidi);
return;
} else if (this.type == 2 && parseInt(this.jifen) > parseInt(this.WxMaxMoney)) {
this.$queue.showToast('微信单次最大积分兑换额度为' + this.WxMaxMoney);
return;
} else if (this.type == 2) {
let userId = this.$queue.getData('userId');
this.$Request.postT('/userMoney/cashMoney?userId=' + userId + '&money=' + this.jifen + '&type=' + this
.type).then(
res => {
if (res.code === 0) {
this.getUserInfointegral(userId)
uni.showModal({
title: '积分提醒',
content: '兑换成功!',
showCancel: false
});
} else {
this.$queue.showToast(res.msg);
}
});
} else if (this.zhifubao && this.zhifubaoName && this.type == 1) {
let userId = this.$queue.getData('userId');
this.$Request.postT('/userMoney/cashMoney?userId=' + userId + '&money=' + this.jifen + '&type=' + this
.type).then(
res => {
if (res.code === 0) {
this.getUserInfointegral(userId)
uni.showModal({
title: '积分提醒',
content: '兑换成功!',
showCancel: false
});
} else {
this.$queue.showToast(res.msg);
}
});
} else {
this.bangding();
}
},
duihuanjilu() {
uni.navigateTo({
url: '/pages/member/jifen'
});
},
goBack() {
uni.navigateBack({});
},
getToatal(userId) {
this.$Request.postT('/user/getUserJifenList/' + userId).then(res => {
if (res.status === 0) {
this.contents = res.data;
} else {
this.contents = [];
}
});
},
// 全部兑换
dhBtn() {
this.jifen = this.total
},
// 绑定支付宝
bangding() {
uni.navigateTo({
url: '/pages/member/zhifubao'
});
},
goDetail() {
uni.navigateTo({
url: '/pages/member/cashList'
});
}
}
};
</script>
<style lang="scss" scoped>
.duihuan_title {
font-size: 34upx;
color: #333;
margin-top: 47rpx;
font-weight: 600;
}
.duihuan_view {
width: 100%;
height: max-content;
background: #FFFFFF;
margin-top: 20rpx;
.duihuan_item {
display: flex;
width: 100%;
margin-top: 20rpx;
justify-content: space-between;
.item_view {
background: #FFFFFF;
display: flex;
justify-content: center;
width: 49%;
align-items: center;
border: #999 1upx solid;
padding: 15rpx 0;
border-radius: 15rpx;
.name {
font-size: 28rpx;
color: #000000;
margin-left: 15rpx;
}
image {
width: 50rpx;
height: 50rpx;
border-radius: 50rpx;
}
}
.item_view_sel {
background: #FFFFFF;
display: flex;
justify-content: center;
width: 49%;
align-items: center;
border: #ffc705 3upx solid;
padding: 15rpx 0;
border-radius: 15rpx;
.name {
font-size: 28rpx;
color: #000000;
margin-left: 15rpx;
}
image {
width: 50rpx;
height: 50rpx;
border-radius: 50rpx;
}
}
}
}
.btn {
margin-top: 120upx;
background-color: #3F64FF;
color: #fff;
width: 688upx;
height: 102upx;
line-height: 102upx;
text-align: center;
font-size: 32upx;
border-radius: 50upx;
}
.news_content {
display: flex;
text-align: left;
padding: 8px 16px 8px 16px;
background: #ffffff;
margin-top: 1px;
}
.news_content_text {
margin-top: 8px;
width: 200px;
overflow: hidden;
font-size: 16px;
white-space: nowrap;
text-overflow: ellipsis;
}
/* */
.user-box {
width: 100%;
height: 200upx;
/* position: absolute; */
z-index: 15;
padding: 30upx 30upx 0;
display: flex;
align-items: center;
}
.user-info-box {
flex: 1;
height: 100%;
display: flex;
align-items: center;
}
.info-icon {
width: 46upx;
height: 48upx;
image {
width: 100%;
height: 100%;
display: block;
}
}
.avatar {
width: 110upx;
height: 110upx;
border-radius: 50%;
overflow: hidden;
image {
width: 100%;
height: 100%;
display: block;
}
}
.noLogin {
display: flex;
display: flex;
flex-direction: column;
margin-left: 20upx;
font-size: 40upx;
font-weight: 800;
color: #FEFEFE;
}
.user-info {
display: flex;
display: flex;
flex-direction: column;
margin-left: 20upx;
width: 260upx;
}
.nick-wrap {
display: flex;
align-items: center;
height: 45upx;
}
.nick {
font-size: 38upx;
height: 38upx;
line-height: 38upx;
font-weight: 800;
color: #333;
}
.nick_image {
width: 38upx;
height: 38upx;
margin-left: 20upx;
}
.activation {
width: 100upx;
height: 38upx;
line-height: 38upx;
text-align: center;
background: #FFFFFF;
border-radius: 19upx;
margin-left: 20upx;
font-size: 24upx;
font-weight: bold;
color: #FF332F;
}
.code {
display: flex;
align-items: center;
height: 45upx;
font-size: 24upx;
font-family: PingFang SC;
font-weight: 500;
color: #999;
}
.bottom_view {
display: flex;
text-align: center;
width: 49%;
justify-content: center;
align-items: center;
image {
width: 43rpx;
height: 43rpx;
}
.text {
margin-left: 15rpx
}
}
/* 底部按钮 */
// 底部按钮
.footer {
width: 100%;
height: calc(98upx + env(safe-area-inset-bottom));
height: calc(98upx + constant(safe-area-inset-bottom));
padding-bottom: env(safe-area-inset-bottom);
/*兼容IOS>11.2*/
padding-bottom: constant(safe-area-inset-bottom);
/*兼容IOS<11.2*/
background: #FFFFFF;
position: fixed;
bottom: 0;
padding: 0 30upx;
z-index: 10;
display: flex;
align-items: center;
justify-content: space-between;
}
.payinfo {
display: flex;
width: 48%;
color: #333333;
font-size: 28rpx;
text-align: center;
align-items: center;
}
.payinfo image {
width: 32upx;
position: absolute;
left: 20%;
}
</style>