自定义结构化录入的临床数据,配置工具存在问题
continuous-integration/drone/push Build is running Details

main
wangxiaoshuang 2025-06-20 13:17:21 +08:00
parent 3d6cd67493
commit 2a1dc4d2dd
5 changed files with 486 additions and 1317 deletions

View File

@ -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
})
// findnumber
console.log('find', find)
if (find) {
var num = this.logic(v)
if (num !== false) {
@ -520,7 +428,6 @@ export default {
return o.TableQuestionId === questionId
})
// findnumber
console.log('find', find)
// findnumber
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;

View File

@ -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>

View File

@ -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>

View File

@ -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>