refactor: enhance employee management with regime de trabalho integration
- Added regime de trabalho selection to employee forms for better categorization. - Updated backend validation to include regime de trabalho options for employees. - Enhanced employee data handling by integrating regime de trabalho into various components. - Removed the print modal for financial data to streamline the employee profile interface. - Improved overall code clarity and maintainability across multiple files.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -25,7 +25,6 @@
|
||||
let documentosUrls = $state<Record<string, string | null>>({});
|
||||
let loading = $state(true);
|
||||
let showPrintModal = $state(false);
|
||||
let showPrintFinanceiro = $state(false);
|
||||
|
||||
async function load() {
|
||||
try {
|
||||
@@ -41,6 +40,9 @@
|
||||
|
||||
funcionario = data;
|
||||
simbolo = data.simbolo;
|
||||
if (simbolo) {
|
||||
funcionario = { ...funcionario, simbolo };
|
||||
}
|
||||
cursos = data.cursos || [];
|
||||
|
||||
// Carregar URLs dos documentos
|
||||
@@ -200,26 +202,6 @@
|
||||
</svg>
|
||||
Imprimir Ficha
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-info gap-2"
|
||||
onclick={() => (showPrintFinanceiro = true)}
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="h-5 w-5"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
||||
/>
|
||||
</svg>
|
||||
Imprimir Dados Financeiros
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -904,138 +886,5 @@
|
||||
<PrintModal {funcionario} onClose={() => (showPrintModal = false)} />
|
||||
{/if}
|
||||
|
||||
<!-- Modal de Impressão Dados Financeiros -->
|
||||
{#if showPrintFinanceiro && simbolo}
|
||||
<dialog class="modal modal-open">
|
||||
<div class="modal-box max-w-2xl">
|
||||
<h3 class="font-bold text-2xl mb-6 border-b pb-3">
|
||||
Dados Financeiros - {funcionario.nome}
|
||||
</h3>
|
||||
|
||||
<div class="space-y-4 print:space-y-2" id="dados-financeiros-print">
|
||||
<!-- Informações Básicas -->
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<p class="text-sm font-semibold text-base-content/70">Nome</p>
|
||||
<p class="text-lg">{funcionario.nome}</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-sm font-semibold text-base-content/70">
|
||||
Matrícula
|
||||
</p>
|
||||
<p class="text-lg">{funcionario.matricula || "N/A"}</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-sm font-semibold text-base-content/70">CPF</p>
|
||||
<p class="text-lg">{maskCPF(funcionario.cpf)}</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-sm font-semibold text-base-content/70">
|
||||
Data Admissão
|
||||
</p>
|
||||
<p class="text-lg">{funcionario.admissaoData || "N/A"}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
|
||||
<!-- Dados Financeiros -->
|
||||
<div>
|
||||
<h4 class="font-bold text-lg mb-3">Remuneração</h4>
|
||||
<div class="space-y-2">
|
||||
<div class="flex justify-between p-2 bg-base-200 rounded">
|
||||
<span class="font-semibold">Símbolo:</span>
|
||||
<span>{simbolo.nome}</span>
|
||||
</div>
|
||||
<div class="flex justify-between p-2 bg-base-200 rounded">
|
||||
<span class="font-semibold">Tipo:</span>
|
||||
<span
|
||||
>{simbolo.tipo === "cargo_comissionado"
|
||||
? "Cargo Comissionado"
|
||||
: "Função Gratificada"}</span
|
||||
>
|
||||
</div>
|
||||
{#if funcionario.simboloTipo === "cargo_comissionado"}
|
||||
<div class="flex justify-between p-2 bg-info/10 rounded">
|
||||
<span class="font-semibold">Vencimento:</span>
|
||||
<span class="text-info font-bold">R$ {simbolo.vencValor}</span
|
||||
>
|
||||
</div>
|
||||
<div class="flex justify-between p-2 bg-warning/10 rounded">
|
||||
<span class="font-semibold">Representação:</span>
|
||||
<span class="text-warning font-bold"
|
||||
>R$ {simbolo.repValor}</span
|
||||
>
|
||||
</div>
|
||||
{/if}
|
||||
<div
|
||||
class="flex justify-between p-3 bg-success/20 rounded border-2 border-success/40"
|
||||
>
|
||||
<span class="font-bold text-lg">TOTAL:</span>
|
||||
<span class="text-success font-bold text-2xl"
|
||||
>R$ {simbolo.valor}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{#if funcionario.contaBradescoNumero}
|
||||
<div class="divider"></div>
|
||||
<div>
|
||||
<h4 class="font-bold text-lg mb-3">Dados Bancários</h4>
|
||||
<div class="space-y-2">
|
||||
<div class="flex justify-between p-2 bg-base-200 rounded">
|
||||
<span class="font-semibold">Banco:</span>
|
||||
<span>Bradesco</span>
|
||||
</div>
|
||||
<div class="flex justify-between p-2 bg-base-200 rounded">
|
||||
<span class="font-semibold">Agência:</span>
|
||||
<span>{funcionario.contaBradescoAgencia || "N/A"}</span>
|
||||
</div>
|
||||
<div class="flex justify-between p-2 bg-base-200 rounded">
|
||||
<span class="font-semibold">Conta:</span>
|
||||
<span
|
||||
>{funcionario.contaBradescoNumero}{funcionario.contaBradescoDV
|
||||
? `-${funcionario.contaBradescoDV}`
|
||||
: ""}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="modal-action">
|
||||
<button class="btn btn-primary gap-2" onclick={() => window.print()}>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="h-5 w-5"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2h2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z"
|
||||
/>
|
||||
</svg>
|
||||
Imprimir
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-ghost"
|
||||
onclick={() => (showPrintFinanceiro = false)}>Fechar</button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<form method="dialog" class="modal-backdrop">
|
||||
<button
|
||||
type="button"
|
||||
onclick={() => (showPrintFinanceiro = false)}
|
||||
aria-label="Fechar modal">Fechar</button
|
||||
>
|
||||
</form>
|
||||
</dialog>
|
||||
{/if}
|
||||
<!-- Modal de Impressão Dados Financeiros removido -->
|
||||
{/if}
|
||||
|
||||
@@ -84,6 +84,14 @@
|
||||
let pertenceOrgaoPublico = $state(false);
|
||||
let orgaoOrigem = $state("");
|
||||
let aposentado = $state("nao");
|
||||
let regimeTrabalho = $state("estatutario_pe");
|
||||
|
||||
const REGIME_TRABALHO_OPTIONS = [
|
||||
{ value: "clt", label: "CLT" },
|
||||
{ value: "estatutario_municipal", label: "Estatutário Municipal" },
|
||||
{ value: "estatutario_pe", label: "Estatutário PE" },
|
||||
{ value: "estatutario_federal", label: "Estatutário Federal" }
|
||||
] as const;
|
||||
|
||||
// Dados Bancários
|
||||
let contaBradescoNumero = $state("");
|
||||
@@ -176,6 +184,7 @@
|
||||
pertenceOrgaoPublico = func.pertenceOrgaoPublico || false;
|
||||
orgaoOrigem = func.orgaoOrigem || "";
|
||||
aposentado = func.aposentado || "nao";
|
||||
regimeTrabalho = func.regimeTrabalho || "estatutario_pe";
|
||||
|
||||
contaBradescoNumero = func.contaBradescoNumero || "";
|
||||
contaBradescoDV = func.contaBradescoDV || "";
|
||||
@@ -372,6 +381,7 @@
|
||||
contaBradescoNumero: contaBradescoNumero || undefined,
|
||||
contaBradescoDV: contaBradescoDV || undefined,
|
||||
contaBradescoAgencia: contaBradescoAgencia || undefined,
|
||||
regimeTrabalho,
|
||||
|
||||
...Object.fromEntries(
|
||||
Object.entries(documentosStorage).map(([key, value]) => [key, value as any])
|
||||
@@ -1207,6 +1217,24 @@
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- Regime de Trabalho -->
|
||||
<div class="form-control">
|
||||
<label class="label" for="regimeTrabalho">
|
||||
<span class="label-text font-medium">Regime do Funcionário <span class="text-error">*</span></span>
|
||||
</label>
|
||||
<select
|
||||
id="regimeTrabalho"
|
||||
class="select select-bordered w-full"
|
||||
bind:value={regimeTrabalho}
|
||||
required
|
||||
>
|
||||
<option value="">Selecione...</option>
|
||||
{#each REGIME_TRABALHO_OPTIONS as option}
|
||||
<option value={option.value}>{option.label}</option>
|
||||
{/each}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Pertence a Órgão Público -->
|
||||
<div class="form-control lg:col-span-3">
|
||||
<label class="label cursor-pointer justify-start gap-4">
|
||||
|
||||
@@ -80,6 +80,14 @@
|
||||
let pertenceOrgaoPublico = $state(false);
|
||||
let orgaoOrigem = $state("");
|
||||
let aposentado = $state("nao");
|
||||
let regimeTrabalho = $state("estatutario_pe");
|
||||
|
||||
const REGIME_TRABALHO_OPTIONS = [
|
||||
{ value: "clt", label: "CLT" },
|
||||
{ value: "estatutario_municipal", label: "Estatutário Municipal" },
|
||||
{ value: "estatutario_pe", label: "Estatutário PE" },
|
||||
{ value: "estatutario_federal", label: "Estatutário Federal" }
|
||||
] as const;
|
||||
|
||||
// Dados Bancários
|
||||
let contaBradescoNumero = $state("");
|
||||
@@ -310,6 +318,7 @@
|
||||
|
||||
// Cargo e Vínculo
|
||||
descricaoCargo: descricaoCargo || undefined,
|
||||
regimeTrabalho: regimeTrabalho,
|
||||
nomeacaoPortaria: nomeacaoPortaria || undefined,
|
||||
nomeacaoData: nomeacaoData || undefined,
|
||||
nomeacaoDOE: nomeacaoDOE || undefined,
|
||||
@@ -1375,6 +1384,24 @@
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- Regime de Trabalho -->
|
||||
<div class="form-control">
|
||||
<label class="label" for="regimeTrabalho">
|
||||
<span class="label-text font-medium">Regime do Funcionário</span>
|
||||
</label>
|
||||
<select
|
||||
id="regimeTrabalho"
|
||||
class="select select-bordered w-full"
|
||||
bind:value={regimeTrabalho}
|
||||
required
|
||||
>
|
||||
<option value="">Selecione...</option>
|
||||
{#each REGIME_TRABALHO_OPTIONS as option}
|
||||
<option value={option.value}>{option.label}</option>
|
||||
{/each}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Pertence a Órgão Público -->
|
||||
<div class="form-control lg:col-span-3">
|
||||
<label class="label cursor-pointer justify-start gap-4">
|
||||
|
||||
Reference in New Issue
Block a user