阅片单元配置更改
continuous-integration/drone/push Build is passing Details

uat
caiyiling 2025-04-24 10:34:24 +08:00
parent 41b3a98594
commit 2676ff4295
4 changed files with 76 additions and 28 deletions

View File

@ -1,7 +1,7 @@
<template> <template>
<div ref="container" style="width:100%;height:100%" class="dicom-container"> <div ref="container" style="width:100%;height:100%" class="dicom-container">
<!-- 访视阅片 --> <!-- 访视阅片 -->
<div v-if="readingCategory=== 1 && (CriterionType === 7 || CriterionType === 1 )" class="reading-wrapper"> <div v-if="readingCategory=== 1 && (CriterionType === 7 || ((CriterionType === 1 || CriterionType === 0) && readingVersionEnum === 1)) " class="reading-wrapper">
<VisitReview /> <VisitReview />
</div> </div>
<div v-else-if="(isReadingTaskViewInOrder === 1 || ((isReadingTaskViewInOrder !== 1) && isShow)) && readingCategory=== 1 && CriterionType !== 0" class="reading-wrapper"> <div v-else-if="(isReadingTaskViewInOrder === 1 || ((isReadingTaskViewInOrder !== 1) && isShow)) && readingCategory=== 1 && CriterionType !== 0" class="reading-wrapper">
@ -234,7 +234,8 @@ export default {
isFullscreen: false, isFullscreen: false,
tipVisible: false, tipVisible: false,
closeCDVisible: false, closeCDVisible: false,
cdVisitTaskId: '' cdVisitTaskId: '',
readingVersionEnum: null
} }
}, },
mounted() { mounted() {
@ -346,6 +347,7 @@ export default {
localStorage.setItem('IsExistUnprocessedFeedback', res.Result.IsExistUnprocessedFeedback) localStorage.setItem('IsExistUnprocessedFeedback', res.Result.IsExistUnprocessedFeedback)
localStorage.setItem('taskInfo', JSON.stringify(res.Result)) localStorage.setItem('taskInfo', JSON.stringify(res.Result))
this.readingCategory = res.Result.ReadingCategory this.readingCategory = res.Result.ReadingCategory
this.readingVersionEnum = res.Result.ReadingVersionEnum
this.questionFormChangeState = false this.questionFormChangeState = false
this.questionFormChangeNum = 0 this.questionFormChangeNum = 0
if (this.isExistsClinicalData && this.isNeedReadClinicalData && !this.isReadClinicalData) { if (this.isExistsClinicalData && this.isNeedReadClinicalData && !this.isReadClinicalData) {

View File

@ -473,7 +473,7 @@ import {
import * as cornerstoneTools from '@cornerstonejs/tools' import * as cornerstoneTools from '@cornerstonejs/tools'
import initLibraries from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initLibraries' import initLibraries from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initLibraries'
import html2canvas from 'html2canvas' import html2canvas from 'html2canvas'
import { getTools } from './toolConfig' import { getTools, getCustomizeStandardsTools } from './toolConfig'
import StudyList from './StudyList' import StudyList from './StudyList'
import Viewport from './Viewport' import Viewport from './Viewport'
import mRecisit from './mRecist/QuestionList' import mRecisit from './mRecist/QuestionList'
@ -687,30 +687,7 @@ export default {
const digitPlaces = Number(localStorage.getItem('digitPlaces')) const digitPlaces = Number(localStorage.getItem('digitPlaces'))
this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces
if (this.criterionType === 0) { if (this.criterionType === 0) {
this.tools = [{ this.tools = getCustomizeStandardsTools(this.taskInfo.ReadingToolList)
"name": "直径测量工具",
"icon": "length",
"toolName": "Length",
"i18nKey": "trials:reading:button:length",
"isDisabled": false,
"disabledReason": ''
},
{
"name": "矩形工具",
"icon": "rectangle",
"toolName": "RectangleROI",
"i18nKey": "trials:reading:button:rectangle",
"isDisabled": false,
"disabledReason": ''
},
{
"name": "箭头工具",
"icon": "arrow",
"toolName": "ArrowAnnotate",
"i18nKey": "trials:reading:button:arrowAnnotate",
"isDisabled": false,
"disabledReason": ''
}]
} else { } else {
this.tools = getTools(this.criterionType) this.tools = getTools(this.criterionType)
} }
@ -1129,6 +1106,7 @@ export default {
// }) // })
}, },
renderAnnotations(series) { renderAnnotations(series) {
console.log('renderAnnotations')
const taskId = series.TaskInfo.VisitTaskId const taskId = series.TaskInfo.VisitTaskId
if (!taskId || this.renderedTaskIds.includes(taskId)) return if (!taskId || this.renderedTaskIds.includes(taskId)) return
this.renderedTaskIds.push(taskId) this.renderedTaskIds.push(taskId)

View File

@ -228,10 +228,48 @@ const config = {
} }
] ]
} }
],
"customizeStandards": [
{
"name": "直径测量工具",
"icon": "length",
"toolName": "Length",
"i18nKey": "trials:reading:button:length",
"isDisabled": false,
"disabledReason": ''
},
{
"name": "长短径测量工具",
"icon": "bidirection",
"toolName": "Bidirectional",
"i18nKey": "trials:reading:button:bidirectional",
"isDisabled": false,
"disabledReason": ''
},
{
"name": "矩形工具",
"icon": "rectangle",
"toolName": "RectangleROI",
"i18nKey": "trials:reading:button:rectangle",
"isDisabled": false,
"disabledReason": ''
},
{
"name": "箭头工具",
"icon": "arrow",
"toolName": "ArrowAnnotate",
"i18nKey": "trials:reading:button:arrowAnnotate",
"isDisabled": false,
"disabledReason": ''
}
] ]
} }
const getTools = (criterionType) => { const getTools = (criterionType) => {
const standard = config.standards.find(s => s.type === criterionType); const standard = config.standards.find(s => s.type === criterionType);
return standard?.tools || []; return standard?.tools || [];
}; };
export {config, getTools} const getCustomizeStandardsTools = (toolNames) => {
const filteredTools =config.customizeStandards.filter(item => toolNames.includes(item.toolName));
return filteredTools || [];
};
export {config, getTools, getCustomizeStandardsTools}

