feat: enhance dispensa management with modal confirmation and time input improvements
- Introduced a modal for confirming the removal of dispensas, improving user interaction and preventing accidental deletions. - Updated time input fields to use a more user-friendly format, allowing for direct time selection. - Refactored state management for dispensa creation, ensuring better handling of time and date inputs. - Enhanced UI elements for better feedback and clarity during the dispensa creation process.
This commit is contained in:
@@ -19,6 +19,11 @@
|
||||
let mostrandoModalDetalhes = $state(false);
|
||||
let mostrandoModalExcluir = $state(false);
|
||||
|
||||
// Monitorar mudanças em funcionarioSelecionado
|
||||
$effect(() => {
|
||||
console.log('🔄 [DEBUG] funcionarioSelecionado mudou:', funcionarioSelecionado, typeof funcionarioSelecionado);
|
||||
});
|
||||
|
||||
// Formulário de edição
|
||||
let horaNova = $state(8);
|
||||
let minutoNova = $state(0);
|
||||
@@ -102,10 +107,21 @@
|
||||
const homologacoesParams = $derived({
|
||||
funcionarioId: funcionarioSelecionado || undefined,
|
||||
});
|
||||
const registrosQueryParams = $derived({
|
||||
funcionarioId: funcionarioSelecionado || undefined,
|
||||
dataInicio: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0]!,
|
||||
dataFim: new Date().toISOString().split('T')[0]!,
|
||||
|
||||
// Parâmetros para query de registros - só executa quando há funcionário selecionado
|
||||
const registrosQueryParams = $derived.by(() => {
|
||||
// Verificar se funcionarioSelecionado não é string vazia
|
||||
if (!funcionarioSelecionado || funcionarioSelecionado === '') {
|
||||
console.log('⏭️ [DEBUG] registrosQueryParams: skip (sem funcionário selecionado)');
|
||||
return 'skip';
|
||||
}
|
||||
const params = {
|
||||
funcionarioId: funcionarioSelecionado as Id<'funcionarios'>,
|
||||
dataInicio: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0]!,
|
||||
dataFim: new Date().toISOString().split('T')[0]!,
|
||||
};
|
||||
console.log('📤 [DEBUG] registrosQueryParams:', params);
|
||||
return params;
|
||||
});
|
||||
|
||||
const homologacoesQuery = useQuery(api.pontos.listarHomologacoes, homologacoesParams);
|
||||
@@ -114,7 +130,26 @@
|
||||
const subordinados = $derived(subordinadosQuery?.data || []);
|
||||
const motivos = $derived(motivosQuery?.data);
|
||||
const homologacoes = $derived(homologacoesQuery?.data || []);
|
||||
const registros = $derived(registrosQuery?.data || []);
|
||||
|
||||
// Registros já filtrados pela query no backend
|
||||
const registros = $derived.by(() => {
|
||||
if (!funcionarioSelecionado || funcionarioSelecionado === '') {
|
||||
return [];
|
||||
}
|
||||
const dados = registrosQuery?.data;
|
||||
console.log('🔍 [DEBUG] funcionarioSelecionado:', funcionarioSelecionado);
|
||||
console.log('🔍 [DEBUG] registrosQuery?.data:', dados);
|
||||
console.log('🔍 [DEBUG] registrosQuery?.status:', registrosQuery?.status);
|
||||
if (!dados || !Array.isArray(dados)) {
|
||||
console.log('⚠️ [DEBUG] Dados não são array ou estão vazios');
|
||||
return [];
|
||||
}
|
||||
// A query do backend já filtra pelo funcionário, mas adicionamos verificação extra
|
||||
// Converter ambos para string para garantir comparação correta
|
||||
const filtrados = dados.filter((r) => String(r.funcionarioId) === String(funcionarioSelecionado));
|
||||
console.log('✅ [DEBUG] Registros filtrados:', filtrados.length, filtrados);
|
||||
return filtrados;
|
||||
});
|
||||
|
||||
// Verificar se é gestor (tem subordinados)
|
||||
const isGestor = $derived(subordinados.length > 0);
|
||||
@@ -335,14 +370,14 @@
|
||||
<div class="card bg-base-100 shadow-xl mb-6">
|
||||
<div class="card-body">
|
||||
<h2 class="card-title mb-4">Selecionar Funcionário</h2>
|
||||
<select
|
||||
class="select select-bordered w-full"
|
||||
bind:value={funcionarioSelecionado}
|
||||
disabled={modoEdicao}
|
||||
>
|
||||
<select
|
||||
class="select select-bordered w-full"
|
||||
bind:value={funcionarioSelecionado}
|
||||
disabled={modoEdicao}
|
||||
>
|
||||
<option value="">Selecione um funcionário</option>
|
||||
{#each funcionarios as funcionario}
|
||||
<option value={funcionario._id}>
|
||||
<option value={funcionario._id as string}>
|
||||
{funcionario.nome} {funcionario.matricula ? `(${funcionario.matricula})` : ''}
|
||||
</option>
|
||||
{/each}
|
||||
|
||||
Reference in New Issue
Block a user