Refine DICOM UPP registration workstation layout

This commit is contained in:
Codex
2026-05-28 22:38:27 +08:00
parent 4ffdd28fbe
commit 7a38272e8b
3 changed files with 777 additions and 58 deletions

View File

@@ -36,6 +36,9 @@
</div>
</div>
<div class="top-actions">
<button id="caseToggleBtn" class="icon-btn" type="button" title="收起/展开完整关联 CT">
<span></span><span></span><span></span>
</button>
<button id="relationBtn" class="ghost-btn accent" type="button">数据库关联可视化</button>
<button id="viewerBtn" class="ghost-btn" type="button">DICOM 阅片系统</button>
<span id="dbStatus" class="status-pill">数据库</span>
@@ -81,17 +84,90 @@
<div id="activeTags" class="tag-line"></div>
</section>
<section class="work-grid">
<aside class="series-panel panel">
<div class="panel-head compact">
<h2>DICOM 序列</h2>
<span id="seriesCount">0</span>
<section class="registration-board">
<aside class="tool-dock panel">
<div class="tool-tabs">
<button class="active" data-tool-tab="series">序列</button>
<button data-tool-tab="models">组织分割</button>
<button data-tool-tab="pose">标记</button>
</div>
<div id="seriesList" class="series-list"></div>
<section class="tool-pane active" data-tool-pane="series">
<div class="patient-card">
<strong id="patientSummary">未选择 CT</strong>
<dl>
<div><dt>检查号</dt><dd id="summaryCt">-</dd></div>
<div><dt>患者号</dt><dd id="summaryPatientId">-</dd></div>
<div><dt>检查日期</dt><dd id="summaryStudyTime">-</dd></div>
<div><dt>检查部位</dt><dd id="summaryBodyPart">-</dd></div>
</dl>
</div>
<div class="tool-section-title">
<span>3D 重建所需序列</span>
<button id="reloadFusionBtn" type="button">重选序列</button>
</div>
<div id="matchedSeries" class="matched-series"></div>
<div class="tool-section-title">
<span>全部检查和序列</span>
<em id="seriesCount">0</em>
</div>
<div id="seriesList" class="series-list compact-list"></div>
</section>
<section class="tool-pane" data-tool-pane="models">
<div class="tool-section-title">
<span>STL 模型</span>
<em id="stlCount">0</em>
</div>
<div id="modelRail" class="chip-rail"></div>
<div id="stlList" class="stl-list compact-list"></div>
</section>
<section class="tool-pane" data-tool-pane="pose">
<div class="tool-section-title">
<span>位姿手动调整</span>
<em id="saveState">未保存</em>
</div>
<div class="pose-actions">
<button id="resetRotationBtn" type="button">重置旋转</button>
<button id="resetTransformBtn" type="button">重置平移缩放</button>
<button id="resetFlipBtn" type="button">重置镜像</button>
</div>
<div class="flip-row">
<button data-flip="flipX">镜像 X</button>
<button data-flip="flipY">镜像 Y</button>
<button data-flip="flipZ">镜像 Z</button>
</div>
<div id="poseGrid" class="pose-grid"></div>
<div class="tool-section-title">
<span>位姿自动调整</span>
<em id="autoState">未运行</em>
</div>
<div class="auto-box">
<div class="auto-options">
<label><input id="autoX" type="checkbox" checked /> X</label>
<label><input id="autoY" type="checkbox" checked /> Y</label>
<label><input id="autoZ" type="checkbox" checked /> Z</label>
<label><input id="autoScale" type="checkbox" checked /> 缩放</label>
</div>
<div class="pose-actions">
<button id="suggestBoneBtn" type="button">建议骨骼模型</button>
<button id="autoCoarseBtn" type="button">自动粗配准</button>
<button id="autoFineBtn" type="button">自动微调</button>
</div>
<div id="autoResult" class="auto-result">选择 DICOM 序列和 STL 后可运行。</div>
</div>
<textarea id="notes" class="notes" rows="2" placeholder="配准备注"></textarea>
</section>
</aside>
<section class="viewer-panel panel">
<section class="viewer-panel fusion-panel panel">
<div class="viewer-head">
<div class="segmented">
<button data-fusion-mode="fusion" class="active">融合结果</button>
<button data-fusion-mode="model">单独模型</button>
</div>
<div class="segmented">
<button data-window="default" class="active">默认</button>
<button data-window="bone">骨窗</button>
@@ -119,30 +195,28 @@
</div>
</section>
<aside class="right-panel">
<section class="panel stl-panel">
<div class="panel-head compact">
<h2>STL 模型</h2>
<span id="stlCount">0</span>
<section class="viewer-panel dicom-panel panel">
<div class="viewer-head">
<div>
<h2>DICOM 标注</h2>
<p id="dicomPanelMeta">当前序列切片</p>
</div>
<div id="modelRail" class="chip-rail"></div>
<div id="stlList" class="stl-list"></div>
</section>
<section class="panel pose-panel">
<div class="panel-head compact">
<h2>位姿参数</h2>
<span id="saveState">未保存</span>
<button id="openViewerBtn" class="ghost-btn" type="button">阅片系统</button>
</div>
<div class="dicom-stage">
<img id="dicomPreview" alt="DICOM 切片" />
<div class="crosshair horizontal"></div>
<div class="crosshair vertical"></div>
<div class="dicom-overlay top-left" id="dicomInfoLeft">未选择序列</div>
<div class="dicom-overlay top-right" id="dicomInfoRight"></div>
<div class="dicom-overlay bottom-left" id="dicomInfoBottom">Img: -</div>
<div id="dicomLoading" class="fusion-loading hidden">
<span>正在加载 DICOM 标注视图</span>
<div><i></i></div>
</div>
<div id="poseGrid" class="pose-grid"></div>
<div class="flip-row">
<button data-flip="flipX">镜像 X</button>
<button data-flip="flipY">镜像 Y</button>
<button data-flip="flipZ">镜像 Z</button>
</div>
<textarea id="notes" class="notes" rows="2" placeholder="配准备注"></textarea>
</section>
</aside>
</div>
<div id="annotationTags" class="annotation-tags"></div>
</section>
</section>
</section>
</main>