Criando um Sistema de Senhas de Atendimento Online: Um Guia Passo a Passo

No mundo cada vez mais digitalizado de hoje, os sistemas de senhas de atendimento online oferecem uma maneira eficiente e organizada de gerenciar o fluxo de clientes e oferecer um serviço mais rápido e justo. Neste artigo, vamos criar um sistema de senhas de atendimento online utilizando HTML, CSS e JavaScript. Vamos explicar cada parte do código para garantir que você entenda como funciona e possa personalizá-lo conforme suas necessidades.

Passo 1: Estrutura Básica HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Senhas de Atendimento Online</title>
<!-- Estilos CSS -->
<style>
/* Estilos CSS aqui */
</style>
</head>
<body>
<!-- Conteúdo HTML aqui -->
</body>
</html>

Começamos com a estrutura básica do HTML, incluindo a declaração do tipo de documento, a definição do idioma, as meta tags para codificação de caracteres e visualização responsiva, e o título da página. Também incluímos uma seção para estilos CSS, que será explicada mais tarde.

Passo 2: Layout e Estilos CSS

/* Estilos CSS */
body, html {
  height: 100%;
  margin: 0;
}

.container {
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

button {
  /* Estilos para botões */
}

#resultado {
  /* Estilos para o resultado */
}

h1 {
  /* Estilos para o cabeçalho */
}

Nesta seção, definimos os estilos CSS para o corpo da página, o container que centraliza o conteúdo, os botões de seleção, o resultado e o cabeçalho. Esses estilos garantem que nossa página seja responsiva e visualmente atraente.

Passo 3: Estrutura do Conteúdo HTML

<h1>Escolha uma das opções</h1>
<div class="container">
  <button id="inteiroBtn">Normal</button>
  <button id="meiaBtn">Preferencial</button>
  <div id="resultado"></div>
</div>

Aqui, definimos o conteúdo principal da página, incluindo um título, dois botões para seleção de tipo de atendimento (normal e preferencial) e uma área para exibir o resultado da seleção.

Passo 4: Funcionalidade JavaScript

Aqui começamos a parte mais crucial do nosso sistema. O JavaScript é responsável por gerenciar a lógica de geração e exibição de senhas, bem como a contagem de atendimentos realizados.

Passo 5: Lógica JavaScript -Sistema de Senhas de Atendimento Online

// JavaScript para gerenciar a lógica de senhas
// Verificar se há uma data armazenada no armazenamento local
let lastAccessDate = localStorage.getItem('lastAccessDate');

// Se não houver data armazenada ou a data armazenada for diferente da data atual, reiniciar o contador
if (!lastAccessDate || new Date(lastAccessDate).getDate() !== new Date().getDate()) {
  localStorage.setItem('lastAccessDate', new Date()); // Armazenar a nova data
  localStorage.setItem('contador', 0); // Reiniciar o contador
}

// Obter o contador do armazenamento local
let contador = parseInt(localStorage.getItem('contador')) || 0;

// Adicionar ouvintes de eventos aos botões de seleção
document.getElementById('inteiroBtn').addEventListener('click', function() {
  contador++;
  imprimirResultado('Normal', contador);
});

document.getElementById('meiaBtn').addEventListener('click', function() {
  contador++;
  imprimirResultado('Preferencial', contador);
});

// Função para imprimir o resultado da seleção
function imprimirResultado(tipo, numero) {
  let numeroFormatado = pad(numero, 3);
  
 // Cria o conteúdo a ser impresso
  let conteudo = '<div style="text-align: center; font-size: 24px;">';
  conteudo += '<div style="width:80%;background-color: #f2f2f2; border: 1px solid #ccc; padding: 5%; display: inline-block;">';
  conteudo += '<h1 style="font-size: 36px;">Número</h1>';
  conteudo += '<p style="font-size: 48px;">' + numeroFormatado + '</p>';
  conteudo += '<hr style="border-style: dashed;">';
  conteudo += '<p style="font-size: 36px;width:96%;padding:2%;border:solid 1px black">' + tipo + '</p>';
  conteudo += '</div>';
  conteudo += '</div>';
  
  // Abrir a janela de impressão
  let janelaImpressao = window.open('', '_blank');
  janelaImpressao.document.write('<html><head><title>Resultado</title></head><body>');
  janelaImpressao.document.write(conteudo);
  janelaImpressao.document.write('</body></html>');
  janelaImpressao.document.close();
  janelaImpressao.print();

  // Atualizar o contador no armazenamento local
  localStorage.setItem('contador', contador);
}

