From 9e8c6581597f100b0287b6186649e831d3ec14a7 Mon Sep 17 00:00:00 2001 From: abearxiong Date: Thu, 26 Feb 2026 01:49:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E5=AF=BC=E8=88=AA?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E7=9A=84=E7=82=B9=E5=87=BB=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=92=8C=E7=B1=BB=E5=9E=8B=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/auth/modules/BaseHeader.tsx | 27 ++++++++++++++++++--------- src/pages/auth/store.ts | 24 ++++++++++-------------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/pages/auth/modules/BaseHeader.tsx b/src/pages/auth/modules/BaseHeader.tsx index d93cee2..52fd8d2 100644 --- a/src/pages/auth/modules/BaseHeader.tsx +++ b/src/pages/auth/modules/BaseHeader.tsx @@ -51,18 +51,27 @@ export const BaseHeader = (props: { main?: React.ComponentType | null }) => { return ( <>
-
+
{ store.links.map(link => ( - { + if (!link.href) return; + if (link.href.startsWith('http') || link.isRoot) { + window.open(link.href, '_blank'); + return; + } + navigate({ + to: link.href + }) + }} > - {link.key === 'home' && } - {link.icon && {link.icon}} - {link.title} - + {link.key === 'home' && } + {link.icon && <>{link.icon}} + {!link.icon && link.title} +
+ )) }
diff --git a/src/pages/auth/store.ts b/src/pages/auth/store.ts index 765f81e..0f44253 100644 --- a/src/pages/auth/store.ts +++ b/src/pages/auth/store.ts @@ -34,13 +34,15 @@ export type LayoutStore = { }; setLoginPageConfig: (config: Partial) => void; links: HeaderLink[]; + setLinks: (links: HeaderLink[]) => void; }; type HeaderLink = { - title: string; + title?: string; href: string; description?: string; icon?: React.ReactNode; key?: string; + isRoot?: boolean; }; export const useLayoutStore = create((set, get) => ({ @@ -78,19 +80,12 @@ export const useLayoutStore = create((set, get) => ({ const token = await queryLogin.getToken(); if (token) { set({ me: {} }) - let me: UserInfo | undefined = undefined; - - const _user = await queryLogin.checkLocalUser() as UserInfo; - if (_user) { - me = _user; - } - if (!me) { - const res = await queryLogin.getMe(); - me = res.code === 200 ? res.data : undefined; - } - if (me) { - set({ me: me }); - set({ isAdmin: me.orgs?.includes?.('admin') || false }); + const me = await queryLogin.getMe(); + // const user = await queryLogin.checkLocalUser() as UserInfo; + const user = me.code === 200 ? me.data : undefined; + if (user) { + set({ me: user }); + set({ isAdmin: user.orgs?.includes?.('admin') || false }); } else { set({ me: undefined, isAdmin: false }); } @@ -107,4 +102,5 @@ export const useLayoutStore = create((set, get) => ({ loginPageConfig: { ...state.loginPageConfig, ...config }, })), links: [{ title: '', href: '/', key: 'home' }], + setLinks: (links) => set({ links }), }));