1
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
f1b816fd85
commit
3f63c126ff
|
@ -1,6 +1,11 @@
|
|||
<template>
|
||||
<div v-loading="loading" :element-loading-text="loadingText" element-loading-spinner="el-icon-loading"
|
||||
element-loading-background="rgba(0, 0, 0, 0.8)" class="read-page-container">
|
||||
<div
|
||||
v-loading="loading"
|
||||
:element-loading-text="loadingText"
|
||||
element-loading-spinner="el-icon-loading"
|
||||
element-loading-background="rgba(0, 0, 0, 0.8)"
|
||||
class="read-page-container"
|
||||
>
|
||||
<!-- 检查列表 -->
|
||||
<div class="left-panel">
|
||||
<div class="task-container">
|
||||
|
@ -200,7 +205,7 @@
|
|||
<svg-icon v-else icon-class="fitToImage" class="svg-icon" />
|
||||
</div>
|
||||
<!--融合-->
|
||||
<div class="tool-item" :title="$t('trials:lugano:button:fusion')" @click.prevent="openFusion" v-if="readingTool === 2">
|
||||
<div v-if="readingTool === 2" class="tool-item" :title="$t('trials:lugano:button:fusion')" @click.prevent="openFusion">
|
||||
<svg-icon icon-class="fusion" class="svg-icon" />
|
||||
</div>
|
||||
<div
|
||||
|
@ -279,9 +284,9 @@
|
|||
<div
|
||||
v-if="criterionType === 0"
|
||||
:title="$t('trials:reading:button:more')"
|
||||
:class="['tool-item', readingTaskState === 2 ? 'tool-disabled' : '']"
|
||||
@click.stop="showPanel($event)"
|
||||
@mouseleave="toolMouseout"
|
||||
:class="['tool-item', readingTaskState === 2 ? 'tool-disabled' : '']"
|
||||
>
|
||||
<div class="dropdown">
|
||||
<div
|
||||
|
@ -292,10 +297,10 @@
|
|||
<i class="el-icon-arrow-down" style="color:#fff;" />
|
||||
</div>
|
||||
<div class="dropdown-content">
|
||||
<ul style="width:100px;" v-if="readingTaskState < 2">
|
||||
<ul v-if="readingTaskState < 2" style="width:100px;">
|
||||
<li v-for="i in customizeStandards" :key="i.toolName" style="text-align:left;">
|
||||
<a href="#" @click.prevent="setMoreToolActive(i.toolName)">
|
||||
<svg-icon :icon-class="i.icon" class="svg-icon" style="margin-right: 5px;"/>
|
||||
<svg-icon :icon-class="i.icon" class="svg-icon" style="margin-right: 5px;" />
|
||||
{{ $t(i.i18nKey) }}
|
||||
</a>
|
||||
</li>
|
||||
|
@ -338,7 +343,7 @@
|
|||
<div class="content-wrapper">
|
||||
<!-- viewports -->
|
||||
<div class="viewports-wrapper">
|
||||
<div ref="container" class="grid-container" >
|
||||
<div ref="container" class="grid-container">
|
||||
<div :class="[ 'viewports-box', isFusion ? 'viewports-box-down' : '' ]" :style="gridStyle">
|
||||
<div
|
||||
v-for="(v, index) in cellsMax"
|
||||
|
@ -362,7 +367,7 @@
|
|||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="[ 'viewports-box', !isFusion ? 'viewports-box-down' : '' ]" v-if="readingTool === 2" :style="gridStyle">
|
||||
<div v-if="readingTool === 2" :class="[ 'viewports-box', !isFusion ? 'viewports-box-down' : '' ]" :style="gridStyle">
|
||||
<div
|
||||
v-for="(v, index) in cellsMax"
|
||||
v-show="index < cells.length"
|
||||
|
@ -523,9 +528,13 @@
|
|||
</div>
|
||||
|
||||
</el-dialog>
|
||||
<el-dialog :visible.sync="fusionVisible" :close-on-click-modal="false" :title="$t('trials:lugano:button:record')"
|
||||
width="850px" >
|
||||
<FusionForm v-if="fusionVisible" :activeTaskIndex="activeTaskIndex" :taskList="visitTaskList" @close="closeFusion" @fusion="handleFusion" />
|
||||
<el-dialog
|
||||
:visible.sync="fusionVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="$t('trials:lugano:button:record')"
|
||||
width="850px"
|
||||
>
|
||||
<FusionForm v-if="fusionVisible" :active-task-index="activeTaskIndex" :task-list="visitTaskList" @close="closeFusion" @fusion="handleFusion" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -591,7 +600,7 @@ const {
|
|||
synchronizers
|
||||
// cursors
|
||||
} = cornerstoneTools
|
||||
const { createCameraPositionSynchronizer, createVOISynchronizer } = synchronizers;
|
||||
const { createCameraPositionSynchronizer, createVOISynchronizer } = synchronizers
|
||||
const newStyles = {
|
||||
global: {
|
||||
color: 'rgb(255, 0, 0)',
|
||||
|
@ -619,12 +628,6 @@ annotation.config.style.setDefaultToolStyles(newStyles)
|
|||
const { MouseBindings, Events: toolsEvents } = csToolsEnums
|
||||
export default {
|
||||
name: 'ReadPage',
|
||||
props: {
|
||||
readingTool: {
|
||||
type: Number,
|
||||
default: 2
|
||||
}
|
||||
},
|
||||
components: {
|
||||
StudyList,
|
||||
Viewport,
|
||||
|
@ -641,6 +644,12 @@ export default {
|
|||
FusionForm,
|
||||
colorMap
|
||||
},
|
||||
props: {
|
||||
readingTool: {
|
||||
type: Number,
|
||||
default: 2
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
|
@ -710,7 +719,7 @@ export default {
|
|||
studyList: [],
|
||||
volumeData: {},
|
||||
fusionSerieId: {},
|
||||
loadingText: null,
|
||||
loadingText: null
|
||||
// resetAnnotation: false , // 是否初始化标记 (融合时使用)
|
||||
}
|
||||
},
|
||||
|
@ -794,7 +803,7 @@ export default {
|
|||
this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces
|
||||
if (this.criterionType === 0) {
|
||||
this.tools = getCustomizeStandardsTools(this.taskInfo.ReadingToolList)
|
||||
let toolNames = this.tools.map(i=>i.toolName)
|
||||
const toolNames = this.tools.map(i => i.toolName)
|
||||
this.customizeStandards = config.customizeStandards.filter(item => !toolNames.includes(item.toolName))
|
||||
} else {
|
||||
this.tools = getTools(this.criterionType)
|
||||
|
@ -1063,13 +1072,13 @@ export default {
|
|||
}
|
||||
]
|
||||
let viewportIds = ['viewport-0', 'viewport-1', 'viewport-2', 'viewport-3']
|
||||
let fusionViewportIds = ["viewport-fusion-0", "viewport-fusion-1", "viewport-fusion-2", "viewport-fusion-3"]
|
||||
if(this.readingTool === 2){
|
||||
const fusionViewportIds = ['viewport-fusion-0', 'viewport-fusion-1', 'viewport-fusion-2', 'viewport-fusion-3']
|
||||
if (this.readingTool === 2) {
|
||||
const fusionElement1 = this.$refs['viewport-fusion-0'][0].$el
|
||||
const fusionElement2 = this.$refs['viewport-fusion-1'][0].$el
|
||||
const fusionElement3 = this.$refs['viewport-fusion-2'][0].$el
|
||||
const fusionElement4 = this.$refs['viewport-fusion-3'][0].$el
|
||||
let arr = [
|
||||
const arr = [
|
||||
{
|
||||
viewportId: 'viewport-fusion-0',
|
||||
type: ViewportType.ORTHOGRAPHIC,
|
||||
|
@ -1105,7 +1114,7 @@ export default {
|
|||
}
|
||||
}
|
||||
]
|
||||
viewportInputArray = [ ...viewportInputArray, ...arr ]
|
||||
viewportInputArray = [...viewportInputArray, ...arr]
|
||||
viewportIds = viewportIds.concat(fusionViewportIds)
|
||||
}
|
||||
renderingEngine.setViewports(viewportInputArray)
|
||||
|
@ -1171,28 +1180,28 @@ export default {
|
|||
toolGroup.addTool(CircleROITool.toolName, {
|
||||
getTextLines: this.getCircleROIToolTextLines
|
||||
})
|
||||
if(toolGroupId === 'viewport-fusion-3'){
|
||||
toolGroup.addTool(VolumeRotateTool.toolName);
|
||||
if (toolGroupId === 'viewport-fusion-3') {
|
||||
toolGroup.addTool(VolumeRotateTool.toolName)
|
||||
toolGroup.setToolActive(VolumeRotateTool.toolName, {
|
||||
bindings: [
|
||||
{
|
||||
mouseButton: MouseBindings.Wheel, // mouse wheel
|
||||
},
|
||||
],
|
||||
});
|
||||
mouseButton: MouseBindings.Wheel // mouse wheel
|
||||
}
|
||||
]
|
||||
})
|
||||
toolGroup.addTool(MIPJumpToClickTool.toolName, {
|
||||
targetViewportIds: fusionViewportIds,
|
||||
});
|
||||
targetViewportIds: fusionViewportIds
|
||||
})
|
||||
|
||||
// Set the initial state of the tools, here we set one tool active on left click.
|
||||
// This means left click will draw that tool.
|
||||
toolGroup.setToolActive(MIPJumpToClickTool.toolName, {
|
||||
bindings: [
|
||||
{
|
||||
mouseButton: MouseBindings.Primary, // Left Click
|
||||
},
|
||||
],
|
||||
});
|
||||
mouseButton: MouseBindings.Primary // Left Click
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
toolGroup.setToolActive(StackScrollTool.toolName, {
|
||||
bindings: [{ mouseButton: MouseBindings.Wheel }]
|
||||
|
@ -1230,7 +1239,7 @@ export default {
|
|||
|
||||
eventTarget.addEventListener('cornerstoneimageloadprogress', this.imageLoadProgress)
|
||||
console.log(Events, toolsEvents)
|
||||
if ( this.readingTool === 2 ) {
|
||||
if (this.readingTool === 2) {
|
||||
this.setUpSynchronizers()
|
||||
}
|
||||
},
|
||||
|
@ -1434,7 +1443,6 @@ export default {
|
|||
this.saveCustomAnnotation(annotation)
|
||||
this.$refs[`ecrf_${series.TaskInfo.VisitTaskId}`][0].bindAnnotationToQuestion(annotation)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.setToolsPassive()
|
||||
|
@ -1482,20 +1490,24 @@ export default {
|
|||
},
|
||||
async customAnnotationRemovedListener(e) {
|
||||
const { annotation } = e.detail
|
||||
try{
|
||||
try {
|
||||
// if ( this.resetAnnotation && this.isFusion ) return false
|
||||
if (!annotation) return false
|
||||
if (this.readingTaskState === 2) throw 'annotation Not allowed to operate'
|
||||
if (this.readingTaskState === 2) {
|
||||
const errorMsg = { message: 'annotation Not allowed to operate' }
|
||||
throw errorMsg
|
||||
}
|
||||
const i = this.tools.findIndex(i => i.toolName === annotation.metadata.toolName)
|
||||
if (i === -1) {
|
||||
// 临时标记
|
||||
return
|
||||
}
|
||||
if (annotation.visitTaskId === this.taskInfo.VisitTaskId) {
|
||||
let isBound = this.$refs[`ecrf_${annotation.visitTaskId}`][0].verifyAnnotationIsBound(annotation)
|
||||
const isBound = this.$refs[`ecrf_${annotation.visitTaskId}`][0].verifyAnnotationIsBound(annotation)
|
||||
if (isBound) {
|
||||
this.$alert('该标记已与问题进行绑定,不允许删除!')
|
||||
throw 'annotation Not allowed to operate'
|
||||
const errorMsg = { message: 'annotation Not allowed to operate' }
|
||||
throw errorMsg
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1521,7 +1533,8 @@ export default {
|
|||
viewport.render()
|
||||
}
|
||||
} else {
|
||||
throw 'annotation Not allowed to operate'
|
||||
const errorMsg = { message: 'annotation Not allowed to operate' }
|
||||
throw errorMsg
|
||||
}
|
||||
} catch (e) {
|
||||
cornerstoneTools.annotation.state.addAnnotation(annotation)
|
||||
|
@ -1545,7 +1558,7 @@ export default {
|
|||
},
|
||||
customAnnotationSelectionChangeListener(e) {
|
||||
if (this.readingTaskState === 2) return
|
||||
const {detail} = e
|
||||
const { detail } = e
|
||||
const annotations = cornerstoneTools.annotation.state.getAllAnnotations()
|
||||
const i = annotations.findIndex(i => i.annotationUID === detail.selection[0])
|
||||
if (i > -1) {
|
||||
|
@ -2073,8 +2086,8 @@ export default {
|
|||
const renderingEngine = getRenderingEngine(renderingEngineId)
|
||||
const viewport = renderingEngine.getViewport(`${this.viewportKey}-${this.activeViewportIndex}`)
|
||||
const { invert } = viewport.getProperties()
|
||||
if ( this.isFusion ) {
|
||||
viewport.setProperties({ invert: !invert }, this.$refs[`${this.viewportKey}-${this.activeViewportIndex}`][0].volumeId )
|
||||
if (this.isFusion) {
|
||||
viewport.setProperties({ invert: !invert }, this.$refs[`${this.viewportKey}-${this.activeViewportIndex}`][0].volumeId)
|
||||
}
|
||||
viewport.setProperties({ invert: !invert })
|
||||
viewport.render()
|
||||
|
@ -2218,18 +2231,18 @@ export default {
|
|||
toggleFullScreen(e, index) {
|
||||
this.fullScreenIndex = this.fullScreenIndex === index ? null : index
|
||||
this.activeViewportIndex = index
|
||||
if ( this.isFusion ) {
|
||||
let viewportIds = [`${this.viewportKey}-0`, `${this.viewportKey}-1`, `${this.viewportKey}-2`]
|
||||
viewportIds.forEach(id=>{
|
||||
let index = this.$refs[id][0].series.SliceIndex
|
||||
if (this.isFusion) {
|
||||
const viewportIds = [`${this.viewportKey}-0`, `${this.viewportKey}-1`, `${this.viewportKey}-2`]
|
||||
viewportIds.forEach(id => {
|
||||
const index = this.$refs[id][0].series.SliceIndex
|
||||
this.$refs[id][0].setFullScreen(index)
|
||||
})
|
||||
}
|
||||
},
|
||||
async toggleTask(taskInfo, taskIndex) {
|
||||
if(this.isFusion){
|
||||
let confirm = await this.$confirm(this.$t('trials:reading:confirm:changeStack'))
|
||||
if(!confirm) return false
|
||||
if (this.isFusion) {
|
||||
const confirm = await this.$confirm(this.$t('trials:reading:confirm:changeStack'))
|
||||
if (!confirm) return false
|
||||
this.isFusion = false
|
||||
this.fullScreenIndex = null
|
||||
this.setToolsPassive()
|
||||
|
@ -2299,9 +2312,9 @@ export default {
|
|||
this.setToolsPassive()
|
||||
},
|
||||
async activeSeries(obj) {
|
||||
if(this.isFusion){
|
||||
let confirm = await this.$confirm(this.$t('trials:reading:confirm:changeStack'))
|
||||
if(!confirm) return false
|
||||
if (this.isFusion) {
|
||||
const confirm = await this.$confirm(this.$t('trials:reading:confirm:changeStack'))
|
||||
if (!confirm) return false
|
||||
this.isFusion = false
|
||||
this.setToolsPassive()
|
||||
this.rows = 1
|
||||
|
@ -2461,7 +2474,7 @@ export default {
|
|||
const i = this.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
|
||||
if (i === -1) return
|
||||
const studyList = this.visitTaskList[i].StudyList
|
||||
let series = this.getMarkedSeries(studyList, obj.annotation)
|
||||
const series = this.getMarkedSeries(studyList, obj.annotation)
|
||||
if (series) {
|
||||
this.$refs[`${this.viewportKey}-${this.cells.length - 1}`][0].setSeriesInfo(series, true)
|
||||
this.activeViewportIndex = i
|
||||
|
@ -2693,7 +2706,7 @@ export default {
|
|||
}
|
||||
},
|
||||
showPanel(e, toolName) {
|
||||
if(toolName === 'layout' && this.isFusion) return false
|
||||
if (toolName === 'layout' && this.isFusion) return false
|
||||
e.currentTarget.firstChild.lastChild.style.display = 'block'
|
||||
},
|
||||
toolMouseout(e) {
|
||||
|
@ -2710,67 +2723,67 @@ export default {
|
|||
},
|
||||
// 融合视口相机同步
|
||||
setUpSynchronizers() {
|
||||
let axialCameraPositionSynchronizer = createCameraPositionSynchronizer(
|
||||
const axialCameraPositionSynchronizer = createCameraPositionSynchronizer(
|
||||
'AXIAL_CAMERA_SYNCHRONIZER_ID'
|
||||
);
|
||||
let ctVoiSynchronizer = createVOISynchronizer('CT_VOI_SYNCHRONIZER_ID', {
|
||||
)
|
||||
const ctVoiSynchronizer = createVOISynchronizer('CT_VOI_SYNCHRONIZER_ID', {
|
||||
syncInvertState: false,
|
||||
syncColormap: false,
|
||||
});
|
||||
let ptVoiSynchronizer = createVOISynchronizer('PT_VOI_SYNCHRONIZER_ID', {
|
||||
syncColormap: false
|
||||
})
|
||||
const ptVoiSynchronizer = createVOISynchronizer('PT_VOI_SYNCHRONIZER_ID', {
|
||||
syncInvertState: false,
|
||||
syncColormap: false,
|
||||
});
|
||||
let fusionVoiSynchronizer = createVOISynchronizer('FUSION_VOI_SYNCHRONIZER_ID', {
|
||||
syncColormap: false
|
||||
})
|
||||
const fusionVoiSynchronizer = createVOISynchronizer('FUSION_VOI_SYNCHRONIZER_ID', {
|
||||
syncInvertState: false,
|
||||
syncColormap: false,
|
||||
syncColormap: false
|
||||
});
|
||||
[
|
||||
`viewport-fusion-0`,
|
||||
`viewport-fusion-1`,
|
||||
`viewport-fusion-2`,
|
||||
`viewport-fusion-2`
|
||||
].forEach((viewportId) => {
|
||||
axialCameraPositionSynchronizer.add({
|
||||
renderingEngineId: this.renderingEngineId,
|
||||
viewportId,
|
||||
});
|
||||
viewportId
|
||||
})
|
||||
});
|
||||
[
|
||||
`viewport-fusion-0`,
|
||||
`viewport-fusion-0`
|
||||
].forEach((viewportId) => {
|
||||
ctVoiSynchronizer.add({
|
||||
renderingEngineId: this.renderingEngineId,
|
||||
viewportId,
|
||||
});
|
||||
viewportId
|
||||
})
|
||||
});
|
||||
[
|
||||
`viewport-fusion-3`,
|
||||
`viewport-fusion-1`,
|
||||
`viewport-fusion-1`
|
||||
].forEach((viewportId) => {
|
||||
ptVoiSynchronizer.add({
|
||||
renderingEngineId: this.renderingEngineId,
|
||||
viewportId,
|
||||
});
|
||||
viewportId
|
||||
})
|
||||
});
|
||||
[
|
||||
`viewport-fusion-2`,
|
||||
`viewport-fusion-2`
|
||||
].forEach((viewportId) => {
|
||||
fusionVoiSynchronizer.add({
|
||||
renderingEngineId,
|
||||
viewportId,
|
||||
});
|
||||
viewportId
|
||||
})
|
||||
ctVoiSynchronizer.addTarget({
|
||||
renderingEngineId,
|
||||
viewportId,
|
||||
});
|
||||
viewportId
|
||||
})
|
||||
ptVoiSynchronizer.addTarget({
|
||||
renderingEngineId,
|
||||
viewportId,
|
||||
});
|
||||
});
|
||||
viewportId
|
||||
})
|
||||
})
|
||||
},
|
||||
setColorMap(rgbPresetName) {
|
||||
let fusionViewportIds = [`viewport-fusion-1`, `viewport-fusion-2`, `viewport-fusion-3`]
|
||||
const fusionViewportIds = [`viewport-fusion-1`, `viewport-fusion-2`, `viewport-fusion-3`]
|
||||
fusionViewportIds.forEach(id => {
|
||||
this.$refs[id][0].setPreset(rgbPresetName)
|
||||
this.$refs[id][0].renderColorBar(rgbPresetName)
|
||||
|
@ -2778,25 +2791,25 @@ export default {
|
|||
})
|
||||
},
|
||||
voiChange(v) {
|
||||
let fusionViewportIds = [`viewport-fusion-1`, `viewport-fusion-2`, `viewport-fusion-3`]
|
||||
const fusionViewportIds = [`viewport-fusion-1`, `viewport-fusion-2`, `viewport-fusion-3`]
|
||||
fusionViewportIds.forEach(id => {
|
||||
this.$refs[id][0].voiChange(v)
|
||||
})
|
||||
},
|
||||
async handleFusion(data) {
|
||||
try{
|
||||
try {
|
||||
this.fusionVisible = false
|
||||
this.isFusion = true
|
||||
this.rows = 2;
|
||||
this.rows = 2
|
||||
this.cols = 2
|
||||
let { ct, pt } = data
|
||||
const { ct, pt } = data
|
||||
this.loading = true
|
||||
this.loadingText = this.$t('trials:lugano:message:loadVolumes')
|
||||
// this.resetAnnotation = true
|
||||
// console.log(cornerstoneTools.annotation.state.getAllAnnotations(),'cornerstoneTools.annotation.state')
|
||||
// cornerstoneTools.annotation.state.removeAllAnnotations()
|
||||
this.renderedTaskIds = []
|
||||
if ( this.verifyFusionData(ct, pt) ) {
|
||||
if (this.verifyFusionData(ct, pt)) {
|
||||
this.loading = false
|
||||
this.loadingText = null
|
||||
this.$refs[`viewport-0`][0].setSeriesInfo(ct)
|
||||
|
@ -2806,10 +2819,10 @@ export default {
|
|||
// this.resetAnnotation = false
|
||||
return true
|
||||
}
|
||||
if (!this.fusionSerieId.ct || this.fusionSerieId.ct !== ct.SeriesInstanceUid ) {
|
||||
if (!this.fusionSerieId.ct || this.fusionSerieId.ct !== ct.SeriesInstanceUid) {
|
||||
this.fusionSerieId.ct = ct.SeriesInstanceUid
|
||||
}
|
||||
if (!this.fusionSerieId.pt || this.fusionSerieId.pt !== pt.SeriesInstanceUid ) {
|
||||
if (!this.fusionSerieId.pt || this.fusionSerieId.pt !== pt.SeriesInstanceUid) {
|
||||
this.fusionSerieId.pt = pt.SeriesInstanceUid
|
||||
}
|
||||
await this.getVolume(pt)
|
||||
|
@ -2817,22 +2830,22 @@ export default {
|
|||
await this.getVolume(pt, true)
|
||||
this.loading = false
|
||||
this.loadingText = null
|
||||
let ctData = {
|
||||
const ctData = {
|
||||
data: ct,
|
||||
volumeId: this.volumeData[ct.SeriesInstanceUid].volumeId,
|
||||
volumeId: this.volumeData[ct.SeriesInstanceUid].volumeId
|
||||
}
|
||||
let ptData = {
|
||||
const ptData = {
|
||||
data: pt,
|
||||
volumeId: this.volumeData[pt.SeriesInstanceUid].volumeId,
|
||||
volume: this.volumeData[pt.SeriesInstanceUid].volume,
|
||||
volume: this.volumeData[pt.SeriesInstanceUid].volume
|
||||
}
|
||||
let fusionData = {
|
||||
const fusionData = {
|
||||
ct,
|
||||
data: pt,
|
||||
volumeId: this.volumeData[pt.SeriesInstanceUid].volumeId,
|
||||
ctVolumeId: this.volumeData[ct.SeriesInstanceUid].volumeId,
|
||||
ptVolumeId: this.volumeData[pt.SeriesInstanceUid].volumeId,
|
||||
fusionVolumeId: this.volumeData[`fusion_${pt.SeriesInstanceUid}`].volumeId,
|
||||
fusionVolumeId: this.volumeData[`fusion_${pt.SeriesInstanceUid}`].volumeId
|
||||
}
|
||||
this.$refs[`viewport-0`][0].setSeriesInfo(ct)
|
||||
this.$refs[`viewport-1`][0].setSeriesInfo(pt)
|
||||
|
@ -2840,36 +2853,36 @@ export default {
|
|||
this.$refs[`viewport-3`][0].setSeriesInfo(pt)
|
||||
|
||||
this.$refs[`viewport-fusion-0`][0].setSeriesInfo(ctData)
|
||||
this.$refs[`viewport-fusion-1`][0].setSeriesInfo(ptData, { colorMap: true})
|
||||
this.$refs[`viewport-fusion-1`][0].setSeriesInfo(ptData, { colorMap: true })
|
||||
this.$refs[`viewport-fusion-2`][0].setSeriesInfo(fusionData, { isFusion: true, colorMap: true })
|
||||
this.$refs[`viewport-fusion-3`][0].setSeriesInfo(ptData, { isMip: true, colorMap: true })
|
||||
// this.resetAnnotation = false
|
||||
this.$nextTick(() => {
|
||||
this.$refs[`colorMap`].init()
|
||||
})
|
||||
}catch(err){
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
this.loading = false
|
||||
this.loadingText = null
|
||||
}
|
||||
},
|
||||
verifyFusionData(ct, pt) {
|
||||
if (this.fusionSerieId.ct === ct.SeriesInstanceUid && this.fusionSerieId.pt === pt.SeriesInstanceUid && cache.getVolume(this.volumeData[ct.SeriesInstanceUid].volumeId) && cache.getVolume(this.volumeData[pt.SeriesInstanceUid].volumeId) && cache.getVolume(this.volumeData[`fusion_${pt.SeriesInstanceUid}`].volumeId) ) {
|
||||
if (this.fusionSerieId.ct === ct.SeriesInstanceUid && this.fusionSerieId.pt === pt.SeriesInstanceUid && cache.getVolume(this.volumeData[ct.SeriesInstanceUid].volumeId) && cache.getVolume(this.volumeData[pt.SeriesInstanceUid].volumeId) && cache.getVolume(this.volumeData[`fusion_${pt.SeriesInstanceUid}`].volumeId)) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
},
|
||||
async getVolume(serie, isFusion = false ) {
|
||||
async getVolume(serie, isFusion = false) {
|
||||
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 ) {
|
||||
let volumeId = null; let volume = null
|
||||
const 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);
|
||||
const imageLoadObject = cache.getImage(id)
|
||||
if (imageLoadObject) {
|
||||
await new Promise(res => {
|
||||
cache.removeImageLoadObject(id, {force:true}); // 从缓存中删除
|
||||
cache.removeImageLoadObject(id, { force: true }) // 从缓存中删除
|
||||
res()
|
||||
})
|
||||
}
|
||||
|
@ -2899,7 +2912,7 @@ export default {
|
|||
},
|
||||
closeFusion() {
|
||||
this.fusionVisible = false
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -32,8 +32,8 @@
|
|||
:reading-task-state="readingTaskState"
|
||||
:criterion-id="criterionId"
|
||||
:calculation-list="calculationList"
|
||||
:questionMarkInfoList="questionMarkInfoList"
|
||||
:questionsMarkStatus="questionsMarkStatus"
|
||||
:question-mark-info-list="questionMarkInfoList"
|
||||
:questions-mark-status="questionsMarkStatus"
|
||||
:is-baseline="isBaseLineTask"
|
||||
@resetFormItemData="resetFormItemData"
|
||||
@setFormItemData="setFormItemData"
|
||||
|
@ -97,7 +97,7 @@ export default {
|
|||
readingTaskState: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -166,7 +166,7 @@ export default {
|
|||
})
|
||||
this.questions = res.Result.SinglePage
|
||||
this.questionsMarkStatus = {}
|
||||
this.questionMarkInfoList = res.OtherInfo.QuestionMarkInfoList.map(i=>{
|
||||
this.questionMarkInfoList = res.OtherInfo.QuestionMarkInfoList.map(i => {
|
||||
if (i.QuestionId && i.MeasureData) {
|
||||
this.$set(this.questionsMarkStatus, i.QuestionId, 2)
|
||||
}
|
||||
|
@ -348,7 +348,7 @@ export default {
|
|||
})
|
||||
},
|
||||
verifyAnnotationIsBound(annotation) {
|
||||
let i = this.questionMarkInfoList.findIndex(i=>i.MeasureData && i.MeasureData.annotationUID === annotation.annotationUID)
|
||||
const i = this.questionMarkInfoList.findIndex(i => i.MeasureData && i.MeasureData.annotationUID === annotation.annotationUID)
|
||||
return i > -1
|
||||
},
|
||||
async operateImageMarker(obj) {
|
||||
|
@ -359,19 +359,18 @@ export default {
|
|||
|
||||
} else if (obj.operateStateEnum === 2) {
|
||||
// 查看标记
|
||||
let i = this.questionMarkInfoList.findIndex(i=>i.QuestionId === obj.question.Id)
|
||||
const i = this.questionMarkInfoList.findIndex(i => i.QuestionId === obj.question.Id)
|
||||
if (i > -1) {
|
||||
let annotation = this.questionMarkInfoList[i].MeasureData
|
||||
this.$emit('viewCustomAnnotationSeries', {visitTaskId: this.visitTaskId, annotation})
|
||||
const annotation = this.questionMarkInfoList[i].MeasureData
|
||||
this.$emit('viewCustomAnnotationSeries', { visitTaskId: this.visitTaskId, annotation })
|
||||
}
|
||||
|
||||
} else if (obj.operateStateEnum === 3) {
|
||||
// 更改标记
|
||||
// this.$set(this.questionsMarkStatus, obj.question.Id, 1)
|
||||
} else if (obj.operateStateEnum === 4) {
|
||||
// 移除标记
|
||||
this.$set(this.questionForm, obj.question.Id, '')
|
||||
let i = this.questionMarkInfoList.findIndex(i=>i.QuestionId === obj.question.Id)
|
||||
const i = this.questionMarkInfoList.findIndex(i => i.QuestionId === obj.question.Id)
|
||||
if (i > -1) {
|
||||
this.questionMarkInfoList.splice(i, 1)
|
||||
}
|
||||
|
@ -380,16 +379,16 @@ export default {
|
|||
// 保存标记
|
||||
this.loading = true
|
||||
try {
|
||||
let answers = []
|
||||
const answers = []
|
||||
answers.push({ id: obj.question.Id, answer: this.questionForm[obj.question.Id] })
|
||||
let markInfo = []
|
||||
let i = this.questionMarkInfoList.findIndex(i=>i.QuestionId === this.operateQuestionId)
|
||||
const markInfo = []
|
||||
const i = this.questionMarkInfoList.findIndex(i => i.QuestionId === this.operateQuestionId)
|
||||
if (i > -1) {
|
||||
let obj = Object.assign({}, this.questionMarkInfoList[i])
|
||||
const obj = Object.assign({}, this.questionMarkInfoList[i])
|
||||
obj.MeasureData = obj.MeasureData ? JSON.stringify(obj.MeasureData) : ''
|
||||
markInfo.push(obj)
|
||||
}
|
||||
let params = {
|
||||
const params = {
|
||||
visitTaskId: this.visitTaskId,
|
||||
answers: answers,
|
||||
questionMarkInfoList: markInfo
|
||||
|
@ -402,9 +401,7 @@ export default {
|
|||
console.log(e)
|
||||
this.loading = false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
async bindAnnotationToQuestion(annotation) {
|
||||
try {
|
||||
|
@ -420,13 +417,12 @@ export default {
|
|||
distinguishCancelAndClose: true
|
||||
})
|
||||
if (confirm !== 'confirm') return
|
||||
|
||||
}
|
||||
console.log('bindAnnotationToQuestion', annotation)
|
||||
|
||||
let i = this.questionMarkInfoList.findIndex(i=>i.QuestionId === this.operateQuestionId)
|
||||
const i = this.questionMarkInfoList.findIndex(i => i.QuestionId === this.operateQuestionId)
|
||||
if (i === -1) {
|
||||
let markInfo = {
|
||||
const markInfo = {
|
||||
QuestionId: this.operateQuestionId,
|
||||
InstanceId: annotation.instanceId,
|
||||
SeriesId: annotation.seriesId,
|
||||
|
@ -448,14 +444,13 @@ export default {
|
|||
}
|
||||
this.setAnswerToQuestion(annotation, this.operateQuestionId)
|
||||
this.$set(this.questionsMarkStatus, this.operateQuestionId, 1)
|
||||
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
updateAnnotationToQuestion(annotation) {
|
||||
console.log('updateAnnotationToQuestion', annotation)
|
||||
let i = this.questionMarkInfoList.findIndex(i=>i.MeasureData && i.MeasureData.annotationUID === annotation.annotationUID)
|
||||
const i = this.questionMarkInfoList.findIndex(i => i.MeasureData && i.MeasureData.annotationUID === annotation.annotationUID)
|
||||
if (i === -1) return
|
||||
this.questionMarkInfoList[i].measureData = annotation
|
||||
this.setAnswerToQuestion(annotation, this.questionMarkInfoList[i].QuestionId)
|
||||
|
@ -468,7 +463,7 @@ export default {
|
|||
let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
|
||||
length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
|
||||
this.$set(this.questionForm, questionId, length)
|
||||
} else if (obj.toolName === 'Bidirectional') {
|
||||
} else if (annotation.metadata.toolName === 'Bidirectional') {
|
||||
// let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
|
||||
// length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
|
||||
let short = annotation.data.cachedStats[`imageId:${referencedImageId}`].width
|
||||
|
@ -494,7 +489,7 @@ export default {
|
|||
await this.getQuestionCalculateRelation()
|
||||
await this.getQuestions()
|
||||
this.$emit('resetAnnotations', this.visitTaskId)
|
||||
this.$nextTick(()=>{
|
||||
this.$nextTick(() => {
|
||||
this.rerender = true
|
||||
})
|
||||
}
|
||||
|
@ -503,7 +498,7 @@ export default {
|
|||
loading.close()
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
Loading…
Reference in New Issue