From 0e2e57446bdfc89c786811cbe01a7b4f13cc419f Mon Sep 17 00:00:00 2001
From: caiyiling <1321909229@qq.com>
Date: Fri, 22 May 2026 17:09:47 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E8=A7=88=E8=AE=BF=E8=A7=86=E5=BD=B1?=
=?UTF-8?q?=E5=83=8F=E6=A0=B7=E5=BC=8F=E6=9B=B4=E6=94=B9=EF=BC=9B=E8=9E=8D?=
=?UTF-8?q?=E5=90=88=E8=A7=86=E5=8F=A3=E5=B7=A5=E5=85=B7=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/dicom-show/dicom-visit.vue | 20 ++++++++++++--
.../dicoms/components/Fusion/PetCt.vue | 21 ++++++++++++++-
.../dicoms3D/components/PetCtViewport.vue | 6 +++--
.../reading/dicoms3D/components/ReadPage.vue | 27 ++++++++++++++++++-
4 files changed, 68 insertions(+), 6 deletions(-)
diff --git a/src/views/dicom-show/dicom-visit.vue b/src/views/dicom-show/dicom-visit.vue
index baddf6f3..6eeb249e 100644
--- a/src/views/dicom-show/dicom-visit.vue
+++ b/src/views/dicom-show/dicom-visit.vue
@@ -102,7 +102,7 @@
-
+
{{ series.modality }}: {{ series.instanceCount }} image
@@ -1141,14 +1141,20 @@ export default {
.viewerContainer .viewerLeftSidePanel .viewernavigatorwrapper {
display: flex;
width: 220px;
- /* height: 84px; */
+ min-height: 85px;
padding: 1px 2px 1px 2px;
margin: 2px 0 1px 1px;
+ align-items: flex-start;
/* border-radius: 2px;
border: 1px solid #404040; */
}
+.viewerContainer .viewerLeftSidePanel .viewernavigatorwrapper .imageBox {
+ align-self: center;
+ flex-shrink: 0;
+}
+
.viewerContainer .viewernavigatorwrapper .el-progress__text {
display: none;
}
@@ -1171,9 +1177,19 @@ export default {
/* width: 120px;
height: 80px; */
flex: 1;
+ min-width: 0;
padding: 3px 1px 3px 4px;
vertical-align: top;
font-size: 12px;
+ line-height: 1.4;
+ overflow: hidden;
+}
+
+.viewerContainer .viewerLeftSidePanel .viewernavitextwrapper>div {
+ max-width: 100%;
+ white-space: normal;
+ word-break: break-word;
+ overflow-wrap: anywhere;
}
.viewerContainer .viewerLeftSidePanel .viewerlabelwrapper {
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt.vue
index 631e32fc..abafcf6b 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt.vue
@@ -303,6 +303,7 @@ const {
CrosshairsTool,
TrackballRotateTool,
ProbeTool,
+ MIPJumpToClickTool,
ScaleOverlayTool,
utilities,
// eslint-disable-next-line no-unused-vars
@@ -441,7 +442,7 @@ export default {
lineLength: 20,
centerHoleSize: 20,
},
- fusionJumpEnabled: true
+ fusionJumpEnabled: false
// initFirstAnnotation:false
}
},
@@ -995,6 +996,7 @@ export default {
cornerstoneTools.addTool(ZoomTool)
cornerstoneTools.addTool(StackScrollTool)
cornerstoneTools.addTool(FusionJumpToPointTool)
+ cornerstoneTools.addTool(MIPJumpToClickTool)
cornerstoneTools.addTool(VolumeRotateTool)
cornerstoneTools.addTool(EllipticalROITool)
cornerstoneTools.addTool(CircleROITool)
@@ -1155,6 +1157,9 @@ export default {
bindings: [{ mouseButton: MouseBindings.Secondary }]
})
mipToolGroup.addTool(FusionJumpToPointTool.toolName, this.getFusionJumpToolConfiguration())
+ mipToolGroup.addTool(MIPJumpToClickTool.toolName, {
+ targetViewportIds: this.getFusionJumpToolConfiguration().targetViewportIds
+ })
// Set the initial state of the tools, here we set one tool active on left click.
// This means left click will draw that tool.
@@ -1165,6 +1170,7 @@ export default {
// mipToolGroup.addTool(OrientationMarkerTool.toolName)
// mipToolGroup.setToolActive(OrientationMarkerTool.toolName)
mipToolGroup.addViewport(viewportIds.PETMIP.CORONAL, renderingEngineId)
+ this.setFusionMipClickEnabled(!this.fusionJumpEnabled && this.isFusion)
},
getFusionJumpToolConfiguration() {
return {
@@ -1290,10 +1296,22 @@ export default {
this.setFusionJumpEnabled(true)
this.activeTool = FusionJumpToPointTool.toolName
},
+ setFusionMipClickEnabled(enabled) {
+ const toolGroup = ToolGroupManager.getToolGroup(mipToolGroupUID)
+ if (!toolGroup || !toolGroup.hasTool(MIPJumpToClickTool.toolName)) return
+ if (enabled && this.isFusion) {
+ toolGroup.setToolActive(MIPJumpToClickTool.toolName, {
+ bindings: [{ mouseButton: MouseBindings.Primary }]
+ })
+ } else {
+ toolGroup.setToolDisabled(MIPJumpToClickTool.toolName)
+ }
+ },
setFusionJumpEnabled(enabled) {
this.fusionJumpEnabled = !!enabled
const toolGroupIds = [ctToolGroupId, ptToolGroupId, fusionToolGroupId, mipToolGroupUID]
if (enabled) {
+ this.setFusionMipClickEnabled(false)
toolGroupIds.forEach((toolGroupId) => {
const toolGroup = ToolGroupManager.getToolGroup(toolGroupId)
if (!toolGroup || !toolGroup.hasTool(FusionJumpToPointTool.toolName)) return
@@ -1304,6 +1322,7 @@ export default {
this.dispatchFusionCenterPoint()
return
}
+ this.setFusionMipClickEnabled(this.isFusion)
toolGroupIds.forEach((toolGroupId) => {
const toolGroup = ToolGroupManager.getToolGroup(toolGroupId)
if (!toolGroup || !toolGroup.hasTool(FusionJumpToPointTool.toolName)) return
diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/PetCtViewport.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/PetCtViewport.vue
index 3ddfed50..b2cbc4f0 100644
--- a/src/views/trials/trials-panel/reading/dicoms3D/components/PetCtViewport.vue
+++ b/src/views/trials/trials-panel/reading/dicoms3D/components/PetCtViewport.vue
@@ -575,8 +575,10 @@ export default {
if (properties && properties.voiRange) {
var { lower, upper } = properties.voiRange
- const windowWidth = upper - lower
- const windowCenter = (upper + lower) / 2
+ const { windowWidth, windowCenter } = csUtils.windowLevel.toWindowLevel(
+ lower,
+ upper
+ )
this.defaultWindowLevel.windowWidth = windowWidth
this.defaultWindowLevel.windowCenter = windowCenter
this.imageInfo.wwwc = `${Math.round(windowWidth)}/${Math.round(windowCenter)}`
diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue
index 49c168e8..a8d4666d 100644
--- a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue
+++ b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue
@@ -621,6 +621,7 @@ const {
VolumeRotateTool,
CrosshairsTool,
EllipticalROITool,
+ MIPJumpToClickTool,
synchronizers,
LabelMapEditWithContourTool,
BrushTool,
@@ -1557,6 +1558,7 @@ export default {
cornerstoneTools.addTool(AngleTool)
cornerstoneTools.addTool(CobbAngleTool)
cornerstoneTools.addTool(FusionJumpToPointTool)
+ cornerstoneTools.addTool(MIPJumpToClickTool)
cornerstoneTools.addTool(VolumeRotateTool)
cornerstoneTools.addTool(CrosshairsTool)
cornerstoneTools.addTool(LabelMapEditWithContourTool)
@@ -1725,6 +1727,9 @@ export default {
})
if (viewportId === 'viewport-fusion-3') {
toolGroup.addTool(VolumeRotateTool.toolName)
+ toolGroup.addTool(MIPJumpToClickTool.toolName, {
+ targetViewportIds: ['viewport-fusion-0', 'viewport-fusion-1', 'viewport-fusion-2', 'viewport-fusion-3', 'viewport-fusion-hidden-sag'],
+ })
toolGroup.addTool(FusionJumpToPointTool.toolName, {
targetViewportIds: ['viewport-fusion-0', 'viewport-fusion-1', 'viewport-fusion-2', 'viewport-fusion-3', 'viewport-fusion-hidden-sag'],
useBrightestPoint: true,
@@ -1740,6 +1745,10 @@ export default {
mipViewportIds: ['viewport-fusion-3'],
})
+ toolGroup.setToolActive(MIPJumpToClickTool.toolName, {
+ bindings: [{ mouseButton: MouseBindings.Primary }]
+ })
+
toolGroup.setToolActive(VolumeRotateTool.toolName, {
bindings: [
{
@@ -2668,16 +2677,31 @@ export default {
dispatchEvent: false,
})
},
+ setFusionMipClickEnabled(enabled) {
+ const toolGroup = ToolGroupManager.getToolGroup(this.fusionToolGroupId)
+ if (!toolGroup || !toolGroup.hasTool(MIPJumpToClickTool.toolName)) return
+ if (enabled && this.isFusion) {
+ toolGroup.setToolActive(MIPJumpToClickTool.toolName, {
+ bindings: [{ mouseButton: MouseBindings.Primary }]
+ })
+ } else {
+ toolGroup.setToolDisabled(MIPJumpToClickTool.toolName)
+ }
+ },
setFusionMipJumpEnabled(enabled) {
const toolGroup = ToolGroupManager.getToolGroup(this.fusionToolGroupId)
- if (!toolGroup || !toolGroup.hasTool(FusionJumpToPointTool.toolName)) return
+ if (!toolGroup) return
if (enabled) {
+ this.setFusionMipClickEnabled(false)
+ if (!toolGroup.hasTool(FusionJumpToPointTool.toolName)) return
if (!this.isFusion) return
toolGroup.setToolActive(FusionJumpToPointTool.toolName, {
bindings: [{ mouseButton: MouseBindings.Primary }]
})
this.dispatchFusionCenterPoint()
} else {
+ this.setFusionMipClickEnabled(this.isFusion)
+ if (!toolGroup.hasTool(FusionJumpToPointTool.toolName)) return
toolGroup.setToolDisabled(FusionJumpToPointTool.toolName)
this.clearFusionJumpToPointAnnotations()
}
@@ -4436,6 +4460,7 @@ export default {
await this.initFusionHiddenSagViewport(pt)
// this.resetAnnotation = false
this.$nextTick(() => {
+ this.setFusionMipJumpEnabled(this.activeTool === FusionJumpToPointTool.toolName)
const defaultRange = this.getFusionDefaultColorMapRange(pt)
const defaultUpper = this.getFusionDefaultColorMapUpper(defaultRange)
this.$refs[`colorMap`].init()