初始化仓库
This commit is contained in:
349
bundle/pages/user_payment/user_payment.vue
Normal file
349
bundle/pages/user_payment/user_payment.vue
Normal file
@ -0,0 +1,349 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="user-payment">
|
||||
<!-- 充值 -->
|
||||
<form report-submit="true">
|
||||
<view class="payment bg-white">
|
||||
<view class="md normal flex" style="padding: 66rpx 66rpx 0"> 充值金额 </view>
|
||||
<view class="input flex">
|
||||
<text style="font-size: 46rpx">¥</text>
|
||||
<input
|
||||
:placeholder="placeholder"
|
||||
type="digit"
|
||||
@focus="setPlaceholder"
|
||||
@blur="setPlaceholderStatus"
|
||||
:value="number"
|
||||
@input="onInput"
|
||||
/>
|
||||
</view>
|
||||
<view class="tip muted m-t-20 flex">
|
||||
提示:当前余额为
|
||||
<text class="primary">¥{{ wallet.user_money || 0 }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<button size="lg" class="btn white br60" @tap="rechargeRights">立即充值</button>
|
||||
</form>
|
||||
|
||||
<!-- 推荐充值 -->
|
||||
<view class="fast-payment-container" v-if="rechargeObj.length">
|
||||
<view class="title bold normal flex">推荐充值</view>
|
||||
<view class="fast-pay flex flex-wrap">
|
||||
<view
|
||||
v-for="(item, index) in rechargeObj"
|
||||
:key="index"
|
||||
class="fast-pay-item bg-white flex-col col-center row-center"
|
||||
@tap="temRecharge(item.id)"
|
||||
>
|
||||
<view class="hot-recharge white" v-if="item.is_recommend">热门充值</view>
|
||||
<view class="price bold">
|
||||
<price-format
|
||||
weight="bold"
|
||||
:firstSize="42"
|
||||
:price="item.money"
|
||||
></price-format>
|
||||
<text class="xxl" style="font-weight: 400">元</text>
|
||||
</view>
|
||||
<view class="preferential primary xs">{{ item.tips }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 充值成功 -->
|
||||
<u-popup class="pay-popup" v-model="showPopup" closeable round mode="center">
|
||||
<view class="content bg-white">
|
||||
<image class="img-icon" src="/static/images/icon_success.png"></image>
|
||||
<view class="xxl bold m-t-10">充值成功</view>
|
||||
<view v-if="rechargeInfo.give_growth" class="lg" style="margin-top: 50rpx"
|
||||
>恭喜您获得
|
||||
<text v-if="rechargeInfo.give_growth"
|
||||
>+ <text class="primary">{{ rechargeInfo.give_growth }}</text
|
||||
>成长值</text
|
||||
></view
|
||||
>
|
||||
<button class="br60 btn" type="primary" size="md" @tap="onShowPopup">
|
||||
好的,谢谢
|
||||
</button>
|
||||
</view>
|
||||
</u-popup>
|
||||
<loading-view
|
||||
id="van-toast"
|
||||
v-if="showLoading"
|
||||
backgroundColor="rgba(0, 0, 0, 0)"
|
||||
></loading-view>
|
||||
<float-tab></float-tab>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// +----------------------------------------------------------------------
|
||||
// | likeshop开源商城系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||||
// | gitee下载:https://gitee.com/likeshop_gitee
|
||||
// | github下载:https://github.com/likeshop-github
|
||||
// | 访问官网:https://www.likeshop.cn
|
||||
// | 访问社区:https://home.likeshop.cn
|
||||
// | 访问手册:http://doc.likeshop.cn
|
||||
// | 微信公众号:likeshop技术社区
|
||||
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
|
||||
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
|
||||
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
||||
// | likeshop团队版权所有并拥有最终解释权
|
||||
// +----------------------------------------------------------------------
|
||||
// | author: likeshop.cn.team
|
||||
// +----------------------------------------------------------------------
|
||||
import { rechargeTemplate, recharge, getWallet } from '@/api/user'
|
||||
import { prepay } from '@/api/app'
|
||||
import { wxpay } from '@/utils/pay'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
navRecharge: ['账户充值', '佣金转入'],
|
||||
active: 0,
|
||||
number: '',
|
||||
placeholder: '0.00',
|
||||
rechargeObj: [],
|
||||
showPopup: false,
|
||||
rechargeInfo: {},
|
||||
wallet: {},
|
||||
showLoading: false
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad: function (options) {
|
||||
this.rechargeTemplateFun()
|
||||
this.getWalletFun()
|
||||
},
|
||||
|
||||
onUnload() {
|
||||
uni.$off('payment')
|
||||
},
|
||||
|
||||
methods: {
|
||||
onShowPopup() {
|
||||
this.showPopup = !this.showPopup
|
||||
},
|
||||
|
||||
setPlaceholderStatus: function (event) {
|
||||
if (event.detail.value.length == 0) {
|
||||
this.placeholder = '0.00'
|
||||
}
|
||||
},
|
||||
setPlaceholder: function () {
|
||||
this.placeholder = ''
|
||||
},
|
||||
|
||||
getWalletFun() {
|
||||
getWallet().then((res) => {
|
||||
if (res.code == 1) {
|
||||
this.wallet = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
rechargeTemplateFun() {
|
||||
rechargeTemplate().then((res) => {
|
||||
if (res.code == 1) {
|
||||
this.rechargeObj = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
rechargeRights() {
|
||||
const { number } = this
|
||||
this.rechargeFun({
|
||||
money: Number(number)
|
||||
})
|
||||
},
|
||||
|
||||
temRecharge(id) {
|
||||
this.rechargeFun({
|
||||
id
|
||||
})
|
||||
},
|
||||
|
||||
rechargeFun(obj) {
|
||||
if (!obj.id && obj.money == 0) {
|
||||
return this.$toast({
|
||||
title: '请输入金额'
|
||||
})
|
||||
}
|
||||
|
||||
this.showLoading = true
|
||||
|
||||
recharge(obj)
|
||||
.then(({ code, data, msg }) => {
|
||||
if (code != 1) throw new Error(msg)
|
||||
|
||||
this.rechargeInfo = data
|
||||
uni.$on('payment', (params) => {
|
||||
setTimeout(() => {
|
||||
if (params.result) {
|
||||
this.$toast({ title: '支付成功' })
|
||||
this.onShowPopup()
|
||||
this.getWalletFun()
|
||||
} else {
|
||||
// #ifdef MP
|
||||
this.$toast({ title: '支付失败' })
|
||||
// #endif
|
||||
}
|
||||
}, 500)
|
||||
})
|
||||
|
||||
uni.navigateTo({
|
||||
url: `/pages/payment/payment?from=${'recharge'}&order_id=${data.id}`
|
||||
})
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err)
|
||||
})
|
||||
.finally(() => {
|
||||
this.showLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
checkInputText: function (text) {
|
||||
var reg = /^(\.*)(\d+)(\.?)(\d{0,2}).*$/g
|
||||
|
||||
if (reg.test(text)) {
|
||||
//正则匹配通过,提取有效文本
|
||||
text = text.replace(reg, '$2$3$4')
|
||||
} else {
|
||||
//正则匹配不通过,直接清空
|
||||
text = ''
|
||||
}
|
||||
|
||||
return text //返回符合要求的文本(为数字且最多有带2位小数)
|
||||
},
|
||||
|
||||
onInput(e) {
|
||||
let number = e.detail.value
|
||||
number = this.checkInputText(number)
|
||||
this.number = number
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.user-payment {
|
||||
padding: 20rpx 30rpx;
|
||||
|
||||
.payment {
|
||||
text-align: center;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
padding-bottom: 74rpx;
|
||||
|
||||
.nav {
|
||||
margin: 20rpx 95rpx 80rpx;
|
||||
|
||||
.item {
|
||||
flex: 1;
|
||||
|
||||
.line {
|
||||
width: 110rpx;
|
||||
height: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.line {
|
||||
width: 110rpx;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
.input {
|
||||
margin-left: 66rpx;
|
||||
margin-top: 35rpx;
|
||||
margin-right: 30rpx;
|
||||
|
||||
input {
|
||||
height: 94rpx;
|
||||
text-align: left;
|
||||
font-size: 66rpx;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
border-bottom: $-solid-border;
|
||||
}
|
||||
|
||||
.tip {
|
||||
margin: 25rpx 66rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
background: linear-gradient(79deg, rgba(249, 95, 47, 1) 0%, rgba(255, 44, 60, 1) 100%);
|
||||
margin: 70rpx 0 30rpx;
|
||||
}
|
||||
|
||||
.fast-payment-container {
|
||||
margin-top: 72rpx;
|
||||
|
||||
.title {
|
||||
font-size: 38rpx;
|
||||
line-height: 53rpx;
|
||||
}
|
||||
|
||||
.fast-pay {
|
||||
margin-top: 40rpx;
|
||||
|
||||
.fast-pay-item {
|
||||
position: relative;
|
||||
width: 214rpx;
|
||||
height: 150rpx;
|
||||
border-radius: 10rpx;
|
||||
margin-bottom: 16rpx;
|
||||
|
||||
&:not(:nth-of-type(3n)) {
|
||||
margin-right: 24rpx;
|
||||
}
|
||||
|
||||
.hot-recharge {
|
||||
position: absolute;
|
||||
padding: 2rpx 10rpx;
|
||||
height: 30rpx;
|
||||
background: linear-gradient(180deg, #ff2c3c 0%, #f95f2f 100%);
|
||||
border-radius: 0 20rpx 0 20rpx;
|
||||
font-size: 20rpx;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.price {
|
||||
font-size: 42rpx;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
|
||||
.preferential {
|
||||
line-height: 32rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pay-popup {
|
||||
.content {
|
||||
padding: 40rpx 0;
|
||||
text-align: center;
|
||||
width: 560rpx;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
|
||||
.img-icon {
|
||||
width: 112rpx;
|
||||
height: 112rpx;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin: 80rpx 60rpx 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user