From fb9eb3947bb9da4264834dd4051960158e72073e Mon Sep 17 00:00:00 2001 From: RuoYi Date: Sun, 16 Aug 2026 17:20:13 +0800 Subject: [PATCH] update README.md --- README.md | 2 +- src/assets/styles/variables.module.scss | 896 +++++++------- src/layout/components/Settings/index.vue | 686 +++++------ src/layout/components/TagsView/index.vue | 1422 +++++++++++----------- src/settings.js | 134 +- 5 files changed, 1570 insertions(+), 1570 deletions(-) diff --git a/README.md b/README.md index a244abb..716c80d 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ RuoYi-Vue 前端项目的三个主要演进版本,方便你直观对比其技 | **状态管理** | Vuex | Pinia | Pinia | | **路由管理** | Vue Router 3 | Vue Router 4 | Vue Router 4 | | **核心特点** | 1. 技术栈经典稳定
2. 社区资料丰富
3. 当前维护重心已转移 | 1. 现代前端技术栈
2. 开发体验与性能更优
3. 官方主推的活跃版本 | 1. 类型加持,减少沟通成本
2. 开发时有提示,效率更高
3. 多人协作企业级开发项目 | -| **仓库地址** | [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) | [RuoYi-Vue3](https://gitcode.com/yangzongzhuan/RuoYi-Vue3) | [RuoYi-Vue3-TypeScript](https://gitcode.com/yangzongzhuan/RuoYi-Vue3/tree/typescript) | +| **仓库地址** | [RuoYi-Vue2](https://gitcode.com/yangzongzhuan/RuoYi-Vue2) | [RuoYi-Vue3](https://gitcode.com/yangzongzhuan/RuoYi-Vue3) | [RuoYi-Vue3-TypeScript](https://gitcode.com/yangzongzhuan/RuoYi-Vue3/tree/typescript) | ## 前端运行 diff --git a/src/assets/styles/variables.module.scss b/src/assets/styles/variables.module.scss index 90d67f5..2f7a611 100644 --- a/src/assets/styles/variables.module.scss +++ b/src/assets/styles/variables.module.scss @@ -1,448 +1,448 @@ -// base color -$blue: #324157; -$light-blue: #333c46; -$red: #C03639; -$pink: #E65D6E; -$green: #30B08F; -$tiffany: #4AB7BD; -$yellow: #FEC171; -$panGreen: #30B08F; - -// 默认主题变量 -$menuText: #bfcbd9; -$menuActiveText: #409eff; -$menuBg: #1a1f2e; -$menuHover: #263445; - -// 浅色主题theme-light -$menuLightBg: #ffffff; -$menuLightHover: #f0f1f5; -$menuLightText: #303133; -$menuLightActiveText: #409EFF; - -// 基础变量 -$base-sidebar-width: 200px; -$sideBarWidth: 200px; - -// 菜单暗色变量 -$base-menu-color: rgba(255,255,255,.65); -$base-menu-color-active: #ffffff; -$base-menu-background: #1a1f2e; -$base-sub-menu-background: #141824; -$base-sub-menu-hover: rgba(255,255,255,.06); - -// 组件变量 -$--color-primary: #409EFF; -$--color-success: #67C23A; -$--color-warning: #E6A23C; -$--color-danger: #F56C6C; -$--color-info: #909399; - -:export { - menuText: $menuText; - menuActiveText: $menuActiveText; - menuBg: $menuBg; - menuHover: $menuHover; - menuLightBg: $menuLightBg; - menuLightHover: $menuLightHover; - menuLightText: $menuLightText; - menuLightActiveText: $menuLightActiveText; - sideBarWidth: $sideBarWidth; - // 导出基础颜色 - blue: $blue; - lightBlue: $light-blue; - red: $red; - pink: $pink; - green: $green; - tiffany: $tiffany; - yellow: $yellow; - panGreen: $panGreen; - // 导出组件颜色 - colorPrimary: $--color-primary; - colorSuccess: $--color-success; - colorWarning: $--color-warning; - colorDanger: $--color-danger; - colorInfo: $--color-info; -} - -// CSS变量定义 -:root { - /* 亮色模式变量 */ - --sidebar-bg: #{$menuBg}; - --sidebar-text: #{$menuText}; - --menu-hover: #{$menuHover}; - - --navbar-bg: #ffffff; - --navbar-text: #303133; - - /* splitpanes default-theme 变量 */ - --splitpanes-default-bg: #ffffff; - -} - -// 暗黑模式变量 -html.dark { - /* 默认通用 */ - --el-bg-color: #141414; - --el-bg-color-overlay: #1d1e1f; - --el-text-color-primary: #ffffff; - --el-text-color-regular: #d0d0d0; - --el-border-color: #434343; - --el-border-color-light: #434343; - --el-menu-text-color: #d0d0d0; - --sidebar-logo-text: #d0d0d0; - - /* primary */ - --primary-bg: #18212b; - - /* 侧边栏 */ - --sidebar-bg: #141414; - --sidebar-text: #ffffff; - --menu-hover: #2d2d2d; - --menu-active-text: #{$menuActiveText}; - - /* 顶部导航栏 */ - --navbar-bg: #141414; - --navbar-text: #ffffff; - --navbar-hover: #141414; - - /* 标签栏 */ - --tags-bg: #141414; - --tags-item-bg: #1d1e1f; - --tags-item-border: #303030; - --tags-item-text: #d0d0d0; - --tags-item-hover: #2d2d2d; - --tags-close-hover: #64666a; - /* 卡片模式激活页签 */ - --tags-card-active-bg: var(--el-bg-color-overlay); - --tags-card-active-bg: color-mix(in srgb, var(--el-color-primary) 22%, var(--el-bg-color-overlay) 78%); - --tags-card-active-border: var(--tags-card-active-bg); - - /* splitpanes 组件暗黑模式变量 */ - --splitpanes-bg: #141414; - --splitpanes-border: #303030; - --splitpanes-splitter-bg: #1d1e1f; - --splitpanes-splitter-hover-bg: #2d2d2d; - - /* blockquote 暗黑模式变量 */ - --blockquote-bg: #1d1e1f; - --blockquote-border: #303030; - --blockquote-text: #d0d0d0; - - /* Cron 时间表达式 模式变量 */ - --cron-border: #303030; - - /* splitpanes default-theme 暗黑模式变量 */ - --splitpanes-default-bg: #141414; - - /* 侧边栏菜单覆盖 */ - .sidebar-container { - .el-menu-item:not(.is-active), .menu-title { - color: var(--el-text-color-regular); - } - & .el-menu .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title, - & .el-menu .theme-dark .el-sub-menu .el-menu-item, - & .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title, - & .theme-dark .el-sub-menu .el-menu-item { - background-color: var(--el-bg-color) !important; - - &:hover { - background-color: var(--menu-hover) !important; - } - } - &.theme-light { - border-right: none !important; - .el-menu-item, - .el-sub-menu__title { - color: var(--sidebar-text) !important; - } - .el-menu-item:not(.is-active):hover, - .submenu-title-noDropdown:hover, - .el-sub-menu__title:hover { - background-color: var(--menu-hover) !important; - } - .el-menu .nest-menu .el-sub-menu>.el-sub-menu__title, - .el-menu .el-sub-menu .el-menu-item, - .nest-menu .el-sub-menu>.el-sub-menu__title, - .el-sub-menu .el-menu-item { - background-color: var(--el-bg-color) !important; - &:hover { - background-color: var(--menu-hover) !important; - } - } - } - } - - .topmenu-container { - .el-menu-item, - .el-sub-menu .el-sub-menu__title { - color: var(--el-text-color-regular) !important; - } - } - - .topbar-menu.el-menu--horizontal > .el-sub-menu .el-sub-menu__title{ - color: var(--el-text-color-regular) !important; - } - - /* 顶部栏栏菜单覆盖 */ - .el-menu--horizontal { - .el-menu-item, .el-sub-menu { - &:not(.is-disabled) { - &:hover, - &:focus { - background-color: var(--navbar-hover) !important; - .el-sub-menu__title { - background-color: var(--navbar-hover) !important; - } - } - } - } - } - - /* 页签样式覆盖 */ - .navbar { - box-shadow: 0 1px 4px rgba(255, 255, 255, 0.08); - } - .tags-view-container { - &.tags-view-container--chrome { - --chrome-strip-bg: var(--el-bg-color); - --chrome-strip-border: var(--el-border-color); - --chrome-tab-active-bg: var(--el-bg-color-overlay); - --chrome-tab-active-bg: color-mix(in srgb, var(--el-color-primary) 22%, var(--el-bg-color-overlay) 78%); - --chrome-tab-text: var(--el-text-color-secondary); - --chrome-tab-text-active: var(--el-color-primary); - .tags-view-wrapper .tags-view-item:not(.active) + .tags-view-item:not(.active) { - border-left-color: var(--el-border-color); - } - .tags-view-wrapper .tags-view-item { - &:hover:not(.active) { - background: var(--el-fill-color, #303030) !important; - color: var(--el-text-color-primary); - } - &.active { - box-shadow: 0 1px 6px rgba(0, 0, 0, 0.45); - } - } - } - &:not(.tags-view-container--chrome) .tags-view-wrapper .tags-view-item.active { - background-color: var(--tags-card-active-bg) !important; - border-color: var(--tags-card-active-border) !important; - color: var(--current-color, #409eff) !important; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35); - - &::before { - background: var(--current-color, #409eff) !important; - } - } - } - - /* 分割窗格覆盖 */ - .tree-sidebar-manage-wrap { - .tree-sidebar-content { - background: var(--splitpanes-bg); - } - .tree-sidebar { - border-right: 1px solid var(--splitpanes-splitter-bg); - background: var(--splitpanes-bg); - .tree-header { - background: var(--splitpanes-bg); - border-color: var(--splitpanes-border); - } - .tree-title { - color: var(--el-color-primary-light-2); - } - .collapse-button-container { - background: var(--splitpanes-bg) !important; - } - .collapse-button { - &:hover { - color: var(--el-color-primary-light-2); - background: var(--splitpanes-bg); - } - } - .resize-handle { - &:hover { - background: var(--splitpanes-splitter-hover-bg); - } - &.active { - background: var(--splitpanes-splitter-hover-bg); - } - } - } - } - - /* 按钮样式覆盖 */ - .el-button--primary.is-plain { - background-color: var(--primary-bg); - border: 1px solid var(--el-color-primary-light-2); - color: var(--el-color-primary-light-2); - - &:hover { - background-color: var(--el-button-hover-bg-color); - border-color: var(--el-button-hover-border-color); - color: var(--el-button-hover-text-color); - } - - &.is-disabled { - background-color: var(--link-active-bg-color); - border-color: var(--el-color-primary-light-3); - color: var(--el-color-primary-light-3); - opacity: 0.5; - } - } - - /* primary tag 样式覆盖 */ - .el-tag--primary { - background-color: var(--primary-bg); - border: 1px solid var(--el-border-color-light); - color: var(--el-color-primary); - } - - /* 表格样式覆盖 */ - .el-table { - --el-table-header-bg-color: var(--el-bg-color-overlay) !important; - --el-table-header-text-color: var(--el-text-color-regular) !important; - --el-table-border-color: var(--el-border-color-light) !important; - --el-table-row-hover-bg-color: var(--el-bg-color-overlay) !important; - - .el-table__header-wrapper, .el-table__fixed-header-wrapper { - th { - background-color: var(--el-bg-color-overlay, #f8f8f9) !important; - color: var(--el-text-color-regular, #515a6e); - } - } - } - - /* 树组件高亮样式覆盖 */ - .el-tree { - .el-tree-node.is-current > .el-tree-node__content { - background-color: var(--el-bg-color-overlay) !important; - color: var(--el-color-primary); - } - - .el-tree-node__content:hover { - background-color: var(--el-bg-color-overlay); - } - } - - /* 下拉菜单样式覆盖 */ - .el-dropdown-menu__item:not(.is-disabled):focus, .el-dropdown-menu__item:not(.is-disabled):hover{ - background-color: var(--navbar-hover) !important; - } - - /* blockquote样式覆盖 */ - blockquote { - background-color: var(--blockquote-bg) !important; - border-left-color: var(--blockquote-border) !important; - color: var(--blockquote-text) !important; - } - - /* 时间表达式标题样式覆盖 */ - .popup-result .title { - background: var(--cron-border); - } - - /* 底部版权样式覆盖 */ - .copyright { - background-color: var(--el-bg-color) !important; - color: var(--el-text-color-regular) !important; - border-top: 1px solid var(--el-bg-color) !important; - } - - /* 详情抽屉暗黑模式覆盖 */ - .detail-drawer { - .el-drawer__header { - color: var(--el-text-color-primary); - background: var(--el-bg-color-overlay); - border-bottom: 1px solid var(--el-border-color); - } - .section-header { - color: var(--el-color-primary-light-3); - border-bottom-color: var(--el-border-color); - } - .drawer-content { - .info-label { - color: var(--el-text-color-secondary); - } - .info-value { - color: var(--el-text-color-primary); - &.plaintext { - border-bottom-color: var(--el-border-color); - } - } - } - } - - /* 详情卡片暗黑模式覆盖 */ - .detail-card { - border-color: var(--el-border-color); - } - .detail-card-title { - background: var(--el-bg-color-overlay); - color: var(--el-text-color-primary); - border-bottom-color: var(--el-border-color); - } - .detail-item { - border-bottom-color: var(--el-border-color-lighter, #2a2a2a); - } - .detail-label { - color: var(--el-text-color-secondary); - } - .detail-value { - color: var(--el-text-color-primary); - } - .code-wrap { - background: var(--el-bg-color-overlay); - border-color: var(--el-border-color); - } - .code-pre { - color: var(--el-text-color-regular); - } - .code-action .el-button { - background: rgba(30, 30, 30, 0.9); - border-color: var(--el-border-color); - color: var(--el-text-color-regular); - &:hover { - background: var(--el-bg-color-overlay); - border-color: var(--el-color-primary); - } - } - - /* 字典详情抽屉暗黑模式变量 */ - --dict-drawer-title-color: var(--el-text-color-primary); - --dict-drawer-subtext-color: var(--el-text-color-secondary); - --dict-drawer-card-bg: var(--el-bg-color-overlay); - --dict-drawer-border-color: var(--el-border-color); - --dict-drawer-cell-divider: var(--el-border-color-lighter, #2a2a2a); - - /* 通知公告详情抽屉暗黑模式变量 */ - --notice-title-color: var(--el-text-color-primary); - --notice-meta-color: var(--el-text-color-secondary); - --notice-meta-icon-color: var(--el-text-color-placeholder, #606266); - --notice-border-color: var(--el-border-color); - --notice-body-bg: var(--el-bg-color-overlay); - --notice-body-shadow: 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.04); - --notice-content-color: var(--el-text-color-regular); - --notice-drawer-body-bg: var(--el-bg-color); - --notice-divider-gradient: linear-gradient(to right, transparent, var(--el-border-color), transparent); - --notice-divider-dot-color: var(--el-border-color-light, #434343); - --notice-blockquote-bg: var(--el-bg-color); - --notice-blockquote-border: var(--el-border-color); - --notice-table-border: var(--el-border-color); - --notice-table-header-bg: var(--el-bg-color); - --notice-tag-notify-bg: rgba(217, 119, 6, 0.15); - --notice-tag-notify-color: #f6ad55; - --notice-tag-announce-bg: rgba(56, 161, 105, 0.15); - --notice-tag-announce-color: #68d391; -} - -.notice-detail-drawer { - .notice-content { - color: var(--el-text-color-regular) !important; - * { color: var(--el-text-color-regular) !important; } - h1~h6, strong, b { color: var(--el-text-color-primary) !important; } - a, a * { color: #5ba7f5 !important; } - blockquote, blockquote * { color: var(--el-text-color-secondary) !important; } - } -} - +// base color +$blue: #324157; +$light-blue: #333c46; +$red: #C03639; +$pink: #E65D6E; +$green: #30B08F; +$tiffany: #4AB7BD; +$yellow: #FEC171; +$panGreen: #30B08F; + +// 默认主题变量 +$menuText: #bfcbd9; +$menuActiveText: #409eff; +$menuBg: #1a1f2e; +$menuHover: #263445; + +// 浅色主题theme-light +$menuLightBg: #ffffff; +$menuLightHover: #f0f1f5; +$menuLightText: #303133; +$menuLightActiveText: #409EFF; + +// 基础变量 +$base-sidebar-width: 200px; +$sideBarWidth: 200px; + +// 菜单暗色变量 +$base-menu-color: rgba(255,255,255,.65); +$base-menu-color-active: #ffffff; +$base-menu-background: #1a1f2e; +$base-sub-menu-background: #141824; +$base-sub-menu-hover: rgba(255,255,255,.06); + +// 组件变量 +$--color-primary: #409EFF; +$--color-success: #67C23A; +$--color-warning: #E6A23C; +$--color-danger: #F56C6C; +$--color-info: #909399; + +:export { + menuText: $menuText; + menuActiveText: $menuActiveText; + menuBg: $menuBg; + menuHover: $menuHover; + menuLightBg: $menuLightBg; + menuLightHover: $menuLightHover; + menuLightText: $menuLightText; + menuLightActiveText: $menuLightActiveText; + sideBarWidth: $sideBarWidth; + // 导出基础颜色 + blue: $blue; + lightBlue: $light-blue; + red: $red; + pink: $pink; + green: $green; + tiffany: $tiffany; + yellow: $yellow; + panGreen: $panGreen; + // 导出组件颜色 + colorPrimary: $--color-primary; + colorSuccess: $--color-success; + colorWarning: $--color-warning; + colorDanger: $--color-danger; + colorInfo: $--color-info; +} + +// CSS变量定义 +:root { + /* 亮色模式变量 */ + --sidebar-bg: #{$menuBg}; + --sidebar-text: #{$menuText}; + --menu-hover: #{$menuHover}; + + --navbar-bg: #ffffff; + --navbar-text: #303133; + + /* splitpanes default-theme 变量 */ + --splitpanes-default-bg: #ffffff; + +} + +// 暗黑模式变量 +html.dark { + /* 默认通用 */ + --el-bg-color: #141414; + --el-bg-color-overlay: #1d1e1f; + --el-text-color-primary: #ffffff; + --el-text-color-regular: #d0d0d0; + --el-border-color: #434343; + --el-border-color-light: #434343; + --el-menu-text-color: #d0d0d0; + --sidebar-logo-text: #d0d0d0; + + /* primary */ + --primary-bg: #18212b; + + /* 侧边栏 */ + --sidebar-bg: #141414; + --sidebar-text: #ffffff; + --menu-hover: #2d2d2d; + --menu-active-text: #{$menuActiveText}; + + /* 顶部导航栏 */ + --navbar-bg: #141414; + --navbar-text: #ffffff; + --navbar-hover: #141414; + + /* 标签栏 */ + --tags-bg: #141414; + --tags-item-bg: #1d1e1f; + --tags-item-border: #303030; + --tags-item-text: #d0d0d0; + --tags-item-hover: #2d2d2d; + --tags-close-hover: #64666a; + /* 卡片模式激活页签 */ + --tags-card-active-bg: var(--el-bg-color-overlay); + --tags-card-active-bg: color-mix(in srgb, var(--el-color-primary) 22%, var(--el-bg-color-overlay) 78%); + --tags-card-active-border: var(--tags-card-active-bg); + + /* splitpanes 组件暗黑模式变量 */ + --splitpanes-bg: #141414; + --splitpanes-border: #303030; + --splitpanes-splitter-bg: #1d1e1f; + --splitpanes-splitter-hover-bg: #2d2d2d; + + /* blockquote 暗黑模式变量 */ + --blockquote-bg: #1d1e1f; + --blockquote-border: #303030; + --blockquote-text: #d0d0d0; + + /* Cron 时间表达式 模式变量 */ + --cron-border: #303030; + + /* splitpanes default-theme 暗黑模式变量 */ + --splitpanes-default-bg: #141414; + + /* 侧边栏菜单覆盖 */ + .sidebar-container { + .el-menu-item:not(.is-active), .menu-title { + color: var(--el-text-color-regular); + } + & .el-menu .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title, + & .el-menu .theme-dark .el-sub-menu .el-menu-item, + & .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title, + & .theme-dark .el-sub-menu .el-menu-item { + background-color: var(--el-bg-color) !important; + + &:hover { + background-color: var(--menu-hover) !important; + } + } + &.theme-light { + border-right: none !important; + .el-menu-item, + .el-sub-menu__title { + color: var(--sidebar-text) !important; + } + .el-menu-item:not(.is-active):hover, + .submenu-title-noDropdown:hover, + .el-sub-menu__title:hover { + background-color: var(--menu-hover) !important; + } + .el-menu .nest-menu .el-sub-menu>.el-sub-menu__title, + .el-menu .el-sub-menu .el-menu-item, + .nest-menu .el-sub-menu>.el-sub-menu__title, + .el-sub-menu .el-menu-item { + background-color: var(--el-bg-color) !important; + &:hover { + background-color: var(--menu-hover) !important; + } + } + } + } + + .topmenu-container { + .el-menu-item, + .el-sub-menu .el-sub-menu__title { + color: var(--el-text-color-regular) !important; + } + } + + .topbar-menu.el-menu--horizontal > .el-sub-menu .el-sub-menu__title{ + color: var(--el-text-color-regular) !important; + } + + /* 顶部栏栏菜单覆盖 */ + .el-menu--horizontal { + .el-menu-item, .el-sub-menu { + &:not(.is-disabled) { + &:hover, + &:focus { + background-color: var(--navbar-hover) !important; + .el-sub-menu__title { + background-color: var(--navbar-hover) !important; + } + } + } + } + } + + /* 页签样式覆盖 */ + .navbar { + box-shadow: 0 1px 4px rgba(255, 255, 255, 0.08); + } + .tags-view-container { + &.tags-view-container--chrome { + --chrome-strip-bg: var(--el-bg-color); + --chrome-strip-border: var(--el-border-color); + --chrome-tab-active-bg: var(--el-bg-color-overlay); + --chrome-tab-active-bg: color-mix(in srgb, var(--el-color-primary) 22%, var(--el-bg-color-overlay) 78%); + --chrome-tab-text: var(--el-text-color-secondary); + --chrome-tab-text-active: var(--el-color-primary); + .tags-view-wrapper .tags-view-item:not(.active) + .tags-view-item:not(.active) { + border-left-color: var(--el-border-color); + } + .tags-view-wrapper .tags-view-item { + &:hover:not(.active) { + background: var(--el-fill-color, #303030) !important; + color: var(--el-text-color-primary); + } + &.active { + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.45); + } + } + } + &:not(.tags-view-container--chrome) .tags-view-wrapper .tags-view-item.active { + background-color: var(--tags-card-active-bg) !important; + border-color: var(--tags-card-active-border) !important; + color: var(--current-color, #409eff) !important; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35); + + &::before { + background: var(--current-color, #409eff) !important; + } + } + } + + /* 分割窗格覆盖 */ + .tree-sidebar-manage-wrap { + .tree-sidebar-content { + background: var(--splitpanes-bg); + } + .tree-sidebar { + border-right: 1px solid var(--splitpanes-splitter-bg); + background: var(--splitpanes-bg); + .tree-header { + background: var(--splitpanes-bg); + border-color: var(--splitpanes-border); + } + .tree-title { + color: var(--el-color-primary-light-2); + } + .collapse-button-container { + background: var(--splitpanes-bg) !important; + } + .collapse-button { + &:hover { + color: var(--el-color-primary-light-2); + background: var(--splitpanes-bg); + } + } + .resize-handle { + &:hover { + background: var(--splitpanes-splitter-hover-bg); + } + &.active { + background: var(--splitpanes-splitter-hover-bg); + } + } + } + } + + /* 按钮样式覆盖 */ + .el-button--primary.is-plain { + background-color: var(--primary-bg); + border: 1px solid var(--el-color-primary-light-2); + color: var(--el-color-primary-light-2); + + &:hover { + background-color: var(--el-button-hover-bg-color); + border-color: var(--el-button-hover-border-color); + color: var(--el-button-hover-text-color); + } + + &.is-disabled { + background-color: var(--link-active-bg-color); + border-color: var(--el-color-primary-light-3); + color: var(--el-color-primary-light-3); + opacity: 0.5; + } + } + + /* primary tag 样式覆盖 */ + .el-tag--primary { + background-color: var(--primary-bg); + border: 1px solid var(--el-border-color-light); + color: var(--el-color-primary); + } + + /* 表格样式覆盖 */ + .el-table { + --el-table-header-bg-color: var(--el-bg-color-overlay) !important; + --el-table-header-text-color: var(--el-text-color-regular) !important; + --el-table-border-color: var(--el-border-color-light) !important; + --el-table-row-hover-bg-color: var(--el-bg-color-overlay) !important; + + .el-table__header-wrapper, .el-table__fixed-header-wrapper { + th { + background-color: var(--el-bg-color-overlay, #f8f8f9) !important; + color: var(--el-text-color-regular, #515a6e); + } + } + } + + /* 树组件高亮样式覆盖 */ + .el-tree { + .el-tree-node.is-current > .el-tree-node__content { + background-color: var(--el-bg-color-overlay) !important; + color: var(--el-color-primary); + } + + .el-tree-node__content:hover { + background-color: var(--el-bg-color-overlay); + } + } + + /* 下拉菜单样式覆盖 */ + .el-dropdown-menu__item:not(.is-disabled):focus, .el-dropdown-menu__item:not(.is-disabled):hover{ + background-color: var(--navbar-hover) !important; + } + + /* blockquote样式覆盖 */ + blockquote { + background-color: var(--blockquote-bg) !important; + border-left-color: var(--blockquote-border) !important; + color: var(--blockquote-text) !important; + } + + /* 时间表达式标题样式覆盖 */ + .popup-result .title { + background: var(--cron-border); + } + + /* 底部版权样式覆盖 */ + .copyright { + background-color: var(--el-bg-color) !important; + color: var(--el-text-color-regular) !important; + border-top: 1px solid var(--el-bg-color) !important; + } + + /* 详情抽屉暗黑模式覆盖 */ + .detail-drawer { + .el-drawer__header { + color: var(--el-text-color-primary); + background: var(--el-bg-color-overlay); + border-bottom: 1px solid var(--el-border-color); + } + .section-header { + color: var(--el-color-primary-light-3); + border-bottom-color: var(--el-border-color); + } + .drawer-content { + .info-label { + color: var(--el-text-color-secondary); + } + .info-value { + color: var(--el-text-color-primary); + &.plaintext { + border-bottom-color: var(--el-border-color); + } + } + } + } + + /* 详情卡片暗黑模式覆盖 */ + .detail-card { + border-color: var(--el-border-color); + } + .detail-card-title { + background: var(--el-bg-color-overlay); + color: var(--el-text-color-primary); + border-bottom-color: var(--el-border-color); + } + .detail-item { + border-bottom-color: var(--el-border-color-lighter, #2a2a2a); + } + .detail-label { + color: var(--el-text-color-secondary); + } + .detail-value { + color: var(--el-text-color-primary); + } + .code-wrap { + background: var(--el-bg-color-overlay); + border-color: var(--el-border-color); + } + .code-pre { + color: var(--el-text-color-regular); + } + .code-action .el-button { + background: rgba(30, 30, 30, 0.9); + border-color: var(--el-border-color); + color: var(--el-text-color-regular); + &:hover { + background: var(--el-bg-color-overlay); + border-color: var(--el-color-primary); + } + } + + /* 字典详情抽屉暗黑模式变量 */ + --dict-drawer-title-color: var(--el-text-color-primary); + --dict-drawer-subtext-color: var(--el-text-color-secondary); + --dict-drawer-card-bg: var(--el-bg-color-overlay); + --dict-drawer-border-color: var(--el-border-color); + --dict-drawer-cell-divider: var(--el-border-color-lighter, #2a2a2a); + + /* 通知公告详情抽屉暗黑模式变量 */ + --notice-title-color: var(--el-text-color-primary); + --notice-meta-color: var(--el-text-color-secondary); + --notice-meta-icon-color: var(--el-text-color-placeholder, #606266); + --notice-border-color: var(--el-border-color); + --notice-body-bg: var(--el-bg-color-overlay); + --notice-body-shadow: 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.04); + --notice-content-color: var(--el-text-color-regular); + --notice-drawer-body-bg: var(--el-bg-color); + --notice-divider-gradient: linear-gradient(to right, transparent, var(--el-border-color), transparent); + --notice-divider-dot-color: var(--el-border-color-light, #434343); + --notice-blockquote-bg: var(--el-bg-color); + --notice-blockquote-border: var(--el-border-color); + --notice-table-border: var(--el-border-color); + --notice-table-header-bg: var(--el-bg-color); + --notice-tag-notify-bg: rgba(217, 119, 6, 0.15); + --notice-tag-notify-color: #f6ad55; + --notice-tag-announce-bg: rgba(56, 161, 105, 0.15); + --notice-tag-announce-color: #68d391; +} + +.notice-detail-drawer { + .notice-content { + color: var(--el-text-color-regular) !important; + * { color: var(--el-text-color-regular) !important; } + h1~h6, strong, b { color: var(--el-text-color-primary) !important; } + a, a * { color: #5ba7f5 !important; } + blockquote, blockquote * { color: var(--el-text-color-secondary) !important; } + } +} + diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue index f069e4f..7193d08 100644 --- a/src/layout/components/Settings/index.vue +++ b/src/layout/components/Settings/index.vue @@ -1,344 +1,344 @@ - - - - - \ No newline at end of file diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue index 3ca8ac3..29020ac 100644 --- a/src/layout/components/TagsView/index.vue +++ b/src/layout/components/TagsView/index.vue @@ -1,712 +1,712 @@ - - - - - - - + + \ No newline at end of file diff --git a/src/settings.js b/src/settings.js index 422dae9..70a77ea 100644 --- a/src/settings.js +++ b/src/settings.js @@ -1,67 +1,67 @@ -export default { - /** - * 网页标题 - */ - title: import.meta.env.VITE_APP_TITLE, - - /** - * 侧边栏主题 深色主题theme-dark,浅色主题theme-light - */ - sideTheme: 'theme-dark', - - /** - * 是否系统布局配置 - */ - showSettings: true, - - /** - * 菜单导航模式 1、纯左侧 2、混合(左侧+顶部) 3、纯顶部 - */ - navType: 1, - - /** - * 是否显示 tagsView - */ - tagsView: true, - - /** - * 持久化标签页 - */ - tagsViewPersist: false, - - /** - * 显示页签图标 - */ - tagsIcon: false, - - /** - * 标签页样式:card 卡片(默认)、chrome 谷歌浏览器风格 - */ - tagsViewStyle: 'card', - - /** - * 是否固定头部 - */ - fixedHeader: true, - - /** - * 是否显示logo - */ - sidebarLogo: true, - - /** - * 是否显示动态标题 - */ - dynamicTitle: false, - - /** - * 是否显示底部版权 - */ - footerVisible: false, - - /** - * 底部版权文本内容 - */ - footerContent: 'Copyright © 2018-2026 RuoYi. All Rights Reserved.' -} - +export default { + /** + * 网页标题 + */ + title: import.meta.env.VITE_APP_TITLE, + + /** + * 侧边栏主题 深色主题theme-dark,浅色主题theme-light + */ + sideTheme: 'theme-dark', + + /** + * 是否系统布局配置 + */ + showSettings: true, + + /** + * 菜单导航模式 1、纯左侧 2、混合(左侧+顶部) 3、纯顶部 + */ + navType: 1, + + /** + * 是否显示 tagsView + */ + tagsView: true, + + /** + * 持久化标签页 + */ + tagsViewPersist: false, + + /** + * 显示页签图标 + */ + tagsIcon: false, + + /** + * 标签页样式:card 卡片(默认)、chrome 谷歌浏览器风格 + */ + tagsViewStyle: 'card', + + /** + * 是否固定头部 + */ + fixedHeader: true, + + /** + * 是否显示logo + */ + sidebarLogo: true, + + /** + * 是否显示动态标题 + */ + dynamicTitle: false, + + /** + * 是否显示底部版权 + */ + footerVisible: false, + + /** + * 底部版权文本内容 + */ + footerContent: 'Copyright © 2018-2026 RuoYi. All Rights Reserved.' +} +