1
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
2a27e1fbae
commit
7f48e37779
|
|
@ -272,7 +272,7 @@
|
|||
</el-form>
|
||||
</template>
|
||||
<script>
|
||||
import { submitTableQuestion, deleteReadingRowAnswer, getIsSuvMaxLesion } from '@/api/trials'
|
||||
import { submitTableQuestion, deleteReadingRowAnswer, getIsSuvMaxLesionNoPet } from '@/api/trials'
|
||||
// import { uploadPrintscreen } from '@/api/reading'
|
||||
import DicomEvent from './../DicomEvent'
|
||||
import store from '@/store'
|
||||
|
|
@ -1737,7 +1737,7 @@ export default {
|
|||
// 判断该病灶的suvmax是否是最大的
|
||||
const suvMax = this.getQuestionVal(20)
|
||||
if (this.questionForm.RowId && !!suvMax) {
|
||||
const res = await getIsSuvMaxLesion({ visitTaskId: this.visitTaskId, rowId: this.questionForm.RowId })
|
||||
const res = await getIsSuvMaxLesionNoPet({ visitTaskId: this.visitTaskId, rowId: this.questionForm.RowId })
|
||||
if (res.IsSuccess && res.Result.IsSuvMaxLesion) {
|
||||
message = this.$t('trials:reading:warnning:msg58')
|
||||
}
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@
|
|||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { splitLesion, getSplitPPdSum, getCanMergeLesion, mergeLesion } from '@/api/trials'
|
||||
import { splitLesion, getSplitPPdSumNoPet, getCanMergeLesion, mergeLesion } from '@/api/trials'
|
||||
import { resetReadingTask } from '@/api/reading'
|
||||
import DicomEvent from './../DicomEvent'
|
||||
import store from '@/store'
|
||||
|
|
@ -343,7 +343,7 @@ export default {
|
|||
})
|
||||
})
|
||||
DicomEvent.$on('refreshSplitTargetLesionPDD', async(callback) => {
|
||||
const res = await getSplitPPdSum({ visitTaskId: this.visitTaskId })
|
||||
const res = await getSplitPPdSumNoPet({ visitTaskId: this.visitTaskId })
|
||||
this.splitTargetLesions = res.Result
|
||||
if (this.splitTargetLesions && this.splitTargetLesions.length > 0) {
|
||||
this.splitTargetLesions.map(i => {
|
||||
|
|
@ -397,7 +397,7 @@ export default {
|
|||
loading.close()
|
||||
}
|
||||
if (!this.isBaseLineTask) {
|
||||
const res = await getSplitPPdSum({ visitTaskId: this.visitTaskId })
|
||||
const res = await getSplitPPdSumNoPet({ visitTaskId: this.visitTaskId })
|
||||
this.splitTargetLesions = res.Result
|
||||
}
|
||||
this.questions = this.visitTaskList[i].ReadingQuestions
|
||||
|
|
@ -540,7 +540,7 @@ export default {
|
|||
this.isCurrentTask = this.visitTaskList[idx].IsCurrentTask
|
||||
}
|
||||
if (!this.isBaseLineTask) {
|
||||
const res = await getSplitPPdSum({ visitTaskId: this.visitTaskId })
|
||||
const res = await getSplitPPdSumNoPet({ visitTaskId: this.visitTaskId })
|
||||
this.splitTargetLesions = res.Result
|
||||
}
|
||||
this.getTableQuestions()
|
||||
|
|
|
|||
|
|
@ -1,27 +1,17 @@
|
|||
<template>
|
||||
<div v-loading="loading" class="ecrf-wrapper">
|
||||
<el-form
|
||||
v-if="questions.length > 0"
|
||||
ref="questions"
|
||||
size="small"
|
||||
:model="questionForm"
|
||||
>
|
||||
<QuestionItem
|
||||
v-for="question of questions"
|
||||
:key="question.Id"
|
||||
:question="question"
|
||||
:question-form="questionForm"
|
||||
:reading-task-state="readingTaskState"
|
||||
:is-first-change-task="isFirstChangeTask"
|
||||
:visit-task-id="visitTaskId"
|
||||
@setFormItemData="setFormItemData"
|
||||
@resetFormItemData="resetFormItemData"
|
||||
/>
|
||||
<el-form v-if="questions.length > 0" ref="questions" size="small" :model="questionForm">
|
||||
<QuestionItem v-for="question of questions" :key="question.Id" :question="question" :question-form="questionForm"
|
||||
:reading-task-state="readingTaskState" :is-first-change-task="isFirstChangeTask" :visit-task-id="visitTaskId"
|
||||
@setFormItemData="setFormItemData" @resetFormItemData="resetFormItemData" />
|
||||
|
||||
<el-form-item v-if="readingTaskState < 2 && !isFirstChangeTask">
|
||||
<div class="ecrf-footer">
|
||||
<i v-if="groupClassify === null || groupClassify === 1" class="el-icon-warning feedback-icon" @click="openFeedBackTable" :style="{color: isExistUnprocessedFeedback ? '#ffeb3b' : '#fff'}"/>
|
||||
<el-button size="mini" :disabled="!questionFormChangeState || (!formChanged && groupClassify > 0)" :type="questionFormChangeState || (!formChanged && groupClassify > 0) ? 'primary' : null" @click="handleSave">{{ $t('common:button:save') }}</el-button>
|
||||
<i v-if="groupClassify === null || groupClassify === 1" class="el-icon-warning feedback-icon"
|
||||
@click="openFeedBackTable" :style="{ color: isExistUnprocessedFeedback ? '#ffeb3b' : '#fff' }" />
|
||||
<el-button size="mini" :disabled="!questionFormChangeState || (!formChanged && groupClassify > 0)"
|
||||
:type="questionFormChangeState || (!formChanged && groupClassify > 0) ? 'primary' : null"
|
||||
@click="handleSave">{{ $t('common:button:save') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
@ -31,7 +21,7 @@
|
|||
|
||||
<script>
|
||||
// import { uploadPrintscreen } from '@/api/reading'
|
||||
import { saveTaskQuestion, getSplenicState, getSplenicVerify, getCanChooseNotMerge, getDicomReadingQuestionAnswer } from '@/api/trials'
|
||||
import { saveTaskQuestion, getSplenicState, getSplenicStateNoPet, getSplenicVerify, getSplenicVerifyNoPet, getCanChooseNotMerge, getCanChooseNotMergeNoPet, getDicomReadingQuestionAnswer } from '@/api/trials'
|
||||
import { setSkipReadingCache } from '@/api/reading'
|
||||
import QuestionItem from './QuestionItem'
|
||||
import DicomEvent from './DicomEvent'
|
||||
|
|
@ -169,8 +159,14 @@ export default {
|
|||
this.measurements.push(i)
|
||||
})
|
||||
if (isChangeVisitTask || isRefresh) {
|
||||
const { Result } = await getSplenicVerify(visitTaskId)
|
||||
this.spleenInfo = Result
|
||||
if (this.criterionType === 18) {
|
||||
const { Result } = await getSplenicVerifyNoPet(visitTaskId)
|
||||
this.spleenInfo = Result
|
||||
} else {
|
||||
const { Result } = await getSplenicVerify(visitTaskId)
|
||||
this.spleenInfo = Result
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -271,10 +267,10 @@ export default {
|
|||
},
|
||||
|
||||
handleSave() {
|
||||
this.$refs['questions'].validate(async(valid) => {
|
||||
this.$refs['questions'].validate(async (valid) => {
|
||||
if (!valid) return
|
||||
// lugano标准校验脾脏状态是否符合要求
|
||||
if (this.criterionType === 2 && this.groupClassify === 3) {
|
||||
if ((this.criterionType === 2 || this.criterionType === 18) && this.groupClassify === 3) {
|
||||
// 是否有标记未保存
|
||||
var existUnSave = this.checkAnnotationStatus(this.questions)
|
||||
if (existUnSave) {
|
||||
|
|
@ -291,28 +287,34 @@ export default {
|
|||
if (currentSpleenLength && currentSpleenStatus === 5) {
|
||||
// '脾脏状态为不可评估,不需要添加标记!'
|
||||
this.$alert(this.$t('trials:lugano:message:validSpleen1'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
callback: _ => {}
|
||||
callback: _ => { }
|
||||
})
|
||||
} else if (currentSpleenStatus === 5 && ((stIdx > -1 && this.measurements[stIdx].MeasureData) || (slIdx > -1 && this.measurements[slIdx].MeasureData))) {
|
||||
// 若有标记,状态不可为“无法评估”
|
||||
this.$alert(this.$t('trials:lugano:message:validSpleen1'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
callback: _ => {}
|
||||
callback: _ => { }
|
||||
})
|
||||
} else if (((stIdx > -1 && this.measurements[stIdx].MeasureData) || (slIdx > -1 && this.measurements[slIdx].MeasureData)) && !currentSpleenLength) {
|
||||
this.$alert(this.$t('trials:lugano:message:validSpleen2'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
callback: _ => {}
|
||||
callback: _ => { }
|
||||
})
|
||||
} else {
|
||||
this.saveQuestionsList()
|
||||
}
|
||||
} else if (this.criterionType === 2 && this.groupClassify === 1 && this.questionForm[this.imageQualityIssuesId] && parseInt(this.questionForm[this.imageQualityIssuesId]) === 6) {
|
||||
} else if ((this.criterionType === 2 || this.criterionType === 18) && this.groupClassify === 1 && this.questionForm[this.imageQualityIssuesId] && parseInt(this.questionForm[this.imageQualityIssuesId]) === 6) {
|
||||
// 保存影响质量问题分组,如果质量问题为PET-CT影像无法融合则验证是否可以保存
|
||||
const res = await getCanChooseNotMerge({ visitTaskId: this.visitTaskId })
|
||||
let res = null
|
||||
if (this.criterionType === 18) {
|
||||
res = await getCanChooseNotMergeNoPet({ visitTaskId: this.visitTaskId })
|
||||
} else {
|
||||
res = await getCanChooseNotMerge({ visitTaskId: this.visitTaskId })
|
||||
}
|
||||
|
||||
if (res.IsSuccess && !res.Result.IsCanChooseNotMerge) {
|
||||
// this.$alert(this.$t('trials:lugano:saveQuestions:warning1'), this.$t('trials:lugano:fusionDialog:warning'), {showCancelButton: false})
|
||||
this.$alert(this.$t('trials:lugano:saveQuestions:warning1'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
showCancelButton: false,
|
||||
callback: action => {}
|
||||
callback: action => { }
|
||||
})
|
||||
return
|
||||
} else {
|
||||
|
|
@ -377,7 +379,7 @@ export default {
|
|||
// DicomEvent.$emit('readingPageUpdate', {})
|
||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||
const criterionType = parseInt(localStorage.getItem('CriterionType'))
|
||||
if (idx > -1 && !this.visitTaskList[idx].IsBaseLineTask && (criterionType === 1 || criterionType === 2 || criterionType === 3 || criterionType === 17)) {
|
||||
if (idx > -1 && !this.visitTaskList[idx].IsBaseLineTask && (criterionType === 1 || criterionType === 2 || criterionType === 18 || criterionType === 3 || criterionType === 17)) {
|
||||
if (parseInt(imageQuality) === 2) {
|
||||
this.$confirm(this.$t('trials:reading:warnning:unableEvaluate'), '', {
|
||||
type: 'warning'
|
||||
|
|
@ -441,7 +443,12 @@ export default {
|
|||
try {
|
||||
var spleenLength = this.questionForm[this.spleenLengthId]
|
||||
spleenLength = isNaN(parseFloat(spleenLength)) ? -1 : parseFloat(spleenLength)
|
||||
const result = await getSplenicState(this.visitTaskId, spleenLength)
|
||||
let result = null
|
||||
if (this.criterionType === 18) {
|
||||
result = await getSplenicStateNoPet(this.visitTaskId, spleenLength)
|
||||
} else {
|
||||
result = await getSplenicState(this.visitTaskId, spleenLength)
|
||||
}
|
||||
return { isSuccess: true, result: result.Result }
|
||||
} catch (e) {
|
||||
return { isSuccess: false, result: e }
|
||||
|
|
@ -538,7 +545,7 @@ export default {
|
|||
if (!chenckVaild) {
|
||||
// 校验标记是否在同一序列的不同图像上
|
||||
this.$alert(this.$t('trials:lugano:message:validSpleen3'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
callback: _ => {}
|
||||
callback: _ => { }
|
||||
})
|
||||
return
|
||||
}
|
||||
|
|
@ -820,7 +827,7 @@ export default {
|
|||
type: 'imgfail',
|
||||
trialId: this.$route.query.trialId,
|
||||
visitTaskId: this.visitTaskId,
|
||||
callBack: async() => {
|
||||
callBack: async () => {
|
||||
console.log('callBack')
|
||||
const confirm = await this.$confirm(
|
||||
this.$t('trials:reading:confirm:feedbackmsg'),
|
||||
|
|
@ -856,55 +863,61 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.ecrf-wrapper{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
text-align: left;
|
||||
}
|
||||
::v-deep .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
::v-deep .el-textarea__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
.ecrf-wrapper {
|
||||
::v-deep .el-form-item__label {
|
||||
color: #c3c3c3;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-input__inner {
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
|
||||
::v-deep .el-textarea__inner {
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
|
||||
::v-deep .el-form-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
::v-deep .el-form-item__content {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
::v-deep .el-button--mini,
|
||||
.el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
::v-deep .el-form-item__content
|
||||
.el-select{
|
||||
width: 100%;
|
||||
}
|
||||
.ecrf-footer{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
.feedback-icon{
|
||||
padding: 0 10px;
|
||||
color: #fff;
|
||||
font-weight: 400;
|
||||
font-size: 22px;
|
||||
cursor: pointer;
|
||||
&:hover{
|
||||
color: #68a2d5;
|
||||
}
|
||||
|
||||
::v-deep .el-form-item__content .el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ecrf-footer {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
|
||||
.feedback-icon {
|
||||
padding: 0 10px;
|
||||
color: #fff;
|
||||
font-weight: 400;
|
||||
font-size: 22px;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
color: #68a2d5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Reference in New Issue