import React from 'react'; import { useNavigate } from 'react-router-dom'; import { App, Avatar, Button, Card, Divider, Dropdown, Space, Tag, Timeline, Typography, } from 'antd'; import { ArrowRightOutlined, CalendarOutlined, ClockCircleOutlined, DeleteOutlined, EditOutlined, FileTextOutlined, MoreOutlined, TeamOutlined, UserOutlined, } from '@ant-design/icons'; import MarkdownRenderer from './MarkdownRenderer'; import tools from '../utils/tools'; const { Title, Text, Paragraph } = Typography; const formatDateMeta = (date) => { const parsed = new Date(date); if (Number.isNaN(parsed.getTime())) { return { main: date, sub: '' }; } return { main: tools.formatDateLong(date), sub: parsed.toLocaleDateString('zh-CN', { weekday: 'long' }), }; }; const MeetingTimeline = ({ meetingsByDate, currentUser, onDeleteMeeting, hasMore = false, onLoadMore, loadingMore = false, filterType = 'all', searchQuery = '', selectedTags = [], }) => { const { modal } = App.useApp(); const navigate = useNavigate(); const handleEditClick = (event, meetingId) => { event.preventDefault(); event.stopPropagation(); navigate(`/meetings/edit/${meetingId}`); }; const handleDeleteClick = (event, meeting) => { event.preventDefault(); event.stopPropagation(); modal.confirm({ title: '删除会议', content: `确定要删除会议“${meeting.title}”吗?此操作无法撤销。`, okText: '删除', okType: 'danger', onOk: () => onDeleteMeeting(meeting.meeting_id), }); }; const sortedDates = Object.keys(meetingsByDate).sort((a, b) => new Date(b) - new Date(a)); const timelineItems = sortedDates.map((date) => { const dateMeta = formatDateMeta(date); return { label: (