feat: integrate jsPDF and jsPDF-autotable for document generation; enhance employee management with print functionality and improved data handling in employee forms

This commit is contained in:
2025-10-27 23:36:04 -03:00
parent 3a1956f83b
commit 81e6eb4a42
26 changed files with 6405 additions and 935 deletions

View File

@@ -3,6 +3,7 @@
import { api } from "@sgse-app/backend/convex/_generated/api";
import { goto } from "$app/navigation";
import type { SimboloTipo } from "@sgse-app/backend/convex/schema";
import PrintModal from "$lib/components/PrintModal.svelte";
const client = useConvexClient();
@@ -12,6 +13,7 @@
let deletingId: string | null = null;
let toDelete: { id: string; nome: string } | null = null;
let openMenuId: string | null = null;
let funcionarioParaImprimir: any = null;
let filtroNome = "";
let filtroCPF = "";
@@ -48,6 +50,18 @@
toDelete = null;
(document.getElementById("delete_modal_func") as HTMLDialogElement)?.close();
}
async function openPrintModal(funcionarioId: string) {
try {
const data = await client.query(api.funcionarios.getFichaCompleta, {
id: funcionarioId as any
});
funcionarioParaImprimir = data;
} catch (err) {
console.error("Erro ao carregar funcionário:", err);
alert("Erro ao carregar dados para impressão");
}
}
async function confirmDelete() {
if (!toDelete) return;
try {
@@ -213,8 +227,11 @@
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor"><path d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z"/></svg>
</button>
<ul class="dropdown-content menu bg-base-100 rounded-box z-10 w-52 p-2 shadow-lg border border-base-300">
<li><a href={`/recursos-humanos/funcionarios/${f._id}`}>Ver Detalhes</a></li>
<li><a href={`/recursos-humanos/funcionarios/${f._id}/editar`}>Editar</a></li>
<li><button class="text-error" onclick={() => openDeleteModal(f._id, f.nome)}>Excluir</button></li>
<li><a href={`/recursos-humanos/funcionarios/${f._id}/documentos`}>Ver Documentos</a></li>
<li><button onclick={() => openPrintModal(f._id)}>Imprimir Ficha</button></li>
<li class="border-t mt-1 pt-1"><button class="text-error" onclick={() => openDeleteModal(f._id, f.nome)}>Excluir</button></li>
</ul>
</div>
</td>
@@ -261,5 +278,12 @@
<button>close</button>
</form>
</dialog>
</main>
<!-- Modal de Impressão -->
{#if funcionarioParaImprimir}
<PrintModal
funcionario={funcionarioParaImprimir}
onClose={() => funcionarioParaImprimir = null}
/>
{/if}
</main>