多帧对齐更改
continuous-integration/drone/push Build is passing Details

uat
caiyiling 2025-04-22 15:00:35 +08:00
parent d6a3bcba30
commit 2784958ccb
3 changed files with 30 additions and 18 deletions

View File

@ -190,14 +190,14 @@
</div>
</div>
<!-- 适应图像或窗口 -->
<!-- <div
<div
class="tool-item"
:title="forceFitToWindow ? `${$t('trials:reading:button:fitWindow')}` : `${$t('trials:reading:button:fitImage')}`"
@click.prevent="fitToType(forceFitToWindow)"
>
<svg-icon v-if="forceFitToWindow" icon-class="fitToWindow" class="svg-icon" />
<svg-icon v-else icon-class="fitToImage" class="svg-icon" />
</div> -->
</div>
<div
v-for="tool in tools"
:key="tool.toolName"
@ -568,7 +568,7 @@ export default {
fps: 15,
manualsDialog: { visible: false, isFullscreen: false },
hotKeyList: [],
forceFitToWindow: true,
forceFitToWindow: false,
isShowAnnotations: true,
clinicalDataVisible: false,
isClinicalDataFullscreen: false,
@ -780,11 +780,11 @@ export default {
} else {
//
for (let i = 0; i < nFrames; i++) {
const newImageId = `wadouri:${this.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${taskId}&frame=${i + 1}`
const newImageId = `wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}&frame=${i + 1}`
stack.push(newImageId)
}
}
imageIds.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${taskId}`)
imageIds.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}`)
this.instanceInfo[instance.Id] = { taskIndex, studyIndex, seriesIndex }
}
})
@ -1154,6 +1154,8 @@ export default {
console.log('Modified')
if (this.readingTaskState === 2) return
const { annotation } = e.detail
console.log(annotation.highlighted)
if (!annotation.highlighted) return
if (!annotation) return
if (annotation.metadata.toolName === 'PlanarFreehandROI' && !annotation.data.contour.closed) return
const series = this.$refs[`viewport-${this.activeViewportIndex}`][0].series
@ -1744,8 +1746,9 @@ export default {
})
},
fitToType(forceFitToWindow) {
this.$refs[`viewport-${this.activeViewportIndex}`][0].resize(forceFitToWindow)
this.forceFitToWindow = !forceFitToWindow
this.$refs[`viewport-${this.activeViewportIndex}`][0].resize(forceFitToWindow)
},
//
toggleFullScreen(e, index) {
@ -1862,7 +1865,7 @@ export default {
if (baselineSeries.IsMarked) {
const i = annotations.findIndex(i => Object.keys(i.MeasureData).length > 0 && i.OrderMarkName === baselineSeries.MeasureData.OrderMarkName)
if (i > -1) {
obj = this.getMarkedSeries(studyList, annotations[i])
obj = this.getMarkedSeries(studyList, annotations[i].MeasureData)
}
}
if (Object.keys(obj).length === 0) {
@ -1906,7 +1909,7 @@ export default {
const i = annotations.findIndex(a => Object.keys(a.MeasureData).length > 0)
if (i > -1) {
//
obj = this.getMarkedSeries(studyList, annotations[i])
obj = this.getMarkedSeries(studyList, annotations[i].MeasureData)
} else {
for (let k = 0; k < studyList.length; k++) {
const seriesIdx = studyList[k].SeriesList.findIndex(s => s.SliceThickness && parseInt(s.SliceThickness) === 5)
@ -1935,21 +1938,21 @@ export default {
},
getMarkedSeries(studyList, annotation) {
let obj = {}
const sIdx = studyList.findIndex(s => s.StudyId === annotation.StudyId)
const sIdx = studyList.findIndex(s => s.StudyId === annotation.studyId)
if (sIdx > -1) {
const seriesList = studyList[sIdx].SeriesList
const seriesIdx = seriesList.findIndex(s => s.Id === annotation.SeriesId)
const seriesIdx = seriesList.findIndex(s => s.Id === annotation.seriesId)
if (seriesIdx > -1) {
const instanceIdx = seriesList[seriesIdx].InstanceInfoList.findIndex(i => i.Id === annotation.InstanceId)
const instanceIdx = seriesList[seriesIdx].InstanceInfoList.findIndex(i => i.Id === annotation.instanceId)
let filterStr = ''
if (instanceIdx > -1 && seriesList[seriesIdx].IsExistMutiFrames) {
if (seriesList[seriesIdx].InstanceInfoList[instanceIdx].NumberOfFrames > 0) {
filterStr = `frame=${annotation.MeasureData.frame}&instanceId=${annotation.InstanceId}`
filterStr = `instanceId=${annotation.instanceId}&frame=${annotation.numberOfFrames}`
} else {
filterStr = `instanceId=${annotation.InstanceId}`
filterStr = `instanceId=${annotation.instanceId}`
}
} else {
filterStr = `instanceId=${annotation.InstanceId}`
filterStr = `instanceId=${annotation.instanceId}`
}
const stack = seriesList[seriesIdx].Stack
const imageIdIdx = stack.findIndex(is => is.includes(filterStr))
@ -2027,7 +2030,7 @@ export default {
}
const annotationIdx = this.visitTaskList[taskIdx].Annotations.findIndex(i => i.OrderMarkName === obj.lesionName)
if (annotationIdx > -1) {
firstAddSeries = this.getMarkedSeries(this.visitTaskList[taskIdx].StudyList, this.visitTaskList[taskIdx].Annotations[annotationIdx])
firstAddSeries = this.getMarkedSeries(this.visitTaskList[taskIdx].StudyList, this.visitTaskList[taskIdx].Annotations[annotationIdx].MeasureData)
}
}
if (obj.isMarked) {

View File

@ -111,7 +111,7 @@
</div>
</div>
</div>
<div v-if="series.IsDicom && series.LoadedImageProgress>0 && series.LoadedImageProgress<series.InstanceCount * 100" style="width: 100%;">
<div v-if="series.LoadedImageCount > 0 && series.LoadedImageCount < series.InstanceCount" style="width: 100%;">
<el-progress
:percentage="parseInt((series.LoadedImageProgress / series.InstanceCount).toFixed(2))"
/>

View File

@ -329,7 +329,15 @@ export default {
resize(forceFitToWindow) {
console.log('resize: ', forceFitToWindow)
const renderingEngine = getRenderingEngine(this.renderingEngineId)
renderingEngine.resize(true, forceFitToWindow)
const viewport = renderingEngine.getViewport(this.viewportId)
if (!forceFitToWindow) {
viewport.setZoom(0.5)
viewport.render()
} else {
viewport.setZoom(1)
viewport.render()
}
},
async prefetchMetadataInformation(imageIdsToPrefetch) {
let taskPromises = []
@ -346,10 +354,11 @@ export default {
if (this.series && obj.Id === this.series.Id && obj.Description === this.series.Description && !isLocate) {
obj.SliceIndex = this.series.SliceIndex
}
if (isLocate && obj.SliceIndex === this.series.SliceIndex) return
this.series = { ...obj }
const renderingEngine = getRenderingEngine(this.renderingEngineId)
const viewport = renderingEngine.getViewport(this.viewportId)
await this.prefetchMetadataInformation(obj.ImageIds)
this.prefetchMetadataInformation(obj.ImageIds)
await viewport.setStack(this.series.Stack, obj.SliceIndex)
// cornerstoneTools.utilities.stackContextPrefetch.enable(viewport.element)
viewport.render()