diff --git a/apps/web/src/lib/components/SolicitarFerias.svelte b/apps/web/src/lib/components/SolicitarFerias.svelte index c61f7bc..7658086 100644 --- a/apps/web/src/lib/components/SolicitarFerias.svelte +++ b/apps/web/src/lib/components/SolicitarFerias.svelte @@ -1,304 +1,353 @@
-
-

- - - - Solicitar Férias -

- - -
- - -
- - -
-
-

Períodos ({periodos.length}/3)

- {#if periodos.length < 3} - - {/if} -
- -
- {#each periodos as periodo, index} -
-
-
-

Período {index + 1}

- {#if periodos.length > 1} - - {/if} -
- -
-
- - calcularDias(periodo)} - /> -
- -
- - calcularDias(periodo)} - /> -
- -
- -
- {periodo.diasCorridos} - dias -
-
-
-
-
- {/each} -
-
- - -
- - -
- - - {#if erro} -
- - - - {erro} -
- {/if} - - -
- {#if onCancelar} - - {/if} - -
-
-
+
+

+ + + + Solicitar Férias +

+ +
+ + +
+ + +
+
+

Períodos ({periodos.length}/3)

+ {#if periodos.length < 3} + + {/if} +
+ +
+ {#each periodos as periodo, index} +
+
+
+

Período {index + 1}

+ {#if periodos.length > 1} + + {/if} +
+ +
+
+ + calcularDias(periodo)} + /> +
+ +
+ + calcularDias(periodo)} + /> +
+ +
+ +
+ {periodo.diasCorridos} + dias +
+
+
+
+
+ {/each} +
+
+ + +
+ + +
+ + + {#if erro} +
+ + + + {erro} +
+ {/if} + + +
+ {#if onCancelar} + + {/if} + +
+
+ diff --git a/apps/web/src/routes/(dashboard)/perfil/+page.svelte b/apps/web/src/routes/(dashboard)/perfil/+page.svelte index 0a3ab0f..58831bf 100644 --- a/apps/web/src/routes/(dashboard)/perfil/+page.svelte +++ b/apps/web/src/routes/(dashboard)/perfil/+page.svelte @@ -48,11 +48,7 @@ // Queries const funcionarioQuery = $derived( - currentUser?.data?.funcionarioId - ? useQuery(api.funcionarios.getById, { - id: currentUser.data.funcionarioId - }) - : { data: null } + currentUser?.data?.funcionarioId ? useQuery(api.funcionarios.getCurrent, {}) : { data: null } ); const solicitacoesSubordinadosQuery = $derived( diff --git a/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/[funcionarioId]/editar/+page.svelte b/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/[funcionarioId]/editar/+page.svelte index f38dca4..c51afda 100644 --- a/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/[funcionarioId]/editar/+page.svelte +++ b/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/[funcionarioId]/editar/+page.svelte @@ -1,1555 +1,1758 @@ {#if loadingData} -
- -
+
+ +
{:else} -
- - - - -
-
-
- - - -
-
-

Editar Funcionário

-

Atualize as informações do funcionário

-
-
-
- - - {#if notice} -
- - {#if notice.kind === "success"} - - {:else} - - {/if} - - {notice.text} -
- {/if} - - -
{ e.preventDefault(); handleSubmit(); }}> - - -
-
-

- - - - Informações Pessoais -

- -
- -
- - -
- - -
- - -
- - -
- - { - const target = e.target as HTMLInputElement; - cpf = maskCPF(target.value); - target.value = cpf; - }} - required - /> -
- - -
- - { - const target = e.target as HTMLInputElement; - rg = onlyDigits(target.value); - target.value = rg; - }} - required - /> -
- - -
- - -
- - -
- - { - const target = e.target as HTMLInputElement; - rgDataEmissao = maskDate(target.value); - target.value = rgDataEmissao; - }} - /> -
- - -
- - -
- - -
- - -
- - -
- - { - const target = e.target as HTMLInputElement; - nascimento = maskDate(target.value); - target.value = nascimento; - }} - required - /> -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
-
-
-
- - -
-
-

- - - - Documentos Pessoais -

- -
- -
- - -
- -
- - -
- -
- - { - const target = e.target as HTMLInputElement; - carteiraProfissionalDataEmissao = maskDate(target.value); - target.value = carteiraProfissionalDataEmissao; - }} - /> -
- - -
- - -
- -
- - -
- - -
- - -
- -
- - -
- -
- - -
- - -
- - -
-
-
-
- - -
-
-

- - - - Formação e Saúde -

- -
- -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
-
-
-
- - -
-
-

- - - - - Endereço e Contato -

- -
- -
- - { - const target = e.target as HTMLInputElement; - cep = maskCEP(target.value); - target.value = cep; - }} - onblur={() => fillFromCEP(cep)} - required - /> -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - { - const target = e.target as HTMLInputElement; - telefone = maskPhone(target.value); - target.value = telefone; - }} - required - /> -
-
-
-
- - -
-
-

