diff --git a/src/assets/styles/components/_card-shell.scss b/src/assets/styles/components/_card-shell.scss
index ddf59da..dfbac5a 100644
--- a/src/assets/styles/components/_card-shell.scss
+++ b/src/assets/styles/components/_card-shell.scss
@@ -4,8 +4,8 @@
// --- 历史「表单分区标题」样式 ---
.form-header {
font-size: 15px;
- color: #6379bb;
- border-bottom: 1px solid #ddd;
+ color: var(--el-color-primary);
+ border-bottom: 1px solid var(--app-surface-border);
margin: 8px 10px 25px 10px;
padding-bottom: 5px;
}
@@ -13,8 +13,8 @@
// --- 树形容器描边(暗色覆盖在 _search-panel) ---
.tree-border {
margin-top: 8px;
- border: 1px solid rgba(148, 163, 184, 0.16);
- background: rgba(255, 255, 255, 0.42) none;
+ border: 1px solid var(--app-surface-border);
+ background: var(--app-surface-bg);
border-radius: 22px;
width: 100%;
padding: 12px;
@@ -39,7 +39,7 @@
padding: 14px 16px 10px !important;
min-height: auto;
background: transparent;
- border-bottom: 1px solid rgba(148, 163, 184, 0.14);
+ border-bottom: 1px solid var(--app-surface-border);
}
.el-card__body {
@@ -59,7 +59,7 @@
.el-card:hover {
box-shadow: var(--app-shadow-md);
- border-color: rgba(64, 158, 255, 0.16);
+ border-color: var(--app-accent-soft);
}
.card-box {
diff --git a/src/assets/styles/components/_misc.scss b/src/assets/styles/components/_misc.scss
index cfa93c4..15e3a9f 100644
--- a/src/assets/styles/components/_misc.scss
+++ b/src/assets/styles/components/_misc.scss
@@ -1,9 +1,9 @@
.link-type,
.link-type:focus {
- color: #337ab7;
+ color: var(--el-color-primary);
cursor: pointer;
&:hover {
- color: rgb(32, 160, 255);
+ color: var(--app-accent-strong);
}
}
diff --git a/src/assets/styles/components/_page-shell.scss b/src/assets/styles/components/_page-shell.scss
index 727adf2..e9b1dc3 100644
--- a/src/assets/styles/components/_page-shell.scss
+++ b/src/assets/styles/components/_page-shell.scss
@@ -144,7 +144,8 @@
.dept-tree::-webkit-scrollbar-thumb,
.selector-tree::-webkit-scrollbar-thumb {
border-radius: 999px;
- background: rgba(148, 163, 184, 0.55);
+ background: var(--app-text-muted);
+ opacity: 0.55;
}
.dept-tree::-webkit-scrollbar-track,
diff --git a/src/assets/styles/components/_search-panel.scss b/src/assets/styles/components/_search-panel.scss
index 52d9181..4537fe2 100644
--- a/src/assets/styles/components/_search-panel.scss
+++ b/src/assets/styles/components/_search-panel.scss
@@ -7,7 +7,7 @@
min-width: 28px !important;
padding: 0 !important;
border-radius: 10px !important;
- background: rgba(53, 109, 255, 0.08) !important;
+ background: var(--app-accent-soft) !important;
}
.data-table .el-button.is-link + .el-button.is-link {
@@ -77,7 +77,7 @@
:global(html.dark) {
.tree-border {
- background: rgba(15, 23, 42, 0.42);
- border-color: rgba(100, 116, 139, 0.22);
+ background: var(--app-surface-bg);
+ border-color: var(--app-surface-border);
}
}
diff --git a/src/assets/styles/mixin.scss b/src/assets/styles/mixin.scss
index 6912d14..f62e4da 100644
--- a/src/assets/styles/mixin.scss
+++ b/src/assets/styles/mixin.scss
@@ -10,7 +10,7 @@
// WebKit 滚动条配色(用于可滚动容器)
@mixin scrollBar {
&::-webkit-scrollbar-track-piece {
- background: #d3dce6;
+ background: var(--app-surface-border);
}
&::-webkit-scrollbar {
@@ -18,7 +18,7 @@
}
&::-webkit-scrollbar-thumb {
- background: #99a9bf;
+ background: var(--app-text-muted);
border-radius: 20px;
}
}
diff --git a/src/assets/styles/tokens/_theme-dark.scss b/src/assets/styles/tokens/_theme-dark.scss
index 63741a9..218582a 100644
--- a/src/assets/styles/tokens/_theme-dark.scss
+++ b/src/assets/styles/tokens/_theme-dark.scss
@@ -15,9 +15,15 @@ html.dark {
--tableHeaderBg: var(--el-bg-color);
--tableHeaderTextColor: var(--el-text-color);
- // --- 树节点:暗色下修正 primary 浅底色 ---
+ // --- 表格:暗色下选中行背景 ---
+ --el-table-current-row-bg-color: rgba(53, 109, 255, 0.14);
+ --el-table-row-hover-bg-color: rgba(148, 163, 184, 0.07);
+
+ // --- 全局:暗色下修正 primary 浅底色(表格行选中、树节点等) ---
+ --el-color-primary-light-9: rgba(53, 109, 255, 0.14);
+
.el-tree-node__content {
- --el-color-primary-light-9: #262727;
+ --el-color-primary-light-9: rgba(53, 109, 255, 0.14);
}
// --- 各类型按钮(含 plain)在暗色下的 EP CSS 变量 ---
diff --git a/src/assets/styles/vendors/element-plus/_dialog.scss b/src/assets/styles/vendors/element-plus/_dialog.scss
index c95a2e2..7fd94dc 100644
--- a/src/assets/styles/vendors/element-plus/_dialog.scss
+++ b/src/assets/styles/vendors/element-plus/_dialog.scss
@@ -26,7 +26,7 @@
.el-dialog__header {
padding: 18px 20px 14px;
box-sizing: border-box;
- border-bottom: 1px solid rgba(148, 163, 184, 0.14);
+ border-bottom: 1px solid var(--app-surface-border);
margin-right: 0;
background: var(--app-elevated-soft-bg);
}
@@ -76,7 +76,7 @@
justify-content: flex-end;
gap: 8px;
padding: 14px 20px 20px;
- border-top: 1px solid rgba(148, 163, 184, 0.14);
+ border-top: 1px solid var(--app-surface-border);
}
}
}
diff --git a/src/assets/styles/vendors/element-plus/_dropdown.scss b/src/assets/styles/vendors/element-plus/_dropdown.scss
index be61fd1..dc8eff9 100644
--- a/src/assets/styles/vendors/element-plus/_dropdown.scss
+++ b/src/assets/styles/vendors/element-plus/_dropdown.scss
@@ -37,7 +37,7 @@
right: 2px;
top: -6px;
width: auto;
- background: rgba(148, 163, 184, 0.14);
+ background: var(--app-surface-border);
}
}
diff --git a/src/assets/styles/vendors/element-plus/_feedback.scss b/src/assets/styles/vendors/element-plus/_feedback.scss
index b48a7a1..fcc76b9 100644
--- a/src/assets/styles/vendors/element-plus/_feedback.scss
+++ b/src/assets/styles/vendors/element-plus/_feedback.scss
@@ -82,7 +82,7 @@
justify-content: flex-end;
gap: 8px;
padding: 16px 20px 20px;
- border-top: 1px solid rgba(148, 163, 184, 0.14);
+ border-top: 1px solid var(--app-surface-border);
}
.el-message-box__btns .el-button {
diff --git a/src/assets/styles/vendors/element-plus/_navigation.scss b/src/assets/styles/vendors/element-plus/_navigation.scss
index d4aa6df..5074036 100644
--- a/src/assets/styles/vendors/element-plus/_navigation.scss
+++ b/src/assets/styles/vendors/element-plus/_navigation.scss
@@ -40,7 +40,7 @@
.el-pagination .el-pagination__sizes .el-input__wrapper {
min-width: 32px;
height: 32px;
- border: 1px solid rgba(148, 163, 184, 0.14);
+ border: 1px solid var(--app-surface-border);
background: var(--app-surface-bg);
}
diff --git a/src/assets/styles/vendors/element-plus/_overrides.scss b/src/assets/styles/vendors/element-plus/_overrides.scss
index 78c9915..20260b7 100644
--- a/src/assets/styles/vendors/element-plus/_overrides.scss
+++ b/src/assets/styles/vendors/element-plus/_overrides.scss
@@ -40,8 +40,40 @@
.el-table {
--el-table-border-color: var(--app-surface-border);
--el-table-header-bg-color: var(--tableHeaderBg);
- --el-table-tr-bg-color: transparent;
- background: transparent;
+ --el-table-tr-bg-color: var(--el-bg-color);
+ --el-table-bg-color: var(--el-bg-color);
+ --el-table-row-hover-bg-color: var(--el-fill-color-light);
+ --el-table-current-row-bg-color: var(--el-color-primary-light-9);
+ background: var(--el-bg-color);
+}
+
+// 暗色模式:行背景、hover、选中全部用不透明色,防止固定列透视
+html.dark .el-table {
+ --el-table-tr-bg-color: var(--app-surface-bg);
+ --el-table-bg-color: var(--app-surface-bg);
+ --el-table-row-hover-bg-color: #2a3a55;
+ --el-table-current-row-bg-color: #1e3a6e;
+ --el-color-primary-light-9: #1e3a6e;
+ background: var(--app-surface-bg);
+}
+
+// 固定列单元格基底背景与普通行保持一致(亮/暗均适用)
+.el-table .el-table__cell {
+ background-color: var(--el-table-tr-bg-color);
+}
+
+// hover 行的所有单元格(含固定列)覆写为不透明背景
+.el-table__body tr.hover-row > td.el-table__cell,
+.el-table__body tr.hover-row.current-row > td.el-table__cell,
+.el-table__body tr.hover-row.el-table__row--striped > td.el-table__cell,
+.el-table__body tr.hover-row.el-table__row--striped.current-row > td.el-table__cell,
+.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell {
+ background-color: var(--el-table-row-hover-bg-color) !important;
+}
+
+// 选中行的所有单元格(含固定列)覆写为不透明背景
+.el-table__body tr.current-row > td.el-table__cell {
+ background-color: var(--el-table-current-row-bg-color) !important;
}
// --- 输入类默认内描边(与 _form 中 focus 环配合) ---
diff --git a/src/assets/styles/vendors/element-plus/_popper.scss b/src/assets/styles/vendors/element-plus/_popper.scss
index 030718c..070bd36 100644
--- a/src/assets/styles/vendors/element-plus/_popper.scss
+++ b/src/assets/styles/vendors/element-plus/_popper.scss
@@ -98,7 +98,7 @@
.el-cascader-menu {
min-width: 180px;
- border-right-color: rgba(148, 163, 184, 0.12);
+ border-right-color: var(--app-surface-border);
}
.el-cascader-node__prefix,
@@ -184,11 +184,12 @@
.el-time-panel__content::before,
.el-time-panel__content::after {
- border-color: rgba(148, 163, 184, 0.14);
+ border-color: var(--app-surface-border);
}
.el-scrollbar__thumb {
- background: rgba(148, 163, 184, 0.42);
+ background: var(--app-text-muted);
+ opacity: 0.42;
}
.el-scrollbar__thumb:hover {
diff --git a/src/assets/styles/vendors/element-plus/_shell.scss b/src/assets/styles/vendors/element-plus/_shell.scss
index e1601c4..30799c7 100644
--- a/src/assets/styles/vendors/element-plus/_shell.scss
+++ b/src/assets/styles/vendors/element-plus/_shell.scss
@@ -9,7 +9,7 @@
.el-drawer__header {
margin-bottom: 0;
padding: 18px 20px 16px;
- border-bottom: 1px solid rgba(148, 163, 184, 0.14);
+ border-bottom: 1px solid var(--app-surface-border);
background: var(--app-elevated-soft-bg);
color: var(--app-text-title);
}
@@ -43,7 +43,7 @@
}
.el-loading-mask {
- background: rgba(248, 250, 252, 0.76);
+ background: color-mix(in srgb, var(--app-surface-bg) 82%, transparent);
backdrop-filter: blur(4px);
}
@@ -52,7 +52,7 @@
}
.el-descriptions {
- --el-descriptions-table-border: rgba(148, 163, 184, 0.14);
+ --el-descriptions-table-border: var(--app-surface-border);
}
.el-descriptions__body .el-descriptions__table {
@@ -103,8 +103,3 @@
box-shadow: var(--app-shadow-md);
}
-html.dark {
- .el-loading-mask {
- background: rgba(6, 11, 22, 0.7);
- }
-}
diff --git a/src/assets/styles/vendors/element-plus/_table.scss b/src/assets/styles/vendors/element-plus/_table.scss
index 0d5783e..9460df6 100644
--- a/src/assets/styles/vendors/element-plus/_table.scss
+++ b/src/assets/styles/vendors/element-plus/_table.scss
@@ -32,6 +32,13 @@
background-color: var(--el-bg-color);
}
+html.dark {
+ .el-table__fixed-body-wrapper,
+ .el-table__fixed-right-body-wrapper {
+ background-color: var(--app-surface-bg);
+ }
+}
+
// 去掉额外的表格边线,使用表格border
.el-table--border:after,
.el-table--border:before,
@@ -56,7 +63,7 @@
.el-table .el-dropdown-link {
cursor: pointer;
- color: #409eff;
+ color: var(--el-color-primary);
margin-left: 10px;
}
diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue
index e0aaa43..10a54c0 100644
--- a/src/components/IconSelect/index.vue
+++ b/src/components/IconSelect/index.vue
@@ -144,7 +144,7 @@ watch(
flex-direction: column;
justify-content: center;
align-items: center;
- border: 1px solid rgba(148, 163, 184, 0.16);
+ border: 1px solid var(--app-surface-border);
border-radius: 12px;
background: var(--app-surface-bg);
transition:
diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue
index e7fb292..9beada2 100644
--- a/src/components/ImagePreview/index.vue
+++ b/src/components/ImagePreview/index.vue
@@ -60,8 +60,8 @@ const realHeight = computed(() => (typeof props.height == 'string' ? props.heigh
diff --git a/src/components/TopNav/index.vue b/src/components/TopNav/index.vue
index 016f40b..fd91d7a 100644
--- a/src/components/TopNav/index.vue
+++ b/src/components/TopNav/index.vue
@@ -177,13 +177,13 @@ onMounted(() => {
diff --git a/src/layout/components/notice/index.vue b/src/layout/components/notice/index.vue
index bccf99d..c439548 100644
--- a/src/layout/components/notice/index.vue
+++ b/src/layout/components/notice/index.vue
@@ -96,7 +96,7 @@ const readAll = () => {
.head-box {
display: flex;
- border-bottom: 1px solid rgba(148, 163, 184, 0.14);
+ border-bottom: 1px solid var(--app-surface-border);
box-sizing: border-box;
color: var(--app-text-title);
justify-content: space-between;
@@ -130,7 +130,7 @@ const readAll = () => {
}
:deep(.el-tabs__nav-wrap::after) {
- background: rgba(148, 163, 184, 0.14);
+ background: var(--app-surface-border);
}
:deep(.el-tabs__item) {
diff --git a/src/views/index.vue b/src/views/index.vue
index 783bb90..1b38a55 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -131,7 +131,7 @@ const goTarget = (url: string) => {
padding: 30px;
background:
radial-gradient(circle at top left, rgba(53, 109, 255, 0.16), transparent 30%),
- linear-gradient(135deg, rgba(255, 255, 255, 0.68), rgba(255, 255, 255, 0.42));
+ var(--app-surface-bg);
}
.hero-copy {
@@ -184,8 +184,8 @@ const goTarget = (url: string) => {
.stat-card {
padding: 18px 20px;
border-radius: 22px;
- background: rgba(255, 255, 255, 0.54);
- border: 1px solid rgba(148, 163, 184, 0.14);
+ background: var(--app-elevated-soft-bg);
+ border: 1px solid var(--app-surface-border);
display: flex;
flex-direction: column;
gap: 6px;
@@ -243,8 +243,8 @@ const goTarget = (url: string) => {
.product-card {
padding: 22px;
border-radius: 24px;
- background: rgba(255, 255, 255, 0.5);
- border: 1px solid rgba(148, 163, 184, 0.14);
+ background: var(--app-elevated-soft-bg);
+ border: 1px solid var(--app-surface-border);
transition:
transform 0.25s ease,
box-shadow 0.25s ease,
@@ -308,8 +308,8 @@ const goTarget = (url: string) => {
.capability-group {
padding: 18px 18px 18px 20px;
border-radius: 22px;
- background: rgba(255, 255, 255, 0.46);
- border: 1px solid rgba(148, 163, 184, 0.14);
+ background: var(--app-elevated-soft-bg);
+ border: 1px solid var(--app-surface-border);
h3 {
margin: 0 0 12px;
@@ -368,14 +368,7 @@ const goTarget = (url: string) => {
.hero-panel {
background:
radial-gradient(circle at top left, rgba(53, 109, 255, 0.18), transparent 30%),
- linear-gradient(135deg, rgba(15, 23, 42, 0.76), rgba(15, 23, 42, 0.48));
- }
-
- .stat-card,
- .product-card,
- .capability-group {
- background: rgba(15, 23, 42, 0.5);
- border-color: rgba(100, 116, 139, 0.16);
+ var(--app-surface-bg);
}
}
diff --git a/src/views/login.vue b/src/views/login.vue
index 779bc22..b100290 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -347,7 +347,7 @@ onMounted(() => {
width: 100%;
padding: 34px 30px 26px;
z-index: 1;
- background: rgba(248, 250, 252, 0.92);
+ background: var(--app-surface-bg);
}
.title-box {
@@ -386,8 +386,8 @@ onMounted(() => {
color: var(--app-text-muted);
padding: 10px;
border-radius: 14px;
- background: rgba(255, 255, 255, 0.72);
- border: 1px solid rgba(148, 163, 184, 0.14);
+ background: var(--app-elevated-soft-bg);
+ border: 1px solid var(--app-surface-border);
}
}
@@ -425,8 +425,8 @@ onMounted(() => {
padding: 14px 16px;
margin-bottom: 22px;
border-radius: 20px;
- background: rgba(255, 255, 255, 0.58);
- border: 1px solid rgba(148, 163, 184, 0.14);
+ background: var(--app-elevated-soft-bg);
+ border: 1px solid var(--app-surface-border);
}
.social-label {
@@ -455,9 +455,9 @@ onMounted(() => {
.login-form :deep(.el-input__wrapper) {
min-height: 48px;
- background-color: rgba(255, 255, 255, 0.88);
+ background-color: var(--el-bg-color);
border-radius: 16px;
- box-shadow: 0 0 0 1px rgba(148, 163, 184, 0.12) inset;
+ box-shadow: 0 0 0 1px var(--app-surface-border) inset;
}
.login-form :deep(.el-input__wrapper.is-focus) {
@@ -471,8 +471,8 @@ onMounted(() => {
}
.login-form :deep(.el-button.is-circle) {
- background: rgba(255, 255, 255, 0.82);
- border: 1px solid rgba(148, 163, 184, 0.16);
+ background: var(--app-elevated-soft-bg);
+ border: 1px solid var(--app-surface-border);
color: var(--app-text-muted);
}
@@ -487,8 +487,8 @@ onMounted(() => {
box-sizing: border-box;
border-radius: 16px;
overflow: hidden;
- background: rgba(255, 255, 255, 0.88);
- border: 1px solid rgba(148, 163, 184, 0.14);
+ background: var(--el-bg-color);
+ border: 1px solid var(--app-surface-border);
img {
cursor: pointer;
@@ -562,19 +562,4 @@ onMounted(() => {
}
}
-:global(html.dark) {
- .login-form {
- background: rgba(12, 18, 30, 0.88);
- border-color: rgba(100, 116, 139, 0.2);
- }
-
- .login-form :deep(.el-input__wrapper),
- .login-code,
- .title-box :deep(.lang-select--style),
- .social-panel,
- .login-form :deep(.el-button.is-circle) {
- background: rgba(15, 23, 42, 0.56);
- border-color: rgba(100, 116, 139, 0.2);
- }
-}
diff --git a/src/views/register.vue b/src/views/register.vue
index c1c35ae..76f222d 100644
--- a/src/views/register.vue
+++ b/src/views/register.vue
@@ -328,7 +328,7 @@ onMounted(() => {
width: 100%;
padding: 34px 30px 26px;
z-index: 1;
- background: rgba(248, 250, 252, 0.92);
+ background: var(--app-surface-bg);
}
.title-box {
@@ -367,8 +367,8 @@ onMounted(() => {
color: var(--app-text-muted);
padding: 10px;
border-radius: 14px;
- background: rgba(255, 255, 255, 0.72);
- border: 1px solid rgba(148, 163, 184, 0.14);
+ background: var(--app-elevated-soft-bg);
+ border: 1px solid var(--app-surface-border);
}
}
@@ -408,8 +408,8 @@ onMounted(() => {
box-sizing: border-box;
border-radius: 16px;
overflow: hidden;
- background: rgba(255, 255, 255, 0.88);
- border: 1px solid rgba(148, 163, 184, 0.14);
+ background: var(--el-bg-color);
+ border: 1px solid var(--app-surface-border);
img {
cursor: pointer;
@@ -434,9 +434,9 @@ onMounted(() => {
.register-form :deep(.el-input__wrapper) {
min-height: 48px;
- background-color: rgba(255, 255, 255, 0.88);
+ background-color: var(--el-bg-color);
border-radius: 16px;
- box-shadow: 0 0 0 1px rgba(148, 163, 184, 0.12) inset;
+ box-shadow: 0 0 0 1px var(--app-surface-border) inset;
}
.register-form :deep(.el-input__wrapper.is-focus) {
@@ -503,17 +503,4 @@ onMounted(() => {
}
}
-:global(html.dark) {
- .register-form {
- background: rgba(12, 18, 30, 0.88);
- border-color: rgba(100, 116, 139, 0.2);
- }
-
- .register-form :deep(.el-input__wrapper),
- .register-code,
- .title-box :deep(.lang-select--style) {
- background: rgba(15, 23, 42, 0.56);
- border-color: rgba(100, 116, 139, 0.2);
- }
-}
diff --git a/src/views/system/user/profile/thirdParty.vue b/src/views/system/user/profile/thirdParty.vue
index 1f9fcc4..0b396d0 100644
--- a/src/views/system/user/profile/thirdParty.vue
+++ b/src/views/system/user/profile/thirdParty.vue
@@ -130,7 +130,7 @@ const authUrl = (source: string) => {
padding: 12px 10px;
border: 1px solid var(--app-surface-border);
border-radius: 12px;
- background: rgba(248, 250, 252, 0.82);
+ background: var(--app-elevated-soft-bg);
transition:
transform 0.2s ease,
border-color 0.2s ease,
diff --git a/src/views/system/user/profile/userAvatar.vue b/src/views/system/user/profile/userAvatar.vue
index 3202b6b..ac24cd3 100644
--- a/src/views/system/user/profile/userAvatar.vue
+++ b/src/views/system/user/profile/userAvatar.vue
@@ -174,7 +174,7 @@ const closeDialog = () => {
height: 120px;
object-fit: cover;
border-radius: 50%;
- border: 4px solid rgba(255, 255, 255, 0.92);
+ border: 4px solid var(--app-surface-border);
box-shadow: var(--app-shadow-sm);
}
@@ -203,7 +203,7 @@ const closeDialog = () => {
width: 200px;
height: 200px;
border-radius: 50%;
- box-shadow: 0 0 4px #ccc;
+ box-shadow: var(--app-shadow-md);
overflow: hidden;
}
diff --git a/src/views/workflow/spel/index.vue b/src/views/workflow/spel/index.vue
index 823c6c1..d64bd20 100644
--- a/src/views/workflow/spel/index.vue
+++ b/src/views/workflow/spel/index.vue
@@ -403,9 +403,9 @@ onMounted(() => {
.preview-box {
width: 100%;
padding: 10px 12px;
- background-color: #f5f7fa;
+ background-color: var(--el-fill-color-light);
border-radius: 4px;
- color: #333;
+ color: var(--el-text-color-primary);
font-family: monospace; /* 等宽字体更清晰 */
white-space: nowrap; /* 禁止换行 */
overflow-x: auto; /* 超出宽度时显示水平滚动条 */