熊飞 2024-01-16 09:42:00 +08:00
commit bc9edcaa89
3 changed files with 75 additions and 54 deletions

View File

@ -17,8 +17,9 @@
class="icon" class="icon"
:class="[activeTool==='WindowLevel'?'tool_active':'']" :class="[activeTool==='WindowLevel'?'tool_active':'']"
data-tool="WindowLevel" data-tool="WindowLevel"
@click.prevent="setBasicToolActive('WindowLevel')"
> >
<svg-icon icon-class="reverse" class="svg-icon" @click.prevent="setBasicToolActive('WindowLevel')" /> <svg-icon icon-class="reverse" class="svg-icon" />
<i class="el-icon-arrow-down" style="color:#fff;" /> <i class="el-icon-arrow-down" style="color:#fff;" />
</div> </div>
<!-- 窗宽窗位 --> <!-- 窗宽窗位 -->
@ -60,8 +61,9 @@
<div <div
class="icon" class="icon"
data-tool="reverse" data-tool="reverse"
@click.prevent="toggleInvert"
> >
<svg-icon icon-class="reversecolor" class="svg-icon" @click.prevent="toggleInvert" /> <svg-icon icon-class="reversecolor" class="svg-icon" />
</div> </div>
<!-- 反色 --> <!-- 反色 -->
<div class="text">{{ $t('trials:reading:button:reverseColor') }}</div> <div class="text">{{ $t('trials:reading:button:reverseColor') }}</div>
@ -74,8 +76,9 @@
class="icon" class="icon"
:class="[activeTool==='Zoom'?'tool_active':'']" :class="[activeTool==='Zoom'?'tool_active':'']"
data-tool="Zoom" data-tool="Zoom"
@click.prevent="setBasicToolActive('Zoom')"
> >
<svg-icon icon-class="magnifier" class="svg-icon" @click.prevent="setBasicToolActive('Zoom')" /> <svg-icon icon-class="magnifier" class="svg-icon" />
</div> </div>
<!-- 缩放 --> <!-- 缩放 -->
<div class="text">{{ $t('trials:reading:button:zoom') }}</div> <div class="text">{{ $t('trials:reading:button:zoom') }}</div>
@ -88,8 +91,9 @@
class="icon" class="icon"
:class="[activeTool==='Pan'?'tool_active':'']" :class="[activeTool==='Pan'?'tool_active':'']"
data-tool="Pan" data-tool="Pan"
@click.prevent="setBasicToolActive('Pan')"
> >
<svg-icon icon-class="move" class="svg-icon" @click.prevent="setBasicToolActive('Pan')" /> <svg-icon icon-class="move" class="svg-icon" />
</div> </div>
<!-- 移动 --> <!-- 移动 -->
<div class="text">{{ $t('trials:reading:button:move') }}</div> <div class="text">{{ $t('trials:reading:button:move') }}</div>
@ -103,8 +107,9 @@
class="icon" class="icon"
:class="[activeTool==='Rotate'?'tool_active':'']" :class="[activeTool==='Rotate'?'tool_active':'']"
data-tool="Pan" data-tool="Pan"
@click.prevent="setBasicToolActive('TrackballRotate')"
> >
<svg-icon icon-class="rotate" class="svg-icon" @click.prevent="setBasicToolActive('TrackballRotate')" /> <svg-icon icon-class="rotate" class="svg-icon" />
<i class="el-icon-arrow-down" style="color:#fff;" /> <i class="el-icon-arrow-down" style="color:#fff;" />
</div> </div>
<!-- 移动 --> <!-- 移动 -->
@ -135,8 +140,9 @@
class="icon" class="icon"
:class="[activeTool===tool.toolName?'tool_active':'']" :class="[activeTool===tool.toolName?'tool_active':'']"
@mouseenter="enter($event,tool.toolName)" @mouseenter="enter($event,tool.toolName)"
@click.prevent="setMeasureToolActive(tool.toolName)"
> >
<svg-icon :icon-class="tool.icon" class="svg-icon" @click.prevent="setMeasureToolActive(tool.toolName)" /> <svg-icon :icon-class="tool.icon" class="svg-icon" />
</div> </div>
<div class="text">{{ tool.text }}</div> <div class="text">{{ tool.text }}</div>
</div> </div>
@ -181,7 +187,7 @@
<div class="dropdown"> <div class="dropdown">
<div <div
id="colorBar" id="colorBar"
class="icon"
style="display: flex;align-items: center;width:266px" style="display: flex;align-items: center;width:266px"
> >
<canvas id="colorBarCanvas" /> <canvas id="colorBarCanvas" />
@ -2080,7 +2086,7 @@ export default {
cursor: pointer; cursor: pointer;
text-align: center; text-align: center;
.svg-icon{ .svg-icon{
font-size:20px; font-size:25px;
color:#ddd; color:#ddd;
} }
} }

