2025-05-28 16:03:08 +08:00
|
|
|
|
<script setup>
|
|
|
|
|
|
import { ref } from "vue";
|
|
|
|
|
|
import Container from "@/components/Container.vue";
|
|
|
|
|
|
import Avatar from "@/components/Avatar.vue";
|
|
|
|
|
|
import SButton from "@/components/SButton.vue";
|
2025-06-24 13:18:03 +08:00
|
|
|
|
import SModal from "@/components/SModal.vue";
|
|
|
|
|
|
import Signin from "@/components/Signin.vue";
|
2025-07-01 00:25:17 +08:00
|
|
|
|
import { createOrderAPI } from "@/apis";
|
2025-05-28 16:03:08 +08:00
|
|
|
|
import useStore from "@/store";
|
|
|
|
|
|
import { storeToRefs } from "pinia";
|
|
|
|
|
|
const store = useStore();
|
2025-06-22 15:04:10 +08:00
|
|
|
|
const { user, config } = storeToRefs(store);
|
2025-05-28 16:03:08 +08:00
|
|
|
|
|
2025-06-22 15:04:10 +08:00
|
|
|
|
const selectedVIP = ref(0);
|
2025-06-24 13:18:03 +08:00
|
|
|
|
const showModal = ref(false);
|
2025-05-28 16:03:08 +08:00
|
|
|
|
|
2025-07-01 00:25:17 +08:00
|
|
|
|
const onPay = async () => {
|
2025-06-19 01:55:40 +08:00
|
|
|
|
if (!user.value.id) {
|
2025-06-24 13:18:03 +08:00
|
|
|
|
showModal.value = true;
|
2025-07-01 00:25:17 +08:00
|
|
|
|
} else if (config.value.vipMenus[selectedVIP.value]) {
|
|
|
|
|
|
if (config.value.vipMenus[selectedVIP.value].id) {
|
|
|
|
|
|
const result = await createOrderAPI(
|
|
|
|
|
|
config.value.vipMenus[selectedVIP.value].id
|
|
|
|
|
|
);
|
|
|
|
|
|
uni.showToast({
|
|
|
|
|
|
title: "创建成功",
|
|
|
|
|
|
icon: "none",
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
2025-06-19 01:55:40 +08:00
|
|
|
|
}
|
|
|
|
|
|
};
|
2025-05-28 16:03:08 +08:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
|
<Container title="会员说明">
|
2025-06-19 01:55:40 +08:00
|
|
|
|
<view v-if="user.id" class="header">
|
2025-05-28 16:03:08 +08:00
|
|
|
|
<view>
|
2025-06-25 00:09:53 +08:00
|
|
|
|
<Avatar :src="user.avatar" :size="35" />
|
2025-06-24 13:18:03 +08:00
|
|
|
|
<text class="truncate">{{ user.nickName }}</text>
|
2025-05-28 16:03:08 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
<text>5月5号到期</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="container">
|
|
|
|
|
|
<view class="content">
|
|
|
|
|
|
<view class="title-bar">
|
|
|
|
|
|
<view />
|
|
|
|
|
|
<text>VIP 介绍</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view>
|
|
|
|
|
|
<text
|
|
|
|
|
|
>射灵的的VIP服务是为了正式对战打造的专属特权,让您在激烈的射击运动中充分享受与同级别想着对战的乐趣;</text
|
|
|
|
|
|
>
|
|
|
|
|
|
<text
|
|
|
|
|
|
>VIP的收取形式灵活多样,充分考虑到了不同用户的需求。我们提供按月收取的方式,每月仅需10元,即可轻松成为VIP会员,享受一个月的尊贵特权。这种方式适合那些希望先体验VIP服务,再决定是否长期投入的用户。您可以先购买一个月的VIP,亲身感受VIP带来的种种好处,如果觉得满意,再继续选择适合自己的购买方案。而对于那些已经确定会长期参与对战,希望持续享受VIP特权的用户,我们则推出了更为优惠的一年VIP套餐。一次性购买一年的VIP,仅需100元,平均每月不到9元,您就能全年畅享VIP的所有权益。这不仅为您节省了时间和精力,还为您带来了实实在在的经济优惠。
|
|
|
|
|
|
一年的时间,足够您在对战的世界中尽情驰骋,不断挑战自我,创造属于自己的辉煌战绩。</text
|
|
|
|
|
|
>
|
|
|
|
|
|
<text
|
|
|
|
|
|
>VIP会员还将获得专属的客服支持。当您在游戏中遇到任何问题,无论是技术故障、规则疑问还是其他需要帮助的情况,都可以随时联系我们的VIP专属客服团队、他们将为您提供</text
|
|
|
|
|
|
>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="content">
|
|
|
|
|
|
<view class="title-bar">
|
|
|
|
|
|
<view />
|
|
|
|
|
|
<text>成为射灵会员</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="vip-items">
|
|
|
|
|
|
<view
|
2025-06-22 15:04:10 +08:00
|
|
|
|
v-for="(item, index) in config.vipMenus || []"
|
2025-05-28 16:03:08 +08:00
|
|
|
|
:key="index"
|
|
|
|
|
|
:style="{
|
2025-06-22 15:04:10 +08:00
|
|
|
|
color: selectedVIP === index ? '#fff' : '#333333',
|
|
|
|
|
|
borderColor: selectedVIP === index ? '#FF7D57' : '#eee',
|
2025-05-28 16:03:08 +08:00
|
|
|
|
background:
|
2025-06-22 15:04:10 +08:00
|
|
|
|
selectedVIP === index
|
2025-05-28 16:03:08 +08:00
|
|
|
|
? '#FF7D57'
|
|
|
|
|
|
: 'linear-gradient(180deg, #fbfbfb 0%, #f5f5f5 100%)',
|
|
|
|
|
|
}"
|
2025-07-01 00:25:17 +08:00
|
|
|
|
@click="() => (selectedVIP = index)"
|
2025-05-28 16:03:08 +08:00
|
|
|
|
>
|
2025-06-22 15:04:10 +08:00
|
|
|
|
{{ item.name }}
|
2025-05-28 16:03:08 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
2025-06-19 01:55:40 +08:00
|
|
|
|
<SButton :onClick="onPay">支付</SButton>
|
2025-06-24 13:18:03 +08:00
|
|
|
|
<SModal :show="showModal" :onClose="() => (showModal = false)">
|
|
|
|
|
|
<Signin :onClose="() => (showModal = false)" />
|
|
|
|
|
|
</SModal>
|
2025-05-28 16:03:08 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</Container>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
|
.header {
|
2025-06-08 12:52:49 +08:00
|
|
|
|
width: calc(100% - 30px);
|
2025-05-28 16:03:08 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
padding: 15px;
|
|
|
|
|
|
padding-top: 0;
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.header > view {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
.header > view > text:last-child {
|
|
|
|
|
|
margin-left: 10px;
|
2025-06-24 13:18:03 +08:00
|
|
|
|
width: 120px;
|
|
|
|
|
|
text-align: left;
|
2025-05-28 16:03:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
.header > text:nth-child(2) {
|
|
|
|
|
|
color: #fed847;
|
|
|
|
|
|
}
|
|
|
|
|
|
.container {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
background-color: #e4e4e4;
|
|
|
|
|
|
padding-top: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.content {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
|
padding: 15px;
|
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.title-bar {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
}
|
|
|
|
|
|
.title-bar > view:first-child {
|
|
|
|
|
|
width: 5px;
|
|
|
|
|
|
height: 15px;
|
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
|
background-color: #fed847;
|
|
|
|
|
|
margin-right: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.content > view:nth-child(2) {
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
color: #333;
|
|
|
|
|
|
}
|
|
|
|
|
|
.content > view:nth-child(2) > text {
|
|
|
|
|
|
display: block;
|
|
|
|
|
|
margin-top: 10px;
|
2025-07-01 00:25:17 +08:00
|
|
|
|
color: #000;
|
2025-05-28 16:03:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
.vip-items {
|
|
|
|
|
|
width: 100%;
|
2025-06-22 15:04:10 +08:00
|
|
|
|
display: grid;
|
|
|
|
|
|
grid-template-columns: repeat(4, 23.5%);
|
2025-05-28 16:03:08 +08:00
|
|
|
|
padding: 10px;
|
2025-06-22 15:04:10 +08:00
|
|
|
|
row-gap: 5%;
|
|
|
|
|
|
column-gap: 2%;
|
2025-05-28 16:03:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
.vip-items > view {
|
|
|
|
|
|
border: 1px solid #eee;
|
|
|
|
|
|
padding: 12px 0;
|
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|