From 5b9d05a0d2f5a5641056fcbdb36ca31d8dbb6fd4 Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Fri, 22 May 2026 17:30:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E7=AE=A1=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/activities/ActivityList.vue | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/views/activities/ActivityList.vue b/src/views/activities/ActivityList.vue index 3f248e7..8cb619e 100644 --- a/src/views/activities/ActivityList.vue +++ b/src/views/activities/ActivityList.vue @@ -452,11 +452,12 @@ const bookingForm = reactive({ days: [] as BookingDayRow[], }) -/** 单场活动仍可编辑表单,但场次与预约配置随活动一并保存;已结束时不再提交场次以避免误操作 */ +/** 编辑活动弹窗内加载场次预约设置 */ const activityModalBookingLoading = ref(false) +/** 已结束时默认冻结场次提交(防误操作);超级管理员仍可编辑并随活动一并保存场次 */ const canSaveSessionsWithActivity = computed( - () => formScheduleStatus.value !== 'ended', + () => formScheduleStatus.value !== 'ended' || currentUser.value?.full_admin_access === true, ) const reservationKindLabelBookingField = computed(() => { @@ -925,12 +926,12 @@ function isActivityCreator(row: Activity): boolean { return sid != null && Number(sid) === Number(currentUser.value?.id) } -/** 删除:仅限从未出现过「审核通过」记录的待审核或已退回活动;已通过至少一次后不能再删 */ +/** 删除:超管可操作(无报名记录时接口可删);非超管仍为待审/退回且无「曾审核通过」记录时由创建人删除 */ function canEditActivityRow(row: Activity): boolean { + if (isSuperAdmin()) return true if ((row.approve_audit_logs_count ?? 0) > 0) return false const st = row.audit_status if (st !== 'pending' && st !== 'rejected') return false - if (isSuperAdmin()) return true return isActivityCreator(row) } @@ -939,15 +940,11 @@ function isPlatformSubmittedActivity(row: Activity): boolean { return row.submitted_by == null } -/** 列表「编辑」:创建人或超管代录;待审核时仅创建人/超管(平台代录)可继续改;已结束不可编辑 */ +/** 列表「编辑」:超管可编辑全部(含已结束);非超管仅创建人且未结束时可改 */ function canShowActivityEditButton(row: Activity): boolean { + if (isSuperAdmin()) return true if (row.schedule_status === 'ended') return false - if (row.audit_status === 'pending') { - return isActivityCreator(row) || (isSuperAdmin() && isPlatformSubmittedActivity(row)) - } - if (isActivityCreator(row)) return true - if (isSuperAdmin() && isPlatformSubmittedActivity(row)) return true - return false + return isActivityCreator(row) } /** 列表操作列:已退回时创建人显示「编辑并提交」 */ @@ -957,8 +954,8 @@ function activityListEditButtonLabel(row: Activity): string { } function assertCanOpenActivityEditor(row: Activity): boolean { + if (isSuperAdmin()) return true if (isActivityCreator(row)) return true - if (isSuperAdmin() && isPlatformSubmittedActivity(row)) return true Message.warning( isPlatformSubmittedActivity(row) ? '该平台代录的活动仅超级管理员可编辑' @@ -1002,6 +999,7 @@ function canOpenActivityVerify(row: Activity): boolean { } function assertCanEditActivityRow(row: Activity, _action: string): boolean { + if (isSuperAdmin()) return true if (canEditActivityRow(row)) return true if ((row.approve_audit_logs_count ?? 0) > 0) { Message.warning('该活动曾审核通过,无法删除')