diff --git a/frontend/src/components/layout/PortalLayout.tsx b/frontend/src/components/layout/PortalLayout.tsx index 67087c9..f69a59a 100644 --- a/frontend/src/components/layout/PortalLayout.tsx +++ b/frontend/src/components/layout/PortalLayout.tsx @@ -4,7 +4,9 @@ */ import { Link, useLocation, useNavigate } from 'react-router-dom' +import { useQuery } from '@tanstack/react-query' import { DollarSign, FileText, ScrollText, LogOut, CalendarCheck, Home } from 'lucide-react' +import { portalApi } from '../../lib/api-services' const tabItems = [ { path: '/portal/home', label: '首页', icon: Home }, @@ -22,6 +24,19 @@ export default function PortalLayout({ children }: { children: React.ReactNode } try { return JSON.parse(localStorage.getItem('portalEmployee') || '{}') } catch { return {} } })() + // 获取 overview 数据作为 idCardNumber fallback(旧登录 localStorage 可能没有 idCardNumber) + const { data: overview } = useQuery({ + queryKey: ['portal-home-overview'], + queryFn: async () => portalApi.homeOverview(), + staleTime: 300000, + }) + const idCardNumber = employee.idCardNumber || overview?.employeeIdCardNumber + if (idCardNumber && !employee.idCardNumber) { + try { + localStorage.setItem('portalEmployee', JSON.stringify({ ...employee, idCardNumber })) + } catch {} + } + const handleLogout = () => { localStorage.removeItem('portalToken') localStorage.removeItem('portalEmployee') @@ -38,7 +53,7 @@ export default function PortalLayout({ children }: { children: React.ReactNode }
{employee.name && ( - {employee.name}{employee.idCardNumber ? `(${employee.idCardNumber})` : ''} + {employee.name}{idCardNumber ? `(${idCardNumber})` : ''} )}