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)
}