feat(pdf): adicionar exportação de ficha do consultor em PDF
- Novo endpoint GET /api/v1/consultor/{id}/pdf para download
- Serviço PDFService usando WeasyPrint para geração
- Template HTML com layout padrão governo federal
- Botão de exportar PDF no card e modal de dados brutos
This commit is contained in:
@@ -133,6 +133,29 @@ export const rankingService = {
|
||||
const response = await api.get(`/consultor/${idPessoa}/raw`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async downloadFichaPDF(idPessoa, nomeConsultor = '') {
|
||||
const response = await api.get(`/consultor/${idPessoa}/pdf`, {
|
||||
responseType: 'blob',
|
||||
});
|
||||
|
||||
const blob = new Blob([response.data], { type: 'application/pdf' });
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
|
||||
const nomeSanitizado = nomeConsultor
|
||||
.replace(/[^a-zA-Z0-9\s\-_]/g, '')
|
||||
.substring(0, 30)
|
||||
.trim();
|
||||
const dataAtual = new Date().toISOString().split('T')[0].replace(/-/g, '');
|
||||
link.download = `ficha_consultor_${idPessoa}_${nomeSanitizado}_${dataAtual}.pdf`;
|
||||
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
window.URL.revokeObjectURL(url);
|
||||
},
|
||||
};
|
||||
|
||||
export default api;
|
||||
|
||||
Reference in New Issue
Block a user