// Meetings Management JavaScript let currentMeetings = []; let currentFilter = 'all'; // 检查登录状态 async function checkLogin() { try { const response = await window.DAELAPI.auth.checkAuth(); if (!response.authenticated) { window.location.href = 'login.html'; return false; } return true; } catch (error) { window.location.href = 'login.html'; return false; } } // 加载组会列表 async function loadMeetings() { try { const response = await window.DAELAPI.meetings.getMeetings(); currentMeetings = response.meetings; displayMeetings(currentMeetings); } catch (error) { console.error('Failed to load meetings:', error); document.getElementById('meetings-list').innerHTML = '

加载失败

'; } } // 显示组会列表 function displayMeetings(meetings) { const container = document.getElementById('meetings-list'); // 根据筛选器过滤 let filteredMeetings = meetings; if (currentFilter !== 'all') { filteredMeetings = meetings.filter(m => m.status === currentFilter); } if (filteredMeetings.length === 0) { container.innerHTML = '

暂无组会

'; return; } container.innerHTML = filteredMeetings.map(meeting => { const date = new Date(meeting.date); const isOwner = meeting.organizer_id === (window.currentUser?.id); return `

${meeting.title}

${getStatusText(meeting.status)} ${getTypeText(meeting.meeting_type)}

${meeting.description || ''}

📅 ${date.toLocaleDateString('zh-CN')} 🕐 ${meeting.time || ''} 📍 ${meeting.location || '未指定'} 👤 组织者: ${meeting.organizer_name || ''} 👥 报名: ${meeting.attendee_count || 0} 人
${isOwner ? ` ` : ''}
`; }).join(''); } // 状态颜色 function getStatusColor(status) { const colors = { 'planned': 'bg-blue-100 text-blue-800', 'ongoing': 'bg-green-100 text-green-800', 'completed': 'bg-gray-100 text-gray-800', 'cancelled': 'bg-red-100 text-red-800' }; return colors[status] || 'bg-gray-100 text-gray-800'; } // 状态文本 function getStatusText(status) { const texts = { 'planned': '计划中', 'ongoing': '进行中', 'completed': '已结束', 'cancelled': '已取消' }; return texts[status] || status; } // 类型文本 function getTypeText(type) { const texts = { 'weekly': '周会', 'monthly': '月会', 'special': '专题会' }; return texts[type] || type; } // 显示组会表单 function showMeetingForm(meetingId = null) { const modal = document.getElementById('meeting-modal'); const form = document.getElementById('meeting-form'); const title = document.getElementById('meeting-modal-title'); if (meetingId) { const meeting = currentMeetings.find(m => m.id === meetingId); if (meeting) { title.textContent = '编辑组会'; document.getElementById('meeting-id').value = meeting.id; document.getElementById('meeting-title').value = meeting.title; document.getElementById('meeting-description').value = meeting.description || ''; document.getElementById('meeting-date').value = meeting.date; document.getElementById('meeting-time').value = meeting.time || ''; document.getElementById('meeting-location').value = meeting.location || ''; document.getElementById('meeting-type').value = meeting.meeting_type; document.getElementById('meeting-status').value = meeting.status; } } else { title.textContent = '创建组会'; form.reset(); document.getElementById('meeting-id').value = ''; // 设置默认日期为今天 const today = new Date().toISOString().split('T')[0]; document.getElementById('meeting-date').value = today; } modal.classList.remove('hidden'); } // 关闭组会表单 function closeMeetingForm() { document.getElementById('meeting-modal').classList.add('hidden'); } // 保存组会 async function saveMeeting(event) { event.preventDefault(); const meetingId = document.getElementById('meeting-id').value; const meetingData = { title: document.getElementById('meeting-title').value, description: document.getElementById('meeting-description').value, date: document.getElementById('meeting-date').value, time: document.getElementById('meeting-time').value, location: document.getElementById('meeting-location').value, meeting_type: document.getElementById('meeting-type').value, status: document.getElementById('meeting-status').value }; try { if (meetingId) { await window.DAELAPI.meetings.updateMeeting(meetingId, meetingData); } else { await window.DAELAPI.meetings.createMeeting(meetingData); } closeMeetingForm(); loadMeetings(); } catch (error) { alert('保存失败: ' + error.message); } } // 查看组会详情 async function viewMeeting(meetingId) { try { const response = await window.DAELAPI.meetings.getMeeting(meetingId); const meeting = response.meeting; displayMeetingDetail(meeting); } catch (error) { alert('加载失败: ' + error.message); } } // 显示组会详情 function displayMeetingDetail(meeting) { const modal = document.getElementById('meeting-detail-modal'); const container = document.getElementById('meeting-detail-content'); const date = new Date(meeting.date); const isOwner = meeting.organizer_id === (window.currentUser?.id); container.innerHTML = `

${meeting.title}

日期时间: ${date.toLocaleDateString('zh-CN')} ${meeting.time || ''}
地点: ${meeting.location || '未指定'}
组织者: ${meeting.organizer_name || ''}
类型: ${getTypeText(meeting.meeting_type)}
状态: ${getStatusText(meeting.status)}
${meeting.description ? `
描述:

${meeting.description}

` : ''}

参会人员 (${meeting.attendees?.length || 0})

${meeting.attendees && meeting.attendees.length > 0 ? meeting.attendees.map(attendee => `
${attendee.username} ${getStatusText(attendee.status)}
`).join('') : '

暂无报名

' }
${!isOwner && meeting.status === 'planned' ? ` ` : ''}
${meeting.meeting_notes ? `

会议记录

${meeting.meeting_notes}
` : ''} ${meeting.files && meeting.files.length > 0 ? `

附件 (${meeting.files.length})

${meeting.files.map(file => `
${file.name}
`).join('')}
` : ''} ${isOwner ? `
` : ''} `; modal.classList.remove('hidden'); } // 关闭组会详情 function closeMeetingDetail() { document.getElementById('meeting-detail-modal').classList.add('hidden'); } // 编辑组会 function editMeeting(meetingId) { closeMeetingDetail(); showMeetingForm(meetingId); } // 删除组会 async function deleteMeeting(meetingId) { if (!confirm('确定要删除这个组会吗?')) return; try { await window.DAELAPI.meetings.deleteMeeting(meetingId); closeMeetingDetail(); loadMeetings(); } catch (error) { alert('删除失败: ' + error.message); } } // 报名参会 async function registerForMeeting(meetingId) { try { await window.DAELAPI.meetings.registerMeeting(meetingId); alert('报名成功!'); viewMeeting(meetingId); // 刷新详情 } catch (error) { alert('报名失败: ' + error.message); } } // 筛选器切换 document.querySelectorAll('.filter-tab').forEach(tab => { tab.addEventListener('click', () => { document.querySelectorAll('.filter-tab').forEach(t => { t.classList.remove('active', 'border-black', 'text-black'); t.classList.add('text-gray-500'); }); tab.classList.add('active', 'border-black', 'text-black'); tab.classList.remove('text-gray-500'); currentFilter = tab.dataset.filter; displayMeetings(currentMeetings); }); }); // 初始化 document.addEventListener('DOMContentLoaded', async () => { if (await checkLogin()) { // 获取当前用户信息 try { const authResponse = await window.DAELAPI.auth.checkAuth(); window.currentUser = authResponse.user; } catch (error) { console.error('Failed to get user info:', error); } loadMeetings(); // 退出按钮 document.getElementById('logout-btn').addEventListener('click', async () => { await logout(); }); } });