feat(web): 登录页主题适配 + 工作台角色化重构
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled

- 登录页接入 4 套主题系统(渐变色/面板背景/文字色),添加 ThemeSwitcher
- 工作台按角色(医生/护士/管理员/运营)显示专属统计卡片和快捷入口
- 移除系统信息填充卡片,硬编码颜色替换为 CSS 变量
This commit is contained in:
iven
2026-04-29 07:27:04 +08:00
parent 202c6dd0d2
commit 9015a2b85e
3 changed files with 388 additions and 398 deletions

View File

@@ -265,6 +265,166 @@
--erp-font-heading: 'Noto Sans SC', -apple-system, system-ui, sans-serif;
}
/* --- Login Page Tokens --- */
:root {
--login-gradient-start: #312E81;
--login-gradient-mid: #2563eb;
--login-gradient-end: #60a5fa;
--login-form-bg: #ffffff;
--login-form-text: #0f172a;
--login-form-text-secondary: #475569;
--login-input-icon-color: #94a3b8;
}
[data-theme='warm'] {
--login-gradient-start: #6B3418;
--login-gradient-mid: #C4623A;
--login-gradient-end: #D4956A;
--login-form-bg: #FAF5F0;
--login-form-text: #2D2A26;
--login-form-text-secondary: #7A756E;
--login-input-icon-color: #A8A29E;
}
[data-theme='dark'] {
--login-gradient-start: #0F172A;
--login-gradient-mid: #1E293B;
--login-gradient-end: #334155;
--login-form-bg: #1E293B;
--login-form-text: rgba(255,255,255,0.95);
--login-form-text-secondary: #94A3B8;
--login-input-icon-color: #64748B;
}
[data-theme='emerald'] {
--login-gradient-start: #2D4A2F;
--login-gradient-mid: #5B7A5E;
--login-gradient-end: #8FB092;
--login-form-bg: #F4F7F4;
--login-form-text: #1A2E1A;
--login-form-text-secondary: #5A6E5A;
--login-input-icon-color: #8FA08F;
}
/* --- Login Page Styles --- */
.login-root {
display: flex;
min-height: 100vh;
}
.login-brand-panel {
flex: 1;
background: linear-gradient(135deg, var(--login-gradient-start) 0%, var(--login-gradient-mid) 50%, var(--login-gradient-end) 100%);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 60px;
position: relative;
overflow: hidden;
}
.login-brand-panel .deco-circle {
position: absolute;
border-radius: 50%;
background: rgba(255, 255, 255, 0.05);
}
.login-brand-panel .brand-icon {
width: 64px;
height: 64px;
border-radius: 16px;
background: rgba(255, 255, 255, 0.15);
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 32px;
backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.2);
}
.login-brand-panel .brand-icon .anticon {
font-size: 32px;
color: #fff;
}
.login-brand-panel .brand-title {
color: #fff;
font-size: 36px;
font-weight: 800;
margin: 0 0 16px;
letter-spacing: -1px;
line-height: 1.2;
}
.login-brand-panel .brand-desc {
color: rgba(255, 255, 255, 0.7);
font-size: 16px;
line-height: 1.6;
margin: 0;
}
.login-brand-panel .brand-sub-desc {
color: rgba(255, 255, 255, 0.5);
font-size: 14px;
line-height: 1.6;
margin-top: 8px;
}
.login-brand-panel .feature-item-value {
color: rgba(255, 255, 255, 0.9);
font-size: 18px;
font-weight: 700;
}
.login-brand-panel .feature-item-label {
color: rgba(255, 255, 255, 0.5);
font-size: 12px;
margin-top: 4px;
}
.login-form-panel {
width: 480px;
display: flex;
flex-direction: column;
justify-content: center;
padding: 60px;
background: var(--login-form-bg);
position: relative;
transition: background var(--erp-transition-slow);
}
.login-form-panel .form-title {
margin-bottom: 4px;
font-weight: 700;
font-size: 24px;
color: var(--login-form-text);
}
.login-form-panel .form-subtitle {
font-size: 14px;
color: var(--login-form-text-secondary);
}
.login-form-panel .form-footer {
margin-top: 32px;
text-align: center;
font-size: 12px;
color: var(--login-form-text-secondary);
}
.login-theme-switcher {
position: absolute;
top: 20px;
right: 20px;
z-index: 10;
}
.login-theme-switcher .erp-header-btn {
background: var(--login-form-bg);
border: 1px solid var(--erp-border);
color: var(--login-form-text-secondary);
}
/* --- Global Reset & Base --- */
body {