import React, { useState, useEffect } from 'react'; import { api } from '../stores/api'; import PageHeader from '../components/PageHeader'; const MOIS_FR = [ '', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre', ]; export default function Rapports() { const [disponibles, setDisponibles] = useState([]); const [loading, setLoading] = useState(true); const [generating, setGenerating] = useState(null); useEffect(() => { api.get('/rapports/disponibles').then((data) => { setDisponibles(data); setLoading(false); }).catch(() => setLoading(false)); }, []); const telecharger = async (type, annee, mois) => { const key = `${type}-${annee}-${mois}`; setGenerating(key); try { const token = localStorage.getItem('gm_token'); const url = `/api/rapports/${type}/${annee}/${mois}`; const res = await fetch(url, { headers: { Authorization: `Bearer ${token}` }, }); if (!res.ok) throw new Error('Erreur de génération'); const blob = await res.blob(); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = `rapport_${type}_${annee}_${mois.toString().padStart(2, '0')}.pdf`; a.click(); URL.revokeObjectURL(a.href); } catch (e) { alert(`Erreur: ${e.message}`); } setGenerating(null); }; return (
{loading ? (

Chargement...

) : disponibles.length === 0 ? (

📄

Aucun rapport disponible

Les rapports apparaîtront après les premières saisies

) : ( disponibles.map((m) => (

{MOIS_FR[m.mois]} {m.annee}

{m.finances && ( )} {m.reunions && ( )}
)) )}
); }