|
|
|
|
@@ -100,15 +100,17 @@
|
|
|
|
|
let cursoAtual = $state({ descricao: "", data: "", arquivo: null as File | null });
|
|
|
|
|
|
|
|
|
|
// Dependentes
|
|
|
|
|
let dependentes = $state<Array<{ id: string; parentesco: string; nome: string; cpf: string; nascimento: string; documentoId?: string }>>([]);
|
|
|
|
|
let dependentes = $state<Array<{ id: string; parentesco: string; nome: string; cpf: string; nascimento: string; documentoId?: string; salarioFamilia?: boolean; impostoRenda?: boolean }>>([]);
|
|
|
|
|
let mostrarFormularioDependente = $state(false);
|
|
|
|
|
let dependenteAtual = $state<{ parentesco: string; nome: string; cpf: string; nascimento: string; arquivo: File | null; documentoId?: string }>({
|
|
|
|
|
let dependenteAtual = $state<{ parentesco: string; nome: string; cpf: string; nascimento: string; arquivo: File | null; documentoId?: string; salarioFamilia?: boolean; impostoRenda?: boolean }>({
|
|
|
|
|
parentesco: "",
|
|
|
|
|
nome: "",
|
|
|
|
|
cpf: "",
|
|
|
|
|
nascimento: "",
|
|
|
|
|
arquivo: null,
|
|
|
|
|
documentoId: undefined,
|
|
|
|
|
salarioFamilia: false,
|
|
|
|
|
impostoRenda: false,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
function adicionarCurso() {
|
|
|
|
|
@@ -176,8 +178,10 @@
|
|
|
|
|
cpf: onlyDigits(dependenteAtual.cpf),
|
|
|
|
|
nascimento: dependenteAtual.nascimento,
|
|
|
|
|
documentoId: dependenteAtual.documentoId,
|
|
|
|
|
salarioFamilia: !!dependenteAtual.salarioFamilia,
|
|
|
|
|
impostoRenda: !!dependenteAtual.impostoRenda,
|
|
|
|
|
});
|
|
|
|
|
dependenteAtual = { parentesco: "", nome: "", cpf: "", nascimento: "", arquivo: null, documentoId: undefined };
|
|
|
|
|
dependenteAtual = { parentesco: "", nome: "", cpf: "", nascimento: "", arquivo: null, documentoId: undefined, salarioFamilia: false, impostoRenda: false };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function removerDependente(id: string) {
|
|
|
|
|
@@ -330,6 +334,8 @@
|
|
|
|
|
cpf: d.cpf,
|
|
|
|
|
nascimento: d.nascimento,
|
|
|
|
|
documentoId: d.documentoId as any,
|
|
|
|
|
salarioFamilia: !!d.salarioFamilia,
|
|
|
|
|
impostoRenda: !!d.impostoRenda,
|
|
|
|
|
}))
|
|
|
|
|
: undefined,
|
|
|
|
|
};
|
|
|
|
|
@@ -1143,6 +1149,16 @@
|
|
|
|
|
<div class="flex-1 text-sm">
|
|
|
|
|
<p class="font-semibold">{dep.nome} — {dep.parentesco}</p>
|
|
|
|
|
<p class="text-xs text-base-content/70">CPF: {dep.cpf} • Nasc.: {dep.nascimento}</p>
|
|
|
|
|
<div class="flex flex-wrap gap-4 mt-2">
|
|
|
|
|
<label class="label cursor-pointer gap-2">
|
|
|
|
|
<input type="checkbox" class="checkbox checkbox-xs checkbox-primary" bind:checked={dep.salarioFamilia} />
|
|
|
|
|
<span class="label-text text-xs">Salário Família</span>
|
|
|
|
|
</label>
|
|
|
|
|
<label class="label cursor-pointer gap-2">
|
|
|
|
|
<input type="checkbox" class="checkbox checkbox-xs checkbox-primary" bind:checked={dep.impostoRenda} />
|
|
|
|
|
<span class="label-text text-xs">Imposto de Renda</span>
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<button type="button" class="btn btn-sm btn-error btn-square" aria-label="Remover dependente" onclick={() => removerDependente(dep.id)}>
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" /></svg>
|
|
|
|
|
@@ -1202,6 +1218,20 @@
|
|
|
|
|
onchange={async (e) => { const file = e.currentTarget.files?.[0]; dependenteAtual.arquivo = file || null; if (file) { try { dependenteAtual.documentoId = await uploadDocumentoDependente(file); } catch { alert("Falha no upload do documento do dependente"); } } }} />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- Checkboxes de benefícios por dependente -->
|
|
|
|
|
<div class="form-control">
|
|
|
|
|
<label class="label cursor-pointer justify-start gap-3">
|
|
|
|
|
<input type="checkbox" class="checkbox checkbox-primary" bind:checked={dependenteAtual.salarioFamilia} />
|
|
|
|
|
<span class="label-text">Salário Família</span>
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-control">
|
|
|
|
|
<label class="label cursor-pointer justify-start gap-3">
|
|
|
|
|
<input type="checkbox" class="checkbox checkbox-primary" bind:checked={dependenteAtual.impostoRenda} />
|
|
|
|
|
<span class="label-text">Imposto de Renda</span>
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="lg:col-span-3">
|
|
|
|
|
<button type="button" class="btn btn-primary btn-sm gap-2" onclick={adicionarDependente}>
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4" /></svg>
|
|
|
|
|
|