From dd8eadd06f869e7fb99984d7d09e325c70411b78 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Wed, 1 Apr 2026 21:35:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=91=E5=88=86=E5=89=B2?= =?UTF-8?q?=E7=BB=84=E4=BB=B6TreePanel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 - src/assets/styles/ruoyi.scss | 27 +- src/assets/styles/variables.module.scss | 45 +- src/components/TreePanel/index.vue | 756 ++++++++++++++++++++++++ src/views/system/user/index.vue | 198 +++---- 5 files changed, 891 insertions(+), 136 deletions(-) create mode 100644 src/components/TreePanel/index.vue diff --git a/package.json b/package.json index 696916f..e5e4ec3 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "jsencrypt": "3.3.2", "nprogress": "0.2.0", "pinia": "3.0.4", - "splitpanes": "4.0.4", "vue": "3.5.26", "vue-cropper": "1.1.1", "vue-router": "4.6.4", diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss index eb27307..87bdf3d 100644 --- a/src/assets/styles/ruoyi.scss +++ b/src/assets/styles/ruoyi.scss @@ -332,6 +332,28 @@ display: block; } +/* tree-sidebar content */ +.tree-sidebar-manage-wrap { + display: flex; + gap: 0; + min-height: calc(100vh - 130px); + padding: 0 !important; + overflow: hidden; +} + +.tree-sidebar-content { + flex: 1; + min-width: 0; + overflow: hidden; + background: #fff; + + .content-inner { + padding: 12px 16px; + height: 100%; + overflow-y: auto; + } +} + /* error */ .error-title { color: #c0392b !important; } .error-title i { color: #c0392b !important; } @@ -415,8 +437,3 @@ .top-right-btn { margin-left: auto; } - -/* 分割面板样式 */ -.splitpanes.default-theme .splitpanes__pane { - background-color: var(--splitpanes-default-bg) !important; -} diff --git a/src/assets/styles/variables.module.scss b/src/assets/styles/variables.module.scss index 1f34402..aaf9b2b 100644 --- a/src/assets/styles/variables.module.scss +++ b/src/assets/styles/variables.module.scss @@ -194,25 +194,36 @@ html.dark { } /* 分割窗格覆盖 */ - .splitpanes { - background-color: var(--splitpanes-bg); - - .splitpanes__pane { - background-color: var(--splitpanes-bg); - border-color: var(--splitpanes-border); + .tree-sidebar-manage-wrap { + .tree-sidebar-content { + background: var(--splitpanes-bg); } - - .splitpanes__splitter { - background-color: var(--splitpanes-splitter-bg); - border-color: var(--splitpanes-border); - - &:hover { - background-color: var(--splitpanes-splitter-hover-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); } - - &:before, - &:after { - background-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); + } } } } diff --git a/src/components/TreePanel/index.vue b/src/components/TreePanel/index.vue new file mode 100644 index 0000000..513b8e3 --- /dev/null +++ b/src/components/TreePanel/index.vue @@ -0,0 +1,756 @@ + + + + + diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 5b0bbbe..0ccbef0 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -1,105 +1,90 @@