View File

@ -64,6 +64,28 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- 测量工具 -->
<el-form-item
v-if="CriterionType === 0 && form.ReadingTool === 0 && form.ReadingTaskViewEnum === 1"
:label="$t('trials:readingUnit:readingRules:title:measureTool')"
>
<el-checkbox-group
v-model="form.ReadingToolList"
:disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
>
<el-checkbox
v-for="tool in tools"
:key="tool.toolName"
:label="tool.toolName"
name="ReadingToolList"
>
{{ $t(`${tool.i18nKey}`) }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<!--检查类型筛选--> <!--检查类型筛选-->
<el-form-item <el-form-item
:label="$t('trials:processCfg:form:IsImageFilter')" :label="$t('trials:processCfg:form:IsImageFilter')"
@ -593,6 +615,7 @@
</template> </template>
<script> <script>
import { getCriterionReadingInfo, setCriterionReadingInfo } from '@/api/trials' import { getCriterionReadingInfo, setCriterionReadingInfo } from '@/api/trials'
import { config } from '@/views/trials/trials-panel/reading/dicoms3D/components/toolConfig'
export default { export default {
name: 'ReadingRules', name: 'ReadingRules',
props: { props: {
@ -614,6 +637,8 @@ export default {
TrialId: '', TrialId: '',
ImagePlatform: null, ImagePlatform: null,
ReadingTool: 0, ReadingTool: 0,
ReadingVersionEnum: null,
ReadingToolList: [],
ReadingTaskViewEnum: null, ReadingTaskViewEnum: null,
IsImageLabeled: null, IsImageLabeled: null,
IsReadingShowSubjectInfo: null, IsReadingShowSubjectInfo: null,
@ -807,9 +832,14 @@ export default {
modalityList: [], modalityList: [],
CriterionModalitys: [], CriterionModalitys: [],
modalityIsCheck: false, // modalityIsCheck: false, //
tools: []
} }
}, },
mounted() { mounted() {
if (this.CriterionType === 0) {
this.tools = [...config.customizeStandards]
}
this.initPage() this.initPage()
}, },
computed: { computed: {