mirror of
https://gitee.com/JavaLionLi/plus-ui.git
synced 2026-05-14 03:12:34 +00:00
201 lines
3.9 KiB
SCSS
201 lines
3.9 KiB
SCSS
/* Shared vertical page shell spacing helpers. */
|
||
|
||
.p-2 {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 12px;
|
||
}
|
||
|
||
.app-main > .p-2 {
|
||
padding: 0 !important;
|
||
margin: 0 !important;
|
||
}
|
||
|
||
.p-2 > .el-row,
|
||
.p-2 > .el-card,
|
||
.p-2 > .search-wrap,
|
||
.p-2 > div,
|
||
.p-2 > section {
|
||
margin-bottom: 0 !important;
|
||
}
|
||
|
||
// --- CRUD / 树表页用混入(在 .vue 内 @use 后 @include) ---
|
||
|
||
@mixin action-link-buttons($background: rgba(53, 109, 255, 0.08)) {
|
||
.data-table {
|
||
:deep(.el-button.is-link) {
|
||
width: 32px;
|
||
height: 32px;
|
||
border-radius: 10px;
|
||
background: $background;
|
||
}
|
||
}
|
||
}
|
||
|
||
@mixin toolbar-responsive($mobile-breakpoint: 900px) {
|
||
@media (max-width: $mobile-breakpoint) {
|
||
.toolbar-shell {
|
||
align-items: flex-start;
|
||
}
|
||
}
|
||
}
|
||
|
||
@mixin content-stack($gap: 12px) {
|
||
.content-main {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: $gap;
|
||
}
|
||
}
|
||
|
||
@mixin dept-tree-panel($padding-top: 6px) {
|
||
.dept-tree {
|
||
padding-top: $padding-top;
|
||
}
|
||
}
|
||
|
||
@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: var(--app-text-muted);
|
||
opacity: 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);
|
||
}
|
||
|
||
@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);
|
||
}
|