quick/pages/pay/pay.vue
2022-10-26 11:14:13 +08:00

346 lines
7.2 KiB
Vue
Raw Permalink 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 class="flex-1">
<!-- <view
class="flex-row px-24"
style="height: 88rpx;align-items: center;justify-content: space-between;background: linear-gradient(88deg, #fad2d2 0%, #fae3d2 51%, #fae3d2 100%);"
>
<view style="width: 50rpx;flex-center" @click="getkActivity">
<u-icon name="/static/icon/arrowRight.png" size="48rpx" />
</view>
<text class="title"> 充值中心 </text> <view style="width: 50rpx;" />
</view> -->
<GLoading />
<GList class="flex-1">
<view class="header flex-row">
<view class="flex-1">
<text class="balance-text"> 账户余额 </text>
<view class="flex-row mt-14" style="align-items: center;">
<view class="flex-row flex-center">
<text class="balance-num"> {{ egold || 0 }} </text>
<text class="balance-unit"> K币 </text>
</view>
<u-icon
class="ml-26"
name="/static/icon/gold.png"
size="48rpx"
/>
</view>
</view>
<image
class="header-img"
src="@/static/images/gold.png"
mode="aspectFill"
/>
</view>
<view class="money mb-20">
<view class="moneyList flex-row">
<view
v-for="(item, index) in payList"
:key="index"
:class="{
'mr-32': (index + 1) % 2 !== 0,
active: index === 0
}"
@click="payItem(item)"
class="money-item flex-center mb-40"
>
<text class="money-item-one">
{{ item.price || 0 }}
</text>
<text v-if="item.egold" class="money-item-to">
{{ item.egold || 0 }}k币
</text>
<text
class="money-item-three"
:class="{ 'mt-20': !item.egold }"
>
{{ item.title || '' }}
</text>
<view v-if="item.poster" class="tips flex-center">
<text class="tips-text"> {{ item.poster }} </text>
</view>
</view>
</view>
<view
class="payWay flex-row mt-30"
style="justify-content: space-between;align-items: center;"
>
<text class="payWay-text"> 支付方式 </text>
<view class="flex-row">
<u-icon
class="mr-20"
name="/static/icon/wx.png"
size="48rpx"
/>
<text class="payWay-wx"> 微信支付 </text>
</view>
</view>
</view>
<view class="warning">
<text class="warning-one mb-20"> 温馨提示 </text>
<text class="warning-to mb-20">
1IP和书币属于虚拟商品,一旦购买不作退换,望周知
</text>
<view style="display: inline-block;">
<span class="warning-to"
>2充值后书币到账可能有延迟15分钟内未到账请联系微信客服微信号:</span
>
<span class="warning-three"> yttfyyl, yt20216688 </span>
<span class="warning-to"
>工作时间:周一到周五9:00-17:00</span
>
</view>
</view>
<!-- #ifndef H5 -->
<u-gap height="80" />
<!-- #endif -->
</GList>
<GTopUpActivity ref="GTopUpActivity" @success="payItem" />
</view>
</template>
<script>
import { paysetting, payback, getTiktokpay } from '@/api/index.js';
export default {
data() {
return {
payList: [],
egold: 0,
backClickIndex: 0,
sid: ''
};
},
onLoad({ sid }) {
this.sid = sid;
},
onShow() {
this.backClickIndex = 0;
this.getPayList();
const isPopup = uni.getStorageSync('isPopup');
if (isPopup) {
payback().then(res => {
setTimeout(() => {
this.payList.unshift({ ...res, isback: 1 });
this.$refs.GTopUpActivity.open(res).then(() => {});
this.backClickIndex++;
}, 500);
});
} else {
uni.setStorageSync('isPopup', true);
}
},
onBackPress(e) {
return false;
},
onNavigationBarButtonTap() {
console.log(111);
},
methods: {
getPayList() {
paysetting().then(res => {
this.egold = res.egold;
this.payList = res.list;
});
},
getkActivity() {
if (this.backClickIndex === 0) {
payback().then(res => {
this.payList.unshift({ ...res, isback: 1 });
this.$refs.GTopUpActivity.open(res).then(() => {
console.log(11);
});
this.backClickIndex++;
});
} else {
if (this.sid) {
uni.redirectTo({
url: '/pages/video/index?sid=' + this.sid
});
} else {
uni.switchTab({
url: this.path || '/pages/my/index/index'
});
}
}
},
payItem(item) {
getTiktokpay({
id: item.id,
isback: item.isback === 1 ? 1 : 0
}).then(res => {
console.log(res);
const orderInfo = {
order_id: res.order_id,
order_token: res.order_token
};
tt.pay({
orderInfo,
service: 5,
success: res => {
console.log(res);
if (res.code == 0) {
uni.showToast({
title: '支付成功',
duration: 2000
});
paysetting().then(res => {
this.egold = res.egold;
uni.setStorageSync('isPopup', false);
const eventChannel = this.getOpenerEventChannel();
eventChannel.emit('paySuccess', {
egold:res.egold
});
uni.navigateBack();
});
// 支付成功处理逻辑只有res.code=0时才表示支付成功
// 但是最终状态要以商户后端结果为准
}
},
fail: () => {
uni.showToast({
title: '支付失败,请重新支付',
duration: 2000
});
}
});
});
}
}
};
</script>
<style lang="scss">
.header {
height: 282rpx;
background: linear-gradient(88deg, #fad2d2 0%, #fae3d2 51%, #fae3d2 100%);
padding: 40rpx 30rpx;
}
.money {
position: relative;
background: #ffffff;
border-radius: 48rpx 48rpx 0px 0px;
padding: 70rpx 30rpx;
margin-top: -56rpx;
z-index: 99;
}
.header-img {
width: 238rpx;
height: 238rpx;
}
.balance-text {
font-size: 34rpx;
font-weight: bold;
color: #1a1a1a;
}
.balance-num {
font-size: 62rpx;
color: #ff002e;
font-weight: bold;
}
.balance-unit {
font-size: 34rpx;
color: #1a1a1a;
margin-left: 10rpx;
}
.money-title {
font-size: 36rpx;
font-weight: bold;
color: #1a1a1a;
margin-bottom: 48rpx;
}
.moneyList {
flex-wrap: wrap;
}
.money-item {
position: relative;
width: 328rpx;
height: 194rpx;
border-radius: 24rpx;
border: 1rpx solid #aaaaaa;
&.active {
background: #ff7246;
border: 0;
.money-item-one {
color: #ffffff;
}
.money-item-to {
color: #ffffff;
}
.money-item-three {
color: #ffffff;
}
}
}
.tips {
position: absolute;
top: -25rpx;
left: -2rpx;
width: 140rpx;
height: 48rpx;
background: #ffbd12;
border-radius: 24rpx 0px 24rpx 0px;
}
.tips-text {
font-size: 26rpx;
font-weight: 400;
color: #1a1a1a;
}
.money-item-one {
font-size: 40rpx;
font-weight: bold;
color: #1a1a1a;
line-height: 46rpx;
}
.money-item-to {
font-size: 28rpx;
font-weight: 400;
color: #666666;
line-height: 32rpx;
margin: 8rpx 0;
}
.money-item-three {
font-size: 28rpx;
font-weight: 500;
color: #ff779e;
line-height: 32rpx;
}
.payWay-text {
font-size: 36rpx;
font-weight: bold;
color: #1a1a1a;
}
.payWay-wx {
font-size: 36rpx;
font-weight: bold;
color: #28c445;
}
.warning {
background-color: #ffffff;
padding: 52rpx 30rpx;
.warning-one {
font-size: 32rpx;
font-weight: 500;
color: #1a1a1a;
}
.warning-to {
font-size: 28rpx;
font-weight: 400;
color: #999999;
}
.warning-three {
font-size: 28rpx;
font-weight: 400;
color: #ff779e;
}
}
.title {
font-size: 40rpx;
font-weight: 500;
color: #130f26;
}
</style>