Informações & Definições

Tamanho do texto

Contrastes

Display

Realçar

Teclas de Acessibilidade

Relação Nominal dos Servidores e Agentes Públicos

Consulte informações sobre os servidores e agentes públicos

Relação Nominal dos Servidores e Agentes Públicos

Informações detalhadas dos servidores e agentes públicos.

Última atualização:
19/07/2025 16:52:58
Filtros
Exibindo servidores referente a Julho/2025. Para visualizar mais detalhes, clique no ícone em Detalhes.
Competência Nome do servidor Cargo / Função Lotação Vínculo Data de
Admissão
Data de
Exoneração
Carga
Horária
Detalhes

Nenhum registro encontrado

document.addEventListener('DOMContentLoaded', function() { const anoSelect = document.getElementById('ano'); const mesSelect = document.getElementById('mes'); if (!anoSelect || !mesSelect) { return; } anoSelect.addEventListener('change', function() { const anoSelecionado = this.value; // Mostrar loading mesSelect.innerHTML = ''; mesSelect.disabled = true; // Fazer requisição AJAX para buscar os meses disponíveis const url = `https://municipiotransparente.org/transparencia/recursos-humanos/servidores/meses-por-ano/${anoSelecionado}`; fetch(url) .then(response => { if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return response.json(); }) .then(data => { // Limpar as opções atuais do select de mês mesSelect.innerHTML = ''; mesSelect.disabled = false; // Verificar se há meses disponíveis if (!data.meses || Object.keys(data.meses).length === 0) { mesSelect.innerHTML = ''; return; } // Adicionar as novas opções Object.keys(data.meses).forEach(function(numeroMes) { const option = document.createElement('option'); option.value = numeroMes; option.textContent = data.meses[numeroMes]; mesSelect.appendChild(option); }); // Selecionar o último mês disponível if (data.ultimo_mes) { mesSelect.value = data.ultimo_mes; } }) .catch(error => { mesSelect.innerHTML = ''; mesSelect.disabled = false; }); }); // Trigger inicial para carregar os meses do ano atual if (anoSelect.value) { anoSelect.dispatchEvent(new Event('change')); } // Autocomplete para nome do servidor const nomeInput = document.getElementById('nome'); const autocompleteList = document.getElementById('autocomplete-list'); let currentFocus = -1; let searchTimeout; if (nomeInput && autocompleteList) { nomeInput.addEventListener('input', function() { const value = this.value; // Limpar timeout anterior clearTimeout(searchTimeout); if (value.length < 2) { autocompleteList.style.display = 'none'; return; } // Mostrar loading autocompleteList.innerHTML = '
Buscando...
'; autocompleteList.style.display = 'block'; // Debounce - aguardar 300ms antes de fazer a busca searchTimeout = setTimeout(() => { fetch(`https://municipiotransparente.org/transparencia/recursos-humanos/servidores/buscar-servidores?q=${encodeURIComponent(value)}`) .then(response => response.json()) .then(data => { autocompleteList.innerHTML = ''; if (data.length === 0) { autocompleteList.innerHTML = '
Nenhum servidor encontrado
'; return; } data.forEach((nome, index) => { const item = document.createElement('div'); item.className = 'autocomplete-item'; item.textContent = nome; item.addEventListener('click', function() { nomeInput.value = nome; autocompleteList.style.display = 'none'; currentFocus = -1; }); autocompleteList.appendChild(item); }); }) .catch(error => { autocompleteList.innerHTML = '
Erro ao buscar servidores
'; }); }, 300); }); // Navegação com teclado nomeInput.addEventListener('keydown', function(e) { const items = autocompleteList.querySelectorAll('.autocomplete-item'); if (e.key === 'ArrowDown') { e.preventDefault(); currentFocus++; if (currentFocus >= items.length) currentFocus = 0; setActive(items); } else if (e.key === 'ArrowUp') { e.preventDefault(); currentFocus--; if (currentFocus < 0) currentFocus = items.length - 1; setActive(items); } else if (e.key === 'Enter') { e.preventDefault(); if (currentFocus > -1 && items[currentFocus]) { items[currentFocus].click(); } } else if (e.key === 'Escape') { autocompleteList.style.display = 'none'; currentFocus = -1; } }); // Fechar autocomplete ao clicar fora document.addEventListener('click', function(e) { if (!nomeInput.contains(e.target) && !autocompleteList.contains(e.target)) { autocompleteList.style.display = 'none'; currentFocus = -1; } }); function setActive(items) { items.forEach((item, index) => { item.classList.toggle('active', index === currentFocus); }); } } });