<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|| err.response.data.message, 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|| err.response.data.message, 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>