裁判规则配置在基线添加应用到随访的功能
continuous-integration/drone/push Build is passing Details

uat_us^2
caiyiling 2026-08-19 10:57:54 +08:00
parent 7f65376c94
commit 120f5db62a
2 changed files with 53 additions and 0 deletions

View File

@ -544,3 +544,11 @@ export function copyTrialQuestionVisitJudgeRule(data) {
data
})
}
export function applyBaseLineTrialQuestionVisitJudgeRule(data) {
return request({
url: `/ReadingQuestion/applyBaseLineTrialQuestionVisitJudgeRule`,
method: 'post',
data
})
}

View File

@ -4,6 +4,7 @@
<el-tab-pane v-for="visit in visitPlanOptions" :key="visit.Id"
:label="visit.VisitName" :name="visit.Id">
<div v-show="!isSign" class="visit-tabs-actions">
<!-- 批量保存 -->
<el-button
v-hasPermi="['trials:trials-panel:setting:reading-unit:edit']"
:disabled="btnLoading || questionListMap[visit.Id] && questionListMap[visit.Id].length === 0"
@ -14,6 +15,7 @@
>
{{ $t('common:button:batchSave') }}
</el-button>
<!-- 复制 -->
<el-button
v-show="visitPlanOptions.length > 1"
v-hasPermi="['trials:trials-panel:setting:reading-unit:edit']"
@ -25,6 +27,18 @@
>
{{ $t('common:button:copy') }}
</el-button>
<!-- 应用到随访 -->
<el-button
v-show="visitPlanOptions.length > 1 && visit.VisitNum === 0"
v-hasPermi="['trials:trials-panel:setting:reading-unit:edit']"
:disabled="btnLoading || questionListMap[visit.Id] && questionListMap[visit.Id].length === 0"
:loading="btnLoading"
size="small"
type="primary"
@click="applyToFollowup"
>
{{ $t('trials:adRules:button:applyToFollowup') }}
</el-button>
</div>
<el-collapse v-if="questionListMap[visit.Id]" v-model="visitActiveNamesMap[visit.Id]" style="border-top:none;">
<el-collapse-item v-for="(item, index) of questionListMap[visit.Id]"
@ -337,6 +351,7 @@ import {
getTrialQuestionVisitJudgeRule,
setTrialQuestionVisitJudgeRule,
copyTrialQuestionVisitJudgeRule,
applyBaseLineTrialQuestionVisitJudgeRule
} from '@/api/trials/reading'
import { getTrialVisitStageSelect } from '@/api/trials'
@ -758,6 +773,36 @@ export default {
this.loading = false
}
},
async applyToFollowup() {
try {
await this.$confirm(
this.$t('trials:adRules:message:msg10'),
{
type: 'warning',
distinguishCancelAndClose: true,
}
)
this.btnLoading = true
this.loading = true
const res = await applyBaseLineTrialQuestionVisitJudgeRule({
trialReadingCriterionId: this.trialReadingCriterionId
})
if (res.IsSuccess) {
this.questionListMap = {}
this.visitActiveNamesMap = {}
if (this.activeVisitTab) {
await this.getList(this.activeVisitTab)
}
this.$message.success(this.$t('trials:adRules:message:msg9'))
}
} catch (e) {
if (e === 'cancel') return
console.log(e)
} finally {
this.btnLoading = false
this.loading = false
}
},
visitTagClose2(index, indexA, visitKey) {
this.$confirm(this.$t('trials:adRules:message:msg1')).then(() => {
this.questionListMap[visitKey][index].AnswerGroup2List.splice(indexA, 1)