View File

@ -53,8 +53,8 @@ export default {
measurements: [], measurements: [],
currentQsId: '', currentQsId: '',
pet5PSId: '', pet5PSId: '',
pet5PSCommentsId:'', pet5PSCommentsId: '',
calculatePet5PS:null, calculatePet5PS: null,
liverSuvmaxId: '', liverSuvmaxId: '',
lungSuvmaxId: '', lungSuvmaxId: '',
suvmaxId: '', suvmaxId: '',
@ -397,18 +397,18 @@ export default {
}, },
setFormItemData(obj) { setFormItemData(obj) {
this.questionForm[obj.key] = obj.val this.questionForm[obj.key] = obj.val
if(obj.key === this.pet5PSId){ if (obj.key === this.pet5PSId) {
this.setPet5PSCommentDisplay() this.setPet5PSCommentDisplay()
} }
}, },
setPet5PSCommentDisplay(){ setPet5PSCommentDisplay() {
if( this.pet5PSCommentsId && this.pet5PSId ){ if (this.pet5PSCommentsId && this.pet5PSId) {
for (let i = 0; i < this.questions[0].Childrens[0].Childrens.length; i++) { for (let i = 0; i < this.questions[0].Childrens[0].Childrens.length; i++) {
if (this.questions[0].Childrens[0].Childrens[i].QuestionType === 59) { if (this.questions[0].Childrens[0].Childrens[i].QuestionType === 59) {
if(this.calculatePet5PS && this.calculatePet5PS !== this.questionForm[this.pet5PSId]){ if (this.calculatePet5PS && this.calculatePet5PS !== this.questionForm[this.pet5PSId]) {
this.questions[0].Childrens[0].Childrens[i].ShowQuestion = 0 this.questions[0].Childrens[0].Childrens[i].ShowQuestion = 0
this.questions[0].Childrens[0].Childrens[i].IsRequired = 0 this.questions[0].Childrens[0].Childrens[i].IsRequired = 0
}else{ } else {
this.questions[0].Childrens[0].Childrens[i].ShowQuestion = 2 this.questions[0].Childrens[0].Childrens[i].ShowQuestion = 2
this.questions[0].Childrens[0].Childrens[i].IsRequired = 3 this.questions[0].Childrens[0].Childrens[i].IsRequired = 3
this.questionForm[this.pet5PSCommentsId] = '' this.questionForm[this.pet5PSCommentsId] = ''
@ -443,7 +443,7 @@ export default {
// 访SUVmax<SUVmax 2 // 访SUVmax<SUVmax 2
// this.questionForm[this.pet5PSId] = '2' // this.questionForm[this.pet5PSId] = '2'
return '2' return '2'
}else{ } else {
// this.questionForm[this.pet5PSId] = '' // this.questionForm[this.pet5PSId] = ''
return '' return ''
} }

View File

@ -31,8 +31,8 @@
v-model="questionForm.LesionType" v-model="questionForm.LesionType"
filterable filterable
:disabled="!isCurrentTask || readingTaskState>=2 || !isBaseLineTask" :disabled="!isCurrentTask || readingTaskState>=2 || !isBaseLineTask"
@change="((val)=>{lesionTypeChange(val)})"
:popper-append-to-body="false" :popper-append-to-body="false"
@change="((val)=>{lesionTypeChange(val)})"
> >
<el-option <el-option
@ -89,8 +89,8 @@
filterable filterable
:placeholder="qs.QuestionMark === 8 ? $t('common:placeholder:selectorsearch') : $t('common:placeholder:select')" :placeholder="qs.QuestionMark === 8 ? $t('common:placeholder:selectorsearch') : $t('common:placeholder:select')"
:disabled="!isCurrentTask || readingTaskState>=2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answers.SplitOrMergeLesionName))|| (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False'|| !!answers.SplitOrMergeLesionName)) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answers.SplitOrMergeLesionName)) || (qs.QuestionMark === 7 && stateDisabled)" :disabled="!isCurrentTask || readingTaskState>=2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answers.SplitOrMergeLesionName))|| (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False'|| !!answers.SplitOrMergeLesionName)) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answers.SplitOrMergeLesionName)) || (qs.QuestionMark === 7 && stateDisabled)"
@change="((val)=>{formItemChange(val, qs)})"
:popper-append-to-body="false" :popper-append-to-body="false"
@change="((val)=>{formItemChange(val, qs)})"
> >
<template v-if="qs.QuestionMark === 8" #prefix> <template v-if="qs.QuestionMark === 8" #prefix>
<span style="padding-left: 5px;"> <span style="padding-left: 5px;">
@ -189,14 +189,21 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
label="SUV测量截图"
v-if="answers.OtherPicturePath" v-if="answers.OtherPicturePath"
label="SUV测量截图"
/>
<div>
<img
v-viewer
:options="{ toolbar: false }"
style="width: 50px; height: 50px; cursor: pointer;"
crossorigin="anonymous"
:src="answers.OtherPicturePath"
alt="Image"
class="suv_viewer"
> >
<img v-viewer style="width: 50px; height: 50px; cursor: pointer;" crossorigin="anonymous" :src="answers.OtherPicturePath" alt="Image" class="suv_viewer">
</el-form-item>
</div> </div>
</div> </div>
<div <div
v-if="isCurrentTask && readingTaskState<2" v-if="isCurrentTask && readingTaskState<2"
class="base-dialog-footer" class="base-dialog-footer"
@ -227,6 +234,7 @@
{{ $t('common:button:save') }} {{ $t('common:button:save') }}
</el-button> </el-button>
</div> </div>
</div>
</el-form> </el-form>
</template> </template>
<script> <script>
@ -234,6 +242,7 @@ import { submitTableQuestion, deleteReadingRowAnswer } from '@/api/trials'
// import { uploadPrintscreen } from '@/api/reading' // import { uploadPrintscreen } from '@/api/reading'
import DicomEvent from './../DicomEvent' import DicomEvent from './../DicomEvent'
import store from '@/store' import store from '@/store'
import Viewer from 'v-viewer'
export default { export default {
name: 'MeasurementForm', name: 'MeasurementForm',
props: { props: {
@ -303,10 +312,11 @@ export default {
pictureBaseStr: '', pictureBaseStr: '',
currentMarkTool: '', currentMarkTool: '',
digitPlaces: 2, digitPlaces: 2,
stateDisabled: false, stateDisabled: false
} }
}, },
mounted() { mounted() {
this.initializeViewer()
this.trialId = this.$route.query.trialId this.trialId = this.$route.query.trialId
this.initForm() this.initForm()
DicomEvent.$on('handleImageQualityAbnormal', () => { DicomEvent.$on('handleImageQualityAbnormal', () => {
@ -319,6 +329,11 @@ export default {
DicomEvent.$off('handleImageQualityAbnormal') DicomEvent.$off('handleImageQualityAbnormal')
}, },
methods: { methods: {
initializeViewer() {
Viewer.setDefaults({
toolbar: { zoomIn: true, zoomOut: true, rotateLeft: true, rotateRight: true, flipHorizontal: true, flipVertical: true }
})
},
async initForm() { async initForm() {
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
this.questions.forEach(item => { this.questions.forEach(item => {