Travel: Widok dostawcy - ekran listy zleceń

This commit is contained in:
2026-08-19 23:22:34 +02:00
parent b5ff24b856
commit 074f70ae06
7 changed files with 428 additions and 4 deletions
+317
View File
@@ -0,0 +1,317 @@
<?php
$enablePrototypeComments = true;
include '../../header-travel.php';
?>
<div class="container-xxl flex-grow-1 container-p-y" style="padding-top: 1rem!important">
<h4 class="fw-bold py-3 mb-4">
Aplikacja dostawcy <span class="text-muted fw-light">/ Zlecenia</span>
</h4>
<!-- Wyszukiwarka i filtry -->
<div class="card mb-4">
<div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-center gap-3">
<div class="w-100" style="max-width: 400px;">
<div class="input-group input-group-merge">
<span class="input-group-text" id="search-addon"><i class="bx bx-search"></i></span>
<input type="text" class="form-control" placeholder="Szukaj wycieczki, zleceniodawcy..." aria-label="Szukaj" aria-describedby="search-addon">
</div>
</div>
<div class="btn-group" role="group" aria-label="Status wycieczek">
<input type="radio" class="btn-check" name="statusFilter" id="btnRadioAktualne" autocomplete="off" checked>
<label class="btn btn-outline-primary" for="btnRadioAktualne">Aktualne</label>
<input type="radio" class="btn-check" name="statusFilter" id="btnRadioArchiwalne" autocomplete="off">
<label class="btn btn-outline-primary" for="btnRadioArchiwalne">Archiwalne</label>
</div>
</div>
</div>
<!-- Trip 1 -->
<div class="card mb-4">
<div class="card-header border-bottom d-flex justify-content-between align-items-center py-3">
<div>
<h5 class="mb-2"><i class="bx bx-map-alt text-primary me-2"></i>Wycieczka #1024 - Włochy Klasyczne</h5>
<div class="d-flex align-items-center">
<span class="badge bg-label-secondary me-3"><i class="bx bx-group me-1"></i> 45 osób</span>
<div class="d-flex align-items-center">
<div class="avatar avatar-sm me-2">
<img src="assets/logo-sloneczko.png" alt="Logo" class="rounded-circle border">
</div>
<span class="fw-bold text-body">Biuro Podróży "Słoneczko"</span>
</div>
</div>
</div>
<div>
<span class="badge bg-label-success fs-6">Aktywna</span>
</div>
</div>
<div class="table-responsive text-nowrap" style="overflow: visible;">
<table class="table table-hover">
<thead>
<tr>
<th>Data Od</th>
<th>Data Do</th>
<th>Status</th>
<th>Akcje</th>
</tr>
</thead>
<tbody class="table-border-bottom-0">
<tr>
<td>2024-05-10 08:00</td>
<td>2024-05-12 18:00</td>
<td>
<div class="dropdown">
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Nowe
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="javascript:void(0);">Nowe</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">W realizacji</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">Zakończone</a></li>
</ul>
</div>
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#orderDetailsModal">
<i class="bx bx-search-alt-2 me-1"></i> Szczegóły
</button>
</td>
</tr>
<tr>
<td>2024-05-15 09:00</td>
<td>2024-05-17 20:00</td>
<td>
<div class="dropdown">
<button class="btn btn-sm btn-outline-warning dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
W realizacji
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="javascript:void(0);">Nowe</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">W realizacji</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">Zakończone</a></li>
</ul>
</div>
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#orderDetailsModal">
<i class="bx bx-search-alt-2 me-1"></i> Szczegóły
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- Trip 2 -->
<div class="card mb-4">
<div class="card-header border-bottom d-flex justify-content-between align-items-center py-3">
<div>
<h5 class="mb-2"><i class="bx bx-map-alt text-primary me-2"></i>Wycieczka #1080 - Złota Praga</h5>
<div class="d-flex align-items-center">
<span class="badge bg-label-secondary me-3"><i class="bx bx-group me-1"></i> 30 osób</span>
<div class="d-flex align-items-center">
<div class="avatar avatar-sm me-2">
<img src="assets/logo-adventure.png" alt="Logo" class="rounded-circle border">
</div>
<span class="fw-bold text-body">Biuro Podróży "Adventure"</span>
</div>
</div>
</div>
<div>
<span class="badge bg-label-primary fs-6">Zaplanowana</span>
</div>
</div>
<div class="table-responsive text-nowrap" style="overflow: visible;">
<table class="table table-hover">
<thead>
<tr>
<th>Data Od</th>
<th>Data Do</th>
<th>Status</th>
<th>Akcje</th>
</tr>
</thead>
<tbody class="table-border-bottom-0">
<tr>
<td>2024-06-01 06:00</td>
<td>2024-06-03 22:00</td>
<td>
<div class="dropdown">
<button class="btn btn-sm btn-outline-success dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Zakończone
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="javascript:void(0);">Nowe</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">W realizacji</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">Zakończone</a></li>
</ul>
</div>
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#orderDetailsModal">
<i class="bx bx-search-alt-2 me-1"></i> Szczegóły
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- Modal Order Details -->
<div class="modal fade" id="orderDetailsModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="orderDetailsModalLabel">Szczegóły zlecenia</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Zamknij"></button>
</div>
<div class="modal-body">
<div class="row mb-3">
<div class="col-12">
<h6 class="fw-bold mb-2">Szczegóły wycieczki</h6>
<div class="p-3 bg-lighter rounded">
<div class="row">
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Wycieczka</small>
<span class="fw-medium">KADR w Bieszczady</span><br>
<span class="text-muted small">2026-04-25 &ndash; 2026-04-26</span>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Data wycieczki</small>
<span>2026-04-25 &ndash; 2026-04-25</span>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Status</small>
<span>Brak statusu</span>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Operator</small>
<span>Biuro Podróży Adventure</span>
</div>
<div class="col-md-6 mb-3 mb-md-0">
<small class="text-muted d-block">Organizacja</small>
<span>Szkoła Podstawowa nr 1 w Warszawie, Związek Turystyki Młodzieżowej</span>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Klient</small>
<span>Bartłomiej Banaczyk</span>
</div>
<div class="col-12 mb-3">
<small class="text-muted d-block mb-1">Miejsce podstawienia autokaru</small>
<a href="https://maps.google.com/?q=Warszawa,+Plac+Defilad+1" target="_blank" class="fw-medium text-primary text-decoration-none" style="display:inline-flex; align-items:center;">
<i class="bx bx-map me-1"></i>Warszawa, Plac Defilad 1 (Parking pod PKiN), godz. 07:30 <i class="bx bx-link-external ms-2"></i>
</a>
</div>
<div class="col-12">
<small class="text-muted d-block mb-2">Załączniki od organizatora</small>
<div class="d-flex flex-wrap gap-2">
<a href="javascript:void(0);" class="btn btn-sm btn-outline-secondary">
<i class="bx bx-download me-1"></i> Karta wycieczki
</a>
<a href="javascript:void(0);" class="btn btn-sm btn-outline-secondary">
<i class="bx bx-download me-1"></i> Program wycieczki
</a>
<a href="javascript:void(0);" class="btn btn-sm btn-outline-secondary">
<i class="bx bx-download me-1"></i> Regulamin
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<h6 class="fw-bold mb-3">Dane realizacyjne transportu</h6>
<p class="text-muted small mb-4">Prosimy o uzupełnienie danych wymaganych do realizacji zlecenia oraz aktualizację statusu.</p>
</div>
<div class="col-md-12 mb-4">
<label class="form-label fw-bold text-primary d-block">Status zlecenia</label>
<div class="dropdown">
<button class="btn btn-outline-primary dropdown-toggle w-100 text-start d-flex justify-content-between align-items-center" type="button" data-bs-toggle="dropdown" aria-expanded="false">
<span><span class="badge bg-label-primary me-2">Nowe</span> Oczekuje na realizację</span>
</button>
<ul class="dropdown-menu w-100">
<li><a class="dropdown-item" href="javascript:void(0);"><span class="badge bg-label-primary me-2">Nowe</span> Oczekuje na realizację</a></li>
<li><a class="dropdown-item" href="javascript:void(0);"><span class="badge bg-label-warning me-2">W realizacji</span> Przejazd w trakcie</a></li>
<li><a class="dropdown-item" href="javascript:void(0);"><span class="badge bg-label-success me-2">Zakończone</span> Przejazd zrealizowany</a></li>
</ul>
</div>
</div>
<div class="col-md-6 mb-3">
<label for="busSeats" class="form-label">Liczba miejsc w autokarze</label>
<input type="number" id="busSeats" class="form-control" placeholder="Np. 50">
</div>
<div class="col-md-6 mb-3">
<label for="licensePlate" class="form-label">Numer rejestracyjny autokaru</label>
<input type="text" id="licensePlate" class="form-control" placeholder="Np. WA 12345">
</div>
<div class="col-md-6 mb-3">
<label for="driverName" class="form-label">Imię i nazwisko kierowcy</label>
<input type="text" id="driverName" class="form-control" placeholder="Wprowadź dane kierowcy">
</div>
<div class="col-md-6 mb-3">
<label for="driverPhone" class="form-label">Telefon do kierowcy</label>
<input type="text" id="driverPhone" class="form-control" placeholder="+48...">
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<h6 class="fw-bold mb-3">Rozliczenie trasy</h6>
</div>
<div class="col-md-4 mb-3">
<label for="startOdometer" class="form-label">Początkowy odczyt licznika</label>
<div class="input-group">
<input type="number" id="startOdometer" class="form-control" placeholder="0">
<span class="input-group-text">km</span>
</div>
</div>
<div class="col-md-4 mb-3">
<label for="endOdometer" class="form-label">Końcowy odczyt licznika</label>
<div class="input-group">
<input type="number" id="endOdometer" class="form-control" placeholder="0">
<span class="input-group-text">km</span>
</div>
</div>
<div class="col-md-4 mb-3">
<label for="totalMileage" class="form-label">Przebieg</label>
<div class="input-group">
<input type="number" id="totalMileage" class="form-control" placeholder="0" readonly>
<span class="input-group-text bg-lighter">km</span>
</div>
<small class="text-muted">Wyliczane automatycznie</small>
</div>
<div class="col-md-12 mb-3">
<label for="parkingCosts" class="form-label text-warning fw-bold">Opłaty drogowe (Edytowalne)</label>
<div class="input-group">
<input type="number" id="parkingCosts" class="form-control border-warning" placeholder="0.00" step="0.01">
<span class="input-group-text border-warning">PLN</span>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Anuluj</button>
<button type="button" class="btn btn-primary">Zapisz zmiany</button>
</div>
</div>
</div>
</div>
<?php include '../../footer.php'; ?>
</body>
</html>
+25
View File
@@ -0,0 +1,25 @@
<?php
$enablePrototypeComments = true;
include '../../header-travel.php';
?>
<div class="container-xxl flex-grow-1 container-p-y" style="padding-top: 1rem!important">
<h4 class="fw-bold py-3 mb-4">
Aplikacja dostawcy <span class="text-muted fw-light">/ Biura podróży</span>
</h4>
<!-- CONTENT -->
<div class="row mb-4">
</div>
</div>
<?php include '../../footer.php'; ?>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

