feat(pemohon): menambahkan fitur reschedule jadwal kunjungan

fix(surveyor): memperbaiki nama placeholder dan call report
This commit is contained in:
majid
2025-02-12 18:03:05 +07:00
parent 2d99b6ab7a
commit c860daa1d5
14 changed files with 1009 additions and 540 deletions

View File

@@ -6,13 +6,15 @@
@section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
@php
@php
$senior_officer = null;
$jenisJaminan = null;
if ($permohonan->debiture && $permohonan->documents) {
foreach ($permohonan->documents as $dokumen) {
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$teams = $permohonan->region->teams;
$jenisJaminan = $dokumen->jenisJaminan->name;
if ($teams) {
foreach ($teams as $team) {
$team_users = $team->teamsUsers;
@@ -35,8 +37,8 @@
@endphp
<form id="formInspeksi" method="POST" enctype="multipart/form-data" class="grid gap-5">
@csrf
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi ?? ''}}">
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id ?? "" }}">
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi ?? '' }}">
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id ?? '' }}">
<input type="hidden" name="dokument_id" value="{{ request('documentId') }}">
<input type="hidden" name="action" value="callReport">
<input type="hidden" name="type" value="callReport">
@@ -62,7 +64,7 @@
<label class="form-label max-w-56">Dari</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="dari" class="input w-full" placeholder="Masukkan..."
value="{{ $callReport['dari'] ?? '' }}">
value="{{ $callReport['dari'] ?? $permohonan->branch->name ?? "" }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -92,11 +94,14 @@
</div>
</div>
<div class="card border border-agi-100 w-full bg-white rounded-lg shadow-md ">
<div class="card-header bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Menindak lanjuti permintaan <b>
{{$permohonan->tujuanPenilaian->name ?? ''}}</b>, BAG CABang <b>{{ $permohonan->branch->name }}</b>
disampaikan hal sebagai berikut:
{{ $permohonan->tujuanPenilaian->name ?? '' }}</b>, BAG CABang
<b>{{ $permohonan->branch->name }}</b>
disampaikan hal sebagai berikut:
</h1>
</div>
<div class="card-body">
@@ -105,72 +110,47 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div class="grid gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="lokasi" class="form-label max-w-56">Nama Debitur</label>
<label for="nama_debiture" class="form-label max-w-56">Nama Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="lokasi" name="lokasi" class="input w-full"
placeholder="Masukkan Jl."
value="{{ $memo->lokasi->lokasi ?? old('lokasi') }}">
<input type="text" id="nama_debiture" name="nama_debiture" class="input w-full"
placeholder="Nama Debiture"
value="{{ $permohonan->debiture->name ?? old('nama_debiture') }}" @readonly(true)>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">KJPP</label>
<label for="kjjp" class="form-label max-w-56">KJPP</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
<input type="text" id="kjjp" name="kjjp" class="input w-full"
placeholder="Masukkan kjjp"
>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Jenis Aset</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="jenis_asset_tidak_sesuai" class="input w-full" name="jenis_asset_tidak_sesuai">
<option value="">Select Jenis asset</option>
@isset($basicData['jenisJaminan'] )
@foreach ($basicData['jenisJaminan'] as $item)
<option value="{{ $item->name }}"
{{ ($memo->jenis_asset_tidak_sesuai ?? '') == $item->name ? 'selected' : '' }}>
{{ $item->name }}
</option>
@endforeach
@endisset
</select>
<input type="text" id="jenis_asset" name="jenis_asset" class="input w-full"
placeholder="Masukkan jenis_asset" value="{{ $jenisJaminan ?? old('jenis_asset') }}"
@readonly(true)>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Lokasi Objek Penilaian</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Dokumen </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Tanggal Penilaian </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
<input type="date" id="tanggal_penilaian" name="tanggal_penilaian" class="input w-full"
placeholder="Masukkan Tanggal Penilai"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Lelang ke </label>
<label for="Lelang" class="form-label max-w-56">Lelang ke </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
<input type="text" id="lelang" name="lelang" class="input w-full"
placeholder="Masukkan Lelang"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
</div>
</div>
@@ -178,16 +158,14 @@
<label for="penilai" class="form-label max-w-56">Nilai Pasar Wajar (NPW)</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="likuidasi" name="likuidasi" class="input w-full"
placeholder="Masukkan likuidasi"
value="{{ old('likuidasi') }}">
placeholder="Masukkan likuidasi" value="{{ old('likuidasi') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Nilai Likuidasi (NL)</label>
<label for="likuidasi_nilai_1" class="form-label max-w-56">Nilai Likuidasi (NL)</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="">
<input type="text" id="likuidasi_nilai_1" name="likuidasi_nilai_1" class="input w-full"
placeholder="Masukkan likuidasi_nilai_1" value="">
</div>
</div>
@@ -202,7 +180,8 @@
<div class="card border border-agi-100 w-full bg-white rounded-lg shadow-md ">
<div class="card-header bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Penilaian ke lokasi objek telah dilakukan oleh :
<h1 class="text-md font-medium text-gray-900 uppercase">Penilaian ke lokasi objek telah dilakukan oleh
:
</h1>
</div>
<div class="card-body">
@@ -215,7 +194,7 @@
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="staf" name="staf" class="input w-full"
placeholder="Masukkan Nama Staff"
value="{{ $penilai->userPenilaiTeam->name ?? "" }}" @readonly(true)>
value="{{ $penilai->userPenilaiTeam->name ?? '' }}" @readonly(true)>
</div>
</div>
@@ -224,24 +203,25 @@
<label for="penilai" class="form-label max-w-56">Pihak KJPP</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="pihak_kjjpp" class="input w-full"
placeholder="Masukkan Pihak KJPP"
value="">
value="{{$forminspeksi['signature']['kjjp']['name'] ?? ''}}" @readonly(true) placeholder="Masukkan Nama KJPP">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="pihak_bag" class="form-label max-w-56">Pihak BAGI Cab </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="pihak_bag" name="pihak_bag" class="input w-full"
placeholder="Masukkan Pihak Bag"
value="{{ $permohonan->user->name ?? '' }}" @readonly(true)>
placeholder="Masukkan Pihak Bag" value="{{ $permohonan->user->name ?? '' }} || {{ $permohonan->branch->name }}"
@readonly(true)>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="debitur_perwakilan" class="form-label max-w-56">Debitur/perwakilan debitur </label>
<label for="debitur_perwakilan" class="form-label max-w-56">Debitur/perwakilan debitur
</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="debitur_perwakilan" name="debitur_perwakilan" class="input w-full"
placeholder="Masukkan Penilai"
<input type="text" id="debitur_perwakilan" name="debitur_perwakilan"
class="input w-full" placeholder="Masukkan Penilai"
value="{{ $permohonan->debiture->name ?? '' }}" @readonly(true)>
</div>
</div>
@@ -274,7 +254,8 @@
@else
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="3">{{ old('fakta_positif.0', '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@@ -302,7 +283,8 @@
@else
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old('fakta_negatif.0', $callReport['fakta']['fakta_negatif'][0] ?? '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>

View File

@@ -8,7 +8,7 @@
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card border border-agi-100 card-grid min-w-full" data-datatable="false" data-datatable-page-size="10"
data-datatable-state-save="false" id="permohonan-table" data-api-url="{{ route('permohonan.datatables') }}">
data-datatable-state-save="false" id="permohonan-table" data-api-url="{{ route('permohonan.datatables') }}">
<div class="card-header bg-agi-50 py-5 flex-wrap">
<h3 class="card-title">
Daftar Permohonan
@@ -29,46 +29,46 @@
<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">
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="tanggal_permohonan">
<span class="sort"> <span class="sort-label"> Tanggal Permohonan </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="user_id">
<span class="sort"> <span class="sort-label"> User Pemohon </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="branch_id">
<span class="sort"> <span class="sort-label"> Cabang Pemohon </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="debitur_id">
<span class="sort"> <span class="sort-label"> Debitur </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_id">
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px] text-center" data-datatable-column="status">
<span class="sort"> <span class="sort-label"> Status </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="keterangan">
<span class="sort"> <span class="sort-label"> Keterangan </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[50px] text-right" data-datatable-column="actions">Action</th>
</tr>
<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="tanggal_permohonan">
<span class="sort"> <span class="sort-label"> Tanggal Permohonan </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="user_id">
<span class="sort"> <span class="sort-label"> User Pemohon </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="branch_id">
<span class="sort"> <span class="sort-label"> Cabang Pemohon </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="debitur_id">
<span class="sort"> <span class="sort-label"> Debitur </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_id">
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px] text-center" data-datatable-column="status">
<span class="sort"> <span class="sort-label"> Status </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="keterangan">
<span class="sort"> <span class="sort-label"> Keterangan </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[50px] text-right" data-datatable-column="actions">Action</th>
</tr>
</thead>
</table>
</div>
@@ -189,7 +189,7 @@
title: 'Status',
render: (item, data) => {
console.log(data.documents.length);
if(data.documents.length > 0) {
if (data.documents.length > 0) {
return `<span class="badge badge-sm badge-default uppercase flex justify-center">${data.status}</span>`;
}
return `<span class="badge badge-sm badge-danger uppercase flex justify-center">Lengkapi Aset Jaminan</span>`;
@@ -204,8 +204,15 @@
render: (item, data) => {
let actionHtml = `<div class="flex flex-nowrap justify-end gap-1.5">`;
if (data.status === 'proses-survey' || data.status == 'rejected-reschedule') {
actionHtml += `
<a onclick="surveyorRescheduleJadwalSurvey(${data.id},${data.penilaian.id},'${data.nomor_registrasi}', '${data.debiture.name}', '${data.penilaian.waktu_penilaian}', '${data.penilaian.rejected_note}')" class="delete btn btn-sm btn-outline btn-light" title="Reschedule Jadwal Survey">
<i class="ki-filled ki-calendar-remove"></i>
</a>`;
}
if (data && data.penilaian && data.penilaian.waktu_penilaian !== null && data.status !==
'done' && data.penilaian.authorized_status == null) {
'done' && data.penilaian.authorized_status == null || data.status === 'approved-reschedule') {
actionHtml += `
<a class="btn btn-sm btn-outline btn-primary" href="javascript:void(0)" onclick="surveyorApproveKunjungan(${data.id},${data.penilaian.id},'${data.nomor_registrasi}', '${data.debiture.name}', '${data.penilaian.waktu_penilaian}')" title="Approve Jadwal Kunjungan No Reg ${data.nomor_registrasi}" >
<i class="ki-filled ki-calendar-edit"></i>
@@ -225,12 +232,15 @@
<a class="btn btn-sm btn-outline btn-info" href="permohonan/${data.id}/edit" title="Edit Permohonan">
<i class="ki-outline ki-notepad-edit"></i>
</a>`;
if(data.status !== 'batal') {
if (data.status !== 'batal') {
actionHtml += `
<a onclick="deleteData(${data.id}, '${data.nomor_registrasi}','${data.debiture.name}')" class="delete btn btn-sm btn-outline btn-danger" title="Batalkan Permohonan">
<i class="ki-outline ki-cross-square"></i>
</a>`;
}
actionHtml += `</div>`;
return actionHtml;
@@ -241,14 +251,14 @@
let dataTable = new KTDataTable(element, dataTableOptions);
// Custom search functionality
searchInput.addEventListener('input', function () {
searchInput.addEventListener('input', function() {
const searchValue = this.value.trim();
dataTable.search(searchValue, true);
});
</script>
<script type="text/javascript">
function surveyorApproveKunjungan(permohonanId,idPenilaian, noReg, debitur, waktuPenilaian) {
function surveyorApproveKunjungan(permohonanId, idPenilaian, noReg, debitur, waktuPenilaian) {
Swal.fire({
title: ' ',
text: "Yakin akan Menyetujui Jadwal Kunjungan " + noReg + " untuk Debitur " + debitur +
@@ -263,7 +273,7 @@
//define variable
// $id ==> penilaian.id
let token = "{{ csrf_token() }}";
let useURL = "{{ URL::to('/surveyor/storeAproved') }}" + "/" + idPenilaian;
let useURL = "{{ URL::to('/permohonan/store-approved') }}" + "/" + idPenilaian;
var input_data = new Object();
input_data._token = token;
@@ -276,7 +286,7 @@
cache: false,
data: input_data,
dataType: "json",
success: function (response) {
success: function(response) {
console.log(response);
if ('success' == response.status) {
swal.fire('Sukses Menyetujui!', response.message, 'success').then(
@@ -288,7 +298,7 @@
}
},
error: function (response, textStatus, errorThrown) {
error: function(response, textStatus, errorThrown) {
// var errors = response.responseJSON.errors;
// console.log(errors);
console.log(response);
@@ -300,6 +310,95 @@
}
function surveyorRescheduleJadwalSurvey(permohonanId, idPenilaian, noReg, debitur, waktuPenilaian, rejectedNote) {
Swal.fire({
title: 'Reschedule Jadwal Kunjungan',
html: `
<div class="text-left space-y-4">
<p class="text-gray-700">
Yakin akan Reschedule Jadwal Kunjungan
<span class="font-semibold text-blue-600">${noReg}</span>
untuk Debitur
<span class="font-semibold text-blue-600">${debitur}</span>
pada waktu
<span class="font-semibold">${window.formatTanggalWaktuIndonesia(waktuPenilaian)}</span>?
</p>
<div>
<label for="reschedule_date" class="block text-sm font-medium text-gray-700 mb-1">Tanggal Baru</label>
<input type="datetime-local" id="reschedule_date"
class="block w-full px-4 py-2 border border-gray-300 rounded-lg shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm">
</div>
<div>
<label for="reschedule_note" class="block text-sm font-medium text-gray-700 mb-1">Catatan</label>
<textarea id="reschedule_note"
class="block w-full px-4 py-2 border border-gray-300 rounded-lg shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm"
placeholder="Masukkan alasan reschedule..."></textarea>
</div>
${rejectedNote ? `
<p class="text-gray-700"><strong>Catatan Reject:</strong> ${rejectedNote}</p>
` : ''}
</div>
`,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Reschedule',
preConfirm: () => {
const rescheduleDate = document.getElementById('reschedule_date').value;
const rescheduleNote = document.getElementById('reschedule_note').value;
if (!rescheduleDate || !rescheduleNote) {
Swal.showValidationMessage('Semua inputan wajib diisi!');
return false;
}
return { rescheduleDate, rescheduleNote };
}
}).then((result) => {
if (result.isConfirmed) {
const { rescheduleDate, rescheduleNote } = result.value;
// Data to send
const data = {
_token: "{{ csrf_token() }}",
penilaian_id: idPenilaian,
nomor_registrasi: noReg,
permohonan_id: permohonanId,
reschedule_date: rescheduleDate,
reschedule_note: rescheduleNote
};
$.ajax({
url: `{{ URL::to('/permohonan/store-reschedule-survey') }}/${idPenilaian}`,
type: "PUT",
cache: false,
data: data,
dataType: "json",
success: function(response) {
if (response.status === 'success') {
Swal.fire('Sukses Reschedule!', response.message, 'success').then(() => {
location.reload();
});
} else {
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response) {
const errorMessage = response.responseJSON?.message || 'Terjadi kesalahan saat memproses data.';
Swal.fire('Error!', errorMessage, 'error');
}
});
}
});
}
// window.formatTanggalIndonesia(date)
</script>
@endpush

View File

@@ -16,7 +16,7 @@
$luas_bangunan = 'N/A';
if ($item->detail) {
foreach ($item->detail as $luas) {
if (isset($luas->name) && $luas->name === 'IMB') {
if (isset($luas->name) && $luas->jenis_legalitas_jaminan_id === 10) {
$details = json_decode($luas->details, true);
$luas_bangunan = isset($details['luas_bangunan']) ? $details['luas_bangunan'] : 'N/A';
break;

View File

@@ -471,7 +471,7 @@
<label for="city" class="form-label max-w-56">Kabupaten/Kota</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="city" class="input w-full cursor-not-allowed" readonly
value="{{ isset($permohonan->debiture->city) ? $permohonan->debiture->city->name : '' }}">
value="{{ isset($permohonan->debiture->city) ? strtolower($permohonan->debiture->city->name) : '' }}">
</div>
</div>
<input type="hidden" name="district_code"
@@ -559,9 +559,32 @@
}
}
function loadCities() {
const citySelect = document.getElementById("city_code");
if (citySelect) {
// Hapus semua opsi sebelumnya
citySelect.innerHTML = '<option value="">Pilih Kota/Kabupaten</option>';
cities.forEach((city) => {
// Ubah nama kota menjadi lowercase
const cityNameLowercase = city.name.toLowerCase();
// Tambahkan opsi ke dropdown
const option = document.createElement("option");
option.value = city.code;
option.textContent = cityNameLowercase; // Nama dalam lowercase
citySelect.appendChild(option);
});
} else {
console.error("Element with ID 'city_code' not found.");
}
}
document.addEventListener('DOMContentLoaded', () => {
loadSavedLocationData();
loadCities();
});
// Fungsi untuk memuat data lokasi yang tersimpan
</script>
@include('lpj::surveyor.js.utils')

View File

@@ -217,7 +217,7 @@
}
@endphp
<img id="foto_tempat-preview" src="{{ $fotoSrc ?: asset('images/default-placeholder.png') }}"
<img id="foto_tempat-preview" src="{{ $fotoSrc ?: '' }}"
alt="Foto Tempat" class="mt-2 max-w-full h-auto"
style="max-width: 30rem; {{ $fotoSrc ? '' : 'display: none;' }}">

View File

@@ -23,12 +23,12 @@
</div>
<div>
<label class="block text-sm font-medium text-gray-700">Jarak ke CBD Point</label>
<input type="text" class="input mt-2" name="jarak_cbd_point" placeholder="Km"
<input type="text" class="input mt-2" name="jarak_cbd_point" placeholder="Masukkan Jarak ke CBD Point"
value="{{ old('jarak_cbd_point', isset($forminspeksi['lingkungan']['jarak_cbd_point']) ? $forminspeksi['lingkungan']['jarak_cbd_point'] : '') }}">
</div>
<div>
<label class="block text-sm font-medium text-gray-700">Nama CBD Point</label>
<input type="text" class="input mt-2" name="nama_cbd_point" placeholder="Km"
<input type="text" class="input mt-2" name="nama_cbd_point" placeholder="Masukkan Nama CBD Point"
value="{{ old('nama_cbd_point', isset($forminspeksi['lingkungan']['nama_cbd_point']) ? $forminspeksi['lingkungan']['nama_cbd_point'] : '') }}">
</div>
</div>
@@ -40,7 +40,7 @@
$forminspeksi['lingkungan']['lebar_perkerasan_jalan'] ?? '',
);
@endphp
<input type="text" name="lebar_perkerasan_jalan" class="input mt-2" placeholder="Meter"
<input type="text" name="lebar_perkerasan_jalan" class="input mt-2" placeholder="Masukkan Lebar Perkerasan Jalan"
value="{{ $lebarPerkerasanJalan }}">
</div>

View File

@@ -16,7 +16,7 @@
$luas_tanah = 'N/A';
if ($item->detail) {
foreach ($item->detail as $luas) {
if (isset($luas->name) && $luas->name === 'Sertifikat') {
if (isset($luas->name) && $luas->jenis_legalitas_jaminan_id === 1) {
$details = json_decode($luas->details, true);
$luas_tanah = isset($details['luas_tanah']) ? $details['luas_tanah'] : 'N/A';
break;
@@ -191,7 +191,7 @@
@elseif (strcasecmp($item->name, 'Lebih Rendah') == 0)
<input id="input-lebih-rendah" type="text"
style="{{ isset($forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah']) && $forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah'] ? '' : 'display: none;' }}"
name="ketinggian_lebih_rendah" class="input w-full mt-2" placeholder="m2"
name="ketinggian_lebih_rendah" class="input w-full mt-2" placeholder="m"
value="{{ old('ketinggian_lebih_rendah', $forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah'] ?? '') }}"/>
@endif
@@ -217,6 +217,11 @@
{{ old('kontur_jalan', isset($forminspeksi['tanah']['kontur_jalan']) ? $forminspeksi['tanah']['kontur_jalan'] : '') == 'rata' ? 'checked' : '' }}>
<span class="ml-2">Rata</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="kontur_jalan" value="Menanjak"
{{ old('kontur_jalan', isset($forminspeksi['tanah']['kontur_jalan']) ? $forminspeksi['tanah']['kontur_jalan'] : '') == 'Menanjak' ? 'checked' : '' }}>
<span class="ml-2">Menanjak</span>
</label>
</div>
<em id="error-kontur_jalan" class="alert text-danger text-sm"></em>
</div>

View File

@@ -200,6 +200,149 @@
});
}
function approveReschedule(penilaianId,permohonanId, noReg, debitur, reschedule_date, reschedule_note) {
Swal.fire({
title: 'Konfirmasi',
html: `
<p>Yakin akan Menyetujui atau Menolak Reschedule Jadwal Kunjungan <b>${noReg}</b> untuk Debitur <b>${debitur}</b>
pada waktu <b>${window.formatTanggalWaktuIndonesia(reschedule_date)}</b>?</p>
<p><b>Catatan: </b> <br/>${reschedule_note}</p>
`,
icon: 'warning',
showDenyButton: true,
showCancelButton: true,
confirmButtonColor: '#3085d6',
denyButtonColor: '#d33',
confirmButtonText: 'Approve',
denyButtonText: 'Reject'
}).then((result) => {
if (result.isConfirmed) {
// Approve action
let token = "{{ csrf_token() }}";
let useURL = "{{ URL::to('/surveyor/store-approve-reschedule') }}" + "/" + penilaianId;
var input_data = {
_token : token,
permohonan_id : permohonanId,
nomor_registrasi: noReg
}
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
success: function(response) {
console.log(response);
if ('success' == response.status) {
Swal.fire('Sukses!', response.message, 'success').then(() => {
location.reload(true);
});
} else {
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response, textStatus, errorThrown) {
console.log(response);
}
});
} else if (result.isDenied) {
// Reject action
Swal.fire({
title: 'Masukkan Keterangan',
input: 'textarea',
inputPlaceholder: 'Tuliskan alasan penolakan di sini...',
inputAttributes: {
'aria-label': 'Tuliskan alasan penolakan di sini'
},
showCancelButton: true,
confirmButtonText: 'Submit',
cancelButtonText: 'Batal'
}).then((rejectResult) => {
if (rejectResult.isConfirmed && rejectResult.value) {
let token = "{{ csrf_token() }}";
let useURL = "{{ URL::to('/surveyor/store-rejected-reschedule') }}" + "/" + penilaianId;
var input_data = {
_token : token,
permohonan_id : permohonanId,
nomor_registrasi: noReg,
rejected_note : rejectResult.value
}
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
success: function(response) {
console.log(response);
if ('success' == response.status) {
Swal.fire('Ditolak!', response.message, 'success').then(() => {
location.reload(true);
});
} else {
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response, textStatus, errorThrown) {
console.log(response);
}
});
} else if (rejectResult.dismiss === Swal.DismissReason.cancel) {
Swal.fire('Dibatalkan', 'Aksi penolakan dibatalkan.', 'info');
}
});
}
});
}
function prosesSurvey(permohonanId, nomor_registrasi) {
Swal.fire({
title: 'Konfirmasi',
text: `Yakin akan Melakukan Inspeksi dengan nomor registrasi ${nomor_registrasi}?`,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, Setujui',
cancelButtonText: 'Batal',
}).then((result) => {
if (result.isConfirmed) {
// Mendefinisikan URL dan data
let token = "{{ csrf_token() }}";
let useURL = `{{ URL::to('/surveyor/store-proses-survey') }}/${permohonanId}`;
let input_data = {
_token: token,
permohonan_id: permohonanId
};
// Melakukan AJAX request
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
dataType: "json",
success: function(response) {
if (response.status === 'success') {
// Arahkan langsung ke halaman inspeksi
window.location.href = `surveyor/${permohonanId}/show?form=inspeksi`;
} else {
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response) {
const errorMessage = response.responseJSON?.message || 'Terjadi kesalahan saat memproses data.';
Swal.fire('Error!', errorMessage, 'error');
}
});
}
});
}
</script>
<script type="module">
@@ -254,14 +397,23 @@
render: (item, data) => data.jenis_fasilitas_kredit ? `${data.jenis_fasilitas_kredit.name}` : 'N/A',
},
actions: {
title: 'Action',
render: (item, data) => {
let actionHtml = '';
// if (data.documents.length > 0) {
title: 'Action',
render: (item, data) => {
let actionHtml = '';
if (data.penilaian.waktu_penilaian == null ||
(data.penilaian.waktu_penilaian && data.penilaian.authorized_status == null)) {
actionHtml += `
if (data.status === 'request-reschedule') {
actionHtml += `
<button class="btn btn-sm btn-icon btn-clear btn-success"
onclick="approveReschedule('${data.penilaian.id}','${data.id}', '${data.nomor_registrasi}', '${data.debiture?.name}', '${data.penilaian.reschedule_date}', '${data.penilaian.reschedule_note}')"
title="Approve Reschedule">
<i class="ki-filled ki-double-check"></i>
</button>
`;
} else {
if (data.penilaian.waktu_penilaian == null ||
(data.penilaian.waktu_penilaian && data.penilaian.authorized_status == null)) {
// Tombol Buat Jadwal Kunjungan
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-primary"
data-modal-toggle="#modal_jadwal"
onclick="jadwal(${data.penilaian.id})"
@@ -269,9 +421,28 @@
<i class="ki-filled ki-calendar-edit"></i>
</a>
`;
} else {
actionHtml += `
if (data.penilaian.waktu_penilaian && data.penilaian.authorized_status == null) {
// Tambahkan elemen berdampingan
actionHtml += `
<span class="badge badge-xs badge-outline badge-warning text-4xs">Menunggu Pemohon</span>
`;
}
} else if (data.status === 'approved-reschedule' || data.status === 'rejected-reschedule') {
actionHtml += `
<span class="badge badge-xs badge-outline badge-warning text-4xs">Menunggu Pemohon</span>
`;
} else if(data.status === 'proses-survey'){
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-clarity"
onclick="prosesSurvey(${data.id}, '${data.nomor_registrasi}')"
title="Masuk Form Inspeksi">
<i class="ki-filled ki-tablet-ok"></i>
</a>
`;
}else {
// Tombol Lihat Form Inspeksi dan Freeze Survey
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-warning"
href="surveyor/${data.id}/show?form=inspeksi"
title="Lihat Form Inspeksi">
@@ -284,16 +455,13 @@
<i class="ki-filled ki-arrow-circle-right"></i>
</button>
`;
}
// } else {
}
}
// actionHtml =
// `<span class="badge badge-sm badge-danger uppercase flex justify-center">Lengkapi Aset Jaminan</span>`;
// }
return actionHtml;
}
}
return actionHtml;
}
}
}
};