Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web
continuous-integration/drone/push Build is passing Details

uat
wangxiaoshuang 2025-04-21 09:47:31 +08:00
commit 4249ccd9d6
3 changed files with 58 additions and 18 deletions

View File

@ -25,6 +25,7 @@
v-if="selectArr.includes(s.VisitTaskId) && s.StudyList.length > 0"
:ref="s.VisitTaskId"
:visit-task-info="s"
:markedSeriesIds="markedSeriesIds"
@activeSeries="activeSeries"
/>
@ -573,7 +574,8 @@ export default {
lastViewportTaskId: '',
digitPlaces: 2,
instanceInfo: {},
lastViewportTaskIds: []
lastViewportTaskIds: [],
markedSeriesIds: []
}
},
computed: {
@ -711,7 +713,16 @@ export default {
if (!this.selectArr.includes(item.VisitTaskId)) {
this.selectArr.push(item.VisitTaskId)
}
if (item.IsCurrentTask) {
this.markedSeriesIds = []
annotations.map(i=> {
if (i.MeasureData && i.MeasureData.seriesId) {
this.markedSeriesIds.push(i.MeasureData.seriesId)
}
})
}
}
this.visitTaskList.push({
...item,
StudyList: studyList,
@ -1075,7 +1086,6 @@ export default {
})
},
addAnnotationListeners() {
console.log(toolsEvents)
const debouncedCallback = this.debounce((evt) => {
this.annotationModifiedListener(evt)
}, 100)
@ -1109,7 +1119,7 @@ export default {
console.log(arr)
},
annotationAddedListener(e) {
console.log('annotationAddedListener', e)
},
annotationCompletedListener(e) {
console.log('Completed')
@ -1128,9 +1138,12 @@ export default {
annotation.sliceThickness = series.SliceThickness
annotation.numberOfFrames = isNaN(parseInt(params.frame)) ? null : parseInt(params.frame)
annotation.markTool = annotation.metadata.toolName
// this.$refs['ecrf'].setAnnotation({ annotation, toolName: annotation.metadata.toolName })
this.$refs[`ecrf_${this.lastViewportTaskId}`][0].setAnnotation({ annotation, toolName: annotation.metadata.toolName })
this.markedSeriesIds.push(series.Id)
}
this.setToolsPassive()
},
annotationModifiedListener(e) {
@ -1147,7 +1160,16 @@ export default {
this.setToolsPassive()
},
annotationRemovedListener(e) {
if (this.readingTaskState === 2) return
const { annotation } = e.detail
if (!annotation) return
if (annotation.visitTaskId === this.taskInfo.VisitTaskId && annotation.seriesId) {
const index = this.markedSeriesIds.indexOf(annotation.seriesId)
if (index !== -1) {
this.markedSeriesIds.splice(index, 1)
}
}
console.log(this.markedSeriesIds)
},
removeAnnotation(annotation) {
cornerstoneTools.annotation.state.removeAnnotation(annotation.annotationUID)
@ -1433,11 +1455,11 @@ export default {
viewport.render()
} else if (type === 4) {
const { rotation } = viewport.getViewPresentation()
viewport.setViewPresentation({ rotation: rotation + 90 })
viewport.setViewPresentation({ rotation: rotation === 0 ? 270 : rotation - 90 })
viewport.render()
} else if (type === 5) {
const { rotation } = viewport.getViewPresentation()
viewport.setViewPresentation({ rotation: rotation - 90 })
viewport.setViewPresentation({ rotation: rotation + 90 })
viewport.render()
}
this.$refs[`viewport-${this.activeViewportIndex}`][0].rotateOrientationMarkers(type)
@ -1624,10 +1646,9 @@ export default {
bindHotKey() {
const container = this.$refs['container']
container.addEventListener('keydown', event => {
event.preventDefault()
var idx = this.hotKeyList.findIndex(i => i.code === event.code && i.ctrlKey === event.ctrlKey && i.shiftKey === event.shiftKey && i.altKey === event.altKey)
let idx = this.hotKeyList.findIndex(i => i.code === event.code && i.ctrlKey === event.ctrlKey && i.shiftKey === event.shiftKey && i.altKey === event.altKey)
if (idx === -1) return
var shortcutKeyEnum = this.hotKeyList[idx].shortcutKeyEnum
let shortcutKeyEnum = this.hotKeyList[idx].shortcutKeyEnum
if (shortcutKeyEnum === 1) {
//
@ -1705,6 +1726,9 @@ export default {
const viewportIds = ['viewport-0', 'viewport-1', 'viewport-2', 'viewport-3']
renderingEngine.renderViewports(viewportIds)
}
event.stopImmediatePropagation()
event.stopPropagation()
event.preventDefault()
})
},
//
@ -2006,12 +2030,15 @@ export default {
return
} else if (Object.keys(firstAddSeries).length !== 0 && Object.keys(currentAddSeries).length === 0) {
// 访
currentAddSeries = this.getRelatedSeries(this.visitTaskList[index], firstAddSeries)
// currentAddSeries = this.getRelatedSeries(this.visitTaskList[index], firstAddSeries)
if (Object.keys(currentAddSeries).length === 0) {
//
currentAddSeries = this.$refs[`viewport-${this.cells.length - 1}`][0].series
}
// if (Object.keys(currentAddSeries).length === 0) {
// //
// currentAddSeries = this.$refs[`viewport-${this.cells.length - 1}`][0].series
// }
//
currentAddSeries = this.$refs[`viewport-${this.cells.length - 1}`][0].series
}
} else {
//
@ -2026,6 +2053,7 @@ export default {
if (i === this.cells.length - 1) {
this.$refs[`viewport-${i}`][0].setSeriesInfo(currentAddSeries, true)
this.activeViewportIndex = i
this.$refs[currentAddSeries.TaskInfo.VisitTaskId][0].setSeriesActive(currentAddSeries.StudyIndex, currentAddSeries.SeriesIndex)
} else {
this.$refs[`viewport-${i}`][0].setSeriesInfo(firstAddSeries, true)
}

View File

@ -48,7 +48,7 @@
<div class="dicom-list-container">
<div
v-for="(series, i) in study.SeriesList"
:key="i"
:key="series.Id"
style="position:relative;margin-top:1px;"
@click="activeSeries(series, i, index)"
>
@ -80,8 +80,8 @@
</span>
<span v-show="series.LoadedImageCount >= series.InstanceCount">{{ series.Modality }}: {{ series.InstanceCount }} image</span>
</div>
<div v-show="series.IsBeMark">
<i class="el-icon-star-on" style="font-size: 16px;color: #ff5722;" />
<div style="line-height: 12px;">
<i v-show="series.IsBeMark || markedSeriesIds.includes(series.Id)" class="el-icon-star-on" style="font-size: 12px;color: #ff5722;" />
</div>
</div>
</div>
@ -106,6 +106,12 @@ export default {
default() {
return {}
}
},
markedSeriesIds: {
type: Array,
default() {
return []
}
}
},
data() {

View File

@ -110,6 +110,9 @@ import {
utilities as csUtils
} from '@cornerstonejs/core'
import * as cornerstoneTools from '@cornerstonejs/tools'
const {
ToolGroupManager
} = cornerstoneTools
import { vec3 } from 'gl-matrix'
export default {
name: 'ImageViewport',
@ -202,6 +205,9 @@ export default {
// this.imageInfo.wwwc = `${Math.round(detail.image.windowWidth)}/${Math.round(detail.image.windowCenter)}`
this.getOrientationMarker()
this.$emit('renderAnnotations', this.series)
// const toolGroupId = `viewport-${this.viewportIndex}`
// const toolGroup = ToolGroupManager.getToolGroup(toolGroupId)
// toolGroup.setToolEnabled('ScaleOverlay');
},
voiModified(e) {
const renderingEngine = getRenderingEngine(this.renderingEngineId)
@ -284,7 +290,7 @@ export default {
const viewport = renderingEngine.getViewport(this.viewportId)
if (isPlay) {
cornerstoneTools.utilities.cine.playClip(viewport.element, { framesPerSecond })
cornerstoneTools.utilities.cine.playClip(viewport.element, { framesPerSecond, loop: false })
} else {
cornerstoneTools.utilities.cine.stopClip(viewport.element)
}