Files
inquiry_robot/inquiry-backend/src/views/inquiry/styles/admin-fidelity.css
T

1632 lines
36 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 原型保真覆盖层:按原型截图密度压紧壳层与看板。
* 加载顺序须在 admin-prototype.css、dashboard-prototype.css 之后。
*/
/* ---- 全局:禁止整页横向滚动条(看板气泡/顶栏曾把文档撑宽) ---- */
html,
body,
#app {
width: 100%;
max-width: 100%;
overflow-x: hidden;
}
body {
font-size: 11px !important;
letter-spacing: 0 !important;
line-height: 1.45 !important;
}
.admin-shell {
background: #f7f8fb;
grid-template-columns: 220px minmax(0, 1fr) !important;
width: 100%;
max-width: 100%;
/* 锁视口:避免 html overflow:hidden 裁切后整页既无文档滚、内容区又不内滚 */
height: 100vh !important;
max-height: 100vh !important;
min-height: 0 !important;
overflow: hidden !important;
}
.main-stage {
background: #f7f8fb !important;
min-width: 0 !important;
/*
* 中间主区 = 滚动容器(看板/非列表页)。
* 实测仅改 .admin-content 在生产壳层仍会被裁切且无条;改由本列横竖自滚最稳。
*/
height: 100vh !important;
max-height: 100vh !important;
min-height: 0 !important;
overflow-x: auto !important;
overflow-y: scroll !important;
scrollbar-gutter: stable;
-webkit-overflow-scrolling: touch;
display: flex !important;
flex-direction: column !important;
}
.main-stage {
scrollbar-width: thin;
scrollbar-color: #cbd5e1 transparent;
}
.main-stage::-webkit-scrollbar {
width: 6px;
height: 6px;
}
.main-stage::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 999px;
border: 1px solid transparent;
background-clip: padding-box;
}
.main-stage::-webkit-scrollbar-thumb:hover {
background: #94a3b8;
background-clip: padding-box;
}
.main-stage::-webkit-scrollbar-track {
background: transparent;
}
.main-stage::-webkit-scrollbar-corner {
background: transparent;
}
.admin-content {
padding: 16px 16px 40px !important;
gap: 12px !important;
min-width: 0 !important;
/* 随内容增高/增宽;滚动条在 .main-stage */
flex: 0 0 auto !important;
height: auto !important;
max-height: none !important;
min-height: 0 !important;
overflow: visible !important;
}
/* 列表页:主区不滚,仍由表格区内滚(工单/账号等) */
.main-stage:has(.is-list-page) {
overflow: hidden !important;
}
.main-stage:has(.is-list-page) .admin-content {
flex: 1 1 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: none !important;
overflow: hidden !important;
}
/*
* 侧栏品牌与主区顶栏:同高,底部分隔线左右对齐成一条水平线。
* 原先 brand 约 58px、topbar min 52px,底边错位。
*/
.admin-brand,
.admin-topbar {
box-sizing: border-box !important;
height: 56px !important;
min-height: 56px !important;
max-height: 56px !important;
display: flex !important;
align-items: center !important;
border-bottom: 1px solid #e8edf4 !important;
/* 中间主区滚动时顶栏吸顶,不跟着内容滚走 */
position: sticky !important;
top: 0 !important;
z-index: 40 !important;
flex-shrink: 0 !important;
background: rgba(255, 255, 255, 0.96) !important;
}
.admin-brand {
gap: 10px !important;
padding: 0 14px !important;
}
.admin-brand-icon {
width: 32px !important;
height: 32px !important;
border-radius: 7px !important;
background: #1d4ed8 !important;
}
.admin-brand-title {
font-size: 11px !important;
font-weight: 900 !important;
line-height: 1.25 !important;
white-space: normal !important;
flex: 1;
min-width: 0;
}
.admin-nav {
padding: 4px 0 16px !important;
}
.admin-nav-group-title {
padding: 10px 14px 4px !important;
font-size: 9px !important;
font-weight: 800 !important;
letter-spacing: 0.05em !important;
}
.admin-nav-link {
gap: 8px !important;
margin: 1px 8px !important;
padding: 0 10px !important;
min-height: 34px !important;
height: 34px !important;
border-radius: 7px !important;
font-size: 11px !important;
font-weight: 700 !important;
width: calc(100% - 16px) !important;
}
.admin-nav-icon,
.admin-nav-link .proto-icon {
width: 15px !important;
height: 15px !important;
}
.admin-nav-badge {
font-size: 9px !important;
font-weight: 800 !important;
padding: 0 6px !important;
min-height: 16px !important;
line-height: 16px !important;
}
/* ---- 顶栏:高度已与 .admin-brand 统一为 56px ---- */
.admin-topbar {
padding: 0 14px !important;
gap: 12px !important;
min-width: 0 !important;
flex-shrink: 0 !important;
/* 允许用户下拉露出;业务 Teleport 区单独 overflow:hidden 防幽灵点击层 */
overflow: visible !important;
}
.admin-topbar h1 {
margin: 0 !important;
font-size: 13px !important;
font-weight: 800 !important;
letter-spacing: 0 !important;
line-height: 1.2 !important;
color: #101828 !important;
}
.admin-topbar-actions {
gap: 8px !important;
min-width: 0 !important;
flex: 0 1 auto !important;
justify-content: flex-end;
flex-wrap: nowrap !important;
max-width: min(72%, 720px);
position: relative;
z-index: 40;
pointer-events: auto !important;
}
.admin-user-chip {
display: none !important;
}
/* 业务顶栏按钮:36(不再用 44 把顶栏撑高) */
.admin-topbar-actions .btn:not(.dash-refresh-btn) {
min-height: 34px !important;
height: 34px !important;
padding: 0 12px !important;
font-size: 11px !important;
font-weight: 700 !important;
border-radius: 7px !important;
}
/* 看板日期 / 更新时间 / 更新数据:34 */
.admin-topbar-actions .dash-refresh-btn,
.admin-topbar-actions .month-range-input,
.admin-topbar-actions .dashboard-data-note,
.month-range-input,
.dashboard-data-note {
min-height: 34px !important;
height: 34px !important;
}
.month-range-input {
padding: 0 12px !important;
border-radius: 7px !important;
font-size: 11px !important;
font-weight: 700 !important;
gap: 8px !important;
}
.dashboard-data-note {
padding: 0 10px 0 8px !important;
font-size: 10px !important;
font-weight: 700 !important;
gap: 6px !important;
}
.admin-topbar-actions .ant-btn {
height: 34px !important;
min-height: 34px !important;
}
.admin-topbar-actions .dash-refresh-btn.ant-btn {
height: 34px !important;
min-height: 34px !important;
}
.page-topbar-actions-slot {
gap: 8px !important;
min-height: 34px !important;
/* 勿 max-height + overflow:hidden:会裁掉看板日期下拉,看起来像不能选 */
max-height: none !important;
position: relative !important;
z-index: 40 !important;
pointer-events: auto !important;
overflow: visible !important;
flex-wrap: nowrap !important;
}
.page-topbar-actions-slot .dash-topbar-tools,
.page-topbar-actions-slot .month-range-picker,
.page-topbar-actions-slot .toolbar-date-range {
position: relative !important;
overflow: visible !important;
z-index: 50 !important;
}
.page-topbar-actions-slot .month-range-dropdown,
.page-topbar-actions-slot .dash-picker-dropdown {
z-index: 90 !important;
}
.page-topbar-actions-slot .btn {
pointer-events: auto !important;
cursor: pointer !important;
position: relative;
z-index: 41;
}
/* ---- 工具栏(原生 select + search) ---- */
.toolbar {
display: flex !important;
flex-wrap: wrap !important;
align-items: center !important;
gap: 10px !important;
padding: 14px 16px !important;
border: 1px solid var(--line) !important;
border-radius: 12px !important;
background: #ffffff !important;
}
.toolbar select {
height: 38px !important;
box-sizing: border-box !important;
margin: 0 !important;
border: 1px solid var(--line) !important;
background: #ffffff !important;
border-radius: 8px !important;
padding: 0 28px 0 12px !important;
font-size: 11px !important;
font-weight: 700 !important;
color: #344054 !important;
cursor: pointer !important;
flex-shrink: 0 !important;
outline: none;
}
.toolbar select:focus {
border-color: #155eef !important;
box-shadow: 0 0 0 3px rgba(21, 94, 239, 0.12) !important;
}
.toolbar .search {
position: relative !important;
display: flex !important;
align-items: center !important;
flex: 1 1 240px !important;
max-width: 360px !important;
height: 38px !important;
border: 1px solid var(--line) !important;
border-radius: 8px !important;
background: #f8fafc !important;
padding: 0 !important;
}
.toolbar .search .search-icon,
.toolbar .search > svg,
.toolbar .search .proto-icon {
position: absolute !important;
left: 10px !important;
top: 50% !important;
transform: translateY(-50%) !important;
color: #98a2b3 !important;
width: 16px !important;
height: 16px !important;
pointer-events: none !important;
z-index: 1 !important;
}
.toolbar .search input {
width: 100% !important;
height: 100% !important;
border: 0 !important;
outline: 0 !important;
background: transparent !important;
padding: 0 12px 0 34px !important;
font-size: 11.5px !important;
font-weight: 400 !important;
color: #1d2939 !important;
line-height: 1.25 !important;
}
.toolbar .search:focus-within {
border-color: #155eef !important;
box-shadow: 0 0 0 3px rgba(21, 94, 239, 0.12) !important;
}
/* 日期范围:Ant RangePicker,一次弹层点选起止;外观对齐工具栏 select */
.toolbar-date-range {
display: inline-flex;
align-items: center;
flex-shrink: 0;
height: 38px;
}
.toolbar-date-range .toolbar-range-picker.ant-picker,
.toolbar-date-range .ant-picker {
height: 38px !important;
padding: 0 12px !important;
border: 1px solid var(--line) !important;
border-radius: 8px !important;
background: #ffffff !important;
box-shadow: none !important;
transition: border-color 0.15s ease, box-shadow 0.15s ease !important;
}
.toolbar-date-range .ant-picker:hover {
border-color: #98a2b3 !important;
}
.toolbar-date-range .ant-picker-focused,
.toolbar-date-range .ant-picker:focus,
.toolbar-date-range .ant-picker.ant-picker-focused {
border-color: #155eef !important;
box-shadow: 0 0 0 3px rgba(21, 94, 239, 0.12) !important;
}
.toolbar-date-range .ant-picker-input > input {
font-size: 11px !important;
font-weight: 700 !important;
color: #344054 !important;
cursor: pointer !important;
}
.toolbar-date-range .ant-picker-input > input::placeholder {
color: #98a2b3 !important;
font-weight: 600 !important;
}
.toolbar-date-range .ant-picker-separator {
color: #98a2b3 !important;
font-size: 11px !important;
font-weight: 600 !important;
padding: 0 4px !important;
}
.toolbar-date-range .ant-picker-suffix {
color: #98a2b3 !important;
margin-left: 4px !important;
}
.toolbar-date-range .ant-picker-clear {
background: #ffffff !important;
}
.toolbar .toolbar-actions .btn {
min-height: 38px !important;
height: 38px !important;
padding: 0 12px !important;
font-size: 11px !important;
}
/* ---- 表格 ---- */
.table-wrap {
overflow-x: auto;
overflow-y: visible;
-webkit-overflow-scrolling: touch;
border: 1px solid var(--line);
border-radius: 8px;
background: #ffffff;
}
.data-table {
width: 100%;
min-width: 720px;
border-collapse: separate !important;
border-spacing: 0 !important;
font-size: 11px !important;
}
.data-table th {
height: 36px !important;
padding: 0 12px !important;
font-size: 10px !important;
font-weight: 800 !important;
letter-spacing: 0 !important;
vertical-align: middle !important;
background: #f8fafc;
color: #475467;
text-align: left;
white-space: nowrap;
border-bottom: 1px solid var(--line);
}
.data-table td {
height: 48px !important;
padding: 0 12px !important;
font-size: 11px !important;
font-weight: 400 !important;
vertical-align: middle !important;
line-height: 1.4 !important;
border-bottom: 1px solid #edf2f7;
color: #1d2939;
background: #fff;
}
.data-table tr:hover td {
background: #f8fbff;
}
/*
* 所有后台列表:首列、尾列横向滚动时固定。
* 用 :first-child / :last-child,各页无需再单独加 class。
*/
.table-wrap .data-table th:first-child,
.table-wrap .data-table td:first-child {
position: sticky;
left: 0;
z-index: 3;
background: #fff;
box-shadow: 6px 0 10px -8px rgba(15, 23, 42, 0.28);
}
.table-wrap .data-table thead th:first-child {
z-index: 5;
background: #f8fafc;
}
.table-wrap .data-table th:last-child,
.table-wrap .data-table td:last-child {
position: sticky;
right: 0;
z-index: 3;
background: #fff;
box-shadow: -6px 0 10px -8px rgba(15, 23, 42, 0.28);
white-space: nowrap;
}
.table-wrap .data-table thead th:last-child {
z-index: 5;
background: #f8fafc;
}
.table-wrap .data-table tbody tr:hover td:first-child,
.table-wrap .data-table tbody tr:hover td:last-child {
background: #f8fbff;
}
.data-table td.align-top,
.ticket-list-table td.align-top {
vertical-align: top !important;
}
.ticket-list-table th {
height: auto !important;
min-height: 48px !important;
padding: 12px !important;
white-space: normal !important;
line-height: 1.35 !important;
}
.ticket-list-table td,
.ticket-list-table td.align-top {
height: auto !important;
min-height: 84px !important;
padding: 18px 12px !important;
line-height: 1.6 !important;
font-size: 12px !important;
word-break: break-word;
overflow-wrap: anywhere;
}
.ticket-list-table td.col-sticky-left,
.ticket-list-table td.col-sticky-right,
.ticket-list-table th.col-sticky-left,
.ticket-list-table th.col-sticky-right,
.ticket-list-table td.col-quote,
.ticket-list-table td.col-price,
.ticket-list-table td.col-demand {
word-break: normal;
overflow-wrap: break-word;
}
.ticket-list-table .quote-source,
.ticket-list-table .quote-price,
.ticket-list-table .quote-fee-line,
.ticket-list-table .ticket-price-cell {
white-space: nowrap;
}
.ticket-list-table .attach-tags {
gap: 10px !important;
}
.ticket-list-table .attach-tags .tag {
font-size: 10px !important;
}
.ticket-list-table .quote-source {
font-size: 9.5px !important;
}
.ticket-list-table .quote-price {
font-size: 11px !important;
}
.ticket-list-table .ticket-row-actions {
display: inline-flex !important;
flex-direction: row !important;
flex-wrap: nowrap !important;
gap: 8px !important;
align-items: center !important;
min-width: max-content;
}
.ticket-list-table .ticket-row-actions .link-action {
font-size: 10px !important;
font-weight: 800 !important;
white-space: nowrap !important;
flex-shrink: 0 !important;
position: static !important;
display: inline-block !important;
line-height: 1.35 !important;
}
.ticket-list-table th.col-center,
.ticket-list-table td.col-center {
text-align: center;
}
.ticket-list-table th.col-actions,
.ticket-list-table td.col-actions {
white-space: nowrap;
text-align: left;
padding-left: 8px !important;
padding-right: 12px !important;
}
.ticket-page {
overflow-x: hidden;
min-width: 0;
}
.ticket-page .section-card {
padding: 24px !important;
gap: 20px !important;
min-width: 0;
overflow: hidden;
}
.ticket-page .toolbar {
padding: 18px 20px !important;
gap: 12px 16px !important;
}
/* 中间列横滑;左右 sticky 列固定。竖滚改由 .is-list-page 表格区承接,勿再用 visible 把滚动甩给整页 */
.ticket-page .table-wrap,
.ticket-table-scroll {
border-radius: 10px !important;
overflow-x: auto !important;
-webkit-overflow-scrolling: touch;
}
.ticket-list-table {
table-layout: fixed !important;
width: max-content !important;
min-width: 1640px !important;
max-width: none !important;
border-collapse: separate !important;
border-spacing: 0 !important;
}
.ticket-list-table .col-w-id { width: 132px; }
.ticket-list-table .col-w-user { width: 72px; }
.ticket-list-table .col-w-demand { width: 220px; }
.ticket-list-table .col-w-quote { width: 250px; }
.ticket-list-table .col-w-attach { width: 160px; }
.ticket-list-table .col-w-status { width: 84px; }
.ticket-list-table .col-w-price { width: 168px; }
.ticket-list-table .col-w-margin { width: 132px; }
.ticket-list-table .col-w-ex { width: 110px; }
.ticket-list-table .col-w-reason { width: 140px; }
.ticket-list-table .col-w-time { width: 132px; }
.ticket-list-table .col-w-actions { width: 196px; }
.ticket-list-table th.col-sticky-left,
.ticket-list-table td.col-sticky-left {
position: sticky !important;
left: 0;
z-index: 3;
background: #fff !important;
box-shadow: 6px 0 10px -8px rgba(15, 23, 42, 0.28);
min-width: 132px;
width: 132px;
}
.ticket-list-table thead th.col-sticky-left {
z-index: 5;
background: #f8fafc !important;
}
.ticket-list-table th.col-sticky-right,
.ticket-list-table td.col-sticky-right {
position: sticky !important;
right: 0;
z-index: 3;
background: #fff !important;
box-shadow: -6px 0 10px -8px rgba(15, 23, 42, 0.28);
min-width: 196px;
width: 196px;
}
.ticket-list-table thead th.col-sticky-right {
z-index: 5;
background: #f8fafc !important;
}
.ticket-list-table tbody tr:hover td.col-sticky-left,
.ticket-list-table tbody tr:hover td.col-sticky-right {
background: #f8fbff !important;
}
.ticket-page .section-card-title {
font-size: 14px !important;
font-weight: 900 !important;
}
.ticket-price-cell,
.ticket-margin-cell {
font-size: 11px !important;
font-weight: 400 !important;
color: #0f172a !important;
white-space: nowrap;
}
.ticket-price-lines {
display: flex;
flex-direction: column;
gap: 2px;
white-space: normal;
font-size: 11px;
line-height: 1.45;
color: #0f172a;
}
.ticket-price-line.is-total {
font-weight: 800;
}
.ticket-status {
display: inline-flex !important;
align-items: center !important;
min-height: 24px !important;
padding: 0 8px !important;
border-radius: 6px !important;
font-size: 10px !important;
font-weight: 800 !important;
background: #eef4ff !important;
color: #1849a9 !important;
}
.ticket-no {
display: inline-block;
line-height: 1.35;
font-weight: 800;
color: #1d4ed8;
background: none;
border: 0;
padding: 0;
cursor: pointer;
font-size: 12px;
font-family: inherit;
}
.ticket-no:hover {
text-decoration: underline;
}
.link-action {
font-size: 12px !important;
font-weight: 800 !important;
color: #1d4ed8;
background: none;
border: 0;
padding: 0;
cursor: pointer;
font-family: inherit;
}
.link-action.link-danger {
color: #e11d48 !important;
}
.link-action.link-muted {
color: #64748b !important;
font-weight: 700 !important;
}
.quote-source {
font-size: 10px !important;
font-weight: 700 !important;
color: #667085;
}
.quote-price {
font-size: 12px !important;
font-weight: 800 !important;
}
.attach-tags {
display: flex !important;
flex-wrap: wrap !important;
flex-direction: row !important;
gap: 6px !important;
}
.attach-tags .tag {
min-height: 24px !important;
padding: 4px 8px !important;
white-space: normal !important;
word-break: break-all !important;
line-height: 1.35 !important;
}
/* ---- Tag / Switch / Avatar / Tabs ---- */
.tag {
display: inline-flex !important;
align-items: center !important;
gap: 4px !important;
min-height: 22px !important;
padding: 0 8px !important;
border-radius: 6px !important;
font-size: 9.5px !important;
font-weight: 700 !important;
}
.switch {
width: 36px !important;
height: 20px !important;
border: 0;
padding: 0;
cursor: pointer;
}
.switch::after {
width: 16px !important;
height: 16px !important;
top: 2px !important;
left: 2px !important;
}
.switch.is-on::after {
transform: translateX(16px) !important;
}
.avatar-chip {
gap: 8px !important;
}
.avatar-chip .av {
width: 30px !important;
height: 30px !important;
border-radius: 50% !important;
font-size: 10px !important;
}
.tabs-line {
margin-bottom: 0 !important;
width: auto !important;
overflow: visible !important;
}
.tabs-line-bar {
margin-bottom: 12px !important;
}
.tabs-line button {
font-size: 11.5px !important;
font-weight: 800 !important;
padding: 10px 14px !important;
}
.tab-count {
margin-left: 6px !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
border-radius: 999px !important;
padding: 0 6px !important;
min-width: 18px !important;
height: 18px !important;
font-size: 9px !important;
font-weight: 800 !important;
}
.tab-count.is-rose {
background: #ffe4e6 !important;
color: #be123c !important;
}
.tab-count.is-violet {
background: #f4f3ff !important;
color: #5925dc !important;
}
.tab-count.is-teal {
background: #ccfbf1 !important;
color: #0e7490 !important;
}
.tab-count.is-amber {
background: #fef0c7 !important;
color: #93370d !important;
}
.tab-count.is-blue {
background: #dbeafe !important;
color: #1d4ed8 !important;
}
/* ---- 分页 ---- */
.pagination {
display: flex !important;
align-items: center !important;
justify-content: space-between !important;
gap: 12px !important;
padding: 12px 16px !important;
border-top: 1px solid #edf2f7 !important;
background: #ffffff !important;
font-size: 11px !important;
color: #475467 !important;
flex-wrap: wrap !important;
}
.pagination button {
height: 32px !important;
min-width: 32px !important;
border-radius: 6px !important;
font-size: 10.5px !important;
font-weight: 700 !important;
border: 1px solid #e4e7ec !important;
background: #ffffff !important;
color: #344054 !important;
cursor: pointer !important;
padding: 0 8px !important;
}
.pagination .pages button.is-active {
border-color: #155eef !important;
background: #eff4ff !important;
color: #155eef !important;
}
.pagination.admin-pagination {
justify-content: flex-end !important;
}
.pagination .pages {
display: inline-flex;
align-items: center;
gap: 4px;
}
.pagination b {
color: #0f172a;
font-weight: 800;
}
/* ---- section / 权限树 ---- */
.section-card {
padding: 18px 20px !important;
gap: 14px !important;
border-radius: 12px !important;
}
.section-card-title {
font-size: 13px !important;
font-weight: 800 !important;
letter-spacing: 0 !important;
}
.role-perm-summary {
display: flex;
flex-wrap: wrap;
gap: 4px !important;
}
.perm-tree-box {
border-radius: 8px !important;
padding: 8px 0 !important;
background: #ffffff !important;
max-height: 320px !important;
}
/* 统一弹窗内权限树:只滚弹窗外层,避免双滚动条 */
.admin-modal-body .perm-tree-box {
max-height: none !important;
overflow: visible !important;
}
.admin-modal-overlay {
z-index: 1000 !important;
}
.admin-modal-dialog {
max-height: min(640px, calc(100vh - 32px)) !important;
}
.admin-modal-dialog.is-xxl {
max-height: min(88vh, calc(100vh - 32px)) !important;
}
.admin-modal-title {
display: flex;
align-items: center;
gap: 8px;
font-size: 13px !important;
}
.admin-modal-sub,
.admin-modal-label {
font-size: 10.5px !important;
}
.admin-modal-body {
padding: 12px 16px !important;
gap: 10px !important;
}
.admin-modal-body:has(.ticket-detail) {
display: block;
padding: 0 !important;
gap: 0 !important;
}
.admin-modal-footer {
padding: 10px 16px !important;
}
.perm-tree-box .ant-tree {
font-size: 11.5px !important;
font-weight: 700 !important;
background: transparent !important;
}
.perm-tree-box .ant-tree .ant-tree-treenode {
min-height: 32px !important;
padding: 2px 12px !important;
}
/* ---- 看板:压紧密度;Ant h2 默认有 0.5em 底边距会把整块撑高 ---- */
h1,
h2,
h3,
h4,
h5,
h6 {
margin-bottom: 0;
}
.ref-header--compact {
padding: 14px 20px !important;
}
.ref-header--compact .ref-title {
margin: 0 !important;
font-size: 14px !important;
font-weight: 900 !important;
line-height: 1.2 !important;
}
.ref-metrics-grid {
gap: 8px !important;
padding: 12px 16px 16px !important;
}
.ref-metric-card {
padding: 10px 8px !important;
min-height: 68px !important;
gap: 6px !important;
}
.ref-metric-card__label {
font-size: 10px !important;
line-height: 1.3 !important;
}
.ref-metric-card__value {
font-size: 22px !important;
}
.ref-metric-card__value.is-time {
font-size: 18px !important;
}
.ref-charts-section {
gap: 12px !important;
padding: 12px 16px 16px !important;
}
.ref-chart-panel__head {
padding: 10px 14px !important;
}
.ref-chart-panel__body {
padding: 10px 12px 12px !important;
}
.ref-chart {
height: auto !important;
max-height: 240px !important;
aspect-ratio: 760 / 240;
}
.dash-chart-title,
.ref-section-title.dash-chart-title {
font-size: 11px !important;
font-weight: 900 !important;
gap: 6px !important;
}
/* 图表悬停气泡:压到比原型 CSS 更紧,避免长文案撑大 */
.ref-chart-tooltip {
min-width: 0 !important;
max-width: 168px !important;
padding: 4px 7px !important;
border-radius: 6px !important;
box-shadow: 0 6px 14px rgba(15, 23, 42, 0.16) !important;
}
.ref-chart-tooltip .date {
font-size: 9px !important;
font-weight: 800 !important;
line-height: 1.2 !important;
}
.ref-chart-tooltip .value {
margin-top: 1px !important;
font-size: 10px !important;
font-weight: 800 !important;
line-height: 1.3 !important;
}
.ref-chart-tooltip .value-line {
display: block;
font-size: 9px !important;
font-weight: 700 !important;
line-height: 1.3 !important;
}
.dash-picker-dropdown {
width: min(360px, calc(100% - 24px)) !important;
}
.ref-ranking-export-btn {
height: 32px !important;
min-height: 32px !important;
padding: 0 12px !important;
font-size: 11px !important;
}
.admin-content:has(.ref-surface--metrics) {
padding: 14px 14px 36px !important;
gap: 10px !important;
/* 分析看板:内容区不裁切,滚动交给 .main-stage */
overflow: visible !important;
max-height: none !important;
align-content: start !important;
}
/* 看板缩窄时允许卡片/图表收缩,避免右侧被裁且无横滚 */
.admin-content .ref-surface,
.admin-content .ref-charts-section,
.admin-content .ref-metrics-grid,
.admin-content .ref-chart-panel {
min-width: 0 !important;
max-width: 100% !important;
}
/* ---- 话术 ---- */
.reply-category {
border: 1px solid #d9e2ef !important;
border-radius: 12px !important;
background: #fff !important;
padding: 16px !important;
display: grid !important;
gap: 10px !important;
}
.reply-category h2 {
margin: 0 !important;
font-size: 14px !important;
font-weight: 900 !important;
}
.reply-category-desc {
font-size: 10px !important;
color: #667085 !important;
font-weight: 700 !important;
line-height: 1.5 !important;
}
.reply-item {
border: 1px solid #e2e8f0 !important;
border-radius: 10px !important;
padding: 12px !important;
background: #f8fafc !important;
display: flex !important;
justify-content: space-between !important;
gap: 12px !important;
}
.reply-text {
margin-top: 4px !important;
font-size: 12px !important;
font-weight: 400 !important;
line-height: 1.6 !important;
color: #172033 !important;
}
.reply-meta {
font-size: 10px !important;
font-weight: 800 !important;
color: #667085 !important;
}
.btn.btn-ghost.btn-icon-sm {
min-height: 32px !important;
height: 32px !important;
width: 32px !important;
padding: 0 !important;
}
/* ---- Ant 模态内控件(全局压到原型密度;禁止 38/40 撑爆视口) ---- */
.ant-modal {
max-width: calc(100vw - 32px) !important;
}
.ant-modal .ant-modal-content {
max-height: calc(100vh - 32px) !important;
display: flex !important;
flex-direction: column !important;
}
.ant-modal .ant-modal-body {
overflow-y: auto !important;
max-height: none !important;
flex: 1 1 auto !important;
padding: 14px 18px !important;
}
.ant-modal .ant-modal-header {
padding: 12px 18px !important;
}
.ant-modal .ant-modal-footer {
padding: 10px 18px !important;
flex-shrink: 0 !important;
}
.ant-modal .ant-modal-title {
font-size: 13px !important;
font-weight: 800 !important;
}
.ant-modal .ant-form-item {
margin-bottom: 10px !important;
}
.ant-modal .ant-form-item-label > label {
font-size: 10.5px !important;
font-weight: 800 !important;
height: auto !important;
}
.ant-modal .ant-input,
.ant-modal .ant-input-affix-wrapper,
.ant-modal .ant-select-selector,
.ant-modal .ant-input-password {
min-height: 34px !important;
height: 34px !important;
font-size: 11px !important;
}
.ant-modal .ant-btn {
height: 32px !important;
font-size: 10.5px !important;
}
.login-card .ant-btn-lg {
height: 40px !important;
}
.admin-content .ant-space {
gap: 12px !important;
}
/* ---- 全局再压一档:与原型截图一比一(相对 HTML 原型约 −2px) ---- */
html {
font-size: 11px !important;
}
.btn,
.admin-topbar-actions .btn,
.page-topbar-actions-slot .btn {
min-height: 32px !important;
height: 32px !important;
padding: 0 10px !important;
font-size: 10.5px !important;
border-radius: 6px !important;
}
.link-action {
font-size: 10.5px !important;
}
.tag {
font-size: 9.5px !important;
padding: 1px 7px !important;
min-height: 18px !important;
line-height: 16px !important;
}
.pagination {
font-size: 10.5px !important;
}
.pagination .pages button {
min-width: 28px !important;
height: 28px !important;
font-size: 10.5px !important;
}
/* 报价模板弹窗 / 原生 modal */
.qt-modal-head {
padding: 14px 18px !important;
}
.qt-modal-title {
font-size: 13px !important;
font-weight: 800 !important;
}
.qt-modal-sub {
font-size: 10px !important;
}
.qt-modal-icon {
width: 28px !important;
height: 28px !important;
border-radius: 7px !important;
}
.qt-create-modal-body,
.qt-preview-modal-body {
padding: 14px 18px !important;
gap: 12px !important;
min-height: 0 !important;
overflow-y: auto !important;
flex: 1 1 auto !important;
}
.modal-dialog {
border-radius: 12px !important;
max-height: min(760px, calc(100vh - 32px)) !important;
display: flex !important;
flex-direction: column !important;
min-height: 0 !important;
}
.qt-create-modal-footer,
.qt-preview-modal-footer {
padding: 10px 18px !important;
flex-shrink: 0 !important;
}
.qt-create-row {
grid-template-columns: 72px minmax(0, 1fr) !important;
gap: 10px !important;
}
.qt-create-row label {
font-size: 10.5px !important;
}
.qt-create-row .field,
.qt-create-form .field {
min-height: 34px !important;
height: 34px !important;
font-size: 11px !important;
border-radius: 7px !important;
}
.qt-parse-banner-title {
font-size: 11px !important;
}
.qt-parse-banner-desc,
.qt-upload-hint,
.qt-file-sub,
.qt-preview-foot-hint,
.qt-paper-note {
font-size: 10px !important;
}
/**
* 报价模板预览截图:强制等比例(宽高同比例缩放),覆盖任何全局 img 拉满规则。
* 为何写在 fidelity:Teleport 弹窗挂 body,需非 scoped + !important 兜底。
*/
.qt-snapshot-wrap {
display: flex !important;
justify-content: center !important;
align-items: flex-start !important;
max-height: min(72vh, 760px) !important;
min-height: 0 !important;
overflow: auto !important;
box-sizing: border-box !important;
padding: 6px !important;
}
.qt-snapshot-img,
.modal-overlay .qt-snapshot-img,
.qt-preview-dialog .qt-snapshot-img {
display: block !important;
width: auto !important;
height: auto !important;
max-width: 100% !important;
max-height: min(70vh, 720px) !important;
object-fit: contain !important;
object-position: top center !important;
flex: 0 0 auto !important;
align-self: flex-start !important;
}
.qt-lightbox-img {
width: auto !important;
height: auto !important;
max-width: calc(100vw - 48px) !important;
max-height: calc(100vh - 72px) !important;
object-fit: contain !important;
}
.qt-upload-title,
.qt-file-name {
font-size: 11px !important;
}
.qt-upload-drop {
min-height: 112px !important;
padding: 14px 12px !important;
}
.qt-paper-title {
font-size: 12px !important;
}
.qt-paper-amt {
font-size: 18px !important;
}
.qt-paper-fee,
.qt-paper-value,
.qt-paper-cap,
.qt-paper-meta {
font-size: 10px !important;
}
.qt-template-page .qt-col-muted,
.qt-template-page .qt-col-file,
.qt-template-page .qt-col-count,
.qt-template-page .qt-col-time,
.qt-template-page .qt-col-name {
font-size: 11px !important;
}
.ant-modal .ant-input,
.ant-modal .ant-input-affix-wrapper,
.ant-modal .ant-select-selector {
min-height: 34px !important;
font-size: 11px !important;
}
.ant-modal .ant-btn {
height: 34px !important;
font-size: 11px !important;
}
.ant-modal-title {
font-size: 13px !important;
}
.account-modal-dialog {
max-width: 480px !important;
}
.account-modal-body {
gap: 10px !important;
padding: 14px 18px !important;
}
.form-row {
grid-template-columns: 88px minmax(0, 1fr) !important;
gap: 10px !important;
}
.form-row .lbl {
font-size: 10.5px !important;
}
.field {
min-height: 34px !important;
height: 34px !important;
font-size: 11px !important;
}
/**
* 弹窗多行正文:必须压过上面 .field 的 height:34px。
* AdminModal 会 Teleport 到 body,页面 scoped 样式经常盖不住这条全局规则。
*/
textarea.field.field-tall {
height: 240px !important;
min-height: 240px !important;
padding: 8px 10px !important;
line-height: 1.5 !important;
resize: vertical !important;
}
.form-row.form-row-tall {
align-items: start !important;
}
/**
* 列表页固定搜索区 / 表头 / 底部分页,表格区内双轴滚动。
* 根节点加 .is-list-page(工单、员工、账号、角色、报价模板)。
* 这样横向滚动条始终贴在表格可视区底部,不必滚到文档末尾才看到。
*/
.admin-content:has(> .is-list-page) {
overflow: hidden !important;
display: flex !important;
flex-direction: column !important;
padding-bottom: 16px !important;
}
.admin-content > .is-list-page {
flex: 1 1 auto !important;
min-height: 0 !important;
display: flex !important;
flex-direction: column !important;
overflow: hidden !important;
}
/* 工单页:外壳 is-list-page,内层 section-card 撑满 */
.admin-content > .is-list-page > .section-card {
flex: 1 1 auto !important;
min-height: 0 !important;
display: flex !important;
flex-direction: column !important;
overflow: hidden !important;
gap: 12px !important;
}
/* 账号/员工/角色/模板:section-card 自身即 is-list-page */
.admin-content > .section-card.is-list-page {
display: flex !important;
flex-direction: column !important;
gap: 12px !important;
}
.is-list-page .section-card-header,
.is-list-page .tabs-line-bar,
.is-list-page .toolbar,
.is-list-page .pagination {
flex-shrink: 0 !important;
}
.is-list-page .table-wrap,
.is-list-page .qt-template-table-wrap {
flex: 1 1 auto !important;
min-height: 0 !important;
overflow: auto !important;
overflow-x: auto !important;
overflow-y: auto !important;
-webkit-overflow-scrolling: touch;
}
/* 竖向滚动时表头钉在表格区顶部 */
.is-list-page .data-table thead th {
position: sticky !important;
top: 0 !important;
z-index: 4 !important;
background: #f8fafc !important;
box-shadow: 0 1px 0 var(--line, #d9e2ef);
}
/* 左/右冻结列与表头交叉处抬高层级,避免横滑时被盖住 */
.is-list-page .data-table thead th:first-child,
.is-list-page .data-table thead th.col-sticky-left {
left: 0 !important;
z-index: 6 !important;
}
.is-list-page .data-table thead th:last-child,
.is-list-page .data-table thead th.col-sticky-right {
right: 0 !important;
z-index: 6 !important;
}
.is-list-page .data-table tbody td:first-child,
.is-list-page .data-table tbody td.col-sticky-left {
position: sticky !important;
left: 0 !important;
z-index: 3 !important;
background: #fff !important;
}
.is-list-page .data-table tbody td:last-child,
.is-list-page .data-table tbody td.col-sticky-right {
position: sticky !important;
right: 0 !important;
z-index: 3 !important;
background: #fff !important;
}
.is-list-page .data-table tbody tr:hover td:first-child,
.is-list-page .data-table tbody tr:hover td:last-child,
.is-list-page .data-table tbody tr:hover td.col-sticky-left,
.is-list-page .data-table tbody tr:hover td.col-sticky-right {
background: #f8fbff !important;
}
/*
* 分析看板比一屏高。整页被 html / 主区锁死时,内容区即使设了 overflow,
* 格子也会跟着内容长高,再被主区裁掉,滚轮没有可滚的对象。
* 看板单独放开文档滚动;列表页仍锁在一屏里,表格自己滚。
*/
html:has(.ref-surface--metrics),
body:has(.ref-surface--metrics) {
height: auto !important;
min-height: 100% !important;
overflow-x: hidden !important;
overflow-y: auto !important;
}
#app:has(.ref-surface--metrics),
.admin-shell:has(.ref-surface--metrics) {
height: auto !important;
min-height: 100vh !important;
overflow: visible !important;
}
.main-stage:has(.ref-surface--metrics) {
height: auto !important;
max-height: none !important;
min-height: 100vh !important;
overflow: visible !important;
}
.admin-content:has(.ref-surface--metrics) {
height: auto !important;
max-height: none !important;
flex: none !important;
overflow: visible !important;
}