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 (
Chargement...
) : disponibles.length === 0 ? (📄
Aucun rapport disponible
Les rapports apparaîtront après les premières saisies