Perbaikan Menu Laporan per pintu pos

This commit is contained in:
pand03
2026-04-21 14:12:49 +07:00
parent 286dfc3dde
commit a9e36e80e4
5 changed files with 486 additions and 12 deletions

View File

@@ -0,0 +1,114 @@
<?php
namespace App\Http\Controllers\FrontOffice;
use App\Http\Controllers\Controller;
use App\Models\TransaksiParkir;
use Illuminate\Http\Request;
class FrontOfficeControllerController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view ('tools.additional');
}
public function search(Request $request)
{
$keyword = $request->q;
if (!$keyword) {
return response()->json([
'status' => false,
'message' => 'Input kosong'
]);
}
$data = TransaksiParkir::where('no_pol', $keyword)
->orWhere('no_pol', $keyword)
->first();
if (!$data) {
return response()->json([
'status' => false,
'message' => 'Data tidak ditemukan'
]);
}
return response()->json([
'status' => true,
'data' => $data
]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

View File

@@ -82,7 +82,7 @@
<li class="nav-item">
<a href="pages/forms/basic_elements.html" class="nav-link">
<i class="mdi mdi-wrench menu-icon"></i>
<span class="menu-title">Laporan</span>
<span class="menu-title">Tools</span>
<i class="menu-arrow"></i>
</a>
<div class="submenu">
@@ -92,6 +92,18 @@
</ul>
</div>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="mdi mdi-finance menu-icon"></i>
<span class="menu-title">Front Office</span>
<i class="menu-arrow"></i>
</a>
<div class="submenu">
<ul>
<li class="nav-item"><a class="nav-link" href="/front-office/check-in-out">Check IN/OUT</a></li>
</ul>
</div>
</li>
{{-- <li class="nav-item">
<a href="pages/charts/chartjs.html" class="nav-link">
<i class="mdi mdi-finance menu-icon"></i>

View File

@@ -219,7 +219,7 @@
console.log(user);
let tanggal = '';
let pdfData = [];
const title = $('.laporan').val();
// const title = $('.laporan').val();
$('.select2').select2({
@@ -233,19 +233,22 @@
$('#tanggalMulai').val(new Date().toISOString().split('T')[0]);
$('#tanggalSelesai').val(new Date().toISOString().split('T')[0]);
let startDate = $('#tanggalMulai').val();
let endDate = $('#tanggalSelesai').val();
if ( startDate !== endDate ) {
tanggal = startDate + ' s/d ' + endDate;
} else {
tanggal = endDate;
}
$('#btnProses').on('click', function () {
let formData = $('#fromByGate').serialize();
let startDate = $('#tanggalMulai').val();
let endDate = $('#tanggalSelesai').val();
if ( startDate !== endDate ) {
tanggal = startDate + ' s/d ' + endDate;
} else {
tanggal = endDate;
}
console.log(tanggal);
// let tema = $('#theme').val();
let tema = $('#theme').val() || '';
console.log(tema);
@@ -1024,7 +1027,7 @@ function kendaraanLabel(kode) {
doc.setFontSize(10);
doc.setFont('helvetica', 'normal');
doc.text(String(location?.namaperusahaan || '-'), pageWidth / 2, 25, { align: 'center' });
doc.text(String(location?.namaperusahaan + ' - ' + location?.namalokasi || '-'), pageWidth / 2, 25, { align: 'center' });
doc.setFontSize(9);
doc.text(`Lokasi : ` + location?.namalokasi, marginLeft, 32);

View File

@@ -0,0 +1,339 @@
@extends('layouts.master')
@section('styles')
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.8/css/jquery.dataTables.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.3.0/dist/select2-bootstrap-5-theme.min.css" rel="stylesheet" />
<link rel="stylesheet" href="{{ asset('vendors/select2/select2.min.css') }}">
<style>
.dashboard-row {
background: #f8fafc;
transition: all 0.2s ease;
}
.dashboard-row:hover {
background: #e2e8f0;
transform: translateY(-2px);
}
.card {
border-radius: 12px;
}
.card-header {
border-radius: 12px 12px 0 0;
}
.select2-container .select2-selection--single {
height: 38px !important;
padding: 5px 10px;
}
.select2-selection__rendered {
line-height: 28px !important;
}
.select2-selection__arrow {
height: 38px !important;
}
</style>
@endsection
@section('content')
<div class="container-fluid page-body-wrapper">
<div class="main-panel">
<div class="content-wrapper">
<nav aria-label="Breadcrumb" class="breadcrumb">
<ol>
<li><a href="/">Home</a></li>
<li><a href="/products">Front Office</a></li>
<li><a href="#">Check IN/OUT</a></li>
{{-- <li><span aria-current="page"></span></li> --}}
</ol>
</nav>
<div class="row">
<div class="col-md-12 grid-margin stretch-card">
<div class="card">
{{-- <div class="card-header">
<h3 class="card-title">Pill Tabs style</h3>
</div> --}}
<div class="card-body">
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="pills-home-tab"
data-bs-toggle="pill" data-bs-target="#pills-home" type="button"
role="tab" aria-controls="pills-home"
aria-selected="true">Check IN</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-profile-tab" data-bs-toggle="pill"
data-bs-target="#pills-profile" type="button" role="tab"
aria-controls="pills-profile" aria-selected="false">Check OUT</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-contact-tab" data-bs-toggle="pill"
data-bs-target="#pills-contact" type="button" role="tab"
aria-controls="pills-contact" aria-selected="false">Contact</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-disabled-tab" data-bs-toggle="pill"
data-bs-target="#pills-disabled" type="button" role="tab"
aria-controls="pills-disabled" aria-selected="false"
disabled>Disabled</button>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-home" role="tabpanel"
aria-labelledby="pills-home-tab" tabindex="0">
<div class="row">
<div class="col-md-3 grid-margin stretch-card">
<div class="card shadow-sm h-100">
<div class="card-body">
<div class="mb-3">
<label class="form-label fw-semibold">Input atau Scan Tiket/Kartu Akses</h5></label>
<input type="text" class="form-control" id="search-value" placeholder="Scan / input tiket..." autofocus>
<small id="search-status" class="text-muted"></small>
<div class="mt-2">
<button class="btn btn-primary btn-sm add-button" data-bs-toggle="modal" data-bs-target=".bd-example-modal-lg">Tambah</button>
</div>
</div>
</div>
</div>
</div>
<div class="col-9 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">Detail Transaksi</h4>
<div class="d-flex justify-content-between align-items-center mb-2">
<div id="rowActions" class="d-none">
<button class="btn btn-warning btn-sm edit-button" id="btnEdit" data-bs-toggle="modal" data-bs-target=".bd-ubah-modal-lg">Edit</button>
<button class="btn btn-danger btn-sm" id="btnDelete">Hapus</button>
<button class="btn btn-info btn-sm" id="btnDetail">Detail</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane fade" id="pills-profile" role="tabpanel"
aria-labelledby="pills-profile-tab" tabindex="0">
<ul class="list-group">
<li
class="list-group-item d-flex justify-content-between align-items-start">
<div class="me-auto d-flex align-items-center">
<div>
<input class="form-check-input me-2 mt-0"
name="checkbox1" type="checkbox" value="" checked="">
<label class="form-check-label" for="checkbox1"></label>
</div>
<div>
<div class="fw-bold">Heading</div>
<p class="mb-0 text-muted">Donec id elit non mi porta
gravida at eget metus. Maecenas sed diam eget risus
varius blandit.</p>
</div>
</div>
<span class="badge bg-info rounded-pill">14</span>
</li>
<li
class="list-group-item d-flex justify-content-between align-items-start">
<div class="me-auto d-flex align-items-center">
<div>
<input class="form-check-input me-2 mt-0"
name="checkbox1" type="checkbox" value="">
<label class="form-check-label" for="checkbox1"></label>
</div>
<div>
<div class="fw-bold">Heading</div>
<p class="mb-0 text-muted">Donec id elit non mi porta
gravida at eget metus. Maecenas sed diam eget risus
varius blandit.</p>
</div>
</div>
<span class="badge bg-danger rounded-pill">14</span>
</li>
<li
class="list-group-item d-flex justify-content-between align-items-start">
<div class="me-auto d-flex align-items-center">
<div>
<input class="form-check-input me-2 mt-0"
name="checkbox1" type="checkbox" value=""
>
<label class="form-check-label" for="checkbox1"></label>
</div>
<div>
<div class="fw-bold">Heading</div>
<p class="mb-0 text-muted">Donec id elit non mi porta
gravida at eget metus. Maecenas sed diam eget risus
varius blandit.</p>
</div>
</div>
<span class="badge bg-success rounded-pill">14</span>
</li>
</ul>
</div>
<div class="tab-pane fade" id="pills-contact" role="tabpanel"
aria-labelledby="pills-contact-tab" tabindex="0">
<ul class="list-group">
<li
class="list-group-item d-flex justify-content-between align-items-start">
<div class="me-auto d-flex align-items-center">
<div>
<input class="form-check-input me-2 mt-0"
name="checkbox1" type="checkbox" value="">
<label class="form-check-label" for="checkbox1"></label>
</div>
<div>
<div class="fw-bold">Heading</div>
<p class="mb-0 text-muted">Donec id elit non mi porta
gravida at eget metus. Maecenas sed diam eget risus
varius blandit.</p>
</div>
</div>
<span class="badge bg-info rounded-pill">14</span>
</li>
<li
class="list-group-item d-flex justify-content-between align-items-start">
<div class="me-auto d-flex align-items-center">
<div>
<input class="form-check-input me-2 mt-0"
name="checkbox1" type="checkbox" value="">
<label class="form-check-label" for="checkbox1"></label>
</div>
<div>
<div class="fw-bold">Heading</div>
<p class="mb-0 text-muted">Donec id elit non mi porta
gravida at eget metus. Maecenas sed diam eget risus
varius blandit.</p>
</div>
</div>
<span class="badge bg-danger rounded-pill">14</span>
</li>
<li
class="list-group-item d-flex justify-content-between align-items-start">
<div class="me-auto d-flex align-items-center">
<div>
<input class="form-check-input me-2 mt-0"
name="checkbox1" type="checkbox" value=""
checked="">
<label class="form-check-label" for="checkbox1"></label>
</div>
<div>
<div class="fw-bold">Heading</div>
<p class="mb-0 text-muted">Donec id elit non mi porta
gravida at eget metus. Maecenas sed diam eget risus
varius blandit.</p>
</div>
</div>
<span class="badge bg-success rounded-pill">14</span>
</li>
</ul>
</div>
<div class="tab-pane fade" id="pills-disabled" role="tabpanel"
aria-labelledby="pills-disabled-tab" tabindex="0">
<ul class="list-group">
<li
class="list-group-item d-flex justify-content-between align-items-start">
<div class="me-auto d-flex align-items-center">
<div>
<input class="form-check-input me-2 mt-0"
name="checkbox1" type="checkbox" value=""
id="checkbox1">
<label class="form-check-label" for="checkbox1"></label>
</div>
<div>
<div class="fw-bold">Heading</div>
<p class="mb-0 text-muted">Donec id elit non mi porta
gravida at eget metus. Maecenas sed diam eget risus
varius blandit.</p>
</div>
</div>
<span class="badge bg-info rounded-pill">14</span>
</li>
<li
class="list-group-item d-flex justify-content-between align-items-start">
<div class="me-auto d-flex align-items-center">
<div>
<input class="form-check-input me-2 mt-0"
name="checkbox1" type="checkbox" value=""
checked="">
<label class="form-check-label" for="checkbox1"></label>
</div>
<div>
<div class="fw-bold">Heading</div>
<p class="mb-0 text-muted">Donec id elit non mi porta
gravida at eget metus. Maecenas sed diam eget risus
varius blandit.</p>
</div>
</div>
<span class="badge bg-danger rounded-pill">14</span>
</li>
<li
class="list-group-item d-flex justify-content-between align-items-start">
<div class="me-auto d-flex align-items-center">
<div>
<input class="form-check-input me-2 mt-0"
name="checkbox1" type="checkbox" value=""
>
<label class="form-check-label" for="checkbox1"></label>
</div>
<div>
<div class="fw-bold">Heading</div>
<p class="mb-0 text-muted">Donec id elit non mi porta
gravida at eget metus. Maecenas sed diam eget risus
varius blandit.</p>
</div>
</div>
<span class="badge bg-success rounded-pill">14</span>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
<script src="https://cdn.datatables.net/1.13.8/js/jquery.dataTables.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.31/jspdf.plugin.autotable.min.js"></script>
<script src="{{ asset('vendors/select2/select2.min.js') }}"></script>
<script src="{{ asset('js/select2.js') }}"></script>
<script>
$(document).ready(function () {
function searchData (value) {
if (!value) return;
$('#search-status').text('Mencari...');
$.ajax({
url: "{{ route('check-in-out.search') }}",
type: "GET",
data: { q: value },
success: function (res) {
if (res.status) {
$('#search-status').html('<span class="text-success">Ditemukan</span>');
window.location.href = "/check-in-out" + res.data.id;
} else {
$('#search-status').html('<span class="text-danger">'+ res.message + '</span>');
}
$('#search-value').val('').focus();
},
error: function () {
$('#search-status').html('<span class="text-danger">Error server</span>');
}
});
}
});
</script>
@endsection

View File

@@ -17,11 +17,12 @@
use App\Http\Controllers\SetupController;
use App\Http\Controllers\StikerController;
use App\Http\Controllers\StreamerController;
use App\Http\Controllers\FrontOffice\FrontOfficeControllerController;
use App\Http\Controllers\Tools\StikerExtendedController;
use App\Http\Controllers\Tools\TransactionChangeController;
use App\Http\Controllers\VerifyTransController;
use App\Services\BcaSignatureTest;
// use App\Services\BcaSignatureTest;
/*
|--------------------------------------------------------------------------
@@ -81,6 +82,11 @@
Route::resource('stiker-extend', StikerExtendedController::class);
Route::resource('change-trans', TransactionChangeController::class);
});
Route::prefix('/front-office')->group(function () {
Route::resource('check-in-out', FrontOfficeControllerController::class);
Route::get('/check-in-out/search', [FrontOfficeControllerController::class, 'search'])->name('check-in-out.search');
});
// Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::resource('verify', VerifyTransController::class);