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