diff --git a/Controllers/SpjDriverUpstController/DetailController.cs b/Controllers/SpjDriverUpstController/DetailController.cs index 8c6444e..1d9d903 100644 --- a/Controllers/SpjDriverUpstController/DetailController.cs +++ b/Controllers/SpjDriverUpstController/DetailController.cs @@ -45,6 +45,12 @@ namespace eSPJ.Controllers.SpjDriverUpstController return View("~/Views/Admin/Transport/SpjDriverUpst/DetailPenjemputan/Batal.cshtml"); } + [HttpGet("detail-batal")] + public IActionResult DetailBatal() + { + return View("~/Views/Admin/Transport/SpjDriverUpst/DetailPenjemputan/DetailBatal.cshtml"); + } + [HttpPost("")] [ValidateAntiForgeryToken] public async Task Submit([FromForm] DetailPenjemputanRequest request) diff --git a/Models/DetailPenjemputanModels.cs b/Models/DetailPenjemputanModels.cs index 0e71882..94f20a3 100644 --- a/Models/DetailPenjemputanModels.cs +++ b/Models/DetailPenjemputanModels.cs @@ -10,8 +10,9 @@ namespace eSPJ.Models public class TimbanganItem { public string? FotoFileName { get; set; } - public decimal Berat { get; set; } - public JenisSampah JenisSampah { get; set; } = JenisSampah.Residu; + public List Berat { get; set; } = new(); + public List LokasiAngkut { get; set; } = new(); + public List JenisSampah { get; set; } = new(); public bool IsUploaded { get; set; } public DateTime? WaktuUpload { get; set; } } diff --git a/Services/DetailPenjemputanService.cs b/Services/DetailPenjemputanService.cs index 860f255..2c34785 100644 --- a/Services/DetailPenjemputanService.cs +++ b/Services/DetailPenjemputanService.cs @@ -172,8 +172,9 @@ namespace eSPJ.Services tpsData.Timbangan.Add(new TimbanganItem { FotoFileName = fileName, - Berat = i < request.BeratTimbangan.Count ? request.BeratTimbangan[i] : 0, - JenisSampah = jenisSampah, + Berat = new List { (i < request.BeratTimbangan.Count ? request.BeratTimbangan[i] : 0) }, + LokasiAngkut = new List(), + JenisSampah = new List { jenisSampah }, IsUploaded = true, WaktuUpload = DateTime.Now }); diff --git a/Views/Admin/Transport/SpjDriverUpst/DetailPenjemputan/Batal.cshtml b/Views/Admin/Transport/SpjDriverUpst/DetailPenjemputan/Batal.cshtml index 2212e2f..d202f39 100644 --- a/Views/Admin/Transport/SpjDriverUpst/DetailPenjemputan/Batal.cshtml +++ b/Views/Admin/Transport/SpjDriverUpst/DetailPenjemputan/Batal.cshtml @@ -1,6 +1,6 @@ @{ Layout = "~/Views/Admin/Transport/SpjDriverUpst/Shared/_Layout.cshtml"; - ViewData["Title"] = "Detail Batal Penjemputan"; + ViewData["Title"] = "Batal Penjemputan"; }
diff --git a/Views/Admin/Transport/SpjDriverUpst/DetailPenjemputan/DetailBatal.cshtml b/Views/Admin/Transport/SpjDriverUpst/DetailPenjemputan/DetailBatal.cshtml new file mode 100644 index 0000000..82dd4aa --- /dev/null +++ b/Views/Admin/Transport/SpjDriverUpst/DetailPenjemputan/DetailBatal.cshtml @@ -0,0 +1,106 @@ +@{ + Layout = "~/Views/Admin/Transport/SpjDriverUpst/Shared/_Layout.cshtml"; + ViewData["Title"] = "Detail Batal Penjemputan"; +} + +
+ +
+
+ + + +

Detail Batal

+
+
+
+ + +
+
+ +
+
+
+
+
-
+
-
+
+

-

+

+ - +

+ +
+
+
+ +
+
+ +
+ - +
+
+ +
+ +
+
+
+ + +
+
+
+ + +
+ +@section Scripts { + +} + diff --git a/Views/Admin/Transport/SpjDriverUpst/Home/Index.cshtml b/Views/Admin/Transport/SpjDriverUpst/Home/Index.cshtml index 43be705..83f32e0 100644 --- a/Views/Admin/Transport/SpjDriverUpst/Home/Index.cshtml +++ b/Views/Admin/Transport/SpjDriverUpst/Home/Index.cshtml @@ -154,7 +154,7 @@
- +
diff --git a/wwwroot/driver/css/watch.css b/wwwroot/driver/css/watch.css index 5999391..5725f9e 100644 --- a/wwwroot/driver/css/watch.css +++ b/wwwroot/driver/css/watch.css @@ -846,6 +846,9 @@ .table-row { display: table-row; } + .aspect-square { + aspect-ratio: 1 / 1; + } .h-0\.5 { height: calc(var(--spacing) * 0.5); } @@ -2112,6 +2115,9 @@ .py-3 { padding-block: calc(var(--spacing) * 3); } + .py-3\.5 { + padding-block: calc(var(--spacing) * 3.5); + } .py-4 { padding-block: calc(var(--spacing) * 4); } @@ -2220,6 +2226,9 @@ .pb-16 { padding-bottom: calc(var(--spacing) * 16); } + .pb-20 { + padding-bottom: calc(var(--spacing) * 20); + } .pb-24 { padding-bottom: calc(var(--spacing) * 24); } @@ -2374,9 +2383,6 @@ .break-all { word-break: break-all; } - .whitespace-nowrap { - white-space: nowrap; - } .text-amber-600 { color: var(--color-amber-600); } @@ -2792,6 +2798,16 @@ } } } + .group-hover\:scale-110 { + &:is(:where(.group):hover *) { + @media (hover: hover) { + --tw-scale-x: 110%; + --tw-scale-y: 110%; + --tw-scale-z: 110%; + scale: var(--tw-scale-x) var(--tw-scale-y); + } + } + } .group-hover\:rotate-180 { &:is(:where(.group):hover *) { @media (hover: hover) { @@ -3002,13 +3018,6 @@ } } } - .hover\:bg-green-200 { - &:hover { - @media (hover: hover) { - background-color: var(--color-green-200); - } - } - } .hover\:bg-green-600 { &:hover { @media (hover: hover) { diff --git a/wwwroot/driver/js/detail-penjemputan-non-tps.js b/wwwroot/driver/js/detail-penjemputan-non-tps.js index caabdac..23ee36d 100644 --- a/wwwroot/driver/js/detail-penjemputan-non-tps.js +++ b/wwwroot/driver/js/detail-penjemputan-non-tps.js @@ -610,8 +610,8 @@ document.addEventListener('DOMContentLoaded', function() { const item = document.createElement('div'); item.className = 'timbangan-item rounded-2xl border border-gray-200 p-3 space-y-2 bg-gray-50'; - const weight = existingData ? existingData.weight : 0; - const jenisSampah = existingData ? (existingData.jenisSampah || DEFAULT_JENIS) : DEFAULT_JENIS; + const weight = existingData ? (existingData.berat && existingData.berat.length > 0 ? existingData.berat[0] : 0) : 0; + const jenisSampah = existingData ? (existingData.jenisSampah && existingData.jenisSampah.length > 0 ? existingData.jenisSampah[0] : DEFAULT_JENIS) : DEFAULT_JENIS; const hasFile = existingData && existingData.file; const isUploaded = existingData && existingData.uploaded; @@ -758,10 +758,14 @@ document.addEventListener('DOMContentLoaded', function() { items.forEach(item => { const fileInput = item.querySelector('.input-foto-timbangan'); const weightValue = item.querySelector('.input-berat-timbangan-value'); + const weight = parseWeightInput(weightValue.value); + const jenisSampah = item.querySelector('.input-jenis-sampah').value; + tps.timbangan.push({ file: fileInput.files[0] || null, - weight: parseWeightInput(weightValue.value), - jenisSampah: item.querySelector('.input-jenis-sampah').value, + berat: [weight], + jenisSampah: [jenisSampah], + lokasiAngkut: [], uploaded: false }); }); @@ -784,8 +788,10 @@ document.addEventListener('DOMContentLoaded', function() { tps.fotoKedatangan.forEach((file) => formData.append('FotoKedatangan', file)); tps.timbangan.forEach((timb) => { if (timb.file) formData.append('FotoTimbangan', timb.file); - formData.append('BeratTimbangan', timb.weight); - formData.append('JenisSampahList', timb.jenisSampah || DEFAULT_JENIS); + const weight = timb.berat && timb.berat.length > 0 ? timb.berat[0] : 0; + const jenis = timb.jenisSampah && timb.jenisSampah.length > 0 ? timb.jenisSampah[0] : DEFAULT_JENIS; + formData.append('BeratTimbangan', weight); + formData.append('JenisSampahList', jenis); }); tps.fotoPetugas.forEach((file) => formData.append('FotoPetugas', file)); diff --git a/wwwroot/driver/js/detail-penjemputan-tps.js b/wwwroot/driver/js/detail-penjemputan-tps.js index 9fed49c..bc961a3 100644 --- a/wwwroot/driver/js/detail-penjemputan-tps.js +++ b/wwwroot/driver/js/detail-penjemputan-tps.js @@ -1226,8 +1226,20 @@ async function applyWatermark(file, photoNumber) { }; })(); -document.addEventListener('DOMContentLoaded', function() { - DetailPenjemputan.init(['TPS A', 'TPS B', 'TPS C']); +document.addEventListener('DOMContentLoaded', async function() { + try { + const response = await fetch('/driver/json/tps-list.json'); + const data = await response.json(); + const tpsList = data.tpsList.map(tps => ({ + name: tps.name, + lokasiAngkutId: tps.lokasiAngkutId, + spjDetailId: tps.spjDetailId, + id: tps.id + })); + DetailPenjemputan.init(tpsList); + } catch (error) { + console.error('Error loading TPS list:', error); + } const platNomorEl = document.getElementById('plat-nomor'); if (platNomorEl) { diff --git a/wwwroot/driver/json/pembatalan-data.json b/wwwroot/driver/json/pembatalan-data.json new file mode 100644 index 0000000..84afa78 --- /dev/null +++ b/wwwroot/driver/json/pembatalan-data.json @@ -0,0 +1,16 @@ +{ + "pembatalan": { + "namaPerusahaan": "CV Tri Berkah Sejahtera", + "alamat": "Kp. Pertanian II Rt.004 Rw.001 Kel. Klender Kec, Duren Sawit, Kota Adm. Jakarta Timur 13470", + "tanggalBatal": "2026-03-09T09:45:00", + "alasanPembatalan": "Kendaraan mengalami kendala mesin di perjalanan sehingga tidak memungkinkan untuk melanjutkan penjemputan hari ini.", + "fotoBukti": [ + { + "id": 1, + "fileName": "bukti_1.jpg", + "url": "https://sukabumisatu.com/wp-content/uploads/2025/04/IMG-20250423-WA0030-1140x815.jpg" + } + ], + "status": "Dibatalkan" + } +} diff --git a/wwwroot/driver/json/tps-list.json b/wwwroot/driver/json/tps-list.json new file mode 100644 index 0000000..d07b1ba --- /dev/null +++ b/wwwroot/driver/json/tps-list.json @@ -0,0 +1,34 @@ +{ + "tpsList": [ + { + "id": "TPS001", + "name": "TPS A", + "lokasiAngkutId": "LOK001", + "spjDetailId": "SPJ001", + "alamat": "Jl. Merpati No. 1, Jakarta", + "latitude": "-6.2088", + "longitude": "106.8905", + "status": "aktif" + }, + { + "id": "TPS002", + "name": "TPS B", + "lokasiAngkutId": "LOK002", + "spjDetailId": "SPJ002", + "alamat": "Jl. Kenari No. 5, Jakarta", + "latitude": "-6.2100", + "longitude": "106.8920", + "status": "aktif" + }, + { + "id": "TPS003", + "name": "TPS C", + "lokasiAngkutId": "LOK003", + "spjDetailId": "SPJ003", + "alamat": "Jl. Flamboyan No. 10, Jakarta", + "latitude": "-6.2120", + "longitude": "106.8935", + "status": "aktif" + } + ] +}