| | <!DOCTYPE html> |
| | <html lang="fr"> |
| | <head> |
| | <meta charset="UTF-8"> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | <title>Remorquage Pro - Rapports</title> |
| | <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> |
| | <script src="https://cdn.tailwindcss.com"></script> |
| | <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet"> |
| | <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script> |
| | <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
| | <script src="https://unpkg.com/feather-icons"></script> |
| | <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> |
| | <style> |
| | .sidebar { |
| | transition: all 0.3s ease; |
| | } |
| | .active-menu { |
| | background-color: #3B82F6; |
| | color: white; |
| | } |
| | </style> |
| | </head> |
| | <body class="bg-gray-100 flex h-screen"> |
| | |
| | <div class="sidebar bg-blue-800 text-white w-64 space-y-6 py-7 px-2 absolute inset-y-0 left-0 transform -translate-x-full md:relative md:translate-x-0 transition duration-200 ease-in-out" id="sidebar"> |
| | <div class="text-white flex items-center space-x-2 px-4"> |
| | <i data-feather="truck" class="h-8 w-8"></i> |
| | <span class="text-2xl font-extrabold">Remorquage Pro</span> |
| | </div> |
| | <nav> |
| | <a href="index.html" class="py-2.5 px-4 rounded transition duration-200 flex items-center space-x-2 hover:bg-blue-700"> |
| | <i data-feather="home"></i> |
| | <span>Dashboard</span> |
| | </a> |
| | <a href="clients.html" class="py-2.5 px-4 rounded transition duration-200 flex items-center space-x-2 hover:bg-blue-700"> |
| | <i data-feather="users"></i> |
| | <span>Clients</span> |
| | </a> |
| | <a href="employes.html" class="py-2.5 px-4 rounded transition duration-200 flex items-center space-x-2 hover:bg-blue-700"> |
| | <i data-feather="user-check"></i> |
| | <span>Employés</span> |
| | </a> |
| | <a href="vehicules.html" class="py-2.5 px-4 rounded transition duration-200 flex items-center space-x-2 hover:bg-blue-700"> |
| | <i data-feather="truck"></i> |
| | <span>Véhicules</span> |
| | </a> |
| | <a href="missions.html" class="py-2.5 px-4 rounded transition duration-200 flex items-center space-x-2 hover:bg-blue-700"> |
| | <i data-feather="map-pin"></i> |
| | <span>Missions</span> |
| | </a> |
| | <a href="assurances.html" class="py-2.5 px-4 rounded transition duration-200 flex items-center space-x-2 hover:bg-blue-700"> |
| | <i data-feather="shield"></i> |
| | <span>Assurances</span> |
| | </a> |
| | <a href="reglements.html" class="py-2.5 px-4 rounded transition duration-200 flex items-center space-x-2 hover:bg-blue-700"> |
| | <i data-feather="credit-card"></i> |
| | <span>Règlements</span> |
| | </a> |
| | <a href="rapports.html" class="py-2.5 px-4 rounded transition duration-200 flex items-center space-x-2 active-menu"> |
| | <i data-feather="bar-chart-2"></i> |
| | <span>Rapports</span> |
| | </a> |
| | </nav> |
| | </div> |
| |
|
| | |
| | <div class="flex-1 flex flex-col overflow-hidden"> |
| | |
| | <header class="bg-white shadow-sm"> |
| | <div class="flex items-center justify-between p-4"> |
| | <div class="flex items-center"> |
| | <button id="menu-toggle" class="text-gray-500 focus:outline-none md:hidden"> |
| | <i data-feather="menu"></i> |
| | </button> |
| | <h1 class="text-2xl font-semibold text-gray-800 ml-4">Rapports et Statistiques</h1> |
| | </div> |
| | <div class="flex items-center space-x-4"> |
| | <div class="relative"> |
| | <i data-feather="bell" class="text-gray-500"></i> |
| | <span class="absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500"></span> |
| | </div> |
| | <div class="flex items-center"> |
| | <img src="http://static.photos/people/40x40/10" alt="Profile" class="h-10 w-10 rounded-full"> |
| | <span class="ml-2 text-gray-700">Admin</span> |
| | </div> |
| | </div> |
| | </div> |
| | </header> |
| |
|
| | |
| | <main class="flex-1 overflow-y-auto p-6 bg-gray-100"> |
| | |
| | <div class="bg-white rounded-lg shadow p-6 mb-6" data-aos="fade-up"> |
| | <div class="flex flex-col md:flex-row md:items-center md:space-x-6 space-y-4 md:space-y-0"> |
| | <div> |
| | <label class="block text-sm font-medium text-gray-700 mb-2">Période</label> |
| | <select class="border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"> |
| | <option>Ce mois</option> |
| | <option>Trimestre dernier</option> |
| | <option>Cette année</option> |
| | <option>Année dernière</option> |
| | </select> |
| | </div> |
| | <div> |
| | <label class="block text-sm font-medium text-gray-700 mb-2">Type de rapport</label> |
| | <select class="border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"> |
| | <option>Performance générale</option> |
| | <option>Analyse financière</option> |
| | <option>Statistiques missions</option> |
| | <option>Performance employés</option> |
| | </select> |
| | </div> |
| | <div class="flex items-end"> |
| | <button class="bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700 transition duration-200"> |
| | Générer le rapport |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <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" data-aos="fade-up"> |
| | <div class="flex items-center"> |
| | <div class="p-3 rounded-full bg-blue-100 text-blue-600"> |
| | <i data-feather="map-pin" class="h-6 w-6"></i> |
| | </div> |
| | <div class="ml-4"> |
| | <p class="text-sm font-medium text-gray-600">Missions totales</p> |
| | <h3 class="text-2xl font-bold text-gray-800">247</h3> |
| | </div> |
| | </div> |
| | </div> |
| | <div class="bg-white rounded-lg shadow p-6" data-aos="fade-up" data-aos-delay="100"> |
| | <div class="flex items-center"> |
| | <div class="p-3 rounded-full bg-green-100 text-green-600"> |
| | <i data-feather="dollar-sign" class="h-6 w-6"></i> |
| | </div> |
| | <div class="ml-4"> |
| | <p class="text-sm font-medium text-gray-600">Chiffre d'affaires</p> |
| | <h3 class="text-2xl font-bold text-gray-800">86 450 €</h3> |
| | </div> |
| | </div> |
| | </div> |
| | <div class="bg-white rounded-lg shadow p-6" data-aos="fade-up" data-aos-delay="200"> |
| | <div class="flex items-center"> |
| | <div class="p-3 rounded-full bg-yellow-100 text-yellow-600"> |
| | <i data-feather="users" class="h-6 w-6"></i> |
| | </div> |
| | <div class="ml-4"> |
| | <p class="text-sm font-medium text-gray-600">Clients actifs</p> |
| | <h3 class="text-2xl font-bold text-gray-800">58</h3> |
| | </div> |
| | </div> |
| | </div> |
| | <div class="bg-white rounded-lg shadow p-6" data-aos="fade-up" data-aos-delay="300"> |
| | <div class="flex items-center"> |
| | <div class="p-3 rounded-full bg-red-100 text-red-600"> |
| | <i data-feather="trending-up" class="h-6 w-6"></i> |
| | </div> |
| | <div class="ml-4"> |
| | <p class="text-sm font-medium text-gray-600">Taux de réussite</p> |
| | <h3 class="text-2xl font-bold text-gray-800">97.5%</h3> |
| | </div> |
| | </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" data-aos="fade-right"> |
| | <h2 class="text-lg font-semibold text-gray-800 mb-4">Répartition des missions par type</h2> |
| | <div class="h-64"> |
| | <canvas id="missionsChart"></canvas> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div class="bg-white rounded-lg shadow p-6" data-aos="fade-left"> |
| | <h2 class="text-lg font-semibold text-gray-800 mb-4">Évolution mensuelle du CA</h2> |
| | <div class="h-64"> |
| | <canvas id="revenueChart"></canvas> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div class="bg-white rounded-lg shadow overflow-hidden mb-6" data-aos="fade-up"> |
| | <div class="px-6 py-4 border-b border-gray-200"> |
| | <h2 class="text-lg font-semibold text-gray-800">Performance des employés</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">Employé</th> |
| | <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Missions réalisées</th> |
| | <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Taux de réussite</th> |
| | <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">KM moyen/mission</th> |
| | <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Temps moyen</th> |
| | </tr> |
| | </thead> |
| | <tbody class="bg-white divide-y divide-gray-200"> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="flex items-center"> |
| | <img class="h-8 w-8 rounded-full" src="http://static.photos/people/40x40/5" alt="Jean Martin"> |
| | <div class="ml-4"> |
| | <div class="text-sm font-medium text-gray-900">Jean Martin</div> |
| | </div> |
| | </div> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="text-sm text-gray-900">68 missions</div> |
| | </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">98.5%</span> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="text-sm text-gray-900">22.4 km</div> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="text-sm text-gray-900">42 min</div> |
| | </td> |
| | </tr> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="flex items-center"> |
| | <img class="h-8 w-8 rounded-full" src="http://static.photos/people/40x40/6" alt="Marie Dubois"> |
| | <div class="ml-4"> |
| | <div class="text-sm font-medium text-gray-900">Marie Dubois</div> |
| | </div> |
| | </div> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="text-sm text-gray-900">54 missions</div> |
| | </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">97.2%</span> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="text-sm text-gray-900">25.1 km</div> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="text-sm text-gray-900">38 min</div> |
| | </td> |
| | </tr> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="flex items-center"> |
| | <img class="h-8 w-8 rounded-full" src="http://static.photos/people/40x40/7" alt="Pierre Moreau"> |
| | <div class="ml-4"> |
| | <div class="text-sm font-medium text-gray-900">Pierre Moreau</div> |
| | </div> |
| | </div> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="text-sm text-gray-900">45 missions</div> |
| | </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">95.8%</span> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="text-sm text-gray-900">28.7 km</div> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="text-sm text-gray-900">51 min</div> |
| | </td> |
| | </tr> |
| | </tbody> |
| | </table> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div class="bg-white rounded-lg shadow p-6" data-aos="fade-up"> |
| | <div class="flex justify-between items-center"> |
| | <div> |
| | <h2 class="text-lg font-semibold text-gray-800">Exporter les rapports</h2> |
| | <p class="text-sm text-gray-600 mt-1">Téléchargez vos rapports au format PDF ou Excel</p> |
| | </div> |
| | <div class="flex space-x-4"> |
| | <button class="bg-red-600 text-white px-4 py-2 rounded-lg flex items-center space-x-2 hover:bg-red-700 transition duration-200"> |
| | <i data-feather="file-text"></i> |
| | <span>PDF</span> |
| | </button> |
| | <button class="bg-green-600 text-white px-4 py-2 rounded-lg flex items-center space-x-2 hover:bg-green-700 transition duration-200"> |
| | <i data-feather="download"></i> |
| | <span>Excel</span> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </main> |
| | </div> |
| |
|
| | <script> |
| | |
| | document.getElementById('menu-toggle').addEventListener('click', function() { |
| | document.getElementById('sidebar').classList.toggle('-translate-x-full'); |
| | }); |
| | |
| | |
| | document.addEventListener('DOMContentLoaded', function() { |
| | |
| | const missionsCtx = document.getElementById('missionsChart').getContext('2d'); |
| | const missionsChart = new Chart(missionsCtx, { |
| | type: 'doughnut', |
| | data: { |
| | labels: ['Remorquage', 'Dépannage', 'Assistance', 'Transport'], |
| | datasets: [{ |
| | data: [45, 30, 15, 10], |
| | backgroundColor: ['#3B82F6', '#10B981', '#F59E0B', '#EF4444'] |
| | }] |
| | }, |
| | options: { |
| | responsive: true, |
| | maintainAspectRatio: false |
| | } |
| | }); |
| | |
| | |
| | const revenueCtx = document.getElementById('revenueChart').getContext('2d'); |
| | const revenueChart = new Chart(revenueCtx, { |
| | type: 'line', |
| | data: { |
| | labels: ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin'], |
| | datasets: [{ |
| | label: 'Chiffre d\'affaires (€)', |
| | data: [12500, 14200, 13800, 15600, 18240, 19800], |
| | borderColor: '#3B82F6', |
| | backgroundColor: 'rgba(59, 130, 246, 0.1)', |
| | fill: true |
| | }] |
| | }, |
| | options: { |
| | responsive: true, |
| | maintainAspectRatio: false |
| | } |
| | }); |
| | }); |
| | </script> |
| | <script>AOS.init();</script> |
| | <script>feather.replace();</script> |
| | </body> |
| | </html> |