自定义结构化录入的临床数据,配置工具存在问题
continuous-integration/drone/push Build is running
Details
continuous-integration/drone/push Build is running
Details
parent
3d6cd67493
commit
2a1dc4d2dd
|
@ -1,21 +1,16 @@
|
|||
<template>
|
||||
<div class="criterion-form-item">
|
||||
<div
|
||||
v-if="!!question.QuestionName && question.ClinicalQuestionType==='group'"
|
||||
style="font-weight: bold;font-size: 16px;margin: 5px 0px;margin-bottom: 10px"
|
||||
>
|
||||
{{ language==='en'?question.QuestionEnName:question.QuestionName }}
|
||||
<div v-if="!!question.QuestionName && question.ClinicalQuestionType === 'group'"
|
||||
style="font-weight: bold;font-size: 16px;margin: 5px 0px;margin-bottom: 10px">
|
||||
{{ language === 'en' ? question.QuestionEnName : question.QuestionName }}
|
||||
</div>
|
||||
<div v-else-if="question.ClinicalQuestionType === 'summary'"
|
||||
style="background:#f3f3f3;border-radius:4px;font-size: 12px;margin: 5px 0px;margin-bottom: 10px;font-size: 12px;padding: 10px">
|
||||
{{ language === 'en' ? question.QuestionEnName : question.QuestionName }}
|
||||
</div>
|
||||
<div
|
||||
v-else-if="question.ClinicalQuestionType==='summary'"
|
||||
style="background:#f3f3f3;border-radius:4px;font-size: 12px;margin: 5px 0px;margin-bottom: 10px;font-size: 12px;padding: 10px"
|
||||
>
|
||||
{{ language==='en'?question.QuestionEnName:question.QuestionName }}
|
||||
</div>
|
||||
<div
|
||||
v-else-if="question.ClinicalQuestionType==='table' && ((question.ClinicalQuestionShowEnum===1 && question.ParentTriggerValue === questionForm[question.ParentId].toString()) || question.ClinicalQuestionShowEnum===0)"
|
||||
style="font-weight: bold;font-size: 14px;margin: 5px 0px;"
|
||||
>
|
||||
v-else-if="question.ClinicalQuestionType === 'table' && ((question.ClinicalQuestionShowEnum === 1 && question.ParentTriggerValue === questionForm[question.ParentId].toString()) || question.ClinicalQuestionShowEnum === 0)"
|
||||
style="font-weight: bold;font-size: 14px;margin: 5px 0px;">
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<span>
|
||||
{{ question.QuestionName }}
|
||||
|
@ -25,27 +20,17 @@
|
|||
{{ $t('trials:readingUnit:qsList:title:add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="questionForm[question.Id]"
|
||||
>
|
||||
<el-table-column
|
||||
v-for="item of question.TableQuestions"
|
||||
:key="item.Id"
|
||||
:prop="item.Id"
|
||||
:label="item.QuestionName"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table :data="questionForm[question.Id]">
|
||||
<el-table-column v-for="item of question.TableQuestions" :key="item.Id" :prop="item.Id"
|
||||
:label="item.QuestionName" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column :label="$t('common:action:action')" min-width="100" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="mini" @click="openAddTableCol(question, scope.$index)">
|
||||
{{ $t('common:button:edit') }}
|
||||
</el-button>
|
||||
<el-button type="text" size="mini" v-if="scope.row.IsCurrentTaskAdd === 'True' || !question.IsCopyLesions || IsBaseline" @click="deleteTableCol(question, scope.$index)">
|
||||
<el-button type="text" size="mini"
|
||||
v-if="scope.row.IsCurrentTaskAdd === 'True' || !question.IsCopyLesions || IsBaseline"
|
||||
@click="deleteTableCol(question, scope.$index)">
|
||||
{{ $t('common:button:delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
|
@ -54,187 +39,109 @@
|
|||
</div>
|
||||
<el-col v-else :span="12">
|
||||
<el-form-item
|
||||
v-if="(question.ClinicalQuestionShowEnum===1 && question.ParentTriggerValue === questionForm[question.ParentId].toString()) || question.ClinicalQuestionShowEnum===0"
|
||||
:label="`${question.QuestionName}`"
|
||||
:prop="question.Id"
|
||||
:rules="[
|
||||
{ required: (question.IsRequired === 0 || (question.IsRequired ===1 && question.RelevanceId && (question.RelevanceValue === questionForm[question.RelevanceId].toString()))) && question.ClinicalQuestionType !== 'summary' && question.ClinicalQuestionType!=='group' && question.ClinicalQuestionType!=='table',
|
||||
message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']}
|
||||
]"
|
||||
:class="[question.Type==='group'?'mb':question.Type==='upload'?'uploadWrapper':'']"
|
||||
>
|
||||
v-if="(question.ClinicalQuestionShowEnum === 1 && question.ParentTriggerValue === questionForm[question.ParentId].toString()) || question.ClinicalQuestionShowEnum === 0"
|
||||
:label="`${question.QuestionName}`" :prop="question.Id" :rules="[
|
||||
{
|
||||
required: (question.IsRequired === 0 || (question.IsRequired === 1 && question.RelevanceId && (question.RelevanceValue === questionForm[question.RelevanceId].toString()))) && question.ClinicalQuestionType !== 'summary' && question.ClinicalQuestionType !== 'group' && question.ClinicalQuestionType !== 'table',
|
||||
message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']
|
||||
}
|
||||
]" :class="[question.Type === 'group' ? 'mb' : question.Type === 'upload' ? 'uploadWrapper' : '']">
|
||||
<!-- 输入框 -->
|
||||
<el-input
|
||||
v-if="question.ClinicalQuestionType==='input'"
|
||||
v-model="questionForm[question.Id]"
|
||||
<el-input v-if="question.ClinicalQuestionType === 'input'" v-model="questionForm[question.Id]"
|
||||
:disabled="question.TableQuestionType === 2"
|
||||
:max-length="question.MaxAnswerLength ? question.MaxAnswerLength : 200"
|
||||
/>
|
||||
:max-length="question.MaxAnswerLength ? question.MaxAnswerLength : 200" />
|
||||
<!-- 多行文本输入框 -->
|
||||
<el-input
|
||||
v-if="question.ClinicalQuestionType==='textarea'"
|
||||
v-model="questionForm[question.Id]"
|
||||
type="textarea"
|
||||
:max-length="question.MaxAnswerLength ? question.MaxAnswerLength : 200"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
/>
|
||||
<el-input v-if="question.ClinicalQuestionType === 'textarea'" v-model="questionForm[question.Id]"
|
||||
type="textarea" :max-length="question.MaxAnswerLength ? question.MaxAnswerLength : 200"
|
||||
:autosize="{ minRows: 2, maxRows: 4 }" />
|
||||
<!-- 下拉框 -->
|
||||
<el-select
|
||||
v-if="question.ClinicalQuestionType==='select'"
|
||||
v-model="questionForm[question.Id]"
|
||||
clearable
|
||||
<el-select v-if="question.ClinicalQuestionType === 'select'" v-model="questionForm[question.Id]" clearable
|
||||
:disabled="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && !!question.DictionaryCode"
|
||||
@change="((val)=>{formItemChange(val, question)})"
|
||||
>
|
||||
@change="((val) => { formItemChange(val, question) })">
|
||||
<template v-if="question.TableQuestionType === 1">
|
||||
<el-option
|
||||
v-for="item in organList"
|
||||
:key="item.Id"
|
||||
:label="item[question.DataTableColumn]"
|
||||
:value="item[question.DataTableColumn]"
|
||||
/>
|
||||
<el-option v-for="item in organList" :key="item.Id" :label="item[question.DataTableColumn]"
|
||||
:value="item[question.DataTableColumn]" />
|
||||
</template>
|
||||
<template v-else-if="question.TableQuestionType === 3 || question.QuestionGenre === 3">
|
||||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
/>
|
||||
<el-option v-for="item of $d[question.DictionaryCode]" :key="item.id" :value="item.value"
|
||||
:label="item.label" />
|
||||
</template>
|
||||
<template v-else-if="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && question.DictionaryCode">
|
||||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
/>
|
||||
<template
|
||||
v-else-if="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && question.DictionaryCode">
|
||||
<el-option v-for="item of $d[question.DictionaryCode]" :key="item.id" :value="item.value"
|
||||
:label="item.label" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-option
|
||||
v-for="val in question.TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val"
|
||||
:value="val.trim()"
|
||||
/>
|
||||
<el-option v-for="val in question.TypeValue.split('|')" :key="val" :label="val" :value="val.trim()" />
|
||||
</template>
|
||||
</el-select>
|
||||
<!-- 日期 -->
|
||||
<el-date-picker v-if="question.ClinicalQuestionType === 'time'" v-model="questionForm[question.Id]"
|
||||
style="width: 200px" align="right" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" />
|
||||
<!-- 单选 -->
|
||||
<el-date-picker
|
||||
v-if="question.ClinicalQuestionType === 'time'"
|
||||
v-model="questionForm[question.Id]"
|
||||
style="width: 200px"
|
||||
align="right"
|
||||
type="date"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
/>
|
||||
<!-- 单选 -->
|
||||
<el-radio-group
|
||||
v-if="question.ClinicalQuestionType==='radio'"
|
||||
v-model="questionForm[question.Id]"
|
||||
@change="((val)=>{formItemChange(val, question)})"
|
||||
>
|
||||
<el-radio-group v-if="question.ClinicalQuestionType === 'radio'" v-model="questionForm[question.Id]"
|
||||
@change="((val) => { formItemChange(val, question) })">
|
||||
<template v-if="question.DictionaryCode">
|
||||
<el-radio
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
>
|
||||
<el-radio v-for="item of $d[question.DictionaryCode]" :key="item.id" :label="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</template>
|
||||
<template v-if="question.TypeValue">
|
||||
<el-radio
|
||||
v-for="val in question.TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val"
|
||||
>
|
||||
<el-radio v-for="val in question.TypeValue.split('|')" :key="val" :label="val">
|
||||
{{ val }}
|
||||
</el-radio>
|
||||
</template>
|
||||
</el-radio-group>
|
||||
<!-- 复选框 -->
|
||||
<el-checkbox-group
|
||||
v-if="question.ClinicalQuestionType==='checkbox' && questionForm[question.Id] !== ''"
|
||||
v-model="questionForm[question.Id]"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="val of question.TypeValue.split('|')"
|
||||
:key="val"
|
||||
:label="val"
|
||||
:value="val"
|
||||
>
|
||||
<el-checkbox-group v-if="question.ClinicalQuestionType === 'checkbox' && questionForm[question.Id] !== ''"
|
||||
v-model="questionForm[question.Id]">
|
||||
<el-checkbox v-for="val of question.TypeValue.split('|')" :key="val" :label="val" :value="val">
|
||||
{{ val }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
<el-input
|
||||
v-if="question.ClinicalQuestionType === 'number'"
|
||||
:ref="question.Id"
|
||||
v-model="questionForm[question.Id]"
|
||||
type="number"
|
||||
style="width: 200px"
|
||||
:disabled="question.CustomCalculateMark > 0"
|
||||
@input="limitInput($event, questionForm, question)"
|
||||
>
|
||||
<el-input v-if="question.ClinicalQuestionType === 'number'" :ref="question.Id"
|
||||
v-model="questionForm[question.Id]" type="number" style="width: 200px"
|
||||
:disabled="question.CustomCalculateMark > 0" @input="limitInput($event, questionForm, question)">
|
||||
<template v-if="question.Unit" slot="append">{{ question.Unit }}</template>
|
||||
</el-input>
|
||||
<span v-if="question.CustomCalculateMark === 11 && question.ClinicalQuestionType === 'number'" v-show="questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] <= questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId]" style="margin-left: 10px">
|
||||
{{ questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] }}~{{ questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId] }}
|
||||
<span v-if="question.CustomCalculateMark === 11 && question.ClinicalQuestionType === 'number'"
|
||||
v-show="questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] <= questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId]"
|
||||
style="margin-left: 10px">
|
||||
{{ questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] }}~{{
|
||||
questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId] }}
|
||||
</span>
|
||||
<span v-if="question.CustomCalculateMark === 10 && question.ClinicalQuestionType === 'number' && questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId]" style="margin-left: 10px">
|
||||
{{ questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] }}~{{ questionForm.CreateTime ? questionForm.CreateTime : parseTime(new Date(), '{y}-{m}-{d}') }}
|
||||
<span
|
||||
v-if="question.CustomCalculateMark === 10 && question.ClinicalQuestionType === 'number' && questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId]"
|
||||
style="margin-left: 10px">
|
||||
{{ questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] }}~{{ questionForm.CreateTime ?
|
||||
questionForm.CreateTime : parseTime(new Date(), '{y}-{m}-{d}') }}
|
||||
</span>
|
||||
<!-- 生日不能大于截止日期 -->
|
||||
<span v-if="question.CustomCalculateMark === 11 && question.ClinicalQuestionType === 'number'" v-show="questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] > questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId]" style="margin-left: 10px;font-size: 12px;color:#f66">
|
||||
<span v-if="question.CustomCalculateMark === 11 && question.ClinicalQuestionType === 'number'"
|
||||
v-show="questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] > questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId]"
|
||||
style="margin-left: 10px;font-size: 12px;color:#f66">
|
||||
{{ $t('trials:components:clinicalDataQS:msg:birthDay') }}
|
||||
</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
|
||||
<!-- eslint-disable vue/valid-v-for -->
|
||||
<el-col v-for="(item) in question.Childrens" :key="item.Id" v-if="question.Childrens && question.Childrens.length>0 && question.ClinicalQuestionType !== 'table'" :span="['group', 'summary', 'table'].includes(item.ClinicalQuestionType) || item.Childrens.length > 0 ? 24 : 12">
|
||||
<QuestionFormItem
|
||||
:key="item.Id"
|
||||
:question="item"
|
||||
:question-form="questionForm"
|
||||
:trial-clinical-id="trialClinicalId"
|
||||
@formItemNumberChange="formItemNumberChange"
|
||||
@setFormItemData="setFormItemData"
|
||||
@resetFormItemData="resetFormItemData"
|
||||
/>
|
||||
<el-col v-for="(item) in question.Childrens" :key="item.Id"
|
||||
v-if="question.Childrens && question.Childrens.length > 0 && question.ClinicalQuestionType !== 'table'"
|
||||
:span="['group', 'summary', 'table'].includes(item.ClinicalQuestionType) || item.Childrens.length > 0 ? 24 : 12">
|
||||
<QuestionFormItem :key="item.Id" :question="item" :question-form="questionForm"
|
||||
:trial-clinical-id="trialClinicalId" @formItemNumberChange="formItemNumberChange"
|
||||
@setFormItemData="setFormItemData" @resetFormItemData="resetFormItemData" />
|
||||
</el-col>
|
||||
<el-dialog
|
||||
v-if="addOrEdit.visible"
|
||||
class="my_dialog"
|
||||
:visible.sync="addOrEdit.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="addOrEdit.title"
|
||||
width="400px"
|
||||
append-to-body
|
||||
>
|
||||
<el-form
|
||||
ref="tableQsForm"
|
||||
v-loading="loading"
|
||||
size="small"
|
||||
:model="QuestionsForm"
|
||||
>
|
||||
<QuestionTableFormItem
|
||||
v-for="(item) in QuestionsList"
|
||||
:key="item.Id"
|
||||
:question="item"
|
||||
:question-form="QuestionsForm"
|
||||
@setFormItemData="setFormItemData"
|
||||
@resetFormItemData="resetFormItemData"
|
||||
/>
|
||||
<el-dialog v-if="addOrEdit.visible" class="my_dialog" :visible.sync="addOrEdit.visible"
|
||||
:close-on-click-modal="false" :title="addOrEdit.title" width="400px" append-to-body>
|
||||
<el-form ref="tableQsForm" v-loading="loading" size="small" :model="QuestionsForm">
|
||||
<QuestionTableFormItem v-for="(item) in QuestionsList" :key="item.Id" :question="item"
|
||||
:question-form="QuestionsForm" @setFormItemData="setFormItemData" @resetFormItemData="resetFormItemData" />
|
||||
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
||||
<el-form-item>
|
||||
<!-- 取消 -->
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
@click="addOrEdit.visible = false"
|
||||
>
|
||||
<el-button size="small" type="primary" @click="addOrEdit.visible = false">
|
||||
{{ $t('common:button:cancel') }}
|
||||
</el-button>
|
||||
<!-- 保存 -->
|
||||
|
@ -282,7 +189,7 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
addOrEdit: { visible: false, title: '', id: null, index: 0},
|
||||
addOrEdit: { visible: false, title: '', id: null, index: 0 },
|
||||
fileList: [],
|
||||
accept: '.png,.jpg,.jpeg',
|
||||
imgVisible: false,
|
||||
|
@ -406,8 +313,6 @@ export default {
|
|||
})
|
||||
break
|
||||
case 6:
|
||||
console.log(this.questionForm[o.QuestionId])
|
||||
console.log(this.questionForm)
|
||||
this.questionForm[o.QuestionId].forEach((q, qi) => {
|
||||
if (qi === 0) {
|
||||
num = parseFloat(q[o.TableQuestionId])
|
||||
|
@ -450,11 +355,16 @@ export default {
|
|||
}
|
||||
break
|
||||
case 11:
|
||||
if (parseFloat(this.getCurrentAgeByBirthDate2(this.questionForm[o.TableQuestionId], this.questionForm[o.QuestionId])) > 0) {
|
||||
num = parseFloat(this.getCurrentAgeByBirthDate2(this.questionForm[o.TableQuestionId], this.questionForm[o.QuestionId]))
|
||||
if (parseFloat(this.getCurrentAgeByBirthDate(this.questionForm[o.TableQuestionId])) > 0) {
|
||||
num = parseFloat(this.getCurrentAgeByBirthDate(this.questionForm[o.TableQuestionId]))
|
||||
} else {
|
||||
num = 0
|
||||
}
|
||||
// if (parseFloat(this.getCurrentAgeByBirthDate2(this.questionForm[o.TableQuestionId], this.questionForm[o.QuestionId])) > 0) {
|
||||
// num = parseFloat(this.getCurrentAgeByBirthDate2(this.questionForm[o.TableQuestionId], this.questionForm[o.QuestionId]))
|
||||
// } else {
|
||||
// num = 0
|
||||
// }
|
||||
break
|
||||
}
|
||||
} else {
|
||||
|
@ -501,12 +411,10 @@ export default {
|
|||
try {
|
||||
if (isTable) {
|
||||
this.calculationList.forEach((v, i) => {
|
||||
console.log(v, i)
|
||||
var find = v.CalculateQuestionList.filter(o => {
|
||||
return o.QuestionId === questionId
|
||||
})
|
||||
// find的自动计算值number
|
||||
console.log('find', find)
|
||||
if (find) {
|
||||
var num = this.logic(v)
|
||||
if (num !== false) {
|
||||
|
@ -520,7 +428,6 @@ export default {
|
|||
return o.TableQuestionId === questionId
|
||||
})
|
||||
// find的自动计算值number
|
||||
console.log('find', find)
|
||||
// find的自动计算值number
|
||||
if (find) {
|
||||
var num = this.logic(v)
|
||||
|
@ -591,40 +498,47 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.my_dialog{
|
||||
.criterion-form-item{
|
||||
::v-deep .el-form-item__content{
|
||||
.my_dialog {
|
||||
.criterion-form-item {
|
||||
::v-deep .el-form-item__content {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
.el-col-12 .el-col-12{
|
||||
|
||||
.el-col-12 .el-col-12 {
|
||||
width: 100%;
|
||||
}
|
||||
.criterion-form-item{
|
||||
.el-form-item{
|
||||
|
||||
.criterion-form-item {
|
||||
.el-form-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.el-input{
|
||||
width:100%;
|
||||
|
||||
.el-input {
|
||||
width: 100%;
|
||||
}
|
||||
.mb{
|
||||
|
||||
.mb {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
|
||||
.disabled {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.uploadWrapper{
|
||||
|
||||
.uploadWrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
}
|
||||
.clearfix:after{
|
||||
|
||||
.clearfix:after {
|
||||
content: '';
|
||||
display: table;
|
||||
clear: both;
|
||||
|
|
|
@ -1,42 +1,28 @@
|
|||
<template>
|
||||
<div v-loading="loading">
|
||||
<QuestionsForm
|
||||
v-if="clinicalUploadType === 2"
|
||||
:data="data"
|
||||
:trial-clinical-id="trialClinicalId"
|
||||
:is-viewer="isViewer"
|
||||
:visit-id="visitId"
|
||||
:subject-id="subjectId"
|
||||
:open-type="openType"
|
||||
:system-clinical-id="systemClinicalId"
|
||||
:trial-id="trialId"
|
||||
:reading-id="readingId"
|
||||
:clinical-form-id="clinicalFormId"
|
||||
:clinical-data-level="clinicalDataLevel"
|
||||
@close="close"
|
||||
></QuestionsForm>
|
||||
<uploadClinicalData v-else :subject-visit-id="subjectVisitId" :data="data" :enum-type="0" :allow-add-or-edit="true" @getList="() => {}">
|
||||
<QuestionsForm v-if="clinicalUploadType === 2" :data="data" :trial-clinical-id="trialClinicalId"
|
||||
:is-viewer="isViewer" :visit-id="visitId" :subject-id="subjectId" :open-type="openType"
|
||||
:system-clinical-id="systemClinicalId" :trial-id="trialId" :reading-id="readingId"
|
||||
:clinical-form-id="clinicalFormId" :clinical-data-level="clinicalDataLevel" @close="close"></QuestionsForm>
|
||||
<uploadClinicalData v-else :subject-visit-id="subjectVisitId" :data="data" :enum-type="0" :allow-add-or-edit="true"
|
||||
@getList="() => { }">
|
||||
</uploadClinicalData>
|
||||
<div class="base-dialog-footer" v-if="!isViewer && openType !== 'look' && [0, 1].includes(clinicalDataLevel)" style="text-align:right;margin-top:10px;">
|
||||
<div class="base-dialog-footer" v-if="!isViewer && openType !== 'look' && [0, 1].includes(clinicalDataLevel)"
|
||||
style="text-align:right;margin-top:10px;">
|
||||
<!-- 保存 -->
|
||||
<el-button size="small" type="primary" @click="submitClinicalForm">
|
||||
{{ $t('common:button:submit') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- 临床数据签名框 -->
|
||||
<el-dialog
|
||||
v-if="signVisible"
|
||||
:visible.sync="signVisible"
|
||||
:close-on-click-modal="false"
|
||||
width="600px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<el-dialog v-if="signVisible" :visible.sync="signVisible" :close-on-click-modal="false" width="600px" append-to-body
|
||||
custom-class="base-dialog-wrapper">
|
||||
<div slot="title">
|
||||
<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>
|
||||
<SignForm ref="signForm" :sign-code-enum="signCode" :subject-visit-id="subjectVisitId" @closeDialog="closeSignDialog" />
|
||||
<SignForm ref="signForm" :sign-code-enum="signCode" :subject-visit-id="subjectVisitId"
|
||||
@closeDialog="closeSignDialog" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -49,7 +35,7 @@ import uploadClinicalData from './components/uploadClinicalData'
|
|||
import const_ from '@/const/sign-code'
|
||||
|
||||
export default {
|
||||
name: "index",
|
||||
name: "index",
|
||||
components: { QuestionsForm, uploadClinicalData, SignForm },
|
||||
methods: {
|
||||
submitClinicalForm() {
|
||||
|
@ -83,7 +69,7 @@ name: "index",
|
|||
this.close()
|
||||
}).catch((res) => {
|
||||
this.$refs['signForm'].btnLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
},
|
||||
data() {
|
||||
|
@ -148,7 +134,7 @@ name: "index",
|
|||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
default: () => { }
|
||||
},
|
||||
trialClinicalId: {
|
||||
type: String,
|
||||
|
@ -166,6 +152,4 @@ name: "index",
|
|||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
<style scoped></style>
|
||||
|
|
|
@ -10,190 +10,89 @@
|
|||
<el-button type="primary" @click="handleSearch">{{ $t('common:button:search') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div >
|
||||
<el-button
|
||||
:disabled="list.length === 0"
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="handlePreview"
|
||||
>
|
||||
<div>
|
||||
<el-button :disabled="list.length === 0" size="mini" type="primary" @click="handlePreview">
|
||||
{{ $t('common:button:preview') }}
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
v-if="!data.IsFromSystemData && !data.IsCompleteConfig"
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="handleAdd"
|
||||
>
|
||||
<el-button v-if="!data.IsFromSystemData && !data.IsCompleteConfig" size="mini" type="primary"
|
||||
@click="handleAdd">
|
||||
{{ $t('common:button:add') }}
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
v-if="!data.IsFromSystemData && !data.IsCompleteConfig"
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="handleApply"
|
||||
>
|
||||
<el-button v-if="!data.IsFromSystemData && !data.IsCompleteConfig" size="mini" type="primary"
|
||||
@click="handleApply">
|
||||
{{ $t('trials:readingUnit:qsList:button:apply') }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<el-table
|
||||
ref="criterionQSList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:80}"
|
||||
height="100"
|
||||
:data="list"
|
||||
stripe
|
||||
@sort-change="handleSortByColumn"
|
||||
>
|
||||
<el-table-column
|
||||
prop="ShowOrder"
|
||||
label=""
|
||||
width="50"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="QuestionName"
|
||||
:label="$t('trials:readingUnit:qsList:title:qName')"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="QuestionEnName"
|
||||
:label="$t('trials:readingUnit:qsList:title:qNameEn')"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Type"
|
||||
:label="$t('trials:readingUnit:qsList:title:type')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table ref="criterionQSList" v-loading="loading" v-adaptive="{ bottomOffset: 80 }" height="100" :data="list"
|
||||
stripe @sort-change="handleSortByColumn">
|
||||
<el-table-column prop="ShowOrder" label="" width="50" />
|
||||
<el-table-column prop="QuestionName" :label="$t('trials:readingUnit:qsList:title:qName')" show-overflow-tooltip />
|
||||
<el-table-column prop="QuestionEnName" :label="$t('trials:readingUnit:qsList:title:qNameEn')"
|
||||
show-overflow-tooltip />
|
||||
<el-table-column prop="Type" :label="$t('trials:readingUnit:qsList:title:type')" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('ClinicalQuestionType',scope.row.ClinicalQuestionType) }}
|
||||
{{ $fd('ClinicalQuestionType', scope.row.ClinicalQuestionType) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="TypeValue"
|
||||
:label="$t('trials:readingUnit:qsList:title:type')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="TypeValue" :label="$t('trials:readingUnit:qsList:title:type')" show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ClinicalQuestionShowEnum"
|
||||
:label="$t('trials:readingUnit:qsList:title:isShow')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="GroupName" :label="$t('trials:readingUnit:qsList:title:groupName')" show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<el-table-column prop="ClinicalQuestionShowEnum" :label="$t('trials:readingUnit:qsList:title:isShow')"
|
||||
show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('ShowQuestion',scope.row.ClinicalQuestionShowEnum) }}
|
||||
{{ $fd('ShowQuestion', scope.row.ClinicalQuestionShowEnum) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="IsRequired"
|
||||
:label="$t('trials:qcCfg:table:isRequired')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="IsRequired" :label="$t('trials:qcCfg:table:isRequired')" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('YesOrNo',scope.row.IsRequired) }}
|
||||
{{ $fd('YesOrNo', scope.row.IsRequired) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop=""
|
||||
:label="$t('common:action:action')"
|
||||
min-width="250"
|
||||
show-overflow-tooltip
|
||||
fixed="right"
|
||||
>
|
||||
<el-table-column prop="" :label="$t('common:action:action')" min-width="250" show-overflow-tooltip fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="!data.IsFromSystemData && !data.IsCompleteConfig"
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
<el-button v-if="!data.IsFromSystemData && !data.IsCompleteConfig" type="primary" size="mini"
|
||||
@click="handleEdit(scope.row)">
|
||||
{{ $t('trials:readingUnit:qsList:title:edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-else
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleLook(scope.row)"
|
||||
>
|
||||
<el-button v-else type="primary" size="mini" @click="handleLook(scope.row)">
|
||||
{{ $t('trials:enrolledReviews:button:view') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
:disabled="scope.row.ClinicalQuestionType !== 'table'"
|
||||
@click="handleConfig(scope.row)"
|
||||
>
|
||||
<el-button type="primary" size="mini" :disabled="scope.row.ClinicalQuestionType !== 'table'"
|
||||
@click="handleConfig(scope.row)">
|
||||
{{ $t('trials:readingUnit:qsList:title:tableQs') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="!data.IsFromSystemData && !data.IsCompleteConfig"
|
||||
type="danger"
|
||||
size="mini"
|
||||
:disabled="scope.row.IsEnable"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
<el-button v-if="!data.IsFromSystemData && !data.IsCompleteConfig" type="danger" size="mini"
|
||||
:disabled="scope.row.IsEnable" @click="handleDelete(scope.row)">
|
||||
{{ $t('common:button:delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination style="text-align: right;margin-top: 10px;" class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
<el-dialog
|
||||
v-if="addOrEdit.visible"
|
||||
:visible.sync="addOrEdit.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="addOrEdit.title"
|
||||
width="600px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<ClinicalQuestionForm
|
||||
ref="addOrEdit"
|
||||
:clinical-id="clinicalId"
|
||||
:list="list"
|
||||
:clinical-info="data"
|
||||
:data="rowData"
|
||||
:type="type"
|
||||
@close="addOrEdit.visible = false"
|
||||
@getList="getList"
|
||||
/>
|
||||
<pagination style="text-align: right;margin-top: 10px;" class="page" :total="total"
|
||||
:page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
<el-dialog v-if="addOrEdit.visible" :visible.sync="addOrEdit.visible" :close-on-click-modal="false"
|
||||
:title="addOrEdit.title" width="600px" append-to-body custom-class="base-dialog-wrapper">
|
||||
<ClinicalQuestionForm ref="addOrEdit" :clinical-id="clinicalId" :list="list" :clinical-info="data" :data="rowData"
|
||||
:type="type" @close="addOrEdit.visible = false" @getList="getList" />
|
||||
</el-dialog>
|
||||
|
||||
<!-- 预览 -->
|
||||
<el-dialog
|
||||
v-if="preview.visible"
|
||||
v-dialogDrag
|
||||
:visible.sync="preview.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="preview.title"
|
||||
fullscreen
|
||||
append-to-body
|
||||
>
|
||||
<el-dialog v-if="preview.visible" v-dialogDrag :visible.sync="preview.visible" :close-on-click-modal="false"
|
||||
:title="preview.title" fullscreen append-to-body>
|
||||
<div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
v-if="config.visible"
|
||||
:visible.sync="config.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="config.title"
|
||||
width="90%"
|
||||
append-to-body
|
||||
>
|
||||
<ClinicalQuestionTableQsList
|
||||
:clinical-id="clinicalId"
|
||||
:clinical-info="data"
|
||||
:data="rowData"
|
||||
:is-from-system-data="data.IsFromSystemData"
|
||||
:reading-question-id="rowData.Id"
|
||||
:is-complete-config="data.IsCompleteConfig"
|
||||
:lesion-type="rowData.LesionType"
|
||||
/>
|
||||
<el-dialog v-if="config.visible" :visible.sync="config.visible" :close-on-click-modal="false" :title="config.title"
|
||||
width="90%" append-to-body>
|
||||
<ClinicalQuestionTableQsList :clinical-id="clinicalId" :clinical-info="data" :data="rowData"
|
||||
:is-from-system-data="data.IsFromSystemData" :reading-question-id="rowData.Id"
|
||||
:is-complete-config="data.IsCompleteConfig" :lesion-type="rowData.LesionType" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -331,6 +230,4 @@ export default {
|
|||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
|
|
@ -1,338 +1,196 @@
|
|||
<template>
|
||||
<el-form
|
||||
ref="clinicalDataForm"
|
||||
v-loading="loading"
|
||||
:model="form"
|
||||
size="small"
|
||||
:rules="rules"
|
||||
:disabled="type === 'look'"
|
||||
label-width="130px"
|
||||
>
|
||||
<el-form ref="clinicalDataForm" v-loading="loading" :model="form" size="small" :rules="rules"
|
||||
:disabled="type === 'look'" label-width="130px">
|
||||
<div class="base-dialog-body">
|
||||
<el-form-item :label="$t('trials:readingUnit:qsList:title:type')" prop="ClinicalQuestionType">
|
||||
<el-select v-model="form.ClinicalQuestionType" clearable @change="((val)=>{typeChange(val, form)})">
|
||||
<el-option
|
||||
v-for="item of $d.ClinicalQuestionType"
|
||||
:key="item.value"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
/>
|
||||
<el-select v-model="form.ClinicalQuestionType" clearable @change="((val) => { typeChange(val, form) })">
|
||||
<el-option v-for="item of $d.ClinicalQuestionType" :key="item.value" :value="item.value"
|
||||
:label="item.label" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:readingUnit:qsList:title:qName')"
|
||||
prop="QuestionName"
|
||||
>
|
||||
<el-form-item :label="$t('trials:readingUnit:qsList:title:qName')" prop="QuestionName">
|
||||
<el-input v-model="form.QuestionName" />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:readingUnit:qsList:title:qNameEn')"
|
||||
prop="QuestionEnName"
|
||||
>
|
||||
<el-form-item :label="$t('trials:readingUnit:qsList:title:qNameEn')" prop="QuestionEnName">
|
||||
<el-input v-model="form.QuestionEnName" />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.ClinicalQuestionType === 'select' || form.ClinicalQuestionType === 'radio' || form.ClinicalQuestionType === 'checkbox'"
|
||||
:label="$t('trials:qcCfg:table:typeValue')"
|
||||
prop="TypeValue"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.TypeValue"
|
||||
:placeholder="$t('trials:qcCfg:message:typeValue')"
|
||||
/>
|
||||
:label="$t('trials:qcCfg:table:typeValue')" prop="TypeValue">
|
||||
<el-input v-model="form.TypeValue" :placeholder="$t('trials:qcCfg:message:typeValue')" />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.ClinicalQuestionType === 'number'"
|
||||
:label="$t('trials:processCfg:form:digitPlaces')"
|
||||
prop="DigitPlaces"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="form.DigitPlaces"
|
||||
style="line-height: 40px;"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.DigitPlaces"
|
||||
:key="`DigitPlaces${item.value}`"
|
||||
:label="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
<el-form-item v-if="form.ClinicalQuestionType === 'number'" :label="$t('trials:processCfg:form:digitPlaces')"
|
||||
prop="DigitPlaces">
|
||||
<el-radio-group v-model="form.DigitPlaces" style="line-height: 40px;">
|
||||
<el-radio v-for="item of $d.DigitPlaces" :key="`DigitPlaces${item.value}`" :label="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.ClinicalQuestionType === 'number'"
|
||||
:label="$t('trials:readingUnit:qsList:title:unit')"
|
||||
prop="Unit"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.Unit"
|
||||
/>
|
||||
<el-form-item v-if="form.ClinicalQuestionType === 'number'" :label="$t('trials:readingUnit:qsList:title:unit')"
|
||||
prop="Unit">
|
||||
<el-input v-model="form.Unit" />
|
||||
</el-form-item>
|
||||
<div v-if="form.ClinicalQuestionType === 'number'" style="background: #f8f8f8;padding: 10px 0px;border-radius: 10px;position: relative;margin-bottom: 10px;">
|
||||
<div v-if="form.ClinicalQuestionType === 'number'"
|
||||
style="background: #f8f8f8;padding: 10px 0px;border-radius: 10px;position: relative;margin-bottom: 10px;">
|
||||
<!-- 运算类型 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:readingUnit:qsList:title:customCalculateMark')"
|
||||
prop="CustomCalculateMark"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="form.CustomCalculateMark"
|
||||
style="line-height: 40px;"
|
||||
@change="(v) => CustomCalculateMarkChange(v)"
|
||||
>
|
||||
<el-form-item :label="$t('trials:readingUnit:qsList:title:customCalculateMark')" prop="CustomCalculateMark">
|
||||
<el-radio-group v-model="form.CustomCalculateMark" style="line-height: 40px;"
|
||||
@change="(v) => CustomCalculateMarkChange(v)">
|
||||
<div>
|
||||
<el-radio
|
||||
v-for="item of $d.ClinicalCustomCalculateMark"
|
||||
v-show="item.value <= 4"
|
||||
:key="`CustomCalculateMark${item.value}`"
|
||||
:label="item.value"
|
||||
>
|
||||
<el-radio v-for="item of $d.ClinicalCustomCalculateMark" v-show="item.value <= 4"
|
||||
:key="`CustomCalculateMark${item.value}`" :label="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</div>
|
||||
<div>
|
||||
<el-radio
|
||||
v-for="item of $d.ClinicalCustomCalculateMark"
|
||||
v-show="item.value > 4"
|
||||
:key="`CustomCalculateMark${item.value}`"
|
||||
:label="item.value"
|
||||
>
|
||||
<el-radio v-for="item of $d.ClinicalCustomCalculateMark" v-show="item.value > 4"
|
||||
:key="`CustomCalculateMark${item.value}`" :label="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</div>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-table
|
||||
v-if="isShow"
|
||||
ref="CalculateTable"
|
||||
:data="form.CalculateQuestions"
|
||||
style="margin: 10px;width: calc(100% - 20px)"
|
||||
size="small"
|
||||
>
|
||||
<el-table v-if="isShow" ref="CalculateTable" :data="form.CalculateQuestions"
|
||||
style="margin: 10px;width: calc(100% - 20px)" size="small">
|
||||
<!-- 序号 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:readingUnit:qsList:title:order')"
|
||||
min-width="70"
|
||||
>
|
||||
<el-table-column :label="$t('trials:readingUnit:qsList:title:order')" min-width="70">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.$index + 1 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 运算类型 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:readingUnit:qsList:title:customCalculateMark')"
|
||||
show-overflow-tooltip
|
||||
min-width="70"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-table-column :label="$t('trials:readingUnit:qsList:title:customCalculateMark')" show-overflow-tooltip
|
||||
min-width="70">
|
||||
<template>
|
||||
{{ $fd('ClinicalCustomCalculateMark', form.CustomCalculateMark) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 问题名称 -->
|
||||
<el-table-column
|
||||
:label="form.CustomCalculateMark >= 10 ? $t('trials:readingUnit:qsList:title:birthday') : $t('trials:readingUnit:qsList:title:qsName')"
|
||||
prop="TableQuestionId"
|
||||
show-overflow-tooltip
|
||||
min-width="180"
|
||||
>
|
||||
prop="TableQuestionId" show-overflow-tooltip min-width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="scope.row.TableQuestionId" clearable>
|
||||
<el-option v-for="item of Questions" :key="item.QuestionId" :disabled="item.QuestionId === scope.row.QuestionId" :label="item.QuestionName" :value="item.QuestionId" />
|
||||
<el-option v-for="item of Questions" :key="item.QuestionId"
|
||||
:disabled="item.QuestionId === scope.row.QuestionId" :label="item.QuestionName"
|
||||
:value="item.QuestionId" />
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="form.CustomCalculateMark === 11"
|
||||
:label="$t('trials:rpManage:table:expirationDate')"
|
||||
prop="TableQuestionId"
|
||||
show-overflow-tooltip
|
||||
min-width="180"
|
||||
>
|
||||
<el-table-column v-if="form.CustomCalculateMark === 11" :label="$t('trials:rpManage:table:expirationDate')"
|
||||
prop="TableQuestionId" show-overflow-tooltip min-width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="scope.row.QuestionId" clearable>
|
||||
<el-option v-for="item of Questions" :key="item.QuestionId" :disabled="item.QuestionId === scope.row.TableQuestionId" :label="item.QuestionName" :value="item.QuestionId" />
|
||||
<el-option v-for="item of Questions" :key="item.QuestionId"
|
||||
:disabled="item.QuestionId === scope.row.TableQuestionId" :label="item.QuestionName"
|
||||
:value="item.QuestionId" />
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="form.CustomCalculateMark <= 4"
|
||||
:label="$t('common:action:action')"
|
||||
prop="TableQuestionId"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column v-if="form.CustomCalculateMark <= 4" :label="$t('common:action:action')"
|
||||
prop="TableQuestionId" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<!-- 添加 -->
|
||||
<el-button
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
circle
|
||||
:title="$t('trials:readingUnit:qsList:title:add')"
|
||||
@click="addCustomCalculateMark(scope.$index)"
|
||||
/>
|
||||
<el-button icon="el-icon-plus" size="mini" circle :title="$t('trials:readingUnit:qsList:title:add')"
|
||||
@click="addCustomCalculateMark(scope.$index)" />
|
||||
<!-- 删除 -->
|
||||
<el-button
|
||||
icon="el-icon-minus"
|
||||
size="mini"
|
||||
circle
|
||||
:disabled="form.CalculateQuestions.length <= 2"
|
||||
<el-button icon="el-icon-minus" size="mini" circle :disabled="form.CalculateQuestions.length <= 2"
|
||||
:title="$t('trials:readingUnit:qsList:title:delete')"
|
||||
@click="deleteCustomCalculateMark(scope.$index)"
|
||||
/>
|
||||
@click="deleteCustomCalculateMark(scope.$index)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<el-form-item v-if="form.ClinicalQuestionType !== 'group' && form.ClinicalQuestionType !== 'summary'" :label="$t('trials:readingUnit:qsList:title:isShow')" prop="ClinicalQuestionShowEnum">
|
||||
<el-radio-group
|
||||
v-model="form.ClinicalQuestionShowEnum"
|
||||
@change="((val)=>{isShowQuestionChange(val, form)})"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.ClinicalQuestionShow"
|
||||
:key="`ClinicalQuestionShowEnum${item.value}`"
|
||||
:label="item.value"
|
||||
>
|
||||
<el-form-item v-if="form.ClinicalQuestionType !== 'group' && form.ClinicalQuestionType !== 'summary'"
|
||||
:label="$t('trials:readingUnit:qsList:title:isShow')" prop="ClinicalQuestionShowEnum">
|
||||
<el-radio-group v-model="form.ClinicalQuestionShowEnum"
|
||||
@change="((val) => { isShowQuestionChange(val, form) })">
|
||||
<el-radio v-for="item of $d.ClinicalQuestionShow" :key="`ClinicalQuestionShowEnum${item.value}`"
|
||||
:label="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.ClinicalQuestionType !== 'group' && form.ClinicalQuestionType !== 'summary' && form.ClinicalQuestionShowEnum===1"
|
||||
:label="$t('trials:readingUnit:qsList:title:parentId')"
|
||||
prop="ParentId"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.ParentId"
|
||||
clearable
|
||||
@change="((val)=>{parentQuestionChange(val, form)})"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of parentOptions"
|
||||
:key="`ParentId${item.QuestionId}`"
|
||||
:label="item.QuestionName"
|
||||
:value="item.Id"
|
||||
/>
|
||||
v-if="form.ClinicalQuestionType !== 'group' && form.ClinicalQuestionType !== 'summary' && form.ClinicalQuestionShowEnum === 1"
|
||||
:label="$t('trials:readingUnit:qsList:title:parentId')" prop="ParentId">
|
||||
<el-select v-model="form.ParentId" clearable @change="((val) => { parentQuestionChange(val, form) })">
|
||||
<el-option v-for="item of parentOptions" :key="`ParentId${item.QuestionId}`" :label="item.QuestionName"
|
||||
:value="item.Id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 显示时依赖父问题触发值 -->
|
||||
<el-form-item v-if="form.ParentId && form.ClinicalQuestionShowEnum===1" :label="$t('trials:qcCfg:table:parentTriggerValue')" prop="ParentTriggerValue">
|
||||
<el-form-item v-if="form.ParentId && form.ClinicalQuestionShowEnum === 1"
|
||||
:label="$t('trials:qcCfg:table:parentTriggerValue')" prop="ParentTriggerValue">
|
||||
<el-select v-model="form.ParentTriggerValue" clearable>
|
||||
<el-option
|
||||
v-for="item of parentTriggerValOptions"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value.toString()"
|
||||
/>
|
||||
<el-option v-for="item of parentTriggerValOptions" :key="item.id" :label="item.label"
|
||||
:value="item.value.toString()" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.ClinicalQuestionType !== 'group' && form.ClinicalQuestionType !== 'summary' && form.ClinicalQuestionType !== 'table'" :label="$t('trials:readingUnit:qsList:title:isRequired')" prop="IsRequired">
|
||||
<el-radio-group
|
||||
v-model="form.IsRequired"
|
||||
:disabled="form.IsJudgeQuestion===true || form.ShowQuestion===2"
|
||||
@change="((val)=>{isRequiredChange(val, form)})"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.QuestionRequired"
|
||||
:key="`QuestionRequired${item.value}`"
|
||||
:label="item.value"
|
||||
>
|
||||
<el-form-item
|
||||
v-if="form.ClinicalQuestionType !== 'group' && form.ClinicalQuestionType !== 'summary' && form.ClinicalQuestionType !== 'table'"
|
||||
:label="$t('trials:readingUnit:qsList:title:isRequired')" prop="IsRequired">
|
||||
<el-radio-group v-model="form.IsRequired" :disabled="form.IsJudgeQuestion === true || form.ShowQuestion === 2"
|
||||
@change="((val) => { isRequiredChange(val, form) })">
|
||||
<el-radio v-for="item of $d.QuestionRequired" :key="`QuestionRequired${item.value}`" :label="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.ClinicalQuestionType !== 'group' && form.ClinicalQuestionType !== 'summary' && form.IsRequired === 1"
|
||||
:label="$t('trials:readingUnit:qsList:title:relevanceId')"
|
||||
prop="RelevanceId"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.RelevanceId"
|
||||
clearable
|
||||
@change="((val)=>{relevanceQuestionChange(val, form)})"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of parentOptions"
|
||||
:key="`RelevanceId${item.QuestionId}`"
|
||||
:label="item.QuestionName"
|
||||
:value="item.Id"
|
||||
/>
|
||||
:label="$t('trials:readingUnit:qsList:title:relevanceId')" prop="RelevanceId">
|
||||
<el-select v-model="form.RelevanceId" clearable @change="((val) => { relevanceQuestionChange(val, form) })">
|
||||
<el-option v-for="item of parentOptions" :key="`RelevanceId${item.QuestionId}`" :label="item.QuestionName"
|
||||
:value="item.Id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 必填触发值 -->
|
||||
<el-form-item
|
||||
v-if="form.RelevanceId && form.IsRequired === 1"
|
||||
:label="$t('trials:readingUnit:qsList:title:relevanceValueList')"
|
||||
prop="RelevanceValue"
|
||||
>
|
||||
<el-form-item v-if="form.RelevanceId && form.IsRequired === 1"
|
||||
:label="$t('trials:readingUnit:qsList:title:relevanceValueList')" prop="RelevanceValue">
|
||||
<el-select v-model="form.RelevanceValue" clearable>
|
||||
<el-option
|
||||
v-for="item of reParentTriggerValOptions"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
<el-option v-for="item of reParentTriggerValOptions" :key="item.id" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.ClinicalQuestionType !== 'group'" prop="GroupId" :label="$t('trials:readingUnit:qsList:title:groupNameEn')">
|
||||
<el-form-item v-if="form.ClinicalQuestionType !== 'group'" prop="GroupId"
|
||||
:label="$t('trials:readingUnit:qsList:title:groupNameEn')">
|
||||
<el-select v-model="form.GroupId" clearable :disabled="isParentExistGroup">
|
||||
<el-option
|
||||
v-for="group of groupOptions"
|
||||
:key="group.Id"
|
||||
:label="language === 'zh' ? group.QuestionName : group.QuestionEnName"
|
||||
:value="group.Id"
|
||||
/>
|
||||
<el-option v-for="group of groupOptions" :key="group.Id"
|
||||
:label="language === 'zh' ? group.QuestionName : group.QuestionEnName" :value="group.Id" />
|
||||
</el-select>
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.ClinicalQuestionType === 'time' && [2, 3].includes(clinicalInfo.ClinicalDataLevel)" :label="$t('trials:readingUnit:qsList:title:IsStudyDate')" prop="IsCheckDate">
|
||||
<el-radio-group
|
||||
v-model="form.IsCheckDate"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.YesOrNo"
|
||||
:key="`IsCheckDate${item.value}`"
|
||||
:label="item.value"
|
||||
>
|
||||
<el-form-item v-if="form.ClinicalQuestionType === 'time' && [2, 3].includes(clinicalInfo.ClinicalDataLevel)"
|
||||
:label="$t('trials:readingUnit:qsList:title:IsStudyDate')" prop="IsCheckDate">
|
||||
<el-radio-group v-model="form.IsCheckDate">
|
||||
<el-radio v-for="item of $d.YesOrNo" :key="`IsCheckDate${item.value}`" :label="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.ClinicalQuestionType !== 'table' && form.ClinicalQuestionType !== 'group' && form.ClinicalQuestionType !== 'summary' && form.ClinicalQuestionType !== 'number' && form.ClinicalQuestionType !== 'select'" :label="$t('trials:readingUnit:qsList:title:MaxAnswerLength')">
|
||||
<el-input-number
|
||||
v-model="form.MaxAnswerLength"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
:max="2000"
|
||||
/>
|
||||
<el-form-item
|
||||
v-if="form.ClinicalQuestionType !== 'table' && form.ClinicalQuestionType !== 'group' && form.ClinicalQuestionType !== 'summary' && form.ClinicalQuestionType !== 'number' && form.ClinicalQuestionType !== 'select'"
|
||||
:label="$t('trials:readingUnit:qsList:title:MaxAnswerLength')">
|
||||
<el-input-number v-model="form.MaxAnswerLength" controls-position="right" :min="0" :max="2000" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.ClinicalQuestionType === 'table'" :label="$t('trials:readingUnit:qsList:title:maxQuestionCount')">
|
||||
<el-input-number
|
||||
v-model="form.MaxQuestionCount"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
:max="10"
|
||||
/>
|
||||
<el-form-item v-if="form.ClinicalQuestionType === 'table'"
|
||||
:label="$t('trials:readingUnit:qsList:title:maxQuestionCount')">
|
||||
<el-input-number v-model="form.MaxQuestionCount" controls-position="right" :min="0" :max="10" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.ClinicalQuestionType === 'upload'" :label="$t('trials:readingUnit:qsList:title:imageCount')">
|
||||
<el-form-item v-if="form.ClinicalQuestionType === 'upload'"
|
||||
:label="$t('trials:readingUnit:qsList:title:imageCount')">
|
||||
<el-input-number v-model="form.ImageCount" controls-position="right" :min="1" :max="10" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('trials:readingUnit:qsList:title:order')" prop="ShowOrder">
|
||||
<el-input-number
|
||||
v-model="form.ShowOrder"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
/>
|
||||
<el-input-number v-model="form.ShowOrder" controls-position="right" :min="0" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
||||
<el-form-item>
|
||||
<!-- 取消 -->
|
||||
<el-button
|
||||
:disabled="btnLoading"
|
||||
size="small"
|
||||
type="primary"
|
||||
@click="close"
|
||||
>
|
||||
<el-button :disabled="btnLoading" size="small" type="primary" @click="close">
|
||||
{{ $t('common:button:cancel') }}
|
||||
</el-button>
|
||||
<!-- 保存 -->
|
||||
|
@ -345,7 +203,7 @@
|
|||
</template>
|
||||
<script>
|
||||
import { addOrUpdateTrialClinicalQuestion, getTrialClinicalOtherQuestionList, getTrialClinicalGroupQuestionList, getClinicalCalculateQuestions } from '@/api/dictionary'
|
||||
import {mapGetters} from "vuex";
|
||||
import { mapGetters } from "vuex";
|
||||
export default {
|
||||
name: 'AddOrUpdateClinicalData',
|
||||
props: {
|
||||
|
@ -429,11 +287,11 @@ export default {
|
|||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||
],
|
||||
QuestionName: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||
{ max: 300, message: this.$t('common:ruleMessage:maxLength') + ' 300' }],
|
||||
{ max: 300, message: this.$t('common:ruleMessage:maxLength') + ' 300' }],
|
||||
QuestionGenre: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }],
|
||||
TypeValue: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||
{ validator: validateTypeVal, trigger: 'blur' },
|
||||
{ max: 500, message: this.$t('common:ruleMessage:maxLength') + ' 500' }],
|
||||
{ validator: validateTypeVal, trigger: 'blur' },
|
||||
{ max: 500, message: this.$t('common:ruleMessage:maxLength') + ' 500' }],
|
||||
DictionaryCode: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }],
|
||||
IsCheckDate: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }],
|
||||
ClinicalQuestionShowEnum: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }],
|
||||
|
@ -446,7 +304,7 @@ export default {
|
|||
RelevanceId: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }],
|
||||
RelevanceValue: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }],
|
||||
GroupName: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||
{ max: 50, message: this.$t('common:ruleMessage:maxLength') + ' 50' }]
|
||||
{ max: 50, message: this.$t('common:ruleMessage:maxLength') + ' 50' }]
|
||||
},
|
||||
Questions: [],
|
||||
loading: false,
|
||||
|
@ -466,10 +324,10 @@ export default {
|
|||
this.getClinicalCalculateQuestions()
|
||||
},
|
||||
methods: {
|
||||
getClinicalCalculateQuestions() {
|
||||
getClinicalCalculateQuestions(type = null) {
|
||||
getClinicalCalculateQuestions({
|
||||
TrialClinicalId: this.clinicalId,
|
||||
ClinicalQuestionType: 'time'
|
||||
ClinicalQuestionType: type || 'time'
|
||||
}).then(res => {
|
||||
this.Questions = res.Result
|
||||
})
|
||||
|
@ -579,7 +437,7 @@ export default {
|
|||
}
|
||||
if (!this.form.Id) {
|
||||
if (this.list.length > 0) {
|
||||
let max = Math.max(...this.list.map(item=>item.ShowOrder))
|
||||
let max = Math.max(...this.list.map(item => item.ShowOrder))
|
||||
this.form.ShowOrder = max + 1
|
||||
}
|
||||
}
|
||||
|
@ -663,6 +521,7 @@ export default {
|
|||
} else {
|
||||
data.LesionType = null
|
||||
}
|
||||
this.getClinicalCalculateQuestions(val)
|
||||
data.TypeValue = ''
|
||||
data.ValueType = ''
|
||||
data.Unit = ''
|
||||
|
@ -718,5 +577,4 @@ export default {
|
|||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
<style lang="scss" scoped></style>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue