Impacto {r.impacto}
{r.total}
{r.classificacao_esg}
{r.total}
| Fornecedor | ESG | Rating | Pol. Ambiental | SST | EPI | Treinada | Total OS |
|---|---|---|---|---|---|---|---|
| {f.razao_social} | {f.classificacao_esg || '-'} | {Number(f.rating).toFixed(1)} | {f.possui_politica_ambiental ? '✅' : '❌'} | {f.possui_politica_sst ? '✅' : '❌'} | {f.declara_uso_epi ? '✅' : '❌'} | {f.equipe_treinada ? '✅' : '❌'} | {f.total_os} |
Nenhum dado.
const keys = Object.keys(items[0]).filter(k => k !== 'id') return (| {k.replace(/_/g, ' ')} | )}
|---|
| {typeof item[k] === 'number' ? item[k].toLocaleString('pt-BR', { maximumFractionDigits: 2 }) : String(item[k] ?? '-')} | ))}
Nenhum dado disponível.
Total de exceções: {data.total}
{renderGenericTable(itens.map((w: any) => ({ demanda: w.demanda_numero ? `#${w.demanda_numero} - ${w.demanda_titulo}` : w.demanda_titulo, valor: w.valor_total, status: w.status, })))}{k.replace(/_/g, ' ')}
{typeof v === 'number' ? v.toLocaleString('pt-BR', { maximumFractionDigits: 2 }) : String(v)}
Formato de dados não reconhecido.
} return (Relatórios detalhados por área.