fix: 优化业务表格展示与登录会话体验

This commit is contained in:
Cheng Zhou
2026-03-31 14:37:06 +08:00
parent ceda34fd1d
commit a7bbcaa5dc
30 changed files with 461 additions and 275 deletions
+28
View File
@@ -0,0 +1,28 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
import { createPinia, setActivePinia } from "pinia";
describe("session store", () => {
beforeEach(() => {
vi.useFakeTimers();
vi.setSystemTime(new Date("2026-03-31T12:00:00.000Z"));
setActivePinia(createPinia());
});
it("resets activity timestamps when unlocking a previously stale session", async () => {
const { useSessionStore } = await import("./session");
const session = useSessionStore();
const staleTs = Date.now() - 2 * 60 * 60 * 1000 - 1_000;
session.recordUserActivity(staleTs);
session.recordNetworkActivity(staleTs);
session.setLastExtendAt(staleTs);
session.lock("token_invalid", "user@example.com", staleTs + 10_000);
session.unlock();
expect(session.locked).toBe(false);
expect(session.lastUserActiveAt).toBe(Date.now());
expect(session.lastNetworkActiveAt).toBe(Date.now());
expect(session.lastExtendAt).toBe(0);
});
});
+4
View File
@@ -29,11 +29,15 @@ export const useSessionStore = defineStore("session", () => {
};
const unlock = () => {
const now = Date.now();
locked.value = false;
lockReason.value = null;
lockEmail.value = "";
lockAutoLogoutDeadlineAt.value = 0;
unlockAttempts.value = 0;
lastUserActiveAt.value = now;
lastNetworkActiveAt.value = now;
lastExtendAt.value = 0;
};
const incrementUnlockAttempt = () => {