/**
* EventDetail - 事件详情页面
* 使用 DynamicNewsDetailPanel 组件展示事件详情
*/
import React, { useState, useEffect } from 'react';
import { useParams, useSearchParams } from 'react-router-dom';
import {
Box,
Spinner,
Center,
} from '@chakra-ui/react';
import { decodeEventId } from '@/utils/idEncoder';
import { eventService } from '@/services/eventService';
import { DynamicNewsDetailPanel } from '@components/EventDetailPanel';
import { logger } from '@/utils/logger';
import ErrorPage from '@/components/ErrorPage';
const EventDetail = () => {
const { eventId: pathEventId } = useParams();
const [searchParams] = useSearchParams();
// 优先从查询参数获取加密 ID,兼容旧的路径参数
const encodedId = searchParams.get('id');
const eventId = encodedId ? decodeEventId(encodedId) : pathEventId;
// 状态
const [eventData, setEventData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
// 加载事件基础数据
useEffect(() => {
const loadEventData = async () => {
if (!eventId) {
setError('无效的事件ID');
setLoading(false);
return;
}
try {
setLoading(true);
setError(null);
const response = await eventService.getEventDetail(eventId);
setEventData(response.data);
} catch (err) {
logger.error('EventDetail', 'loadEventData', err, { eventId });
setError(err.message || '加载事件数据失败');
} finally {
setLoading(false);
}
};
loadEventData();
}, [eventId]);
// 加载状态
if (loading) {
return (
);
}
// 错误状态
if (error) {
return (
window.location.reload()}
showBack
showHome
homePath="/community"
/>
);
}
// 主内容
return (
);
};
export default EventDetail;