Files

271 lines
7.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<view class="recharge">
<view class="nav acea-row row-around row-middle">
<view
class="item"
:class="active === navRechargeIndex ? 'on' : ''"
v-for="(item, navRechargeIndex) in navRecharge"
:key="navRechargeIndex"
@click="navRecharges(navRechargeIndex)"
>{{ item }}</view>
</view>
<view class="info-wrapper">
<view class="money">
<text></text>
<input type="number" placeholder="0.00" v-model="money" />
</view>
<view class="tips" v-if="!active">
提示当前余额为
<text>{{ now_money || 0 }}</text>
</view>
<view class="pay-btn bg-color-red" @click="recharge">{{ active ? "立即转入" : "立即充值" }}</view>
</view>
</view>
</view>
</template>
<script>
import { mapGetters } from "vuex";
import { weapppay } from "@/libs/wechat";
import { isWeixin } from "@/utils";
import { rechargeWechat } from "@/api/user";
import { add, sub } from "@/utils/bc";
export default {
name: "Recharge",
components: {},
props: {},
data: function() {
return {
navRecharge: ["账户充值"],
active: 0,
payType: ["weixin"],
from: isWeixin() ? "weixin" : "weixinh5",
money: "",
now_money: ""
};
},
computed: mapGetters(["userInfo"]),
mounted: function() {
this.now_money = this.userInfo.now_money;
},
methods: {
navRecharges: function(index) {
this.active = index;
},
recharge: function() {
let that = this,
price = Number(this.money);
if (that.active) {
if (price === 0) {
uni.showToast({
title: "请输入您要转入的金额",
icon: "none",
duration: 2000
});
return;
} else if (price < 0.01) {
uni.showToast({
title: "转入金额不能低于0.01",
icon: "none",
duration: 2000
});
return;
}
uni.showModal({
title: "转入余额",
content: "转入余额无法在转出,请确认转入?",
success: function(res) {
if (res.confirm) {
rechargeWechat({ price: price, from: that.from, type: 1 })
.then(res => {
that.now_money = add(
price,
parseInt(that.userInfo.now_money)
);
that.userInfo.brokerage_price = sub(
that.userInfo.brokerage_price,
price
);
that.money = "";
uni.showToast({
title: res.msg,
icon: "none",
duration: 2000
});
})
.catch(err => {
uni.showToast({
title: err.msg || err.response.data.msg,
icon: "none",
duration: 2000
});
});
} else if (res.cancel) {
uni.showToast({
title: "已取消",
icon: "none",
duration: 2000
});
return;
}
}
});
} else {
if (price === 0) {
uni.showToast({
title: "请输入您要充值的金额",
icon: "none",
duration: 2000
});
return;
} else if (price < 0.01) {
uni.showToast({
title: "充值金额不能低于0.01",
icon: "none",
duration: 2000
});
return;
}
rechargeWechat({ price: price, from: that.from })
.then(res => {
var data = res.data;
if (data.type == "weixinh5") {
location.replace(data.data.mweb_url);
uni.showModal({
title: "提示",
content: "充值余额",
confirmText: "已充值",
cancelText: "查看余额",
success: function(res) {
if (res.confirm) {
that.$yrouter.replace({
path: "/user/account"
});
} else if (res.cancel) {
that.$yrouter.replace({
path: "/user/account"
});
}
}
});
} else {
weappPay(data.data)
.then(res => {
that.now_money = add(
price,
parseInt(that.userInfo.now_money)
);
uni.showToast({
title: "支付成功",
icon: "success",
duration: 2000
});
})
.catch(function() {
uni.showToast({
title: "支付失败",
icon: "none",
duration: 2000
});
});
}
})
.catch(err => {
uni.showToast({
title: err.msg || err.response.data.msg,
icon: "none",
duration: 2000
});
});
}
}
}
};
</script>
<style scoped lang="less">
#iframe {
display: none;
}
.recharge {
width: 7.03*100rpx;
padding: 0.5*100rpx 0.63*100rpx 0.45*100rpx;
background-color: #fff;
margin: 0.2*100rpx auto 0 auto;
border-radius: 0.1*100rpx;
}
.recharge .nav {
height: 0.75*100rpx;
line-height: 0.75*100rpx;
padding: 0 1*100rpx;
}
.recharge .nav .item {
font-size: 0.3*100rpx;
color: #333;
}
.recharge .nav .item.on {
font-weight: bold;
border-bottom: 0.04*100rpx solid #e83323;
}
.recharge .info-wrapper {
text-align: center;
}
.recharge .info-wrapper .money {
margin-top: 0.6*100rpx;
padding-bottom: 0.2*100rpx;
border-bottom: 1px dashed #ddd;
}
.recharge .info-wrapper .money text {
font-size: 0.56*100rpx;
color: #333;
font-weight: bold;
}
.recharge .info-wrapper .money input {
display: inline-block;
width: 3*100rpx;
font-size: 0.84*100rpx;
text-align: center;
color: #282828;
font-weight: bold;
padding-right: 0.7*100rpx;
}
.recharge .info-wrapper .money input::placeholder {
color: #ddd;
}
.recharge .info-wrapper .money input::-webkit-input-placeholder {
color: #ddd;
}
.recharge .info-wrapper .money input:-moz-placeholder {
color: #ddd;
}
.recharge .info-wrapper .money input::-moz-placeholder {
color: #ddd;
}
.recharge .info-wrapper .money input:-ms-input-placeholder {
color: #ddd;
}
.recharge .info-wrapper .tips {
font-size: 0.26*100rpx;
color: #888;
margin: 0.25*100rpx auto 0 auto;
line-height: 1.5;
padding: 0 0.3*100rpx;
}
.recharge .info-wrapper .tips text {
color: #ef4a49;
}
.recharge .info-wrapper .pay-btn {
display: block;
width: 5.5*100rpx;
height: 0.86*100rpx;
margin: 0.5*100rpx auto 0 auto;
line-height: 0.86*100rpx;
text-align: center;
color: #fff;
border-radius: 0.5*100rpx;
font-size: 0.3*100rpx;
font-weight: bold;
}
</style>