1230 lines
32 KiB
CSS
1230 lines
32 KiB
CSS
/**
|
|
* CTMS 全局样式系统
|
|
* 参考 shadcn-admin 的轻量、中性、分层风格
|
|
*/
|
|
|
|
:root {
|
|
/* 品牌色 - 低饱和蓝灰 */
|
|
--ctms-primary: #3f5d75;
|
|
--ctms-primary-hover: #365067;
|
|
--ctms-primary-active: #2b4356;
|
|
--ctms-primary-light: #e6edf2;
|
|
--ctms-brand-900: #13243a;
|
|
--ctms-brand-700: #24496f;
|
|
|
|
/* 语义色 */
|
|
--ctms-success: #3f8f6b;
|
|
--ctms-warning: #c58b2a;
|
|
--ctms-danger: #c24b4b;
|
|
--ctms-info: #64748b;
|
|
|
|
/* 文字颜色 - 高层级到低层级 */
|
|
--ctms-text-main: #0f172a;
|
|
--ctms-text-regular: #334155;
|
|
--ctms-text-secondary: #64748b;
|
|
--ctms-text-disabled: #94a3b8;
|
|
|
|
/* 中性色 & 背景 */
|
|
--ctms-bg-base: #f9fafb;
|
|
--ctms-bg-card: #ffffff;
|
|
--ctms-bg-muted: #f3f4f6;
|
|
--ctms-neutral-100: #f5f7fa;
|
|
--ctms-neutral-300: #d5dce5;
|
|
--ctms-border-color: #e5e7eb;
|
|
--ctms-border-color-hover: #cbd5e1;
|
|
|
|
/* 间距 - 8px 网格 */
|
|
--ctms-spacing-xs: 4px;
|
|
--ctms-spacing-sm: 8px;
|
|
--ctms-spacing-md: 16px;
|
|
--ctms-spacing-lg: 24px;
|
|
--ctms-spacing-xl: 32px;
|
|
|
|
/* 圆角 & 阴影 */
|
|
--ctms-radius-sm: 6px;
|
|
--ctms-radius: 10px;
|
|
--ctms-radius-lg: 12px;
|
|
--ctms-radius-round: 50%;
|
|
|
|
--ctms-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04);
|
|
--ctms-shadow: 0 8px 20px rgba(15, 23, 42, 0.06);
|
|
--ctms-shadow-md: 0 12px 26px rgba(15, 23, 42, 0.08);
|
|
--ctms-shadow-lg: 0 20px 40px rgba(15, 23, 42, 0.1);
|
|
|
|
/* 动画 */
|
|
--ctms-transition: all 0.25s cubic-bezier(0.22, 1, 0.36, 1);
|
|
--ctms-focus-ring: 0 0 0 3px rgba(36, 73, 111, 0.2);
|
|
|
|
/* Element Plus 主色适配 */
|
|
--el-color-primary: var(--ctms-primary);
|
|
--el-color-primary-light-3: #9bb1c2;
|
|
--el-color-primary-light-5: #c0cdd7;
|
|
--el-color-primary-light-7: #dde5ec;
|
|
--el-color-primary-light-8: #eef2f6;
|
|
--el-color-primary-dark-2: #2b4356;
|
|
--el-border-radius-base: var(--ctms-radius);
|
|
--el-border-color: var(--ctms-border-color);
|
|
--el-text-color-primary: var(--ctms-text-main);
|
|
--el-text-color-regular: var(--ctms-text-regular);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] {
|
|
--ctms-primary: #8fb7d4;
|
|
--ctms-primary-hover: #a7c9df;
|
|
--ctms-primary-active: #c3dced;
|
|
--ctms-primary-light: #203145;
|
|
--ctms-brand-900: #d8e7f4;
|
|
--ctms-brand-700: #b4d0e5;
|
|
|
|
--ctms-success: #7dd3a8;
|
|
--ctms-warning: #f1c271;
|
|
--ctms-danger: #f28b8b;
|
|
--ctms-info: #a6b4c5;
|
|
|
|
--ctms-text-main: #f8fafc;
|
|
--ctms-text-regular: #dbe5f1;
|
|
--ctms-text-secondary: #9aaabd;
|
|
--ctms-text-disabled: #66788d;
|
|
|
|
--ctms-bg-base: #0f172a;
|
|
--ctms-bg-card: #172033;
|
|
--ctms-bg-muted: #111827;
|
|
--ctms-neutral-100: #182337;
|
|
--ctms-neutral-300: #334155;
|
|
--ctms-border-color: #26364a;
|
|
--ctms-border-color-hover: #3d5068;
|
|
|
|
--ctms-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.24);
|
|
--ctms-shadow: 0 8px 20px rgba(0, 0, 0, 0.32);
|
|
--ctms-shadow-md: 0 12px 26px rgba(0, 0, 0, 0.36);
|
|
--ctms-shadow-lg: 0 20px 40px rgba(0, 0, 0, 0.42);
|
|
|
|
--el-color-primary: var(--ctms-primary);
|
|
--el-color-primary-light-3: #567894;
|
|
--el-color-primary-light-5: #3c5871;
|
|
--el-color-primary-light-7: #283c50;
|
|
--el-color-primary-light-8: #203145;
|
|
--el-color-primary-dark-2: #c3dced;
|
|
--el-border-color: var(--ctms-border-color);
|
|
--el-text-color-primary: var(--ctms-text-main);
|
|
--el-text-color-regular: var(--ctms-text-regular);
|
|
--el-bg-color: var(--ctms-bg-card);
|
|
--el-bg-color-overlay: #172033;
|
|
--el-fill-color-blank: #172033;
|
|
--el-fill-color-light: #111827;
|
|
--el-fill-color-lighter: #0f172a;
|
|
--el-mask-color: rgba(0, 0, 0, 0.62);
|
|
}
|
|
|
|
/* 全局重置 */
|
|
html,
|
|
body,
|
|
#app {
|
|
min-height: 100%;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
font-family: "Manrope", "Segoe UI", sans-serif;
|
|
background: var(--ctms-bg-base);
|
|
color: var(--ctms-text-main);
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] body {
|
|
background: var(--ctms-bg-base);
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-button--default {
|
|
background-color: #172033;
|
|
border-color: #334155;
|
|
color: var(--ctms-text-regular);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-button--default:hover {
|
|
border-color: #4b6580;
|
|
background-color: #1f2d3d;
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-card,
|
|
:root[data-ctms-theme="dark"] .el-alert,
|
|
:root[data-ctms-theme="dark"] .el-popper,
|
|
:root[data-ctms-theme="dark"] .el-dropdown-menu,
|
|
:root[data-ctms-theme="dark"] .el-popover.el-popper,
|
|
:root[data-ctms-theme="dark"] .el-dialog {
|
|
border-color: var(--ctms-border-color);
|
|
background-color: var(--ctms-bg-card);
|
|
color: var(--ctms-text-regular);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-card__header {
|
|
border-bottom-color: var(--ctms-border-color);
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-input__wrapper,
|
|
:root[data-ctms-theme="dark"] .el-select .el-input__wrapper {
|
|
background-color: #172033;
|
|
box-shadow: 0 0 0 1px #334155 inset;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-input__inner {
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-input__inner::placeholder {
|
|
color: var(--ctms-text-disabled);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-table {
|
|
background-color: transparent;
|
|
color: var(--ctms-text-regular);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-table th.el-table__cell {
|
|
background-color: #111827;
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-table tr,
|
|
:root[data-ctms-theme="dark"] .el-table td.el-table__cell {
|
|
background-color: #172033;
|
|
border-bottom-color: var(--ctms-border-color);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-table--enable-row-hover .el-table__row:hover>td.el-table__cell {
|
|
background-color: #1f2d3d;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-dropdown-menu__item {
|
|
color: var(--ctms-text-regular);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .el-dropdown-menu__item:not(.is-disabled):focus,
|
|
:root[data-ctms-theme="dark"] .el-dropdown-menu__item:not(.is-disabled):hover {
|
|
background-color: #1f2d3d;
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .ctms-state,
|
|
:root[data-ctms-theme="dark"] .ctms-table-card,
|
|
:root[data-ctms-theme="dark"] .ctms-section-card {
|
|
border-color: var(--ctms-border-color);
|
|
background: var(--ctms-bg-card);
|
|
}
|
|
|
|
/* Element Plus 全局覆盖 */
|
|
|
|
/* 按钮美化 */
|
|
.el-button {
|
|
border-radius: var(--ctms-radius);
|
|
font-weight: 600;
|
|
transition: var(--ctms-transition);
|
|
}
|
|
|
|
.el-button--primary {
|
|
background-color: var(--ctms-primary);
|
|
border-color: var(--ctms-primary);
|
|
}
|
|
|
|
.el-button--primary:hover {
|
|
background-color: var(--ctms-primary-hover);
|
|
border-color: var(--ctms-primary-hover);
|
|
}
|
|
|
|
.el-button--default {
|
|
background-color: #fff;
|
|
border-color: var(--ctms-border-color);
|
|
color: var(--ctms-text-regular);
|
|
}
|
|
|
|
.el-button--default:hover {
|
|
border-color: var(--ctms-border-color-hover);
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
.el-button--danger.is-plain {
|
|
color: var(--ctms-danger);
|
|
border-color: rgba(194, 75, 75, 0.4);
|
|
background-color: rgba(194, 75, 75, 0.04);
|
|
}
|
|
|
|
.el-button--default,
|
|
.el-button--primary,
|
|
.el-button--danger,
|
|
.el-button--success,
|
|
.el-button--warning {
|
|
height: 34px;
|
|
padding: 0 14px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.el-button--small {
|
|
height: 28px;
|
|
padding: 0 10px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.el-button--large {
|
|
height: 40px;
|
|
padding: 0 18px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
/* 卡片美化 */
|
|
.el-card {
|
|
border: 1px solid var(--ctms-border-color);
|
|
box-shadow: none !important;
|
|
border-radius: var(--ctms-radius-lg);
|
|
margin-bottom: var(--ctms-spacing-md);
|
|
}
|
|
|
|
.el-card__header {
|
|
padding: var(--ctms-spacing-md) var(--ctms-spacing-lg);
|
|
border-bottom: 1px solid var(--ctms-border-color);
|
|
font-weight: 600;
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
.el-card__body {
|
|
padding: var(--ctms-spacing-lg);
|
|
}
|
|
|
|
/* 表格美化 */
|
|
.el-table {
|
|
color: var(--ctms-text-regular);
|
|
width: 100%;
|
|
max-width: 100%;
|
|
}
|
|
|
|
.el-table th.el-table__cell {
|
|
background-color: #f6f7f9;
|
|
color: var(--ctms-text-main);
|
|
font-weight: 600;
|
|
height: 44px;
|
|
}
|
|
|
|
.el-table td.el-table__cell {
|
|
padding: 10px 0;
|
|
}
|
|
|
|
.el-table--enable-row-hover .el-table__row:hover>td.el-table__cell {
|
|
background-color: #f2f5f8;
|
|
}
|
|
|
|
/* 表单美化 */
|
|
.el-form-item__label {
|
|
font-weight: 500;
|
|
color: var(--ctms-text-regular);
|
|
}
|
|
|
|
.el-input__inner {
|
|
border-radius: var(--ctms-radius);
|
|
}
|
|
|
|
.el-input__wrapper {
|
|
border-radius: var(--ctms-radius);
|
|
background-color: #ffffff;
|
|
min-height: 34px;
|
|
}
|
|
|
|
.el-select .el-input__wrapper {
|
|
background-color: #ffffff;
|
|
}
|
|
|
|
.el-input--small .el-input__wrapper,
|
|
.el-select--small .el-input__wrapper {
|
|
min-height: 30px;
|
|
}
|
|
|
|
.el-input--large .el-input__wrapper,
|
|
.el-select--large .el-input__wrapper {
|
|
min-height: 40px;
|
|
}
|
|
|
|
.el-form-item {
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.ctms-form--dense .el-form-item {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.el-form-item__error {
|
|
color: #b45309;
|
|
font-size: 12px;
|
|
}
|
|
|
|
/* 标签美化 */
|
|
.el-tag {
|
|
border-radius: 999px;
|
|
border: none;
|
|
}
|
|
|
|
.el-tag--info {
|
|
background-color: #f5f5f5;
|
|
color: var(--ctms-text-secondary);
|
|
}
|
|
|
|
.el-tag--success {
|
|
background-color: rgba(63, 143, 107, 0.12);
|
|
color: var(--ctms-success);
|
|
border: 1px solid rgba(63, 143, 107, 0.2);
|
|
}
|
|
|
|
.el-tag--warning {
|
|
background-color: rgba(197, 139, 42, 0.12);
|
|
color: var(--ctms-warning);
|
|
border: 1px solid rgba(197, 139, 42, 0.2);
|
|
}
|
|
|
|
.el-tag--danger {
|
|
background-color: rgba(194, 75, 75, 0.12);
|
|
color: var(--ctms-danger);
|
|
border: 1px solid rgba(194, 75, 75, 0.2);
|
|
}
|
|
|
|
.el-alert {
|
|
border: 1px solid var(--ctms-border-color);
|
|
background-color: #ffffff;
|
|
}
|
|
|
|
.el-alert__title {
|
|
font-size: 13px;
|
|
color: var(--ctms-text-regular);
|
|
}
|
|
|
|
.el-alert--warning .el-alert__icon {
|
|
color: var(--ctms-warning);
|
|
}
|
|
|
|
.el-alert--success .el-alert__icon {
|
|
color: var(--ctms-success);
|
|
}
|
|
|
|
.el-alert--error .el-alert__icon {
|
|
color: var(--ctms-danger);
|
|
}
|
|
|
|
.el-button.is-disabled,
|
|
.el-input.is-disabled .el-input__wrapper,
|
|
.el-select.is-disabled .el-input__wrapper {
|
|
opacity: 0.6;
|
|
}
|
|
|
|
.el-empty__description {
|
|
color: var(--ctms-text-secondary);
|
|
}
|
|
|
|
.el-skeleton__item {
|
|
background: linear-gradient(90deg, #f2f3f5 25%, #eceef1 37%, #f2f3f5 63%);
|
|
}
|
|
|
|
/* 页面结构与筛选区域 */
|
|
.ctms-page {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--ctms-spacing-lg);
|
|
}
|
|
|
|
.ctms-page-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-end;
|
|
gap: 16px;
|
|
}
|
|
|
|
.ctms-page-title {
|
|
font-size: 22px;
|
|
font-weight: 600;
|
|
color: var(--ctms-text-main);
|
|
margin: 0;
|
|
}
|
|
|
|
.ctms-page-title,
|
|
.ctms-page-subtitle,
|
|
.page-title,
|
|
.page-subtitle {
|
|
display: none;
|
|
}
|
|
|
|
|
|
.ctms-page-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
}
|
|
|
|
.ctms-filter-card {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.ctms-filter-row {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
gap: 12px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.ctms-filter-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
min-width: 144px;
|
|
}
|
|
|
|
.ctms-filter-label {
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
color: var(--ctms-text-regular);
|
|
}
|
|
|
|
.ctms-filter-spacer {
|
|
flex: 1;
|
|
}
|
|
|
|
.ctms-table-card {
|
|
margin-bottom: 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
box-shadow: none !important;
|
|
background: transparent;
|
|
}
|
|
|
|
.ctms-table-card>.el-card__body {
|
|
padding: 0;
|
|
}
|
|
|
|
.ctms-table .el-table__row {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.ctms-pagination {
|
|
margin-top: 10px;
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.ctms-section-card {
|
|
border: 1px solid var(--ctms-border-color);
|
|
}
|
|
|
|
.ctms-section-title {
|
|
font-size: 15px;
|
|
font-weight: 600;
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
.ctms-section-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.ctms-section-actions {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
.ctms-section-card {
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.ctms-page-subtitle {
|
|
margin: 6px 0 0;
|
|
font-size: 13px;
|
|
color: var(--ctms-text-secondary);
|
|
}
|
|
|
|
.ctms-descriptions {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.ctms-descriptions .el-descriptions__label {
|
|
font-weight: 500;
|
|
color: var(--ctms-text-regular);
|
|
background-color: #f8fafc;
|
|
}
|
|
|
|
.ctms-tabs .el-tabs__nav-wrap::after {
|
|
height: 1px;
|
|
background-color: var(--ctms-border-color);
|
|
}
|
|
|
|
.ctms-tabs .el-tabs__item {
|
|
font-weight: 500;
|
|
color: var(--ctms-text-regular);
|
|
}
|
|
|
|
.ctms-tabs .el-tabs__item.is-active {
|
|
color: var(--ctms-primary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Unified loading / empty / error states */
|
|
.ctms-state {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
padding: 28px 16px;
|
|
text-align: center;
|
|
border: 1px solid var(--ctms-border-color);
|
|
border-radius: var(--ctms-radius);
|
|
background: #ffffff;
|
|
}
|
|
|
|
.ctms-state-icon {
|
|
font-size: 34px;
|
|
}
|
|
|
|
.ctms-state-title {
|
|
margin: 0;
|
|
font-size: 15px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.ctms-state-desc {
|
|
margin: 0;
|
|
font-size: 13px;
|
|
color: var(--ctms-text-secondary);
|
|
}
|
|
|
|
.ctms-state-action {
|
|
margin-top: 4px;
|
|
}
|
|
|
|
.ctms-state-loading .ctms-state-skeleton {
|
|
width: min(560px, 100%);
|
|
margin-top: 4px;
|
|
}
|
|
|
|
/* Tool classes */
|
|
.text-main {
|
|
color: var(--ctms-text-main);
|
|
}
|
|
|
|
.text-secondary {
|
|
color: var(--ctms-text-secondary);
|
|
}
|
|
|
|
.text-danger {
|
|
color: var(--ctms-danger);
|
|
}
|
|
|
|
.text-primary {
|
|
color: var(--ctms-primary);
|
|
}
|
|
|
|
.font-medium {
|
|
font-weight: 500;
|
|
}
|
|
|
|
.font-mono {
|
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
}
|
|
|
|
.text-xs {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.text-sm {
|
|
font-size: 13px;
|
|
}
|
|
|
|
/* Desktop workbench density */
|
|
.desktop-workbench {
|
|
--ctms-radius-sm: 5px;
|
|
--ctms-radius: 6px;
|
|
--ctms-radius-lg: 8px;
|
|
--ctms-shadow-sm: none;
|
|
--ctms-shadow: none;
|
|
--ctms-shadow-md: none;
|
|
--ctms-shadow-lg: none;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell {
|
|
color: var(--ctms-text-regular);
|
|
font-size: 13px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell.page,
|
|
.desktop-workbench .desktop-route-shell.ctms-page,
|
|
.desktop-workbench .desktop-route-shell.ctms-page-shell,
|
|
.desktop-workbench .desktop-route-shell.module-page,
|
|
.desktop-workbench .desktop-route-shell.medical-consult-page {
|
|
min-width: 0;
|
|
gap: 8px;
|
|
padding: 0 !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .page,
|
|
.desktop-workbench .desktop-route-shell .ctms-page,
|
|
.desktop-workbench .desktop-route-shell .ctms-page-shell,
|
|
.desktop-workbench .desktop-route-shell .page-body,
|
|
.desktop-workbench .desktop-route-shell .page-inner,
|
|
.desktop-workbench .desktop-route-shell .main-content,
|
|
.desktop-workbench .desktop-route-shell .main-content-card,
|
|
.desktop-workbench .desktop-route-shell .main-content-flat,
|
|
.desktop-workbench .desktop-route-shell .study-home-container,
|
|
.desktop-workbench .desktop-route-shell .overview,
|
|
.desktop-workbench .desktop-route-shell .overview-grid,
|
|
.desktop-workbench .desktop-route-shell .content-area {
|
|
min-width: 0;
|
|
max-width: none;
|
|
width: 100%;
|
|
gap: 8px;
|
|
margin: 0 !important;
|
|
padding: 0 !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-card,
|
|
.desktop-workbench .desktop-route-shell .unified-shell,
|
|
.desktop-workbench .desktop-route-shell .ctms-state,
|
|
.desktop-workbench .desktop-route-shell .ctms-section-card,
|
|
.desktop-workbench .desktop-route-shell .ctms-table-card,
|
|
.desktop-workbench .desktop-route-shell .table-card,
|
|
.desktop-workbench .desktop-route-shell .detail-card,
|
|
.desktop-workbench .desktop-route-shell .stats-card,
|
|
.desktop-workbench .desktop-route-shell .notifications-card,
|
|
.desktop-workbench .desktop-route-shell .hero-card,
|
|
.desktop-workbench .desktop-route-shell .hero-banner,
|
|
.desktop-workbench .desktop-route-shell .faq-hero {
|
|
border: 1px solid #d9e2ec;
|
|
border-radius: 6px !important;
|
|
background: #ffffff;
|
|
margin: 0 !important;
|
|
box-shadow: none !important;
|
|
}
|
|
|
|
/* page--flush 场景:表格铺满全屏,不需要圆角(desktop-route-shell 与 page--flush 在同一元素上)*/
|
|
.desktop-workbench .desktop-route-shell.page--flush > .unified-shell,
|
|
.desktop-workbench .desktop-route-shell.page--flush > .ctms-table-card {
|
|
border-radius: 0 !important;
|
|
}
|
|
|
|
/* 药品流向管理页面桌面端:table-card 铺满,去圆角 */
|
|
.desktop-workbench .desktop-route-shell .shipment-page--desktop .table-card {
|
|
border-radius: 0 !important;
|
|
box-shadow: none !important;
|
|
}
|
|
|
|
/* 设备管理页面桌面端:table-card 铺满,去圆角 */
|
|
.desktop-workbench .desktop-route-shell .equipment-page--desktop .table-card {
|
|
border-radius: 0 !important;
|
|
box-shadow: none !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .hero-banner,
|
|
.desktop-workbench .desktop-route-shell .hero-card,
|
|
.desktop-workbench .desktop-route-shell .faq-hero {
|
|
min-height: 0;
|
|
padding: 12px 14px !important;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .hero-banner::before,
|
|
.desktop-workbench .desktop-route-shell .hero-banner::after,
|
|
.desktop-workbench .desktop-route-shell .hero-card::before,
|
|
.desktop-workbench .desktop-route-shell .hero-card::after,
|
|
.desktop-workbench .desktop-route-shell .faq-hero::before,
|
|
.desktop-workbench .desktop-route-shell .faq-hero::after,
|
|
.desktop-workbench .desktop-route-shell .hero-bg-pattern,
|
|
.desktop-workbench .desktop-route-shell .hero-accent {
|
|
display: none !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .hero-top,
|
|
.desktop-workbench .desktop-route-shell .hero-content,
|
|
.desktop-workbench .desktop-route-shell .hero-body {
|
|
margin-bottom: 8px !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .hero-title,
|
|
.desktop-workbench .desktop-route-shell .faq-hero h1 {
|
|
color: var(--ctms-text-main) !important;
|
|
font-size: 16px !important;
|
|
font-weight: 750 !important;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .hero-stats,
|
|
.desktop-workbench .desktop-route-shell .hero-meta,
|
|
.desktop-workbench .desktop-route-shell .hero-status-row {
|
|
gap: 6px !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .hero-stat,
|
|
.desktop-workbench .desktop-route-shell .hero-status-item {
|
|
min-height: 0;
|
|
padding: 8px 10px !important;
|
|
border: 1px solid #e1e8f0;
|
|
border-radius: 6px !important;
|
|
background: #f8fafc !important;
|
|
box-shadow: none !important;
|
|
transform: none !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .table-card-toolbar,
|
|
.desktop-workbench .desktop-route-shell .ctms-page-header,
|
|
.desktop-workbench .desktop-route-shell .ctms-section-header {
|
|
min-height: 0;
|
|
padding: 9px 12px;
|
|
border-bottom-color: #d9e2ec;
|
|
gap: 8px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .ctms-table-card,
|
|
.desktop-workbench .desktop-route-shell .ctms-section-card,
|
|
.desktop-workbench .desktop-route-shell .detail-card,
|
|
.desktop-workbench .desktop-route-shell .section-card,
|
|
.desktop-workbench .desktop-route-shell .form-card,
|
|
.desktop-workbench .desktop-route-shell .stats-card,
|
|
.desktop-workbench .desktop-route-shell .notifications-card,
|
|
.desktop-workbench .desktop-route-shell .es-detail-card,
|
|
.desktop-workbench .desktop-route-shell .kpi-enterprise {
|
|
margin: 0 !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .ctms-table-card + .ctms-table-card,
|
|
.desktop-workbench .desktop-route-shell .ctms-section-card + .ctms-section-card,
|
|
.desktop-workbench .desktop-route-shell .detail-card + .section-card,
|
|
.desktop-workbench .desktop-route-shell .section-card + .section-card,
|
|
.desktop-workbench .desktop-route-shell .form-card + .form-card {
|
|
margin-top: 8px !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .toolbar-filters,
|
|
.desktop-workbench .desktop-route-shell .toolbar-right,
|
|
.desktop-workbench .desktop-route-shell .ctms-page-actions,
|
|
.desktop-workbench .desktop-route-shell .ctms-section-actions {
|
|
gap: 8px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-card__header {
|
|
padding: 10px 12px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-card__body {
|
|
padding: 12px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-button {
|
|
min-height: 28px;
|
|
border-radius: 6px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-button--small {
|
|
min-height: 26px;
|
|
padding: 0 8px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-input__wrapper,
|
|
.desktop-workbench .desktop-route-shell .el-select .el-input__wrapper,
|
|
.desktop-workbench .desktop-route-shell .el-textarea__inner {
|
|
border-radius: 6px;
|
|
min-height: 30px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-form-item {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-form-item__label,
|
|
.desktop-workbench .desktop-route-shell .filter-label,
|
|
.desktop-workbench .desktop-route-shell .ctms-filter-label {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .form-section {
|
|
padding-bottom: 4px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .form-section + .form-section {
|
|
margin-top: 14px;
|
|
padding-top: 14px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .form-section-title,
|
|
.desktop-workbench .desktop-route-shell .ctms-section-title {
|
|
margin-bottom: 10px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .page-bg-dots,
|
|
.desktop-workbench .desktop-route-shell .decorative-bg,
|
|
.desktop-workbench .desktop-route-shell .hero-decoration {
|
|
display: none !important;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .unified-action-bar,
|
|
.desktop-workbench .desktop-route-shell .module-header {
|
|
min-height: 0;
|
|
padding: 10px 12px;
|
|
border-bottom: 1px solid #d9e2ec;
|
|
background: #ffffff;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .module-title {
|
|
font-size: 14px;
|
|
font-weight: 750;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .module-subtitle {
|
|
margin-top: 2px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .module-content,
|
|
.desktop-workbench .desktop-route-shell .unified-section {
|
|
padding: 12px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .module-placeholder-surface {
|
|
min-height: 118px;
|
|
border: 1px dashed #cbd7e5;
|
|
border-radius: 6px;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .module-placeholder-main {
|
|
color: #475569;
|
|
font-size: 13px;
|
|
font-weight: 650;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-table th.el-table__cell {
|
|
height: 34px;
|
|
padding: 8px 10px;
|
|
border-bottom: 1px solid #d9e2ec !important;
|
|
background: #f4f7fa;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-table td.el-table__cell {
|
|
padding: 7px 10px;
|
|
border-bottom-color: #edf1f5;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-table--enable-row-hover .el-table__row:hover > td.el-table__cell {
|
|
background-color: #eef4fa;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-descriptions__cell {
|
|
padding: 8px 10px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-pagination {
|
|
--el-pagination-button-height: 26px;
|
|
--el-pagination-button-width: 26px;
|
|
gap: 4px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-radio-button__inner {
|
|
min-height: 26px;
|
|
padding: 5px 10px;
|
|
border-radius: 5px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-drawer__header {
|
|
margin-bottom: 0;
|
|
padding: 14px 18px 8px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-drawer__body {
|
|
padding: 0 18px 4px;
|
|
}
|
|
|
|
.desktop-workbench .desktop-route-shell .el-drawer__footer {
|
|
padding: 10px 18px 14px;
|
|
border-top: 1px solid #d9e2ec;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .el-card,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .unified-shell,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-state,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-section-card,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-table-card,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .table-card,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .detail-card,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .stats-card,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .notifications-card,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .hero-card,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .hero-banner,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .faq-hero {
|
|
border-color: #26364a;
|
|
background: #172033;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .hero-stat,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .hero-status-item {
|
|
border-color: #26364a;
|
|
background: #111827 !important;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .table-card-toolbar,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-page-header,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-section-header,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .unified-action-bar,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .module-header,
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .el-drawer__footer {
|
|
border-color: #26364a;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .module-placeholder-surface {
|
|
border-color: #31435b;
|
|
background: #111827;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .el-table th.el-table__cell {
|
|
border-bottom-color: #26364a !important;
|
|
background: #111827;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .el-table td.el-table__cell {
|
|
border-bottom-color: #26364a;
|
|
}
|
|
|
|
/* ============================================================
|
|
* 全局弹窗定位修复:弹窗仅显示在主内容区域,不覆盖左侧菜单栏
|
|
* --ctms-sidebar-width 由 Layout.vue 在 body 上动态设置
|
|
* ============================================================ */
|
|
|
|
/* ElMessage 提示消息:按“主内容区域”居中(而非全窗口/左上角) */
|
|
.el-message {
|
|
left: calc((100% + var(--ctms-sidebar-width, 0px)) / 2) !important;
|
|
margin-left: 0 !important;
|
|
transform: translateX(-50%) !important;
|
|
}
|
|
|
|
/* ElMessageBox / ElDialog 遮罩层:左侧偏移侧边栏宽度,只覆盖主内容区域 */
|
|
.el-overlay {
|
|
left: var(--ctms-sidebar-width, 0px) !important;
|
|
}
|
|
|
|
/* Desktop runtime modal surfaces */
|
|
body.is-desktop-runtime .el-message {
|
|
left: 50% !important;
|
|
min-height: 32px;
|
|
padding: 8px 12px;
|
|
border: 1px solid rgba(148, 163, 184, 0.32);
|
|
border-radius: 8px;
|
|
background: rgba(248, 250, 252, 0.96);
|
|
box-shadow: 0 16px 42px rgba(15, 23, 42, 0.16);
|
|
backdrop-filter: blur(16px) saturate(140%);
|
|
}
|
|
|
|
body.is-desktop-runtime .el-overlay {
|
|
left: 0 !important;
|
|
background: rgba(15, 23, 42, 0.22);
|
|
backdrop-filter: blur(12px) saturate(135%);
|
|
}
|
|
|
|
body.is-desktop-runtime .el-overlay-dialog,
|
|
body.is-desktop-runtime .el-overlay-message-box {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 52px 32px 32px;
|
|
overflow: auto;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-dialog,
|
|
body.is-desktop-runtime .el-message-box {
|
|
overflow: hidden;
|
|
margin: 0 auto !important;
|
|
border: 1px solid rgba(148, 163, 184, 0.42);
|
|
border-radius: 12px;
|
|
background: rgba(248, 250, 252, 0.98);
|
|
box-shadow:
|
|
0 28px 84px rgba(15, 23, 42, 0.26),
|
|
0 1px 0 rgba(255, 255, 255, 0.82) inset;
|
|
backdrop-filter: blur(18px) saturate(145%);
|
|
color: #0f172a;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-dialog {
|
|
max-width: min(calc(100vw - 72px), var(--el-dialog-width, 960px));
|
|
}
|
|
|
|
/* profile-settings-dialog / desktop-preferences-dialog:移除外层卡片外壳,内容区自带圆角阴影 */
|
|
body.is-desktop-runtime .profile-settings-dialog,
|
|
body.is-desktop-runtime .desktop-preferences-dialog {
|
|
overflow: visible !important;
|
|
border: none !important;
|
|
border-radius: 0 !important;
|
|
background: transparent !important;
|
|
box-shadow: none !important;
|
|
backdrop-filter: none !important;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-message-box {
|
|
width: min(420px, calc(100vw - 72px));
|
|
padding: 0;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-dialog__header,
|
|
body.is-desktop-runtime .el-message-box__header {
|
|
min-height: 38px;
|
|
margin: 0;
|
|
padding: 10px 42px 9px 14px;
|
|
border-bottom: 1px solid rgba(203, 213, 225, 0.82);
|
|
background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(241, 245, 249, 0.92));
|
|
}
|
|
|
|
body.is-desktop-runtime .el-dialog__title,
|
|
body.is-desktop-runtime .el-message-box__title {
|
|
color: #0f172a;
|
|
font-size: 13px;
|
|
font-weight: 750;
|
|
line-height: 18px;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-dialog__headerbtn,
|
|
body.is-desktop-runtime .el-message-box__headerbtn {
|
|
top: 0;
|
|
right: 0;
|
|
width: 40px;
|
|
height: 38px;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-dialog__headerbtn .el-dialog__close,
|
|
body.is-desktop-runtime .el-message-box__headerbtn .el-message-box__close {
|
|
color: #64748b;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-dialog__body {
|
|
padding: 14px;
|
|
color: #334155;
|
|
font-size: 13px;
|
|
}
|
|
|
|
body.is-desktop-runtime .desktop-preferences-dialog {
|
|
background: transparent !important;
|
|
box-shadow: none !important;
|
|
border-radius: 0 !important;
|
|
}
|
|
|
|
body.is-desktop-runtime .desktop-preferences-dialog .el-dialog__body {
|
|
padding: 0;
|
|
background: transparent !important;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-dialog__footer,
|
|
body.is-desktop-runtime .el-message-box__btns {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
padding: 10px 14px 12px;
|
|
border-top: 1px solid rgba(226, 232, 240, 0.92);
|
|
background: rgba(241, 245, 249, 0.76);
|
|
}
|
|
|
|
body.is-desktop-runtime .el-message-box__content {
|
|
padding: 16px 14px 14px;
|
|
color: #334155;
|
|
font-size: 13px;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-message-box__message {
|
|
color: #334155;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-message-box__status {
|
|
font-size: 18px !important;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-message-box__input {
|
|
padding-top: 10px;
|
|
}
|
|
|
|
body.is-desktop-runtime .el-dialog__footer .el-button,
|
|
body.is-desktop-runtime .el-message-box__btns .el-button {
|
|
min-height: 28px;
|
|
padding: 0 12px;
|
|
border-radius: 6px;
|
|
font-size: 13px;
|
|
font-weight: 650;
|
|
}
|
|
|
|
body.is-desktop-runtime .dialog-fade-enter-active .el-dialog,
|
|
body.is-desktop-runtime .dialog-fade-leave-active .el-dialog,
|
|
body.is-desktop-runtime .msgbox-fade-enter-active .el-message-box,
|
|
body.is-desktop-runtime .msgbox-fade-leave-active .el-message-box {
|
|
transition: opacity 130ms ease, transform 150ms ease;
|
|
}
|
|
|
|
body.is-desktop-runtime .dialog-fade-enter-from .el-dialog,
|
|
body.is-desktop-runtime .dialog-fade-leave-to .el-dialog,
|
|
body.is-desktop-runtime .msgbox-fade-enter-from .el-message-box,
|
|
body.is-desktop-runtime .msgbox-fade-leave-to .el-message-box {
|
|
opacity: 0;
|
|
transform: translateY(-8px) scale(0.985);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message {
|
|
border-color: rgba(71, 85, 105, 0.7);
|
|
background: rgba(17, 24, 39, 0.94);
|
|
box-shadow: 0 16px 42px rgba(0, 0, 0, 0.36);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-overlay {
|
|
background: rgba(2, 6, 23, 0.42);
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog,
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box {
|
|
border-color: rgba(51, 65, 85, 0.92);
|
|
background: rgba(17, 24, 39, 0.98);
|
|
box-shadow:
|
|
0 28px 84px rgba(0, 0, 0, 0.42),
|
|
0 1px 0 rgba(148, 163, 184, 0.12) inset;
|
|
color: #e5edf7;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .desktop-preferences-dialog,
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .desktop-preferences-dialog .el-dialog__body {
|
|
background: transparent !important;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog__header,
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__header {
|
|
border-bottom-color: rgba(51, 65, 85, 0.92);
|
|
background: linear-gradient(180deg, rgba(30, 41, 59, 0.96), rgba(17, 24, 39, 0.94));
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog__title,
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__title {
|
|
color: #e5edf7;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog__body,
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__content,
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__message {
|
|
color: #cbd5e1;
|
|
}
|
|
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog__footer,
|
|
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__btns {
|
|
border-top-color: rgba(51, 65, 85, 0.92);
|
|
background: rgba(15, 23, 42, 0.78);
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
body.is-desktop-runtime .dialog-fade-enter-active .el-dialog,
|
|
body.is-desktop-runtime .dialog-fade-leave-active .el-dialog,
|
|
body.is-desktop-runtime .msgbox-fade-enter-active .el-message-box,
|
|
body.is-desktop-runtime .msgbox-fade-leave-active .el-message-box {
|
|
transition-duration: 1ms !important;
|
|
}
|
|
}
|