From 5a7fa1fb77151e34e31fb684c20a566183604510 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 9 Apr 2026 18:08:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E5=89=B2=E9=83=A8=E5=88=86=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dicoms3D/components/MPRViewport.vue | 24 +++++++++++++++---- .../reading/dicoms3D/components/ReadPage.vue | 18 +++++++------- .../dicoms3D/components/SegmentForm.vue | 8 +++++-- .../dicoms3D/components/Segmentations.vue | 5 ++++ 4 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/MPRViewport.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/MPRViewport.vue index 76505d17..f715b4ee 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/MPRViewport.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/MPRViewport.vue @@ -40,10 +40,10 @@
Location: {{ `${Number(imageInfo.location).toFixed(digitPlaces)} mm` - }}
+ }}
Slice Thickness: {{ `${Number(imageInfo.sliceThickness).toFixed(digitPlaces)} mm` - }}
+ }}
WW/WL: {{ imageInfo.wwwc }}
@@ -76,7 +76,9 @@ import * as cornerstoneTools from '@cornerstonejs/tools' import { createImageIdsAndCacheMetaData } from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/createImageIdsAndCacheMetaData' import setCtTransferFunctionForVolumeActor from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setCtTransferFunctionForVolumeActor' import { setCtMappingRange } from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setCtTransferFunctionForVolumeActor' -import { setPetColorMapTransferFunctionForVolumeActor } from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setPetColorMapTransferFunctionForVolumeActor' +import { + setPetTransferFunctionForVolumeActor +} from './helpers/index.js' import { vec3, mat4 } from 'gl-matrix' import DicomEvent from '@/views/trials/trials-panel/reading/dicoms/components/DicomEvent' export default { @@ -99,6 +101,10 @@ export default { default: () => { return {} } + }, + histogramVisible: { + type: Boolean, + default: false } }, data() { @@ -183,6 +189,7 @@ export default { this.element.addEventListener("CORNERSTONE_VOLUME_NEW_IMAGE", this.stackNewImage) this.element.addEventListener('CORNERSTONE_VOI_MODIFIED', this.voiModified) this.element.addEventListener('wheel', (e) => { + if (this.histogramVisible) return false // console.log('CORNERSTONE_STACK_VIEWPORT_SCROLL') const renderingEngine = getRenderingEngine(this.renderingEngineId) const viewport = renderingEngine.getViewport(this.viewportId) @@ -490,7 +497,7 @@ export default { .setVolumes([{ volumeId: this.volumeId, callback: (r) => { if (this.series.Modality === 'PT') { - setPetColorMapTransferFunctionForVolumeActor(r, true) + setPetTransferFunctionForVolumeActor(r) } else { let volume = cache.getVolume(this.volumeId) const voi = metaData.get('voiLutModule', volume._imageIds[Math.ceil((volume._imageIds.length - 1) / 2)]) @@ -506,6 +513,15 @@ export default { } }) viewport.render() + if (this.series.Modality === 'PT') { + setTimeout(() => { + viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true }) + viewport.resetProperties() + viewport.setProperties({ voiRange: { upper: 5, lower: 0 } }) + viewport.render() + renderingEngine.render() + }, 100) + } } catch (e) { console.log(e) } 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 c14419a2..c8b803b5 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue @@ -315,8 +315,9 @@ :rendering-engine-id="renderingEngineId" :viewport-id="`viewport-${index}`" :viewport-index="index" :histogramVisible="histogramVisible" @activeViewport="activeViewport" @toggleTaskByViewport="toggleTaskByViewport" @previewCD="previewCD" - @renderAnnotations="renderAnnotations" @contentMouseup="contentMouseup" @resetViewport="resetViewport" - v-if="readingTool === 3" v-resize="(e) => handleSizeChange(e, `viewport-${index}`)" /> + @renderAnnotations="renderAnnotations" @contentMouseup="contentMouseup" + @resetViewport="resetViewport" v-if="readingTool === 3" + v-resize="(e) => handleSizeChange(e, `viewport-${index}`)" /> + :actionConfiguration="actionConfiguration" :histogramVisible="histogramVisible" + @setToolsPassive="setToolsPassive" @resetQuestion="resetQuestion" />
{ const toolGroup = ToolGroupManager.getToolGroup(id) if (this.histogramVisible) { @@ -894,6 +895,7 @@ export default { }) for (let i = 0; i < this.cells.length; i++) { const viewportId = `${this.viewportKey}-${i}` + let renderingEngine = getRenderingEngine(renderingEngineId) const viewport = renderingEngine.getViewport(viewportId) viewport.render() } diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/SegmentForm.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/SegmentForm.vue index e9fdb181..c72d319c 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/SegmentForm.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/SegmentForm.vue @@ -113,8 +113,12 @@ export default { if (find) { this.form.studyId = this.series.StudyId this.handleChange(null, 'study') - this.form.seriesId = this.series.Id - this.handleChange(null, 'series') + let findSeries = find.SeriesArr.some(item => item.Id === this.form.seriesId) + if (findSeries) { + this.form.seriesId = this.series.Id + this.handleChange(null, 'series') + } + } } diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/Segmentations.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/Segmentations.vue index 08ce4f15..3024c415 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/Segmentations.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/Segmentations.vue @@ -322,6 +322,10 @@ export default { globalLoading: { type: Boolean, default: false + }, + histogramVisible: { + type: Boolean, + default: false } }, data() { @@ -561,6 +565,7 @@ export default { setToolActive(toolName) { if (this.segmentList.length <= 0) return false if (this.curSegment.lock) return false + if (this.histogramVisible && !this.ThresholdTools.includes(toolName)) return false const toolGroupId = this.isMPR ? this.volumeToolGroupId : `${this.viewportKey}-${this.activeViewportIndex}` const toolGroup = ToolGroupManager.getToolGroup(toolGroupId) if (this.activeTool === toolName) {