Files
MP-XiaoXing/BagMoney/pages/reCharge/reCharge.vue
2022-08-08 09:20:48 +08:00

290 lines
7.0 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>
<cu-custom class="main-totextbar bg-main-oil" :isBack="true" bgColor="bg-main-oil">
<block slot="backText">返回</block>
<block slot="content">油卡中心</block>
</cu-custom>
<view class="">
<view class="placeholder bg-main-oil">
</view>
<view class="move-top">
<view class="" v-for="item in cardList" :key="item.accountCardCode">
<oil-card :card="item"></oil-card>
</view>
</view>
</view>
<view class="g-shadow padding margin radius">
<text class=" padding-left text-df">充值金额</text>
<view class="cu-form-group">
<input type="digit" placeholder="请输入金额" v-model="reChargeMoney" name="input"></input>
<view class="text-xxl"></view>
</view>
<view class="grid col-3 padding-sm">
<view v-for="(item,index) in checkbox" class="padding-xs" :key="index">
<button class="cu-btn red lg block" :class="item.checked?'bg-red':'line-red'" @tap="ChooseCheckbox"
:data-value="item.value"> {{item.name}}
<view class="cu-tag sm round" :class="item.checked?'bg-white text-red':'bg-red'"
v-if="item.hot">HOT</view>
</button>
</view>
</view>
<view class="transactions margin radius">
<view class="bottom-btn padding-top-lg">
<button class="text-center bg-red text-block" @tap="reCharge">立即充油</button>
</view>
</view>
</view>
<view class="cu-modal" :class="modalName=='success'?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
<view class="content">充油金额到账成功</view>
<view class="action" @tap="modalName=''">
<text class="cuIcon-close text-red"></text>
</view>
</view>
<view class="padding-bottom-lg">
<view class="bg-img padding-left padding-right flex align-center"
:style="'background-image: url('+imgURL+'recharge-success.png);'">
<view class="padding-xl text-left text-white">
<view class=" text-bold">
<!-- <text v-show="cardList[0].oilCardType==2">
直属油卡
</text>
<text v-show="cardList[0].oilCardType==3">
外请油卡
</text>
<text v-show="cardList[0].oilCardType==1">
个人油卡
</text> -->
</view>
<view class="padding-bottom-xs padding-top-lg card-color padding-bottom text-xxl">
{{cardList[0].accountCardCode|cardNoFormat}}
</view>
<view class="padding-bottom-xs text-sm text-black text-ABC">
<!-- {{card.companyName}} -->
Personal oil card
</view>
<view class="padding-xs text-lg">
<text class="text-sm">账户余额:</text>
<text class="text-xl text-bold padding-left-xs" v-if="cardList[0].shareCompanyQuota==1">
共享余额
</text>
<text class="text-sm padding-left-xs" v-else>
{{lastMoney|moneyFormat}}
</text>
</view>
</view>
</view>
<view class="text-center">
此时余额为 <text class="text-red padding text-lg text-bold">{{lastMoney|moneyFormat}}</text>
<view class="">
如有疑问请联系在线客服
</view>
<view class="padding margin padding-bottom-0 margin-bottom-0 padding-top-0">
<button @tap="backIndex" class=" line-red">关闭</button>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import accountApi from '@/api/account.js'
import oilCard from '../../components/oil-card/oil-card.vue'
export default {
components: {
oilCard
},
data() {
return {
cooling: false,
modalName: '',
imgURL: this.global.imgURL,
cardCur: 0,
checkbox: [{
value: 100,
name: '100元',
checked: false,
hot: false,
}, {
value: 200,
name: '200元',
checked: false,
hot: false,
}, {
value: 500,
name: '500元',
checked: false,
hot: false,
}, {
value: 1000,
name: '1000元',
checked: false,
hot: false,
}, {
value: 2000,
name: '2000元',
checked: false,
hot: false,
}, {
value: 5000,
name: '5000元',
checked: false,
hot: false,
}],
reChargeMoney: '',
cardList: [],
lastMoney: '',
outTradeNo: '' // 商户订单号
};
},
onLoad() {
this.getCards()
// 初始化towerSwiper 传已有的数组名即可
},
filters:{
moneyFormat(value) {
if (value) {
return value.toFixed(2)
} else {
return '0.00'
}
},
cardNoFormat(value) {
if (value) {
return value.replace(/(.{4})/g,'$1 ')
}
}
},
methods: {
reCharge() {
if (!this.cooling) {
this.cooling = true
let payData = {
openId: uni.getStorageSync('openid'),
unionId: uni.getStorageSync('unionid'),
appId: "wxc1d226ac9c5bea36",
rechargeSource: 'WECHAT_APPETS',
rechargeAmount: this.reChargeMoney + '',
createSource: 'XOIL_DRIVER_WECHAT_APPLET',
payCode: 'WECHAT_MP',
}
accountApi.getUserPayInfo(payData).then(res => {
if (res.code == 20000) {
let reqPay = res.data.baseWxOrderVo
this.outTradeNo = res.data.outTradeNo
uni.requestPayment({
provider: 'wxpay',
...reqPay,
success: (res) => {
this.getPayStatus(this.outTradeNo)
this.getLastMoney()
this.getCards()
// console.log('success:' + JSON.stringify(res));
},
fail: function(err) {
// console.log('fail:' + JSON.stringify(err));
},
complete: () => {
this.cooling = fasle
}
})
}
})
}else{
uni.showToast({
icon:'none',
title:'操作频繁'
})
}
},
backIndex() {
uni.navigateBack({
})
},
getLastMoney() {
// 查最新余额
accountApi.getCustomerAccount().then(res => {
if (res.code == 20000) {
this.lastMoney = res.data
}
})
},
getPayStatus(id) {
accountApi.pollingPayResult(id).then(res => {
if (res.code == 20000) {
// 提示到账成功
this.modalName = 'success'
}
})
},
getCards() {
accountApi.getUserAccount().then(res => {
if (res.code == 20000) {
this.cardList = res.data
}
})
},
ChooseCheckbox(e) {
let items = this.checkbox;
let values = e.currentTarget.dataset.value;
this.reChargeMoney = values
for (let i = 0, lenI = items.length; i < lenI; ++i) {
if (items[i].value == values) {
items[i].checked = !items[i].checked;
} else {
items[i].checked = false
}
}
}
}
}
</script>
<style scoped>
.tower-swiper .tower-item {
transform: scale(calc(0.5 + var(--index) / 10));
margin-left: calc(var(--left) * 100upx - 150upx);
z-index: var(--index);
}
.placeholder {
width: 750upx;
min-height: 115rpx;
}
.move-top {
margin-top: -110rpx;
}
.yu-tag-right {
top: 0;
right: 0;
border-radius: 0 0 0 12px;
background-color: #FF6D6E !important;
color: #fff;
padding: 0 10px;
}
.inner-card {
height: 100%;
}
.opacity-half {
opacity: 0.2;
}
.card-color{
color: #F5E558;
}
</style>