'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { useTranslation } from 'react-i18next'; import { Button } from '@/app/components/ui/button'; import { Card, CardContent } from '@/app/components/ui/card'; import { Badge } from '@/app/components/ui/badge'; import { Skeleton } from '@/app/components/ui/skeleton'; import { ArrowLeft, Calendar, User, Tag, Phone, Mail, MessageSquare } from 'lucide-react'; import { formatDate } from '@/lib/utils'; interface ConsultationDetailPageClientProps { consultationId: string; locale: string; } interface Consultation { id: string; metadata: { title: string; date: string; author: string; category: string; status: string; contact: { name: string; phone: string; email: string; message: string; }; }; } export default function ConsultationDetailPageClient({ consultationId, locale, }: ConsultationDetailPageClientProps) { const router = useRouter(); const { t } = useTranslation(['consultation', 'common']); const [consultation, setConsultation] = useState(null); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchConsultation = async () => { try { const response = await fetch( `/api/consultations/${consultationId}?locale=${locale}`, ); if (!response.ok) { if (response.status === 404) { throw new Error(t('consultation.error.notFound')); } throw new Error(t('consultation.error.fetchFailed')); } const data = await response.json(); setConsultation(data.consultation); } catch (err) { setError(err instanceof Error ? err.message : t('consultation.error.unknown')); } finally { setIsLoading(false); } }; fetchConsultation(); }, [consultationId, locale, t]); // 渲染加载状态 const renderSkeleton = () => (
); // 渲染错误状态 const renderError = () => (

{t('consultation.error.title')}

{error}

); if (isLoading) { return renderSkeleton(); } if (error || !consultation) { return renderError(); } return (
{/* 返回按钮 */} {/* 咨询标题 */}

{consultation.metadata.title}

{/* 咨询元数据 */}
{formatDate(consultation.metadata.date, locale)}
{consultation.metadata.author}
{t(`consultation.categories.${consultation.metadata.category}`)}
{t(`consultation.status.${consultation.metadata.status}`)}
{/* 联系信息 */}

{t('consultation.contactInfo')}

{consultation.metadata.contact.name}
{consultation.metadata.contact.phone}
{consultation.metadata.contact.email}
{consultation.metadata.contact.message}
); }