Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing Details

rj
caiyiling 2026-06-02 10:46:42 +08:00
commit f06f7827cf
1 changed files with 39 additions and 6 deletions

View File

@ -39,10 +39,19 @@
</div> --> </div> -->
</div> </div>
<div class="ConfigBox"> <div class="ConfigBox">
<div class="EraserConfig"
v-if="activeTool === 'CircularEraser' || activeTool === 'CircularBrush' || ThresholdTools.includes(activeTool)">
<span>{{ $t('trials:reading:Segmentations:title:EraserConfigSection') }}</span>
<el-select v-model="sliderMax" placeholder="" size="small" @change="handleSliderChange">
<el-option v-for="item in sliderSection" :key="item.id" :label="item.label"
:value="item.max">
</el-option>
</el-select>
</div>
<div class="EraserConfig" <div class="EraserConfig"
v-if="activeTool === 'CircularEraser' || activeTool === 'CircularBrush' || ThresholdTools.includes(activeTool)"> v-if="activeTool === 'CircularEraser' || activeTool === 'CircularBrush' || ThresholdTools.includes(activeTool)">
<span>{{ $t('trials:reading:Segmentations:title:EraserConfig') }}</span> <span>{{ $t('trials:reading:Segmentations:title:EraserConfig') }}</span>
<el-slider v-model="brushSize" show-input :step="1" :max="100" input-size="mini" <el-slider v-model="brushSize" show-input :step="sliderStep" :max="sliderMax" input-size="mini"
:show-input-controls="false" /> :show-input-controls="false" />
</div> </div>
<div class="EraserConfig" v-if="ThresholdTools.includes(activeTool)"> <div class="EraserConfig" v-if="ThresholdTools.includes(activeTool)">
@ -128,7 +137,7 @@
</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">
@ -246,8 +255,9 @@
<div <div
style="width: 100%;display: flex;align-items: center;justify-content: space-between;"> style="width: 100%;display: flex;align-items: center;justify-content: space-between;">
<div class="SegmentName">{{ item.SegmentLabel }}</div> <div class="SegmentName">{{ item.SegmentLabel }}</div>
<div v-if="item.stats && item.stats['volume']" style="text-align: left;width: 100px;">{{ <div v-if="item.stats && item.stats['volume']"
Number(item.stats['volume'].value).toFixed(digitPlaces) }}{{ style="text-align: left;width: 100px;">{{
Number(item.stats['volume'].value).toFixed(digitPlaces) }}{{
item.stats['volume'].unit }}</div> item.stats['volume'].unit }}</div>
</div> </div>
@ -310,7 +320,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click.stop="restoreSegmentationVersion(scope.row)">{{ <el-button type="text" @click.stop="restoreSegmentationVersion(scope.row)">{{
$t('trials:reading:Segmentations:button:recovery') $t('trials:reading:Segmentations:button:recovery')
}}</el-button> }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -443,6 +453,19 @@ export default {
}, },
data() { data() {
return { return {
sliderMax: 50,
sliderStep: 1,
sliderSection: [{
id: `sliderSection1`,
max: 50,
step: 1,
label: '0~50mm'
}, {
id: `sliderSection2`,
max: 5,
step: 0.1,
label: '0~5mm'
}],
visible: false, visible: false,
recoveryList: [], recoveryList: [],
searchData: searchDataDefault(), searchData: searchDataDefault(),
@ -488,7 +511,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.SegmentHight = window.innerHeight > 900 ? window.innerHeight * 0.5 : window.innerHeight * 0.4; this.SegmentHight = window.innerHeight > 900 ? window.innerHeight * 0.45 : window.innerHeight * 0.35;
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')
@ -578,6 +601,16 @@ export default {
} }
}, },
methods: { methods: {
handleSliderChange(value) {
// console.log(value, 'value')
let data = this.sliderSection.find(item => item.max === value)
if (data) {
this.sliderStep = data.step
}
if (this.brushSize >= data.max) {
this.brushSize = data.max
}
},
fileSizeFormatter(size) { fileSizeFormatter(size) {
if (!size) return if (!size) return
return (size / Math.pow(1024, 2)).toFixed(3) + 'MB' return (size / Math.pow(1024, 2)).toFixed(3) + 'MB'