- - - - Cargo e Vínculo -

- -
- -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- -
- - { - const target = e.target as HTMLInputElement; - nomeacaoData = maskDate(target.value); - target.value = nomeacaoData; - }} - /> -
- -
- - { - const target = e.target as HTMLInputElement; - nomeacaoDOE = maskDate(target.value); - target.value = nomeacaoDOE; - }} - /> -
- - -
- - { - const target = e.target as HTMLInputElement; - admissaoData = maskDate(target.value); - target.value = admissaoData; - }} - /> -
- - -
- - -
- - -
- -
- - - {#if pertenceOrgaoPublico} -
- - -
- {/if} - - -
- - -
-
-
-
- - -
-
-

- - - - Dados Bancários - Bradesco -

- -
- -
- - -
- - -
- - -
- - -
- - -
-
-
-
- - - {#if !loadingData} - - {/if} - - -
-
-

- - - - Documentação Anexa -

- -

- Anexe os documentos necessários em formato PDF ou imagem (máximo 10MB cada) -

- - {#each categoriasDocumentos as categoria} -
-

{categoria}

-
- {#each getDocumentosByCategoria(categoria) as doc} - handleDocumentoUpload(doc.campo, file)} - onRemove={() => handleDocumentoRemove(doc.campo)} - disabled={loading} - /> - {/each} -
-
- {/each} -
-
- - -
-
-

- - - - Cursos e Treinamentos -

- -

- Gerencie cursos e treinamentos do funcionário (até 7 cursos) -

- - {#if cursos.filter(c => !c.marcadoParaExcluir).length > 0} -
-

Cursos cadastrados ({cursos.filter(c => !c.marcadoParaExcluir).length}/7)

- {#each cursos.filter(c => !c.marcadoParaExcluir) as curso} -
-
-

{curso.descricao}

-

{curso.data}

- {#if curso.certificadoId} -

✓ Com certificado

- {/if} -
- -
- {/each} -
- {/if} - - {#if cursos.filter(c => !c.marcadoParaExcluir).length < 7} -
- -
- Adicionar Curso/Treinamento -
-
-
-
- - -
- -
- - cursoAtual.data = maskDate(e.currentTarget.value)} - /> -
- -
- - { - const file = e.currentTarget.files?.[0]; - if (file) cursoAtual.arquivo = file; - }} - /> -
- - -
-
-
- {:else} -
- - - - Limite de 7 cursos atingido -
- {/if} -
-
- - -
-
-
- - -
-
-
- -
-{/if} \ No newline at end of file +
+ + + + +
+
+
+ + + +
+
+

Editar Funcionário

+

Atualize as informações do funcionário

+
+
+
+ + + {#if notice} +
+ + {#if notice.kind === 'success'} + + {:else} + + {/if} + + {notice.text} +
+ {/if} + + +
{ + e.preventDefault(); + handleSubmit(); + }} + > + +
+
+

+ + + + Informações Pessoais +

+ +
+ +
+ + +
+ + +
+ + +
+ + +
+ + { + const target = e.target as HTMLInputElement; + cpf = maskCPF(target.value); + target.value = cpf; + }} + required + /> +
+ + +
+ + { + const target = e.target as HTMLInputElement; + rg = onlyDigits(target.value); + target.value = rg; + }} + required + /> +
+ + +
+ + +
+ + +
+ + { + const target = e.target as HTMLInputElement; + rgDataEmissao = maskDate(target.value); + target.value = rgDataEmissao; + }} + /> +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + { + const target = e.target as HTMLInputElement; + nascimento = maskDate(target.value); + target.value = nascimento; + }} + required + /> +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+
+
+ + +
+
+

+ + + + Documentos Pessoais +

+ +
+ +
+ + +
+ +
+ + +
+ +
+ + { + const target = e.target as HTMLInputElement; + carteiraProfissionalDataEmissao = maskDate(target.value); + target.value = carteiraProfissionalDataEmissao; + }} + /> +
+ + +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+
+
+
+ + +
+
+

+ + + + Formação e Saúde +

+ +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+
+
+ + +
+
+

+ + + + + Endereço e Contato +

+ +
+ +
+ + { + const target = e.target as HTMLInputElement; + cep = maskCEP(target.value); + target.value = cep; + }} + onblur={() => fillFromCEP(cep)} + required + /> +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + { + const target = e.target as HTMLInputElement; + telefone = maskPhone(target.value); + target.value = telefone; + }} + required + /> +
+
+
+
+ + +
+
+

