// Caririaçu Guincho — Tab Serviço (manutencoes existente, adaptado) const { useState: useStateTS, useEffect: useEffectTS, useMemo: useMemoTS } = React; const TabServico = ({ guincho, periodo }) => { const [items, setItems] = useStateTS([]); const [novoOpen, setNovoOpen] = useStateTS(false); const [tick, setTick] = useStateTS(0); useEffectTS(() => { sb.from('manutencoes').select('*') .eq('guincho_id', guincho.id) .gte('data', periodo.inicio) .lte('data', periodo.fim) .order('data', { ascending: false }) .then(r => setItems(r.data || [])); }, [guincho.id, periodo.inicio, periodo.fim, tick]); const metricas = useMemoTS(() => { const total = items.reduce((s, x) => s + Number(x.valor || 0), 0); const preventivas = items.filter(x => x.tipo === 'Preventiva').length; const corretivas = items.filter(x => x.tipo === 'Corretiva').length; return { total, count: items.length, preventivas, corretivas }; }, [items]); const excluir = async (item) => { if (!confirm(`Excluir manutenção "${item.descricao}"?`)) return; const ok = await db.remove('manutencoes', item.id); if (!ok) return; setTick(t => t + 1); showToast('Manutenção excluída', 'info'); }; return ( <>