From 8469c254af4e350fa641f41417ce98dfd34d91ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 26 Mar 2026 10:09:46 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B7=A6?= =?UTF-8?q?=E4=BE=A7=E6=A0=91=E7=BB=93=E6=9E=84=E5=A2=9E=E5=8A=A0=E5=8F=AF?= =?UTF-8?q?=E6=8A=98=E5=8F=A0=E6=8C=89=E9=92=AE=20update=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20=E5=B7=A6=E4=BE=A7=E6=A0=91=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BF=87=E5=A4=9A=E6=94=AF=E6=8C=81=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E6=BB=91=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/styles/components/_page-shell.scss | 126 ++++++++++++++++++ src/components/UserSelect/index.vue | 43 +++--- src/views/system/post/index.vue | 40 +++--- src/views/system/user/index.vue | 40 +++--- .../workflow/processDefinition/index.vue | 47 ++++--- src/views/workflow/processInstance/index.vue | 47 ++++--- src/views/workflow/task/myDocument.vue | 47 ++++--- 7 files changed, 277 insertions(+), 113 deletions(-) diff --git a/src/assets/styles/components/_page-shell.scss b/src/assets/styles/components/_page-shell.scss index 65806776..97b7e316 100644 --- a/src/assets/styles/components/_page-shell.scss +++ b/src/assets/styles/components/_page-shell.scss @@ -54,6 +54,131 @@ } } +@mixin collapsible-tree-layout($mobile-breakpoint: 900px) { + .content-grid, + .selector-layout { + align-items: stretch; + } + + .tree-panel-col, + .tree-content-col { + min-width: 0; + transition: max-width 0.24s ease, flex-basis 0.24s ease; + } + + .tree-panel-col.is-collapsed { + max-width: 56px; + flex: 0 0 56px; + } + + .tree-content-col.is-tree-collapsed { + max-width: calc(100% - 56px); + flex: 0 0 calc(100% - 56px); + } + + .tree-panel-shell, + .side-panel { + height: 100%; + } + + .tree-panel-shell { + --tree-panel-max-height: 620px; + } + + .tree-panel-shell :deep(.el-card__header) { + display: block; + padding: 12px 16px !important; + } + + .tree-panel-shell :deep(.el-card__body) { + display: flex; + flex-direction: column; + height: var(--tree-panel-max-height); + min-height: 0; + max-height: var(--tree-panel-max-height); + overflow: hidden; + } + + .tree-panel-header { + cursor: pointer; + user-select: none; + } + + .tree-panel-header::after { + display: block; + width: 9px; + min-width: 9px; + height: 9px; + margin-left: auto; + flex-shrink: 0; + transform-origin: center; + transform: rotate(135deg); + } + + .tree-panel-header.is-collapsed { + justify-content: center; + } + + .side-panel.is-collapsed :deep(.el-card__body) { + display: none; + } + + .dept-tree, + .selector-tree { + flex: 1 1 auto; + min-height: 180px; + max-height: 100%; + overflow-y: auto; + overflow-x: hidden; + padding-right: 4px; + scrollbar-width: thin; + } + + .dept-tree::-webkit-scrollbar, + .selector-tree::-webkit-scrollbar { + width: 6px; + } + + .dept-tree::-webkit-scrollbar-thumb, + .selector-tree::-webkit-scrollbar-thumb { + border-radius: 999px; + background: rgba(148, 163, 184, 0.55); + } + + .dept-tree::-webkit-scrollbar-track, + .selector-tree::-webkit-scrollbar-track { + background: transparent; + } + + .tree-panel-shell.is-collapsed :deep(.el-card__header) { + padding: 12px 0 !important; + } + + .tree-panel-shell.is-collapsed .tree-panel-header::after { + margin-left: 0; + } + + .tree-panel-shell.is-collapsed .tree-panel-header::after { + transform: rotate(-45deg); + } + + @media (max-width: $mobile-breakpoint) { + .tree-panel-col, + .tree-content-col { + max-width: 100%; + flex: 0 0 100%; + } + + .tree-panel-shell { + --tree-panel-max-height: 420px; + } + + .side-panel.is-collapsed { + height: auto; + } + } +} + @mixin table-crud-page($mobile-breakpoint: 900px, $background: rgba(53, 109, 255, 0.08)) { @include action-link-buttons($background); @include toolbar-responsive($mobile-breakpoint); @@ -62,5 +187,6 @@ @mixin tree-table-crud-page($mobile-breakpoint: 900px, $gap: 12px, $tree-padding-top: 6px, $background: rgba(53, 109, 255, 0.08)) { @include content-stack($gap); @include dept-tree-panel($tree-padding-top); + @include collapsible-tree-layout($mobile-breakpoint); @include table-crud-page($mobile-breakpoint, $background); } diff --git a/src/components/UserSelect/index.vue b/src/components/UserSelect/index.vue index e57503a3..1230563a 100644 --- a/src/components/UserSelect/index.vue +++ b/src/components/UserSelect/index.vue @@ -4,29 +4,33 @@
- - + + - - + - +
@@ -144,6 +148,7 @@ const showSearch = ref(true); const total = ref(0); const dateRange = ref<[DateModelType, DateModelType]>(['', '']); const deptName = ref(''); +const treeCollapsed = ref(false); const deptOptions = ref([]); const selectUserList = ref([]); @@ -328,8 +333,10 @@ defineExpose({