import { useState, useEffect } from 'react' import { useNavigate } from 'react-router-dom' import { Calendar, Loader2, Sparkles } from 'lucide-react' import './AnnualReportPage.scss' function AnnualReportPage() { const navigate = useNavigate() const [availableYears, setAvailableYears] = useState([]) const [selectedYear, setSelectedYear] = useState(null) const [isLoading, setIsLoading] = useState(true) const [isGenerating, setIsGenerating] = useState(false) const [loadError, setLoadError] = useState(null) useEffect(() => { loadAvailableYears() }, []) const loadAvailableYears = async () => { setIsLoading(true) setLoadError(null) try { const result = await window.electronAPI.annualReport.getAvailableYears() if (result.success && result.data && result.data.length > 0) { setAvailableYears(result.data) setSelectedYear(result.data[0]) } else if (!result.success) { setLoadError(result.error || '加载年度数据失败') } } catch (e) { console.error(e) setLoadError(String(e)) } finally { setIsLoading(false) } } const handleGenerateReport = async () => { if (!selectedYear) return setIsGenerating(true) try { navigate(`/annual-report/view?year=${selectedYear}`) } catch (e) { console.error('生成报告失败:', e) } finally { setIsGenerating(false) } } if (isLoading) { return (

正在加载年份数据...

) } if (availableYears.length === 0) { return (

暂无聊天记录

{loadError || '请先解密数据库后再生成年度报告'}

) } return (

年度报告

选择年份,生成你的微信聊天年度回顾

{availableYears.map(year => (
setSelectedYear(year)} > {year}
))}
) } export default AnnualReportPage