From 423b71c70291657baab2df09a9bedac6133b1476 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 24 Nov 2025 17:12:10 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BC=A0=E6=A0=87=E6=BB=9A=E5=8A=A8=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=88=87=E6=8D=A2=E5=9B=BE=E5=83=8F=EF=BC=8C=E5=9B=BE?= =?UTF-8?q?=E5=83=8F=E5=8F=AF=E4=BB=A5=E5=BE=AA=E7=8E=AF=E7=9A=84=E4=BB=8E?= =?UTF-8?q?=E5=A4=B4=E5=88=B0=E5=B0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reading/dicoms/components/DicomCanvas.vue | 2 +- .../dicoms/customize/CustomizeDicomCanvas.vue | 5 +- .../reading/dicoms3D/components/ReadPage.vue | 4 +- .../visit-review/components/ImageViewer.vue | 132 ++++++++---------- 4 files changed, 65 insertions(+), 78 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue index 8d7b0811..3cba61c9 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue @@ -1194,7 +1194,7 @@ export default { cornerstoneTools.addToolForElement(element, cornerstoneTools.WwwcRegionTool) } if (!cornerstoneTools.getToolForElement(element, cornerstoneTools.StackScrollMouseWheelTool)) { - cornerstoneTools.addToolForElement(element, cornerstoneTools.StackScrollMouseWheelTool) + cornerstoneTools.addToolForElement(element, cornerstoneTools.StackScrollMouseWheelTool, { configuration: { loop: true, } }) } cornerstoneTools.setToolActiveForElement(element, 'StackScrollMouseWheel', {}) diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue index 759c3645..eea7bdf4 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue @@ -35,7 +35,8 @@
- Pos: {{ mousePosition.x ? mousePosition.x.toFixed(0) : '' }}, {{ mousePosition.y ? mousePosition.y.toFixed(0) : '' }} + Pos: {{ mousePosition.x ? mousePosition.x.toFixed(0) : '' }}, {{ mousePosition.y ? mousePosition.y.toFixed(0) : + '' }}
@@ -1139,7 +1140,7 @@ export default { cornerstoneTools.addToolForElement(element, cornerstoneTools.WwwcRegionTool) } if (!cornerstoneTools.getToolForElement(element, cornerstoneTools.StackScrollMouseWheelTool)) { - cornerstoneTools.addToolForElement(element, cornerstoneTools.StackScrollMouseWheelTool) + cornerstoneTools.addToolForElement(element, cornerstoneTools.StackScrollMouseWheelTool, { configuration: { loop: true, } }) } cornerstoneTools.setToolActiveForElement(element, 'StackScrollMouseWheel', {}) 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 19c0a625..0faceb8a 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue @@ -1120,7 +1120,9 @@ export default { const toolGroupId = viewportId const toolGroup = ToolGroupManager.createToolGroup(toolGroupId) toolGroup.addViewport(viewportId, renderingEngineId) - toolGroup.addTool(StackScrollTool.toolName) + toolGroup.addTool(StackScrollTool.toolName, { + loop: true, // 启用循环滚动 + }) toolGroup.addTool(ScaleOverlayTool.toolName) toolGroup.addTool(PanTool.toolName) diff --git a/src/views/trials/trials-panel/reading/visit-review/components/ImageViewer.vue b/src/views/trials/trials-panel/reading/visit-review/components/ImageViewer.vue index d4a78d51..2183a1a0 100644 --- a/src/views/trials/trials-panel/reading/visit-review/components/ImageViewer.vue +++ b/src/views/trials/trials-panel/reading/visit-review/components/ImageViewer.vue @@ -16,43 +16,30 @@
-
+
-
+
-
+
+ :title="$t('trials:reading:button:arrowAnnotate')" @click.prevent="setAnnotateToolActive('ArrowAnnotate')">
+ :title="$t('trials:dicom-show:Eraser')" @click.prevent="setAnnotateToolActive('Eraser')">
@@ -64,74 +51,50 @@
--> -
+
-
+ @dblclick="toggleFullScreen($event, index)" @click="activeCanvas(index)" + @mouseup="sliderMouseup($event, index)" @mousemove="sliderMousemove($event, index)">
-
+
-

+

{{ `${taskInfo.SubjectCode} ${v.taskInfo.TaskBlindName} ` }}

{{ v.currentFileName }}
-
+
-
+ @dblclick.stop="preventDefault($event)">
{{ v.taskInfo.TaskBlindName }}
-
+ @dblclick.stop="preventDefault($event)">
-
+
@@ -318,16 +281,18 @@ export default { const toolGroupId = `canvas-${i}` const toolGroup = ToolGroupManager.createToolGroup(toolGroupId) toolGroup.addViewport(viewportId, renderingEngineId) - toolGroup.addTool(StackScrollTool.toolName) + toolGroup.addTool(StackScrollTool.toolName, { + loop: true, // 启用循环滚动 + }) toolGroup.addTool(PanTool.toolName) toolGroup.addTool(ZoomTool.toolName) toolGroup.addTool(PlanarRotateTool.toolName) toolGroup.addTool(ArrowAnnotateTool.toolName, { arrowHeadStyle: 'standard', - changeTextCallback: async(data, eventData, doneChangingTextCallback) => { + changeTextCallback: async (data, eventData, doneChangingTextCallback) => { return doneChangingTextCallback(await this.customPrompt()) }, - getTextCallback: async(doneChangingTextCallback) => { + getTextCallback: async (doneChangingTextCallback) => { return doneChangingTextCallback(await this.customPrompt()) } }) @@ -730,9 +695,10 @@ export default { .none-dicom-viewer { display: flex; flex-direction: column; - width:100%; + width: 100%; height: 100%; user-select: none; + .tools-wrapper { height: 50px; display: flex; @@ -741,6 +707,7 @@ export default { align-items: center; border-bottom: 1px solid #727272; color: #ddd; + .tool-item { padding: 5px; margin: 0 5px; @@ -748,15 +715,19 @@ export default { font-size: 20px; cursor: pointer; } + .tool-item-active { background-color: #607d8b; } + .tool-disabled { cursor: not-allowed; } } + .viewports-wrapper { flex: 1; + .grid-container { display: grid; height: 100%; @@ -765,14 +736,17 @@ export default { } .grid-cell { - border: 1px dashed #ccc;; + border: 1px dashed #ccc; + ; display: flex; align-items: center; justify-content: center; } + .cell_active { - border-color: #fafa00!important; + border-color: #fafa00 !important; } + .cell-full-screen { grid-column: 1 / -1; grid-row: 1 / -1; @@ -782,6 +756,7 @@ export default { width: 100%; height: 100%; position: relative; + .left-top-text { position: absolute; left: 5px; @@ -789,27 +764,32 @@ export default { color: #ddd; z-index: 1; font-size: 12px; + .cd-info { color: #ddd; font-size: 18px; cursor: pointer; } + .subject-info { - color:#f44336; + color: #f44336; padding: 5px 0px; margin: 0; } } + .top-center-tool { position: absolute; - left:50%; + left: 50%; top: 5px; transform: translateX(-50%); z-index: 1; + .toggle-visit-container { display: flex; } - .arrw_icon{ + + .arrw_icon { width: 20px; height: 20px; background-color: #3f3f3f; @@ -817,15 +797,17 @@ export default { line-height: 20px; border-radius: 10%; } - .arrow_text{ + + .arrow_text { height: 20px; line-height: 20px; background-color: #00000057; color: #fff; - padding:0 10px; + padding: 0 10px; font-size: 14px; } } + .right-slider-box { position: absolute; right: 1px; @@ -837,7 +819,8 @@ export default { z-index: 1; cursor: pointer; } - .right-slider-box:after{ + + .right-slider-box:after { content: ''; position: absolute; bottom: -20px; @@ -846,12 +829,13 @@ export default { width: 100%; background: #333; } + .slider { height: 20px; width: 100%; position: absolute; top: 0; - z-index:10; + z-index: 10; background: #9e9e9e; cursor: move }