+ + + + Cargo e Vínculo +

+ +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + { + const target = e.target as HTMLInputElement; + nomeacaoData = maskDate(target.value); + target.value = nomeacaoData; + }} + /> +
+ +
+ + { + const target = e.target as HTMLInputElement; + nomeacaoDOE = maskDate(target.value); + target.value = nomeacaoDOE; + }} + /> +
+ + +
+ + { + const target = e.target as HTMLInputElement; + admissaoData = maskDate(target.value); + target.value = admissaoData; + }} + /> +
+ + +
+ + +
+ + +
+ +
+ + + {#if pertenceOrgaoPublico} +
+ + +
+ {/if} + + +
+ + +
+
+
+
+ + +
+
+

+ + + + Dados Bancários - Bradesco +

+ +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+
+
+ + + {#if !loadingData} + + {/if} + + +
+
+

+ + + + Documentação Anexa +

+ +

+ Anexe os documentos necessários em formato PDF ou imagem (máximo 10MB cada) +

+ + {#each categoriasDocumentos as categoria} +
+

{categoria}

+
+ {#each getDocumentosByCategoria(categoria) as doc} + handleDocumentoUpload(doc.campo, file)} + onRemove={() => handleDocumentoRemove(doc.campo)} + disabled={loading} + /> + {/each} +
+
+ {/each} +
+
+ + +
+
+

+ + + + Cursos e Treinamentos +

+ +

+ Gerencie cursos e treinamentos do funcionário (até 7 cursos) +

+ + {#if cursos.filter((c) => !c.marcadoParaExcluir).length > 0} +
+

+ Cursos cadastrados ({cursos.filter((c) => !c.marcadoParaExcluir).length}/7) +

+ {#each cursos.filter((c) => !c.marcadoParaExcluir) as curso} +
+
+

{curso.descricao}

+

{curso.data}

+ {#if curso.certificadoId} +

✓ Com certificado

+ {/if} +
+ +
+ {/each} +
+ {/if} + + {#if cursos.filter((c) => !c.marcadoParaExcluir).length < 7} +
+ +
Adicionar Curso/Treinamento
+
+
+
+ + +
+ +
+ + (cursoAtual.data = maskDate(e.currentTarget.value))} + /> +
+ +
+ + { + const file = e.currentTarget.files?.[0]; + if (file) cursoAtual.arquivo = file; + }} + /> +
+ + +
+
+
+ {:else} +
+ + + + Limite de 7 cursos atingido +
+ {/if} +
+
+ + +
+
+
+ + +
+
+
+ +
+{/if} diff --git a/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/cadastro/+page.svelte b/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/cadastro/+page.svelte index e2d8851..c19b909 100644 --- a/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/cadastro/+page.svelte +++ b/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/cadastro/+page.svelte @@ -291,1200 +291,1505 @@ }); -
- - - - -
-
-
- - - -
-
-

Cadastro de Funcionário

-

Preencha os campos abaixo para cadastrar um novo funcionário

-
-
-
- - - {#if notice} -
- - {#if notice.kind === "success"} - - {:else} - - {/if} - - {notice.text} -
- {/if} - - -
{ e.preventDefault(); }}> - - -
-
-

- - - - Informações Pessoais -

- -
- -
- - -
- - -
- - -
- - -
- - { - const target = e.target as HTMLInputElement; - cpf = maskCPF(target.value); - target.value = cpf; - }} - required - /> -
- - -
- - { - const target = e.target as HTMLInputElement; - rg = onlyDigits(target.value); - target.value = rg; - }} - required - /> -
- - -
- - -
- - -
- - { - const target = e.target as HTMLInputElement; - rgDataEmissao = maskDate(target.value); - target.value = rgDataEmissao; - }} - /> -
- - -
- - -
- - -
- - -
- - -
- - { - const target = e.target as HTMLInputElement; - nascimento = maskDate(target.value); - target.value = nascimento; - }} - required - /> -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
-
-
-
- - -
-
-

- - - - Documentos Pessoais -

- -
- -
- - -
- -
- - -
- -
- - { - const target = e.target as HTMLInputElement; - carteiraProfissionalDataEmissao = maskDate(target.value); - target.value = carteiraProfissionalDataEmissao; - }} - /> -
- - -
- - -
- -
- - -
- - -
- - -
- -
- - -
- -
- - -
- - -
- - -
-
-
-
- - -
-
-

