diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/FusionForm.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/FusionForm.vue index afd0ae57..da679bdf 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/FusionForm.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/FusionForm.vue @@ -2,7 +2,7 @@ - + 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 f0d86632..0da8dbf4 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue @@ -1468,11 +1468,11 @@ export default { this.setToolsPassive() }, async customAnnotationRemovedListener(e) { - if (this.readingTaskState === 2) return const { annotation } = e.detail - if (!annotation) return - if (annotation.visitTaskId === this.taskInfo.VisitTaskId && annotation.seriesId) { - try { + try{ + if (!annotation) return false + if (this.readingTaskState === 2) throw 'annotation Not allowed to operate' + if (annotation.visitTaskId === this.taskInfo.VisitTaskId && annotation.seriesId) { if (this.activeTool === 'Eraser') { await this.$confirm( this.$t('trials:trials-list:table:isDeleted') + @@ -1493,16 +1493,18 @@ export default { const viewport = renderingEngine.getViewport(viewportId) viewport.render() } - } catch (e) { - cornerstoneTools.annotation.state.addAnnotation(annotation) - const renderingEngine = getRenderingEngine(renderingEngineId) - for (let i = 0; i < this.cells.length; i++) { - const viewportId = `${this.viewportKey}-${i}` - const viewport = renderingEngine.getViewport(viewportId) - viewport.render() - } - console.log(e) + } else { + throw 'annotation Not allowed to operate' } + }catch(e){ + cornerstoneTools.annotation.state.addAnnotation(annotation) + const renderingEngine = getRenderingEngine(renderingEngineId) + for (let i = 0; i < this.cells.length; i++) { + const viewportId = `${this.viewportKey}-${i}` + const viewport = renderingEngine.getViewport(viewportId) + viewport.render() + } + console.log(e) } }, removeAnnotation(annotation) { @@ -2741,8 +2743,8 @@ export default { if (!this.fusionSerieId.pt || this.fusionSerieId.pt !== pt.SeriesInstanceUid ) { this.fusionSerieId.pt = pt.SeriesInstanceUid } - await this.getVolume(ct) await this.getVolume(pt) + await this.getVolume(ct) await this.getVolume(pt, true) this.loading = false this.loadingText = null @@ -2788,22 +2790,35 @@ export default { return false }, async getVolume(serie, isFusion = false ) { - let volumeId = null, volume = null - let key = isFusion ? `fusion_${serie.SeriesInstanceUid}` : serie.SeriesInstanceUid - if(!this.volumeData[key] || !cache.getVolume(this.volumeData[key].volumeId)) { - await this.$refs[`viewport-fusion-0`][0].createImageIdsAndCacheMetaData(serie) - volumeId = `${isFusion ? 'fusion' : serie.Modality}Volume` + ':' + csUtils.uuidv4() - volume = await volumeLoader.createAndCacheVolume(volumeId, { imageIds: serie.ImageIds }) - volume.load() - this.volumeData[key] = {} - this.volumeData[key].volumeId = volumeId - this.volumeData[key].volume = volume - } else { - volumeId = this.volumeData[key].volumeId - volume = this.volumeData[key].volume - } + return new Promise(async res => { + let volumeId = null, volume = null + let key = isFusion ? `fusion_${serie.SeriesInstanceUid}` : serie.SeriesInstanceUid + if(!this.volumeData[key] || !cache.getVolume(this.volumeData[key].volumeId)) { + if ( serie.Modality === 'PT' && !isFusion ) { + serie.ImageIds.forEach(async id => { + const imageLoadObject = cache.getImage(id); + if (imageLoadObject) { + await new Promise(res => { + cache.removeImageLoadObject(id, {force:true}); // 从缓存中删除 + res() + }) + } + }) + } + await this.$refs[`viewport-fusion-0`][0].createImageIdsAndCacheMetaData(serie) + volumeId = `${isFusion ? 'fusion' : serie.Modality}Volume` + ':' + csUtils.uuidv4() + volume = await volumeLoader.createAndCacheVolume(volumeId, { imageIds: serie.ImageIds }) + volume.load() + this.volumeData[key] = {} + this.volumeData[key].volumeId = volumeId + this.volumeData[key].volume = volume + } else { + volumeId = this.volumeData[key].volumeId + volume = this.volumeData[key].volume + } - return { volumeId, volume } + res({ volumeId, volume }) + }) }, upperRangeChange(upper) { this.$refs.colorMap.upper = upper