Compare commits
7 Commits
3bf3503c99
...
88b79e4aa1
| Author | SHA1 | Date |
|---|---|---|
|
|
88b79e4aa1 | |
|
|
4d808ed87c | |
|
|
0a3a4e3bb4 | |
|
|
0aab18924b | |
|
|
2bf9b21f40 | |
|
|
06d0ce2290 | |
|
|
1b6e53819c |
|
|
@ -179,17 +179,18 @@
|
|||
<Viewport ref="CT_AXIAL" :index="1" :active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo" :series-info="ctSeries"
|
||||
:rendering-engine-id="renderingEngineId" viewport-id="CT_AXIAL" :volume="ctVolume"
|
||||
:measure-datas="measureDatas" :style="1 === activeIndex ? viewportStyle : {}" />
|
||||
:measure-datas="measureDatas" :style="1 === activeIndex ? viewportStyle : {}"
|
||||
@fusionSlicePointChange="handleFusionSlicePointChange" />
|
||||
<Viewport ref="PT_AXIAL" :index="2" :active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo" :series-info="petSeries"
|
||||
:rendering-engine-id="renderingEngineId" viewport-id="PT_AXIAL" :volume="ptVolume"
|
||||
:measure-datas="measureDatas" :style="2 === activeIndex ? viewportStyle : {}"
|
||||
@upperRangeChange="upperRangeChange" />
|
||||
@upperRangeChange="upperRangeChange" @fusionSlicePointChange="handleFusionSlicePointChange" />
|
||||
<Viewport ref="FUSION_AXIAL" :index="3" :active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo" :series-info="petSeries" :ct-series-info="ctSeries"
|
||||
:rendering-engine-id="renderingEngineId" viewport-id="FUSION_AXIAL" :volume="ptVolume"
|
||||
:measure-datas="measureDatas" :rgb-preset-name="rgbPresetName" :style="3 === activeIndex ? viewportStyle : {}"
|
||||
@upperRangeChange="upperRangeChange" />
|
||||
@upperRangeChange="upperRangeChange" @fusionSlicePointChange="handleFusionSlicePointChange" />
|
||||
<Viewport ref="PET_MIP_CORONAL" :index="4" :active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo" :series-info="petSeries"
|
||||
:rendering-engine-id="renderingEngineId" viewport-id="PET_MIP_CORONAL" :measure-datas="measureDatas"
|
||||
|
|
@ -1186,6 +1187,36 @@ export default {
|
|||
}
|
||||
return colors[viewportId] || '#0000ff'
|
||||
},
|
||||
handleFusionSlicePointChange({ viewportId, worldPoint }) {
|
||||
if (!this.isFusion) return
|
||||
if (!viewportId || !Array.isArray(worldPoint) || worldPoint.length < 3) return
|
||||
if (viewportId === viewportIds.PETMIP.CORONAL) return
|
||||
|
||||
const activeViewportId = this.activeIndex === 1
|
||||
? viewportIds.CT.AXIAL
|
||||
: this.activeIndex === 2
|
||||
? viewportIds.PT.AXIAL
|
||||
: this.activeIndex === 3
|
||||
? viewportIds.FUSION.AXIAL
|
||||
: viewportIds.PETMIP.CORONAL
|
||||
if (viewportId !== activeViewportId) return
|
||||
|
||||
const renderEngine = getRenderingEngine(renderingEngineId)
|
||||
if (!renderEngine) return
|
||||
const toolGroupCandidates = [fusionToolGroupId, mipToolGroupUID, ptToolGroupId, ctToolGroupId]
|
||||
let instance = null
|
||||
for (const toolGroupId of toolGroupCandidates) {
|
||||
const toolGroup = ToolGroupManager.getToolGroup(toolGroupId)
|
||||
instance = toolGroup?.getToolInstance(FusionJumpToPointTool.toolName)
|
||||
if (instance?.setPoint) break
|
||||
}
|
||||
if (!instance?.setPoint) return
|
||||
|
||||
instance.setPoint(worldPoint, viewportId, renderEngine.id, {
|
||||
jumpToTargetViewports: false,
|
||||
dispatchEvent: false,
|
||||
})
|
||||
},
|
||||
dispatchFusionCenterPoint(retryCount = 0) {
|
||||
const renderEngine = getRenderingEngine(renderingEngineId)
|
||||
if (!renderEngine) return
|
||||
|
|
|
|||
|
|
@ -272,6 +272,24 @@ export default {
|
|||
this.renderColorBar(this.presetName)
|
||||
}
|
||||
}
|
||||
|
||||
if (this.index !== 4 && viewport) {
|
||||
const width = viewport.element.clientWidth
|
||||
const height = viewport.element.clientHeight
|
||||
let worldPoint = null
|
||||
if (width && height && viewport.canvasToWorld) {
|
||||
worldPoint = viewport.canvasToWorld([width / 2, height / 2])
|
||||
}
|
||||
if ((!worldPoint || worldPoint.length < 3) && viewport.getCamera) {
|
||||
worldPoint = viewport.getCamera()?.focalPoint
|
||||
}
|
||||
if (Array.isArray(worldPoint) && worldPoint.length >= 3) {
|
||||
this.$emit('fusionSlicePointChange', {
|
||||
viewportId: this.viewportId,
|
||||
worldPoint: [...worldPoint]
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
getOrientationMarker() {
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
|
|
|
|||
|
|
@ -270,6 +270,24 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
if (!this.isMip && viewport) {
|
||||
const width = this.element?.clientWidth
|
||||
const height = this.element?.clientHeight
|
||||
let worldPoint = null
|
||||
if (width && height && viewport.canvasToWorld) {
|
||||
worldPoint = viewport.canvasToWorld([width / 2, height / 2])
|
||||
}
|
||||
if ((!worldPoint || worldPoint.length < 3) && viewport.getCamera) {
|
||||
worldPoint = viewport.getCamera()?.focalPoint
|
||||
}
|
||||
if (Array.isArray(worldPoint) && worldPoint.length >= 3) {
|
||||
this.$emit('fusionSlicePointChange', {
|
||||
viewportId: this.viewportId,
|
||||
worldPoint: [...worldPoint],
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
setFullScreen(index) {
|
||||
setTimeout(() => {
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@
|
|||
:viewport-index="index" :active-tool="activeTool" @activeViewport="activeViewport"
|
||||
@toggleTaskByViewport="toggleTaskByViewport" @previewCD="previewCD"
|
||||
@renderAnnotations="renderAnnotations" @upperRangeChange="upperRangeChange"
|
||||
@contentMouseup="contentMouseup" />
|
||||
@contentMouseup="contentMouseup" @fusionSlicePointChange="handleFusionSlicePointChange" />
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="readingTool === 2" class="fusion-hidden-viewports">
|
||||
|
|
@ -2634,6 +2634,25 @@ export default {
|
|||
if (this.isFusion) return [this.fusionToolGroupId]
|
||||
return [`${this.viewportKey}-0`, `${this.viewportKey}-1`, `${this.viewportKey}-2`, `${this.viewportKey}-3`]
|
||||
},
|
||||
handleFusionSlicePointChange({ viewportId, worldPoint }) {
|
||||
if (!this.isFusion) return
|
||||
if (!viewportId || !Array.isArray(worldPoint) || worldPoint.length < 3) return
|
||||
|
||||
const activeFusionViewportId = `viewport-fusion-${this.activeViewportIndex}`
|
||||
if (viewportId !== activeFusionViewportId) return
|
||||
if (viewportId === 'viewport-fusion-3') return
|
||||
|
||||
const renderingEngine = getRenderingEngine(renderingEngineId)
|
||||
if (!renderingEngine) return
|
||||
const toolGroup = ToolGroupManager.getToolGroup(this.fusionToolGroupId)
|
||||
const instance = toolGroup?.getToolInstance(FusionJumpToPointTool.toolName)
|
||||
if (!instance?.setPoint) return
|
||||
|
||||
instance.setPoint(worldPoint, viewportId, renderingEngine.id, {
|
||||
jumpToTargetViewports: false,
|
||||
dispatchEvent: false,
|
||||
})
|
||||
},
|
||||
setFusionMipJumpEnabled(enabled) {
|
||||
if (!this.isFusion) return
|
||||
const toolGroup = ToolGroupManager.getToolGroup(this.fusionToolGroupId)
|
||||
|
|
@ -3455,6 +3474,10 @@ export default {
|
|||
async toggleTaskByViewport(obj) {
|
||||
const i = this.visitTaskList.findIndex(v => v.VisitTaskNum === obj.visitTaskNum)
|
||||
if (i === -1) return
|
||||
if (this.readingTool === 3) {
|
||||
let res = await this.changeScreenSave()
|
||||
if (!res) return false
|
||||
}
|
||||
this.activeTaskId = this.visitTaskList[i].VisitTaskId
|
||||
this.activeTaskIndex = i
|
||||
if (!this.selectArr.includes(this.activeTaskId)) {
|
||||
|
|
@ -3490,6 +3513,11 @@ export default {
|
|||
this.setToolsPassive()
|
||||
},
|
||||
async activeSeries(obj) {
|
||||
if (this.readingTool === 3) {
|
||||
let res = await this.changeScreenSave()
|
||||
if (!res) return false
|
||||
DicomEvent.$emit('activeSeries', obj)
|
||||
}
|
||||
if (this.isFusion || this.isMPR) {
|
||||
if (this.isFusion && this.$refs[`ecrf_${this.taskInfo.VisitTaskId}`][0].verifyAnnotationIsSave()) {
|
||||
const confirm = await this.$confirm(this.$t('trials:reading:confirm:clearnAnnotation'))
|
||||
|
|
|
|||
|
|
@ -171,11 +171,11 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="addSegmentBox" @click.stop="addSegment"
|
||||
style="display: flex;align-items: center;justify-content: space-between;"
|
||||
v-if="readingTaskState < 2">
|
||||
<span><i class="el-icon-plus"></i>
|
||||
style="display: flex;align-items: center;justify-content: space-between;">
|
||||
<span v-if="readingTaskState < 2"><i class="el-icon-plus"></i>
|
||||
{{ $t('trials:reading:Segmentations:button:addSegment') }}
|
||||
</span>
|
||||
<span style="width: 10px;" v-else></span>
|
||||
<svg-icon :icon-class="!curSegmentGroup.view ? 'eye' : 'eye-open'"
|
||||
@click.stop="viewSegmentGroup(segmentList.find(i => i.segmentationId === segmentationId))" />
|
||||
</div>
|
||||
|
|
@ -977,7 +977,7 @@ export default {
|
|||
this.selectSegment(this.segmentList[groupIndex].segments[0])
|
||||
}
|
||||
this.$emit('resetQuestion')
|
||||
this.saveSegmentGroup([this.segmentList[groupIndex]], false)
|
||||
this.saveSegmentGroup([this.segmentList[groupIndex]], true)
|
||||
|
||||
},
|
||||
resetViewport(passive = true) {
|
||||
|
|
|
|||
|
|
@ -199,10 +199,9 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
activeSeries(series, seriesIndex, studyIndex) {
|
||||
this.$emit('activeSeries', series)
|
||||
this.activeStudyIndex = studyIndex
|
||||
this.activeSeriesIndex = seriesIndex
|
||||
this.$emit('activeSeries', series)
|
||||
DicomEvent.$emit('activeSeries', series)
|
||||
},
|
||||
activeStudy(id) {
|
||||
if (this.activeNames.indexOf(id) > -1) return
|
||||
|
|
@ -267,6 +266,7 @@ export default {
|
|||
// display: inline-block;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.patient-info-popper {
|
||||
font-size: 12px;
|
||||
color: #ddd;
|
||||
|
|
@ -291,7 +291,7 @@ export default {
|
|||
line-height: 18px;
|
||||
}
|
||||
|
||||
.patient-info-popper .patient-info-row + .patient-info-row {
|
||||
.patient-info-popper .patient-info-row+.patient-info-row {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue