Files
2020-03-15 13:59:43 +08:00

240 lines
6.6 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>
<div>
<div class="recharge">
<div class="nav acea-row row-around row-middle">
<div
class="item"
:class="active === navRechargeIndex ? 'on' : ''"
v-for="(item, navRechargeIndex) in navRecharge"
:key="navRechargeIndex"
@click="navRecharges(navRechargeIndex)"
>{{ item }}</div>
</div>
<div class="info-wrapper">
<div class="money">
<span></span>
<input type="number" placeholder="0.00" v-model="money" />
</div>
<div class="tips" v-if="!active">
提示当前余额为
<span>{{ now_money || 0 }}</span>
</div>
<div class="pay-btn bg-color-red" @click="recharge">{{ active ? "立即转入" : "立即充值" }}</div>
</div>
</div>
</div>
</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) {
return that.$dialog.toast({ mes: "请输入您要转入的金额" });
} else if (price < 0.01) {
return that.$dialog.toast({ mes: "转入金额不能低于0.01" });
}
this.$dialog.confirm({
mes: "转入余额无法在转出,请确认转入",
title: "转入余额",
opts: [
{
txt: "确认",
color: false,
callback: () => {
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 = "";
return that.$dialog.toast({ mes: res.msg });
})
.catch(res => {
that.$dialog.toast({ mes: res.msg });
});
}
},
{
txt: "取消",
color: false,
callback: () => {
return that.$dialog.toast({ mes: "已取消" });
}
}
]
});
} else {
if (price === 0) {
return that.$dialog.toast({ mes: "请输入您要充值的金额" });
} else if (price < 0.01) {
return that.$dialog.toast({ mes: "充值金额不能低于0.01" });
}
rechargeWechat({ price: price, from: that.from })
.then(res => {
var data = res.data;
if (data.type == "weixinh5") {
location.replace(data.data.mweb_url);
this.$dialog.confirm({
mes: "充值余额",
opts: [
{
txt: "已充值",
color: false,
callback: () => {
that.$yrouter.replace({
path: "/user/account"
});
}
},
{
txt: "查看余额",
color: false,
callback: () => {
that.$yrouter.replace({
path: "/user/account"
});
}
}
]
});
} else {
weappPay(data.data)
.then(res => {
that.now_money = add(
price,
parseInt(that.userInfo.now_money)
);
that.$dialog.toast({ mes: "支付成功" });
})
.catch(function() {
that.$dialog.toast({ mes: "支付失败" });
});
}
})
.catch(res => {
that.$dialog.toast({ mes: res.msg });
});
}
}
}
};
</script>
<style scoped>
#iframe {
display: none;
}
.recharge {
width: 7.03rem;
padding: 0.5rem 0.63rem 0.45rem;
background-color: #fff;
margin: 0.2rem auto 0 auto;
border-radius: 0.1rem;
}
.recharge .nav {
height: 0.75rem;
line-height: 0.75rem;
padding: 0 1rem;
}
.recharge .nav .item {
font-size: 0.3rem;
color: #333;
}
.recharge .nav .item.on {
font-weight: bold;
border-bottom: 0.04rem solid #e83323;
}
.recharge .info-wrapper {
text-align: center;
}
.recharge .info-wrapper .money {
margin-top: 0.6rem;
padding-bottom: 0.2rem;
border-bottom: 1px dashed #ddd;
}
.recharge .info-wrapper .money span {
font-size: 0.56rem;
color: #333;
font-weight: bold;
}
.recharge .info-wrapper .money input {
display: inline-block;
width: 3rem;
font-size: 0.84rem;
text-align: center;
color: #282828;
font-weight: bold;
padding-right: 0.7rem;
}
.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.26rem;
color: #888;
margin: 0.25rem auto 0 auto;
line-height: 1.5;
padding: 0 0.3rem;
}
.recharge .info-wrapper .tips span {
color: #ef4a49;
}
.recharge .info-wrapper .pay-btn {
display: block;
width: 5.5rem;
height: 0.86rem;
margin: 0.5rem auto 0 auto;
line-height: 0.86rem;
text-align: center;
color: #fff;
border-radius: 0.5rem;
font-size: 0.3rem;
font-weight: bold;
}
</style>