Merge branch 'main' into uat_us
commit
e972179753
|
|
@ -2864,6 +2864,7 @@ export default {
|
||||||
this.rows = 1
|
this.rows = 1
|
||||||
this.cols = 1
|
this.cols = 1
|
||||||
this.activeViewportIndex = 0
|
this.activeViewportIndex = 0
|
||||||
|
series.curIndex = index
|
||||||
if (typeof series === 'object') {
|
if (typeof series === 'object') {
|
||||||
seriesArr.push(series)
|
seriesArr.push(series)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -123,13 +123,14 @@
|
||||||
</el-switch>
|
</el-switch>
|
||||||
<span style="margin-left: 5px;">{{
|
<span style="margin-left: 5px;">{{
|
||||||
$t('trials:reading:Segmentations:title:InactiveSegmentationsShow')
|
$t('trials:reading:Segmentations:title:InactiveSegmentationsShow')
|
||||||
}}</span>
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<template v-if="segmentList.length > 0">
|
<template v-if="segmentList.length > 0">
|
||||||
<div class="SegmentGroupBox">
|
<div class="SegmentGroupBox">
|
||||||
<div style="display: flex;align-items: center;">
|
<div style="display: flex;align-items: center;">
|
||||||
<el-popover placement="left" width="40" trigger="click" v-if="readingTaskState < 2">
|
<el-popover placement="left" width="40" trigger="click" v-if="readingTaskState < 2"
|
||||||
|
v-model="popoverVisible" :teleported="true">
|
||||||
<div class="SegmentGroupBtnBox">
|
<div class="SegmentGroupBtnBox">
|
||||||
<div class="SegmentGroupBtn" @click.stop="addSegmentGroup">
|
<div class="SegmentGroupBtn" @click.stop="addSegmentGroup">
|
||||||
{{ $t('trials:reading:Segmentations:button:addSegmentGroup') }}
|
{{ $t('trials:reading:Segmentations:button:addSegmentGroup') }}
|
||||||
|
|
@ -202,7 +203,7 @@
|
||||||
<div v-for="k in statsKey" :key="k" class="statsBox">
|
<div v-for="k in statsKey" :key="k" class="statsBox">
|
||||||
<span>{{ k }}</span>
|
<span>{{ k }}</span>
|
||||||
<span v-if="item.stats[k]">{{ Number(item.stats[k].value).toFixed(2)
|
<span v-if="item.stats[k]">{{ Number(item.stats[k].value).toFixed(2)
|
||||||
}}<i>{{ item.stats[k].unit }}</i></span>
|
}}<i>{{ item.stats[k].unit }}</i></span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div class="serialNum" slot="reference">{{ index + 1 }}</div>
|
<div class="serialNum" slot="reference">{{ index + 1 }}</div>
|
||||||
|
|
@ -392,7 +393,8 @@ export default {
|
||||||
digitPlaces: 2,
|
digitPlaces: 2,
|
||||||
isloaded: false,
|
isloaded: false,
|
||||||
popoverId: null,
|
popoverId: null,
|
||||||
saveLoading: false
|
saveLoading: false,
|
||||||
|
popoverVisible: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
@ -400,6 +402,7 @@ export default {
|
||||||
this.statsKey = getCustomizeStandardsSegmentDicomTools('Labelmap')[0].props.filter(item => item !== 'width' && item !== 'length')
|
this.statsKey = getCustomizeStandardsSegmentDicomTools('Labelmap')[0].props.filter(item => item !== 'width' && item !== 'length')
|
||||||
// console.log(segmentation, 'segmentation')
|
// console.log(segmentation, 'segmentation')
|
||||||
// console.log(annotation, 'annotation')
|
// console.log(annotation, 'annotation')
|
||||||
|
console.log(cache, 'cache')
|
||||||
eventTarget.addEventListener(
|
eventTarget.addEventListener(
|
||||||
'CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED',
|
'CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED',
|
||||||
this.segmentationModifiedCallback
|
this.segmentationModifiedCallback
|
||||||
|
|
@ -674,6 +677,7 @@ export default {
|
||||||
// this.viewBidirectional(item.segments, view)
|
// this.viewBidirectional(item.segments, view)
|
||||||
},
|
},
|
||||||
viewSegment(item, view) {
|
viewSegment(item, view) {
|
||||||
|
item.bidirectionalView = view
|
||||||
item.view = view
|
item.view = view
|
||||||
this.$emit('setToolsPassive')
|
this.$emit('setToolsPassive')
|
||||||
DicomEvent.$emit('viewSegment', item)
|
DicomEvent.$emit('viewSegment', item)
|
||||||
|
|
@ -731,6 +735,7 @@ export default {
|
||||||
},
|
},
|
||||||
async addSegmentGroup() {
|
async addSegmentGroup() {
|
||||||
// let segmentationId = this.$guid();
|
// let segmentationId = this.$guid();
|
||||||
|
this.popoverVisible = false
|
||||||
let obj = {
|
let obj = {
|
||||||
name: this.getSegmentationName(),
|
name: this.getSegmentationName(),
|
||||||
view: true,
|
view: true,
|
||||||
|
|
@ -826,15 +831,15 @@ export default {
|
||||||
segmentIndex: segmentIndex,
|
segmentIndex: segmentIndex,
|
||||||
segmentationId: this.segmentationId,
|
segmentationId: this.segmentationId,
|
||||||
SegmentLabel: this.getSegmentName(item.segments),
|
SegmentLabel: this.getSegmentName(item.segments),
|
||||||
color: item.segments.length >= this.colors.length ? this.colors[0] : this.colors[item.segments.length],
|
color: segmentIndex >= this.colors.length ? this.colors[0] : this.colors[segmentIndex],
|
||||||
stats: null,
|
stats: null,
|
||||||
bidirectional: null,
|
bidirectional: null,
|
||||||
bidirectionalView: true,
|
bidirectionalView: true,
|
||||||
view: true,
|
view: true,
|
||||||
lock: false
|
lock: false
|
||||||
}
|
}
|
||||||
if (item.segments.length >= this.colors.length) {
|
if (segmentIndex >= this.colors.length) {
|
||||||
let index = item.segments.length % this.colors.length
|
let index = segmentIndex % this.colors.length
|
||||||
let color = this.randomNearColor(this.colors[index], 4)
|
let color = this.randomNearColor(this.colors[index], 4)
|
||||||
obj.color = color
|
obj.color = color
|
||||||
}
|
}
|
||||||
|
|
@ -881,6 +886,11 @@ export default {
|
||||||
if (!res) return false
|
if (!res) return false
|
||||||
segmentation.removeSegmentation(this.segmentationId)
|
segmentation.removeSegmentation(this.segmentationId)
|
||||||
segmentation.state.removeSegmentation(this.segmentationId)
|
segmentation.state.removeSegmentation(this.segmentationId)
|
||||||
|
let volume = cache.getVolume(this.segmentationId)
|
||||||
|
// 1. 销毁 Volume 实例
|
||||||
|
volume.destroy();
|
||||||
|
// 2. 从缓存中移除
|
||||||
|
volume.removeFromCache();
|
||||||
let groupIndex = this.segmentList.findIndex(item => item.segmentationId === this.segmentationId)
|
let groupIndex = this.segmentList.findIndex(item => item.segmentationId === this.segmentationId)
|
||||||
this.segmentList.splice(groupIndex, 1)
|
this.segmentList.splice(groupIndex, 1)
|
||||||
let annotations = annotation.state.getAllAnnotations().filter(item => item.metadata.segmentationId === this.segmentationId);
|
let annotations = annotation.state.getAllAnnotations().filter(item => item.metadata.segmentationId === this.segmentationId);
|
||||||
|
|
@ -891,7 +901,7 @@ export default {
|
||||||
this.segmentationId = this.segmentList[0].segmentationId;
|
this.segmentationId = this.segmentList[0].segmentationId;
|
||||||
this.selectSegmentGroup()
|
this.selectSegmentGroup()
|
||||||
} else {
|
} else {
|
||||||
this.segmentationId = ''
|
this.segmentationId = null
|
||||||
}
|
}
|
||||||
// this.readingSegmentByConfig()
|
// this.readingSegmentByConfig()
|
||||||
this.resetViewport()
|
this.resetViewport()
|
||||||
|
|
|
||||||
|
|
@ -59,10 +59,10 @@
|
||||||
<div v-if="series" class="right-bottom-text">
|
<div v-if="series" class="right-bottom-text">
|
||||||
<div v-show="imageInfo.location">Location: {{
|
<div v-show="imageInfo.location">Location: {{
|
||||||
`${Number(imageInfo.location).toFixed(digitPlaces)} mm`
|
`${Number(imageInfo.location).toFixed(digitPlaces)} mm`
|
||||||
}}</div>
|
}}</div>
|
||||||
<div v-show="imageInfo.sliceThickness">Slice Thickness: {{
|
<div v-show="imageInfo.sliceThickness">Slice Thickness: {{
|
||||||
`${Number(imageInfo.sliceThickness).toFixed(digitPlaces)} mm`
|
`${Number(imageInfo.sliceThickness).toFixed(digitPlaces)} mm`
|
||||||
}}</div>
|
}}</div>
|
||||||
<div v-show="imageInfo.wwwc">WW/WL: {{ imageInfo.wwwc }}</div>
|
<div v-show="imageInfo.wwwc">WW/WL: {{ imageInfo.wwwc }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="orientation-top">
|
<div class="orientation-top">
|
||||||
|
|
@ -384,7 +384,7 @@ export default {
|
||||||
},
|
},
|
||||||
stackNewImage(e) {
|
stackNewImage(e) {
|
||||||
const { detail } = e
|
const { detail } = e
|
||||||
|
delete this.series.segment
|
||||||
this.series.SliceIndex = detail.imageIndex
|
this.series.SliceIndex = detail.imageIndex
|
||||||
this.sliderInfo.height = detail.imageIndex * 100 / detail.numberOfSlices
|
this.sliderInfo.height = detail.imageIndex * 100 / detail.numberOfSlices
|
||||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||||
|
|
@ -687,6 +687,8 @@ export default {
|
||||||
}
|
}
|
||||||
await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.renderingEngineId, data.segment, this.actionConfiguration)
|
await renderSegmentation(this.series, this.series.TaskInfo, this.viewportId, this.SegmentConfig, this.renderingEngineId, data.segment, this.actionConfiguration)
|
||||||
DicomEvent.$emit('SegmentationLoading', this.viewportId)
|
DicomEvent.$emit('SegmentationLoading', this.viewportId)
|
||||||
|
console.log(data.segment, 'data.segment')
|
||||||
|
if (data.segment) return false
|
||||||
if (this.series.hasOwnProperty('curIndex')) return this.setFullScreen(this.series.curIndex)
|
if (this.series.hasOwnProperty('curIndex')) return this.setFullScreen(this.series.curIndex)
|
||||||
this.setFullScreen(Math.ceil((res.volume._imageIds.length - 1) / 2) - 1)
|
this.setFullScreen(Math.ceil((res.volume._imageIds.length - 1) / 2) - 1)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
||||||
|
|
@ -210,16 +210,16 @@
|
||||||
@click="operateImageMarker({ operateStateEnum: 21, question })">
|
@click="operateImageMarker({ operateStateEnum: 21, question })">
|
||||||
{{ $t('dicom3D:CustomizeQuestionFormItem:button:bind') }}
|
{{ $t('dicom3D:CustomizeQuestionFormItem:button:bind') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 更改 -->
|
|
||||||
<el-button v-if="readingTaskState < 2 && (questionsSegmentMarkStatus[question.Id])" size="mini" type="text"
|
|
||||||
@click="operateImageMarker({ operateStateEnum: 22, question })">
|
|
||||||
{{ $t('dicom3D:CustomizeQuestionFormItem:button:edit') }}
|
|
||||||
</el-button>
|
|
||||||
<!-- 查看 -->
|
<!-- 查看 -->
|
||||||
<el-button v-if="questionsSegmentMarkStatus[question.Id]" size="mini" type="text"
|
<el-button v-if="questionsSegmentMarkStatus[question.Id]" size="mini" type="text"
|
||||||
@click="operateImageMarker({ operateStateEnum: 23, question })">
|
@click="operateImageMarker({ operateStateEnum: 23, question })">
|
||||||
{{ $t('dicom3D:CustomizeQuestionFormItem:button:view') }}
|
{{ $t('dicom3D:CustomizeQuestionFormItem:button:view') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<!-- 更改 -->
|
||||||
|
<el-button v-if="readingTaskState < 2 && (questionsSegmentMarkStatus[question.Id])" size="mini" type="text"
|
||||||
|
@click="operateImageMarker({ operateStateEnum: 22, question })">
|
||||||
|
{{ $t('dicom3D:CustomizeQuestionFormItem:button:edit') }}
|
||||||
|
</el-button>
|
||||||
<!-- 移除 -->
|
<!-- 移除 -->
|
||||||
<el-button v-if="readingTaskState < 2 && (questionsSegmentMarkStatus[question.Id])" size="mini" type="text"
|
<el-button v-if="readingTaskState < 2 && (questionsSegmentMarkStatus[question.Id])" size="mini" type="text"
|
||||||
@click="operateImageMarker({ operateStateEnum: 24, question })">
|
@click="operateImageMarker({ operateStateEnum: 24, question })">
|
||||||
|
|
|
||||||
|
|
@ -135,17 +135,17 @@
|
||||||
size="mini" type="text" @click="operateImageMarker({ operateStateEnum: 21, question })">
|
size="mini" type="text" @click="operateImageMarker({ operateStateEnum: 21, question })">
|
||||||
{{ $t('dicom3D:CustomizeQuestionFormItem:button:bind') }}
|
{{ $t('dicom3D:CustomizeQuestionFormItem:button:bind') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<!-- 查看 -->
|
||||||
|
<el-button v-if="questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id]" size="mini"
|
||||||
|
type="text" @click="operateImageMarker({ operateStateEnum: 23, question })">
|
||||||
|
{{ $t('dicom3D:CustomizeQuestionFormItem:button:view') }}
|
||||||
|
</el-button>
|
||||||
<!-- 更改 -->
|
<!-- 更改 -->
|
||||||
<el-button
|
<el-button
|
||||||
v-if="readingTaskState < 2 && (questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id])"
|
v-if="readingTaskState < 2 && (questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id])"
|
||||||
size="mini" type="text" @click="operateImageMarker({ operateStateEnum: 22, question })">
|
size="mini" type="text" @click="operateImageMarker({ operateStateEnum: 22, question })">
|
||||||
{{ $t('dicom3D:CustomizeQuestionFormItem:button:edit') }}
|
{{ $t('dicom3D:CustomizeQuestionFormItem:button:edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 查看 -->
|
|
||||||
<el-button v-if="questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id]" size="mini"
|
|
||||||
type="text" @click="operateImageMarker({ operateStateEnum: 23, question })">
|
|
||||||
{{ $t('dicom3D:CustomizeQuestionFormItem:button:view') }}
|
|
||||||
</el-button>
|
|
||||||
<!-- 移除 -->
|
<!-- 移除 -->
|
||||||
<el-button
|
<el-button
|
||||||
v-if="readingTaskState < 2 && (questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id])"
|
v-if="readingTaskState < 2 && (questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id])"
|
||||||
|
|
|
||||||
|
|
@ -229,6 +229,7 @@ function selectSegmentation(viewportId, segmentationId) {
|
||||||
segmentation.activeSegmentation.setActiveSegmentation(viewportId, segmentationId)
|
segmentation.activeSegmentation.setActiveSegmentation(viewportId, segmentationId)
|
||||||
}
|
}
|
||||||
function selectSegment(viewportId, segmentationId, segmentIndex) {
|
function selectSegment(viewportId, segmentationId, segmentIndex) {
|
||||||
|
if (!segmentIndex) return false
|
||||||
selectSegmentation(viewportId, segmentationId)
|
selectSegmentation(viewportId, segmentationId)
|
||||||
segmentation.segmentIndex.setActiveSegmentIndex(segmentationId, segmentIndex);
|
segmentation.segmentIndex.setActiveSegmentIndex(segmentationId, segmentIndex);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue