From 5a943fbefe0bd68a0b1126fe8a4248c1b87c0e2c Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Fri, 24 Apr 2026 16:03:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E5=89=B2=E9=97=AE=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/icons/svg/exit_mpr.svg | 1 + .../dicoms3D/components/MPRViewport.vue | 7 ++--- .../reading/dicoms3D/components/ReadPage.vue | 26 ++++++++++++++++--- .../dicoms3D/components/Segmentations.vue | 18 ++++++++----- .../dicoms3D/components/VolumeViewport.vue | 7 ++--- .../reading/dicoms3D/components/histogram.vue | 18 +++++++++++-- 6 files changed, 60 insertions(+), 17 deletions(-) create mode 100644 src/icons/svg/exit_mpr.svg diff --git a/src/icons/svg/exit_mpr.svg b/src/icons/svg/exit_mpr.svg new file mode 100644 index 00000000..35fc2d38 --- /dev/null +++ b/src/icons/svg/exit_mpr.svg @@ -0,0 +1 @@ + \ No newline at end of file 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 370deaac..5f1a9124 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 }}
@@ -512,7 +512,7 @@ export default { const renderingEngine = getRenderingEngine(this.renderingEngineId) const viewport = renderingEngine.getViewport(this.viewportId) const currentImageIdIndex = viewport.getCurrentImageIdIndex() - const numImages = viewport.getImageIds().length + const numImages = this.imageInfo.total let newImageIdIndex = null if (type === 0) { newImageIdIndex = 0 @@ -628,6 +628,7 @@ export default { let volume = cache.getVolume(this.volumeId) // console.log(volume, 'volume') if (this.series.orientation === 'AXIAL' && this.series.curIndex) return this.setFullScreen(this.series.curIndex) + console.log(this.series.orientation, this.series.curIndex) let index = this.series.orientation === 'AXIAL' ? Math.ceil((volume._imageIds.length - 1) / 2) - 1 : Math.ceil((volume.dimensions[0]) / 2) - 1 this.setFullScreen(index) } catch (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 70f042bc..15791bf2 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue @@ -162,9 +162,14 @@
+ v-if="((criterionType === 0 && readingTool === 0) || this.readingTool === 3) && !isMPR">
+ +
+ +
@@ -477,7 +482,7 @@ - + @@ -1019,6 +1024,15 @@ export default { // this.$refs.surfaceViewport.setSeriesInfo(obj) }, async openHistogram() { + const renderingEngine = getRenderingEngine(this.renderingEngineId) + let viewportId = `${this.viewportKey}-${this.activeViewportIndex}` + const viewport = renderingEngine.getViewport(viewportId) + let imageIds = viewport.getImageIds(this.$refs[viewportId][0].volumeId) + let imageId = imageIds[0] + const imagePixelModule = metaData.get('imagePixelModule', imageId); + const photometricInterpretation = imagePixelModule?.photometricInterpretation; + console.log(photometricInterpretation, 'photometricInterpretation') + if (photometricInterpretation && photometricInterpretation !== 'MONOCHROME1' && photometricInterpretation !== 'MONOCHROME2') return this.$confirm(this.$t('trials:histogram:confirm:photometricInterpretationNotSupported')) this.histogramVisible = true this.setToolsPassive() this.$refs.histogram.init() @@ -2304,7 +2318,7 @@ export default { '#ffd10a', '#b6d634', ] - + if (viewportId === 'viewport-fusion-hidden-sag') { return colors[colors.length - 1] } else { @@ -4100,7 +4114,10 @@ export default { }, async openMPRViewport(data = null) { return new Promise(async (resolve, reject) => { + this.setToolsPassive() if (this.isMPR) { + this.activeSeries(this.$refs[`viewport-MPR-0`][0].series) + resolve(false) if (!data) return resolve(false) let viewportSeries = this.$refs[`viewport-MPR-0`][0].series if (data && viewportSeries.SeriesInstanceUid === data.SeriesInstanceUid) return resolve(true) @@ -4132,9 +4149,12 @@ export default { await this.getVolume(series) this.loading = false this.loadingText = null + delete series.orientation + delete series.isLocation this.$refs[`viewport-MPR-0`][0].setSeriesInfo(Object.assign({ orientation: 'AXIAL', isLocation: data && this.activeViewportIndex === 0 }, series)) this.$refs[`viewport-MPR-1`][0].setSeriesInfo(Object.assign({ orientation: 'SAGITTAL', isLocation: data && this.activeViewportIndex === 1 }, series)) this.$refs[`viewport-MPR-2`][0].setSeriesInfo(Object.assign({ orientation: 'CORONAL', isLocation: data && this.activeViewportIndex === 2 }, series)) + this.setToolActive('Crosshairs') resolve(false) }) 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 36b2b14d..281c4e93 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/Segmentations.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/Segmentations.vue @@ -1,5 +1,9 @@