- - - - Formação e Saúde -

- -
- -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
-
-
-
- - -
-
-

- - - - Cursos e Treinamentos -

- -

- Adicione até 7 cursos ou treinamentos realizados pelo funcionário (opcional) -

- - - {#if cursos.length > 0} -
-

Cursos adicionados ({cursos.length}/7)

- {#each cursos as curso} -
-
-

{curso.descricao}

-

{curso.data}

-
- -
- {/each} -
- {/if} - - - {#if cursos.length < 7} -
- -
- Adicionar Curso/Treinamento -
-
-
-
- - -
- -
- - cursoAtual.data = maskDate(e.currentTarget.value)} - /> -
- -
- - { - const file = e.currentTarget.files?.[0]; - if (file) cursoAtual.arquivo = file; - }} - /> -
- - -
-
-
- {:else} -
- - - - Limite de 7 cursos atingido -
- {/if} -
-
- - -
-
-

- - - - - Endereço e Contato -

- -
- -
- - { - const target = e.target as HTMLInputElement; - cep = maskCEP(target.value); - target.value = cep; - }} - onblur={() => fillFromCEP(cep)} - required - /> -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - { - const target = e.target as HTMLInputElement; - telefone = maskPhone(target.value); - target.value = telefone; - }} - required - /> -
-
-
-
- - -
-
-

- - - - Dependentes -

