feat(web): Login/MainLayout 从主题配置读取品牌信息
- Login.tsx 从 /api/v1/public/brand 读取品牌名称/标语/特性/版权 - MainLayout 侧边栏 Logo 和 Footer 从 themeConfig 读取 - 启动时调用 loadThemeConfig 缓存主题配置 - 移除所有硬编码品牌文字(HMR Platform → 动态读取)
This commit is contained in:
@@ -95,6 +95,7 @@ const routeTitleFallback: Record<string, string> = {
|
||||
'/health/alert-dashboard': '告警仪表盘',
|
||||
'/health/alert-rules': '告警规则',
|
||||
'/health/devices': '设备管理',
|
||||
'/health/dialysis': '透析管理',
|
||||
};
|
||||
|
||||
function getTitleFromMenus(path: string, menus: MenuInfo[]): string | undefined {
|
||||
@@ -347,6 +348,8 @@ const DynamicMenuSection = memo(function DynamicMenuSection({
|
||||
|
||||
export default function MainLayout({ children }: { children: React.ReactNode }) {
|
||||
const { sidebarCollapsed, toggleSidebar } = useAppStore();
|
||||
const themeConfig = useAppStore((s) => s.themeConfig);
|
||||
const loadThemeConfig = useAppStore((s) => s.loadThemeConfig);
|
||||
const { user, logout } = useAuthStore();
|
||||
const pluginMenuItems = usePluginStore((s) => s.pluginMenuItems);
|
||||
const pluginMenuGroups = usePluginStore((s) => s.pluginMenuGroups);
|
||||
@@ -379,6 +382,11 @@ export default function MainLayout({ children }: { children: React.ReactNode })
|
||||
fetchPlugins(1, 'running');
|
||||
}, [fetchPlugins]);
|
||||
|
||||
// 加载主题配置
|
||||
useEffect(() => {
|
||||
loadThemeConfig();
|
||||
}, [loadThemeConfig]);
|
||||
|
||||
const handleLogout = useCallback(async () => {
|
||||
await logout();
|
||||
navigate('/login');
|
||||
@@ -430,7 +438,7 @@ export default function MainLayout({ children }: { children: React.ReactNode })
|
||||
<div className="erp-sidebar-logo" onClick={() => navigate('/')}>
|
||||
<div className="erp-sidebar-logo-icon">H</div>
|
||||
{!sidebarCollapsed && (
|
||||
<span className="erp-sidebar-logo-text">HMS 健康</span>
|
||||
<span className="erp-sidebar-logo-text">{themeConfig?.brand_name || 'HMS 健康'}</span>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -523,7 +531,7 @@ export default function MainLayout({ children }: { children: React.ReactNode })
|
||||
|
||||
{/* 底部 */}
|
||||
<Footer className="erp-footer">
|
||||
HMS 健康管理平台
|
||||
{themeConfig?.brand_copyright || 'HMS 健康管理平台'}
|
||||
</Footer>
|
||||
</Layout>
|
||||
</Layout>
|
||||
|
||||
Reference in New Issue
Block a user