// Função para preencher números com zeros à esquerda
function pad(num, size) {
  let s = num + "";
  while (s.length < size) s = "0" + s;
  return s;
}

Nesta parte do código, inicializamos o contador de atendimentos e verificamos se é um novo dia. Depois, adicionamos ouvintes de eventos aos botões de seleção para incrementar o contador e imprimir o resultado quando um botão é clicado. A função imprimirResultado cria o conteúdo a ser exibido e abre uma nova janela para impressão. A função pad é responsável por preencher os números com zeros à esquerda, garantindo uma formatação consistente.

Com isso, nosso sistema de senhas de atendimento online está completo e pronto para ser implementado em seu projeto!

Este artigo fornece uma visão geral do processo de criação de um sistema de senhas de atendimento online usando HTML, CSS e JavaScript. Esperamos que este guia passo a passo tenha sido útil para você entender como funciona cada parte do código e como pode ser adaptado às suas necessidades específicas. Se tiver alguma dúvida ou sugestão, não hesite em entrar em contato

Codigo completo do sistema !

Veja o sistema funcionando : https://owx.com.br/teste.php


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Senhas de atendimento online</title>
<style>
body, html {
  height: 100%;
  margin: 0;
}

.container {
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

button {
  padding: 20px 40px;
  font-size: 24px;
  background-color: #f2f2f2;
  border: 2px solid #ccc;
  cursor: pointer;
  width: 50%;
  max-width: 300px; /* Limitando a largura máxima para não ficar muito grande em telas grandes */
}


    .container {
  text-align: center;
  margin-top: 50px;
}

button {
  padding: 10px 20px;
  margin: 0 10px;
  font-size: 50px;
}

#resultado {
  margin-top: 20px;
  text-align:center;
  font-size: 100px;
}
h1{font-size:100px;text-align:center;}
</style>
</head>
<body>
<h1>Escolha uma das opções</h1>
<div class="container">
    
  <button id="inteiroBtn">Normal</button>
  <button id="meiaBtn">Preferencial</button>
  <div id="resultado"></div>
</div>

<script>

// Verificar se há uma data armazenada no armazenamento local
let lastAccessDate = localStorage.getItem('lastAccessDate');

// Se não houver data armazenada ou a data armazenada for diferente da data atual, reiniciar o contador
if (!lastAccessDate || new Date(lastAccessDate).getDate() !== new Date().getDate()) {
  localStorage.setItem('lastAccessDate', new Date()); // Armazenar a nova data
  localStorage.setItem('contador', 0); // Reiniciar o contador
}

// Obter o contador do armazenamento local
let contador = parseInt(localStorage.getItem('contador')) || 0;

document.getElementById('inteiroBtn').addEventListener('click', function() {
  contador++;
  imprimirResultado('Normal', contador);
});

document.getElementById('meiaBtn').addEventListener('click', function() {
  contador++;
  imprimirResultado('Preferencial', contador);
});

function imprimirResultado(tipo, numero) {
  let numeroFormatado = pad(numero, 3);
  
 // Cria o conteúdo a ser impresso
  let conteudo = '<div style="text-align: center; font-size: 24px;">';
  conteudo += '<div style="width:80%;background-color: #f2f2f2; border: 1px solid #ccc; padding: 5%; display: inline-block;">'; // Aumentando o padding para 20px
  conteudo += '<h1 style="font-size: 36px;">Número</h1>';
  conteudo += '<p style="font-size: 48px;">' + numeroFormatado + '</p>';
  conteudo += '<hr style="border-style: dashed;">';
  conteudo += '<p style="font-size: 36px;width:96%;padding:2%;border:solid 1px black">' + tipo + '</p>';
  conteudo += '</div>';
  conteudo += '</div>';
  
  // Abrir a janela de impressão
  let janelaImpressao = window.open('', '_blank');
  janelaImpressao.document.write('<html><head><title>Resultado</title></head><body>');
  janelaImpressao.document.write(conteudo);
  janelaImpressao.document.write('</body></html>');
  janelaImpressao.document.close();
  janelaImpressao.print();

  // Atualizar o contador no armazenamento local
  localStorage.setItem('contador', contador);
}

function pad(num, size) {
  let s = num + "";
  while (s.length < size) s = "0" + s;
  return s;
}

// Contate o desenvolvedor : 32988511462
</script>
</body>
</html>