// 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();
});
}
});