+20
View File
@@ -3,6 +3,7 @@ $currentPage = basename($_SERVER['PHP_SELF']);
$clientsPages = ['app-organization.php', 'app-client.php'];
$systemPages = ['app-dictionary.php', 'app-template.php', 'app-employee.php', 'app-settings.php'];
$supplierAppPages = ['app-orders.php', 'app-travel-agencies.php'];
?>
<aside id="layout-menu" class="layout-menu-horizontal menu-horizontal menu bg-menu-theme flex-grow-0" style="position: relative; top: 0px; padding-top: 0px;">
<div class="container-xxl d-flex h-100">
@@ -86,6 +87,25 @@ $systemPages = ['app-dictionary.php', 'app-template.php', 'app-employee.php', 'a
</li>
</ul>
</li>
<li class="menu-item <?php echo in_array($currentPage, $supplierAppPages, true) ? 'active open' : ''; ?>">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons bx bx-briefcase"></i>
<div data-i18n="Aplikacja dostawcy">Aplikacja dostawcy</div>
</a>
<ul class="menu-sub">
<li class="menu-item <?php echo ($currentPage == 'app-orders.php') ? 'active' : ''; ?>">
<a href="app-orders.php" class="menu-link">
<div data-i18n="Zlecenia">Zlecenia</div>
</a>
</li>
<li class="menu-item <?php echo ($currentPage == 'app-travel-agencies.php') ? 'active' : ''; ?>">
<a href="app-travel-agencies.php" class="menu-link">
<div data-i18n="Biura podróży">Biura podróży</div>
</a>
</li>
</ul>
</li>
</ul>
</div>
</aside>