src/vendor 语义是'第三方/参考',却装着线上氢能看板并反向 import
src/modules,依赖方向倒挂。本次把生产代码归位并建立氢能分层:
src/modules/energy/hydrogen/
index.tsx 导航入口(原 HydrogenModule.tsx)
api.ts types.ts HTTP 与 DTO
dev-mock-api.ts 仅 dev 的 vite 插件(仍由 vite.config.ts 引用)
model/ 纯逻辑(format / bearing-labels / daily-detail-format)
board/ 经营看板 UI(原 vendor energy-h2-bi-board)
station-daily/ 单站日报 UI(原 vendor energy-h2-station-daily)
drill/ 下钻弹层 UI(原 hydrogen-bi-v2 的 UI 部分)
common/ 工具与共享组件(原 vendor common + prototype-download)
fonts/ JetBrains Mono(原 vendor resources/design-system)
- UI 与 CSS 逐字节保留,仅移动位置与改写相对 import。
- 删除自挂载原型入口后遗留的 2 个 annotation-source.json。
- vite.config.ts 与 tsconfig 的路径/exclude 同步清理。
- independent-entry.test.ts 不再硬编码路径,改为断言'两个入口解析到同一文件'。
导入改写用一次性 codemod 完成(按旧位置解析、按新位置重写),
lint / test(131) / build 全绿,可达性分析仍为 0 未引用文件。
190 lines
6.5 KiB
CSS
190 lines
6.5 KiB
CSS
/* Scoped to the live daily table; keep the other boards and drill dialogs intact. */
|
|
.ehb-real-daily-detail {
|
|
min-width: 0;
|
|
}
|
|
.ehb-daily-detail-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 10px 16px;
|
|
margin: 12px 0;
|
|
}
|
|
.ehb-daily-view-switch {
|
|
display: inline-flex;
|
|
padding: 3px;
|
|
background: #f1f5f9;
|
|
border-radius: 9px;
|
|
}
|
|
.ehb-real-daily-detail button,
|
|
.ehb-real-daily-detail select { font: inherit; }
|
|
.ehb-daily-view-switch button,
|
|
.ehb-daily-collapse,
|
|
.ehb-daily-branch-state button,
|
|
.ehb-daily-detail-empty button {
|
|
min-height: 40px;
|
|
border: 0;
|
|
padding: 8px 12px;
|
|
border-radius: 7px;
|
|
background: transparent;
|
|
color: #475569;
|
|
cursor: pointer;
|
|
font-size: 13px;
|
|
}
|
|
.ehb-daily-view-switch button[aria-pressed="true"] {
|
|
background: #fff;
|
|
color: #1d4ed8;
|
|
box-shadow: 0 1px 4px #0f172a14;
|
|
font-weight: 600;
|
|
}
|
|
.ehb-daily-date-jump { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #64748b; }
|
|
.ehb-daily-date-jump select { min-height: 40px; border: 1px solid #e2e8f0; border-radius: 7px; padding: 6px 8px; background: #fff; color: #334155; }
|
|
.ehb-real-daily-detail button:disabled { opacity: .45; cursor: default; }
|
|
.ehb-real-daily-detail :is(button, select, [tabindex]):focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
|
|
.ehb-real-daily-detail .ehb-daily-disclosure {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 5px;
|
|
width: 100%;
|
|
min-height: 44px;
|
|
padding: 6px 0;
|
|
border: 0;
|
|
background: none;
|
|
color: inherit;
|
|
text-align: left;
|
|
line-height: 1.5;
|
|
cursor: pointer;
|
|
}
|
|
.ehb-daily-disclosure > svg { flex-shrink: 0; margin-top: 3px; color: #64748b; }
|
|
.ehb-daily-disclosure > span { min-width: 0; }
|
|
.ehb-daily-disclosure[aria-expanded="true"] { font-weight: 600; }
|
|
.ehb-daily-disclosure[aria-expanded="true"] > svg { color: #2563eb; }
|
|
.ehb-daily-level-label,
|
|
.ehb-daily-change { display: block; font-size: 11px; font-weight: 400; color: #64748b; line-height: 1.6; }
|
|
.ehb-daily-cost { font-weight: 500; }
|
|
.ehb-daily-branch-state > td > div { display: flex; align-items: center; gap: 8px; }
|
|
.ehb-daily-branch-state button { display: inline-flex; align-items: center; gap: 5px; color: #1d4ed8; background: #eff6ff; }
|
|
.ehb-daily-detail-empty { padding: 24px 16px; text-align: center; color: #64748b; font-size: 13px; }
|
|
.ehb-daily-detail-empty button { display: block; margin: 8px auto 0; color: #1d4ed8; }
|
|
.ehb-real-daily-detail[data-detail-mode="key"] .ehb-table { min-width: 0; }
|
|
.ehb-real-daily-detail[data-detail-mode="key"] .ehb-table :is(th, td):is(:nth-child(2), :nth-child(5)) { display: none; }
|
|
.ehb-real-daily-detail[data-detail-mode="key"] .ehb-table :is(th, td):first-child:not([colspan]) { width: 36%; }
|
|
.ehb-real-daily-detail .ehb-table td:not(:first-child) { text-align: right; }
|
|
.ehb-real-daily-detail .ehb-table th:not(:first-child) { text-align: right; }
|
|
.ehb-real-daily-detail .ehb-table-wrap {
|
|
isolation: isolate;
|
|
overscroll-behavior-x: contain;
|
|
-webkit-overflow-scrolling: touch;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table {
|
|
table-layout: fixed;
|
|
min-width: 940px;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table tr {
|
|
background-color: #fff;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table th:first-child,
|
|
.ehb-real-daily-detail .ehb-table td:first-child:not([colspan]) {
|
|
position: sticky;
|
|
left: 0;
|
|
z-index: 2;
|
|
width: 260px;
|
|
background-color: inherit;
|
|
box-shadow: 1px 0 0 #e2e8f0, 5px 0 8px -6px #64748b;
|
|
overflow-wrap: anywhere;
|
|
white-space: normal;
|
|
}
|
|
/* Give nested day → station → customer → vehicle rows a viewport-sized workspace. */
|
|
.ehb-real-daily-detail.ehb-daily-table-card > .ehb-table-wrap {
|
|
height: 80vh;
|
|
height: 80dvh;
|
|
max-height: none;
|
|
min-height: 0;
|
|
overflow: auto;
|
|
}
|
|
|
|
.ehb-real-daily-detail .ehb-table th:first-child {
|
|
z-index: 4;
|
|
background-color: #f8fafc;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table th {
|
|
z-index: 3;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table td:not(:first-child) {
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
@media (max-width: 767px), (max-width: 1024px) and (max-height: 500px) {
|
|
.ehb-real-daily-detail.ehb-daily-table-card {
|
|
padding: 12px 0 0;
|
|
overflow: hidden;
|
|
}
|
|
.ehb-real-daily-detail .ehb-daily-table-head {
|
|
padding: 0 12px;
|
|
gap: 8px;
|
|
align-items: flex-start;
|
|
}
|
|
.ehb-real-daily-detail .ehb-daily-table-title {
|
|
font-size: 15px;
|
|
line-height: 1.5;
|
|
}
|
|
.ehb-real-daily-detail .ehb-daily-table-title .ehb-title-sub {
|
|
display: none;
|
|
}
|
|
.ehb-real-daily-detail .ehb-export-btn {
|
|
display: inline-flex;
|
|
flex-shrink: 0;
|
|
min-height: 44px;
|
|
padding: 6px 8px;
|
|
font-size: 12px;
|
|
}
|
|
.ehb-real-daily-detail .ehb-daily-detail-toolbar { padding: 0 12px; gap: 8px; }
|
|
.ehb-real-daily-detail .ehb-daily-view-switch { width: 100%; }
|
|
.ehb-real-daily-detail .ehb-daily-view-switch button { flex: 1; min-height: 44px; }
|
|
.ehb-real-daily-detail .ehb-daily-date-jump { flex: 1; }
|
|
.ehb-real-daily-detail .ehb-daily-date-jump select { min-height: 44px; }
|
|
.ehb-real-daily-detail .ehb-daily-collapse { min-height: 44px; padding: 6px; font-size: 12px; }
|
|
.ehb-real-daily-detail .ehb-daily-table-scroll-hint {
|
|
display: block;
|
|
padding: 8px 12px;
|
|
font-size: 11px;
|
|
color: #64748b;
|
|
background: #f8fafc;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table-wrap {
|
|
max-height: 65dvh;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table {
|
|
min-width: 760px;
|
|
font-size: 13px;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table th:first-child,
|
|
.ehb-real-daily-detail .ehb-table td:first-child:not([colspan]) {
|
|
width: 142px;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table td {
|
|
height: 48px;
|
|
padding: 10px 12px;
|
|
line-height: 1.5;
|
|
box-sizing: border-box;
|
|
}
|
|
.ehb-real-daily-detail[data-detail-mode="key"] .ehb-table { min-width: 0; width: 100%; }
|
|
.ehb-real-daily-detail[data-detail-mode="key"] .ehb-table :is(th, td) { padding: 10px 8px; }
|
|
.ehb-real-daily-detail[data-detail-mode="key"] .ehb-table td:not(:first-child) { font-size: 12px; overflow-wrap: anywhere; }
|
|
.ehb-real-daily-detail .ehb-table td:first-child:has(.ehb-daily-disclosure) { padding-top: 4px; padding-bottom: 4px; }
|
|
.ehb-real-daily-detail .ehb-table th {
|
|
padding: 10px 12px;
|
|
white-space: normal;
|
|
line-height: 1.5;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table td:first-child .ehb-title-sub {
|
|
display: block;
|
|
margin-left: 0;
|
|
}
|
|
.ehb-real-daily-detail .ehb-table td.ehb-tree-cell-l1 { padding-left: 16px; }
|
|
.ehb-real-daily-detail .ehb-table td.ehb-tree-cell-l2 { padding-left: 22px; }
|
|
.ehb-real-daily-detail .ehb-table td.ehb-tree-cell-l3 { padding-left: 28px; }
|
|
.ehb-real-daily-detail .ehb-daily-record-tag {
|
|
display: inline-block;
|
|
margin: 2px 3px 0 0;
|
|
}
|
|
}
|