受试者中止状态,需要填写原因
continuous-integration/drone/push Build encountered an error Details

uat
wangxiaoshuang 2025-09-16 10:47:34 +08:00
parent 3b96a5326e
commit 27caa4ff77
1 changed files with 24 additions and 40 deletions

View File

@ -1,60 +1,39 @@
<template> <template>
<el-form <el-form ref="subjectStatusForm" v-loading="loading" :model="form" :rules="rules" size="small" label-width="160px">
ref="subjectStatusForm"
v-loading="loading"
:model="form"
:rules="rules"
size="small"
label-width="160px"
>
<div class="base-dialog-body"> <div class="base-dialog-body">
<!-- Status --> <!-- Status -->
<el-form-item :label="$t('trials:subject:table:status')" prop="Status"> <el-form-item :label="$t('trials:subject:table:status')" prop="Status">
<el-radio-group v-model="form.Status" :disabled="originalStatus === 2"> <el-radio-group v-model="form.Status" :disabled="originalStatus === 2" @change="handleChange">
<el-radio v-for="item of $d.Subject_Visit_Status" :label="item.value" :key="item.id">{{item.label}}</el-radio> <el-radio v-for="item of $d.Subject_Visit_Status" :label="item.value" :key="item.id">
{{ item.label }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- Out Visit Date --> <!-- Out Visit Date -->
<el-form-item v-if="form.Status == 2" :label="$t('trials:subject:table:outVisitDate')" prop="VisitOverTime"> <el-form-item v-if="form.Status == 2" :label="$t('trials:subject:table:outVisitDate')" prop="VisitOverTime">
<el-date-picker <el-date-picker v-model="form.VisitOverTime" type="date" :picker-options="pickerOption"
v-model="form.VisitOverTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" />
type="date"
:picker-options="pickerOption"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
/>
</el-form-item> </el-form-item>
<!-- 末次访视 --> <!-- 末次访视 -->
<el-form-item v-if="form.Status===2" :label="$t('trials:subject:table:finalSubjectVisit')" prop="FinalSubjectVisitId"> <el-form-item v-if="form.Status === 2" :label="$t('trials:subject:table:finalSubjectVisit')"
<el-select prop="FinalSubjectVisitId">
v-model="form.FinalSubjectVisitId" <el-select v-model="form.FinalSubjectVisitId" clearable filterable style="width:100%"
clearable :disabled="originalStatus === 2">
filterable <el-option v-for="item in subjectVisitOptions" :key="item.Id" :label="item.VisitName" :value="item.Id" />
style="width:100%"
:disabled="originalStatus === 2"
>
<el-option
v-for="item in subjectVisitOptions"
:key="item.Id"
:label="item.VisitName"
:value="item.Id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 结束访视的原因 --> <!-- 结束访视的原因 -->
<el-form-item v-if="form.Status === 2" :label="$t('trials:subject:table:outVisitReason')" prop="Reason"> <el-form-item v-if="form.Status === 2" :label="$t('trials:subject:table:outVisitReason')" prop="Reason">
<el-input v-model="form.Reason" type="textarea" autosize /> <el-input v-model="form.Reason" type="textarea" autosize />
</el-form-item> </el-form-item>
<!-- 访视中止的原因 -->
<el-form-item v-if="form.Status === 3" :label="$t('trials:subject:table:outVisitReason')" prop="SuspendReason">
<el-input v-model="form.SuspendReason" type="textarea" autosize />
</el-form-item>
</div> </div>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;"> <div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
<el-form-item style="text-align:right;"> <el-form-item style="text-align:right;">
<!-- 取消 --> <!-- 取消 -->
<el-button <el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancel">
:disabled="btnLoading"
size="small"
type="primary"
@click="handleCancel"
>
{{ $t('common:button:cancel') }} {{ $t('common:button:cancel') }}
</el-button> </el-button>
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave"> <el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">
@ -83,12 +62,14 @@ export default {
OutEnrollmentTime: '', OutEnrollmentTime: '',
Reason: '', Reason: '',
VisitOverTime: '', VisitOverTime: '',
FinalSubjectVisitId: '' FinalSubjectVisitId: '',
SuspendReason: ''
}, },
rules: { rules: {
OutEnrollmentTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }], OutEnrollmentTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }],
FinalSubjectVisitId: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }], FinalSubjectVisitId: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }],
Reason: [{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }], Reason: [{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }],
SuspendReason: [{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }],
VisitOverTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }] VisitOverTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }]
}, },
pickerOption: { pickerOption: {
@ -108,6 +89,9 @@ export default {
this.initForm() this.initForm()
}, },
methods: { methods: {
handleChange() {
if (this.form.Status !== 3) this.form.SuspendReason = ''
},
async initForm() { async initForm() {
this.loading = true this.loading = true
const { Result } = await getSubjectVisitSelectOptions(this.data.Id) const { Result } = await getSubjectVisitSelectOptions(this.data.Id)