分割默认工具功能修复
continuous-integration/drone/push Build is passing Details

uat_us
wangxiaoshuang 2026-03-24 16:45:44 +08:00
parent 5cb3e8e606
commit 25b909c660
5 changed files with 49 additions and 41 deletions

View File

@ -77,12 +77,10 @@ export default {
},
async init() {
let studyList = Object.assign(this.visitInfo.StudyList, {})
console.log(studyList, 'studyList')
let s = await this.getSegmentationList()
this.segmentionList = s
let StudyIds = s.map(item => item.StudyId)
let SeriesIds = s.map(item => item.SeriesId)
console.log(SeriesIds, 'SeriesIds')
studyList = studyList.filter(item => StudyIds.includes(item.StudyId))
studyList.forEach(study => {
study.SeriesArr = study.SeriesList.filter(item => SeriesIds.includes(item.Id))

View File

@ -23,9 +23,9 @@
:title="$t('trials:dicom-show:Eraser')" @click.prevent="setToolActive('CircularEraser')">
<svg-icon icon-class="clear" class="svg-icon" />
</div>
<div :class="['tool-item']">
<!-- <div :class="['tool-item']">
<input type="file" @change="beginScanFiles($event)">
</div>
</div> -->
</div>
<div class="ConfigBox">
<div class="EraserConfig" v-if="activeTool === 'CircularEraser' || activeTool === 'CircularBrush'">
@ -86,12 +86,11 @@
$t('trials:reading:Segmentations:title:InactiveSegmentationsShow')
}}</span>
</div>
<div class="SegmentConfig">
<!-- <div class="SegmentConfig" v-if="SegmentConfig.InactiveSegmentations.show">
<span>{{ $t('trials:reading:Segmentations:title:Opacity') }}</span>
<el-slider v-model="SegmentConfig.InactiveSegmentations.fillAlpha" show-input :step="0.1"
:max="1" input-size="mini" :show-input-controls="false"
v-if="SegmentConfig.InactiveSegmentations.show" />
</div>
:max="1" input-size="mini" :show-input-controls="false" />
</div> -->
</div>
<template v-if="segmentList.length > 0">
<div class="SegmentGroupBox">
@ -127,7 +126,7 @@
@click.stop="viewSegmentGroup(segmentList.find(i => i.segmentationId === segmentationId))" />
</div>
<div
:style="`overflow-y: auto;max-height:${showSegmentConfig ? (SegmentHight - 260) : SegmentHight}px;`">
:style="`overflow-y: auto;max-height:${showSegmentConfig ? (SegmentHight - 220) : SegmentHight}px;`">
<div :class="['SegmentBox', item && item.segmentIndex === segmentIndex ? 'SegmentBox_active' : '']"
v-for="(item) in curSegmentGroup.segments"
:key="`${item.segmentationId}_${item.segmentIndex}`" @click.stop="selectSegment(item)">
@ -146,7 +145,7 @@
<div class="btnBox">
<svg-icon :icon-class="!item.bidirectionalView ? 'eye' : 'eye-open'"
style="color:#000;margin-right: 5px;cursor: pointer;"
@click.stop="viewBidirectional(item, !item.bidirectionalView)" />
@click.stop="viewBidirectional([item], !item.bidirectionalView)" />
<svg-icon icon-class="jumpto" style="color:#000;cursor: pointer;"
@click.stop="jumpBidirectional(item)" />
</div>
@ -304,7 +303,7 @@ export default {
}
},
mounted() {
this.SegmentHight = window.innerHeight * 0.4;
this.SegmentHight = window.innerHeight > 900 ? window.innerHeight * 0.5 : window.innerHeight * 0.4;
this.statsKey = getCustomizeStandardsSegmentDicomTools('Labelmap')[0].props.filter(item => item !== 'width' && item !== 'length')
// console.log(segmentation, 'segmentation')
// console.log(annotation, 'annotation')
@ -465,10 +464,14 @@ export default {
this.showSegmentConfig = !this.showSegmentConfig
}
},
viewBidirectional(item, view) {
viewBidirectional(arr, view) {
for (let j = 0; j < arr.length; j++) {
let item = arr[j]
let bidirectional = annotation.state.getAllAnnotations().find(i => i.metadata.segmentationId === item.segmentationId && i.metadata.segmentIndex === item.segmentIndex && i.metadata.toolName === "SegmentBidirectional");
annotation.visibility.setAnnotationVisibility(bidirectional.annotationUID, view)
item.bidirectionalView = view
if (!bidirectional) return false
annotation.visibility.setAnnotationVisibility(bidirectional.annotationUID, view)
}
this.resetViewport()
},
jumpBidirectional(item) {
@ -496,10 +499,12 @@ export default {
);
})
item.view = view
item.segments.forEach(i => {
i.view = view
this.viewBidirectional(i, view)
// this.viewBidirectional(i, view)
})
this.viewBidirectional(item.segments, view)
},
viewSegment(item, view) {
this.viewprotIds.forEach(id => {
@ -509,7 +514,7 @@ export default {
}, item.segmentIndex, view)
})
item.view = view
this.viewBidirectional(item, view)
this.viewBidirectional([item], view)
this.$emit('setToolsPassive')
},
lockSegment(item, lock) {
@ -531,7 +536,7 @@ export default {
segmentation.activeSegmentation.setActiveSegmentation(id, this.segmentationId)
})
this.selectSegment({ segmentationId: this.segmentationId, segmentIndex: 1 })
// this.changeSegmentConfig()
this.readingSegmentByConfig()
},
async addSegmentGroup() {
let viewprotIds = this.viewprotIds
@ -738,17 +743,16 @@ export default {
//
changeInactiveSegmentShow() {
let segmentList = this.segmentList.filter(item => item.segmentationId !== this.segmentationId)
segmentList.forEach(segment => {
this.viewprotIds.forEach(id => {
segmentation.config.style.setStyle(
segmentation.config.visibility.setSegmentationRepresentationVisibility(
id,
{
segmentationId: this.segmentationId,
type: csToolsEnums.SegmentationRepresentations.Labelmap,
segmentationId: segment.segmentationId,
},
{
fillAlpha: Number(this.SegmentConfig.InactiveSegmentations.fillAlpha),
}
)
true
);
segmentList.forEach(segment => {
segmentation.config.visibility.setSegmentationRepresentationVisibility(
id,
{
@ -757,9 +761,16 @@ export default {
},
this.SegmentConfig.InactiveSegmentations.show
);
})
})
segmentList.forEach(segment => {
this.viewBidirectional(segment.segments, this.SegmentConfig.InactiveSegmentations.show)
})
let segments = this.segmentList.find(item => item.segmentationId === this.segmentationId).segments
this.viewBidirectional(segments, true)
},
//
changeSegmentConfig(renderOutline, renderFill) {
@ -970,6 +981,7 @@ export default {
return obj
},
readingSegmentByConfig() {
this.changeInactiveSegmentShow()
segmentation.config.style.setStyle(
{
type: csToolsEnums.SegmentationRepresentations.Labelmap,
@ -981,7 +993,6 @@ export default {
fillAlpha: Number(this.SegmentConfig.fillAlpha),
}
)
this.changeInactiveSegmentShow()
},
setBrushSize() {
const toolGroupId = this.isMPR ? this.volumeToolGroupId : `${this.viewportKey}-${this.activeViewportIndex}`
@ -1001,7 +1012,6 @@ export default {
}
)
}
segmentation.addSegmentations([
{
segmentationId,
@ -1624,11 +1634,11 @@ export default {
}
::v-deep .el-slider__input {
width: 50px;
width: 60px;
}
::v-deep .el-slider__runway.show-input {
margin-right: 60px;
margin-right: 70px;
}
}

View File

@ -188,10 +188,10 @@
v-if="question.ImageMarkTypeEnum === 1">
<el-input type="text" @change="(val) => { formItemNumberChange(val, question) }"
@input="numberInput(question.Id)"
@blur="questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
@blur="questionsSegmentMarkStatus[question.Id] ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
v-model="questionForm[question.Id]"
:title="questionsMarkStatus[question.Id] ? questionsMarkStatus[question.Id].OrderMarkName : question.Remark"
:disabled="(questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1 || readingTaskState === 2"
:title="questionsSegmentMarkStatus[question.Id] ? `${questionsSegmentMarkStatus[question.Id].SegmentationName}_${questionsSegmentMarkStatus[question.Id].SegmentName}` : question.Remark"
:disabled="(questionsSegmentMarkStatus[question.Id] && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1 || readingTaskState === 2"
style="width: 150px;margin-right: 5px;">
<template v-if="question.Unit !== 0" slot="append">
{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) : question.CustomUnit }}

View File

@ -577,9 +577,9 @@ export default {
this.questionsSegmentMarkStatus = {}
list.forEach(item => {
if (item.TableQuestionId && item.RowId) {
this.$set(this.questionsSegmentMarkStatus, `${item.RowId}_${item.TableQuestionId}`, item.SegmentId)
this.$set(this.questionsSegmentMarkStatus, `${item.RowId}_${item.TableQuestionId}`, { SegmentId: item.SegmentId, SegmentationName: item.SegmentationName, SegmentName: item.SegmentName, })
} else {
this.$set(this.questionsSegmentMarkStatus, item.QuestionId, item.SegmentId)
this.$set(this.questionsSegmentMarkStatus, item.QuestionId, { SegmentId: item.SegmentId, SegmentationName: item.SegmentationName, SegmentName: item.SegmentName, })
}
})
} catch (err) {

View File

@ -111,10 +111,10 @@
v-if="question.ImageMarkTypeEnum === 1">
<el-input type="text" @change="(val) => { formItemNumberChange(val, question) }"
@input="numberInput(question.Id)"
@blur="questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
@blur="questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id] ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
v-model="questionForm[question.Id]"
:title="questionsMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id] ? questionsMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id].OrderMarkName : question.Remark"
:disabled="(questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1 || question.IsPreinstall"
:title="questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id] ? `${questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id].SegmentationName}_${questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id].SegmentName}` : question.Remark"
:disabled="(questionsSegmentMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id] && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1 || question.IsPreinstall"
style="width: 150px;margin-right: 5px;">
<template v-if="question.Unit !== 0" slot="append">
{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) : question.CustomUnit }}