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

View File

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

View File

@ -577,9 +577,9 @@ export default {
this.questionsSegmentMarkStatus = {} this.questionsSegmentMarkStatus = {}
list.forEach(item => { list.forEach(item => {
if (item.TableQuestionId && item.RowId) { 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 { } 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) { } catch (err) {

View File

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