Files
lpj/resources/views/spk/index.blade.php
Daeng Deni Mardaeni f135cf0a1a Perbaiki format kode dan tambahkan relasi pada pengecekan penawaran
Menghilangkan whitespace yang tidak perlu di dalam file SpkController.php untuk meningkatkan kerapian kode. Juga menambahkan eager loading relasi 'permohonan' saat mengambil data penawaran untuk meningkatkan efisiensi query SQL. Menyesuaikan URL download di file view untuk memastikan ID yang benar digunakan.
2024-11-06 11:48:01 +07:00

180 lines
7.8 KiB
PHP

@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('spk') }}
@endsection
@section('content')
<div class="grid">
<div class="card card-grid min-w-full" data-datatable="false" data-datatable-page-size="5" data-datatable-state-save="false" id="spk-table" data-api-url="{{ route('spk.datatables') }}">
<div class="card-header py-5 flex-wrap">
<h3 class="card-title">
Daftar SPK
</h3>
<div class="flex flex-wrap gap-2 lg:gap-5">
<div class="flex">
<label class="input input-sm"> <i class="ki-filled ki-magnifier"> </i>
<input placeholder="Search SPK" id="search" type="text" value="">
</label>
</div>
<div class="flex flex-wrap gap-2.5">
<div class="h-[24px] border border-r-gray-200"></div>
<a class="btn btn-sm btn-light" href="#"> Export to Excel </a>
</div>
</div>
</div>
<div class="card-body">
<div class="scrollable-x-auto">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true">
<thead>
<tr>
<th class="w-14">
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
</th>
<th class="min-w-[150px]" data-datatable-column="nomor_registrasi">
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="code">
<span class="sort"> <span class="sort-label"> Kode Penawaran </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="start_date">
<span class="sort"> <span class="sort-label"> Tanggal Penawaran </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_kjpp_id">
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="nama_kjpp_sebelumnya">
<span class="sort"> <span class="sort-label">KJPP Data</span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="status">
<span class="sort"> <span class="sort-label"> Status </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
</tr>
</thead>
</table>
</div>
<div class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
<div class="flex items-center gap-2">
Show
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per page
</div>
<div class="flex items-center gap-4">
<span data-datatable-info="true"> </span>
<div class="pagination" data-datatable-pagination="true">
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<script type="text/javascript">
function spkShow(regId)
{
var url = "{{ url('show') }}/"+regId;
$(location).attr('href',url);
}
function spkCreate(regId)
{
var url1 = "/spk/"+regId+"/edit";
var url = "{{ url('/') }}"+url1;
$(location).attr('href',url);
}
</script>
<script type="module">
const element = document.querySelector('#spk-table');
const searchInput = document.getElementById('search');
const apiUrl = element.getAttribute('data-api-url');
const dataTableOptions = {
apiEndpoint: apiUrl,
pageSize: 5,
columns: {
select: {
render: (item, data, context) => {
const checkbox = document.createElement('input');
checkbox.className = 'checkbox checkbox-sm';
checkbox.type = 'checkbox';
checkbox.value = data.id.toString();
checkbox.setAttribute('data-datatable-row-check', 'true');
return checkbox.outerHTML.trim();
},
},
'nomor_registrasi': {
title: 'Nomor Registrasi',
},
code: {
title: 'Kode Penawaran',
},
date_range: {
title: 'Tanggal Penawaran',
},
tujuan_penilaian_kjpp_name: {
title: 'Tujuan Penilaian',
},
nama_kjpp_sebelumnya: {
title: 'Nama KJPP Terpilih',
render: (item, data) => {
return `${data.nama_kjpp_sebelumnya}`+'<br />'
+`${data.biaya_kjpp_sebelumnya}`+'<br /> '
+`${data.tanggal_penilaian_sebelumnya}`;
},
},
status: {
title: 'Status',
render: (item, data) => {
return `${data.status}`.toUpperCase();
},
},
actions: {
title: 'Status',
render: (item, data) => {
var spkShow ='';
var spkCreate='';
if(!data.dokumenSPK)
{
spkCreate=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Proses Penawaran" onclick="spkCreate(${data.id})" >
<i class="ki-outline ki-notepad-edit"></i>
</a>`;
}
else
{
spkShow =`<div class="flex flex-nowrap justify-center">
<a href="/spk/${data.permohonan.id}/download" class="btn btn-sm btn-icon btn-clear btn-primary" title="Download SPK">
<i class="ki-filled ki-cloud-download"></i>
</a> `;
spkCreate=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Buat SPK" onclick="spkCreate(${data.id})" >
<i class="ki-outline ki-notepad-edit"></i>
</a>`;
}
return `<div class="flex flex-nowrap justify-center">`
+spkShow+spkCreate+
`</div>`;
},
}
},
};
let dataTable = new KTDataTable(element, dataTableOptions);
// Custom search functionality
searchInput.addEventListener('input', function () {
const searchValue = this.value.trim();
dataTable.search(searchValue, true);
});
</script>
@endpush