部分问题修复
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
cc5ac4c2a9
commit
c2cb5b1999
|
|
@ -214,56 +214,25 @@
|
|||
<!-- @dblclick.native="reloadViewport('CT_AXIAL')" -->
|
||||
<div ref="dicomContainer" class="dicom-container box box_2_2" style="position: relative;"
|
||||
@dblclick="reloadViewport">
|
||||
<Viewport
|
||||
ref="CT_AXIAL"
|
||||
:index="1"
|
||||
:active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||
:series-info="ctSeries"
|
||||
:rendering-engine-id="renderingEngineId"
|
||||
viewport-id="CT_AXIAL" :volume="ctVolume"
|
||||
:measure-datas="measureDatas"
|
||||
:style="1 === activeIndex ? viewportStyle : {}"
|
||||
@upperRangeChange="upperRangeChange"
|
||||
/>
|
||||
<Viewport
|
||||
ref="PT_AXIAL"
|
||||
:index="2"
|
||||
:active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||
:series-info="petSeries"
|
||||
:rendering-engine-id="renderingEngineId"
|
||||
viewport-id="PT_AXIAL"
|
||||
:volume="ptVolume"
|
||||
:measure-datas="measureDatas"
|
||||
:style="2 === activeIndex ? viewportStyle : {}"
|
||||
@upperRangeChange="upperRangeChange"
|
||||
/>
|
||||
<Viewport
|
||||
ref="FUSION_AXIAL"
|
||||
:index="3"
|
||||
:active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||
:series-info="petSeries"
|
||||
:rendering-engine-id="renderingEngineId"
|
||||
viewport-id="FUSION_AXIAL"
|
||||
:volume="ptVolume"
|
||||
:measure-datas="measureDatas"
|
||||
:rgb-preset-name="rgbPresetName"
|
||||
:style="3 === activeIndex ? viewportStyle : {}"
|
||||
@upperRangeChange="upperRangeChange"
|
||||
/>
|
||||
<Viewport
|
||||
ref="PET_MIP_CORONAL"
|
||||
:index="4"
|
||||
:active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||
:series-info="petSeries"
|
||||
:rendering-engine-id="renderingEngineId"
|
||||
viewport-id="PET_MIP_CORONAL" :measure-datas="measureDatas"
|
||||
:style="4 === activeIndex ? viewportStyle : {}"
|
||||
@upperRangeChange="upperRangeChange"
|
||||
/>
|
||||
<Viewport ref="CT_AXIAL" :index="1" :active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo" :series-info="ctSeries"
|
||||
:rendering-engine-id="renderingEngineId" viewport-id="CT_AXIAL" :volume="ctVolume"
|
||||
:measure-datas="measureDatas" :style="1 === activeIndex ? viewportStyle : {}"
|
||||
@upperRangeChange="upperRangeChange" />
|
||||
<Viewport ref="PT_AXIAL" :index="2" :active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo" :series-info="petSeries"
|
||||
:rendering-engine-id="renderingEngineId" viewport-id="PT_AXIAL" :volume="ptVolume"
|
||||
:measure-datas="measureDatas" :style="2 === activeIndex ? viewportStyle : {}"
|
||||
@upperRangeChange="upperRangeChange" />
|
||||
<Viewport ref="FUSION_AXIAL" :index="3" :active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo" :series-info="petSeries"
|
||||
:rendering-engine-id="renderingEngineId" viewport-id="FUSION_AXIAL" :volume="ptVolume"
|
||||
:measure-datas="measureDatas" :rgb-preset-name="rgbPresetName" :style="3 === activeIndex ? viewportStyle : {}"
|
||||
@upperRangeChange="upperRangeChange" />
|
||||
<Viewport ref="PET_MIP_CORONAL" :index="4" :active-index="activeIndex"
|
||||
:is-reading-show-subject-info="isReadingShowSubjectInfo" :series-info="petSeries"
|
||||
:rendering-engine-id="renderingEngineId" viewport-id="PET_MIP_CORONAL" :measure-datas="measureDatas"
|
||||
:style="4 === activeIndex ? viewportStyle : {}" @upperRangeChange="upperRangeChange" />
|
||||
</div>
|
||||
<!-- 表单 -->
|
||||
<div class="form-container" style="overflow-y: auto;">
|
||||
|
|
@ -273,19 +242,22 @@
|
|||
<span style="margin-left:5px;">{{ taskBlindName }}</span>
|
||||
</h3>
|
||||
|
||||
<TableQuestions ref="tableQuestions" />
|
||||
<Questions ref="questions" @setNonTargetMeasurementStatus="setNonTargetMeasurementStatus" />
|
||||
<TableQuestions ref="tableQuestions" @handleReadingChart="handleReadingChart" />
|
||||
<Questions ref="questions" @setNonTargetMeasurementStatus="setNonTargetMeasurementStatus"
|
||||
@handleReadingChart="handleReadingChart" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog v-if="customWwc.visible" :visible.sync="customWwc.visible" :close-on-click-modal="false"
|
||||
:title="customWwc.title" width="400px" custom-class="base-dialog-wrapper">
|
||||
<custom-wwwc-form :ww="activeCanvasWW" :wc="activeCanvasWC" @close="customWwc.visible = false" @setWwwc="setWwwc" />
|
||||
<custom-wwwc-form :ww="activeCanvasWW" :wc="activeCanvasWC" @close="customWwc.visible = false"
|
||||
@setWwwc="setWwwc" />
|
||||
</el-dialog>
|
||||
<el-dialog :visible.sync="fusion.visible" :close-on-click-modal="false" :title="$t('trials:lugano:button:record')"
|
||||
width="850px">
|
||||
<fusion-form @close="fusion.visible = false" />
|
||||
</el-dialog>
|
||||
<readingChart ref="readingChart" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
|
@ -333,6 +305,7 @@ import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunc
|
|||
// import vtkOrientationMarkerWidget from '@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget'
|
||||
import { mat4, vec3 } from 'gl-matrix'
|
||||
import html2canvas from 'html2canvas'
|
||||
import readingChart from '@/components/readingChart'
|
||||
// import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction'
|
||||
// import vtkMath from '@kitware/vtk.js/Common/Core/Math'
|
||||
// import CircleROITool from './tools/CircleROITool'
|
||||
|
|
@ -420,7 +393,8 @@ export default {
|
|||
Questions,
|
||||
TableQuestions,
|
||||
CustomWwwcForm,
|
||||
FusionForm
|
||||
FusionForm,
|
||||
readingChart
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -582,6 +556,7 @@ export default {
|
|||
this.screenshotWindow = window.open(routeData.href, '_blank')
|
||||
})
|
||||
window.addEventListener('beforeunload', e => { this.beforeUnloadHandler(e) })
|
||||
document.addEventListener("click", this.foo);
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (this.screenshotWindow) {
|
||||
|
|
@ -604,7 +579,21 @@ export default {
|
|||
window.removeEventListener('beforeunload', e => { this.beforeUnloadHandler(e) })
|
||||
},
|
||||
methods: {
|
||||
|
||||
handleReadingChart(row) {
|
||||
let { e, data } = row
|
||||
let obj = Object.assign({}, data)
|
||||
obj.TrialId = this.$route.query.trialId
|
||||
obj.VisitTaskId = this.$route.query.visitTaskId
|
||||
let zIndex = 9
|
||||
if (obj.RowIndex) {
|
||||
zIndex = 9999
|
||||
}
|
||||
this.$refs.readingChart.init(e, obj, zIndex)
|
||||
},
|
||||
foo() {
|
||||
if (!this.$refs.readingChart) return false
|
||||
this.$refs.readingChart.foo()
|
||||
},
|
||||
initPage() {
|
||||
const resizeObserver = new ResizeObserver(() => {
|
||||
if (element_ct.style.width) {
|
||||
|
|
@ -1715,7 +1704,7 @@ export default {
|
|||
},
|
||||
voiChange(v) {
|
||||
let viewportIds = ['FUSION_AXIAL', 'PT_AXIAL', 'PET_MIP_CORONAL']
|
||||
viewportIds.map(viewportId=>{
|
||||
viewportIds.map(viewportId => {
|
||||
// const volumeId = viewportId === 'viewportId' ? ptVolumeId : ctVolumeId
|
||||
const volumeId = ptVolumeId
|
||||
const voiRange = { lower: 0, upper: v }
|
||||
|
|
@ -1743,7 +1732,7 @@ export default {
|
|||
async setColorMap(rgbPresetName) {
|
||||
this.rgbPresetName = rgbPresetName
|
||||
let viewports = ['FUSION_AXIAL', 'PT_AXIAL', 'PET_MIP_CORONAL']
|
||||
viewports.map(v=>{
|
||||
viewports.map(v => {
|
||||
this.$refs[v].setPreset(this.rgbPresetName)
|
||||
this.$refs[v].renderColorBar(this.rgbPresetName)
|
||||
this.createColorBar(this.rgbPresetName, 'colorBarCanvas', 256, 15)
|
||||
|
|
@ -1862,8 +1851,8 @@ export default {
|
|||
const renderingEngine = getRenderingEngine(renderingEngineId)
|
||||
const viewport = renderingEngine.getViewport(viewporId)
|
||||
const { invert } = viewport.getProperties()
|
||||
if ( this.isFusion ) {
|
||||
viewport.setProperties({ invert: !invert }, volumeId )
|
||||
if (this.isFusion) {
|
||||
viewport.setProperties({ invert: !invert }, volumeId)
|
||||
}
|
||||
viewport.setProperties({ invert: !invert })
|
||||
viewport.render()
|
||||
|
|
@ -1987,7 +1976,7 @@ export default {
|
|||
const viewport = renderingEngine.getViewport(viewportId)
|
||||
const lower = v.wc - v.ww / 2
|
||||
const upper = v.wc + v.ww / 2 - 1
|
||||
viewport.setProperties({ voiRange: { upper: upper, lower: lower }})
|
||||
viewport.setProperties({ voiRange: { upper: upper, lower: lower } })
|
||||
viewport.render()
|
||||
this.customWwc.visible = false
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,305 +1,219 @@
|
|||
<template>
|
||||
<div>
|
||||
<div
|
||||
v-if="!!question.GroupName && question.Type==='group'"
|
||||
>
|
||||
<div v-if="!!question.GroupName && question.Type === 'group'">
|
||||
<h4 style="color: #ddd;padding: 5px 0px;margin: 0;">
|
||||
{{ language==='en'?question.GroupEnName:question.GroupName }}
|
||||
{{ language === 'en' ? question.GroupEnName : question.GroupName }}
|
||||
</h4>
|
||||
</div>
|
||||
<template v-else-if="((question.QuestionType === 56) && question.IsBaseLineTask)" />
|
||||
<template v-else>
|
||||
<el-form-item
|
||||
v-if="(question.ShowQuestion===1 && question.ParentTriggerValueList.includes(String(questionForm[question.ParentId]))) || question.ShowQuestion===0"
|
||||
:label="`${question.QuestionName}`"
|
||||
:prop="question.Id"
|
||||
:rules="[
|
||||
{ required: (question.IsRequired === 0 || (question.IsRequired ===1 && question.RelevanceId && (questionForm[question.RelevanceId] === question.RelevanceValue))) && question.Type!=='group' && question.Type!=='summary',
|
||||
message: ['radio', 'select', 'checkbox'].includes(question.Type) ? $t('common:ruleMessage:select') : $t('common:ruleMessage:specify'), trigger: ['blur', 'change']},
|
||||
]"
|
||||
:class="[question.Type==='group'?'mb':question.Type==='upload'?'uploadWrapper':'']"
|
||||
>
|
||||
v-if="(question.ShowQuestion === 1 && question.ParentTriggerValueList.includes(String(questionForm[question.ParentId]))) || question.ShowQuestion === 0"
|
||||
:label="`${question.QuestionName}`" :prop="question.Id" :rules="[
|
||||
{
|
||||
required: (question.IsRequired === 0 || (question.IsRequired === 1 && question.RelevanceId && (questionForm[question.RelevanceId] === question.RelevanceValue))) && question.Type !== 'group' && question.Type !== 'summary',
|
||||
message: ['radio', 'select', 'checkbox'].includes(question.Type) ? $t('common:ruleMessage:select') : $t('common:ruleMessage:specify'), trigger: ['blur', 'change']
|
||||
},
|
||||
]" :class="[question.Type === 'group' ? 'mb' : question.Type === 'upload' ? 'uploadWrapper' : '']">
|
||||
<template v-if="question.QuestionType === 51 || question.QuestionType === 52">
|
||||
<!-- question.QuestionType === 51 || question.QuestionType === 52 -->
|
||||
<div style="display: flex;flex-direction: row;justify-content: flex-start;">
|
||||
<el-input
|
||||
v-if="question.Type==='calculation'"
|
||||
v-model="questionForm[question.Id]"
|
||||
disabled
|
||||
style="width: 120px;"
|
||||
>
|
||||
<div style="display: flex;justify-content: space-between;" v-if="question.Type === 'calculation'">
|
||||
<el-input v-model="questionForm[question.Id]" disabled style="width: 120px;">
|
||||
<template v-if="question.Unit" slot="append">
|
||||
{{ $fd('ValueUnit', parseInt(question.Unit)) }}
|
||||
</template>
|
||||
<svg-icon v-if="question.ShowChartTypeEnum > 0" icon-class="readingChart"
|
||||
class="svg-icon svg-readingChart" @click.stop="(e) => handleReadingChart({
|
||||
e,
|
||||
data: {
|
||||
QuestionId: question.Id,
|
||||
RowIndex: questionForm.RowIndex,
|
||||
QuestionName: question.QuestionName
|
||||
}
|
||||
})" />
|
||||
</el-input>
|
||||
</div>
|
||||
|
||||
<!-- 测量 -->
|
||||
<el-button v-if="(!questionForm[question.Id] && ((question.QuestionType === 51 && liverIsInsideVolume) || (question.QuestionType === 52 && lungIsInsideVolume)) && readingTaskState!== 2)" size="mini" type="text" @click="addAnnotation(question)">{{ $t('trials:lugano:button:addAnnotation') }}</el-button>
|
||||
<el-button
|
||||
v-if="(!questionForm[question.Id] && ((question.QuestionType === 51 && liverIsInsideVolume) || (question.QuestionType === 52 && lungIsInsideVolume)) && readingTaskState !== 2)"
|
||||
size="mini" type="text" @click="addAnnotation(question)">{{ $t('trials:lugano:button:addAnnotation')
|
||||
}}</el-button>
|
||||
<!-- 清除标记 -->
|
||||
<el-button v-if="(questionForm[question.Id] || (question.QuestionType === 51 && !liverIsInsideVolume) || (question.QuestionType === 52 && !lungIsInsideVolume)) && readingTaskState!== 2" size="mini" type="text" style="padding: 7px 5px;margin-left:5px;" @click="removeAnnotation(question)">{{ $t('trials:lugano:button:clearAnnotation') }}</el-button>
|
||||
<el-button
|
||||
v-if="(questionForm[question.Id] || (question.QuestionType === 51 && !liverIsInsideVolume) || (question.QuestionType === 52 && !lungIsInsideVolume)) && readingTaskState !== 2"
|
||||
size="mini" type="text" style="padding: 7px 5px;margin-left:5px;" @click="removeAnnotation(question)">{{
|
||||
$t('trials:lugano:button:clearAnnotation') }}</el-button>
|
||||
<!-- 定位 -->
|
||||
<el-button
|
||||
v-if="(questionForm[question.Id] || (question.QuestionType === 51 && !liverIsInsideVolume) || (question.QuestionType === 52 && !lungIsInsideVolume))"
|
||||
size="mini"
|
||||
type="text"
|
||||
style="padding: '7px 5px';margin-left:-5px;"
|
||||
@click="locateAnnotation(question)"
|
||||
>{{ $t('trials:lugano:button:locateAnnotation') }}</el-button>
|
||||
size="mini" type="text" style="padding: '7px 5px';margin-left:-5px;"
|
||||
@click="locateAnnotation(question)">{{
|
||||
$t('trials:lugano:button:locateAnnotation') }}</el-button>
|
||||
<!-- 保存 -->
|
||||
<el-button v-if="readingTaskState!== 2 && question.SaveEnum === 1" size="mini" type="text" style="padding: '7px 5px';margin-left:-5px;" @click="saveAnnotation(question)">
|
||||
<el-button v-if="readingTaskState !== 2 && question.SaveEnum === 1" size="mini" type="text"
|
||||
style="padding: '7px 5px';margin-left:-5px;" @click="saveAnnotation(question)">
|
||||
<!-- 未保存 -->
|
||||
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:unsaved')" placement="bottom">
|
||||
<i class="el-icon-warning" style="color:red" />
|
||||
</el-tooltip>
|
||||
{{ $t('common:button:save') }}
|
||||
</el-button>
|
||||
<el-button v-if="!question.IsBaseLineTask" size="mini" type="text" style="padding: '7px 5px';margin-left:-5px;" @click="viewAnnotations(question)">{{ $t('trials:lugano:button:suvscreenshot') }}</el-button>
|
||||
<el-button v-if="!question.IsBaseLineTask" size="mini" type="text"
|
||||
style="padding: '7px 5px';margin-left:-5px;" @click="viewAnnotations(question)">{{
|
||||
$t('trials:lugano:button:suvscreenshot') }}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="question.QuestionType === 53">
|
||||
<el-input
|
||||
v-if="question.Type==='calculation'"
|
||||
v-model="questionForm[question.Id]"
|
||||
disabled
|
||||
>
|
||||
<div style="display: flex;justify-content: space-between;" v-if="question.Type === 'calculation'">
|
||||
<el-input v-model="questionForm[question.Id]" disabled>
|
||||
<template v-if="question.Unit" slot="append">
|
||||
{{ $fd('ValueUnit', parseInt(question.Unit)) }}
|
||||
</template>
|
||||
</el-input>
|
||||
<svg-icon v-if="question.ShowChartTypeEnum > 0" icon-class="readingChart" class="svg-icon svg-readingChart"
|
||||
@click.stop="(e) => handleReadingChart({
|
||||
e,
|
||||
data: {
|
||||
QuestionId: question.Id,
|
||||
RowIndex: questionForm.RowIndex,
|
||||
QuestionName: question.QuestionName
|
||||
}
|
||||
})" />
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<template v-else-if="question.QuestionType === 55">
|
||||
<el-select
|
||||
v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2 "
|
||||
clearable
|
||||
@change="((val)=>{formItemChange(val, question)})"
|
||||
>
|
||||
<el-select v-model="questionForm[question.Id]" :disabled="readingTaskState >= 2" clearable
|
||||
@change="((val) => { formItemChange(val, question) })">
|
||||
<el-option-group
|
||||
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(question.DictionaryCode,parseFloat(question.LastTaskAnswer))}` : ''"
|
||||
>
|
||||
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(question.DictionaryCode, parseFloat(question.LastTaskAnswer))}` : ''">
|
||||
<template>
|
||||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:value="String(item.value)"
|
||||
:label="item.label"
|
||||
/>
|
||||
<el-option v-for="item of $d[question.DictionaryCode]" :key="item.id" :value="String(item.value)"
|
||||
:label="item.label" />
|
||||
</template>
|
||||
</el-option-group>
|
||||
</el-select>
|
||||
</template>
|
||||
<template v-else-if="question.QuestionType === 56">
|
||||
<el-select
|
||||
v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2 "
|
||||
clearable
|
||||
@change="((val)=>{formItemChange(val, question)})"
|
||||
>
|
||||
<el-select v-model="questionForm[question.Id]" :disabled="readingTaskState >= 2" clearable
|
||||
@change="((val) => { formItemChange(val, question) })">
|
||||
<el-option-group
|
||||
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${parseFloat(question.LastTaskAnswer) === 5 ? 'NA' : $fd(question.DictionaryCode,parseFloat(question.LastTaskAnswer))}` : ''"
|
||||
>
|
||||
<template v-if="pet5PS*1=== -1">
|
||||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
v-show="item.value !== 4"
|
||||
:key="item.id"
|
||||
:value="String(item.value)"
|
||||
:label="item.label"
|
||||
/>
|
||||
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${parseFloat(question.LastTaskAnswer) === 5 ? 'NA' : $fd(question.DictionaryCode, parseFloat(question.LastTaskAnswer))}` : ''">
|
||||
<template v-if="pet5PS * 1 === -1">
|
||||
<el-option v-for="item of $d[question.DictionaryCode]" v-show="item.value !== 4" :key="item.id"
|
||||
:value="String(item.value)" :label="item.label" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:value="String(item.value)"
|
||||
:label="item.label"
|
||||
/>
|
||||
<el-option v-for="item of $d[question.DictionaryCode]" :key="item.id" :value="String(item.value)"
|
||||
:label="item.label" />
|
||||
</template>
|
||||
</el-option-group>
|
||||
</el-select>
|
||||
</template>
|
||||
<template v-else-if="question.QuestionType === 57">
|
||||
<el-select
|
||||
v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2 "
|
||||
clearable
|
||||
@change="((val)=>{formItemChange(val, question)})"
|
||||
>
|
||||
<el-select v-model="questionForm[question.Id]" :disabled="readingTaskState >= 2" clearable
|
||||
@change="((val) => { formItemChange(val, question) })">
|
||||
<el-option-group
|
||||
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(question.DictionaryCode,parseFloat(question.LastTaskAnswer))}` : ''"
|
||||
>
|
||||
<template v-if="pet5PS*1=== -1">
|
||||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
v-show="item.value !== 1"
|
||||
:key="item.id"
|
||||
:value="String(item.value)"
|
||||
:label="item.label"
|
||||
/>
|
||||
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(question.DictionaryCode, parseFloat(question.LastTaskAnswer))}` : ''">
|
||||
<template v-if="pet5PS * 1 === -1">
|
||||
<el-option v-for="item of $d[question.DictionaryCode]" v-show="item.value !== 1" :key="item.id"
|
||||
:value="String(item.value)" :label="item.label" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:value="String(item.value)"
|
||||
:label="item.label"
|
||||
/>
|
||||
<el-option v-for="item of $d[question.DictionaryCode]" :key="item.id" :value="String(item.value)"
|
||||
:label="item.label" />
|
||||
</template>
|
||||
</el-option-group>
|
||||
</el-select>
|
||||
</template>
|
||||
<!-- 输入框 -->
|
||||
<el-input
|
||||
v-else-if="question.Type==='input'"
|
||||
v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2"
|
||||
/>
|
||||
<el-input v-else-if="question.Type === 'input'" v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2" />
|
||||
<!-- 多行文本输入框 -->
|
||||
<el-input
|
||||
v-else-if="question.Type==='textarea'"
|
||||
v-model="questionForm[question.Id]"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
maxlength="500"
|
||||
:disabled="readingTaskState >= 2"
|
||||
/>
|
||||
<el-input v-else-if="question.Type === 'textarea'" v-model="questionForm[question.Id]" type="textarea"
|
||||
:autosize="{ minRows: 2, maxRows: 4 }" maxlength="500" :disabled="readingTaskState >= 2" />
|
||||
<!-- 下拉框 -->
|
||||
<el-select
|
||||
v-else-if="question.Type==='select'"
|
||||
v-model="questionForm[question.Id]"
|
||||
<el-select v-else-if="question.Type === 'select'" v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2 || ((question.TableQuestionType === 2 || question.QuestionGenre === 2) && !!question.DictionaryCode) || question.QuestionType === 50"
|
||||
clearable
|
||||
@change="((val)=>{formItemChange(val, question)})"
|
||||
>
|
||||
clearable @change="((val) => { formItemChange(val, question) })">
|
||||
<template v-if="question.TableQuestionType === 1">
|
||||
<el-option
|
||||
v-for="item in organList"
|
||||
:key="item.Id"
|
||||
:label="item[question.DataTableColumn]"
|
||||
:value="item[question.DataTableColumn]"
|
||||
/>
|
||||
<el-option v-for="item in organList" :key="item.Id" :label="item[question.DataTableColumn]"
|
||||
:value="item[question.DataTableColumn]" />
|
||||
</template>
|
||||
<template v-else-if="question.TableQuestionType === 3 || question.QuestionGenre === 3">
|
||||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:value="String(item.value)"
|
||||
:label="item.label"
|
||||
/>
|
||||
<el-option v-for="item of $d[question.DictionaryCode]" :key="item.id" :value="String(item.value)"
|
||||
:label="item.label" />
|
||||
</template>
|
||||
<template v-else-if="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && question.DictionaryCode">
|
||||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:value="String(item.value)"
|
||||
:label="item.label"
|
||||
/>
|
||||
<template
|
||||
v-else-if="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && question.DictionaryCode">
|
||||
<el-option v-for="item of $d[question.DictionaryCode]" :key="item.id" :value="String(item.value)"
|
||||
:label="item.label" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-option
|
||||
v-for="val in question.TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val"
|
||||
:value="val"
|
||||
/>
|
||||
<el-option v-for="val in question.TypeValue.split('|')" :key="val" :label="val" :value="val" />
|
||||
</template>
|
||||
</el-select>
|
||||
<!-- 单选 -->
|
||||
<el-radio-group
|
||||
v-else-if="question.Type==='radio'"
|
||||
v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2"
|
||||
@change="((val)=>{formItemChange(val, question)})"
|
||||
>
|
||||
<el-radio-group v-else-if="question.Type === 'radio'" v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2" @change="((val) => { formItemChange(val, question) })">
|
||||
<template v-if="question.DictionaryCode">
|
||||
<el-radio
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:label="String(item.value)"
|
||||
>
|
||||
<el-radio v-for="item of $d[question.DictionaryCode]" :key="item.id" :label="String(item.value)">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</template>
|
||||
<template v-else-if="question.TypeValue">
|
||||
<el-radio
|
||||
v-for="val in question.TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val"
|
||||
>
|
||||
<el-radio v-for="val in question.TypeValue.split('|')" :key="val" :label="val">
|
||||
{{ val }}
|
||||
</el-radio>
|
||||
</template>
|
||||
</el-radio-group>
|
||||
<!-- 复选框 -->
|
||||
<el-checkbox-group
|
||||
v-else-if="question.Type==='checkbox'"
|
||||
v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="val in question.TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val"
|
||||
>
|
||||
<el-checkbox-group v-else-if="question.Type === 'checkbox'" v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2">
|
||||
<el-checkbox v-for="val in question.TypeValue.split('|')" :key="val" :label="val">
|
||||
{{ val }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
<!-- 数值 -->
|
||||
<el-input-number
|
||||
v-else-if="question.Type==='number'"
|
||||
v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2"
|
||||
/>
|
||||
<el-input
|
||||
v-else-if="question.Type==='calculation'"
|
||||
v-model="questionForm[question.Id]"
|
||||
disabled
|
||||
/>
|
||||
|
||||
<div style="display: flex;justify-content: space-between;"
|
||||
v-else-if="question.Type === 'calculation' || question.Type === 'number'">
|
||||
<el-input-number v-if="question.Type === 'number'" v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2" />
|
||||
<el-input v-model="questionForm[question.Id]" disabled v-else />
|
||||
<svg-icon v-if="question.ShowChartTypeEnum > 0" icon-class="readingChart" class="svg-icon svg-readingChart"
|
||||
@click.stop="(e) => handleReadingChart({
|
||||
e,
|
||||
data: {
|
||||
QuestionId: question.Id,
|
||||
RowIndex: questionForm.RowIndex,
|
||||
QuestionName: question.QuestionName
|
||||
}
|
||||
})" />
|
||||
</div>
|
||||
|
||||
<!-- 上传图像 -->
|
||||
<el-upload
|
||||
v-if="question.Type==='upload'"
|
||||
action
|
||||
:accept="accept"
|
||||
:limit="question.ImageCount"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:http-request="uploadScreenshot"
|
||||
list-type="picture-card"
|
||||
:on-remove="handleRemove"
|
||||
:file-list="fileList"
|
||||
:class="{disabled:fileList.length >= question.ImageCount}"
|
||||
:disabled="readingTaskState >= 2"
|
||||
>
|
||||
<el-upload v-if="question.Type === 'upload'" action :accept="accept" :limit="question.ImageCount"
|
||||
:on-preview="handlePictureCardPreview" :before-upload="handleBeforeUpload" :http-request="uploadScreenshot"
|
||||
list-type="picture-card" :on-remove="handleRemove" :file-list="fileList"
|
||||
:class="{ disabled: fileList.length >= question.ImageCount }" :disabled="readingTaskState >= 2">
|
||||
<i slot="default" class="el-icon-plus" />
|
||||
<div slot="file" slot-scope="{file}">
|
||||
<img
|
||||
class="el-upload-list__item-thumbnail"
|
||||
:src="OSSclientConfig.basePath + file.url"
|
||||
alt=""
|
||||
>
|
||||
<img class="el-upload-list__item-thumbnail" :src="OSSclientConfig.basePath + file.url" alt="">
|
||||
<span class="el-upload-list__item-actions">
|
||||
<span
|
||||
class="el-upload-list__item-preview"
|
||||
@click="handlePictureCardPreview(file)"
|
||||
>
|
||||
<span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
|
||||
<i class="el-icon-zoom-in" />
|
||||
</span>
|
||||
|
||||
<span
|
||||
v-if="readingTaskState < 2"
|
||||
class="el-upload-list__item-delete"
|
||||
@click="handleRemove(file)"
|
||||
>
|
||||
<span v-if="readingTaskState < 2" class="el-upload-list__item-delete" @click="handleRemove(file)">
|
||||
<i class="el-icon-delete" />
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</el-upload>
|
||||
<el-dialog
|
||||
v-if="question.Type==='upload'"
|
||||
append-to-body
|
||||
:visible.sync="imgVisible"
|
||||
width="600px"
|
||||
>
|
||||
<el-dialog v-if="question.Type === 'upload'" append-to-body :visible.sync="imgVisible" width="600px">
|
||||
<el-image :src="imageUrl" width="100%">
|
||||
<div slot="placeholder" class="image-slot">
|
||||
加载中<span class="dot">...</span>
|
||||
|
|
@ -309,19 +223,11 @@
|
|||
</el-form-item>
|
||||
</template>
|
||||
<template v-for="item of question.Childrens">
|
||||
<QuestionItem
|
||||
v-if="item.QuestionClassify === 0"
|
||||
:key="item.Id"
|
||||
:question="item"
|
||||
:reading-task-state="readingTaskState"
|
||||
:question-form="questionForm"
|
||||
:visit-task-id="visitTaskId"
|
||||
:pet5p-s="pet5PS"
|
||||
:lung-is-inside-volume="lungIsInsideVolume"
|
||||
:liver-is-inside-volume="liverIsInsideVolume"
|
||||
@setFormItemData="setFormItemData"
|
||||
@resetFormItemData="resetFormItemData"
|
||||
/>
|
||||
<QuestionItem v-if="item.QuestionClassify === 0" :key="item.Id" :question="item"
|
||||
:reading-task-state="readingTaskState" :question-form="questionForm" :visit-task-id="visitTaskId"
|
||||
:pet5p-s="pet5PS" :lung-is-inside-volume="lungIsInsideVolume" :liver-is-inside-volume="liverIsInsideVolume"
|
||||
@setFormItemData="setFormItemData" @resetFormItemData="resetFormItemData"
|
||||
@handleReadingChart="handleReadingChart" />
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -406,6 +312,9 @@ export default {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
handleReadingChart(e) {
|
||||
this.$emit('handleReadingChart', e)
|
||||
},
|
||||
formItemChange(v, question) {
|
||||
if (question.QuestionType === 55) {
|
||||
this.$emit('setFormItemData', { key: question.Id, val: v })
|
||||
|
|
@ -441,7 +350,7 @@ export default {
|
|||
.then(() => {
|
||||
FusionEvent.$emit('removeAnnotation', question)
|
||||
})
|
||||
.catch(() => {})
|
||||
.catch(() => { })
|
||||
},
|
||||
locateAnnotation(question) {
|
||||
FusionEvent.$emit('locateAnnotation', question)
|
||||
|
|
@ -503,26 +412,32 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.mb{
|
||||
.mb {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
|
||||
.disabled {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.uploadWrapper{
|
||||
|
||||
.uploadWrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
|
||||
::v-deep .el-input.is-disabled .el-input__inner {
|
||||
background-color: #646464a1;
|
||||
}
|
||||
::v-deep .el-input-group__append, .el-input-group__prepend{
|
||||
}
|
||||
|
||||
::v-deep .el-input-group__append,
|
||||
.el-input-group__prepend {
|
||||
padding: 0 5px;
|
||||
}
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
}
|
||||
|
||||
::v-deep .el-select.is-disabled .el-input__inner {
|
||||
background-color: #646464a1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,29 +1,17 @@
|
|||
<template>
|
||||
<div v-loading="loading" class="ecrf-wrapper">
|
||||
<el-form
|
||||
v-if="questions.length > 0"
|
||||
ref="questions"
|
||||
size="small"
|
||||
:model="questionForm"
|
||||
>
|
||||
<el-form v-if="questions.length > 0" ref="questions" size="small" :model="questionForm">
|
||||
<template v-for="question of questions">
|
||||
<QuestionItem
|
||||
v-if="question.QuestionClassify === 0"
|
||||
:key="question.Id"
|
||||
:question="question"
|
||||
:question-form="questionForm"
|
||||
:reading-task-state="readingTaskState"
|
||||
:visit-task-id="visitTaskId"
|
||||
:pet5p-s="questionForm[pet5PSId]"
|
||||
:lung-is-inside-volume="lungIsInsideVolume"
|
||||
:liver-is-inside-volume="liverIsInsideVolume"
|
||||
@setFormItemData="setFormItemData"
|
||||
@resetFormItemData="resetFormItemData"
|
||||
/>
|
||||
<QuestionItem v-if="question.QuestionClassify === 0" :key="question.Id" :question="question"
|
||||
:question-form="questionForm" :reading-task-state="readingTaskState" :visit-task-id="visitTaskId"
|
||||
:pet5p-s="questionForm[pet5PSId]" :lung-is-inside-volume="lungIsInsideVolume"
|
||||
:liver-is-inside-volume="liverIsInsideVolume" @setFormItemData="setFormItemData"
|
||||
@resetFormItemData="resetFormItemData" @handleReadingChart="handleReadingChart" />
|
||||
</template>
|
||||
<el-form-item v-if="readingTaskState < 2">
|
||||
<div style="text-align:right">
|
||||
<el-button :disabled="!questionFormChangeState" :type="questionFormChangeState ? 'primary' : null" size="mini" @click="handleSave">{{ $t('common:button:save') }}</el-button>
|
||||
<el-button :disabled="!questionFormChangeState" :type="questionFormChangeState ? 'primary' : null" size="mini"
|
||||
@click="handleSave">{{ $t('common:button:save') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
@ -132,6 +120,9 @@ export default {
|
|||
FusionEvent.$off('locateAnnotation')
|
||||
},
|
||||
methods: {
|
||||
handleReadingChart(e) {
|
||||
this.$emit('handleReadingChart', e)
|
||||
},
|
||||
getQuestions1() {
|
||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||
|
||||
|
|
@ -185,7 +176,7 @@ export default {
|
|||
this.setChild(v.Childrens)
|
||||
}
|
||||
})
|
||||
console.log(this.questionForm,questions)
|
||||
console.log(this.questionForm, questions)
|
||||
this.questions = questions
|
||||
this.setPet5PSCommentDisplay()
|
||||
this.measurements = []
|
||||
|
|
@ -759,39 +750,43 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.ecrf-wrapper{
|
||||
.ecrf-wrapper {
|
||||
|
||||
::v-deep .el-form-item__label{
|
||||
::v-deep .el-form-item__label {
|
||||
color: #c3c3c3;
|
||||
text-align: left;
|
||||
}
|
||||
::v-deep .el-input__inner{
|
||||
|
||||
::v-deep .el-input__inner {
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
::v-deep .el-textarea__inner{
|
||||
|
||||
::v-deep .el-textarea__inner {
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
::v-deep .el-form-item{
|
||||
|
||||
::v-deep .el-form-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
::v-deep .el-form-item__content{
|
||||
|
||||
::v-deep .el-form-item__content {
|
||||
flex: 1;
|
||||
}
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
|
||||
::v-deep .el-button--mini,
|
||||
.el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
.el-select{
|
||||
|
||||
.el-form-item__content .el-select {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,12 +1,6 @@
|
|||
<template>
|
||||
<el-form
|
||||
v-if="isRender"
|
||||
ref="measurementForm"
|
||||
v-loading="loading"
|
||||
:model="questionForm"
|
||||
size="mini"
|
||||
class="measurement-form"
|
||||
>
|
||||
<el-form v-if="isRender" ref="measurementForm" v-loading="loading" :model="questionForm" size="mini"
|
||||
class="measurement-form">
|
||||
<div class="base-dialog-body">
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<h3 v-if="lesionName" style="color: #ddd;padding: 5px 0px;margin: 0;">
|
||||
|
|
@ -19,184 +13,151 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<el-form-item
|
||||
:label="$t('trials:reading:title:lesionType')"
|
||||
prop="LesionType"
|
||||
:rules="[
|
||||
{ required:true,message: $t('common:ruleMessage:select'), trigger: ['blur']},
|
||||
]"
|
||||
>
|
||||
<el-form-item :label="$t('trials:reading:title:lesionType')" prop="LesionType" :rules="[
|
||||
{ required: true, message: $t('common:ruleMessage:select'), trigger: ['blur'] },
|
||||
]">
|
||||
<!-- 下拉框 -->
|
||||
<el-select
|
||||
v-model="questionForm.LesionType"
|
||||
filterable
|
||||
:disabled="!isCurrentTask || readingTaskState>=2 || !isBaseLineTask"
|
||||
@change="((val)=>{lesionTypeChange(val)})"
|
||||
>
|
||||
<el-select v-model="questionForm.LesionType" filterable
|
||||
:disabled="!isCurrentTask || readingTaskState >= 2 || !isBaseLineTask"
|
||||
@change="((val) => { lesionTypeChange(val) })">
|
||||
|
||||
<el-option
|
||||
v-for="item of $d.LesionType"
|
||||
v-show="!(isBaseLineTask && item.value === 2)"
|
||||
:key="item.id"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
/>
|
||||
<el-option v-for="item of $d.LesionType" v-show="!(isBaseLineTask && item.value === 2)" :key="item.id"
|
||||
:value="item.value" :label="item.label" />
|
||||
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<template v-for="qs in questions">
|
||||
<el-form-item
|
||||
v-if="qs.ShowQuestion!==2 && qs.QuestionClassify === 0"
|
||||
:key="qs.Id"
|
||||
:label="`${qs.QuestionName}`"
|
||||
:prop="qs.Id"
|
||||
:rules="[
|
||||
{ required: (qs.IsRequired === 0 || (qs.IsRequired ===1 && qs.RelevanceId && (questionForm[qs.RelevanceId] === qs.RelevanceValue)) || (qs.QuestionMark === 6 && questionForm.IsCanEditPosition === true) || (questionForm.IsCanEditPosition && qs.QuestionMark === 10)) && qs.Type!=='group' && qs.Type!=='summary',
|
||||
message:['radio', 'select', 'checkbox'].includes(qs.Type) ? $t('common:ruleMessage:select') : $t('common:ruleMessage:specify'), trigger: ['blur','change']},
|
||||
]"
|
||||
>
|
||||
<el-form-item v-if="qs.ShowQuestion !== 2 && qs.QuestionClassify === 0" :key="qs.Id"
|
||||
:label="`${qs.QuestionName}`" :prop="qs.Id" :rules="[
|
||||
{
|
||||
required: (qs.IsRequired === 0 || (qs.IsRequired === 1 && qs.RelevanceId && (questionForm[qs.RelevanceId] === qs.RelevanceValue)) || (qs.QuestionMark === 6 && questionForm.IsCanEditPosition === true) || (questionForm.IsCanEditPosition && qs.QuestionMark === 10)) && qs.Type !== 'group' && qs.Type !== 'summary',
|
||||
message: ['radio', 'select', 'checkbox'].includes(qs.Type) ? $t('common:ruleMessage:select') : $t('common:ruleMessage:specify'), trigger: ['blur', 'change']
|
||||
},
|
||||
]">
|
||||
<!-- {{ isCurrentTaskAdd }}
|
||||
{{ questionForm.IsCanEditPosition }} -->
|
||||
|
||||
<!-- 输入框 -->
|
||||
<template v-if="qs.Type==='input' || qs.Type==='number'">
|
||||
<template v-if="qs.Type === 'input' || qs.Type === 'number'">
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<!-- {{ ((qs.QuestionMark === 6 && isCurrentTaskAdd === 'False') || (qs.QuestionMark === 6 && isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition)) }} -->
|
||||
<el-input
|
||||
v-if="qs.Type==='input' || qs.Type==='number'"
|
||||
v-model="questionForm[qs.Id]"
|
||||
: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) && lesionType !== 2) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || !!answers.SplitOrMergeLesionName))"
|
||||
@change="((val)=>{formItemChange(val, qs)})"
|
||||
>
|
||||
<template v-if="(qs.QuestionMark===0 || qs.QuestionMark===1) && qs.Unit" slot="append">
|
||||
<el-input v-if="qs.Type === 'input' || qs.Type === 'number'" v-model="questionForm[qs.Id]"
|
||||
: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) && lesionType !== 2) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || !!answers.SplitOrMergeLesionName))"
|
||||
@change="((val) => { formItemChange(val, qs) })">
|
||||
<template v-if="(qs.QuestionMark === 0 || qs.QuestionMark === 1) && qs.Unit" slot="append">
|
||||
{{ $fd('ValueUnit', parseInt(qs.Unit)) }}
|
||||
</template>
|
||||
<svg-icon v-if="qs.ShowChartTypeEnum > 0" icon-class="readingChart" class="svg-icon svg-readingChart"
|
||||
@click.stop="(e) => handleReadingChart({
|
||||
e,
|
||||
data: {
|
||||
TableQuestionId: qs.Id,
|
||||
RowIndex: questionForm.RowIndex,
|
||||
QuestionName: qs.QuestionName
|
||||
}
|
||||
})" />
|
||||
</el-input>
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<!-- 多行文本输入框 -->
|
||||
<el-input
|
||||
v-if="qs.Type==='textarea'"
|
||||
v-model="questionForm[qs.Id]"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
maxlength="500"
|
||||
:disabled="!isCurrentTask || readingTaskState>=2"
|
||||
@change="((val)=>{formItemChange(val, qs)})"
|
||||
/>
|
||||
<el-input v-if="qs.Type === 'textarea'" v-model="questionForm[qs.Id]" type="textarea"
|
||||
:autosize="{ minRows: 2, maxRows: 4 }" maxlength="500" :disabled="!isCurrentTask || readingTaskState >= 2"
|
||||
@change="((val) => { formItemChange(val, qs) })" />
|
||||
<!-- 下拉框 -->
|
||||
|
||||
<el-select
|
||||
v-if="qs.Type==='select'"
|
||||
v-model="questionForm[qs.Id]"
|
||||
filterable
|
||||
<el-select v-if="qs.Type === 'select'" v-model="questionForm[qs.Id]" filterable
|
||||
: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))"
|
||||
@change="((val)=>{formItemChange(val, qs)})"
|
||||
>
|
||||
: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))"
|
||||
@change="((val) => { formItemChange(val, qs) })">
|
||||
<template v-if="qs.QuestionMark === 8" #prefix>
|
||||
<span style="padding-left: 5px;">
|
||||
<i class="el-icon-search" />
|
||||
</span>
|
||||
</template>
|
||||
<template v-if="qs.TableQuestionType === 1">
|
||||
<el-option
|
||||
v-for="item in organList"
|
||||
:key="item.Id"
|
||||
:label="item[qs.DataTableColumn]"
|
||||
:value="item[qs.DataTableColumn]"
|
||||
/>
|
||||
<el-option v-for="item in organList" :key="item.Id" :label="item[qs.DataTableColumn]"
|
||||
:value="item[qs.DataTableColumn]" />
|
||||
</template>
|
||||
<template v-else-if="qs.DictionaryCode && qs.QuestionMark !== 7">
|
||||
<el-option
|
||||
v-for="item of $d[qs.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
/>
|
||||
<el-option v-for="item of $d[qs.DictionaryCode]" :key="item.id" :value="item.value" :label="item.label" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-option
|
||||
v-for="val in qs.TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val"
|
||||
:value="val"
|
||||
/>
|
||||
<el-option v-for="val in qs.TypeValue.split('|')" :key="val" :label="val" :value="val" />
|
||||
</template>
|
||||
|
||||
</el-select>
|
||||
<!-- 单选 -->
|
||||
<el-radio-group
|
||||
v-if="qs.Type==='radio'"
|
||||
v-model="questionForm[qs.id]"
|
||||
:disabled="!isCurrentTask || readingTaskState>=2"
|
||||
>
|
||||
<el-radio
|
||||
v-for="val in qs.options.split('|')"
|
||||
:key="val"
|
||||
:label="val"
|
||||
>
|
||||
<el-radio-group v-if="qs.Type === 'radio'" v-model="questionForm[qs.id]"
|
||||
:disabled="!isCurrentTask || readingTaskState >= 2">
|
||||
<el-radio v-for="val in qs.options.split('|')" :key="val" :label="val">
|
||||
{{ val }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
<template v-if="qs.QuestionMark === 20 && qs.Type==='calculation'">
|
||||
<template v-if="qs.QuestionMark === 20 && qs.Type === 'calculation'">
|
||||
<div style="display: flex;flex-direction: row;justify-content: flex-start;">
|
||||
<el-input
|
||||
v-if="qs.Type==='calculation'"
|
||||
v-model="questionForm[qs.Id]"
|
||||
disabled
|
||||
style="width:120px;"
|
||||
>
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<el-input v-if="qs.Type === 'calculation'" v-model="questionForm[qs.Id]" disabled style="width:120px;">
|
||||
<template v-if="qs.Unit" slot="append">
|
||||
{{ $fd('ValueUnit', parseInt(qs.Unit)) }}
|
||||
</template>
|
||||
</el-input>
|
||||
<svg-icon v-if="qs.ShowChartTypeEnum > 0" icon-class="readingChart" class="svg-icon svg-readingChart"
|
||||
@click.stop="(e) => handleReadingChart({
|
||||
e,
|
||||
data: {
|
||||
TableQuestionId: qs.Id,
|
||||
RowIndex: questionForm.RowIndex,
|
||||
QuestionName: qs.QuestionName
|
||||
}
|
||||
})" />
|
||||
</div>
|
||||
|
||||
<!-- <span style="color:#409eff;cursor: pointer" @click="previewImages(answers.RowId)">
|
||||
{{ $t('trials:lugano:button:suvscreenshot') }}
|
||||
</span> -->
|
||||
<el-button v-if="!isBaseLineTask" type="text" @click="previewImages(answers.RowId)">{{ $t('trials:lugano:button:suvscreenshot') }}</el-button>
|
||||
<el-button v-if="!isBaseLineTask" type="text" @click="previewImages(answers.RowId)">{{
|
||||
$t('trials:lugano:button:suvscreenshot') }}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<el-input
|
||||
v-else-if="qs.Type==='calculation' && qs.QuestionMark !== 20"
|
||||
v-model="questionForm[qs.Id]"
|
||||
disabled
|
||||
>
|
||||
<div style="display: flex;justify-content: space-between;"
|
||||
v-else-if="qs.Type === 'calculation' && qs.QuestionMark !== 20">
|
||||
<el-input v-model="questionForm[qs.Id]" disabled>
|
||||
<template v-if="qs.Unit" slot="append">
|
||||
{{ $fd('ValueUnit', parseInt(qs.Unit)) }}
|
||||
</template>
|
||||
</el-input>
|
||||
<svg-icon v-if="qs.ShowChartTypeEnum > 0" icon-class="readingChart" class="svg-icon svg-readingChart"
|
||||
@click.stop="(e) => handleReadingChart({
|
||||
e,
|
||||
data: {
|
||||
TableQuestionId: qs.Id,
|
||||
RowIndex: questionForm.RowIndex,
|
||||
QuestionName: qs.QuestionName
|
||||
}
|
||||
})" />
|
||||
</div>
|
||||
|
||||
</el-form-item>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="isCurrentTask && readingTaskState<2"
|
||||
class="base-dialog-footer"
|
||||
style="text-align:right;margin-top:10px;"
|
||||
>
|
||||
<div v-if="isCurrentTask && readingTaskState < 2" class="base-dialog-footer"
|
||||
style="text-align:right;margin-top:10px;">
|
||||
|
||||
<!-- 清除标记 -->
|
||||
<el-button
|
||||
v-if="questionForm.OtherMeasureData"
|
||||
size="mini"
|
||||
@click="handleDeleteMeasureData"
|
||||
>
|
||||
<el-button v-if="questionForm.OtherMeasureData" size="mini" @click="handleDeleteMeasureData">
|
||||
{{ $t('trials:reading:button:removeMark') }}
|
||||
</el-button>
|
||||
<!-- 删除 -->
|
||||
<el-button
|
||||
v-if="isCurrentTaskAdd !== 'False'"
|
||||
size="mini"
|
||||
@click="handleDelete"
|
||||
>
|
||||
<el-button v-if="isCurrentTaskAdd !== 'False'" size="mini" @click="handleDelete">
|
||||
{{ $t('common:button:delete') }}
|
||||
</el-button>
|
||||
<!-- 保存 -->
|
||||
<el-button
|
||||
size="mini"
|
||||
@click="handleSave"
|
||||
>
|
||||
<el-button size="mini" @click="handleSave">
|
||||
{{ $t('common:button:save') }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
|
@ -288,6 +249,9 @@ export default {
|
|||
|
||||
},
|
||||
methods: {
|
||||
handleReadingChart(e) {
|
||||
this.$emit('handleReadingChart', e)
|
||||
},
|
||||
async initForm(isRerender = false) {
|
||||
const loading = this.$loading({ fullscreen: true })
|
||||
this.questions.forEach(item => {
|
||||
|
|
@ -446,8 +410,8 @@ export default {
|
|||
type: 'warning',
|
||||
distinguishCancelAndClose: true
|
||||
})
|
||||
.then(() => {})
|
||||
.catch(() => {})
|
||||
.then(() => { })
|
||||
.catch(() => { })
|
||||
this.$set(this.questionForm, 'LesionType', this.originalQuestionForm.LesionType)
|
||||
return
|
||||
}
|
||||
|
|
@ -459,7 +423,7 @@ export default {
|
|||
this.$confirm(msg, {
|
||||
type: 'warning',
|
||||
showCancelButton: false,
|
||||
callback: action => {}
|
||||
callback: action => { }
|
||||
})
|
||||
this.$set(this.questionForm, 'LesionType', this.originalQuestionForm.LesionType)
|
||||
return
|
||||
|
|
@ -786,7 +750,7 @@ export default {
|
|||
this.$confirm(this.$t('trials:reading:lugano:warnning:outsideVolume'), {
|
||||
type: 'warning',
|
||||
showCancelButton: false,
|
||||
callback: action => {}
|
||||
callback: action => { }
|
||||
})
|
||||
|
||||
return
|
||||
|
|
@ -800,7 +764,7 @@ export default {
|
|||
this.$confirm(this.$t('trials:reading:lugano:warnning:cannotMeasuredSUV'), {
|
||||
type: 'warning',
|
||||
showCancelButton: false,
|
||||
callback: action => {}
|
||||
callback: action => { }
|
||||
})
|
||||
return
|
||||
}
|
||||
|
|
@ -813,7 +777,7 @@ export default {
|
|||
this.$confirm(this.$t('trials:reading:lugano:warnning:suvis0'), {
|
||||
type: 'warning',
|
||||
showCancelButton: false,
|
||||
callback: action => {}
|
||||
callback: action => { }
|
||||
})
|
||||
return
|
||||
}
|
||||
|
|
@ -1054,47 +1018,57 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-form{
|
||||
::v-deep .el-form-item__label{
|
||||
.measurement-form {
|
||||
::v-deep .el-form-item__label {
|
||||
color: #c3c3c3;
|
||||
// text-align: left;
|
||||
}
|
||||
::v-deep .el-input .el-input__inner{
|
||||
|
||||
::v-deep .el-input .el-input__inner {
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
::v-deep .el-form-item{
|
||||
|
||||
::v-deep .el-form-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
::v-deep .el-form-item__content{
|
||||
|
||||
::v-deep .el-form-item__content {
|
||||
flex: 1;
|
||||
}
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
|
||||
::v-deep .el-input.is-disabled .el-input__inner {
|
||||
background-color: #646464a1;
|
||||
}
|
||||
::v-deep .el-input-group__append, .el-input-group__prepend{
|
||||
|
||||
::v-deep .el-input-group__append,
|
||||
.el-input-group__prepend {
|
||||
padding: 0 10px;
|
||||
}
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
|
||||
::v-deep .el-select.is-disabled .el-input__inner {
|
||||
background-color: #646464a1;
|
||||
}
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
|
||||
::v-deep .el-button--mini,
|
||||
.el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
.el-select{
|
||||
|
||||
.el-form-item__content .el-select {
|
||||
width: 100%;
|
||||
}
|
||||
.input-width1{
|
||||
width: calc(100% - 60px)!important;
|
||||
|
||||
.input-width1 {
|
||||
width: calc(100% - 60px) !important;
|
||||
}
|
||||
.input-width2{
|
||||
|
||||
.input-width2 {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -3,75 +3,88 @@
|
|||
|
||||
<div class="container">
|
||||
<!-- 测量问题 -->
|
||||
<template v-for="(qs,index) in questions">
|
||||
<template v-for="(qs, index) in questions">
|
||||
<div v-if="qs.QuestionClassify === 0" :key="index" v-loading="loading" class="lesions lesions_wrapper">
|
||||
<h4 v-if="qs.Type === 'group'" style="color: #ddd;padding: 5px 0px;margin: 0;">
|
||||
{{ language==='en'?qs.GroupEnName:qs.GroupName }}
|
||||
{{ language === 'en' ? qs.GroupEnName : qs.GroupName }}
|
||||
</h4>
|
||||
<div class="lesion_list">
|
||||
<template v-for="item in qs.Childrens">
|
||||
<div v-if="item.QuestionClassify === 0 && !(isBaseLineTask && item.LesionType === 2)" :key="item.Id">
|
||||
<div v-if="item.Type === 'table'" class="flex-row" style="margin:3px 0;">
|
||||
<div class="title">{{ item.QuestionName }}</div>
|
||||
<div v-if="readingTaskState<2 && (isBaseLineTask || item.LesionType === 2)" class="add-icon" @click.prevent="handleAdd(item)">
|
||||
<div class="title">{{ item.QuestionName }}
|
||||
<svg-icon v-if="item.LesionType === 0" icon-class="readingChart"
|
||||
class="svg-icon svg-readingChart-mini" @click.stop="(e) => handleReadingChart({
|
||||
e,
|
||||
data: {
|
||||
ReportChartTypeEnum: 0,
|
||||
QuestionName: item.QuestionName
|
||||
},
|
||||
})" />
|
||||
</div>
|
||||
<div v-if="readingTaskState < 2 && (isBaseLineTask || item.LesionType === 2)" class="add-icon"
|
||||
@click.prevent="handleAdd(item)">
|
||||
<i class="el-icon-plus" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- @change="handleCollapseChange(qs.Childrens,item)" -->
|
||||
<el-collapse
|
||||
v-if="item.Type === 'table' && item.TableQuestions"
|
||||
v-model="activeName"
|
||||
accordion
|
||||
@change="handleCollapseChange"
|
||||
>
|
||||
<el-collapse-item
|
||||
v-for="(q,i) in item.TableQuestions.Answers"
|
||||
:key="`${item.Id}_${q.RowIndex}`"
|
||||
<el-collapse v-if="item.Type === 'table' && item.TableQuestions" v-model="activeName" accordion
|
||||
@change="handleCollapseChange">
|
||||
<el-collapse-item v-for="(q, i) in item.TableQuestions.Answers" :key="`${item.Id}_${q.RowIndex}`"
|
||||
:name="`${item.Id}_${q.RowIndex}`"
|
||||
@contextmenu.prevent.native="collapseRightClick($event,q,item.Id,q.RowIndex)"
|
||||
>
|
||||
@contextmenu.prevent.native="collapseRightClick($event, q, item.Id, q.RowIndex)">
|
||||
<template slot="title">
|
||||
<div style="width:300px;position: relative;" :style="{color:(activeName===item.Id+q.RowIndex?'#ffeb3b':'#fff')}">
|
||||
<div style="width:300px;position: relative;"
|
||||
:style="{ color: (activeName === item.Id + q.RowIndex ? '#ffeb3b' : '#fff') }">
|
||||
|
||||
{{ getLesionName(item.OrderMark,q.RowIndex) }}
|
||||
{{ getLesionName(item.OrderMark, q.RowIndex) }}
|
||||
<!-- 未保存 -->
|
||||
<el-tooltip v-if="readingTaskState<2 && parseInt(item.TableQuestions.Answers[i].saveTypeEnum) === 0" class="item" effect="dark" :content="$t('trials:reading:button:unsaved')" placement="bottom">
|
||||
<el-tooltip
|
||||
v-if="readingTaskState < 2 && parseInt(item.TableQuestions.Answers[i].saveTypeEnum) === 0"
|
||||
class="item" effect="dark" :content="$t('trials:reading:button:unsaved')" placement="bottom">
|
||||
<i class="el-icon-warning" style="color:red" />
|
||||
</el-tooltip>
|
||||
<!-- 信息不完整 -->
|
||||
<el-tooltip v-if="readingTaskState<2 && parseInt(item.TableQuestions.Answers[i].saveTypeEnum) ===1" class="item" effect="dark" :content="$t('trials:reading:button:incompleteInfor')" placement="bottom">
|
||||
<el-tooltip
|
||||
v-if="readingTaskState < 2 && parseInt(item.TableQuestions.Answers[i].saveTypeEnum) === 1"
|
||||
class="item" effect="dark" :content="$t('trials:reading:button:incompleteInfor')"
|
||||
placement="bottom">
|
||||
<i class="el-icon-warning" style="color:#ff9800" />
|
||||
</el-tooltip>
|
||||
<div style="position: absolute;left: 50px;top: 2px;">
|
||||
<!-- white-space: nowrap;overflow: hidden;text-overflow: ellipsis; -->
|
||||
<div style="font-size: 11px;width:220px;height: 30px;">
|
||||
<div
|
||||
v-if="item.TableQuestions.Answers[i].lesionPart"
|
||||
style="margin-left:10px;display: inline-block; white-space: nowrap;overflow: hidden;text-overflow: ellipsis;max-width:90px"
|
||||
>
|
||||
<el-tooltip v-if="!!item.TableQuestions.Answers[i].lesionPart" class="item" effect="dark" :content="item.TableQuestions.Answers[i].lesionPart" placement="bottom">
|
||||
<div v-if="item.TableQuestions.Answers[i].lesionPart"
|
||||
style="margin-left:10px;display: inline-block; white-space: nowrap;overflow: hidden;text-overflow: ellipsis;max-width:90px">
|
||||
<el-tooltip v-if="!!item.TableQuestions.Answers[i].lesionPart" class="item" effect="dark"
|
||||
:content="item.TableQuestions.Answers[i].lesionPart" placement="bottom">
|
||||
<span>{{ item.TableQuestions.Answers[i].lesionPart }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div style="display: inline-block;margin-left:5px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;max-width:50px">
|
||||
<div
|
||||
style="display: inline-block;margin-left:5px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;max-width:50px">
|
||||
<span v-if="item.LesionType === 0">
|
||||
{{ $fd('TargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
|
||||
{{ $fd('TargetState', parseInt(item.TableQuestions.Answers[i].lesionState)) }}
|
||||
</span>
|
||||
<span v-else-if="item.LesionType === 1">
|
||||
{{ $fd('NoTargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
|
||||
{{ $fd('NoTargetState', parseInt(item.TableQuestions.Answers[i].lesionState)) }}
|
||||
</span>
|
||||
<span v-else>
|
||||
{{ $fd('NewLesionState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
|
||||
{{ $fd('NewLesionState', parseInt(item.TableQuestions.Answers[i].lesionState)) }}
|
||||
</span>
|
||||
</div>
|
||||
<div style="display: inline-block;margin-left:5px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;max-width:60px;color:red;">
|
||||
<template v-if="item.TableQuestions.Answers[i].suvMax && !isNaN(parseFloat(item.TableQuestions.Answers[i].suvMax))">
|
||||
<div
|
||||
style="display: inline-block;margin-left:5px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;max-width:60px;color:red;">
|
||||
<template
|
||||
v-if="item.TableQuestions.Answers[i].suvMax && !isNaN(parseFloat(item.TableQuestions.Answers[i].suvMax))">
|
||||
{{ item.TableQuestions.Answers[i].suvMax }} SUV
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="((item.LesionType === 0 && parseInt(item.TableQuestions.Answers[i].lesionState) === 0) || (item.LesionType === 1 && [0,1].includes(parseInt(item.TableQuestions.Answers[i].lesionState))) || (item.LesionType === 2 && parseInt(item.TableQuestions.Answers[i].lesionState) === 0)) && item.TableQuestions.Answers[i].IsCurrentTaskAdd === 'False'" style="position: absolute;right: 5px;top: 2px;transform: rotateY(180deg);">
|
||||
<div
|
||||
v-if="((item.LesionType === 0 && parseInt(item.TableQuestions.Answers[i].lesionState) === 0) || (item.LesionType === 1 && [0, 1].includes(parseInt(item.TableQuestions.Answers[i].lesionState))) || (item.LesionType === 2 && parseInt(item.TableQuestions.Answers[i].lesionState) === 0)) && item.TableQuestions.Answers[i].IsCurrentTaskAdd === 'False'"
|
||||
style="position: absolute;right: 5px;top: 2px;transform: rotateY(180deg);">
|
||||
<!-- 分裂 -->
|
||||
<!-- <el-tooltip v-show="readingTaskState<2 && !!item.TableQuestions.Answers[i].RowId && !isBaseLineTask" class="item" :content="$t('trials:reading:button:split')" placement="left">
|
||||
<i class="iconfont icon-24gl-split" style="color:#fff;font-size: 16px;" @click.stop="handleSplit(item.TableQuestions.Answers[i].RowId,item.Id)" />
|
||||
|
|
@ -81,25 +94,14 @@
|
|||
</div>
|
||||
|
||||
</template>
|
||||
<QuestionForm
|
||||
:ref="`${item.Id}_${q.RowIndex}`"
|
||||
:questions="item.TableQuestions.Questions"
|
||||
:answers="item.TableQuestions.Answers[i]"
|
||||
:lesion-type="item.LesionType"
|
||||
:order-mark="item.OrderMark"
|
||||
:table-questions="tableQuestions"
|
||||
:row-index="String(q.RowIndex)"
|
||||
:question-name="item.QuestionName"
|
||||
:parent-qs-id="item.Id"
|
||||
:visit-task-id="visitTaskId"
|
||||
:is-current-task="isCurrentTask"
|
||||
:reading-task-state="readingTaskState"
|
||||
:is-base-line-task="isBaseLineTask"
|
||||
@changeLesionType="changeLesionType"
|
||||
@resetQuestions="resetQuestions"
|
||||
@determineExistsUnsavedLession="determineExistsUnsavedLession"
|
||||
@close="close"
|
||||
/>
|
||||
<QuestionForm :ref="`${item.Id}_${q.RowIndex}`" :questions="item.TableQuestions.Questions"
|
||||
:answers="item.TableQuestions.Answers[i]" :lesion-type="item.LesionType"
|
||||
:order-mark="item.OrderMark" :table-questions="tableQuestions" :row-index="String(q.RowIndex)"
|
||||
:question-name="item.QuestionName" :parent-qs-id="item.Id" :visit-task-id="visitTaskId"
|
||||
:is-current-task="isCurrentTask" :reading-task-state="readingTaskState"
|
||||
:is-base-line-task="isBaseLineTask" @changeLesionType="changeLesionType"
|
||||
@resetQuestions="resetQuestions" @determineExistsUnsavedLession="determineExistsUnsavedLession"
|
||||
@close="close" @handleReadingChart="handleReadingChart" />
|
||||
</el-collapse-item>
|
||||
|
||||
</el-collapse>
|
||||
|
|
@ -170,6 +172,9 @@ export default {
|
|||
beforeDestroy() {
|
||||
},
|
||||
methods: {
|
||||
handleReadingChart(e) {
|
||||
this.$emit('handleReadingChart', e)
|
||||
},
|
||||
initList(isRerender = false) {
|
||||
this.loading = true
|
||||
this.activeName = ''
|
||||
|
|
@ -345,7 +350,7 @@ export default {
|
|||
.then(() => {
|
||||
this.split(rowId, questionId)
|
||||
})
|
||||
.catch(() => {})
|
||||
.catch(() => { })
|
||||
} else {
|
||||
// 是否确认分裂
|
||||
this.$confirm(this.$t('trials:reading:warnning:msg4'), {
|
||||
|
|
@ -355,7 +360,7 @@ export default {
|
|||
.then(() => {
|
||||
this.split(rowId, questionId)
|
||||
})
|
||||
.catch(() => {})
|
||||
.catch(() => { })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -429,7 +434,7 @@ export default {
|
|||
this.$confirm(msg, {
|
||||
type: 'warning',
|
||||
showCancelButton: false,
|
||||
callback: action => {}
|
||||
callback: action => { }
|
||||
})
|
||||
return
|
||||
}
|
||||
|
|
@ -439,7 +444,7 @@ export default {
|
|||
this.$confirm(msg, {
|
||||
type: 'warning',
|
||||
showCancelButton: false,
|
||||
callback: action => {}
|
||||
callback: action => { }
|
||||
})
|
||||
} else {
|
||||
// saveTypeEnum: 0
|
||||
|
|
@ -582,7 +587,7 @@ export default {
|
|||
// await store.dispatch('reading/removeReadingQuestionAndAnswer', { lesionType: questionsObj.oldLesionType, rowIndex: questionsObj.rowIndex, visitTaskId: this.visitTaskId })
|
||||
this.questions = this.findQuestionAndRemoveLesion(this.questions, { lesionType: questionsObj.oldLesionType, rowIndex: questionsObj.rowIndex })
|
||||
// saveTypeEnum: 0
|
||||
var lesionObj = { }
|
||||
var lesionObj = {}
|
||||
var questionObj = questionsObj.questionForm
|
||||
// 切换到新的病灶集合
|
||||
var targetObj = this.tableQuestions.find(item => item.LesionType === questionsObj.newLesionType)
|
||||
|
|
@ -817,19 +822,20 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-wrapper{
|
||||
.measurement-wrapper {
|
||||
|
||||
// .container{
|
||||
// padding: 10px;
|
||||
// }
|
||||
.title{
|
||||
.title {
|
||||
padding: 5px;
|
||||
font-weight: bold;
|
||||
color: #ddd;
|
||||
font-size: 15px;
|
||||
|
||||
}
|
||||
.add-icon{
|
||||
|
||||
.add-icon {
|
||||
padding: 5px;
|
||||
font-weight: bold;
|
||||
color: #ddd;
|
||||
|
|
@ -838,42 +844,49 @@ export default {
|
|||
margin-bottom: 2px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.add-icon:hover{
|
||||
|
||||
.add-icon:hover {
|
||||
background-color: #607d8b;
|
||||
}
|
||||
|
||||
.flex-row{
|
||||
.flex-row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
background-color: #424242;
|
||||
|
||||
}
|
||||
.lesion_list{
|
||||
|
||||
.lesion_list {
|
||||
position: relative;
|
||||
}
|
||||
.el-collapse{
|
||||
border-bottom:none;
|
||||
border-top:none;
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
|
||||
.el-collapse {
|
||||
border-bottom: none;
|
||||
border-top: none;
|
||||
|
||||
::v-deep .el-collapse-item {
|
||||
background-color: #000 !important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
|
||||
::v-deep .el-collapse-item__header {
|
||||
background-color: #000 !important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
border-bottom-color: #5a5a5a;
|
||||
padding-left: 5px;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
|
||||
::v-deep .el-collapse-item__wrap {
|
||||
background-color: #000 !important;
|
||||
color: #ddd;
|
||||
}
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
|
||||
::v-deep .el-collapse-item__content {
|
||||
width: 260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
|
|
@ -882,7 +895,7 @@ export default {
|
|||
z-index: 1;
|
||||
color: #ddd;
|
||||
padding: 5px;
|
||||
background-color:#1e1e1e;
|
||||
background-color: #1e1e1e;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,16 @@
|
|||
v-show="!(isBaseLineTask && item.LesionType === 2) && !(isBaseLineTask && item.LesionType === 3)"
|
||||
:key="item.Id">
|
||||
<div v-if="item.Type === 'table'" class="flex-row" style="margin:3px 0;">
|
||||
<div class="title">{{ item.QuestionName }}</div>
|
||||
<div class="title">{{ item.QuestionName }}
|
||||
<svg-icon v-if="item.LesionType === 4" icon-class="readingChart"
|
||||
class="svg-icon svg-readingChart-mini" @click.stop="(e) => handleReadingChart({
|
||||
e,
|
||||
data: {
|
||||
ReportChartTypeEnum: 0,
|
||||
QuestionName: item.QuestionName
|
||||
},
|
||||
})" />
|
||||
</div>
|
||||
<div v-if="readingTaskState < 2 && (isBaseLineTask || item.LesionType === 2)" class="add-icon"
|
||||
@click.prevent="handleAdd(item)">
|
||||
<i class="el-icon-plus" />
|
||||
|
|
|
|||
|
|
@ -737,7 +737,7 @@ export default {
|
|||
line-height: 25px;
|
||||
text-align: center;
|
||||
border: 1px solid #607d8b;
|
||||
top: 65px;
|
||||
top: 45px;
|
||||
right: -25px;
|
||||
z-index: 99;
|
||||
color: #d5d5d5;
|
||||
|
|
|
|||
|
|
@ -42,14 +42,14 @@
|
|||
:style="{ color: ((scope.row.isLymphNodes === 1 && scope.row.QuestionMark === 1) || (scope.row.isLymphNodes === 0 && scope.row.QuestionMark === 0)) && (scope.row.LesionType === 0 || scope.row.LesionType === 5) ? '#f66' : '#fff' }">{{
|
||||
scope.row.QuestionName }}
|
||||
<svg-icon
|
||||
v-if="scope.row.ShowChartTypeEnum > 0 || (scope.row.LesionType === 0 && scope.row.ReportLayType === 1)"
|
||||
v-if="scope.row.ShowChartTypeEnum > 0 || (scope.row.LesionType === 0 && scope.row.ReportLayType === 1) || (scope.row.LesionType === 4 && scope.row.ReportLayType === 1)"
|
||||
icon-class="readingChart" class="svg-icon svg-readingChart-mini" @click.stop="(e) => handleReadingChart({
|
||||
e,
|
||||
data: {
|
||||
QuestionId: scope.row.RowIndex ? null : scope.row.QuestionId,
|
||||
TableQuestionId: scope.row.RowIndex ? scope.row.TableQuestionId : null,
|
||||
RowIndex: scope.row.RowIndex ? scope.row.RowIndex : null,
|
||||
ReportChartTypeEnum: scope.row.LesionType === 0 && scope.row.ReportLayType === 1 ? 0 : null,
|
||||
ReportChartTypeEnum: (scope.row.LesionType === 0 && scope.row.ReportLayType === 1) || (scope.row.LesionType === 4 && scope.row.ReportLayType === 1) ? 0 : null,
|
||||
QuestionName: scope.row.QuestionName
|
||||
}
|
||||
})" />
|
||||
|
|
@ -169,7 +169,8 @@
|
|||
<span v-else>{{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}</span>
|
||||
</template>
|
||||
<template v-else-if="scope.row.QuestionType === 22">
|
||||
{{ scope.row.Answers[task.VisitTaskId] === '-1' ? $t('trials:readingReport:title:unknow') :
|
||||
{{ scope.row.Answers[task.VisitTaskId] === '-2' ? "NA" : scope.row.Answers[task.VisitTaskId] === '-1' ?
|
||||
$t('trials:readingReport:title:unknow') :
|
||||
scope.row.Answers[task.VisitTaskId] }}
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -206,7 +206,8 @@
|
|||
:initUrl="scope.row.Answers[task.VisitTaskId]"></customize-report-page-upload>
|
||||
</template>
|
||||
<template v-else-if="scope.row.QuestionType === 22">
|
||||
{{ scope.row.Answers[task.VisitTaskId] === '-1' ? '未知' : scope.row.Answers[task.VisitTaskId] }}
|
||||
{{ scope.row.Answers[task.VisitTaskId] === '-2' ? "NA" : scope.row.Answers[task.VisitTaskId] === '-1' ?
|
||||
'未知' : scope.row.Answers[task.VisitTaskId] }}
|
||||
</template>
|
||||
<template v-else-if="scope.row.DictionaryCode">
|
||||
{{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}
|
||||
|
|
|
|||
|
|
@ -168,7 +168,8 @@
|
|||
<span v-else>{{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}</span>
|
||||
</template>
|
||||
<template v-else-if="scope.row.QuestionType === 22">
|
||||
{{ scope.row.Answers[task.VisitTaskId] === '-1' ? $t('trials:readingReport:title:unknow') :
|
||||
{{ scope.row.Answers[task.VisitTaskId] === '-2' ? "NA" : scope.row.Answers[task.VisitTaskId] === '-1' ?
|
||||
$t('trials:readingReport:title:unknow') :
|
||||
scope.row.Answers[task.VisitTaskId] }}
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,37 +1,26 @@
|
|||
<template>
|
||||
<el-form v-if="globalForm.taskList.length > 0" ref="globalRuleForm" :model="globalForm" class="global-form">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="globalForm.taskList"
|
||||
>
|
||||
<el-table-column
|
||||
prop="BlindName"
|
||||
:label="$t('trials:globalReview:table:visitName')"
|
||||
show-overflow-tooltip
|
||||
width="150"
|
||||
/>
|
||||
<el-table v-loading="loading" :data="globalForm.taskList">
|
||||
<el-table-column prop="BlindName" :label="$t('trials:globalReview:table:visitName')" show-overflow-tooltip
|
||||
width="150" />
|
||||
<!-- 评估结果 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:medicalFeedback:table:visitPointCount')"
|
||||
align="center"
|
||||
prop=""
|
||||
>
|
||||
<el-table-column :label="$t('trials:medicalFeedback:table:visitPointCount')" align="center" prop="">
|
||||
<template>
|
||||
<el-table-column
|
||||
v-for="(qs,index) in globalInfo.evaluationQsList"
|
||||
:key="index"
|
||||
prop=""
|
||||
:label="qs"
|
||||
show-overflow-tooltip
|
||||
width="200"
|
||||
>
|
||||
<el-table-column v-for="(qs, index) in globalInfo.evaluationQsList" :key="index" prop="" :label="qs"
|
||||
show-overflow-tooltip width="200">
|
||||
<template slot-scope="scope">
|
||||
<template v-if="(scope.row.IsBaseLine && (scope.row.BeforeQuestionList[index].GlobalReadingShowType ===1 || scope.row.BeforeQuestionList[index].GlobalReadingShowType ===5)) || (!scope.row.IsBaseLine && (scope.row.BeforeQuestionList[index].GlobalReadingShowType ===2 || scope.row.BeforeQuestionList[index].GlobalReadingShowType ===6)) || (scope.row.BeforeQuestionList[index].GlobalReadingShowType ===0 || scope.row.BeforeQuestionList[index].GlobalReadingShowType ===4)">
|
||||
<div v-if="scope.row.BeforeQuestionList.length>index && scope.row.BeforeQuestionList[index].Answer">
|
||||
<template
|
||||
v-if="(scope.row.IsBaseLine && (scope.row.BeforeQuestionList[index].GlobalReadingShowType === 1 || scope.row.BeforeQuestionList[index].GlobalReadingShowType === 5)) || (!scope.row.IsBaseLine && (scope.row.BeforeQuestionList[index].GlobalReadingShowType === 2 || scope.row.BeforeQuestionList[index].GlobalReadingShowType === 6)) || (scope.row.BeforeQuestionList[index].GlobalReadingShowType === 0 || scope.row.BeforeQuestionList[index].GlobalReadingShowType === 4)">
|
||||
<div v-if="scope.row.BeforeQuestionList.length > index && scope.row.BeforeQuestionList[index].Answer">
|
||||
<span v-if="scope.row.BeforeQuestionList[index].DictionaryCode">
|
||||
{{ $fd(scope.row.BeforeQuestionList[index].DictionaryCode,parseInt(scope.row.BeforeQuestionList[index].Answer)) }}
|
||||
{{
|
||||
$fd(scope.row.BeforeQuestionList[index].DictionaryCode, parseInt(scope.row.BeforeQuestionList[index].Answer))
|
||||
}}
|
||||
</span>
|
||||
<span v-else-if="scope.row.BeforeQuestionList[index].QuestionType === 22">{{ scope.row.BeforeQuestionList[index].Answer === '-1' ? $t('trials:readingReport:title:unknow') : scope.row.BeforeQuestionList[index].Answer }}</span>
|
||||
<span v-else-if="scope.row.BeforeQuestionList[index].QuestionType === 22">{{
|
||||
scope.row.BeforeQuestionList[index].Answer === '-2' ? "NA" :
|
||||
scope.row.BeforeQuestionList[index].Answer === '-1' ? $t('trials:readingReport:title:unknow') :
|
||||
scope.row.BeforeQuestionList[index].Answer }}</span>
|
||||
<span v-else>{{ scope.row.BeforeQuestionList[index].Answer }}</span>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -41,72 +30,47 @@
|
|||
</el-table-column>
|
||||
|
||||
<!-- 评估结果 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:globalReview:table:evaluationRes')"
|
||||
align="center"
|
||||
prop=""
|
||||
>
|
||||
<el-table-column :label="$t('trials:globalReview:table:evaluationRes')" align="center" prop="">
|
||||
<template>
|
||||
<el-table-column
|
||||
v-for="(qs,index) in globalInfo.adjustedQsList"
|
||||
v-if="qs.isShow"
|
||||
:key="index"
|
||||
prop=""
|
||||
:label="qs.questionName"
|
||||
:width="index > 0 ? '300' : '200'"
|
||||
>
|
||||
<el-table-column v-for="(qs, index) in globalInfo.adjustedQsList" v-if="qs.isShow" :key="index" prop=""
|
||||
:label="qs.questionName" :width="index > 0 ? '300' : '200'">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="readingTaskState<2 && (scope.row.AfterQuestionList[index].GlobalReadingShowType === 0 || (scope.row.IsBaseLine && scope.row.AfterQuestionList[index].GlobalReadingShowType === 1) || (!scope.row.IsBaseLine && scope.row.AfterQuestionList[index].GlobalReadingShowType === 2))">
|
||||
<div
|
||||
v-if="readingTaskState < 2 && (scope.row.AfterQuestionList[index].GlobalReadingShowType === 0 || (scope.row.IsBaseLine && scope.row.AfterQuestionList[index].GlobalReadingShowType === 1) || (!scope.row.IsBaseLine && scope.row.AfterQuestionList[index].GlobalReadingShowType === 2))">
|
||||
<!-- <span v-if="(scope.row.IsBaseLine && scope.row.AfterQuestionList[index].LimitEdit === 2) || (!scope.row.IsBaseLine && scope.row.AfterQuestionList[index].LimitEdit === 1)">
|
||||
{{ $fd(scope.row.AfterQuestionList[index].DictionaryCode, parseInt(scope.row.AfterQuestionList[index].VisitAnswer)) }}
|
||||
</span> -->
|
||||
<el-form-item
|
||||
:prop="`${scope.$index}${scope.row.AfterQuestionList[index].QuestionId?scope.row.AfterQuestionList[index].QuestionId:scope.row.AfterQuestionList[index].GlobalAnswerType}`"
|
||||
label=""
|
||||
:rules="[
|
||||
{ required: parseInt(scope.row.AfterQuestionList[index].GlobalAnswerType) !== 1 || scope.row.AfterQuestionList[index].isChange,message: $t('common:ruleMessage:specify'), trigger: ['change','blur']},
|
||||
]"
|
||||
>
|
||||
<label v-if="scope.row.AfterQuestionList[index].GlobalAnswerType !== 1 || scope.row.AfterQuestionList[index].isChange" />
|
||||
<template v-if="scope.row.AfterQuestionList[index].GlobalAnswerType === 0 ">
|
||||
:prop="`${scope.$index}${scope.row.AfterQuestionList[index].QuestionId ? scope.row.AfterQuestionList[index].QuestionId : scope.row.AfterQuestionList[index].GlobalAnswerType}`"
|
||||
label="" :rules="[
|
||||
{ required: parseInt(scope.row.AfterQuestionList[index].GlobalAnswerType) !== 1 || scope.row.AfterQuestionList[index].isChange, message: $t('common:ruleMessage:specify'), trigger: ['change', 'blur'] },
|
||||
]">
|
||||
<label
|
||||
v-if="scope.row.AfterQuestionList[index].GlobalAnswerType !== 1 || scope.row.AfterQuestionList[index].isChange" />
|
||||
<template v-if="scope.row.AfterQuestionList[index].GlobalAnswerType === 0">
|
||||
<!-- 下拉框 -->
|
||||
<!-- cope.row.AfterQuestionList[index].Answer -->
|
||||
<el-select
|
||||
v-model="globalForm[`${scope.$index}${scope.row.AfterQuestionList[index].QuestionId?scope.row.AfterQuestionList[index].QuestionId:String(scope.row.AfterQuestionList[index].GlobalAnswerType)}`]"
|
||||
style="width:90%;"
|
||||
@change="(v) => {
|
||||
v-model="globalForm[`${scope.$index}${scope.row.AfterQuestionList[index].QuestionId ? scope.row.AfterQuestionList[index].QuestionId : String(scope.row.AfterQuestionList[index].GlobalAnswerType)}`]"
|
||||
style="width:90%;" @change="(v) => {
|
||||
selectChange(v, scope.row, index)
|
||||
}"
|
||||
>
|
||||
}">
|
||||
<template v-if="scope.row.AfterQuestionList[index].TypeValue">
|
||||
<el-option
|
||||
v-for="val in scope.row.AfterQuestionList[index].TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val"
|
||||
:value="val"
|
||||
/>
|
||||
<el-option v-for="val in scope.row.AfterQuestionList[index].TypeValue.split('|')" :key="val"
|
||||
:label="val" :value="val" />
|
||||
</template>
|
||||
<template v-if="scope.row.AfterQuestionList[index].DictionaryCode">
|
||||
<el-option
|
||||
v-for="item of $d[scope.row.AfterQuestionList[index].DictionaryCode]"
|
||||
<el-option v-for="item of $d[scope.row.AfterQuestionList[index].DictionaryCode]"
|
||||
v-show="(scope.row.IsBaseLine && scope.row.AfterQuestionList[index].GlobalAnswerType === 0 && item.value === 5) || (!scope.row.IsBaseLine && scope.row.AfterQuestionList[index].GlobalAnswerType === 0 && item.value !== 5)"
|
||||
:key="item.id"
|
||||
:value="String(item.value)"
|
||||
:label="item.label"
|
||||
/>
|
||||
:key="item.id" :value="String(item.value)" :label="item.label" />
|
||||
</template>
|
||||
</el-select>
|
||||
</template>
|
||||
<!-- 全局阅片备注 GlobalAnswerType:1 -->
|
||||
<el-input
|
||||
v-if="scope.row.AfterQuestionList[index].GlobalAnswerType === 1"
|
||||
v-model="globalForm[`${scope.$index}${scope.row.AfterQuestionList[index].QuestionId?scope.row.AfterQuestionList[index].QuestionId:String(scope.row.AfterQuestionList[index].GlobalAnswerType)}`]"
|
||||
maxlength="300"
|
||||
show-word-limit
|
||||
type="textarea"
|
||||
style="width:90%;"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
/>
|
||||
<el-input v-if="scope.row.AfterQuestionList[index].GlobalAnswerType === 1"
|
||||
v-model="globalForm[`${scope.$index}${scope.row.AfterQuestionList[index].QuestionId ? scope.row.AfterQuestionList[index].QuestionId : String(scope.row.AfterQuestionList[index].GlobalAnswerType)}`]"
|
||||
maxlength="300" show-word-limit type="textarea" style="width:90%;"
|
||||
:autosize="{ minRows: 2, maxRows: 4 }" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else>
|
||||
|
|
@ -115,7 +79,9 @@
|
|||
{{ getAssessType(scope.row.AfterQuestionList[index].Answer) }}
|
||||
</span>
|
||||
<span v-else-if="scope.row.AfterQuestionList[index].DictionaryCode">
|
||||
{{ $fd(scope.row.AfterQuestionList[index].DictionaryCode,parseInt(scope.row.AfterQuestionList[index].Answer)) }}
|
||||
{{
|
||||
$fd(scope.row.AfterQuestionList[index].DictionaryCode, parseInt(scope.row.AfterQuestionList[index].Answer))
|
||||
}}
|
||||
</span>
|
||||
<span v-else>{{ scope.row.AfterQuestionList[index].Answer }}</span>
|
||||
</div>
|
||||
|
|
@ -124,17 +90,10 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
width="200"
|
||||
>
|
||||
<el-table-column :label="$t('common:action:action')" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
:title="$t('trials:globalReview:table:view')"
|
||||
icon="el-icon-view"
|
||||
@click="handleView(scope.row)"
|
||||
/>
|
||||
<el-button circle :title="$t('trials:globalReview:table:view')" icon="el-icon-view"
|
||||
@click="handleView(scope.row)" />
|
||||
<!-- v-if="readingTaskState < 2 && scope.row.AgreeOrNot[0].Answer==='0'" -->
|
||||
<!-- <el-button
|
||||
v-if="readingTaskState < 2 "
|
||||
|
|
@ -232,11 +191,11 @@ export default {
|
|||
if (i.QuestionId) {
|
||||
obj.questionId = i.QuestionId
|
||||
obj.globalAnswerType = i.GlobalAnswerType
|
||||
obj.answer = this.globalForm[ `${index}${i.QuestionId}`]
|
||||
obj.answer = this.globalForm[`${index}${i.QuestionId}`]
|
||||
} else {
|
||||
obj.questionId = ''
|
||||
obj.globalAnswerType = i.GlobalAnswerType
|
||||
obj.answer = this.globalForm[ `${index}${i.GlobalAnswerType}`]
|
||||
obj.answer = this.globalForm[`${index}${i.GlobalAnswerType}`]
|
||||
}
|
||||
answerList.push(obj)
|
||||
})
|
||||
|
|
@ -259,7 +218,7 @@ export default {
|
|||
} else {
|
||||
resolve(false)
|
||||
}
|
||||
} catch(e) {
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
this.loading = false
|
||||
resolve(false)
|
||||
|
|
@ -278,14 +237,17 @@ export default {
|
|||
color: #F56C6C;
|
||||
margin-right: 4px;
|
||||
}
|
||||
::v-deep .el-form-item--medium .el-form-item__content{
|
||||
|
||||
::v-deep .el-form-item--medium .el-form-item__content {
|
||||
display: flex;
|
||||
}
|
||||
.global-form{
|
||||
::v-deep .el-form-item__content{
|
||||
|
||||
.global-form {
|
||||
::v-deep .el-form-item__content {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
::v-deep .form-item .el-form-item__error{
|
||||
|
||||
::v-deep .form-item .el-form-item__error {
|
||||
top: 60%;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,53 +5,41 @@
|
|||
<el-button v-if="auditInfo.IsExistsClinicalData" type="text" @click="previewCD">
|
||||
{{ $t('trials:adReview:title:clinicalData') }}
|
||||
</el-button>
|
||||
<el-button v-if="auditInfo.GlobalInfo.OtherGlobalTaskId" type="text" @click="handleView(auditInfo.GlobalInfo.OtherGlobalTaskId)">{{ $t('trials:medicalFeedback:title:otherReader') }}</el-button>
|
||||
<el-button v-if="auditInfo.GlobalInfo.OtherGlobalTaskId" type="text"
|
||||
@click="handleView(auditInfo.GlobalInfo.OtherGlobalTaskId)">{{ $t('trials:medicalFeedback:title:otherReader')
|
||||
}}</el-button>
|
||||
|
||||
<!-- 关联裁判任务 -->
|
||||
<el-button v-if="auditInfo.GlobalInfo.JudgeTaskName" type="text" @click="handleView(auditInfo.GlobalInfo.JudgeTaskId)">{{ auditInfo.GlobalInfo.JudgeTaskName }}</el-button>
|
||||
<el-button v-if="auditInfo.GlobalInfo.JudgeTaskName" type="text"
|
||||
@click="handleView(auditInfo.GlobalInfo.JudgeTaskId)">{{ auditInfo.GlobalInfo.JudgeTaskName }}</el-button>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
v-if="rowData.CriterionType === 10"
|
||||
:data="taskList"
|
||||
>
|
||||
<el-table-column
|
||||
prop="BlindName"
|
||||
:label="$t('trials:medicalFeedback:table:taskBlindName')"
|
||||
show-overflow-tooltip
|
||||
width="150"
|
||||
>
|
||||
<el-table v-if="rowData.CriterionType === 10" :data="taskList">
|
||||
<el-table-column prop="BlindName" :label="$t('trials:medicalFeedback:table:taskBlindName')" show-overflow-tooltip
|
||||
width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleView(scope.row.VisitTaskId)"
|
||||
>
|
||||
<el-button type="text" @click="handleView(scope.row.VisitTaskId)">
|
||||
{{ scope.row.BlindName }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 访视点计数 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:medicalFeedback:table:visitPointCount')"
|
||||
align="center"
|
||||
prop=""
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column :label="$t('trials:medicalFeedback:table:visitPointCount')" align="center" prop=""
|
||||
show-overflow-tooltip>
|
||||
<template>
|
||||
<el-table-column
|
||||
v-for="(qs,index) in evaluationQsList"
|
||||
:key="index"
|
||||
prop=""
|
||||
:label="qs"
|
||||
show-overflow-tooltip
|
||||
width="150"
|
||||
>
|
||||
<el-table-column v-for="(qs, index) in evaluationQsList" :key="index" prop="" :label="qs" show-overflow-tooltip
|
||||
width="150">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.BeforeQuestionList.length>index && scope.row.BeforeQuestionList[index].Answer">
|
||||
<div v-if="scope.row.BeforeQuestionList.length > index && scope.row.BeforeQuestionList[index].Answer">
|
||||
<span v-if="scope.row.BeforeQuestionList[index].DictionaryCode">
|
||||
{{ $fd(scope.row.BeforeQuestionList[index].DictionaryCode,parseInt(scope.row.BeforeQuestionList[index].Answer)) }}
|
||||
{{
|
||||
$fd(scope.row.BeforeQuestionList[index].DictionaryCode, parseInt(scope.row.BeforeQuestionList[index].Answer))
|
||||
}}
|
||||
</span>
|
||||
<span v-else-if="scope.row.BeforeQuestionList[index].QuestionType === 22">{{ scope.row.BeforeQuestionList[index].Answer === '-1' ? $t('trials:medicalFeedback:table:unKnow') : scope.row.BeforeQuestionList[index].Answer }}</span>
|
||||
<span v-else-if="scope.row.BeforeQuestionList[index].QuestionType === 22">{{
|
||||
scope.row.BeforeQuestionList[index].Answer === '-2' ? "NA" : scope.row.BeforeQuestionList[index].Answer
|
||||
=== '-1' ? $t('trials:medicalFeedback:table:unKnow') : scope.row.BeforeQuestionList[index].Answer
|
||||
}}</span>
|
||||
<span v-else>{{ scope.row.BeforeQuestionList[index].Answer }}</span>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -60,48 +48,35 @@
|
|||
</el-table-column>
|
||||
|
||||
<!-- 是否同意访视结果 -->
|
||||
<el-table-column
|
||||
v-for="(qs, index) in agreeOrNotList"
|
||||
:key="index"
|
||||
prop=""
|
||||
:label="$t('trials:medicalFeedback:table:agreeToVisitPointCount')"
|
||||
show-overflow-tooltip
|
||||
width="170"
|
||||
>
|
||||
<el-table-column v-for="(qs, index) in agreeOrNotList" :key="index" prop=""
|
||||
:label="$t('trials:medicalFeedback:table:agreeToVisitPointCount')" show-overflow-tooltip width="170">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="parseInt(scope.row.AgreeOrNot[0].Answer) === 1" type="primary">
|
||||
{{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
|
||||
{{ $fd('ReadingYesOrNo', parseInt(scope.row.AgreeOrNot[0].Answer)) }}
|
||||
</el-tag>
|
||||
<el-tag v-else-if="parseInt(scope.row.AgreeOrNot[0].Answer) === 0" type="danger"> {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}</el-tag>
|
||||
<el-tag v-else-if="parseInt(scope.row.AgreeOrNot[0].Answer) === 0" type="danger"> {{
|
||||
$fd('ReadingYesOrNo', parseInt(scope.row.AgreeOrNot[0].Answer)) }}</el-tag>
|
||||
<span v-else />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 评估结果 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:medicalFeedback:table:assessmentResults')"
|
||||
align="center"
|
||||
prop=""
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column :label="$t('trials:medicalFeedback:table:assessmentResults')" align="center" prop=""
|
||||
show-overflow-tooltip>
|
||||
<template>
|
||||
<el-table-column
|
||||
v-for="(qs,index) in adjustedQsList"
|
||||
:key="index"
|
||||
prop=""
|
||||
:label="qs"
|
||||
show-overflow-tooltip
|
||||
width="150"
|
||||
>
|
||||
<el-table-column v-for="(qs, index) in adjustedQsList" :key="index" prop="" :label="qs" show-overflow-tooltip
|
||||
width="150">
|
||||
<template slot-scope="scope">
|
||||
<!-- {{ scope.row.AfterQuestionList.length>index?scope.row.AfterQuestionList[index].Answer:'' }} -->
|
||||
<div v-if="scope.row.AfterQuestionList.length>index && scope.row.AfterQuestionList[index].Answer">
|
||||
<div v-if="scope.row.AfterQuestionList.length > index && scope.row.AfterQuestionList[index].Answer">
|
||||
|
||||
<span v-if="scope.row.AfterQuestionList[index].GlobalAnswerType === 3">
|
||||
{{ getAssessType(scope.row.AfterQuestionList[index].Answer) }}
|
||||
</span>
|
||||
<span v-else-if="scope.row.AfterQuestionList[index].DictionaryCode">
|
||||
{{ $fd(scope.row.AfterQuestionList[index].DictionaryCode,parseInt(scope.row.AfterQuestionList[index].Answer)) }}
|
||||
{{
|
||||
$fd(scope.row.AfterQuestionList[index].DictionaryCode, parseInt(scope.row.AfterQuestionList[index].Answer))
|
||||
}}
|
||||
</span>
|
||||
<span v-else>{{ scope.row.AfterQuestionList[index].Answer }}</span>
|
||||
</div>
|
||||
|
|
@ -110,60 +85,35 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
width="100"
|
||||
>
|
||||
<el-table-column :label="$t('common:action:action')" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
:title="$t('trials:medicalFeedback:table:view')"
|
||||
icon="el-icon-view"
|
||||
@click="handleView(scope.row.VisitTaskId)"
|
||||
/>
|
||||
<el-button circle :title="$t('trials:medicalFeedback:table:view')" icon="el-icon-view"
|
||||
@click="handleView(scope.row.VisitTaskId)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-table
|
||||
v-else
|
||||
:data="taskList"
|
||||
>
|
||||
<el-table v-else :data="taskList">
|
||||
<!-- 访视名称 -->
|
||||
<el-table-column
|
||||
prop="BlindName"
|
||||
:label="$t('trials:globalReview:table:visitName')"
|
||||
show-overflow-tooltip
|
||||
width="150"
|
||||
>
|
||||
<el-table-column prop="BlindName" :label="$t('trials:globalReview:table:visitName')" show-overflow-tooltip
|
||||
width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleView(scope.row.VisitTaskId)"
|
||||
>
|
||||
<el-button type="text" @click="handleView(scope.row.VisitTaskId)">
|
||||
{{ scope.row.BlindName }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 评估结果 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:globalReview:table:evaluationRes')"
|
||||
align="center"
|
||||
prop=""
|
||||
>
|
||||
<el-table-column :label="$t('trials:globalReview:table:evaluationRes')" align="center" prop="">
|
||||
<template>
|
||||
<el-table-column
|
||||
v-for="(qs,index) in evaluationQsList"
|
||||
:key="index"
|
||||
prop=""
|
||||
:label="qs"
|
||||
show-overflow-tooltip
|
||||
width="150"
|
||||
>
|
||||
<el-table-column v-for="(qs, index) in evaluationQsList" :key="index" prop="" :label="qs" show-overflow-tooltip
|
||||
width="150">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.BeforeQuestionList.length>index && scope.row.BeforeQuestionList[index].Answer">
|
||||
<div v-if="scope.row.BeforeQuestionList.length > index && scope.row.BeforeQuestionList[index].Answer">
|
||||
<span v-if="scope.row.BeforeQuestionList[index].DictionaryCode">
|
||||
{{ $fd(scope.row.BeforeQuestionList[index].DictionaryCode,parseInt(scope.row.BeforeQuestionList[index].Answer)) }}
|
||||
{{
|
||||
$fd(scope.row.BeforeQuestionList[index].DictionaryCode, parseInt(scope.row.BeforeQuestionList[index].Answer))
|
||||
}}
|
||||
</span>
|
||||
<span v-else>{{ scope.row.BeforeQuestionList[index].Answer }}</span>
|
||||
</div>
|
||||
|
|
@ -172,46 +122,33 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<!-- 是否同意访视结果 -->
|
||||
<el-table-column
|
||||
v-for="(qs,index) in agreeOrNotList"
|
||||
:key="index"
|
||||
prop=""
|
||||
:label="$t('trials:globalReview:table:isAgreeEvaluationRes')"
|
||||
show-overflow-tooltip
|
||||
width="170"
|
||||
>
|
||||
<el-table-column v-for="(qs, index) in agreeOrNotList" :key="index" prop=""
|
||||
:label="$t('trials:globalReview:table:isAgreeEvaluationRes')" show-overflow-tooltip width="170">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="parseInt(scope.row.AgreeOrNot[0].Answer) === 1" type="primary">
|
||||
{{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
|
||||
{{ $fd('ReadingYesOrNo', parseInt(scope.row.AgreeOrNot[0].Answer)) }}
|
||||
</el-tag>
|
||||
<el-tag v-else-if="parseInt(scope.row.AgreeOrNot[0].Answer) === 0" type="danger"> {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}</el-tag>
|
||||
<el-tag v-else-if="parseInt(scope.row.AgreeOrNot[0].Answer) === 0" type="danger"> {{
|
||||
$fd('ReadingYesOrNo', parseInt(scope.row.AgreeOrNot[0].Answer)) }}</el-tag>
|
||||
<span v-else />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 调整后结果 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:globalReview:table:adjustedRes')"
|
||||
align="center"
|
||||
prop=""
|
||||
>
|
||||
<el-table-column :label="$t('trials:globalReview:table:adjustedRes')" align="center" prop="">
|
||||
<template>
|
||||
<el-table-column
|
||||
v-for="(qs,index) in adjustedQsList"
|
||||
:key="index"
|
||||
prop=""
|
||||
:label="qs"
|
||||
show-overflow-tooltip
|
||||
width="150"
|
||||
>
|
||||
<el-table-column v-for="(qs, index) in adjustedQsList" :key="index" prop="" :label="qs" show-overflow-tooltip
|
||||
width="150">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.AfterQuestionList.length>index && scope.row.AfterQuestionList[index].Answer">
|
||||
<div v-if="scope.row.AfterQuestionList.length > index && scope.row.AfterQuestionList[index].Answer">
|
||||
|
||||
<span v-if="scope.row.AfterQuestionList[index].GlobalAnswerType === 3">
|
||||
{{ getAssessType(scope.row.AfterQuestionList[index].Answer) }}
|
||||
</span>
|
||||
<span v-else-if="scope.row.AfterQuestionList[index].DictionaryCode">
|
||||
{{ $fd(scope.row.AfterQuestionList[index].DictionaryCode,parseInt(scope.row.AfterQuestionList[index].Answer)) }}
|
||||
{{
|
||||
$fd(scope.row.AfterQuestionList[index].DictionaryCode, parseInt(scope.row.AfterQuestionList[index].Answer))
|
||||
}}
|
||||
</span>
|
||||
<span v-else>{{ scope.row.AfterQuestionList[index].Answer }}</span>
|
||||
</div>
|
||||
|
|
@ -220,18 +157,11 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
width="120"
|
||||
:fixed="adjustedQsList.length > 4 ? 'right' : false"
|
||||
>
|
||||
<el-table-column :label="$t('common:action:action')" width="120"
|
||||
:fixed="adjustedQsList.length > 4 ? 'right' : false">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
:title="$t('trials:globalReview:table:view')"
|
||||
icon="el-icon-view"
|
||||
@click="handleView(scope.row.VisitTaskId)"
|
||||
/>
|
||||
<el-button circle :title="$t('trials:globalReview:table:view')" icon="el-icon-view"
|
||||
@click="handleView(scope.row.VisitTaskId)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
|
@ -320,7 +250,7 @@ export default {
|
|||
var isReadingTaskViewInOrder = this.rowData.IsReadingTaskViewInOrder
|
||||
var trialReadingCriterionId = this.rowData.TrialReadingCriterionId
|
||||
var path = ''
|
||||
if (readingTool === 0 || readingTool === 2 ) {
|
||||
if (readingTool === 0 || readingTool === 2) {
|
||||
path = `/readingDicoms?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${trialId}&subjectCode=${this.rowData.SubjectCode}&subjectId=${this.rowData.SubjectId}&visitTaskId=${visitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
|
||||
} else {
|
||||
path = `/noneDicomReading?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${trialId}&subjectCode=${this.rowData.SubjectCode}&subjectId=${this.rowData.SubjectId}&visitTaskId=${visitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
<!-- 受试者中止状态 -->
|
||||
<el-form-item style="margin-bottom: 10px" :label="$t('trials:crcUpload:table:IsSubjectQuit')">
|
||||
<el-select v-model="searchData.IsSubjectQuit" clearable style="width: 120px">
|
||||
<el-option v-for="item of $d.YesOrNo" :value="item.value" :label="item.label" :key="item.label" />
|
||||
<el-option v-for="item of $d.Subject_Visit_Status" :value="item.value" :label="item.label" :key="item.label" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 审核状态 -->
|
||||
|
|
|
|||
|
|
@ -34,7 +34,8 @@
|
|||
<!-- 受试者中止状态 -->
|
||||
<el-form-item style="margin-bottom: 10px" :label="$t('trials:qcCheck:table:IsSubjectQuit')">
|
||||
<el-select v-model="searchData.IsSubjectQuit" clearable style="width: 120px">
|
||||
<el-option v-for="item of $d.YesOrNo" :value="item.value" :label="item.label" :key="item.label" />
|
||||
<el-option v-for="item of $d.Subject_Visit_Status" :value="item.value" :label="item.label"
|
||||
:key="item.label" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 审核状态 -->
|
||||
|
|
|
|||
Loading…
Reference in New Issue