style: 全局 UI 主题皮肤重构与样式模块化

引入 Element Plus 主题定制和主题皮肤 composable,将全局
样式拆分为组件级独立 CSS 文件(侧边栏、顶栏、工作台等),
统一色彩变量和间距规范,重构所有视图和组件样式以适配新
主题系统,优化图表和知识图谱组件视觉表现,提取审计和差
旅报销相关子组件。
This commit is contained in:
caoxiaozhu
2026-05-27 09:17:57 +08:00
parent df49103f23
commit 2dcc72102d
112 changed files with 10983 additions and 8996 deletions

View File

@@ -9,8 +9,8 @@
padding: 48px clamp(40px, 5vw, 86px);
overflow: hidden;
background:
linear-gradient(120deg, rgba(236,253,245,.72), transparent 34%),
linear-gradient(105deg, #f8fafc 0%, #f4fbf8 44%, #f8fafc 100%);
linear-gradient(120deg, rgba(var(--theme-primary-rgb, 58, 124, 165), .10), transparent 34%),
linear-gradient(105deg, #f8fafc 0%, #f5faff 44%, #f8fafc 100%);
}
.login-page::before {
@@ -21,8 +21,8 @@
background:
linear-gradient(90deg, rgba(15,23,42,.045) 1px, transparent 1px),
linear-gradient(0deg, rgba(15,23,42,.04) 1px, transparent 1px),
radial-gradient(circle at 28% 72%, rgba(16,185,129,.12), transparent 28%),
radial-gradient(circle at 75% 22%, rgba(245,158,11,.08), transparent 30%);
radial-gradient(circle at 28% 72%, rgba(var(--theme-primary-rgb, 58, 124, 165), .10), transparent 28%),
radial-gradient(circle at 75% 22%, rgba(37,99,235,.06), transparent 30%);
background-size: 72px 72px, 72px 72px, auto, auto;
mask-image: linear-gradient(100deg, rgba(0,0,0,.7), rgba(0,0,0,.32) 48%, rgba(0,0,0,.16));
pointer-events: none;
@@ -37,11 +37,11 @@
width: min(820px, 58vw);
height: min(560px, 64vh);
border: 1px solid rgba(148,163,184,.22);
border-radius: 18px;
border-radius: 8px;
background:
linear-gradient(90deg, transparent 0 28%, rgba(15,23,42,.055) 28% calc(28% + 1px), transparent calc(28% + 1px)),
repeating-linear-gradient(0deg, transparent 0 35px, rgba(15,23,42,.05) 36px),
linear-gradient(135deg, rgba(255,255,255,.74), rgba(236,253,245,.32));
linear-gradient(135deg, rgba(255,255,255,.74), rgba(var(--theme-primary-rgb, 58, 124, 165), .10));
box-shadow: 0 34px 80px rgba(15,23,42,.08);
transform: rotate(-7deg);
pointer-events: none;
@@ -65,7 +65,7 @@
height: 34px;
display: inline-grid;
place-items: center;
color: #059669;
color: var(--theme-primary-active);
}
:deep(.logo-mark svg) {
@@ -86,7 +86,7 @@
}
.eyebrow-text {
color: #059669;
color: var(--theme-primary-active);
font-size: 14px;
font-weight: 900;
letter-spacing: .08em;
@@ -131,7 +131,7 @@
width: 230px;
height: 62px;
border-radius: 50%;
background: linear-gradient(90deg, rgba(16,185,129,.16), rgba(245,158,11,.12));
background: linear-gradient(90deg, rgba(var(--theme-primary-rgb, 58, 124, 165), .14), rgba(37,99,235,.08));
filter: blur(4px);
}
@@ -139,10 +139,10 @@
position: absolute;
z-index: 0;
display: block;
border: 1px solid rgba(16,185,129,.18);
border: 1px solid rgba(var(--theme-primary-rgb, 58, 124, 165), .22);
border-left: 0;
border-bottom: 0;
border-radius: 0 22px 0 0;
border-radius: 0 8px 0 0;
}
.flow-line::after {
@@ -153,8 +153,8 @@
width: 8px;
height: 8px;
border-radius: 999px;
background: #10b981;
box-shadow: 0 0 0 5px rgba(16,185,129,.12);
background: var(--theme-primary);
box-shadow: 0 0 0 5px rgba(var(--theme-primary-rgb, 58, 124, 165), .12);
}
.flow-a {
@@ -197,7 +197,7 @@
display: grid;
gap: 7px;
padding: 17px 18px;
border-radius: 14px;
border-radius: 8px;
}
.metric-card span {
@@ -219,7 +219,7 @@
font-weight: 700;
}
.up { color: #059669; }
.up { color: var(--success); }
.danger { color: #ef4444; }
.amount { left: 20px; top: 20px; }
@@ -252,7 +252,7 @@
width: 220px;
height: 214px;
padding: 28px 28px;
border-radius: 16px;
border-radius: 8px;
transform: rotate(2deg);
}
@@ -281,10 +281,10 @@
display: grid;
place-items: center;
border-radius: 999px;
background: linear-gradient(135deg, #6ee7b7, #059669);
background: linear-gradient(135deg, var(--theme-primary), var(--theme-primary-active));
color: #fff;
font-size: 27px;
box-shadow: 0 14px 28px rgba(5,150,105,.25);
box-shadow: 0 14px 28px rgba(var(--theme-primary-rgb, 58, 124, 165), .22);
}
.shield-art {
@@ -337,7 +337,7 @@
gap: 12px;
padding: 12px 14px;
border: 1px solid rgba(215, 224, 234, .82);
border-radius: 13px;
border-radius: 6px;
background: rgba(255,255,255,.76);
box-shadow: 0 12px 30px rgba(65, 88, 110, .08);
backdrop-filter: blur(16px);
@@ -352,7 +352,7 @@
font-size: 21px;
}
.feature-strip .green { background: #dff7ee; color: #059669; }
.feature-strip .primary { background: var(--theme-primary-soft); color: var(--theme-primary-active); }
.feature-strip .red { background: #fee2e2; color: #ef4444; }
.feature-strip .blue { background: #dbeafe; color: #3b82f6; }
@@ -379,7 +379,7 @@
display: grid;
padding: 58px 60px 44px;
border: 1px solid rgba(215, 224, 234, .96);
border-radius: 20px;
border-radius: 8px;
background: rgba(255,255,255,.86);
box-shadow: 0 24px 64px rgba(65, 88, 110, .16);
backdrop-filter: blur(18px);
@@ -450,9 +450,9 @@
}
.field input:focus {
border-color: #10b981;
border-color: var(--theme-primary);
background: #fff;
box-shadow: 0 0 0 3px rgba(16,185,129,.13);
box-shadow: 0 0 0 3px var(--theme-focus-ring, rgba(58, 124, 165, .14));
outline: none;
}
@@ -471,7 +471,7 @@
.field-icon-btn:hover {
background: #f1f5f9;
color: #059669;
color: var(--theme-primary-active);
}
.form-meta {
@@ -503,7 +503,7 @@
.remember input {
width: 16px;
height: 16px;
accent-color: #059669;
accent-color: var(--theme-primary);
}
.link-btn {
@@ -529,13 +529,13 @@
.submit-btn {
margin-top: 4px;
border: 0;
background: linear-gradient(135deg, #10b981, #059669);
background: linear-gradient(135deg, var(--theme-primary), var(--theme-primary-active));
color: #fff;
box-shadow: 0 16px 30px rgba(5,150,105,.20);
box-shadow: 0 16px 30px rgba(var(--theme-primary-rgb, 58, 124, 165), .20);
}
.submit-btn:hover {
background: linear-gradient(135deg, #13c990, #047857);
background: linear-gradient(135deg, var(--theme-primary-hover), var(--theme-primary-active));
}
.submit-btn:disabled,
@@ -571,13 +571,13 @@
}
.sso-btn {
border: 1px solid #10b981;
border: 1px solid var(--theme-primary);
background: rgba(255,255,255,.78);
color: #059669;
color: var(--theme-primary-active);
}
.sso-btn:hover {
background: #ecfdf5;
background: var(--theme-primary-soft);
}
.security-note {
@@ -689,7 +689,7 @@
.login-card {
padding: 32px 22px 24px;
border-radius: 14px;
border-radius: 8px;
}
.card-head h2 {