- - {#if dependentes.length > 0} -
-

Dependentes adicionados ({dependentes.length}/10)

- {#each dependentes as dep} -
-
-

{dep.nome} — {dep.parentesco}

-

CPF: {dep.cpf} • Nasc.: {dep.nascimento}

-
- - -
-
- -
- {/each} -
- {/if} - - {#if dependentes.length < 10} -
- -
Adicionar Dependente
-
-
-
- - -
- -
- - -
- -
- - { const t = e.target as HTMLInputElement; dependenteAtual.cpf = maskCPF(t.value); t.value = dependenteAtual.cpf; }} /> -
- -
- - { const t = e.target as HTMLInputElement; dependenteAtual.nascimento = maskDate(t.value); t.value = dependenteAtual.nascimento; }} /> -
- -
- - { 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"); } } }} /> -
- - -
- -
-
- -
- -
- -
-
-
-
- {/if} -
-
- - -
-
-

- - - - Cargo e Vínculo -

- -
- -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- -
- - { - const target = e.target as HTMLInputElement; - nomeacaoData = maskDate(target.value); - target.value = nomeacaoData; - }} - /> -
- -
- - { - const target = e.target as HTMLInputElement; - nomeacaoDOE = maskDate(target.value); - target.value = nomeacaoDOE; - }} - /> -
- - -
- - { - const target = e.target as HTMLInputElement; - admissaoData = maskDate(target.value); - target.value = admissaoData; - }} - /> -
- - -
- - -
- - -
- -
- - - {#if pertenceOrgaoPublico} -
- - -
- {/if} - - -
- - -
-
-
-
- - -
-
-

- - - - Dados Bancários - Bradesco -

- -
- -
- - -
- - -
- - -
- - -
- - -
-
-
-
- - - - - -
-
-

- - - - Documentação Anexa -

- -

- Anexe os documentos necessários em formato PDF ou imagem (máximo 10MB cada) -

- - {#each categoriasDocumentos as categoria} -
-

{categoria}

-
- {#each getDocumentosByCategoria(categoria) as doc} - handleDocumentoUpload(doc.campo, file)} - onRemove={() => handleDocumentoRemove(doc.campo)} - disabled={loading} - /> - {/each} -
-
- {/each} -
-
- - -
-
-
- - -
-
-
- - - - - - +
+ + + + +
+
+
+ + + +
+
+

Cadastro de Funcionário

+

+ Preencha os campos abaixo para cadastrar um novo funcionário +

+
+
+
+ + + {#if notice} +
+ + {#if notice.kind === 'success'} + + {:else} + + {/if} + + {notice.text} +
+ {/if} + + +
{ + e.preventDefault(); + }} + > + +
+
+

+ + + + Informações Pessoais +

+ +
+ +
+ + +
+ + +
+ + +
+ + +
+ + { + const target = e.target as HTMLInputElement; + cpf = maskCPF(target.value); + target.value = cpf; + }} + required + /> +
+ + +
+ + { + const target = e.target as HTMLInputElement; + rg = onlyDigits(target.value); + target.value = rg; + }} + required + /> +
+ + +
+ + +
+ + +
+ + { + const target = e.target as HTMLInputElement; + rgDataEmissao = maskDate(target.value); + target.value = rgDataEmissao; + }} + /> +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + { + const target = e.target as HTMLInputElement; + nascimento = maskDate(target.value); + target.value = nascimento; + }} + required + /> +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+
+
+ + +
+
+

+ + + + Documentos Pessoais +

+ +
+ +
+ + +
+ +
+ + +
+ +
+ + { + const target = e.target as HTMLInputElement; + carteiraProfissionalDataEmissao = maskDate(target.value); + target.value = carteiraProfissionalDataEmissao; + }} + /> +
+ + +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+
+
+
+ + +
+
+

+ + + + Formação e Saúde +

+ +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+
+
+ + +
+
+

+ + + + Cursos e Treinamentos +

+ +

+ Adicione até 7 cursos ou treinamentos realizados pelo funcionário (opcional) +

