Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!--Registro de Pagamentos de Prestadores de Serviços-->
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Registro de Pagamentos</title>
- <style>
- body {
- font-family: Arial, sans-serif;
- margin: 20px;
- }
- h1 {
- color: #333;
- }
- form {
- margin-bottom: 20px;
- }
- label {
- margin-right: 10px;
- }
- table {
- width: 100%;
- border-collapse: collapse;
- margin-top: 20px;
- }
- th, td {
- border: 1px solid #ddd;
- padding: 8px;
- text-align: left;
- }
- th {
- background-color: #f4f4f4;
- }
- #total {
- margin-top: 20px;
- font-weight: bold;
- }
- #clear, #print, #filter {
- margin-top: 20px;
- padding: 10px 15px;
- border: none;
- cursor: pointer;
- }
- #clear {
- background-color: red;
- color: white;
- }
- #print {
- background-color: green;
- color: white;
- }
- #filter {
- background-color: blue;
- color: white;
- }
- </style>
- </head>
- <body>
- <h1>Registro de Pagamentos</h1>
- <form id="dataForm">
- <label for="prestador">Prestador:</label>
- <input type="text" id="prestador" placeholder="Nome do prestador" required>
- <label for="data">Data:</label>
- <input type="date" id="data" required>
- <label for="valor">Valor (R$):</label>
- <input type="number" id="valor" step="0.01" required>
- <button type="submit">Adicionar</button>
- </form>
- <label for="prestadorFilter">Filtrar por Prestador:</label>
- <select id="prestadorFilter">
- <option value="all">Todos</option>
- </select>
- <table id="tabela">
- <thead>
- <tr>
- <th>Prestador</th>
- <th>Data</th>
- <th>Valor (R$)</th>
- </tr>
- </thead>
- <tbody>
- </tbody>
- </table>
- <div id="total">Total: R$ 0.00</div>
- <button id="print">Imprimir</button>
- <button id="clear">Limpar Tudo</button>
- <script>
- const form = document.getElementById('dataForm');
- const tabela = document.getElementById('tabela').querySelector('tbody');
- const totalDiv = document.getElementById('total');
- const clearButton = document.getElementById('clear');
- const printButton = document.getElementById('print');
- const prestadorFilter = document.getElementById('prestadorFilter');
- let total = 0;
- let dados = JSON.parse(localStorage.getItem('dados')) || [];
- let filtroSelecionado = localStorage.getItem('filtroSelecionado') || 'all';
- // Atualiza a tabela com base no filtro
- function atualizarTabela(filtro = 'all') {
- tabela.innerHTML = ''; // Limpa a tabela
- total = 0;
- // Filtra os dados se necessário
- const dadosFiltrados = filtro === 'all'
- ? dados
- : dados.filter(item => item.prestador === filtro);
- dadosFiltrados.forEach((item) => {
- const row = tabela.insertRow();
- const prestadorCell = row.insertCell(0);
- const dataCell = row.insertCell(1);
- const valorCell = row.insertCell(2);
- prestadorCell.textContent = item.prestador;
- dataCell.textContent = item.data.split('-').reverse().join('/');
- valorCell.textContent = `R$ ${item.valor.toFixed(2)}`;
- total += item.valor;
- });
- totalDiv.textContent = `Total: R$ ${total.toFixed(2)}`;
- }
- // Atualiza o campo de filtro com prestadores únicos
- function atualizarFiltro() {
- const prestadores = [...new Set(dados.map(item => item.prestador))];
- prestadorFilter.innerHTML = '<option value="all">Todos</option>';
- prestadores.forEach(prestador => {
- const option = document.createElement('option');
- option.value = prestador;
- option.textContent = prestador;
- prestadorFilter.appendChild(option);
- });
- // Restaura o filtro selecionado
- prestadorFilter.value = filtroSelecionado;
- }
- // Carregar dados ao abrir a página
- atualizarTabela(filtroSelecionado);
- atualizarFiltro();
- // Evento ao adicionar novos dados
- form.addEventListener('submit', (e) => {
- e.preventDefault();
- const prestador = document.getElementById('prestador').value.trim();
- const data = document.getElementById('data').value; // Data no formato ISO (YYYY-MM-DD)
- const valor = parseFloat(document.getElementById('valor').value);
- if (prestador && data && valor) {
- // Adicionando o item à lista de dados
- dados.push({ prestador, data, valor });
- // Salvando no localStorage
- localStorage.setItem('dados', JSON.stringify(dados));
- // Atualizando a tabela, o filtro e o total
- atualizarTabela();
- atualizarFiltro();
- // Limpando o formulário
- form.reset();
- }
- });
- // Botão para limpar tudo
- clearButton.addEventListener('click', () => {
- if (confirm('Tem certeza que deseja limpar todos os dados?')) {
- dados = [];
- localStorage.removeItem('dados');
- localStorage.removeItem('filtroSelecionado');
- atualizarTabela();
- atualizarFiltro();
- }
- });
- // Botão para imprimir
- printButton.addEventListener('click', () => {
- window.print(); // Chama a função de impressão do navegador
- });
- // Evento de filtro por prestador
- prestadorFilter.addEventListener('change', (e) => {
- filtroSelecionado = e.target.value;
- localStorage.setItem('filtroSelecionado', filtroSelecionado); // Salva o filtro selecionado
- atualizarTabela(filtroSelecionado);
- });
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement