From 5d47f0e3a26a2618fe5e3d8bea172a2ab4ba9ead Mon Sep 17 00:00:00 2001 From: marszayn Date: Thu, 23 Apr 2026 13:46:50 +0700 Subject: [PATCH] update: flow BG --- .../SubmitController.cs | 20 ++-- .../SpjDriverUpst/Submit/Struk.cshtml | 20 ---- .../SpjDriverUpst/Submit/Struk_Index.cshtml | 86 ++++++++++++++++ wwwroot/driver/css/watch.css | 98 ++++++++++++++----- 4 files changed, 174 insertions(+), 50 deletions(-) create mode 100644 Views/Admin/Transport/SpjDriverUpst/Submit/Struk_Index.cshtml diff --git a/Controllers/SpjDriverUpstController/SubmitController.cs b/Controllers/SpjDriverUpstController/SubmitController.cs index ecd4665..9e700ab 100644 --- a/Controllers/SpjDriverUpstController/SubmitController.cs +++ b/Controllers/SpjDriverUpstController/SubmitController.cs @@ -22,18 +22,24 @@ namespace eSPJ.Controllers.SpjDriverUpstController _env = env; } - [HttpGet("")] + [HttpGet("muatan")] public IActionResult Index() { return View("~/Views/Admin/Transport/SpjDriverUpst/Submit/Index.cshtml"); } - [HttpGet("struk")] - public IActionResult Struk() + [HttpGet("struk-rdf")] + public IActionResult StrukRDF() { return View("~/Views/Admin/Transport/SpjDriverUpst/Submit/Struk.cshtml"); } + [HttpGet("struk-index")] + public IActionResult StrukIndex() + { + return View("~/Views/Admin/Transport/SpjDriverUpst/Submit/Struk_Index.cshtml"); + } + [HttpPost("ocr-struk")] [IgnoreAntiforgeryToken] public async Task OcrStruk(IFormFile? Foto) @@ -44,9 +50,9 @@ namespace eSPJ.Controllers.SpjDriverUpstController if (Foto.Length > 10 * 1024 * 1024) return BadRequest(new { success = false, message = "Ukuran foto terlalu besar. Maksimal 10MB." }); - var apiKey = _configuration["OpenRouter:OCRkey"]; + var apiKey = _configuration["9Router:OCRkey"]; if (string.IsNullOrWhiteSpace(apiKey)) - return StatusCode(500, new { success = false, message = "OpenRouter API key belum diset." }); + return StatusCode(500, new { success = false, message = "9Router API key belum diset." }); byte[] fileBytes; await using (var ms = new MemoryStream()) @@ -61,7 +67,7 @@ namespace eSPJ.Controllers.SpjDriverUpstController var payload = new { - model = "google/gemini-2.5-flash-image", + model = "image-combo", messages = new object[] { new @@ -102,7 +108,7 @@ namespace eSPJ.Controllers.SpjDriverUpstController }; var json = JsonSerializer.Serialize(payload); - var request = new HttpRequestMessage(HttpMethod.Post, "https://openrouter.ai/api/v1/chat/completions"); + var request = new HttpRequestMessage(HttpMethod.Post, "http://10.50.50.61:20128/v1/chat/completions"); request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {apiKey}"); request.Headers.TryAddWithoutValidation("Accept", "application/json"); request.Headers.TryAddWithoutValidation("HTTP-Referer", "https://pesapakawan.dinaslhdki.id"); diff --git a/Views/Admin/Transport/SpjDriverUpst/Submit/Struk.cshtml b/Views/Admin/Transport/SpjDriverUpst/Submit/Struk.cshtml index dbf9f9d..1396a81 100644 --- a/Views/Admin/Transport/SpjDriverUpst/Submit/Struk.cshtml +++ b/Views/Admin/Transport/SpjDriverUpst/Submit/Struk.cshtml @@ -169,26 +169,6 @@

Periksa dan lengkapi data struk sebelum submit.

-
- -
- - -
-
-
diff --git a/Views/Admin/Transport/SpjDriverUpst/Submit/Struk_Index.cshtml b/Views/Admin/Transport/SpjDriverUpst/Submit/Struk_Index.cshtml new file mode 100644 index 0000000..6070f8e --- /dev/null +++ b/Views/Admin/Transport/SpjDriverUpst/Submit/Struk_Index.cshtml @@ -0,0 +1,86 @@ +@{ + Layout = "~/Views/Admin/Transport/SpjDriver/Shared/_Layout.cshtml"; + ViewData["Title"] = "Submit Struk"; +} + +@section Styles { + +} + +
+
+
+
+ + + +
+

Submit Struk

+

Upload Struk SPJ

+
+ UPST Logo +
+
+
+ +
+
+

Pilih Tempat Pembuangan

+

Lanjutkan ke halaman upload sesuai tempat pembuangan

+
+ +
+ @* ini arahin ke halaman upload struk titik buang via api ya mas ebik *@ + + + +
+
+
+ +
+ +
+
+ Input Struk +
+

Titik Buang

+
+
+ +
+ +
+
+
+ + + +
+
+
+ +
+ +
+
+ Input Struk +
+

RDF

+
+
+ +
+ +
+
+
+
+
+ + + +
+
\ No newline at end of file diff --git a/wwwroot/driver/css/watch.css b/wwwroot/driver/css/watch.css index 732f350..0738033 100644 --- a/wwwroot/driver/css/watch.css +++ b/wwwroot/driver/css/watch.css @@ -1,4 +1,4 @@ -/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */ +/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */ @layer properties; @layer theme, base, components, utilities; @layer theme { @@ -51,6 +51,8 @@ --color-green-700: oklch(52.7% 0.154 150.069); --color-green-800: oklch(44.8% 0.119 151.328); --color-emerald-50: oklch(97.9% 0.021 166.113); + --color-emerald-100: oklch(95% 0.052 163.051); + --color-emerald-300: oklch(84.5% 0.143 164.978); --color-emerald-400: oklch(76.5% 0.177 163.223); --color-emerald-500: oklch(69.6% 0.17 162.48); --color-emerald-600: oklch(59.6% 0.145 163.225); @@ -61,16 +63,20 @@ --color-blue-50: oklch(97% 0.014 254.604); --color-blue-100: oklch(93.2% 0.032 255.585); --color-blue-200: oklch(88.2% 0.059 254.128); + --color-blue-300: oklch(80.9% 0.105 251.813); --color-blue-400: oklch(70.7% 0.165 254.624); --color-blue-500: oklch(62.3% 0.214 259.815); --color-blue-600: oklch(54.6% 0.245 262.881); --color-blue-700: oklch(48.8% 0.243 264.376); --color-blue-800: oklch(42.4% 0.199 265.638); - --color-blue-950: oklch(28.2% 0.091 267.935); --color-indigo-50: oklch(96.2% 0.018 272.314); --color-indigo-100: oklch(93% 0.034 272.788); --color-indigo-300: oklch(78.5% 0.115 274.713); --color-purple-50: oklch(97.7% 0.014 308.299); + --color-purple-100: oklch(94.6% 0.033 307.174); + --color-purple-300: oklch(82.7% 0.119 306.383); + --color-purple-500: oklch(62.7% 0.265 303.9); + --color-purple-600: oklch(55.8% 0.288 302.321); --color-pink-50: oklch(97.1% 0.014 343.198); --color-rose-50: oklch(96.9% 0.015 12.422); --color-rose-500: oklch(64.5% 0.246 16.439); @@ -336,15 +342,6 @@ .inset-x-4 { inset-inline: calc(var(--spacing) * 4); } - .\!start { - inset-inline-start: var(--spacing) !important; - } - .-start { - inset-inline-start: calc(var(--spacing) * -1); - } - .start { - inset-inline-start: var(--spacing); - } .start-0 { inset-inline-start: calc(var(--spacing) * 0); } @@ -354,12 +351,6 @@ .start-100 { inset-inline-start: calc(var(--spacing) * 100); } - .-end { - inset-inline-end: calc(var(--spacing) * -1); - } - .end { - inset-inline-end: var(--spacing); - } .end-0 { inset-inline-end: calc(var(--spacing) * 0); } @@ -382,7 +373,7 @@ top: calc(var(--spacing) * 1); } .top-1\/2 { - top: calc(1 / 2 * 100%); + top: calc(1/2 * 100%); } .top-2 { top: calc(var(--spacing) * 2); @@ -484,7 +475,7 @@ left: calc(var(--spacing) * 0); } .left-1\/2 { - left: calc(1 / 2 * 100%); + left: calc(1/2 * 100%); } .left-2 { left: calc(var(--spacing) * 2); @@ -1009,13 +1000,13 @@ width: calc(var(--spacing) * 1); } .w-1\/3 { - width: calc(1 / 3 * 100%); + width: calc(1/3 * 100%); } .w-2 { width: calc(var(--spacing) * 2); } .w-2\/3 { - width: calc(2 / 3 * 100%); + width: calc(2/3 * 100%); } .w-3 { width: calc(var(--spacing) * 3); @@ -1162,7 +1153,7 @@ border-collapse: collapse; } .-translate-x-1\/2 { - --tw-translate-x: calc(calc(1 / 2 * 100%) * -1); + --tw-translate-x: calc(calc(1/2 * 100%) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); } .-translate-x-12 { @@ -1174,7 +1165,7 @@ translate: var(--tw-translate-x) var(--tw-translate-y); } .-translate-y-1\/2 { - --tw-translate-y: calc(calc(1 / 2 * 100%) * -1); + --tw-translate-y: calc(calc(1/2 * 100%) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); } .-translate-y-16 { @@ -2679,6 +2670,9 @@ .text-slate-50 { color: var(--color-slate-50); } + .text-slate-300 { + color: var(--color-slate-300); + } .text-slate-400 { color: var(--color-slate-400); } @@ -2841,6 +2835,12 @@ --tw-ring-color: color-mix(in oklab, var(--color-black) 5%, transparent); } } + .ring-blue-100 { + --tw-ring-color: var(--color-blue-100); + } + .ring-emerald-100 { + --tw-ring-color: var(--color-emerald-100); + } .ring-gray-200 { --tw-ring-color: var(--color-gray-200); } @@ -2993,6 +2993,14 @@ } } } + .group-hover\:translate-x-1 { + &:is(:where(.group):hover *) { + @media (hover: hover) { + --tw-translate-x: calc(var(--spacing) * 1); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + } + } .group-hover\:-translate-y-1 { &:is(:where(.group):hover *) { @media (hover: hover) { @@ -3018,6 +3026,20 @@ } } } + .group-hover\:text-blue-500 { + &:is(:where(.group):hover *) { + @media (hover: hover) { + color: var(--color-blue-500); + } + } + } + .group-hover\:text-emerald-500 { + &:is(:where(.group):hover *) { + @media (hover: hover) { + color: var(--color-emerald-500); + } + } + } .group-hover\:text-gray-500 { &:is(:where(.group):hover *) { @media (hover: hover) { @@ -3170,6 +3192,20 @@ } } } + .hover\:border-blue-300 { + &:hover { + @media (hover: hover) { + border-color: var(--color-blue-300); + } + } + } + .hover\:border-emerald-300 { + &:hover { + @media (hover: hover) { + border-color: var(--color-emerald-300); + } + } + } .hover\:border-green-400 { &:hover { @media (hover: hover) { @@ -3462,6 +3498,16 @@ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } } + .focus\:ring-blue-500 { + &:focus { + --tw-ring-color: var(--color-blue-500); + } + } + .focus\:ring-emerald-500 { + &:focus { + --tw-ring-color: var(--color-emerald-500); + } + } .focus\:ring-gray-200 { &:focus { --tw-ring-color: var(--color-gray-200); @@ -3487,6 +3533,12 @@ --tw-ring-color: var(--color-red-200); } } + .focus\:ring-offset-2 { + &:focus { + --tw-ring-offset-width: 2px; + --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + } + } .focus\:outline-none { &:focus { --tw-outline-style: none;