From 7001bc9ec07e517dc575d420dc5c4e11fe552672 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 15 Apr 2026 17:21:19 +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 --- .../reading/dicoms3D/components/MPRViewport.vue | 10 +++++----- .../reading/dicoms3D/components/ReadPage.vue | 5 +++++ .../reading/dicoms3D/components/Segmentations.vue | 3 ++- .../reading/dicoms3D/components/VolumeViewport.vue | 10 +++++----- .../dicoms3D/components/helpers/segmentations.js | 12 +++++++++--- 5 files changed, 26 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 e7577a70..9507761f 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 }}
@@ -225,7 +225,7 @@ export default { DicomEvent.$on('renderSegmentation', async (viewportId) => { // if (this.curSegSeries.Id !== this.series.Id || this.curSegSeries.VisitTaskId !== this.series.VisitTaskId) return false if (this.viewportId !== viewportId) return false - await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.segmentationId, this.segmentIndex, this.renderingEngineId, null, this.actionConfiguration) + await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.renderingEngineId, null, this.actionConfiguration) }) }, watch: { @@ -612,8 +612,8 @@ export default { renderingEngine.render() }, 100) } - await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.segmentationId, this.segmentIndex, this.renderingEngineId, null, this.actionConfiguration) - DicomEvent.$emit('loading', this.viewportId) + await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.renderingEngineId, null, this.actionConfiguration) + DicomEvent.$emit('SegmentationLoading', this.viewportId) } 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 0d423a2f..5755b0d0 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue @@ -3212,6 +3212,11 @@ export default { this.$refs[series.TaskInfo.VisitTaskId][0].setSeriesActive(series.StudyIndex, series.SeriesIndex) } } + if (this.readingTool === 3) { + this.$nextTick(() => { + DicomEvent.$emit('SegmentationLoading', `${this.viewportKey}-${this.activeViewportIndex}`) + }) + } this.setToolsPassive() }, getRelatedSeries(visitTaskInfo, baselineSeries) { 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 f6e0306e..557da921 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/Segmentations.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/Segmentations.vue @@ -417,7 +417,7 @@ export default { let { segment, isChange = true, viewportId, series } = data DicomEvent.$emit('renderSegmentation', viewportId) }) - DicomEvent.$on('loading', (viewportId) => { + DicomEvent.$on('SegmentationLoading', (viewportId) => { if (viewportId !== `${this.viewportKey}-${this.activeViewportIndex}`) return false this.loading = false }) @@ -1625,6 +1625,7 @@ export default { // 获取分割组 async getSegmentationList(SEGMENT = null) { try { + this.$emit('setToolsPassive') let data = { SeriesId: this.series.Id, VisitTaskId: this.series.TaskInfo.VisitTaskId, diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/VolumeViewport.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/VolumeViewport.vue index bb0a74fb..664fb8aa 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/VolumeViewport.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/VolumeViewport.vue @@ -59,10 +59,10 @@
Location: {{ `${Number(imageInfo.location).toFixed(digitPlaces)} mm` - }}
+ }}
Slice Thickness: {{ `${Number(imageInfo.sliceThickness).toFixed(digitPlaces)} mm` - }}
+ }}
WW/WL: {{ imageInfo.wwwc }}
@@ -243,7 +243,7 @@ export default { DicomEvent.$on('renderSegmentation', async (viewportId) => { // if (this.curSegSeries.Id !== this.series.Id || this.curSegSeries.VisitTaskId !== this.series.VisitTaskId) return false if (this.viewportId !== viewportId) return false - await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.segmentationId, this.segmentIndex, this.renderingEngineId, null, this.actionConfiguration) + await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.renderingEngineId, null, this.actionConfiguration) }) }, watch: { @@ -674,8 +674,8 @@ export default { renderingEngine.render() }, 100) } - await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.segmentationId, this.segmentIndex, this.renderingEngineId, data.segment, this.actionConfiguration) - DicomEvent.$emit('loading', this.viewportId) + await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.renderingEngineId, data.segment, this.actionConfiguration) + DicomEvent.$emit('SegmentationLoading', this.viewportId) } catch (e) { console.log(e) } diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/helpers/segmentations.js b/src/views/trials/trials-panel/reading/dicoms3D/components/helpers/segmentations.js index 06146058..b1971b76 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/helpers/segmentations.js +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/helpers/segmentations.js @@ -341,7 +341,7 @@ function resetViewport(viewportId) { function changeColor(item, viewportId) { segmentation.config.color.setSegmentIndexColor(viewportId, item.segmentationId, item.segmentIndex, hex2Rgb(item.color)) } -async function renderSegmentation(series, visitInfo, viewportId, SegmentConfig, segmentationId, segmentIndex, RenderingEngineId, Segment = null, actionConfiguration) { +async function renderSegmentation(series, visitInfo, viewportId, SegmentConfig, RenderingEngineId, Segment = null, actionConfiguration) { try { // console.log(segmentation, 'segmentation') renderingEngineId = RenderingEngineId @@ -352,12 +352,14 @@ async function renderSegmentation(series, visitInfo, viewportId, SegmentConfig, PageSize: 9999, PageIndex: 1, } + let segmentationId = null; + let segmentIndex = null; let res = await getSegmentationList(data); if (res.IsSuccess) { let list = res.Result.CurrentPageData; for (let i = 0; i < list.length; i++) { let item = list[i] - + if (!segmentationId) segmentationId = item.Id await createSegmentation(viewportId, series.SeriesInstanceUid, item.Id) if (item.SEGUrl) await readSegmentation(item.SEGUrl, series, item.Id) createSegmentationRepresentation(viewportId, item.Id) @@ -375,6 +377,7 @@ async function renderSegmentation(series, visitInfo, viewportId, SegmentConfig, if (r.IsSuccess) { let segments = r.Result.CurrentPageData segments.forEach(s => { + if (!segmentIndex) segmentIndex = s.SegmentNumber let SegmentJson = s.SegmentJson ? JSON.parse(s.SegmentJson) : {}; segmentation.segmentIndex.setActiveSegmentIndex(s.SegmentationId, s.SegmentNumber); segmentation.config.color.setSegmentIndexColor(viewportId, s.SegmentationId, s.SegmentNumber, hex2Rgb(s.ColorRgb)) @@ -406,7 +409,10 @@ async function renderSegmentation(series, visitInfo, viewportId, SegmentConfig, // } // this.getBidirectional(obj.segments, null, false) // }) - selectSegment(viewportId, segmentationId, segmentIndex) + if (segmentationId && segmentIndex) { + selectSegment(viewportId, segmentationId, segmentIndex) + } + if (Segment) { jumpBidirectional(Segment, viewportId, series.SeriesInstanceUid) }