feat(pemohon): menambahkan fitur reschedule jadwal kunjungan
fix(surveyor): memperbaiki nama placeholder dan call report
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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;' }}">
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user