Improve settings contrast and add plain phase

This commit is contained in:
Codex
2026-05-27 14:02:23 +08:00
parent 6653c147c8
commit fa38abf213
4 changed files with 38 additions and 5 deletions

View File

@@ -67,7 +67,7 @@ WINDOWS = {
BODY_PART_ORDER = ["head_neck", "chest", "upper_abdomen", "lower_abdomen", "pelvis"]
BODY_PARTS = set(BODY_PART_ORDER)
PHASES = {"arterial", "portal_venous", "delayed", "unknown", ""}
PHASES = {"plain", "arterial", "portal_venous", "delayed", "unknown", ""}
CHEST_WINDOWS = {"lung", "mediastinal", "unknown", ""}
ROLES = {
"管理员": ["查看DICOM", "编辑标注", "AI识别", "用户创建", "权限控制", "系统设置"],
@@ -1579,7 +1579,7 @@ def ai_classify(ct_number: str, series_uid: str, _: AIRequest, user: str = Depen
"可选部位键: head_neck(头颈部), chest(胸部), upper_abdomen(上腹部), "
"lower_abdomen(下腹部), pelvis(盆腔)。一个序列可包含多个部位。"
"如果不是可用于标注的平扫CT影像、定位像、剂量报告或无法判断请 skipped=true。"
"如果包含上腹部,请判断期相: arterial(动脉期)、portal_venous(门静脉期)、delayed(延迟期)、unknown(无法判别)。"
"如果包含上腹部,请判断期相: plain(平扫)、arterial(动脉期)、portal_venous(门静脉期)、delayed(延迟期)、unknown(无法判别)。"
"如果包含胸部,请判断窗位: lung(肺窗)、mediastinal(纵隔窗)、unknown(无法判别)。"
"只返回JSON: {\"body_parts\":[],\"upper_abdomen_phase\":\"\",\"chest_window\":\"\",\"skipped\":false,\"notes\":\"\"}。"
f"PACS张数: {series_row.get('count', 0)}"

View File

@@ -121,7 +121,7 @@ function sortArrow(direction) {
}
function phaseLabel(value) {
return { arterial: "动脉期", portal_venous: "门静脉期", delayed: "延迟期", unknown: "无法判别" }[value] || "";
return { plain: "平扫", arterial: "动脉期", portal_venous: "门静脉期", delayed: "延迟期", unknown: "无法判别" }[value] || "";
}
function chestWindowLabel(value) {

View File

@@ -142,6 +142,7 @@
<div id="phaseBox" class="phase-box">
<span>上腹部期相</span>
<div class="phase-options">
<label><input name="phase" type="radio" value="plain" />平扫</label>
<label><input name="phase" type="radio" value="arterial" />动脉期</label>
<label><input name="phase" type="radio" value="portal_venous" />门静脉期</label>
<label><input name="phase" type="radio" value="delayed" />延迟期</label>

View File

@@ -1055,6 +1055,7 @@ button:disabled {
gap: 14px;
margin: 0 auto;
padding: 24px;
color: #132033;
}
.settings-page {
@@ -1091,6 +1092,22 @@ button:disabled {
gap: 14px;
}
.settings-section {
border: 1px solid #dbe6f3;
color: #132033;
box-shadow: 0 12px 28px rgba(12, 24, 44, 0.1);
}
.settings-section h3,
.settings-section strong,
.settings-section label {
color: #132033;
}
.settings-title span {
color: #53677f;
}
.settings-form {
display: grid;
grid-template-columns: 1fr 1fr 140px 88px;
@@ -1105,6 +1122,10 @@ button:disabled {
color: #132033;
}
.settings-form input::placeholder {
color: #64748b;
}
.settings-form button {
border-radius: 8px;
background: #1d5ff0;
@@ -1132,8 +1153,10 @@ button:disabled {
width: 100%;
border-collapse: collapse;
overflow: hidden;
border: 1px solid #dce6f2;
border-radius: 8px;
background: white;
color: #132033;
font-size: 13px;
}
@@ -1145,10 +1168,18 @@ button:disabled {
}
.settings-table th {
color: #6f819a;
color: #41546b;
font-weight: 700;
}
.settings-table td {
color: #1f2f46;
}
.settings-table tbody tr:nth-child(even) {
background: #f8fbff;
}
.role-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
@@ -1161,6 +1192,7 @@ button:disabled {
border: 1px solid #dce5f1;
border-radius: 8px;
background: white;
color: #132033;
}
.role-card strong {
@@ -1171,7 +1203,7 @@ button:disabled {
.role-card span,
.settings-section dd,
.settings-section dt {
color: #6f819a;
color: #53677f;
font-size: 13px;
}