|
|
@@ -133,3 +133,231 @@
|
|
|
border-radius: var(--radius-sm);
|
|
|
font-size: 12px;
|
|
|
}
|
|
|
+
|
|
|
+/* ===== v2 信息架构通用组件 ===== */
|
|
|
+
|
|
|
+/* 工具栏顶栏(替代 page-hero)*/
|
|
|
+.data-toolbar {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 12px;
|
|
|
+ height: var(--toolbar-height);
|
|
|
+ padding: 0 16px;
|
|
|
+ background: var(--toolbar-bg);
|
|
|
+ border-bottom: 1px solid var(--toolbar-border);
|
|
|
+ font-size: var(--font-size-base, 14px);
|
|
|
+}
|
|
|
+.data-toolbar__title {
|
|
|
+ font-size: 13px;
|
|
|
+ font-weight: 600;
|
|
|
+ color: var(--color-text);
|
|
|
+ letter-spacing: 0.2px;
|
|
|
+}
|
|
|
+.data-toolbar__sep {
|
|
|
+ color: var(--toolbar-border);
|
|
|
+}
|
|
|
+.data-toolbar__meta {
|
|
|
+ color: var(--color-text-secondary);
|
|
|
+ font-size: 12px;
|
|
|
+}
|
|
|
+.data-toolbar__spacer {
|
|
|
+ margin-left: auto;
|
|
|
+}
|
|
|
+
|
|
|
+/* 状态标签(色点 + 文字,复用现有 .status-dot)*/
|
|
|
+.status-label {
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 5px;
|
|
|
+ font-size: 11px;
|
|
|
+ font-weight: 500;
|
|
|
+}
|
|
|
+
|
|
|
+/* 大写小字标签 */
|
|
|
+.uppercase-label {
|
|
|
+ text-transform: var(--label-uppercase);
|
|
|
+ letter-spacing: var(--label-letter-spacing);
|
|
|
+ font-size: var(--label-font-size);
|
|
|
+ font-weight: 600;
|
|
|
+ color: var(--color-text-muted);
|
|
|
+}
|
|
|
+
|
|
|
+/* 区段色带标题 */
|
|
|
+.section-band {
|
|
|
+ padding: 7px 14px;
|
|
|
+ background: var(--section-band-bg);
|
|
|
+ color: var(--section-band-color);
|
|
|
+ font-size: var(--section-band-font-size);
|
|
|
+ font-weight: 700;
|
|
|
+ letter-spacing: var(--section-band-letter-spacing);
|
|
|
+ border-bottom: 1px solid var(--table-border);
|
|
|
+}
|
|
|
+
|
|
|
+/* 表格化数据容器 */
|
|
|
+.data-table {
|
|
|
+ width: 100%;
|
|
|
+ font-size: 12px;
|
|
|
+ background: var(--color-surface);
|
|
|
+}
|
|
|
+.data-table__header {
|
|
|
+ display: grid;
|
|
|
+ padding: 7px 16px;
|
|
|
+ background: var(--table-header-bg);
|
|
|
+ border-bottom: 1px solid var(--toolbar-border);
|
|
|
+ text-transform: var(--label-uppercase);
|
|
|
+ letter-spacing: var(--label-letter-spacing);
|
|
|
+ font-size: var(--label-font-size);
|
|
|
+ font-weight: 600;
|
|
|
+ color: var(--color-text-muted);
|
|
|
+}
|
|
|
+.data-table__row {
|
|
|
+ display: grid;
|
|
|
+ align-items: center;
|
|
|
+ padding: 7px 16px;
|
|
|
+ border-bottom: 1px solid var(--table-border);
|
|
|
+ min-height: var(--table-row-height-compact);
|
|
|
+ position: relative;
|
|
|
+}
|
|
|
+.data-table__row--group {
|
|
|
+ background: var(--table-row-group-bg);
|
|
|
+ font-weight: 600;
|
|
|
+ min-height: var(--table-row-height);
|
|
|
+}
|
|
|
+.data-table__row--child {
|
|
|
+ padding-left: 44px;
|
|
|
+ color: var(--color-text-secondary);
|
|
|
+}
|
|
|
+.data-table__row--child::before {
|
|
|
+ content: '└';
|
|
|
+ position: absolute;
|
|
|
+ margin-left: -20px;
|
|
|
+ color: var(--color-text-muted);
|
|
|
+}
|
|
|
+.data-table__row:hover {
|
|
|
+ background: var(--table-row-hover);
|
|
|
+}
|
|
|
+.data-table__row--clickable {
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+/* 三列对照网格(评分页)*/
|
|
|
+.compare-grid-3 {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: 1.4fr 70px 1fr;
|
|
|
+ align-items: center;
|
|
|
+ padding: 7px 14px;
|
|
|
+ border-bottom: 1px solid var(--table-border);
|
|
|
+ min-height: var(--table-row-height-compact);
|
|
|
+}
|
|
|
+.compare-grid-3__self {
|
|
|
+ text-align: center;
|
|
|
+ font-weight: 700;
|
|
|
+ font-size: 13px;
|
|
|
+}
|
|
|
+.compare-grid-3__header {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: 1.4fr 70px 1fr;
|
|
|
+ padding: 6px 14px;
|
|
|
+ background: var(--table-header-bg);
|
|
|
+ border-bottom: 1px solid var(--toolbar-border);
|
|
|
+ text-transform: var(--label-uppercase);
|
|
|
+ letter-spacing: var(--label-letter-spacing);
|
|
|
+ font-size: var(--label-font-size);
|
|
|
+ font-weight: 600;
|
|
|
+ color: var(--color-text-muted);
|
|
|
+}
|
|
|
+
|
|
|
+/* 水平数据条(构成展示)*/
|
|
|
+.metric-bar {
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+.metric-bar__head {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-bottom: 4px;
|
|
|
+ font-size: 12px;
|
|
|
+}
|
|
|
+.metric-bar__label {
|
|
|
+ color: var(--color-text);
|
|
|
+ font-weight: 500;
|
|
|
+}
|
|
|
+.metric-bar__value {
|
|
|
+ color: var(--color-text);
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+.metric-bar__value--muted {
|
|
|
+ color: var(--color-text-muted);
|
|
|
+ font-weight: 400;
|
|
|
+}
|
|
|
+.metric-bar__track {
|
|
|
+ height: 5px;
|
|
|
+ background: var(--color-border-soft);
|
|
|
+ border-radius: 3px;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+.metric-bar__fill {
|
|
|
+ height: 100%;
|
|
|
+ border-radius: 3px;
|
|
|
+}
|
|
|
+
|
|
|
+/* 侧边抽屉内容区 */
|
|
|
+.side-drawer__content {
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+
|
|
|
+/* 底部固定总览栏(评分页)*/
|
|
|
+.review-summary-bar {
|
|
|
+ position: sticky;
|
|
|
+ bottom: 0;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 16px;
|
|
|
+ padding: 10px 14px;
|
|
|
+ background: var(--toolbar-bg);
|
|
|
+ border-top: 2px solid var(--color-brand);
|
|
|
+ z-index: 10;
|
|
|
+}
|
|
|
+.review-summary-bar__score {
|
|
|
+ font-size: 20px;
|
|
|
+ font-weight: 700;
|
|
|
+ color: var(--color-brand-strong);
|
|
|
+}
|
|
|
+
|
|
|
+/* 下划线式输入框(登录页,覆盖 Element Plus)*/
|
|
|
+.underline-input :deep(.el-input__wrapper) {
|
|
|
+ background: transparent;
|
|
|
+ box-shadow: none;
|
|
|
+ border-radius: 0;
|
|
|
+ border-bottom: 1px solid var(--toolbar-border);
|
|
|
+ padding: 4px 0;
|
|
|
+}
|
|
|
+.underline-input :deep(.el-input__wrapper.is-focus),
|
|
|
+.underline-input :deep(.el-input__wrapper:hover) {
|
|
|
+ border-bottom-color: var(--color-accent);
|
|
|
+ box-shadow: none;
|
|
|
+}
|
|
|
+.underline-input :deep(.el-input__inner) {
|
|
|
+ border: none;
|
|
|
+}
|
|
|
+
|
|
|
+/* 历史趋势 mini bar chart */
|
|
|
+.history-trend {
|
|
|
+ display: flex;
|
|
|
+ align-items: flex-end;
|
|
|
+ gap: 16px;
|
|
|
+ height: 48px;
|
|
|
+}
|
|
|
+.history-trend__item {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
+ gap: 4px;
|
|
|
+}
|
|
|
+.history-trend__bar {
|
|
|
+ width: 24px;
|
|
|
+ border-radius: 2px;
|
|
|
+ background: var(--color-text-muted);
|
|
|
+}
|
|
|
+.history-trend__bar--current {
|
|
|
+ background: var(--color-brand);
|
|
|
+}
|