style: 全局 UI 主题皮肤重构与样式模块化
引入 Element Plus 主题定制和主题皮肤 composable,将全局 样式拆分为组件级独立 CSS 文件(侧边栏、顶栏、工作台等), 统一色彩变量和间距规范,重构所有视图和组件样式以适配新 主题系统,优化图表和知识图谱组件视觉表现,提取审计和差 旅报销相关子组件。
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user