+ + + {#if cursos.length > 0} +
+

Cursos adicionados ({cursos.length}/7)

+ {#each cursos as curso} +
+
+

{curso.descricao}

+

{curso.data}

+
+ +
+ {/each} +
+ {/if} + + + {#if cursos.length < 7} +
+ +
Adicionar Curso/Treinamento
+
+
+
+ + +
+ +
+ + (cursoAtual.data = maskDate(e.currentTarget.value))} + /> +
+ +
+ + { + const file = e.currentTarget.files?.[0]; + if (file) cursoAtual.arquivo = file; + }} + /> +
+ + +
+
+
+ {:else} +
+ + + + Limite de 7 cursos atingido +
+ {/if} +
+
+ + +
+
+

+ + + + + Endereço e Contato +

+ +
+ +
+ + { + const target = e.target as HTMLInputElement; + cep = maskCEP(target.value); + target.value = cep; + }} + onblur={() => fillFromCEP(cep)} + required + /> +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + { + const target = e.target as HTMLInputElement; + telefone = maskPhone(target.value); + target.value = telefone; + }} + required + /> +
+
+
+
+ + +
+
+

+ + + + Dependentes +

+ + {#if dependentes.length > 0} +
+

Dependentes adicionados ({dependentes.length}/10)

+ {#each dependentes as dep} +
+
+

{dep.nome} — {dep.parentesco}

+

+ CPF: {dep.cpf} • Nasc.: {dep.nascimento} +

+
+ + +
+
+ +
+ {/each} +
+ {/if} + + {#if dependentes.length < 10} +
+ +
Adicionar Dependente
+
+
+
+ + +
+ +
+ + +
+ +
+ + { + const t = e.target as HTMLInputElement; + dependenteAtual.cpf = maskCPF(t.value); + t.value = dependenteAtual.cpf; + }} + /> +
+ +
+ + { + const t = e.target as HTMLInputElement; + dependenteAtual.nascimento = maskDate(t.value); + t.value = dependenteAtual.nascimento; + }} + /> +
+ +
+ + { + 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'); + } + } + }} + /> +
+ + +
+ +
+
+ +
+ +
+ +
+
+
+
+ {/if} +
+
+ + +
+
+

+ + + + Cargo e Vínculo +

+ +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + { + const target = e.target as HTMLInputElement; + nomeacaoData = maskDate(target.value); + target.value = nomeacaoData; + }} + /> +
+ +
+ + { + const target = e.target as HTMLInputElement; + nomeacaoDOE = maskDate(target.value); + target.value = nomeacaoDOE; + }} + /> +
+ + +
+ + { + const target = e.target as HTMLInputElement; + admissaoData = maskDate(target.value); + target.value = admissaoData; + }} + /> +
+ + +
+ + +
+ + +
+ +
+ + + {#if pertenceOrgaoPublico} +
+ + +
+ {/if} + + +
+ + +
+
+
+
+ + +
+
+

+ + + + Dados Bancários - Bradesco +

+ +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+
+
+ + + + + +
+
+

+ + + + Documentação Anexa +

+ +

+ Anexe os documentos necessários em formato PDF ou imagem (máximo 10MB cada) +

+ + {#each categoriasDocumentos as categoria} +
+

{categoria}

+
+ {#each getDocumentosByCategoria(categoria) as doc} + handleDocumentoUpload(doc.campo, file)} + onRemove={() => handleDocumentoRemove(doc.campo)} + disabled={loading} + /> + {/each} +
+
+ {/each} +
+
+ + +
+
+
+ + +
+
+
+ + + + + +
diff --git a/apps/web/src/routes/(dashboard)/ti/times/+page.svelte b/apps/web/src/routes/(dashboard)/ti/times/+page.svelte index 38f7b96..17ae303 100644 --- a/apps/web/src/routes/(dashboard)/ti/times/+page.svelte +++ b/apps/web/src/routes/(dashboard)/ti/times/+page.svelte @@ -457,11 +457,7 @@

{time.nome}