From 5aefcf8d7d43b7dec0f9a499ea056597f6a68075 Mon Sep 17 00:00:00 2001 From: chenhao Date: Fri, 24 Apr 2026 17:30:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E4=BC=9A=E8=AE=AE?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=80=BB=E8=BE=91=E5=92=8C=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重构 `Meetings.tsx` 中的 `canManageRealtimeMeeting` 为 `canManageMeeting`,并更新相关调用 - 在会议卡片中添加创建人信息,并优化会议时间显示 - 增加权限检查,确保只有会议创建人或管理员可以编辑参会人 --- frontend/src/pages/business/Meetings.tsx | 26 ++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/business/Meetings.tsx b/frontend/src/pages/business/Meetings.tsx index 23bb5e7..fe3be1b 100644 --- a/frontend/src/pages/business/Meetings.tsx +++ b/frontend/src/pages/business/Meetings.tsx @@ -84,7 +84,7 @@ const shouldPollMeetingCard = (item: MeetingVO) => || item.realtimeSessionStatus === 'ACTIVE' || isPausedRealtimeSessionStatus(item.realtimeSessionStatus); -const canManageRealtimeMeeting = (meeting: MeetingVO) => { +const canManageMeeting = (meeting: MeetingVO) => { try { const profileStr = sessionStorage.getItem('userProfile'); if (!profileStr) { @@ -97,6 +97,8 @@ const canManageRealtimeMeeting = (meeting: MeetingVO) => { } }; +const canManageRealtimeMeeting = (meeting: MeetingVO) => canManageMeeting(meeting); + const applyRealtimeSessionStatus = (item: MeetingVO, sessionStatus?: RealtimeMeetingSessionStatus): MeetingVO => { if (!sessionStatus) { return item; @@ -203,6 +205,7 @@ const MeetingCardItem: React.FC<{ item: MeetingVO, config: any, fetchData: () => onOpenMeeting(item)} className="meeting-card" style={{ borderRadius: 16, border: '1px solid var(--app-border-color)', background: 'var(--app-bg-card)', backdropFilter: 'blur(16px)', height: '220px', position: 'relative', boxShadow: 'var(--app-shadow)', transition: 'all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1)' }} styles={{ body: { padding: 0, display: 'flex', flexDirection: 'row', height: '100%' } }}>
+ {canManageMeeting(item) && (
e.stopPropagation()}>
onEditParticipants(item)} />
@@ -217,6 +220,7 @@ const MeetingCardItem: React.FC<{ item: MeetingVO, config: any, fetchData: () =>
+ )}
@@ -226,7 +230,10 @@ const MeetingCardItem: React.FC<{ item: MeetingVO, config: any, fetchData: () => {item.title}
-
{dayjs(item.meetingTime).format('YYYY-MM-DD HH:mm')}
+
+
{dayjs(item.meetingTime).format('YYYY-MM-DD HH:mm')}
+
{item.creatorName || '未知'}
+
{isProcessing ? (
{ }; const openEditParticipants = (meeting: MeetingVO) => { + if (!canManageMeeting(meeting)) { + message.warning('只有会议创建人或管理员可以修改参会人'); + return; + } setEditingMeeting(meeting); participantsEditForm.setFieldsValue({ participantIds: meeting.participantIds || [] @@ -517,6 +528,13 @@ const Meetings: React.FC = () => { width: 180, render: (text: string) => dayjs(text).format('YYYY-MM-DD HH:mm') }, + { + title: '创建人', + dataIndex: 'creatorName', + key: 'creatorName', + width: 120, + render: (text: string) => {text || '未知'} + }, { title: '参会人', dataIndex: 'participants', @@ -529,7 +547,7 @@ const Meetings: React.FC = () => { title: '操作', key: 'action', width: 160, - render: (_: any, record: MeetingVO) => ( + render: (_: any, record: MeetingVO) => canManageMeeting(record) ? ( { - ) + ) : - } ];