From 160790d38de79e59f08ea7b16fd9fd3ce93416a8 Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 28 May 2026 09:37:02 +0800 Subject: [PATCH] Fix viewer link host resolution --- 数据库Web可视化/static/app.js | 17 +++++++++++++++-- 数据库Web可视化/static/styles.css | 26 +++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/数据库Web可视化/static/app.js b/数据库Web可视化/static/app.js index 3b04ff3..b1a0298 100644 --- a/数据库Web可视化/static/app.js +++ b/数据库Web可视化/static/app.js @@ -240,9 +240,22 @@ function markNode(id, state, strong, meta) { node.querySelector("em").textContent = meta; } +function viewerBaseUrl() { + try { + const url = new URL(app.viewerUrl || `${location.protocol}//${location.hostname}:8107`, location.href); + if (["127.0.0.1", "localhost", "0.0.0.0"].includes(url.hostname) && !["127.0.0.1", "localhost"].includes(location.hostname)) { + url.hostname = location.hostname; + } + url.protocol = location.protocol; + return url.toString().replace(/\/$/, ""); + } catch (_) { + return `${location.protocol}//${location.hostname}:8107`; + } +} + function dicomViewerUrl(row = app.active) { if (!row?.pacs_ct_number) return ""; - return `${app.viewerUrl.replace(/\/$/, "")}/?ct_number=${encodeURIComponent(row.pacs_ct_number)}`; + return `${viewerBaseUrl()}/?ct_number=${encodeURIComponent(row.pacs_ct_number)}`; } function updateOpenDicomButton() { @@ -539,7 +552,7 @@ function openDicomViewer() { } function openViewerHome() { - window.open(app.viewerUrl.replace(/\/$/, ""), "_blank", "noopener"); + window.open(viewerBaseUrl(), "_blank", "noopener"); } function wire() { diff --git a/数据库Web可视化/static/styles.css b/数据库Web可视化/static/styles.css index 3395389..8c73769 100644 --- a/数据库Web可视化/static/styles.css +++ b/数据库Web可视化/static/styles.css @@ -173,10 +173,25 @@ button { .dark-btn { height: 34px; padding: 0 14px; - border: 1px solid var(--line); + border: 1px solid rgba(142, 162, 189, 0.38); border-radius: 8px; - background: var(--panel-2); + background: linear-gradient(180deg, rgba(23, 34, 51, 0.96), rgba(11, 17, 27, 0.96)); color: var(--text); + box-shadow: + inset 0 1px 0 rgba(232, 240, 251, 0.06), + 0 0 0 1px rgba(7, 10, 15, 0.3); +} + +.top-actions .dark-btn { + border-color: rgba(82, 124, 184, 0.72); + color: #eaf2ff; + background: linear-gradient(180deg, rgba(28, 42, 62, 0.98), rgba(13, 21, 33, 0.98)); +} + +.top-actions #viewerHomeBtn { + border-color: rgba(25, 212, 194, 0.66); + color: #c8fff7; + background: linear-gradient(180deg, rgba(17, 61, 70, 0.92), rgba(9, 30, 42, 0.98)); } .primary-btn, @@ -205,10 +220,15 @@ button { .dark-btn:hover, .filter-grid button:hover { - border-color: var(--line-strong); + border-color: rgba(52, 118, 246, 0.82); background: #172233; } +.top-actions #viewerHomeBtn:hover { + border-color: var(--cyan); + background: rgba(25, 212, 194, 0.14); +} + .layout { height: calc(100vh - 66px); display: grid;