系统标准更改
parent
9bb856b50a
commit
842e959e2d
|
@ -35,26 +35,31 @@ const getDefaultState = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function getQuestions(questions) {
|
function getQuestions(questions) {
|
||||||
|
const criterionType = parseInt(localStorage.getItem('CriterionType'))
|
||||||
questions.forEach(item => {
|
questions.forEach(item => {
|
||||||
if (item.Type === 'table' && item.TableQuestions && item.TableQuestions.Answers.length > 0) {
|
if (item.Type === 'table' && item.TableQuestions && item.TableQuestions.Answers.length > 0) {
|
||||||
item.TableQuestions.Answers.forEach(answerObj => {
|
item.TableQuestions.Answers.forEach(answerObj => {
|
||||||
answerObj.lesionPart = getQuestionAnswer(item.TableQuestions.Questions, 8, answerObj)
|
|
||||||
answerObj.loctation = getQuestionAnswer(item.TableQuestions.Questions, 6, answerObj)
|
|
||||||
answerObj.lesionLength = getQuestionAnswer(item.TableQuestions.Questions, 0, answerObj)
|
|
||||||
answerObj.lesionShort = getQuestionAnswer(item.TableQuestions.Questions, 1, answerObj)
|
|
||||||
answerObj.isDicomReading = answerObj.IsDicomReading === 'True'
|
answerObj.isDicomReading = answerObj.IsDicomReading === 'True'
|
||||||
var isLymphLesion = getQuestionAnswer(item.TableQuestions.Questions, 2, answerObj)
|
|
||||||
isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
|
|
||||||
answerObj.isLymphLesion = isLymphLesion
|
|
||||||
answerObj.lesionState = getQuestionAnswer(item.TableQuestions.Questions, 7, answerObj)
|
|
||||||
var lesionNum = getQuestionAnswer(item.TableQuestions.Questions, 11, answerObj)
|
|
||||||
answerObj.lesionNum = lesionNum
|
|
||||||
if (answerObj.RowId) {
|
if (answerObj.RowId) {
|
||||||
var idx = item.TableQuestions.Questions.findIndex(i => i.QuestionMark === 11)
|
if (criterionType === 10) {
|
||||||
if (idx > -1) {
|
|
||||||
// pcwg
|
// pcwg
|
||||||
|
var lesionNum = getQuestionAnswer(item.TableQuestions.Questions, 11, answerObj)
|
||||||
|
answerObj.lesionNum = lesionNum
|
||||||
answerObj.saveTypeEnum = isNaN(parseInt(answerObj.lesionNum)) ? 1 : 2
|
answerObj.saveTypeEnum = isNaN(parseInt(answerObj.lesionNum)) ? 1 : 2
|
||||||
|
} else if (criterionType === 19) {
|
||||||
|
// ivus
|
||||||
|
var v = getQuestionAnswer(item.TableQuestions.Questions, 1003, answerObj)
|
||||||
|
answerObj.saveTypeEnum = isNaN(parseFloat(v)) ? 1 : 2
|
||||||
} else {
|
} else {
|
||||||
|
answerObj.lesionPart = getQuestionAnswer(item.TableQuestions.Questions, 8, answerObj)
|
||||||
|
answerObj.loctation = getQuestionAnswer(item.TableQuestions.Questions, 6, answerObj)
|
||||||
|
answerObj.lesionLength = getQuestionAnswer(item.TableQuestions.Questions, 0, answerObj)
|
||||||
|
answerObj.lesionShort = getQuestionAnswer(item.TableQuestions.Questions, 1, answerObj)
|
||||||
|
var isLymphLesion = getQuestionAnswer(item.TableQuestions.Questions, 2, answerObj)
|
||||||
|
isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
|
||||||
|
answerObj.isLymphLesion = isLymphLesion
|
||||||
|
answerObj.lesionState = getQuestionAnswer(item.TableQuestions.Questions, 7, answerObj)
|
||||||
answerObj.saveTypeEnum = isNaN(parseInt(answerObj.lesionState)) ? 1 : 2
|
answerObj.saveTypeEnum = isNaN(parseInt(answerObj.lesionState)) ? 1 : 2
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -433,7 +433,7 @@
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<RecistQuestionList
|
<RecistQuestionList
|
||||||
v-else-if="CriterionType === 13"
|
v-else-if="CriterionType === 1"
|
||||||
ref="measurementList"
|
ref="measurementList"
|
||||||
:question-form-change-state="questionFormChangeState"
|
:question-form-change-state="questionFormChangeState"
|
||||||
:question-form-change-num="questionFormChangeNum"
|
:question-form-change-num="questionFormChangeNum"
|
||||||
|
@ -458,7 +458,7 @@
|
||||||
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||||
/>
|
/>
|
||||||
<h2 v-else style="color:#ddd">
|
<h2 v-else style="color:#ddd">
|
||||||
Developing...
|
Developing...
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -56,18 +56,38 @@
|
||||||
>
|
>
|
||||||
|
|
||||||
<!-- 输入框 -->
|
<!-- 输入框 -->
|
||||||
<template v-if="qs.Type==='input' || qs.Type==='number'">
|
<template v-if="qs.Type==='input'">
|
||||||
<el-input
|
<el-input
|
||||||
v-if="qs.Type==='input' || qs.Type==='number'"
|
|
||||||
v-model="questionForm[qs.Id]"
|
v-model="questionForm[qs.Id]"
|
||||||
:disabled="!isCurrentTask || readingTaskState>=2 "
|
:disabled="!isCurrentTask || readingTaskState>=2 "
|
||||||
@change="((val)=>{formItemChange(val, qs)})"
|
@change="((val)=>{formItemChange(val, qs)})"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<!-- 数值类型 -->
|
||||||
|
<template v-if="qs.Type==='number'">
|
||||||
|
<el-input
|
||||||
|
v-model="questionForm[qs.Id]"
|
||||||
|
:disabled="!isCurrentTask || readingTaskState>=2 "
|
||||||
|
@change="((val)=>{formItemChange(val, qs)})"
|
||||||
|
@blur="limitBlur(qs.Id, qs.ValueType)"
|
||||||
>
|
>
|
||||||
<template v-if="(qs.QuestionMark===0 || qs.QuestionMark===1) && qs.Unit" slot="append">
|
<template v-if="(qs.QuestionMark===0 || qs.QuestionMark===1) && qs.Unit" slot="append">
|
||||||
{{ $fd('ValueUnit', parseInt(qs.Unit)) }}
|
{{ $fd('ValueUnit', parseInt(qs.Unit)) }}
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</template>
|
</template>
|
||||||
|
<!-- 自动计算 -->
|
||||||
|
<template v-if="qs.Type==='calculation'">
|
||||||
|
<el-input
|
||||||
|
v-model="questionForm[qs.Id]"
|
||||||
|
disabled
|
||||||
|
@change="((val)=>{formItemChange(val, qs)})"
|
||||||
|
>
|
||||||
|
<template v-if="qs.Unit" slot="append">
|
||||||
|
{{ $fd('ValueUnit', parseInt(qs.Unit)) }}
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
</template>
|
||||||
<!-- 多行文本输入框 -->
|
<!-- 多行文本输入框 -->
|
||||||
<el-input
|
<el-input
|
||||||
v-if="qs.Type==='textarea'"
|
v-if="qs.Type==='textarea'"
|
||||||
|
@ -213,11 +233,14 @@ export default {
|
||||||
isCurrentTaskAdd: 'False',
|
isCurrentTaskAdd: 'False',
|
||||||
lesionMark: '',
|
lesionMark: '',
|
||||||
deleteInfo: null,
|
deleteInfo: null,
|
||||||
pictureBaseStr: ''
|
pictureBaseStr: '',
|
||||||
|
digitPlaces: 2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.trialId = this.$route.query.trialId
|
this.trialId = this.$route.query.trialId
|
||||||
|
var digitPlaces = Number(localStorage.getItem('digitPlaces'))
|
||||||
|
this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces
|
||||||
this.initForm()
|
this.initForm()
|
||||||
DicomEvent.$on('handleImageQualityAbnormal', () => {
|
DicomEvent.$on('handleImageQualityAbnormal', () => {
|
||||||
|
|
||||||
|
@ -353,14 +376,44 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async formItemChange(v, question) {
|
async formItemChange(v, question) {
|
||||||
|
console.log('formItemChange')
|
||||||
if (this.questionForm.RowId) {
|
if (this.questionForm.RowId) {
|
||||||
this.$set(this.questionForm, 'saveTypeEnum', 1)
|
this.$set(this.questionForm, 'saveTypeEnum', 1)
|
||||||
} else {
|
} else {
|
||||||
this.$set(this.questionForm, 'saveTypeEnum', 0)
|
this.$set(this.questionForm, 'saveTypeEnum', 0)
|
||||||
}
|
}
|
||||||
|
if (question.QuestionMark === 1001 || question.QuestionMark === 1002) {
|
||||||
|
this.questionForm[this.getQuestionId(1003)] = this.calculate([1001, 1002], '-')
|
||||||
|
}
|
||||||
this.$emit('resetQuestions', { saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
|
this.$emit('resetQuestions', { saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
|
||||||
},
|
},
|
||||||
|
calculate(qsMarkArr, type) {
|
||||||
|
var num = 0
|
||||||
|
qsMarkArr.map((qsmark, i) => {
|
||||||
|
if (i === 0) {
|
||||||
|
const v = this.questionForm[this.getQuestionId(qsmark)]
|
||||||
|
num = isNaN(parseFloat(v)) ? 0 : parseFloat(v)
|
||||||
|
} else {
|
||||||
|
const v = this.questionForm[this.getQuestionId(qsmark)]
|
||||||
|
switch (type) {
|
||||||
|
case '-':
|
||||||
|
num -= isNaN(parseFloat(v)) ? 0 : parseFloat(v)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return parseFloat(num).toFixed(this.digitPlaces)
|
||||||
|
},
|
||||||
|
limitBlur(qId, valueType) {
|
||||||
|
const value = this.questionForm[qId]
|
||||||
|
if (valueType === 0) {
|
||||||
|
this.$set(this.questionForm, qId, parseInt(value))
|
||||||
|
} else if (valueType === 3) {
|
||||||
|
this.$set(this.questionForm, qId, parseFloat(value))
|
||||||
|
} else {
|
||||||
|
this.$set(this.questionForm, qId, parseFloat(value).toFixed(this.digitPlaces))
|
||||||
|
}
|
||||||
|
},
|
||||||
returnFloat(num) {
|
returnFloat(num) {
|
||||||
if (num) return
|
if (num) return
|
||||||
var value = Math.round(parseFloat(num) * 100) / 100
|
var value = Math.round(parseFloat(num) * 100) / 100
|
||||||
|
@ -508,6 +561,7 @@ export default {
|
||||||
.measurement-form{
|
.measurement-form{
|
||||||
/deep/ .el-form-item__label{
|
/deep/ .el-form-item__label{
|
||||||
color: #c3c3c3;
|
color: #c3c3c3;
|
||||||
|
text-align: left;
|
||||||
}
|
}
|
||||||
/deep/ .el-input .el-input__inner{
|
/deep/ .el-input .el-input__inner{
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
|
@ -17,10 +17,17 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 非测量问题 -->
|
<!-- 影像质量问题 -->
|
||||||
<div class="lesions">
|
<div class="lesions">
|
||||||
<Questions ref="ecrf" :question-form-change-state="questionFormChangeState" :question-form-change-num="questionFormChangeNum" />
|
<Questions
|
||||||
|
ref="ecrf"
|
||||||
|
:question-form-change-state="true"
|
||||||
|
:question-form-change-num="0"
|
||||||
|
:is-qulity-issues="false"
|
||||||
|
:group-classify="1"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 测量问题 -->
|
<!-- 测量问题 -->
|
||||||
<template v-if="questions.length > 0 && CriterionType !== 10">
|
<template v-if="questions.length > 0 && CriterionType !== 10">
|
||||||
<div v-for="(qs,index) in questions" :key="index" v-loading="loading" class="lesions lesions_wrapper">
|
<div v-for="(qs,index) in questions" :key="index" v-loading="loading" class="lesions lesions_wrapper">
|
||||||
|
@ -51,13 +58,13 @@
|
||||||
|
|
||||||
{{ 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" />
|
<i class="el-icon-warning" style="color:red" />
|
||||||
</el-tooltip> -->
|
</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" />
|
<i class="el-icon-warning" style="color:#ff9800" />
|
||||||
</el-tooltip> -->
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
@ -87,6 +94,25 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<!-- 计算值 -->
|
||||||
|
<Questions
|
||||||
|
ref="ecrf2"
|
||||||
|
:question-form-change-state="true"
|
||||||
|
:question-form-change-num="0"
|
||||||
|
:is-qulity-issues="false"
|
||||||
|
:group-classify="4"
|
||||||
|
style="margin-top:20px"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 评估结果 -->
|
||||||
|
<Questions
|
||||||
|
ref="ecrf3"
|
||||||
|
:question-form-change-state="true"
|
||||||
|
:question-form-change-num="0"
|
||||||
|
:is-qulity-issues="false"
|
||||||
|
:group-classify="5"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -225,6 +251,8 @@ export default {
|
||||||
this.questions = this.visitTaskList[i].ReadingQuestions
|
this.questions = this.visitTaskList[i].ReadingQuestions
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs['ecrf'].getQuestions(this.visitTaskId)
|
this.$refs['ecrf'].getQuestions(this.visitTaskId)
|
||||||
|
this.$refs['ecrf2'].getQuestions(this.visitTaskId)
|
||||||
|
this.$refs['ecrf3'].getQuestions(this.visitTaskId)
|
||||||
this.getTableQuestions()
|
this.getTableQuestions()
|
||||||
this.tableQuestions.forEach(item => {
|
this.tableQuestions.forEach(item => {
|
||||||
item.TableQuestions.Answers.forEach(i => {
|
item.TableQuestions.Answers.forEach(i => {
|
||||||
|
@ -245,12 +273,6 @@ export default {
|
||||||
questions.forEach(item => {
|
questions.forEach(item => {
|
||||||
if (item.Type === 'table' && item.Id === obj.questionId) {
|
if (item.Type === 'table' && item.Id === obj.questionId) {
|
||||||
var idx = item.TableQuestions.Answers.findIndex(i => i.RowIndex === obj.rowIndex)
|
var idx = item.TableQuestions.Answers.findIndex(i => i.RowIndex === obj.rowIndex)
|
||||||
item.TableQuestions.Answers[idx].isLymphLesion = obj.isLymphLesion
|
|
||||||
item.TableQuestions.Answers[idx].loctation = obj.lesionOrgan
|
|
||||||
item.TableQuestions.Answers[idx].lesionPart = obj.lesionPart
|
|
||||||
item.TableQuestions.Answers[idx].lesionLength = obj.lesionLength
|
|
||||||
item.TableQuestions.Answers[idx].lesionShort = obj.lesionShort
|
|
||||||
item.TableQuestions.Answers[idx].lesionState = obj.lesionState
|
|
||||||
item.TableQuestions.Answers[idx].saveTypeEnum = obj.saveTypeEnum
|
item.TableQuestions.Answers[idx].saveTypeEnum = obj.saveTypeEnum
|
||||||
|
|
||||||
for (const i in obj.anwsers) {
|
for (const i in obj.anwsers) {
|
||||||
|
@ -267,7 +289,8 @@ export default {
|
||||||
if (item.Type === 'table' && item.TableQuestions && item.TableQuestions.Answers.length > 0) {
|
if (item.Type === 'table' && item.TableQuestions && item.TableQuestions.Answers.length > 0) {
|
||||||
item.TableQuestions.Answers.forEach(answerObj => {
|
item.TableQuestions.Answers.forEach(answerObj => {
|
||||||
if (answerObj.RowId) {
|
if (answerObj.RowId) {
|
||||||
this.$set(answerObj, 'saveTypeEnum', 2)
|
var diffVal = this.getQuestionAnswer(item.TableQuestions.Questions, 1003, answerObj)
|
||||||
|
this.$set(answerObj, 'saveTypeEnum', isNaN(parseFloat(diffVal)) ? 1 : 2)
|
||||||
} else {
|
} else {
|
||||||
this.$set(answerObj, 'saveTypeEnum', 0)
|
this.$set(answerObj, 'saveTypeEnum', 0)
|
||||||
}
|
}
|
||||||
|
@ -493,6 +516,8 @@ export default {
|
||||||
},
|
},
|
||||||
getECRFQuestions(obj) {
|
getECRFQuestions(obj) {
|
||||||
this.$refs['ecrf'].getQuestions(obj.visitTaskId)
|
this.$refs['ecrf'].getQuestions(obj.visitTaskId)
|
||||||
|
this.$refs['ecrf2'].getQuestions(obj.visitTaskId)
|
||||||
|
this.$refs['ecrf3'].getQuestions(obj.visitTaskId)
|
||||||
},
|
},
|
||||||
async resetMeasuredData() {
|
async resetMeasuredData() {
|
||||||
const confirm = await this.$confirm(
|
const confirm = await this.$confirm(
|
||||||
|
@ -517,6 +542,8 @@ export default {
|
||||||
const triald = this.$router.currentRoute.query.trialId
|
const triald = this.$router.currentRoute.query.trialId
|
||||||
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: triald, visitTaskId: this.visitTaskId })
|
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: triald, visitTaskId: this.visitTaskId })
|
||||||
this.$refs['ecrf'].getQuestions(this.visitTaskId, true)
|
this.$refs['ecrf'].getQuestions(this.visitTaskId, true)
|
||||||
|
this.$refs['ecrf2'].getQuestions(this.visitTaskId, true)
|
||||||
|
this.$refs['ecrf3'].getQuestions(this.visitTaskId, true)
|
||||||
DicomEvent.$emit('getReportInfo', true)
|
DicomEvent.$emit('getReportInfo', true)
|
||||||
}
|
}
|
||||||
loading.close()
|
loading.close()
|
||||||
|
|
|
@ -856,6 +856,7 @@ export default {
|
||||||
.ecrf-wrapper{
|
.ecrf-wrapper{
|
||||||
/deep/ .el-form-item__label{
|
/deep/ .el-form-item__label{
|
||||||
color: #c3c3c3;
|
color: #c3c3c3;
|
||||||
|
text-align: left;
|
||||||
}
|
}
|
||||||
/deep/ .el-input__inner{
|
/deep/ .el-input__inner{
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
|
@ -279,7 +279,14 @@ export default {
|
||||||
store.dispatch('reading/setImageloadedInfo', item)
|
store.dispatch('reading/setImageloadedInfo', item)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
var i = res.findIndex(s => s.isCurrentTask)
|
var i = -1
|
||||||
|
var isReadingTaskViewInOrder = parseInt(this.$router.currentRoute.query.isReadingTaskViewInOrder)
|
||||||
|
if (isReadingTaskViewInOrder === 2) {
|
||||||
|
// 受试者内随机
|
||||||
|
i = res.length === 2 ? 1 : -1
|
||||||
|
} else {
|
||||||
|
i = res.findIndex(s => s.isCurrentTask)
|
||||||
|
}
|
||||||
if (i > -1) {
|
if (i > -1) {
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||||
if (idx > -1) {
|
if (idx > -1) {
|
||||||
|
@ -356,7 +363,22 @@ export default {
|
||||||
var isReadingTaskViewInOrder = JSON.parse(this.$router.currentRoute.query.isReadingTaskViewInOrder)
|
var isReadingTaskViewInOrder = JSON.parse(this.$router.currentRoute.query.isReadingTaskViewInOrder)
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||||
this.studyList = this.visitTaskList[idx].StudyList
|
this.studyList = this.visitTaskList[idx].StudyList
|
||||||
if (this.visitTaskList[idx].IsBaseLineTask || isReadingTaskViewInOrder !== 1) {
|
if (isReadingTaskViewInOrder === 2) {
|
||||||
|
// 受试者内随机
|
||||||
|
const studyList = this.visitTaskList[idx].StudyList.filter(i => i.IsDicom)
|
||||||
|
const seriesArr = studyList.map(s => s.SeriesList).flat()
|
||||||
|
if (seriesArr.length === 1) {
|
||||||
|
seriesList.push(seriesArr[0], seriesArr[0])
|
||||||
|
this.studyIndex = seriesArr[0].studyIndex
|
||||||
|
this.seriesIndex = seriesArr[0].seriesIndex
|
||||||
|
this.activeNames = [`${seriesArr[0].studyId}`]
|
||||||
|
} else if (seriesArr.length > 1) {
|
||||||
|
seriesList.push(seriesArr[0], seriesArr[1])
|
||||||
|
this.studyIndex = seriesArr[1].studyIndex
|
||||||
|
this.seriesIndex = seriesArr[1].seriesIndex
|
||||||
|
this.activeNames = [`${seriesArr[1].studyId}`]
|
||||||
|
}
|
||||||
|
} else if (this.visitTaskList[idx].IsBaseLineTask || isReadingTaskViewInOrder === 0){
|
||||||
// 基线
|
// 基线
|
||||||
const obj = this.getFirstMarkedSeries(this.visitTaskList[idx].MeasureData, [...this.visitTaskList[idx].StudyList])
|
const obj = this.getFirstMarkedSeries(this.visitTaskList[idx].MeasureData, [...this.visitTaskList[idx].StudyList])
|
||||||
if (Object.keys(obj).length !== 0) {
|
if (Object.keys(obj).length !== 0) {
|
||||||
|
|
|
@ -124,7 +124,7 @@
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-if="question.ValueType === 0"
|
v-if="question.ValueType === 0"
|
||||||
v-model="questionForm[question.Id]"
|
v-model="questionForm[question.Id]"
|
||||||
precision="0"
|
precision="0"
|
||||||
:disabled="readingTaskState >= 2"
|
:disabled="readingTaskState >= 2"
|
||||||
/>
|
/>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
|
@ -132,15 +132,14 @@
|
||||||
v-model="questionForm[question.Id]"
|
v-model="questionForm[question.Id]"
|
||||||
:disabled="readingTaskState >= 2"
|
:disabled="readingTaskState >= 2"
|
||||||
/>
|
/>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-else-if="question.ValueType === 1 || question.ValueType === 2"
|
v-else-if="question.ValueType === 1 || question.ValueType === 2"
|
||||||
v-model="questionForm[question.Id]"
|
v-model="questionForm[question.Id]"
|
||||||
:precision="digitPlaces"
|
:precision="digitPlaces"
|
||||||
:disabled="readingTaskState >= 2"
|
:disabled="readingTaskState >= 2"
|
||||||
>
|
/>
|
||||||
</el-input-number>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 上传图像 -->
|
<!-- 上传图像 -->
|
||||||
<el-upload
|
<el-upload
|
||||||
v-if="question.Type==='upload'"
|
v-if="question.Type==='upload'"
|
||||||
|
|
|
@ -20,17 +20,17 @@
|
||||||
<!-- 跳过 -->
|
<!-- 跳过 -->
|
||||||
{{ $t('trials:readingReport:button:skip') }}
|
{{ $t('trials:readingReport:button:skip') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="readingTaskState<2" type="primary" size="small" @click="getReportInfo">{{$t('trials:readingReport:button:refresh')}}</el-button>
|
<el-button v-if="readingTaskState<2" type="primary" size="small" @click="getReportInfo">{{ $t('trials:readingReport:button:refresh') }}</el-button>
|
||||||
<el-button v-if="readingTaskState<2" type="primary" size="small" @click="handleSave(true)">{{$t('common:button:save')}}</el-button>
|
<el-button v-if="readingTaskState<2" type="primary" size="small" @click="handleSave(true)">{{ $t('common:button:save') }}</el-button>
|
||||||
<el-button v-if="readingTaskState<2" type="primary" size="small" @click="handleConfirm">{{$t('common:button:submit')}}</el-button>
|
<el-button v-if="readingTaskState<2" type="primary" size="small" @click="handleConfirm">{{ $t('common:button:submit') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="flex: 1">
|
<div style="flex: 1">
|
||||||
<el-table
|
<el-table
|
||||||
|
v-if="taskQuestions.length > 0"
|
||||||
ref="reportList"
|
ref="reportList"
|
||||||
v-adaptive="{bottomOffset:0}"
|
v-adaptive="{bottomOffset:0}"
|
||||||
:data="taskQuestions"
|
:data="taskQuestions"
|
||||||
v-if="taskQuestions.length > 0"
|
|
||||||
row-key="Id"
|
row-key="Id"
|
||||||
border
|
border
|
||||||
default-expand-all
|
default-expand-all
|
||||||
|
@ -69,30 +69,29 @@
|
||||||
<div>
|
<div>
|
||||||
{{ task.BlindName }}
|
{{ task.BlindName }}
|
||||||
<el-button type="text" size="small" @click="previewDicoms(task)">
|
<el-button type="text" size="small" @click="previewDicoms(task)">
|
||||||
<span class="el-icon-view"></span>
|
<span class="el-icon-view" />
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div v-if="task.LatestScanDate">-->
|
<!-- <div v-if="task.LatestScanDate">-->
|
||||||
<!-- {{ task.LatestScanDate.split(' ')[0] }}-->
|
<!-- {{ task.LatestScanDate.split(' ')[0] }}-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
<!-- {{ `(影像点击跳转)` }} -->
|
<!-- {{ `(影像点击跳转)` }} -->
|
||||||
<!-- {{ $t('trials:readingReport:button:jump') }}-->
|
<!-- {{ $t('trials:readingReport:button:jump') }}-->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<template v-if="readingTaskState<2 && task.VisitTaskId === visitTaskId && (scope.row.Type==='input' || scope.row.Type==='number' || scope.row.Type==='select' || scope.row.Type==='textarea' || scope.row.Type==='radio')">
|
<template v-if="readingTaskState<2 && task.VisitTaskId === visitTaskId && (scope.row.Type==='input' || scope.row.Type==='number' || scope.row.Type==='select' || scope.row.Type==='textarea' || scope.row.Type==='radio')">
|
||||||
<template>
|
<template>
|
||||||
<!-- 输入框 -->
|
<!-- 输入框 -->
|
||||||
<div>
|
<div>
|
||||||
<template v-if="!((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)">
|
<template v-if="!((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)" />
|
||||||
</template>
|
|
||||||
<el-input
|
<el-input
|
||||||
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type==='input' || scope.row.Type==='textarea') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type==='input' || scope.row.Type==='textarea') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||||
v-model="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
v-model="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
||||||
size="mini"
|
size="mini"
|
||||||
/>
|
/>
|
||||||
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type==='input' || scope.row.Type==='textarea')">
|
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type==='input' || scope.row.Type==='textarea')">
|
||||||
{{questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}}
|
{{ questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId] }}
|
||||||
</span>
|
</span>
|
||||||
<el-input
|
<el-input
|
||||||
v-else-if="(scope.row.Type==='input' || scope.row.Type==='textarea') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
v-else-if="(scope.row.Type==='input' || scope.row.Type==='textarea') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||||
|
@ -100,10 +99,10 @@
|
||||||
size="mini"
|
size="mini"
|
||||||
/>
|
/>
|
||||||
<span v-else-if="scope.row.Type==='input' || scope.row.Type==='textarea'">
|
<span v-else-if="scope.row.Type==='input' || scope.row.Type==='textarea'">
|
||||||
{{questionForm[scope.row.QuestionId]}}
|
{{ questionForm[scope.row.QuestionId] }}
|
||||||
</span>
|
</span>
|
||||||
<el-select
|
<el-select
|
||||||
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type==='select' || scope.row.Type==='radio') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
v-else-if="questionForm[scope.row.QuestionId] instanceof Array && (scope.row.Type==='select' || scope.row.Type==='radio') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||||
v-model="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
v-model="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
||||||
size="mini"
|
size="mini"
|
||||||
clearable
|
clearable
|
||||||
|
@ -118,7 +117,7 @@
|
||||||
</template>
|
</template>
|
||||||
</el-select>
|
</el-select>
|
||||||
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='select'">
|
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='select'">
|
||||||
{{questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}}
|
{{ questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId] }}
|
||||||
</span>
|
</span>
|
||||||
<el-select
|
<el-select
|
||||||
v-else-if="(scope.row.Type==='select' || scope.row.Type==='radio') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
v-else-if="(scope.row.Type==='select' || scope.row.Type==='radio') && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||||
|
@ -136,18 +135,18 @@
|
||||||
</template>
|
</template>
|
||||||
</el-select>
|
</el-select>
|
||||||
<span v-else-if="scope.row.Type==='select' || scope.row.Type==='radio'">
|
<span v-else-if="scope.row.Type==='select' || scope.row.Type==='radio'">
|
||||||
{{questionForm[scope.row.QuestionId]}}
|
{{ questionForm[scope.row.QuestionId] }}
|
||||||
</span>
|
</span>
|
||||||
<el-input
|
<el-input
|
||||||
v-else-if="scope.row.DataSource !== 1 && questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='number' && (scope.row.xfIndex || scope.row.xfIndex === 0) && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
v-else-if="scope.row.DataSource !== 1 && questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='number' && (scope.row.xfIndex || scope.row.xfIndex === 0) && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||||
v-model="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
v-model="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
||||||
:disabled="scope.row.DataSource === 1"
|
:disabled="scope.row.DataSource === 1"
|
||||||
@blur="limitBlur(questionForm[scope.row.QuestionId][scope.row.xfIndex], scope.row.TableQuestionId, scope.row.ValueType)"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
|
@blur="limitBlur(questionForm[scope.row.QuestionId][scope.row.xfIndex], scope.row.TableQuestionId, scope.row.ValueType)"
|
||||||
@focus="() => {questionId = scope.row.QuestionId}"
|
@focus="() => {questionId = scope.row.QuestionId}"
|
||||||
>
|
>
|
||||||
<template slot="append" v-if="scope.row.Unit !== 0">{{scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit}}</template>
|
<template v-if="scope.row.Unit !== 0" slot="append">{{ scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit }}</template>
|
||||||
<template slot="append" v-else-if="scope.row.ValueType === 2">%</template>
|
<template v-else-if="scope.row.ValueType === 2" slot="append">%</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='number' && (scope.row.xfIndex || scope.row.xfIndex === 0)">
|
<span v-else-if="questionForm[scope.row.QuestionId] instanceof Array && scope.row.Type==='number' && (scope.row.xfIndex || scope.row.xfIndex === 0)">
|
||||||
<template v-if="(scope.row.ValueType === 0 || scope.row.ValueType === 1) && scope.row.Unit">
|
<template v-if="(scope.row.ValueType === 0 || scope.row.ValueType === 1) && scope.row.Unit">
|
||||||
|
@ -164,12 +163,12 @@
|
||||||
v-else-if="scope.row.DataSource !== 1 && scope.row.Type==='number' && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
v-else-if="scope.row.DataSource !== 1 && scope.row.Type==='number' && !scope.row.IsShowInDicom && ((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)"
|
||||||
v-model="questionForm[scope.row.QuestionId]"
|
v-model="questionForm[scope.row.QuestionId]"
|
||||||
:disabled="scope.row.DataSource === 1"
|
:disabled="scope.row.DataSource === 1"
|
||||||
@blur="limitBlur(questionForm, scope.row.QuestionId, scope.row.ValueType)"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
|
@blur="limitBlur(questionForm, scope.row.QuestionId, scope.row.ValueType)"
|
||||||
@focus="() => {questionId = scope.row.QuestionId}"
|
@focus="() => {questionId = scope.row.QuestionId}"
|
||||||
>
|
>
|
||||||
<template slot="append" v-if="scope.row.Unit !== 0">{{scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit}}</template>
|
<template v-if="scope.row.Unit !== 0" slot="append">{{ scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit }}</template>
|
||||||
<template slot="append" v-else-if="scope.row.ValueType === 2">%</template>
|
<template v-else-if="scope.row.ValueType === 2" slot="append">%</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
<span v-else-if="scope.row.Type==='number'">
|
<span v-else-if="scope.row.Type==='number'">
|
||||||
<template v-if="(scope.row.ValueType === 0 || scope.row.ValueType === 1) && scope.row.Unit">
|
<template v-if="(scope.row.ValueType === 0 || scope.row.ValueType === 1) && scope.row.Unit">
|
||||||
|
@ -179,49 +178,49 @@
|
||||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ? questionForm[scope.row.QuestionId]:`${questionForm[scope.row.QuestionId]} %` }}
|
{{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ? questionForm[scope.row.QuestionId]:`${questionForm[scope.row.QuestionId]} %` }}
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
{{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ? questionForm[scope.row.QuestionId] : questionForm[scope.row.QuestionId]}}
|
{{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ? questionForm[scope.row.QuestionId] : questionForm[scope.row.QuestionId] }}
|
||||||
</template>
|
</template>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="task.VisitTaskId === visitTaskId && scope.row.Type === 'upload'">
|
<template v-else-if="task.VisitTaskId === visitTaskId && scope.row.Type === 'upload'">
|
||||||
<UploadFile
|
<UploadFile
|
||||||
v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
|
v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
|
||||||
:visitTaskId="visitTaskId"
|
:visit-task-id="visitTaskId"
|
||||||
:question="scope.row"
|
:question="scope.row"
|
||||||
:task="task"
|
:task="task"
|
||||||
:readingTaskState="readingTaskState"
|
:reading-task-state="readingTaskState"
|
||||||
:initUrl="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
:init-url="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
|
||||||
@setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url, scope.row.RowId)}"
|
@setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url, scope.row.RowId)}"
|
||||||
></UploadFile>
|
/>
|
||||||
<UploadFile
|
<UploadFile
|
||||||
v-else-if="scope.row.Type==='upload'"
|
v-else-if="scope.row.Type==='upload'"
|
||||||
:visitTaskId="visitTaskId"
|
:visit-task-id="visitTaskId"
|
||||||
:question="scope.row"
|
:question="scope.row"
|
||||||
:task="task"
|
:task="task"
|
||||||
:readingTaskState="readingTaskState"
|
:reading-task-state="readingTaskState"
|
||||||
:initUrl="questionForm[scope.row.QuestionId]"
|
:init-url="questionForm[scope.row.QuestionId]"
|
||||||
@setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url)}"
|
@setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url)}"
|
||||||
></UploadFile>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="scope.row.Type === 'upload'">
|
<template v-else-if="scope.row.Type === 'upload'">
|
||||||
<UploadFile
|
<UploadFile
|
||||||
v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
|
v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
|
||||||
:visitTaskId="visitTaskId"
|
:visit-task-id="visitTaskId"
|
||||||
:question="scope.row"
|
:question="scope.row"
|
||||||
:task="task"
|
:task="task"
|
||||||
:readingTaskState="readingTaskState"
|
:reading-task-state="readingTaskState"
|
||||||
:initUrl="scope.row.Answers[task.VisitTaskId]"
|
:init-url="scope.row.Answers[task.VisitTaskId]"
|
||||||
></UploadFile>
|
/>
|
||||||
<UploadFile
|
<UploadFile
|
||||||
v-else-if="scope.row.Type==='upload'"
|
v-else-if="scope.row.Type==='upload'"
|
||||||
:visitTaskId="visitTaskId"
|
:visit-task-id="visitTaskId"
|
||||||
:question="scope.row"
|
:question="scope.row"
|
||||||
:task="task"
|
:task="task"
|
||||||
:readingTaskState="readingTaskState"
|
:reading-task-state="readingTaskState"
|
||||||
:initUrl="scope.row.Answers[task.VisitTaskId]"
|
:init-url="scope.row.Answers[task.VisitTaskId]"
|
||||||
></UploadFile>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="scope.row.QuestionType=== 22">
|
<template v-else-if="scope.row.QuestionType=== 22">
|
||||||
{{ scope.row.Answers[task.VisitTaskId] === '-1' ? '未知' : scope.row.Answers[task.VisitTaskId] }}
|
{{ scope.row.Answers[task.VisitTaskId] === '-1' ? '未知' : scope.row.Answers[task.VisitTaskId] }}
|
||||||
|
@ -232,8 +231,7 @@
|
||||||
<template v-else-if="CriterionType === 10">
|
<template v-else-if="CriterionType === 10">
|
||||||
{{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]}` }}
|
{{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]}` }}
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="!((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)">
|
<template v-else-if="!((task.IsBaseLine && scope.row.LimitEdit === 1) || (!task.IsBaseLine && scope.row.LimitEdit === 2) || scope.row.LimitEdit === 0)" />
|
||||||
</template>
|
|
||||||
<template v-else-if="(scope.row.ValueType === 0 || scope.row.ValueType === 1) && scope.row.Unit">
|
<template v-else-if="(scope.row.ValueType === 0 || scope.row.ValueType === 1) && scope.row.Unit">
|
||||||
{{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]} ${scope.row.Unit !== 4 ? $fd('ValueUnit',scope.row.Unit) : scope.row.CustomUnit}` }}
|
{{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]} ${scope.row.Unit !== 4 ? $fd('ValueUnit',scope.row.Unit) : scope.row.CustomUnit}` }}
|
||||||
</template>
|
</template>
|
||||||
|
@ -266,7 +264,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { changeCalculationAnswer, getReadingReportEvaluation, changeDicomReadingQuestionAnswer, submitDicomVisitTask, verifyVisitTaskQuestions, getQuestionCalculateRelation } from '@/api/trials'
|
import { changeCalculationAnswer, getReadingReportEvaluation, submitDicomVisitTask, verifyVisitTaskQuestions, getQuestionCalculateRelation } from '@/api/trials'
|
||||||
import { setSkipReadingCache } from '@/api/reading'
|
import { setSkipReadingCache } from '@/api/reading'
|
||||||
import DicomEvent from '@/views/trials/trials-panel/reading/dicoms/components/DicomEvent'
|
import DicomEvent from '@/views/trials/trials-panel/reading/dicoms/components/DicomEvent'
|
||||||
import UploadFile from './UploadFile'
|
import UploadFile from './UploadFile'
|
||||||
|
@ -366,15 +364,15 @@ export default {
|
||||||
DicomEvent.$off('getReportInfo')
|
DicomEvent.$off('getReportInfo')
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
limitBlur(questionForm,id,valueType) {
|
limitBlur(questionForm, id, valueType) {
|
||||||
let value = questionForm[id]
|
const value = questionForm[id]
|
||||||
if (valueType === 0) {
|
if (valueType === 0) {
|
||||||
this.$set(questionForm, id, parseInt(value))
|
this.$set(questionForm, id, parseInt(value))
|
||||||
} else if (valueType === 3) {
|
} else if (valueType === 3) {
|
||||||
this.$set(questionForm, id, parseFloat(value))
|
this.$set(questionForm, id, parseFloat(value))
|
||||||
}else {
|
} else {
|
||||||
this.$set(questionForm, id, parseFloat(value).toFixed(this.digitPlaces))
|
this.$set(questionForm, id, parseFloat(value).toFixed(this.digitPlaces))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setImageUrl(qid, index, tqid, url, RowId) {
|
setImageUrl(qid, index, tqid, url, RowId) {
|
||||||
if (index || index === 0) {
|
if (index || index === 0) {
|
||||||
|
@ -388,11 +386,10 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getTagterAnswers(list, questionId) {
|
getTagterAnswers(list, questionId) {
|
||||||
let Answers
|
|
||||||
list.forEach(v => {
|
list.forEach(v => {
|
||||||
if (v.QuestionId === questionId) {
|
if (v.QuestionId === questionId) {
|
||||||
return Object.assign({}, v.Answers)
|
return Object.assign({}, v.Answers)
|
||||||
} else if (v.Childrens.length > 0){
|
} else if (v.Childrens.length > 0) {
|
||||||
return this.getTagterAnswers(v.Childrens, questionId)
|
return this.getTagterAnswers(v.Childrens, questionId)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -456,12 +453,12 @@ export default {
|
||||||
}
|
}
|
||||||
if (v.Type === 'number') {
|
if (v.Type === 'number') {
|
||||||
let val = null
|
let val = null
|
||||||
if (v.ValueType === 0){
|
if (v.ValueType === 0) {
|
||||||
val = parseInt(v.Answers[this.visitTaskId])
|
val = parseInt(v.Answers[this.visitTaskId])
|
||||||
} else if (v.ValueType === 3) {
|
} else if (v.ValueType === 3) {
|
||||||
val = v.Answers[this.visitTaskId]
|
val = v.Answers[this.visitTaskId]
|
||||||
} else {
|
} else {
|
||||||
val = v.Answers[this.visitTaskId] === '' ? parseFloat(0).toFixed(this.digitPlaces) : v.Answers[this.visitTaskId]
|
val = v.Answers[this.visitTaskId] === '' ? parseFloat(0).toFixed(this.digitPlaces) : v.Answers[this.visitTaskId]
|
||||||
}
|
}
|
||||||
this.$set(this.questionForm, v.QuestionId, val)
|
this.$set(this.questionForm, v.QuestionId, val)
|
||||||
}
|
}
|
||||||
|
@ -482,12 +479,12 @@ export default {
|
||||||
}
|
}
|
||||||
if (i.Type === 'number') {
|
if (i.Type === 'number') {
|
||||||
let val = null
|
let val = null
|
||||||
if (i.ValueType === 0){
|
if (i.ValueType === 0) {
|
||||||
val = parseInt(i.Answers[this.visitTaskId])
|
val = parseInt(i.Answers[this.visitTaskId])
|
||||||
} else if (i.ValueType === 3) {
|
} else if (i.ValueType === 3) {
|
||||||
val = i.Answers[this.visitTaskId]
|
val = i.Answers[this.visitTaskId]
|
||||||
} else {
|
} else {
|
||||||
val = i.Answers[this.visitTaskId] === '' ? parseFloat(0).toFixed(this.digitPlaces) : i.Answers[this.visitTaskId]
|
val = i.Answers[this.visitTaskId] === '' ? parseFloat(0).toFixed(this.digitPlaces) : i.Answers[this.visitTaskId]
|
||||||
}
|
}
|
||||||
this.$set(this.questionForm, i.QuestionId, val)
|
this.$set(this.questionForm, i.QuestionId, val)
|
||||||
}
|
}
|
||||||
|
@ -523,7 +520,7 @@ export default {
|
||||||
num *= parseFloat(q[o.TableQuestionId])
|
num *= parseFloat(q[o.TableQuestionId])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
break;
|
break
|
||||||
case 6:
|
case 6:
|
||||||
this.questionForm[o.QuestionId].forEach((q, qi) => {
|
this.questionForm[o.QuestionId].forEach((q, qi) => {
|
||||||
if (qi === 0) {
|
if (qi === 0) {
|
||||||
|
@ -532,7 +529,7 @@ export default {
|
||||||
num += isNaN(parseFloat(q[o.TableQuestionId])) ? null : parseFloat(q[o.TableQuestionId])
|
num += isNaN(parseFloat(q[o.TableQuestionId])) ? null : parseFloat(q[o.TableQuestionId])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
break;
|
break
|
||||||
case 7:
|
case 7:
|
||||||
this.questionForm[o.QuestionId].forEach((q, qi) => {
|
this.questionForm[o.QuestionId].forEach((q, qi) => {
|
||||||
if (qi === 0) {
|
if (qi === 0) {
|
||||||
|
@ -542,21 +539,22 @@ export default {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
num = this.questionForm[o.QuestionId].length === 0 ? 0 : num / this.questionForm[o.QuestionId].length
|
num = this.questionForm[o.QuestionId].length === 0 ? 0 : num / this.questionForm[o.QuestionId].length
|
||||||
break;
|
break
|
||||||
case 8:
|
case 8:
|
||||||
var arr = []
|
var arr = []
|
||||||
this.questionForm[o.QuestionId].forEach(q => {
|
this.questionForm[o.QuestionId].forEach(q => {
|
||||||
arr.push(q[o.TableQuestionId])
|
arr.push(q[o.TableQuestionId])
|
||||||
})
|
})
|
||||||
num = arr.length === 0 ? 0 : Math.max(...arr)
|
num = arr.length === 0 ? 0 : Math.max(...arr)
|
||||||
break;
|
break
|
||||||
case 9:
|
case 9:
|
||||||
|
// eslint-disable-next-line no-redeclare
|
||||||
var arr = []
|
var arr = []
|
||||||
this.questionForm[o.QuestionId].forEach(q => {
|
this.questionForm[o.QuestionId].forEach(q => {
|
||||||
arr.push(q[o.TableQuestionId])
|
arr.push(q[o.TableQuestionId])
|
||||||
})
|
})
|
||||||
num = arr.length === 0 ? 0 : Math.min(...arr)
|
num = arr.length === 0 ? 0 : Math.min(...arr)
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
num = parseFloat(this.questionForm[o.TableQuestionId])
|
num = parseFloat(this.questionForm[o.TableQuestionId])
|
||||||
|
@ -565,17 +563,17 @@ export default {
|
||||||
switch (rules.CustomCalculateMark) {
|
switch (rules.CustomCalculateMark) {
|
||||||
case 1:
|
case 1:
|
||||||
num += parseFloat(this.questionForm[o.TableQuestionId])
|
num += parseFloat(this.questionForm[o.TableQuestionId])
|
||||||
break;
|
break
|
||||||
case 2:
|
case 2:
|
||||||
num -= parseFloat(this.questionForm[o.TableQuestionId])
|
num -= parseFloat(this.questionForm[o.TableQuestionId])
|
||||||
break;
|
break
|
||||||
case 3:
|
case 3:
|
||||||
num *= parseFloat(this.questionForm[o.TableQuestionId])
|
num *= parseFloat(this.questionForm[o.TableQuestionId])
|
||||||
break;
|
break
|
||||||
case 4:
|
case 4:
|
||||||
num /= parseFloat(this.questionForm[o.TableQuestionId])
|
num /= parseFloat(this.questionForm[o.TableQuestionId])
|
||||||
// num /= parseFloat(this.questionForm[o.TableQuestionId])
|
// num /= parseFloat(this.questionForm[o.TableQuestionId])
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -615,12 +613,12 @@ export default {
|
||||||
setScrollTop(a) {
|
setScrollTop(a) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
if(this.$refs.reportList){
|
if (this.$refs.reportList) {
|
||||||
this.$refs.reportList.bodyWrapper.scrollTop = this.$refs.reportList.bodyWrapper.scrollHeight
|
this.$refs.reportList.bodyWrapper.scrollTop = this.$refs.reportList.bodyWrapper.scrollHeight
|
||||||
this.$refs.reportList.bodyWrapper.scrollTop = this.$refs.reportList.bodyWrapper.scrollHeight
|
this.$refs.reportList.bodyWrapper.scrollTop = this.$refs.reportList.bodyWrapper.scrollHeight
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},50)
|
}, 50)
|
||||||
},
|
},
|
||||||
getQuestions(questions, isNTFilterLength, lesionType, isLymphNodes) {
|
getQuestions(questions, isNTFilterLength, lesionType, isLymphNodes) {
|
||||||
const arr = []
|
const arr = []
|
||||||
|
@ -685,12 +683,12 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
if (item.Type === 'number') {
|
if (item.Type === 'number') {
|
||||||
let val = null
|
let val = null
|
||||||
if (item.ValueType === 0){
|
if (item.ValueType === 0) {
|
||||||
val = parseInt(i.Answer)
|
val = parseInt(i.Answer)
|
||||||
} else if (item.ValueType === 3) {
|
} else if (item.ValueType === 3) {
|
||||||
val = i.Answer
|
val = i.Answer
|
||||||
}else {
|
} else {
|
||||||
val = isNaN(parseFloat(i.Answer)) ? i.Answer : parseFloat(i.Answer).toFixed(digitPlaces)
|
val = isNaN(parseFloat(i.Answer)) ? i.Answer : parseFloat(i.Answer).toFixed(digitPlaces)
|
||||||
}
|
}
|
||||||
this.$set(obj.Answers, i.VisitTaskId, val)
|
this.$set(obj.Answers, i.VisitTaskId, val)
|
||||||
} else {
|
} else {
|
||||||
|
@ -835,7 +833,7 @@ export default {
|
||||||
var trialId = this.trialId
|
var trialId = this.trialId
|
||||||
var isReadingTaskViewInOrder = this.isReadingTaskViewInOrder
|
var isReadingTaskViewInOrder = this.isReadingTaskViewInOrder
|
||||||
var criterionType = this.criterionType
|
var criterionType = this.criterionType
|
||||||
var readingTool = this.readingTool
|
var readingTool = this.readingTool
|
||||||
var trialReadingCriterionId = this.$router.currentRoute.query.TrialReadingCriterionId
|
var trialReadingCriterionId = this.$router.currentRoute.query.TrialReadingCriterionId
|
||||||
var path = `/noneDicomReading?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${trialId}&subjectCode=${subjectCode}&subjectId=${subjectId}&visitTaskId=${task.VisitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}`
|
var path = `/noneDicomReading?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${trialId}&subjectCode=${subjectCode}&subjectId=${subjectId}&visitTaskId=${task.VisitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}`
|
||||||
const routeData = this.$router.resolve({ path })
|
const routeData = this.$router.resolve({ path })
|
||||||
|
@ -855,7 +853,7 @@ export default {
|
||||||
questionId: k,
|
questionId: k,
|
||||||
answer: v[o],
|
answer: v[o],
|
||||||
tableQuestionId: o,
|
tableQuestionId: o,
|
||||||
rowId: v[o+'_RowId']
|
rowId: v[o + '_RowId']
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue