From 5e95e01c7183c4b4e28d1d24bf1423ed950785f4 Mon Sep 17 00:00:00 2001
From: zhangyi <690096405@qq.com>
Date: Wed, 10 Jun 2026 11:07:09 +0800
Subject: [PATCH 1/3] =?UTF-8?q?update:=E4=BB=A3=E7=A0=81=E5=A4=87=E4=BB=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/apis.js | 3 +
src/components/AppBackground.vue | 6 +
src/components/AppFooter.vue | 2 +-
src/components/Header.vue | 2 +-
src/components/ModalDialog.vue | 234 ++++++
src/components/Signin.vue | 26 +-
src/pages.json | 21 +-
src/pages/be-vip.vue | 258 ------
src/pages/member/be-vip.vue | 876 ++++++++++++++++++++
src/pages/{ => member}/order-detail.vue | 0
src/pages/{ => member}/orders.vue | 60 +-
src/pages/member/vip-intro.vue | 244 ++++++
src/pages/team-battle/components/Header.vue | 2 +-
src/pages/user.vue | 4 +-
src/static/common/dialog-bg.png | Bin 0 -> 21283 bytes
src/static/common/dialog-icon.png | Bin 0 -> 7305 bytes
src/static/common/dialog-light.png | Bin 0 -> 63552 bytes
src/static/vip/intro-toast.png | Bin 0 -> 1580 bytes
src/static/vip/super-battle.png | Bin 0 -> 862 bytes
src/static/vip/super-button.png | Bin 0 -> 3101 bytes
src/static/vip/svip-arrow.png | Bin 0 -> 1637 bytes
src/static/vip/svip-badge.png | Bin 0 -> 1192 bytes
src/static/vip/svip-battle.png | Bin 0 -> 1578 bytes
src/static/vip/svip-comment.png | Bin 0 -> 1034 bytes
src/static/vip/svip-hit.png | Bin 0 -> 1802 bytes
src/static/vip/svip-off.png | Bin 0 -> 724 bytes
src/static/vip/svip-on.png | Bin 0 -> 777 bytes
src/static/vip/svip-order.png | Bin 0 -> 492 bytes
src/static/vip/svip-point.png | Bin 0 -> 1692 bytes
src/static/vip/svip-rank.png | Bin 0 -> 1402 bytes
src/static/vip/svip-service.png | Bin 0 -> 1595 bytes
src/static/vip/svip-title.png | Bin 0 -> 36402 bytes
src/static/vip/svip-title2.png | Bin 0 -> 32454 bytes
src/static/vip/vip-badge.png | Bin 0 -> 1001 bytes
src/static/vip/vip-battle.png | Bin 0 -> 1133 bytes
src/static/vip/vip-bg.png | Bin 0 -> 114063 bytes
src/static/vip/vip-comment.png | Bin 0 -> 949 bytes
src/static/vip/vip-off.png | Bin 0 -> 594 bytes
src/static/vip/vip-on.png | Bin 0 -> 637 bytes
src/static/vip/vip-order.png | Bin 0 -> 476 bytes
src/static/vip/vip-rank.png | Bin 0 -> 1139 bytes
src/static/vip/vip-service.png | Bin 0 -> 1172 bytes
src/static/vip/vip-title.png | Bin 0 -> 38701 bytes
src/static/vip/vip-title2.png | Bin 0 -> 33573 bytes
44 files changed, 1450 insertions(+), 288 deletions(-)
create mode 100644 src/components/ModalDialog.vue
delete mode 100644 src/pages/be-vip.vue
create mode 100644 src/pages/member/be-vip.vue
rename src/pages/{ => member}/order-detail.vue (100%)
rename src/pages/{ => member}/orders.vue (63%)
create mode 100644 src/pages/member/vip-intro.vue
create mode 100644 src/static/common/dialog-bg.png
create mode 100644 src/static/common/dialog-icon.png
create mode 100644 src/static/common/dialog-light.png
create mode 100644 src/static/vip/intro-toast.png
create mode 100644 src/static/vip/super-battle.png
create mode 100644 src/static/vip/super-button.png
create mode 100644 src/static/vip/svip-arrow.png
create mode 100644 src/static/vip/svip-badge.png
create mode 100644 src/static/vip/svip-battle.png
create mode 100644 src/static/vip/svip-comment.png
create mode 100644 src/static/vip/svip-hit.png
create mode 100644 src/static/vip/svip-off.png
create mode 100644 src/static/vip/svip-on.png
create mode 100644 src/static/vip/svip-order.png
create mode 100644 src/static/vip/svip-point.png
create mode 100644 src/static/vip/svip-rank.png
create mode 100644 src/static/vip/svip-service.png
create mode 100644 src/static/vip/svip-title.png
create mode 100644 src/static/vip/svip-title2.png
create mode 100644 src/static/vip/vip-badge.png
create mode 100644 src/static/vip/vip-battle.png
create mode 100644 src/static/vip/vip-bg.png
create mode 100644 src/static/vip/vip-comment.png
create mode 100644 src/static/vip/vip-off.png
create mode 100644 src/static/vip/vip-on.png
create mode 100644 src/static/vip/vip-order.png
create mode 100644 src/static/vip/vip-rank.png
create mode 100644 src/static/vip/vip-service.png
create mode 100644 src/static/vip/vip-title.png
create mode 100644 src/static/vip/vip-title2.png
diff --git a/src/apis.js b/src/apis.js
index 305a040..590d837 100644
--- a/src/apis.js
+++ b/src/apis.js
@@ -333,6 +333,9 @@ export const createOrderAPI = (vipId) => {
quanity: 1,
tradeType: "mini",
payType: "wxpay",
+ returnUrl: "",
+ remark: "",
+ mockTest: false,
});
};
diff --git a/src/components/AppBackground.vue b/src/components/AppBackground.vue
index 134b66e..32bfcb7 100644
--- a/src/components/AppBackground.vue
+++ b/src/components/AppBackground.vue
@@ -57,6 +57,12 @@ const props = defineProps({
src="https://static.shelingxingqiu.com/shootmini/static/rank/rank-bg.png"
mode="widthFix"
/>
+
diff --git a/src/components/AppFooter.vue b/src/components/AppFooter.vue
index 05f2ebe..bfe2831 100644
--- a/src/components/AppFooter.vue
+++ b/src/components/AppFooter.vue
@@ -8,7 +8,7 @@ const tabs = [
function handleTabClick(index) {
if (index === 0) {
uni.navigateTo({
- url: "/pages/be-vip",
+ url: "/pages/member/be-vip",
});
}
if (index === 1) {
diff --git a/src/components/Header.vue b/src/components/Header.vue
index 7296572..7aad964 100644
--- a/src/components/Header.vue
+++ b/src/components/Header.vue
@@ -316,7 +316,7 @@ onBeforeUnmount(() => {
width: 156rpx;
height: 28rpx;
font-weight: 400;
- font-size: 20rpx;
+ font-size: 24rpx;
color: #ffffff;
text-align: center;
line-height: 28rpx;
diff --git a/src/components/ModalDialog.vue b/src/components/ModalDialog.vue
new file mode 100644
index 0000000..069a0f3
--- /dev/null
+++ b/src/components/ModalDialog.vue
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+ {{ content }}
+
+
+
+
+
+ {{ cancelText }}
+
+
+ {{ confirmText }}
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Signin.vue b/src/components/Signin.vue
index 619d681..53ee292 100644
--- a/src/components/Signin.vue
+++ b/src/components/Signin.vue
@@ -1,5 +1,5 @@
@@ -187,10 +198,11 @@ onShow(() => {
昵称:
diff --git a/src/pages.json b/src/pages.json
index bd1f50c..1b3e684 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -69,15 +69,18 @@
{
"path": "pages/user"
},
- {
- "path": "pages/orders"
- },
- {
- "path": "pages/order-detail"
- },
- {
- "path": "pages/be-vip"
- },
+ {
+ "path": "pages/member/orders"
+ },
+ {
+ "path": "pages/member/order-detail"
+ },
+ {
+ "path": "pages/member/be-vip"
+ },
+ {
+ "path": "pages/member/vip-intro"
+ },
{
"path": "pages/grade-intro"
},
diff --git a/src/pages/be-vip.vue b/src/pages/be-vip.vue
deleted file mode 100644
index 94288d3..0000000
--- a/src/pages/be-vip.vue
+++ /dev/null
@@ -1,258 +0,0 @@
-
-
-
-
-
-
-
-
-
- VIP 介绍
-
-
-
-
-
-
-
-
- 会员续费
-
-
- (selectedVIP = index)"
- >
- {{ item.name }}
-
-
-
- 支付
-
-
- 我的订单
-
-
-
-
-
-
-
-
-
diff --git a/src/pages/member/be-vip.vue b/src/pages/member/be-vip.vue
new file mode 100644
index 0000000..f91acfd
--- /dev/null
+++ b/src/pages/member/be-vip.vue
@@ -0,0 +1,876 @@
+
+
+
+
+
+
+
+ {{ item.tab }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 有效期至:{{ getActiveVipExpiredDate(type) }}
+
+
+
+
+ 订单管理
+
+
+
+
+
+
+ {{ type.benefitTitle }}
+
+
+
+
+
+
+
+
+ {{ benefit.label }}
+
+
+
+
+
+
+
+
+
+ {{ pack.name }}
+
+ ¥
+ {{ pack.price }}
+
+
+ ¥{{ pack.original }}
+
+
+
+
+
+
+
+
+
+
+ 支付即同意
+ 《 会员自动续费服务协议》
+ 《 扣款授权服务协议》
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/order-detail.vue b/src/pages/member/order-detail.vue
similarity index 100%
rename from src/pages/order-detail.vue
rename to src/pages/member/order-detail.vue
diff --git a/src/pages/orders.vue b/src/pages/member/orders.vue
similarity index 63%
rename from src/pages/orders.vue
rename to src/pages/member/orders.vue
index 79bb987..0ab018b 100644
--- a/src/pages/orders.vue
+++ b/src/pages/member/orders.vue
@@ -3,6 +3,7 @@ import { ref, onMounted } from "vue";
import { onShow } from "@dcloudio/uni-app";
import Container from "@/components/Container.vue";
import ScrollList from "@/components/ScrollList.vue";
+import ModalDialog from "@/components/ModalDialog.vue";
import { getOrderListAPI } from "@/apis";
import useStore from "@/store";
import { orderStatusNames, getStatusColor } from "@/constants";
@@ -10,13 +11,34 @@ import { storeToRefs } from "pinia";
const store = useStore();
const { user, config } = storeToRefs(store);
+const autoRenewDialogVisible = ref(false);
+const selectedRenewOrder = ref(null);
+
const toDetailPage = (detail) => {
uni.setStorageSync("order", detail);
uni.navigateTo({
- url: `/pages/order-detail`,
+ url: "/pages/member/order-detail",
});
};
+const openAutoRenewDialog = (detail) => {
+ selectedRenewOrder.value = detail;
+ autoRenewDialogVisible.value = true;
+};
+
+const closeAutoRenewDialog = () => {
+ autoRenewDialogVisible.value = false;
+ selectedRenewOrder.value = null;
+};
+
+const confirmAutoRenewDialog = () => {
+ autoRenewDialogVisible.value = false;
+ uni.showToast({
+ title: "功能实现中",
+ icon: "none",
+ });
+}
+
const list = ref([]);
const onLoading = async (page) => {
@@ -44,7 +66,7 @@ onShow(() => {
-
+
{
>
金额:{{ item.total }} 元
支付方式:微信
+
+
+
@@ -78,15 +113,15 @@ onShow(() => {
width: 100%;
height: 100%;
background-color: #f5f5f5;
- padding-top: 10px;
+ padding-top: 16rpx;
}
.order-item {
position: relative;
background-color: #fff;
- margin-bottom: 10px;
+ margin-bottom: 16rpx;
display: flex;
flex-direction: column;
- padding: 15px;
+ padding: 28rpx 30rpx 18rpx 30rpx;
}
.order-item > view:first-child {
position: absolute;
@@ -98,12 +133,19 @@ onShow(() => {
font-size: 11px;
}
.order-item > text:nth-child(2) {
- color: #000;
- font-size: 16px;
+ color: #333333;
+ font-size: 30rpx;
}
.order-item > text {
color: #666666;
- font-size: 13px;
- margin-top: 5px;
+ font-size: 26rpx;
+ margin-bottom: 10rpx;
+}
+.order-item > .renew-action {
+ position: absolute;
+ right: 30rpx;
+ bottom: 18rpx;
+ color: #1f6ed4;
+ margin-bottom: 0;
}
diff --git a/src/pages/member/vip-intro.vue b/src/pages/member/vip-intro.vue
new file mode 100644
index 0000000..8c46dbf
--- /dev/null
+++ b/src/pages/member/vip-intro.vue
@@ -0,0 +1,244 @@
+
+
+
+
+
+
+ 射灵星球会员权益
+
+
+ 核心特权:
+ 解锁约战、段位评级、实时排位赛、AI智能教练点评四大核心功能。
+
+
+
+ 专属服务:
+ 享全年不同阶段VIP专属客服,快速解决技术故障、规则疑问等所有问题。
+
+
+
+ 新用户福利:
+ 所有初次绑定设备的用户,免费赠送6个月普通会员。
+
+
+
+
+ 加入射灵星球,在真实射箭运动中体验在线竞技的乐趣,结识全球志同道合的弓友,持续享受新功能与系统升级,不断挑战自我,创造属于你的辉煌战绩!
+
+
+
+
+
+
+ 初次绑定设备赠送6个月
+
+
+
+ 特权
+ 基础用户
+ 普通会员
+ 超级会员
+
+
+ 专属落点标识
+ 无
+ 无
+ 螺旋
+
+
+ 专属命中效果
+ 无
+ 无
+ 玻璃裂纹
+
+
+ 箭矢飞行特效
+ 无
+ 无
+ 光箭
+
+
+ 每日约战次数
+ 2次
+ 22次
+ 无限
+
+
+ 每日排位赛次数
+ 2次
+ 22次
+ 无限
+
+
+ 教练点评
+ 无
+ 专享
+ 专享
+
+
+ 会员标识
+ 无
+ 专享
+ 专享
+
+
+ 专属客服
+ 无
+ 专享
+ 专享
+
+
+
+
+ 会员时长叠加与生效规则
+
+
+ 等级优先级:
+
+ 同时拥有 超级会员 和 普通会员 时,优先使用超级会员权益,普通会员时长自动顺延,待 超级会员 到期后自动生效。
+
+
+
+
+ 连续套餐叠加:
+
+ 已有月 / 半年 / 年卡时再购买连续包月 / 包年,总有效期直接累加;连续套餐从下单日起算,下个周期正常自动扣费。
+
+
+
+
+
+ 示例:1 月 1 日买半年卡(7 月 1 日到期),1 月 10 日买连续包月,总有效期延至 8 月 1 日,8 月 1 日会发起首次自动扣款。
+
+
+
+
+ 升级超级会员规则:
+
+ 购买升级 超级会员 后立即生效,可升级时长以购买页面提示为准;未升级的剩余 普通会员 时长,将在 超级会员 到期后继续使用。
+
+
+
+
+
+
+
+
diff --git a/src/pages/team-battle/components/Header.vue b/src/pages/team-battle/components/Header.vue
index 35df1ba..4867093 100644
--- a/src/pages/team-battle/components/Header.vue
+++ b/src/pages/team-battle/components/Header.vue
@@ -316,7 +316,7 @@ onBeforeUnmount(() => {
width: 156rpx;
height: 28rpx;
font-weight: 400;
- font-size: 20rpx;
+ font-size: 24rpx;
color: #ffffff;
text-align: center;
line-height: 28rpx;
diff --git a/src/pages/user.vue b/src/pages/user.vue
index e2f2fcd..f0f529e 100644
--- a/src/pages/user.vue
+++ b/src/pages/user.vue
@@ -13,7 +13,7 @@ const { updateUser } = store;
const toOrderPage = () => {
uni.navigateTo({
- url: "/pages/orders",
+ url: "/pages/member/orders",
});
};
@@ -27,7 +27,7 @@ const toFristTryPage = async () => {
};
const toBeVipPage = () => {
uni.navigateTo({
- url: "/pages/be-vip",
+ url: "/pages/member/be-vip",
});
};
const toMyGrowthPage = () => {
diff --git a/src/static/common/dialog-bg.png b/src/static/common/dialog-bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..56635f6e1324c863f7f3f275ef63e18dd1fd3263
GIT binary patch
literal 21283
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