当CRF表绑定标记以后,在阅片页面,当书包移动到CRF问题的答案上时,可以付款显示绑定的标记名称
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
3f6604eebf
commit
347fb3cde0
|
@ -73,8 +73,7 @@
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="(question.ShowQuestion === 1 && question.ParentTriggerValueList.includes(questionForm[question.ParentId])) || question.ShowQuestion === 0"
|
v-if="(question.ShowQuestion === 1 && question.ParentTriggerValueList.includes(questionForm[question.ParentId])) || question.ShowQuestion === 0"
|
||||||
:title="question.Remark"
|
:title="question.Remark" :label="`${question.QuestionName}`" :prop="question.Id" :rules="[
|
||||||
:label="`${question.QuestionName}`" :prop="question.Id" :rules="[
|
|
||||||
{
|
{
|
||||||
required: (question.IsRequired === 0 || (question.IsRequired === 1 && question.RelevanceId && (question.RelevanceValueList.includes(isNaN(parseFloat(questionForm[question.RelevanceId])) ? questionForm[question.RelevanceId] : questionForm[question.RelevanceId].toString())))) && question.Type !== 'group' && question.Type !== 'summary',
|
required: (question.IsRequired === 0 || (question.IsRequired === 1 && question.RelevanceId && (question.RelevanceValueList.includes(isNaN(parseFloat(questionForm[question.RelevanceId])) ? questionForm[question.RelevanceId] : questionForm[question.RelevanceId].toString())))) && question.Type !== 'group' && question.Type !== 'summary',
|
||||||
message: $t('common:ruleMessage:specify'), trigger: ['blur', 'change']
|
message: $t('common:ruleMessage:specify'), trigger: ['blur', 'change']
|
||||||
|
@ -162,6 +161,7 @@
|
||||||
<el-input type="number" @change="(val) => { formItemNumberChange(val, question) }"
|
<el-input type="number" @change="(val) => { formItemNumberChange(val, question) }"
|
||||||
@blur="questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
|
@blur="questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
|
||||||
v-model="questionForm[question.Id]"
|
v-model="questionForm[question.Id]"
|
||||||
|
:title="questionsMarkStatus[question.Id] ? questionsMarkStatus[question.Id].OrderMarkName : ''"
|
||||||
:disabled="(questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1"
|
:disabled="(questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1"
|
||||||
style="width: 150px;">
|
style="width: 150px;">
|
||||||
<template v-if="question.Unit !== 0" slot="append">
|
<template v-if="question.Unit !== 0" slot="append">
|
||||||
|
@ -215,8 +215,9 @@
|
||||||
@blur="handleBlur(questionForm[question.Id], questionForm, question.Id)" v-model="questionForm[question.Id]"
|
@blur="handleBlur(questionForm[question.Id], questionForm, question.Id)" v-model="questionForm[question.Id]"
|
||||||
:disabled="readingTaskState === 2">
|
:disabled="readingTaskState === 2">
|
||||||
<!-- <template slot="append">1</template> -->
|
<!-- <template slot="append">1</template> -->
|
||||||
<template slot="append" v-if="question.Unit !== 0">{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) :
|
<template slot="append" v-if="question.Unit !== 0">{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit)
|
||||||
question.CustomUnit}}</template>
|
:
|
||||||
|
question.CustomUnit }}</template>
|
||||||
<template slot="append" v-else-if="question.ValueType === 2">%</template>
|
<template slot="append" v-else-if="question.ValueType === 2">%</template>
|
||||||
|
|
||||||
</el-input>
|
</el-input>
|
||||||
|
@ -225,14 +226,16 @@
|
||||||
@blur="handleBlur(questionForm[question.Id], questionForm, question.Id)"
|
@blur="handleBlur(questionForm[question.Id], questionForm, question.Id)"
|
||||||
:disabled="question.DataSource === 1 || readingTaskState === 2" v-model="questionForm[question.Id]">
|
:disabled="question.DataSource === 1 || readingTaskState === 2" v-model="questionForm[question.Id]">
|
||||||
<!-- <template slot="append">2</template> -->
|
<!-- <template slot="append">2</template> -->
|
||||||
<template slot="append" v-if="question.Unit !== 0">{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) :
|
<template slot="append" v-if="question.Unit !== 0">{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit)
|
||||||
question.CustomUnit}}</template>
|
:
|
||||||
|
question.CustomUnit }}</template>
|
||||||
<template slot="append" v-else-if="question.ValueType === 2">%</template>
|
<template slot="append" v-else-if="question.ValueType === 2">%</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</template>
|
</template>
|
||||||
<!-- 上传图像 -->
|
<!-- 上传图像 -->
|
||||||
<el-upload v-if="question.Type === 'upload'" :disabled="readingTaskState === 2" action :accept="question.FileType"
|
<el-upload v-if="question.Type === 'upload'" :disabled="readingTaskState === 2" action
|
||||||
:limit="question.ImageCount === 0 ? 100 : question.ImageCount" :on-preview="handlePictureCardPreview"
|
:accept="question.FileType" :limit="question.ImageCount === 0 ? 100 : question.ImageCount"
|
||||||
|
:on-preview="handlePictureCardPreview"
|
||||||
:before-upload="(file) => { return handleBeforeUpload(file, question.FileType) }"
|
:before-upload="(file) => { return handleBeforeUpload(file, question.FileType) }"
|
||||||
:http-request="uploadScreenshot" :on-remove="handleRemove" :file-list="fileList"
|
:http-request="uploadScreenshot" :on-remove="handleRemove" :file-list="fileList"
|
||||||
:class="{ disabled: question.ImageCount === 0 ? false : fileList.length >= question.ImageCount }">
|
:class="{ disabled: question.ImageCount === 0 ? false : fileList.length >= question.ImageCount }">
|
||||||
|
|
|
@ -7,40 +7,21 @@
|
||||||
<span style="margin-left:5px;">{{ visitInfo.TaskBlindName }}</span>
|
<span style="margin-left:5px;">{{ visitInfo.TaskBlindName }}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<div v-if="readingTaskState < 2">
|
<div v-if="readingTaskState < 2">
|
||||||
<el-tooltip class="item" effect="dark" :content="$t('trials:dicomReading:message:confirmReset')" placement="bottom">
|
<el-tooltip class="item" effect="dark" :content="$t('trials:dicomReading:message:confirmReset')"
|
||||||
<i
|
placement="bottom">
|
||||||
class="el-icon-refresh-left"
|
<i class="el-icon-refresh-left" @click="resetForm" />
|
||||||
@click="resetForm"
|
|
||||||
/>
|
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-form
|
<el-form v-if="taskInfo && rerender" ref="questions" size="small" :model="questionForm" class="ecrf-form">
|
||||||
v-if="taskInfo && rerender"
|
|
||||||
ref="questions"
|
|
||||||
size="small"
|
|
||||||
:model="questionForm"
|
|
||||||
class="ecrf-form"
|
|
||||||
>
|
|
||||||
<template v-if="rerender">
|
<template v-if="rerender">
|
||||||
<QuestionFormItem
|
<QuestionFormItem v-for="question of questions" :key="question.Id" :visit-task-id="visitTaskId"
|
||||||
v-for="question of questions"
|
:question="question" :question-form="questionForm" :reading-task-state="readingTaskState"
|
||||||
:key="question.Id"
|
:criterion-id="criterionId" :calculation-list="calculationList"
|
||||||
:visit-task-id="visitTaskId"
|
:question-mark-info-list="questionMarkInfoList" :questions-mark-status="questionsMarkStatus"
|
||||||
:question="question"
|
:is-baseline="isBaseLineTask" @resetFormItemData="resetFormItemData" @setFormItemData="setFormItemData"
|
||||||
:question-form="questionForm"
|
@getQuestions="getQuestions" @operateImageMarker="operateImageMarker"
|
||||||
:reading-task-state="readingTaskState"
|
@unBindAnnotationToQuestion="unBindAnnotationToQuestion" />
|
||||||
:criterion-id="criterionId"
|
|
||||||
:calculation-list="calculationList"
|
|
||||||
:question-mark-info-list="questionMarkInfoList"
|
|
||||||
:questions-mark-status="questionsMarkStatus"
|
|
||||||
:is-baseline="isBaseLineTask"
|
|
||||||
@resetFormItemData="resetFormItemData"
|
|
||||||
@setFormItemData="setFormItemData"
|
|
||||||
@getQuestions="getQuestions"
|
|
||||||
@operateImageMarker="operateImageMarker"
|
|
||||||
@unBindAnnotationToQuestion="unBindAnnotationToQuestion"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-form-item v-if="readingTaskState < 2">
|
<el-form-item v-if="readingTaskState < 2">
|
||||||
|
@ -60,16 +41,11 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 签名框 -->
|
<!-- 签名框 -->
|
||||||
<el-dialog
|
<el-dialog v-if="signVisible" :visible.sync="signVisible" :close-on-click-modal="false" width="600px"
|
||||||
v-if="signVisible"
|
custom-class="base-dialog-wrapper">
|
||||||
:visible.sync="signVisible"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
width="600px"
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
>
|
|
||||||
<div slot="title">
|
<div slot="title">
|
||||||
<span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span>
|
<span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span>
|
||||||
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span>
|
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${currentUser})` }}</span>
|
||||||
</div>
|
</div>
|
||||||
<SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" />
|
<SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
@ -178,9 +154,9 @@ export default {
|
||||||
this.questionsMarkStatus = {}
|
this.questionsMarkStatus = {}
|
||||||
this.questionMarkInfoList = res.OtherInfo.QuestionMarkInfoList.map(i => {
|
this.questionMarkInfoList = res.OtherInfo.QuestionMarkInfoList.map(i => {
|
||||||
if (i.RowId) {
|
if (i.RowId) {
|
||||||
this.$set(this.questionsMarkStatus, `${i.RowId}_${i.TableQuestionId}`, {isMarked: i.MeasureData !== '', isSaved: true})
|
this.$set(this.questionsMarkStatus, `${i.RowId}_${i.TableQuestionId}`, { isMarked: i.MeasureData !== '', isSaved: true, OrderMarkName: i.OrderMarkName })
|
||||||
} else if (i.QuestionId) {
|
} else if (i.QuestionId) {
|
||||||
this.$set(this.questionsMarkStatus, i.QuestionId, {isMarked: i.MeasureData !== '', isSaved: true})
|
this.$set(this.questionsMarkStatus, i.QuestionId, { isMarked: i.MeasureData !== '', isSaved: true, OrderMarkName: i.OrderMarkName })
|
||||||
}
|
}
|
||||||
if (typeof i.MeasureData === 'string' && i.MeasureData) {
|
if (typeof i.MeasureData === 'string' && i.MeasureData) {
|
||||||
i.MeasureData = JSON.parse(i.MeasureData)
|
i.MeasureData = JSON.parse(i.MeasureData)
|
||||||
|
@ -206,7 +182,7 @@ export default {
|
||||||
i.TableQuestions.Questions.forEach(o => {
|
i.TableQuestions.Questions.forEach(o => {
|
||||||
if (o.Type === 'number') {
|
if (o.Type === 'number') {
|
||||||
i.TableQuestions.Answers.forEach((ite, index) => {
|
i.TableQuestions.Answers.forEach((ite, index) => {
|
||||||
this.$set(i.TableQuestions.Answers[index], o.Id, isNaN(parseFloat(i.TableQuestions.Answers[index][o.Id])) ? i.TableQuestions.Answers[index][o.Id] : parseFloat(i.TableQuestions.Answers[index][o.Id]).toFixed(this.digitPlaces))
|
this.$set(i.TableQuestions.Answers[index], o.Id, isNaN(parseFloat(i.TableQuestions.Answers[index][o.Id])) ? i.TableQuestions.Answers[index][o.Id] : parseFloat(i.TableQuestions.Answers[index][o.Id]).toFixed(this.digitPlaces))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -241,7 +217,7 @@ export default {
|
||||||
try {
|
try {
|
||||||
var answers = []
|
var answers = []
|
||||||
for (const k in this.questionForm) {
|
for (const k in this.questionForm) {
|
||||||
if (this.questionForm[k] instanceof Array) {} else {
|
if (this.questionForm[k] instanceof Array) { } else {
|
||||||
answers.push({ id: k, answer: this.questionForm[k] })
|
answers.push({ id: k, answer: this.questionForm[k] })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -280,7 +256,7 @@ export default {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
var answers = []
|
var answers = []
|
||||||
for (const k in this.questionForm) {
|
for (const k in this.questionForm) {
|
||||||
if (this.questionForm[k] instanceof Array) {} else {
|
if (this.questionForm[k] instanceof Array) { } else {
|
||||||
answers.push({ readingQuestionTrialId: k, answer: this.questionForm[k] })
|
answers.push({ readingQuestionTrialId: k, answer: this.questionForm[k] })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -353,7 +329,7 @@ export default {
|
||||||
const o = list.find(v => {
|
const o = list.find(v => {
|
||||||
return (
|
return (
|
||||||
parseFloat(obj.val) >= parseFloat(v.gt) &&
|
parseFloat(obj.val) >= parseFloat(v.gt) &&
|
||||||
parseFloat(obj.val) < parseFloat(v.lt)
|
parseFloat(obj.val) < parseFloat(v.lt)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
answer = o ? o.label : null
|
answer = o ? o.label : null
|
||||||
|
@ -367,7 +343,7 @@ export default {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
verifyAnnotationIsBound(annotation) {
|
verifyAnnotationIsBound(annotation) {
|
||||||
const i = this.questionMarkInfoList.findIndex(i => i.MeasureData && i.MeasureData.annotationUID === annotation.annotationUID)
|
const i = this.questionMarkInfoList.findIndex(i => i.MeasureData && i.MeasureData.annotationUID === annotation.annotationUID)
|
||||||
return i > -1
|
return i > -1
|
||||||
|
@ -485,7 +461,7 @@ export default {
|
||||||
// } else {
|
// } else {
|
||||||
// this.$set(this.questionsMarkStatus, `${obj.rowId}_${item.TableQuestionId}`, {isMarked: item.MeasureData ? true : false, isSaved: false})
|
// this.$set(this.questionsMarkStatus, `${obj.rowId}_${item.TableQuestionId}`, {isMarked: item.MeasureData ? true : false, isSaved: false})
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
// } else if (this.operateRowId && this.operateQuestionId) {
|
// } else if (this.operateRowId && this.operateQuestionId) {
|
||||||
|
@ -541,15 +517,15 @@ export default {
|
||||||
}
|
}
|
||||||
const { question, operateStateEnum, rowId, answer } = obj
|
const { question, operateStateEnum, rowId, answer } = obj
|
||||||
const { Id, IsTableQuestion, ImageTool, ImageToolAttribute, ParentQsId, RowId } = question
|
const { Id, IsTableQuestion, ImageTool, ImageToolAttribute, ParentQsId, RowId } = question
|
||||||
|
|
||||||
Object.assign(this, {
|
Object.assign(this, {
|
||||||
operateStateEnum,
|
operateStateEnum,
|
||||||
isTableQuestion: !!IsTableQuestion,
|
isTableQuestion: !!IsTableQuestion,
|
||||||
imageTool: ImageTool,
|
imageTool: ImageTool,
|
||||||
imageToolAttribute: ImageToolAttribute,
|
imageToolAttribute: ImageToolAttribute,
|
||||||
operateQuestionId: Id,
|
operateQuestionId: Id,
|
||||||
operateRowId: RowId,
|
operateRowId: RowId,
|
||||||
operateParentQsId: ParentQsId
|
operateParentQsId: ParentQsId
|
||||||
})
|
})
|
||||||
const stateHandlers = {
|
const stateHandlers = {
|
||||||
[STATE.BIND]: () => this.$emit('setReadingToolPassive'),
|
[STATE.BIND]: () => this.$emit('setReadingToolPassive'),
|
||||||
|
@ -570,8 +546,8 @@ export default {
|
||||||
if (index === -1) return
|
if (index === -1) return
|
||||||
const annotation = this.questionMarkInfoList[index].MeasureData
|
const annotation = this.questionMarkInfoList[index].MeasureData
|
||||||
this.$emit('viewCustomAnnotationSeries', {
|
this.$emit('viewCustomAnnotationSeries', {
|
||||||
visitTaskId: this.visitTaskId,
|
visitTaskId: this.visitTaskId,
|
||||||
annotation
|
annotation
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleRemoveAnnotation(obj) {
|
handleRemoveAnnotation(obj) {
|
||||||
|
@ -583,12 +559,12 @@ export default {
|
||||||
SeriesId: '',
|
SeriesId: '',
|
||||||
InstanceId: ''
|
InstanceId: ''
|
||||||
})
|
})
|
||||||
const key = this.operateRowId
|
const key = this.operateRowId
|
||||||
? `${this.operateRowId}_${obj.question.Id}`
|
? `${this.operateRowId}_${obj.question.Id}`
|
||||||
: obj.question.Id
|
: obj.question.Id
|
||||||
this.$set(this.questionsMarkStatus, key, {
|
this.$set(this.questionsMarkStatus, key, {
|
||||||
isMarked: false,
|
isMarked: false,
|
||||||
isSaved: false
|
isSaved: false,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async handleSaveOuterQuestions(obj) {
|
async handleSaveOuterQuestions(obj) {
|
||||||
|
@ -596,11 +572,11 @@ export default {
|
||||||
try {
|
try {
|
||||||
const answers = [{ id: obj.question.Id, answer: this.questionForm[obj.question.Id] }]
|
const answers = [{ id: obj.question.Id, answer: this.questionForm[obj.question.Id] }]
|
||||||
const markInfo = []
|
const markInfo = []
|
||||||
|
|
||||||
const index = this.questionMarkInfoList.findIndex(
|
const index = this.questionMarkInfoList.findIndex(
|
||||||
item => item.QuestionId === this.operateQuestionId
|
item => item.QuestionId === this.operateQuestionId
|
||||||
)
|
)
|
||||||
|
|
||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
const item = { ...this.questionMarkInfoList[index] }
|
const item = { ...this.questionMarkInfoList[index] }
|
||||||
item.MeasureData = item.MeasureData ? JSON.stringify(item.MeasureData) : ''
|
item.MeasureData = item.MeasureData ? JSON.stringify(item.MeasureData) : ''
|
||||||
|
@ -614,7 +590,8 @@ export default {
|
||||||
})
|
})
|
||||||
this.$set(this.questionsMarkStatus, obj.question.Id, {
|
this.$set(this.questionsMarkStatus, obj.question.Id, {
|
||||||
isMarked: !!this.questionMarkInfoList[index]?.MeasureData,
|
isMarked: !!this.questionMarkInfoList[index]?.MeasureData,
|
||||||
isSaved: true
|
isSaved: true,
|
||||||
|
OrderMarkName: this.questionMarkInfoList[index].OrderMarkName
|
||||||
})
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('保存失败:', e)
|
console.error('保存失败:', e)
|
||||||
|
@ -623,12 +600,12 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleUpdateValue(obj) {
|
handleUpdateValue(obj) {
|
||||||
const key = this.operateRowId
|
const key = this.operateRowId
|
||||||
? `${this.operateRowId}_${obj.question.Id}`
|
? `${this.operateRowId}_${obj.question.Id}`
|
||||||
: obj.question.Id
|
: obj.question.Id
|
||||||
this.$set(this.questionsMarkStatus, key, {
|
this.$set(this.questionsMarkStatus, key, {
|
||||||
isMarked: false,
|
isMarked: false,
|
||||||
isSaved: false
|
isSaved: false,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async handleSaveTableQuestions(obj) {
|
async handleSaveTableQuestions(obj) {
|
||||||
|
@ -669,12 +646,12 @@ export default {
|
||||||
TableQuestionId: this.operateQuestionId,
|
TableQuestionId: this.operateQuestionId,
|
||||||
RowIndex: obj.rowIndex
|
RowIndex: obj.rowIndex
|
||||||
}, -10)
|
}, -10)
|
||||||
this.$set(this.questionsMarkStatus,
|
this.$set(this.questionsMarkStatus,
|
||||||
`${this.operateRowId}_${this.operateQuestionId}`,
|
`${this.operateRowId}_${this.operateQuestionId}`,
|
||||||
{ isMarked: !!annotation, isSaved: true }
|
{ isMarked: !!annotation, isSaved: true, OrderMarkName: annotation.data.label }
|
||||||
)
|
)
|
||||||
this.resetOperateState()
|
this.resetOperateState()
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
console.error('表格保存失败:', e)
|
console.error('表格保存失败:', e)
|
||||||
} finally {
|
} finally {
|
||||||
loading.close()
|
loading.close()
|
||||||
|
@ -683,11 +660,11 @@ export default {
|
||||||
findMarkIndex(question) {
|
findMarkIndex(question) {
|
||||||
const { Id, RowId } = question
|
const { Id, RowId } = question
|
||||||
if (this.isTableQuestion) {
|
if (this.isTableQuestion) {
|
||||||
return RowId
|
return RowId
|
||||||
? this.questionMarkInfoList.findIndex(i =>
|
? this.questionMarkInfoList.findIndex(i =>
|
||||||
i.TableQuestionId === Id && i.RowId === RowId)
|
i.TableQuestionId === Id && i.RowId === RowId)
|
||||||
: this.questionMarkInfoList.findIndex(i =>
|
: this.questionMarkInfoList.findIndex(i =>
|
||||||
i.TableQuestionId === Id && !i.RowId)
|
i.TableQuestionId === Id && !i.RowId)
|
||||||
}
|
}
|
||||||
return this.questionMarkInfoList.findIndex(i => i.QuestionId === Id)
|
return this.questionMarkInfoList.findIndex(i => i.QuestionId === Id)
|
||||||
},
|
},
|
||||||
|
@ -697,7 +674,7 @@ export default {
|
||||||
item.RowId = obj.rowId
|
item.RowId = obj.rowId
|
||||||
const oldKey = item.TableQuestionId
|
const oldKey = item.TableQuestionId
|
||||||
const newKey = `${obj.rowId}_${item.TableQuestionId}`
|
const newKey = `${obj.rowId}_${item.TableQuestionId}`
|
||||||
|
|
||||||
if (this.questionsMarkStatus[oldKey]) {
|
if (this.questionsMarkStatus[oldKey]) {
|
||||||
const status = { ...this.questionsMarkStatus[oldKey] }
|
const status = { ...this.questionsMarkStatus[oldKey] }
|
||||||
delete this.questionsMarkStatus[oldKey]
|
delete this.questionsMarkStatus[oldKey]
|
||||||
|
@ -730,8 +707,8 @@ export default {
|
||||||
}
|
}
|
||||||
if (currentState === 3) {
|
if (currentState === 3) {
|
||||||
const conflictIndex = this.questionMarkInfoList.findIndex(
|
const conflictIndex = this.questionMarkInfoList.findIndex(
|
||||||
item => item.MeasureData.annotationUID === annotation.annotationUID
|
item => item.MeasureData.annotationUID === annotation.annotationUID
|
||||||
&& item.RowId !== this.operateRowId && this.operateRowId
|
&& item.RowId !== this.operateRowId && this.operateRowId
|
||||||
)
|
)
|
||||||
if (conflictIndex > -1) {
|
if (conflictIndex > -1) {
|
||||||
this.$alert('该标记已绑定到其他行,不能更改绑定!')
|
this.$alert('该标记已绑定到其他行,不能更改绑定!')
|
||||||
|
@ -740,8 +717,8 @@ export default {
|
||||||
}
|
}
|
||||||
const message = currentState === 0 ? '是否确认绑定?' : '是否确认更改?'
|
const message = currentState === 0 ? '是否确认绑定?' : '是否确认更改?'
|
||||||
const result = await this.$confirm(message, {
|
const result = await this.$confirm(message, {
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
distinguishCancelAndClose: true
|
distinguishCancelAndClose: true
|
||||||
})
|
})
|
||||||
const isConfirmed = result === 'confirm'
|
const isConfirmed = result === 'confirm'
|
||||||
if (!isConfirmed) return
|
if (!isConfirmed) return
|
||||||
|
@ -751,17 +728,18 @@ export default {
|
||||||
this.questionMarkInfoList.push({
|
this.questionMarkInfoList.push({
|
||||||
InstanceId: annotation.instanceId,
|
InstanceId: annotation.instanceId,
|
||||||
SeriesId: annotation.seriesId,
|
SeriesId: annotation.seriesId,
|
||||||
|
OrderMarkName: annotation.data.label,
|
||||||
StudyId: annotation.studyId,
|
StudyId: annotation.studyId,
|
||||||
MarkTool: annotation.metadata.toolName,
|
MarkTool: annotation.metadata.toolName,
|
||||||
PicturePath: '',
|
PicturePath: '',
|
||||||
NumberOfFrames: annotation.numberOfFrames,
|
NumberOfFrames: annotation.numberOfFrames,
|
||||||
MeasureData: annotation,
|
MeasureData: annotation,
|
||||||
RowId: this.operateRowId || '',
|
RowId: this.operateRowId || '',
|
||||||
QuestionId: this.isTableQuestion
|
QuestionId: this.isTableQuestion
|
||||||
? this.operateParentQsId
|
? this.operateParentQsId
|
||||||
: this.operateQuestionId,
|
: this.operateQuestionId,
|
||||||
TableQuestionId: this.isTableQuestion
|
TableQuestionId: this.isTableQuestion
|
||||||
? this.operateQuestionId
|
? this.operateQuestionId
|
||||||
: ''
|
: ''
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
@ -770,6 +748,7 @@ export default {
|
||||||
InstanceId: annotation.instanceId,
|
InstanceId: annotation.instanceId,
|
||||||
SeriesId: annotation.seriesId,
|
SeriesId: annotation.seriesId,
|
||||||
StudyId: annotation.studyId,
|
StudyId: annotation.studyId,
|
||||||
|
OrderMarkName: annotation.data.label,
|
||||||
MarkTool: annotation.metadata.toolName,
|
MarkTool: annotation.metadata.toolName,
|
||||||
PicturePath: '',
|
PicturePath: '',
|
||||||
NumberOfFrames: annotation.numberOfFrames,
|
NumberOfFrames: annotation.numberOfFrames,
|
||||||
|
@ -789,23 +768,23 @@ export default {
|
||||||
const item = markList[i];
|
const item = markList[i];
|
||||||
if (item.MeasureData?.annotationUID !== annotation.annotationUID) continue
|
if (item.MeasureData?.annotationUID !== annotation.annotationUID) continue
|
||||||
item.MeasureData = annotation
|
item.MeasureData = annotation
|
||||||
|
|
||||||
if (item.TableQuestionId) {
|
if (item.TableQuestionId) {
|
||||||
qsArr.push({ ...item, ImageToolAttribute: this.imageToolAttribute })
|
qsArr.push({ ...item, ImageToolAttribute: this.imageToolAttribute })
|
||||||
|
|
||||||
const keyId = item.RowId
|
const keyId = item.RowId
|
||||||
? `${item.RowId}_${item.TableQuestionId}`
|
? `${item.RowId}_${item.TableQuestionId}`
|
||||||
: item.TableQuestionId
|
: item.TableQuestionId
|
||||||
|
|
||||||
this.$set(this.questionsMarkStatus, keyId, {
|
this.$set(this.questionsMarkStatus, keyId, {
|
||||||
isMarked: true,
|
isMarked: true,
|
||||||
isSaved: false
|
isSaved: false,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.setAnswerToQuestion(annotation, item.QuestionId)
|
this.setAnswerToQuestion(annotation, item.QuestionId)
|
||||||
this.$set(this.questionsMarkStatus, item.QuestionId, {
|
this.$set(this.questionsMarkStatus, item.QuestionId, {
|
||||||
isMarked: true,
|
isMarked: true,
|
||||||
isSaved: false
|
isSaved: false,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -816,13 +795,13 @@ export default {
|
||||||
findTargetIndex() {
|
findTargetIndex() {
|
||||||
if (this.isTableQuestion && this.operateRowId) {
|
if (this.isTableQuestion && this.operateRowId) {
|
||||||
return this.questionMarkInfoList.findIndex(
|
return this.questionMarkInfoList.findIndex(
|
||||||
item => item.TableQuestionId === this.operateQuestionId
|
item => item.TableQuestionId === this.operateQuestionId
|
||||||
&& item.RowId === this.operateRowId
|
&& item.RowId === this.operateRowId
|
||||||
)
|
)
|
||||||
} else if (this.isTableQuestion) {
|
} else if (this.isTableQuestion) {
|
||||||
return this.questionMarkInfoList.findIndex(
|
return this.questionMarkInfoList.findIndex(
|
||||||
item => item.TableQuestionId === this.operateQuestionId
|
item => item.TableQuestionId === this.operateQuestionId
|
||||||
&& !item.RowId
|
&& !item.RowId
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return this.questionMarkInfoList.findIndex(
|
return this.questionMarkInfoList.findIndex(
|
||||||
|
@ -836,9 +815,9 @@ export default {
|
||||||
const keyId = index > -1 && this.questionMarkInfoList[index].RowId
|
const keyId = index > -1 && this.questionMarkInfoList[index].RowId
|
||||||
? `${this.questionMarkInfoList[index].RowId}_${this.questionMarkInfoList[index].TableQuestionId}`
|
? `${this.questionMarkInfoList[index].RowId}_${this.questionMarkInfoList[index].TableQuestionId}`
|
||||||
: this.operateRowId
|
: this.operateRowId
|
||||||
? `${this.operateRowId}_${this.operateQuestionId}`
|
? `${this.operateRowId}_${this.operateQuestionId}`
|
||||||
: this.operateQuestionId
|
: this.operateQuestionId
|
||||||
|
|
||||||
this.$set(this.questionsMarkStatus, keyId, status)
|
this.$set(this.questionsMarkStatus, keyId, status)
|
||||||
store.dispatch('dicom3d/setOperateInfo', [{
|
store.dispatch('dicom3d/setOperateInfo', [{
|
||||||
MeasureData: annotation,
|
MeasureData: annotation,
|
||||||
|
@ -895,13 +874,13 @@ export default {
|
||||||
if (!referencedImageId) return null
|
if (!referencedImageId) return null
|
||||||
const cacheKey = `imageId:${referencedImageId}`
|
const cacheKey = `imageId:${referencedImageId}`
|
||||||
const cachedStats = annotation.data?.cachedStats?.[cacheKey]
|
const cachedStats = annotation.data?.cachedStats?.[cacheKey]
|
||||||
const hasProp = cachedStats
|
const hasProp = cachedStats
|
||||||
&& Object.prototype.hasOwnProperty.call(cachedStats, prop)
|
&& Object.prototype.hasOwnProperty.call(cachedStats, prop)
|
||||||
if (!hasProp) return null
|
if (!hasProp) return null
|
||||||
const value = cachedStats[prop]
|
const value = cachedStats[prop]
|
||||||
return value !== null
|
return value !== null
|
||||||
? parseFloat(value).toFixed(this.digitPlaces)
|
? parseFloat(value).toFixed(this.digitPlaces)
|
||||||
: value
|
: value
|
||||||
},
|
},
|
||||||
unBindAnnotationToQuestion(obj) {
|
unBindAnnotationToQuestion(obj) {
|
||||||
const { markTableQuestions = [], questionId } = obj || {}
|
const { markTableQuestions = [], questionId } = obj || {}
|
||||||
|
@ -999,32 +978,38 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.questionList-wrapper{
|
.questionList-wrapper {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
.container{
|
|
||||||
|
.container {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
.basic-info{
|
|
||||||
|
.basic-info {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
h3{
|
|
||||||
|
h3 {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
padding: 5px 0px;
|
padding: 5px 0px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
i{
|
|
||||||
|
i {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.ecrf-form{
|
|
||||||
::v-deep .el-form-item__label{
|
.ecrf-form {
|
||||||
|
::v-deep .el-form-item__label {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-table,
|
::v-deep .el-table,
|
||||||
.el-table__expanded-cell {
|
.el-table__expanded-cell {
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
|
@ -1038,43 +1023,51 @@ export default {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-color: #444444;
|
border-color: #444444;
|
||||||
}
|
}
|
||||||
::v-deep .el-table__body tr > td {
|
|
||||||
|
::v-deep .el-table__body tr>td {
|
||||||
background-color: #000 !important;
|
background-color: #000 !important;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-color: #444444;
|
border-color: #444444;
|
||||||
}
|
}
|
||||||
::v-deep .el-table__body tr:hover > td {
|
|
||||||
|
::v-deep .el-table__body tr:hover>td {
|
||||||
background-color: #858282 !important;
|
background-color: #858282 !important;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-color: #444444;
|
border-color: #444444;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-table--border th.gutter:last-of-type {
|
::v-deep .el-table--border th.gutter:last-of-type {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
::v-deep .el-dialog{
|
|
||||||
|
::v-deep .el-dialog {
|
||||||
background: #1e1e1e;
|
background: #1e1e1e;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
.el-dialog__title{
|
|
||||||
color:#fff;
|
.el-dialog__title {
|
||||||
|
color: #fff;
|
||||||
}
|
}
|
||||||
.el-input .el-input__inner{
|
|
||||||
|
.el-input .el-input__inner {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
border: 1px solid #5e5e5e;
|
border: 1px solid #5e5e5e;
|
||||||
}
|
}
|
||||||
.el-input.is-disabled .el-input__inner{
|
|
||||||
|
.el-input.is-disabled .el-input__inner {
|
||||||
background-color: #646464a1;
|
background-color: #646464a1;
|
||||||
}
|
}
|
||||||
.el-form-item__label{
|
|
||||||
|
.el-form-item__label {
|
||||||
color: #dfdfdf
|
color: #dfdfdf
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// .ecrf-list-container{
|
// .ecrf-list-container{
|
||||||
// min-height:400px;
|
// min-height:400px;
|
||||||
// color: #ddd;
|
// color: #ddd;
|
||||||
|
|
||||||
// }
|
// }</style>
|
||||||
</style>
|
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
<div class="criterion-table-form-item">
|
<div class="criterion-table-form-item">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="(question.ShowQuestion === 1 && !!~question.ParentTriggerValueList.indexOf(questionForm[question.ParentId])) || question.ShowQuestion === 0"
|
v-if="(question.ShowQuestion === 1 && !!~question.ParentTriggerValueList.indexOf(questionForm[question.ParentId])) || question.ShowQuestion === 0"
|
||||||
:title="question.Remark"
|
:title="question.Remark" :label="`${question.QuestionName}`" :prop="question.Id" :rules="[
|
||||||
:label="`${question.QuestionName}`" :prop="question.Id" :rules="[
|
|
||||||
{
|
{
|
||||||
required: (question.IsRequired === 0 || (question.IsRequired === 1 && question.RelevanceId && !!~question.RelevanceValueList.indexOf(questionForm[question.RelevanceId]))) && question.Type !== 'group' && question.Type !== 'summary',
|
required: (question.IsRequired === 0 || (question.IsRequired === 1 && question.RelevanceId && !!~question.RelevanceValueList.indexOf(questionForm[question.RelevanceId]))) && question.Type !== 'group' && question.Type !== 'summary',
|
||||||
message: $t('common:ruleMessage:select'), trigger: ['blur', 'change']
|
message: $t('common:ruleMessage:select'), trigger: ['blur', 'change']
|
||||||
|
@ -84,6 +83,7 @@
|
||||||
<el-input type="number" @change="(val) => { formItemNumberChange(val, question) }"
|
<el-input type="number" @change="(val) => { formItemNumberChange(val, question) }"
|
||||||
@blur="questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
|
@blur="questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
|
||||||
v-model="questionForm[question.Id]"
|
v-model="questionForm[question.Id]"
|
||||||
|
:title="questionsMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id] ? questionsMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id].OrderMarkName : ''"
|
||||||
:disabled="(questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1"
|
:disabled="(questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1"
|
||||||
style="width: 150px;">
|
style="width: 150px;">
|
||||||
<template v-if="question.Unit !== 0" slot="append">
|
<template v-if="question.Unit !== 0" slot="append">
|
||||||
|
@ -188,7 +188,6 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { submitTableQuestion } from '@/api/trials'
|
|
||||||
export default {
|
export default {
|
||||||
name: 'QuestionTableFormItem',
|
name: 'QuestionTableFormItem',
|
||||||
props: {
|
props: {
|
||||||
|
|
Loading…
Reference in New Issue