|
|
<!DOCTYPE html> |
|
|
<html lang="pt-PT"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Gestão Comercial | Sistema de Vendas</title> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
|
<style> |
|
|
.sidebar { |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
.sidebar.collapsed { |
|
|
width: 80px; |
|
|
} |
|
|
.sidebar.collapsed .menu-text { |
|
|
display: none; |
|
|
} |
|
|
.sidebar.collapsed .logo-text { |
|
|
display: none; |
|
|
} |
|
|
.sidebar.collapsed .menu-item { |
|
|
justify-content: center; |
|
|
} |
|
|
.content-area { |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
.content-area.expanded { |
|
|
margin-left: 80px; |
|
|
} |
|
|
.chart-container { |
|
|
height: 300px; |
|
|
} |
|
|
@media (max-width: 768px) { |
|
|
.sidebar { |
|
|
position: fixed; |
|
|
z-index: 1000; |
|
|
transform: translateX(-100%); |
|
|
} |
|
|
.sidebar.open { |
|
|
transform: translateX(0); |
|
|
} |
|
|
.content-area { |
|
|
margin-left: 0 !important; |
|
|
} |
|
|
.mobile-menu-btn { |
|
|
display: block; |
|
|
} |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="bg-gray-100"> |
|
|
<div class="flex h-screen overflow-hidden"> |
|
|
|
|
|
<div class="sidebar bg-blue-800 text-white w-64 flex flex-col flex-shrink-0"> |
|
|
|
|
|
<div class="p-4 flex items-center border-b border-blue-700"> |
|
|
<div class="bg-white p-2 rounded-lg mr-3"> |
|
|
<i class="fas fa-store text-blue-800 text-xl"></i> |
|
|
</div> |
|
|
<span class="logo-text font-bold text-xl">Gestão Comercial</span> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="flex-grow overflow-y-auto"> |
|
|
<div class="p-4"> |
|
|
<div class="mb-6"> |
|
|
<div class="text-xs uppercase text-blue-300 mb-2 menu-text">Menu Principal</div> |
|
|
<a href="#" class="menu-item flex items-center py-2 px-3 rounded-lg bg-blue-700 mb-2 text-white"> |
|
|
<i class="fas fa-tachometer-alt mr-3"></i> |
|
|
<span class="menu-text">Painel</span> |
|
|
</a> |
|
|
<a href="vendas.html" class="menu-item flex items-center py-2 px-3 rounded-lg hover:bg-blue-700 mb-2 text-white"> |
|
|
<i class="fas fa-shopping-cart mr-3"></i> |
|
|
<span class="menu-text">Vendas</span> |
|
|
</a> |
|
|
<a href="#" class="menu-item flex items-center py-2 px-3 rounded-lg hover:bg-blue-700 mb-2 text-white"> |
|
|
<i class="fas fa-boxes mr-3"></i> |
|
|
<span class="menu-text">Produtos</span> |
|
|
</a> |
|
|
<a href="#" class="menu-item flex items-center py-2 px-3 rounded-lg hover:bg-blue-700 mb-2 text-white"> |
|
|
<i class="fas fa-users mr-3"></i> |
|
|
<span class="menu-text">Clientes</span> |
|
|
</a> |
|
|
<a href="#" class="menu-item flex items-center py-2 px-3 rounded-lg hover:bg-blue-700 mb-2 text-white"> |
|
|
<i class="fas fa-file-invoice-dollar mr-3"></i> |
|
|
<span class="menu-text">Faturas/Recibos</span> |
|
|
</a> |
|
|
</div> |
|
|
|
|
|
<div class="mb-6"> |
|
|
<div class="text-xs uppercase text-blue-300 mb-2 menu-text">Relatórios</div> |
|
|
<a href="#" class="menu-item flex items-center py-2 px-3 rounded-lg hover:bg-blue-700 mb-2 text-white"> |
|
|
<i class="fas fa-chart-line mr-3"></i> |
|
|
<span class="menu-text">Vendas</span> |
|
|
</a> |
|
|
<a href="#" class="menu-item flex items-center py-2 px-3 rounded-lg hover:bg-blue-700 mb-2 text-white"> |
|
|
<i class="fas fa-chart-pie mr-3"></i> |
|
|
<span class="menu-text">Inventário</span> |
|
|
</a> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<div class="text-xs uppercase text-blue-300 mb-2 menu-text">Configurações</div> |
|
|
<a href="#" class="menu-item flex items-center py-2 px-3 rounded-lg hover:bg-blue-700 mb-2 text-white"> |
|
|
<i class="fas fa-cog mr-3"></i> |
|
|
<span class="menu-text">Sistema</span> |
|
|
</a> |
|
|
<a href="#" class="menu-item flex items-center py-2 px-3 rounded-lg hover:bg-blue-700 mb-2 text-white"> |
|
|
<i class="fas fa-user-shield mr-3"></i> |
|
|
<span class="menu-text">Usuários</span> |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="p-4 border-t border-blue-700 flex items-center"> |
|
|
<div class="w-10 h-10 rounded-full bg-blue-600 flex items-center justify-center mr-3"> |
|
|
<i class="fas fa-user"></i> |
|
|
</div> |
|
|
<div class="menu-text"> |
|
|
<div class="font-medium">Admin</div> |
|
|
<div class="text-xs text-blue-300">Administrador</div> |
|
|
</div> |
|
|
<button class="ml-auto text-blue-300 hover:text-white" id="toggleSidebar"> |
|
|
<i class="fas fa-chevron-left"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="content-area flex-grow overflow-auto"> |
|
|
|
|
|
<div class="bg-white shadow-sm p-4 flex items-center justify-between"> |
|
|
<button class="mobile-menu-btn hidden text-gray-600 hover:text-blue-800 mr-4" id="mobileMenuBtn"> |
|
|
<i class="fas fa-bars text-xl"></i> |
|
|
</button> |
|
|
<div class="flex-grow"> |
|
|
<h1 class="text-2xl font-bold text-gray-800">Dashboard</h1> |
|
|
</div> |
|
|
<div class="flex items-center"> |
|
|
<div class="relative mr-4"> |
|
|
<input type="text" placeholder="Procurar..." class="pl-10 pr-4 py-2 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"> |
|
|
<i class="fas fa-search absolute left-3 top-3 text-gray-400"></i> |
|
|
</div> |
|
|
<div class="relative mr-4"> |
|
|
<button class="text-gray-600 hover:text-blue-800"> |
|
|
<i class="fas fa-bell text-xl"></i> |
|
|
<span class="absolute top-0 right-0 w-2 h-2 bg-red-500 rounded-full"></span> |
|
|
</button> |
|
|
</div> |
|
|
<div class="relative"> |
|
|
<button class="text-gray-600 hover:text-blue-800"> |
|
|
<i class="fas fa-envelope text-xl"></i> |
|
|
<span class="absolute top-0 right-0 w-2 h-2 bg-red-500 rounded-full"></span> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="p-6"> |
|
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-6"> |
|
|
<div class="bg-white rounded-lg shadow p-6"> |
|
|
<div class="flex items-center"> |
|
|
<div class="p-3 rounded-full bg-blue-100 text-blue-800 mr-4"> |
|
|
<i class="fas fa-shopping-cart"></i> |
|
|
</div> |
|
|
<div> |
|
|
<div class="text-gray-500 text-sm">Vendas de Hoje</div> |
|
|
<div class="text-2xl font-bold">€ 2.245,00</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="mt-4 text-sm text-green-600"> |
|
|
<i class="fas fa-arrow-up mr-1"></i> 12% em relação a ontem |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="bg-white rounded-lg shadow p-6"> |
|
|
<div class="flex items-center"> |
|
|
<div class="p-3 rounded-full bg-green-100 text-green-800 mr-4"> |
|
|
<i class="fas fa-users"></i> |
|
|
</div> |
|
|
<div> |
|
|
<div class="text-gray-500 text-sm">Novos Clientes</div> |
|
|
<div class="text-2xl font-bold">24</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="mt-4 text-sm text-green-600"> |
|
|
<i class="fas fa-arrow-up mr-1"></i> 8% em relação ao mês passado |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="bg-white rounded-lg shadow p-6"> |
|
|
<div class="flex items-center"> |
|
|
<div class="p-3 rounded-full bg-orange-100 text-orange-800 mr-4"> |
|
|
<i class="fas fa-box-open"></i> |
|
|
</div> |
|
|
<div> |
|
|
<div class="text-gray-500 text-sm">Produtos em Estoque</div> |
|
|
<div class="text-2xl font-bold">1.245</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="mt-4 text-sm text-red-600"> |
|
|
<i class="fas fa-arrow-down mr-1"></i> 5% em relação ao mês passado |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="bg-white rounded-lg shadow p-6"> |
|
|
<div class="flex items-center"> |
|
|
<div class="p-3 rounded-full bg-purple-100 text-purple-800 mr-4"> |
|
|
<i class="fas fa-file-invoice-dollar"></i> |
|
|
</div> |
|
|
<div> |
|
|
<div class="text-gray-500 text-sm">Faturas Pendentes</div> |
|
|
<div class="text-2xl font-bold">18</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="mt-4 text-sm text-green-600"> |
|
|
<i class="fas fa-arrow-up mr-1"></i> 3% em relação ao mês passado |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6"> |
|
|
<div class="bg-white rounded-lg shadow p-6"> |
|
|
<div class="flex justify-between items-center mb-4"> |
|
|
<h2 class="text-lg font-semibold text-gray-800">Vendas Mensais</h2> |
|
|
<select class="border border-gray-300 rounded-lg px-3 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500"> |
|
|
<option>Últimos 6 meses</option> |
|
|
<option>Últimos 12 meses</option> |
|
|
<option>Este ano</option> |
|
|
</select> |
|
|
</div> |
|
|
<div class="chart-container"> |
|
|
<canvas id="salesChart"></canvas> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="bg-white rounded-lg shadow p-6"> |
|
|
<div class="flex justify-between items-center mb-4"> |
|
|
<h2 class="text-lg font-semibold text-gray-800">Produtos Mais Vendidos</h2> |
|
|
<select class="border border-gray-300 rounded-lg px-3 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500"> |
|
|
<option>Este mês</option> |
|
|
<option>Mês passado</option> |
|
|
<option>Este ano</option> |
|
|
</select> |
|
|
</div> |
|
|
<div class="chart-container"> |
|
|
<canvas id="productsChart"></canvas> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="bg-white rounded-lg shadow overflow-hidden mb-6"> |
|
|
<div class="p-6 border-b border-gray-200"> |
|
|
<h2 class="text-lg font-semibold text-gray-800">Últimas Vendas</h2> |
|
|
</div> |
|
|
<div class="overflow-x-auto"> |
|
|
<table class="min-w-full divide-y divide-gray-200"> |
|
|
<thead class="bg-gray-50"> |
|
|
<tr> |
|
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Nº Pedido</th> |
|
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Cliente</th> |
|
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Data</th> |
|
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Valor</th> |
|
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Estado</th> |
|
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Ações</th> |
|
|
</tr> |
|
|
</thead> |
|
|
<tbody class="bg-white divide-y divide-gray-200"> |
|
|
<tr> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">#12345</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Empresa A</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">15-06-2023</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">€ 2.450,00</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">Pago</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500"> |
|
|
<button class="text-blue-600 hover:text-blue-900 mr-3"><i class="fas fa-eye"></i></button> |
|
|
<button class="text-gray-600 hover:text-gray-900"><i class="fas fa-print"></i></button> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">#12344</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Empresa B</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">14/06/2023</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">R$ 1.890,00</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-yellow-100 text-yellow-800">Por pagar</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500"> |
|
|
<button class="text-blue-600 hover:text-blue-900 mr-3"><i class="fas fa-eye"></i></button> |
|
|
<button class="text-gray-600 hover:text-gray-900"><i class="fas fa-print"></i></button> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">#12343</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Empresa C</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">13/06/2023</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">R$ 3.210,00</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">Pago</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500"> |
|
|
<button class="text-blue-600 hover:text-blue-900 mr-3"><i class="fas fa-eye"></i></button> |
|
|
<button class="text-gray-600 hover:text-gray-900"><i class="fas fa-print"></i></button> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">#12342</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Empresa D</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">12/06/2023</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">R$ 980,00</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-red-100 text-red-800">Anulado</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500"> |
|
|
<button class="text-blue-600 hover:text-blue-900 mr-3"><i class="fas fa-eye"></i></button> |
|
|
<button class="text-gray-600 hover:text-gray-900"><i class="fas fa-print"></i></button> |
|
|
</td> |
|
|
</tr> |
|
|
</tbody> |
|
|
</table> |
|
|
</div> |
|
|
<div class="bg-gray-50 px-6 py-3 flex items-center justify-between border-t border-gray-200"> |
|
|
<div class="text-sm text-gray-500"> |
|
|
A mostrar <span class="font-medium">1</span> a <span class="font-medium">4</span> de <span class="font-medium">24</span> resultados |
|
|
</div> |
|
|
<div class="flex space-x-2"> |
|
|
<button class="px-3 py-1 border border-gray-300 rounded-md text-sm font-medium text-gray-700 bg-white hover:bg-gray-50">Anterior</button> |
|
|
<button class="px-3 py-1 border border-gray-300 rounded-md text-sm font-medium text-white bg-blue-600 hover:bg-blue-700">1</button> |
|
|
<button class="px-3 py-1 border border-gray-300 rounded-md text-sm font-medium text-gray-700 bg-white hover:bg-gray-50">2</button> |
|
|
<button class="px-3 py-1 border border-gray-300 rounded-md text-sm font-medium text-gray-700 bg-white hover:bg-gray-50">3</button> |
|
|
<button class="px-3 py-1 border border-gray-300 rounded-md text-sm font-medium text-gray-700 bg-white hover:bg-gray-50">Próximo</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6"> |
|
|
<button class="bg-white rounded-lg shadow p-4 flex flex-col items-center justify-center hover:bg-blue-50 transition-colors"> |
|
|
<div class="bg-blue-100 p-3 rounded-full mb-3"> |
|
|
<i class="fas fa-plus text-blue-800"></i> |
|
|
</div> |
|
|
<span class="text-sm font-medium text-gray-700">Nova Venda</span> |
|
|
</button> |
|
|
<button class="bg-white rounded-lg shadow p-4 flex flex-col items-center justify-center hover:bg-green-50 transition-colors"> |
|
|
<div class="bg-green-100 p-3 rounded-full mb-3"> |
|
|
<i class="fas fa-user-plus text-green-800"></i> |
|
|
</div> |
|
|
<span class="text-sm font-medium text-gray-700">Novo Cliente</span> |
|
|
</button> |
|
|
<button class="bg-white rounded-lg shadow p-4 flex flex-col items-center justify-center hover:bg-orange-50 transition-colors"> |
|
|
<div class="bg-orange-100 p-3 rounded-full mb-3"> |
|
|
<i class="fas fa-box text-orange-800"></i> |
|
|
</div> |
|
|
<span class="text-sm font-medium text-gray-700">Novo Produto</span> |
|
|
</button> |
|
|
<button class="bg-white rounded-lg shadow p-4 flex flex-col items-center justify-center hover:bg-purple-50 transition-colors"> |
|
|
<div class="bg-purple-100 p-3 rounded-full mb-3"> |
|
|
<i class="fas fa-file-invoice text-purple-800"></i> |
|
|
</div> |
|
|
<span class="text-sm font-medium text-gray-700">Nova Fatura</span> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script> |
|
|
|
|
|
|
|
|
<div id="newSaleModal" class="fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full hidden"> |
|
|
<div class="relative top-20 mx-auto p-5 border w-11/12 md:w-1/2 lg:w-1/3 shadow-lg rounded-md bg-white"> |
|
|
<div class="flex justify-between items-center mb-4"> |
|
|
<h3 class="text-lg font-semibold">Nova Venda</h3> |
|
|
<button onclick="document.getElementById('newSaleModal').classList.add('hidden')" class="text-gray-500 hover:text-gray-700"> |
|
|
<i class="fas fa-times"></i> |
|
|
</button> |
|
|
</div> |
|
|
<form> |
|
|
<div class="mb-4"> |
|
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="client"> |
|
|
Cliente |
|
|
</label> |
|
|
<select id="client" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"> |
|
|
<option>Selecione um cliente</option> |
|
|
<option>Cliente A</option> |
|
|
<option>Cliente B</option> |
|
|
</select> |
|
|
</div> |
|
|
<div class="mb-4"> |
|
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="product"> |
|
|
Produto |
|
|
</label> |
|
|
<select id="product" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"> |
|
|
<option>Selecione um produto</option> |
|
|
<option>Produto A - €10.00</option> |
|
|
<option>Produto B - €15.00</option> |
|
|
</select> |
|
|
</div> |
|
|
<div class="mb-4"> |
|
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="quantity"> |
|
|
Quantidade |
|
|
</label> |
|
|
<input id="quantity" type="number" min="1" value="1" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"> |
|
|
</div> |
|
|
<div class="flex justify-end"> |
|
|
<button type="button" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline"> |
|
|
Adicionar |
|
|
</button> |
|
|
</div> |
|
|
</form> |
|
|
</div> |
|
|
</div> |
|
|
<script> |
|
|
|
|
|
const toggleSidebar = document.getElementById('toggleSidebar'); |
|
|
const sidebar = document.querySelector('.sidebar'); |
|
|
const contentArea = document.querySelector('.content-area'); |
|
|
const mobileMenuBtn = document.getElementById('mobileMenuBtn'); |
|
|
|
|
|
toggleSidebar.addEventListener('click', () => { |
|
|
sidebar.classList.toggle('collapsed'); |
|
|
contentArea.classList.toggle('expanded'); |
|
|
|
|
|
|
|
|
const icon = toggleSidebar.querySelector('i'); |
|
|
if (sidebar.classList.contains('collapsed')) { |
|
|
icon.classList.remove('fa-chevron-left'); |
|
|
icon.classList.add('fa-chevron-right'); |
|
|
} else { |
|
|
icon.classList.remove('fa-chevron-right'); |
|
|
icon.classList.add('fa-chevron-left'); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
mobileMenuBtn.addEventListener('click', () => { |
|
|
sidebar.classList.toggle('open'); |
|
|
}); |
|
|
|
|
|
|
|
|
document.addEventListener('click', (e) => { |
|
|
if (window.innerWidth <= 768 && !sidebar.contains(e.target) && e.target !== mobileMenuBtn) { |
|
|
sidebar.classList.remove('open'); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
function openNewSaleModal() { |
|
|
document.getElementById('newSaleModal').classList.remove('hidden'); |
|
|
} |
|
|
|
|
|
function addProductToSale() { |
|
|
|
|
|
alert('Produto adicionado à venda!'); |
|
|
} |
|
|
|
|
|
function finalizeSale() { |
|
|
|
|
|
alert('Venda finalizada com sucesso!'); |
|
|
} |
|
|
|
|
|
|
|
|
const salesCtx = document.getElementById('salesChart').getContext('2d'); |
|
|
const salesChart = new Chart(salesCtx, { |
|
|
type: 'line', |
|
|
data: { |
|
|
labels: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], |
|
|
datasets: [{ |
|
|
label: 'Vendas em R$', |
|
|
data: [2200, 1900, 2500, 1800, 2100, 2500, 2300, 2700, 2400, 2600, 2800, 3000], |
|
|
backgroundColor: 'rgba(59, 130, 246, 0.2)', |
|
|
borderColor: 'rgba(59, 130, 246, 1)', |
|
|
borderWidth: 2, |
|
|
tension: 0.4, |
|
|
fill: true |
|
|
}] |
|
|
}, |
|
|
options: { |
|
|
responsive: true, |
|
|
maintainAspectRatio: false, |
|
|
plugins: { |
|
|
legend: { |
|
|
display: false |
|
|
} |
|
|
}, |
|
|
scales: { |
|
|
y: { |
|
|
beginAtZero: true, |
|
|
ticks: { |
|
|
callback: function(value) { |
|
|
return '€ ' + value.toLocaleString('pt-PT'); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}); |
|
|
|
|
|
const productsCtx = document.getElementById('productsChart').getContext('2d'); |
|
|
const productsChart = new Chart(productsCtx, { |
|
|
type: 'bar', |
|
|
data: { |
|
|
labels: ['Produto A', 'Produto B', 'Produto C', 'Produto D', 'Produto E'], |
|
|
datasets: [{ |
|
|
label: 'Quantidade Vendida', |
|
|
data: [120, 90, 150, 80, 110], |
|
|
backgroundColor: [ |
|
|
'rgba(99, 102, 241, 0.7)', |
|
|
'rgba(59, 130, 246, 0.7)', |
|
|
'rgba(16, 185, 129, 0.7)', |
|
|
'rgba(245, 158, 11, 0.7)', |
|
|
'rgba(244, 63, 94, 0.7)' |
|
|
], |
|
|
borderColor: [ |
|
|
'rgba(99, 102, 241, 1)', |
|
|
'rgba(59, 130, 246, 1)', |
|
|
'rgba(16, 185, 129, 1)', |
|
|
'rgba(245, 158, 11, 1)', |
|
|
'rgba(244, 63, 94, 1)' |
|
|
], |
|
|
borderWidth: 1 |
|
|
}] |
|
|
}, |
|
|
options: { |
|
|
responsive: true, |
|
|
maintainAspectRatio: false, |
|
|
plugins: { |
|
|
legend: { |
|
|
display: false |
|
|
} |
|
|
}, |
|
|
scales: { |
|
|
y: { |
|
|
beginAtZero: true |
|
|
} |
|
|
} |
|
|
} |
|
|
}); |
|
|
</script> |
|
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=ocirema/teste" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
|
</html> |