import React, { useState, useEffect } from 'react'; import { LogOut, User, Calendar, Users, TrendingUp, Clock, MessageSquare, Plus } from 'lucide-react'; import apiClient from '../utils/apiClient'; import { Link } from 'react-router-dom'; import { buildApiUrl, API_ENDPOINTS } from '../config/api'; import MeetingTimeline from '../components/MeetingTimeline'; import './Dashboard.css'; const Dashboard = ({ user, onLogout }) => { const [userInfo, setUserInfo] = useState(null); const [meetings, setMeetings] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); useEffect(() => { fetchUserData(); }, [user.user_id]); const fetchUserData = async () => { try { setLoading(true); console.log('Fetching user data for user_id:', user.user_id); const userResponse = await apiClient.get(buildApiUrl(API_ENDPOINTS.USERS.DETAIL(user.user_id))); console.log('User response:', userResponse.data); setUserInfo(userResponse.data); const meetingsResponse = await apiClient.get(buildApiUrl(`${API_ENDPOINTS.MEETINGS.LIST}?user_id=${user.user_id}`)); console.log('Meetings response:', meetingsResponse.data); setMeetings(meetingsResponse.data); } catch (err) { console.error('Error fetching data:', err); setError('获取数据失败,请刷新重试'); } finally { setLoading(false); } }; const handleDeleteMeeting = async (meetingId) => { try { await apiClient.delete(buildApiUrl(API_ENDPOINTS.MEETINGS.DELETE(meetingId))); // Refresh meetings list const meetingsResponse = await apiClient.get(buildApiUrl(`${API_ENDPOINTS.MEETINGS.LIST}?user_id=${user.user_id}`)); setMeetings(meetingsResponse.data); } catch (err) { console.error('Error deleting meeting:', err); // You might want to show an error message to the user here } }; const groupMeetingsByDate = (meetings) => { return meetings.reduce((acc, meeting) => { const date = new Date(meeting.meeting_time || meeting.created_at).toISOString().split('T')[0]; if (!acc[date]) { acc[date] = []; } acc[date].push(meeting); return acc; }, {}); }; const formatDate = (dateString) => { const date = new Date(dateString); return date.toLocaleDateString('zh-CN', { year: 'numeric', month: 'long', day: 'numeric' }); }; if (loading) { return (
加载中...
{error}
{userInfo?.email}
加入时间:{formatDate(userInfo?.created_at)}
发起的会议
参加的会议
相关会议总数
按时间顺序展示您参与的所有会议