Merge branch 'main' into uat_us

uat_us
wangxiaoshuang 2026-04-17 11:49:14 +08:00
commit e972179753
6 changed files with 35 additions and 21 deletions

View File

@ -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)
} }

View File

@ -129,7 +129,8 @@
<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') }}
@ -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()

View File

@ -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) {

View File

@ -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 })">

View File

@ -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])"

View File

@ -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);
} }