From 6ad45ed60ce3cf63c6e2dc73774ffd66d3af3a40 Mon Sep 17 00:00:00 2001 From: "fengchuanhn@gmail.com" Date: Sat, 23 May 2026 10:19:24 +0800 Subject: [PATCH] 11 --- src/api/cardKeys.js | 15 ++++ src/components/AppSidebar.vue | 5 ++ src/main.js | 7 +- src/stores/auth.js | 4 +- src/views/CardActivateView.vue | 150 +++++++++++++++++++++++++++++++++ 5 files changed, 176 insertions(+), 5 deletions(-) create mode 100644 src/api/cardKeys.js diff --git a/src/api/cardKeys.js b/src/api/cardKeys.js new file mode 100644 index 0000000..a8810b3 --- /dev/null +++ b/src/api/cardKeys.js @@ -0,0 +1,15 @@ +import { apiRequest } from "./client.js"; + +/** + * @param {string} token + * @param {string} serialNumber + */ +export function activateCardKeyApi(token, serialNumber) { + return apiRequest("/card-keys/activate", { + method: "POST", + headers: { + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify({ serial_number: serialNumber }), + }); +} diff --git a/src/components/AppSidebar.vue b/src/components/AppSidebar.vue index ff4f11a..64d1ccf 100644 --- a/src/components/AppSidebar.vue +++ b/src/components/AppSidebar.vue @@ -93,6 +93,11 @@ const activeName = computed(() => { stroke-linecap="round" /> + + + + + diff --git a/src/main.js b/src/main.js index 4446687..a5ea7d7 100644 --- a/src/main.js +++ b/src/main.js @@ -88,10 +88,9 @@ function setupHeartbeatLogoutListener() { if (!authStore.isAuthenticated) { return; } - await authStore.logout(); - if (router.currentRoute.value.name !== "login") { - await router.replace({ name: "login" }); - } + authStore.currentUser.vip_end_time="2022-06-28T16:01:13"; + await router.replace({ name: "card-activate" }); + }); } diff --git a/src/stores/auth.js b/src/stores/auth.js index c87f657..af56a43 100644 --- a/src/stores/auth.js +++ b/src/stores/auth.js @@ -32,12 +32,13 @@ function applyTokenResponse(store, res, fallbackMessage) { if (!data?.access_token || !data?.user) { return { ok: false, message: "服务器返回数据异常" }; } - + console.log(data.user); store.setSession(data.access_token, { id: data.user.id, username: data.user.username, role_id: data.user.role_id, vip_end_time: data.user.vip_end_time ?? null, + points: data.user.points ?? 0, }); return { ok: true, message: res.message || fallbackMessage }; @@ -133,6 +134,7 @@ export const useAuthStore = defineStore("auth", { username: u.username, role_id: u.role_id, vip_end_time: u.vip_end_time ?? null, + points: u.points ?? 0, }; localStorage.setItem(USER_KEY, JSON.stringify(this.currentUser)); syncAuthSessionToRust(this.token, this.currentUser); diff --git a/src/views/CardActivateView.vue b/src/views/CardActivateView.vue index e69de29..e6b4b5e 100644 --- a/src/views/CardActivateView.vue +++ b/src/views/CardActivateView.vue @@ -0,0 +1,150 @@ + + +
+
+

卡密激活

+

输入卡密序列号,兑换会员时长或点数

+
+ +
+
+
+ 会员到期 + {{ vipEndLabel }} +
+
+ 当前点数 + {{ pointsLabel }} +
+
+ + + {{ feedback.message }} + + +
+
+ + +
+
+
+ + +