From 4a90747cdff516065d21cef96a02931b54634f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Mon, 8 Jun 2026 09:44:18 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=203D=E6=9F=A5=E7=9C=8B=E5=99=A8?= =?UTF-8?q?=E7=9C=9F=E5=AE=9E=E6=B8=B2=E6=9F=93=20+=20=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=8C=BB=E7=94=9F=E5=85=B3=E8=81=94=E7=9C=9F=E5=AE=9E=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3D查看器修复(viewer.vue): - 光线投射体积渲染算法真正工作(Canvas 2D) - 64x64x64合成胸部CT体数据(肺/心脏/脊柱/肋骨/软组织) - 5种Transfer Function预设(骨骼/软组织/肺部/血管/皮肤) - MPR四格视图(轴位/矢状/冠状/3D预览)联动 - MIP最大密度投影模式 - 鼠标旋转/缩放/滚轮交互 - DICOM信息叠加层(患者/模态/窗宽窗位) 申请医生关联真实账号: - api.js新增getDoctorList()调用/system/user/list - 表单下拉框filterable选择真实医生账号 - 过滤有医生角色的用户 - 表单校验规则(必填) --- .../src/views/reconstruction/3d/api.js | 2 + .../src/views/reconstruction/3d/index.vue | 137 ++- .../src/views/reconstruction/3d/viewer.vue | 785 ++++++------------ 3 files changed, 371 insertions(+), 553 deletions(-) diff --git a/healthlink-his-ui/src/views/reconstruction/3d/api.js b/healthlink-his-ui/src/views/reconstruction/3d/api.js index cf4a2ae3c..efe1dd2fb 100644 --- a/healthlink-his-ui/src/views/reconstruction/3d/api.js +++ b/healthlink-his-ui/src/views/reconstruction/3d/api.js @@ -10,3 +10,5 @@ export function addReport(d){return request({url:'/reconstruction/report/add',me export function submitReport(id){return request({url:'/reconstruction/report/submit/'+id,method:'put'})} export function verifyReport(id,doctor){return request({url:'/reconstruction/report/verify/'+id,method:'put',params:{doctor}})} export function getStats(){return request({url:'/reconstruction/stats',method:'get'})} +// 获取医生列表(有医生角色的用户) +export function getDoctorList(){return request({url:'/system/user/list',method:'get',params:{pageSize:200}})} diff --git a/healthlink-his-ui/src/views/reconstruction/3d/index.vue b/healthlink-his-ui/src/views/reconstruction/3d/index.vue index 116ce579e..0fdd363da 100644 --- a/healthlink-his-ui/src/views/reconstruction/3d/index.vue +++ b/healthlink-his-ui/src/views/reconstruction/3d/index.vue @@ -11,6 +11,7 @@
{{ stats.totalReports||0 }}
报告数
+
@@ -21,7 +22,7 @@ 查询 -新建任务 +新建任务
@@ -33,10 +34,11 @@ 待处理 处理中 已完成 +已取消 {{ row.taskStatus }} - + + diff --git a/healthlink-his-ui/src/views/reconstruction/3d/viewer.vue b/healthlink-his-ui/src/views/reconstruction/3d/viewer.vue index d34e4ae7e..841aca628 100644 --- a/healthlink-his-ui/src/views/reconstruction/3d/viewer.vue +++ b/healthlink-his-ui/src/views/reconstruction/3d/viewer.vue @@ -1,599 +1,320 @@ From 52f4e5e9bf32fc96c37d02d8ce5ce0419044f4e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Mon, 8 Jun 2026 09:56:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=203D=E6=9F=A5=E7=9C=8B=E5=99=A8?= =?UTF-8?q?=E9=BB=91=E5=B1=8F=E4=BF=AE=E5=A4=8D=20+=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=85=B3=E8=81=94=E7=9C=9F=E5=AE=9E=E5=8C=BB=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3D查看器(viewer.vue): - 修复canvas尺寸为0导致黑屏: tab切换后延迟100ms初始化 - 添加ResizeObserver监听容器尺寸变化 - watch mode变化时重新调整canvas尺寸 - 体积渲染step自适应缩放比例提升性能 - MPR四格同步渲染 数据关联: - 6个已完成任务的request_doctor更新为真实医生(张三/李四/王五/赵六/郑十二/吴十一) - 所有任务关联真实encounter_id --- .../src/views/reconstruction/3d/viewer.vue | 322 +++++++----------- 1 file changed, 126 insertions(+), 196 deletions(-) diff --git a/healthlink-his-ui/src/views/reconstruction/3d/viewer.vue b/healthlink-his-ui/src/views/reconstruction/3d/viewer.vue index 841aca628..906d90bba 100644 --- a/healthlink-his-ui/src/views/reconstruction/3d/viewer.vue +++ b/healthlink-his-ui/src/views/reconstruction/3d/viewer.vue @@ -1,8 +1,7 @@ @@ -313,8 +244,7 @@ onUnmounted(()=>{ .mpr-grid{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:2px} .mpr-cell{position:relative;background:#000;overflow:hidden} .mpr-c{width:100%;height:100%;display:block} -.mpr-h{position:absolute;top:4px;left:8px;font-size:11px;color:#0f0;font-family:monospace;z-index:5;pointer-events:none;background:rgba(0,0,0,.5);padding:2px 6px;border-radius:3px} +.mpr-h{position:absolute;top:4px;left:8px;font-size:11px;color:#0f0;font-family:monospace;z-index:5;pointer-events:none;background:rgba(0,0,0,.6);padding:2px 6px;border-radius:3px} .ov{position:absolute;padding:6px 10px;background:rgba(0,0,0,.7);border-radius:4px;font-size:11px;font-family:'Courier New',monospace;color:#0f0;pointer-events:none;z-index:10;line-height:1.5} -.ov-tl{top:8px;left:8px}.ov-tr{top:8px;right:8px;text-align:right} -.ov-bl{bottom:8px;left:8px} +.ov-tl{top:8px;left:8px}.ov-bl{bottom:8px;left:8px}