perbaikan laporan so , form inspksi alat berat, kendaraan dan mesin

This commit is contained in:
majid
2024-12-31 07:56:41 +07:00
parent 676619f5df
commit 800d0c2496
13 changed files with 385 additions and 306 deletions

View File

@@ -579,7 +579,7 @@ class PenilaiController extends Controller
'luas_bangunan' => $request->input('luas_bangunan'),
'nilai_bangunan_1' => $request->input('nilai_bangunan_1'),
'nilai_bangunan_2' => $request->input('nilai_bangunan_2'),
'sarana_pelengkap' => $request->input('sarana_pelengkap', []),
'sarana_pelengkap_penilai' => $request->input('sarana_pelengkap_penilai'),
'nilai_sarana_pelengkap_1' => $request->input('nilai_sarana_pelengkap_1'),
'nilai_sarana_pelengkap_2' => $request->input('nilai_sarana_pelengkap_2'),
'total_nilai_pasar_wajar' => $request->input('total_nilai_pasar_wajar'),

View File

@@ -599,18 +599,20 @@ class PenilaianController extends Controller
public function storePenilaiLaporan(Request $request)
{
DB::beginTransaction();
try {
$validatedRequest = app(FormSurveyorRequest::class);
$this->surveyorController->store($validatedRequest);
$data = [
'luas_tanah' => $request->input('luas_tanah'),
'luas_tanah_penilai' => $request->input('luas_tanah_penilai'),
'nilai_tanah_1' => $request->input('nilai_tanah_1'),
'nilai_tanah_2' => $request->input('nilai_tanah_2'),
'luas_bangunan' => $request->input('luas_bangunan'),
'luas_bangunan_penilai' => $request->input('luas_bangunan_penilai'),
'nilai_bangunan_1' => $request->input('nilai_bangunan_1'),
'nilai_bangunan_2' => $request->input('nilai_bangunan_2'),
'sarana_pelengkap' => $request->input('sarana_pelengkap', []),
'sarana_pelengkap_penilai' => $request->input('sarana_pelengkap_penilai'),
'nilai_sarana_pelengkap_1' => $request->input('nilai_sarana_pelengkap_1'),
'nilai_sarana_pelengkap_2' => $request->input('nilai_sarana_pelengkap_2'),
'total_nilai_pasar_wajar' => $request->input('total_nilai_pasar_wajar'),
@@ -633,12 +635,14 @@ class PenilaianController extends Controller
'lpj' => json_encode($data),
]
);
DB::commit();
return response()->json([
'success' => true,
'message' => 'Berhasil Update Laporan penilai',
'data' => $request->all(),
], 200);
} catch (\Throwable $e) {
DB::rollBack();
return response()->json([
'success' => false,
'message' => 'Terjadi kesalahan',

View File

@@ -351,17 +351,15 @@ class FormSurveyorRequest extends FormRequest
{
return [
'action' => 'required',
'tanggal_survey' => 'required',
'nama_wakil' => 'required',
'hub_calon_debitur' => 'required',
'dengan_wadeb' => 'required',
'nama_wakil' => 'required|string',
'hub_calon_debitur' => 'required|string',
'nama_jalan' => 'required',
'perumahan_gang' => 'required',
'blok' => 'required',
'desa_kelurahan' => 'required',
'kecamatan' => 'required',
'kota_madya' => 'required',
'provinsi' => 'required',
'blok_nomor' => 'required',
'village_code' => 'nullable|string',
'district_code' => 'nullable|string',
'city_code' => 'nullable|string',
'province_code' => 'nullable|string',
'jenis_model' => 'required',
'nomor_lambung' => 'required',
'model_unit' => 'required',
@@ -411,7 +409,6 @@ class FormSurveyorRequest extends FormRequest
{
return [
'action' => 'required',
'tanggal_survey' => 'required',
'nama_wakil' => 'required',
'hub_calon_debitur' => 'required',
'bandara' => 'required',

View File

@@ -85,6 +85,9 @@ class SurveyorRequest extends FormRequest
],
],
'foto-objek-jaminan' => [
'kategori' => 'required',
],
// Add more action specific rules here
default => [],
};

View File

@@ -930,7 +930,7 @@
</tr>
<tr>
<td style="padding: 8px; text-align: right;">Sarana Pelengkap
{{ $lpjData['sarana_pelengkap'] ?? '' }}m<sup>2</sup>
{{ $lpjData['sarana_pelengkap_penilai'] ?? '' }}m<sup>2</sup>
</td>
<td style="padding: 8px; text-align: right;">X
{{ $lpjData['nilai_sarana_pelengkap_1'] ?? '' }}</td>

View File

@@ -1339,7 +1339,7 @@
</tr>
<tr>
<td style=" padding: 8px; text-align: right;">Sarana Pelengkap
{{ $lpjData['sarana_pelengkap'] ?? '' }}m<sup>2</sup></td>
{{ $lpjData['sarana_pelengkap_penilai'] ?? '' }}m<sup>2</sup></td>
<td style=" padding: 8px; text-align: right;">X
{{ $lpjData['nilai_sarana_pelengkap_1'] ?? '' }}
</td>

View File

@@ -21,10 +21,14 @@
@include('lpj::component.form-penilai', ['title' => 'Laporan'])
<div class="flex card-footer justify-end gap-5">
<button type="button" class="btn btn-success" id="saveButton" onclick="saveLpjSederhanadanStandard()">
<button type="button" class="btn btn-success" id="saveButton" onclick="saveLaporan()">
<span id="saveButtonText">Save</span>
</button>
<button type="button" class="btn btn-warning" id="saveButton" onclick="saveLpjSederhanadanStandar()">
<span id="saveButtonText">Revisi</span>
</button>
<a href="{{ route('penilai.print-out') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj=0"
class="btn btn-primary">
<i class="ki-filled ki-printer"></i> Print
@@ -35,6 +39,10 @@
@endsection
<script type="text/javascript">
const datas = @json($lpjData);
console.log(datas);
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.currency-format').forEach(input => {
input.addEventListener('input', function() {
@@ -54,11 +62,11 @@
const parseInput = (value) => parseFloat(value.replace(/[^0-9]/g, '')) || 0;
// Ambil elemen input dan parse nilainya
let luasTanah = parseInput(document.getElementById('luas_tanah').value);
let luasTanah = parseInput(document.getElementById('luas_tanah_penilai').value);
let hargaPerMeterTanah = parseInput(document.querySelector('input[name="nilai_tanah_1"]').value);
let totalLuasTanah = document.querySelector('input[name="nilai_tanah_2"]');
let luasBangunan = parseInput(document.getElementById('luas_bangunan').value);
let luasBangunan = parseInput(document.getElementById('luas_bangunan_penilai').value);
let hargaPerMeterBangunan = parseInput(document.querySelector('input[name="nilai_bangunan_1"]').value);
let totalLuasBangunan = document.querySelector('input[name="nilai_bangunan_2"]');
@@ -108,7 +116,7 @@
function saveLpjSederhanadanStandard() {
function saveLaporan() {
const form = document.getElementById('form-lpj');
const formData = new FormData(form);
showLoadingSwal('Mengirim data ke server...');
@@ -138,6 +146,7 @@
confirmButtonText: 'OK'
}).then((response) => {
if (response.isConfirmed) {
window.location.reload();
}
});
} else {

View File

@@ -1,11 +1,10 @@
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card border border-agi-100 rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Order Penilaian
</h3>
</div>
<div class="card-body">
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Order Penilaian</h1>
</div>
<div class="grid gap-5 grid-cols-2">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -47,11 +46,13 @@
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card border border-agi-100 rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Identitas Debitur
</h3>
</div>
<div class="card-body">
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Identitas Debitur</h1>
</div>
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -67,7 +68,7 @@
<label class="form-label max-w-56">Nama Wakil Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="nama_wakil" class="input"
placeholder="Masukkan Hubungan Calon Debitur">
placeholder="Masukkan Hubungan Calon Debitur" value="{{ $forminspeksi['nama_wakil'] ?? '' }}">
<em id="error-nama_wakil" class="alert text-danger text-sm"></em>
</div>
</div>
@@ -75,45 +76,63 @@
<label class="form-label max-w-56">Hubungan Calon Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="hub_calon_debitur" class="input"
placeholder="Masukkan Hubungan Calon Debitur">
placeholder="Masukkan Hubungan Calon Debitur" value="{{$forminspeksi['hub_calon_debitur'] ?? ''}}">
<em id="error-hub_calon_debitur" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
{{-- lokasi jaminan --}}
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
{{-- lokasi jaminan --}}
<div class="card border border-agi-100 rounded-lg shadow-md">
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
<div class="card border border-agi-100 rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Data Data Jaminan
</h3>
</div>
<div class="card-body">
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Data Data Jaminan</h1>
</div>
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Model</label>
<div class="flex flex-wrap items-baseline w-full">
<select
class="input tomselect w-full @error('model_unit') border-danger bg-danger-light @enderror"
name="jenis_model">
<option value="">Select Model Kendaraan </option>
@if (isset($modelAlatBerat))
@foreach ($modelAlatBerat as $item)
<option value="{{ $item->name }}"
{{ old('') == $item->name ? 'selected' : '' }}>{{ $item->name }}
</option>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['modelAlatBerat']))
@foreach ($basicData['modelAlatBerat'] as $item)
<div class="flex items-center">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="jenis_model[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('jenis_model', [])) ||
(isset($forminspeksi['jenis_model']) &&
is_array($forminspeksi['jenis_model']) &&
in_array($item->name, $forminspeksi['jenis_model']))
? 'checked'
: '' }}
onclick="toggleCheckboxVisibility('jenis_model', 'jenis_model_lainnya', ['lainnya'])"/>
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'lainnya') == 0)
<input id="jenis_model_lainnya" type="text"
style="{{ isset($forminspeksi['jenis_model']['lainnya']) && $forminspeksi['jenis_model']['lainnya'] ? '' : 'display: none;' }}"
name="jenis_model_lainnya" class="input w-full mt-2"
placeholder="Masukkan bentuk tanah..."
value="{{ old('jenis_model_lainnya', $forminspeksi['jenis_model']['lainnya'] ?? '') }}"/>
@endif
</div>
@endforeach
@endif
</select>
</div>
<em id="error-jenis_model" class="alert text-danger text-sm"></em>
</div>
</div>
@@ -124,76 +143,91 @@
'label' => 'Nomor Lambung',
'name' => 'nomor_lambung',
'index' => 0,
'value' => old('nomor_lambung', $forminspeksi['nomor_lambung']),
],
[
'label' => 'Model Unit',
'name' => 'model_unit',
'index' => 1,
'value' => old('model_unit', $forminspeksi['model_unit']),
],
[
'label' => 'Tahun Pembuatan',
'name' => 'tahun_pembuatan',
'index' => 2,
'value' => old('tahun_pembuatan', $forminspeksi['tahun_pembuatan']),
],
[
'label' => 'Merk',
'name' => 'merk',
'index' => 3,
'value' => old('merk', $forminspeksi['merk']),
],
[
'label' => 'Negara Pembuat',
'name' => 'negara_pembuat',
'index' => 4,
'value' => old('negara_pembuat', $forminspeksi['negara_pembuat']),
],
[
'label' => 'Tahun Pembelian',
'name' => 'tahun_pembelian',
'index' => 5,
'value' => old('tahun_pembelian', $forminspeksi['tahun_pembelian']),
],
[
'label' => 'Nomor Faktur/Invoice',
'name' => 'nomor_faktur',
'index' => 6,
'value' => old('nomor_faktur', $forminspeksi['nomor_faktur']),
],
[
'label' => 'Nomor Kontrak Pembelian',
'name' => 'nomor_kontrak',
'index' => 7,
'value' => old('nomor_kontrak', $forminspeksi['nomor_kontrak']),
],
[
'label' => 'Nama Pemilik',
'name' => 'nama_pemilik',
'index' => 8,
'value' => old('nama_pemilik', $forminspeksi['nama_pemilik']),
],
[
'label' => 'Alamaat Pemilik',
'name' => 'alamat_pemilik',
'index' => 9,
'value' => old('alamat_pemilik', $forminspeksi['alamat_pemilik']),
],
[
'label' => 'Nomor Asuransi',
'name' => 'nomor_asuransi',
'index' => 10,
'value' => old('nomor_asuransi', $forminspeksi['nomor_asuransi']),
],
[
'label' => 'Nomor Rangka',
'name' => 'nomor_rangka',
'index' => 11,
'value' => old('nomor_rangka', $forminspeksi['nomor_rangka']),
],
[
'label' => 'Nomor Mesin',
'name' => 'nomor_mesin',
'index' => 12,
'value' => old('nomor_mesin', $forminspeksi['nomor_mesin']),
],
[
'label' => 'Hour Meters',
'name' => 'hour_mesters',
'index' => 13,
'value' => old('hour_mesters', $forminspeksi['hour_mesters']),
],
[
'label' => 'Overhaul Mesin',
'name' => 'overhaul_mesin',
'index' => 14,
'value' => old('overhaul_mesin', $forminspeksi['overhaul_mesin']),
],
];
@@ -206,9 +240,7 @@
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}">
placeholder="Masukkan {{ $item['label'] }}" value="{{$item['value'] ?? ''}}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
@@ -221,11 +253,14 @@
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card border border-agi-100 rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Kondisi Objek Jaminan
</h3>
</div>
<div class="card-body">
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Kondisi Objek Jaminan</h1>
</div>
<div class="grid gap-5">
@php
@@ -339,7 +374,7 @@
<label class="form-label max-w-56">Perusahaan Asuransi</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="perusahaan_asuransi" class="input"
placeholder="Pesurahaan Asuransi">
placeholder="Pesurahaan Asuransi" value={{$forminspeksi['perusahaan_asuransi'] ?? ''}}>
<em class="alert text-danger text-sm"></em>
</div>
@@ -348,7 +383,7 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tahun Berakhir</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" name="tahun_berakhir" class="input" placeholder="Tahun berakhir">
<input type="date" name="tahun_berakhir" class="input" placeholder="Tahun berakhir" value={{$forminspeksi['tahun_berakhir'] ?? ''}}>
<em class="alert text-danger text-sm"></em>
</div>
@@ -358,11 +393,13 @@
</div>
<div class="card border border-agi-100 bg-white rounded-lg overflow-hidden">
<div class="card border border-agi-100 rounded-lg overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Analisis Fakta
</h3>
</div>
<div class="card-body">
<div class=" py-4 ">
<h1 class="text-md font-medium text-gray-900">Analisis Fakta</h1>
</div>
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Positif</label>
@@ -398,9 +435,6 @@
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Catatan Yang Perlu Diperhatikan</label>
<div id="catatan-container" class="flex flex-wrap items-baseline w-full">

View File

@@ -87,7 +87,7 @@
<div id="perwakilan" class="flex items-baseline w-full gap-5">
<div class="flex gap-4 items-center w-full">
<input class="input" type="text" placeholder="Masukan Pihak Bank Selain Pj" type="text"
name="pihak_bank" id="lat"
name="pihak_bank"
value="{{ old('pihak_bank', isset($forminspeksi['asset']['pihak_bank']) ? $forminspeksi['asset']['pihak_bank'] : '') }}">
</div>
</div>
@@ -552,128 +552,5 @@
loadSavedLocationData();
});
// Fungsi untuk memuat data lokasi yang tersimpan
async function loadSavedLocationData() {
const provinceCode = '{{ $cekAlamat['province_code'] ?? '' }}';
const cityCode = '{{ $cekAlamat['city_code'] ?? '' }}';
const districtCode = '{{ $cekAlamat['district_code'] ?? '' }}';
const villageCode = '{{ $cekAlamat['village_code'] ?? '' }}';
// Set province
const provinceSelect = document.getElementById('province_code');
if (provinceCode && provinceSelect) {
provinceSelect.value = provinceCode;
await getCity(provinceCode);
}
// Set city
const citySelect = document.getElementById('city_code');
if (cityCode && citySelect) {
citySelect.value = cityCode;
await getDistrict(cityCode);
}
// Set district
const districtSelect = document.getElementById('district_code');
if (districtCode && districtSelect) {
districtSelect.value = districtCode;
await getVillage(districtCode);
}
// Set village
const villageSelect = document.getElementById('village_code');
if (villageCode && villageSelect) {
villageSelect.value = villageCode;
}
}
// Modifikasi fungsi existing
async function getCity(provinceId) {
try {
const response = await fetch(`/locations/cities/province/${provinceId}`);
const data = await response.json();
const cityDropdown = document.getElementById('city_code');
if (cityDropdown) {
cityDropdown.innerHTML = '<option value="">Pilih Kota/Kabupaten</option>';
data.forEach(city => {
const option = document.createElement('option');
option.value = city.code;
option.textContent = city.name;
@if (isset($debitur->city_code))
if (city.code === '{{ $debitur->city_code }}') {
option.selected = true;
}
@endif
cityDropdown.appendChild(option);
});
// Reset dropdown kecamatan dan desa
document.getElementById('district_code').innerHTML = '<option value="">Pilih Kecamatan</option>';
document.getElementById('village_code').innerHTML = '<option value="">Pilih Kelurahan</option>';
}
} catch (error) {
console.error('Error fetching cities:', error);
}
}
// Lakukan hal serupa untuk getDistrict dan getVillage
async function getDistrict(cityId) {
try {
const response = await fetch(`/locations/districts/city/${cityId}`);
const data = await response.json();
const districtDropdown = document.getElementById('district_code');
if (districtDropdown) {
districtDropdown.innerHTML = '<option value="">Pilih Kecamatan</option>';
data.forEach(district => {
const option = document.createElement('option');
option.value = district.code;
option.textContent = district.name;
// Cek apakah ini adalah kecamatan yang sebelumnya dipilih
@if (isset($debitur->district_code))
if (district.code === '{{ $debitur->district_code }}') {
option.selected = true;
}
@endif
districtDropdown.appendChild(option);
});
// Reset dropdown desa
document.getElementById('village_code').innerHTML = '<option value="">Pilih Kelurahan</option>';
}
} catch (error) {
console.error('Error fetching districts:', error);
}
}
async function getVillage(districtId) {
try {
const response = await fetch(`/locations/villages/district/${districtId}`);
const data = await response.json();
const villageDropdown = document.getElementById('village_code');
if (villageDropdown) {
villageDropdown.innerHTML = '<option value="">Pilih Desa/Kelurahan</option>';
data.forEach(village => {
const option = document.createElement('option');
option.value = village.code;
option.textContent = village.name;
// Cek apakah ini adalah desa yang sebelumnya dipilih
@if (isset($debitur->village_code))
if (village.code === '{{ $debitur->village_code }}') {
option.selected = true;
}
@endif
villageDropdown.appendChild(option);
});
}
} catch (error) {
console.error('Error fetching villages:', error);
}
}
</script>
@include('lpj::surveyor.js.utils')

View File

@@ -1,11 +1,10 @@
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Order Penilaian
</h3>
</div>
<div class="card-body">
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Order Penilaian</h1>
</div>
<div class="grid gap-5 grid-cols-2">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -57,10 +56,13 @@
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Identitas Debitur
</h3>
</div>
<div class="card-body">
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Identitas Debitur</h1>
</div>
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -95,83 +97,35 @@
</div>
{{-- lokasi jaminan --}}
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
</div>
<div class="card border border-agi-100 rounded-lg shadow-md">
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Data Data Jaminan</h1>
</div>
<div class="card-body">
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Data Data Jaminan</h1>
</div>
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">BPKB</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="text-2sm text-gray-700">N/A</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">STNK</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="text-2sm text-gray-700">N/A</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 text-md">Deskripsi kendaraan sesuai dokument :</label>
<div class="flex flex-wrap items-baseline w-full">
</div>
</div>
@include('lpj::component.detail-jaminan', ['status' => true])
@php
$inputDataJaminan = [
[
'label' => 'Nama pemilik',
'name' => 'nama_pemilik',
'index' => 0,
],
[
'label' => 'Nomor polisi',
'name' => 'nomor_polisi_jaminan',
'index' => 1,
],
[
'label' => 'Merek',
'name' => 'merek_jaminan',
'index' => 2,
],
[
'label' => 'jenis',
'name' => 'jenis',
'index' => 3,
],
[
'label' => 'Warna',
'name' => 'warna_jaminan',
'index' => 4,
],
[
'label' => 'Nomor Rangka/NIK/VIN',
'name' => 'nomor_rangka_jaminan',
'index' => 5,
],
[
'label' => 'Nomor Mesin',
'name' => 'nomor_mesin_jaminan',
'index' => 6,
],
[
'label' => 'Masa Berlaku STNK',
'name' => 'masa_stnk',
'index' => 7,
'value' => old('masa_stnk', $forminspeksi['masa_stnk'] ?? '')
],
[
'label' => 'Masa Berlaku Pajak',
'name' => 'masa_pajak',
'index' => 8,
'value' => old('masa_pajak', $forminspeksi['masa_pajak'] ?? '')
],
];
@endphp
@@ -182,7 +136,9 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="text-2sm text-gray-700">N/A</p>
<input type="date" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{$item['value'] ?? ''}}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@@ -193,10 +149,13 @@
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Kondisi Fisik Objek
</h3>
</div>
<div class="card-body">
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Kondisi Fisik Objek</h1>
</div>
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -627,10 +586,12 @@
<div class="card border border-agi-100 bg-white rounded-lg overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Analisis Fakta
</h3>
</div>
<div class="card-body">
<div class=" py-4 ">
<h1 class="text-md font-medium text-gray-900">Analisis Fakta</h1>
</div>
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Positif</label>

View File

@@ -1,38 +1,104 @@
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Lokasi Jaminan</h1>
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Lokasi Jaminan
</h3>
</div>
<div class="grid gap-5">
<div class="card-body">
<div class="grid gap-5">
@php
@php
$inputDataLoaksi = [
[
'label' => 'Nama Jalan',
'index' => 0,
'name' => 'nama_jalan',
'value' => old('nama_jalan', isset($forminspeksi['nama_jalan']) ? $forminspeksi['nama_jalan'] : ''),
],
[
'label' => 'Perumahan/Gang',
'index' => 1,
'name' => 'perumahan_gang',
'value' => old(
'perumahan_gang',
isset($forminspeksi['perumahan_gang']) ? $forminspeksi['perumahan_gang'] : '',
),
],
[
'label' => 'Blok/Nomor',
'index' => 2,
'name' => 'blok_nomor',
'value' => old('blok_nomor', isset($forminspeksi['blok_nomor']) ? $forminspeksi['blok_nomor'] : ''),
],
];
@endphp
$inputDataLoaksi = [];
$inputDataLoaksi = [
['label' => 'Nama Jalan', 'index' => 0, 'name' => 'nama_jalan', 'value' => old('nama_jalan', isset($analisa->analisaLingkungan) ? $analisa->analisaLingkungan->lokasi_jalan : '')],
['label' => 'Perumahan/Gang', 'index' => 1, 'name' => 'perumahan_gang', 'value' => old('lokasi_perumahan_gang', isset($analisa->analisaLingkungan) ? $analisa->analisaLingkungan->lokasi_perumahan_gang : '')],
['label' => 'Blok/Nomor', 'index' => 2, 'name' => 'blok_nomor', 'value' => old('blok_nomor', isset($analisa->analisaLingkungan) ? $analisa->analisaLingkungan->lokasi_blok_nomor : '')],
['label' => 'Desa/Kelurahan', 'index' => 3, 'name' => 'desa_kelurahan', 'value' => old('desa_kelurahan', isset($analisa->analisaLingkungan) ? $analisa->analisaLingkungan->lokasi_desa_kelurahan : '')],
['label' => 'Kecamatan', 'index' => 4, 'name' => 'kecamatan' , 'value' => old('kecamatan', isset($analisa->analisaLingkungan) ? $analisa->analisaLingkungan->lokasi_kecamatan : '')],
['label' => 'Kota/Kotamadya', 'index' => 5, 'name' => 'kota_madya', 'value' => old('kota_madya', isset($analisa->analisaLingkungan) ? $analisa->analisaLingkungan->lokasi_kota_kotamadya : '')],
['label' => 'Provinsi', 'index' => 6, 'name' => 'provinsi', 'value' => old('provinsi', isset($analisa->analisaLingkungan) ? $analisa->analisaLingkungan->lokasi_provinsi : '')],
];
@if (count($inputDataLoaksi) > 0)
@foreach ($inputDataLoaksi as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
@endphp
@if (count($inputDataLoaksi) > 0)
@foreach ($inputDataLoaksi as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
@error($item['name'])
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
@error($item['name'])
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province_code" class="form-label max-w-56">Provinsi</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="province_code" name="province_code" class="input w-full" onchange="getCity(this.value)">
<option value="">Select Province</option>
@foreach ($provinces as $province)
<option value="{{ $province->code }}"
@if (
(isset($cekAlamat['province_code']) && $cekAlamat['province_code'] == $province->code) ||
(!isset($cekAlamat['province_code']) &&
isset($debitur->province_code) &&
$debitur->province_code == $province->code)) selected @endif>
{{ $province->name }}
</option>
@endforeach
</select>
</div>
@endforeach
@endif
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="city_code" class="form-label max-w-56">Kota/Kabupaten</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="city_code" name="city_code" class="select w-full" onchange="getDistrict(this.value)">
<option value="">Pilih Kota/Kabupaten</option>
</select>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="district_code" class="form-label max-w-56">Kecamatan</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="district_code" name="district_code" class="select w-full" onchange="getVillage(this.value)">
<option value="">Pilih Kecamatan</option>
</select>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="village_code" class="form-label max-w-56">Kelurahan</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="village_code" name="village_code" class="select w-full">
<option value="">Pilih Kelurahan</option>
</select>
</div>
</div>
</div>
</div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', () => {
loadSavedLocationData();
});
</script>
@include('lpj::surveyor.js.utils')

View File

@@ -83,18 +83,21 @@
</div>
</div>
</div>
{{-- lokasi jaminan --}}
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
</div>
<div class="card border border-agi-100 rounded-lg shadow-md">
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Data Data Jaminan
</h3>
</div>
<div class="card-body">
<div class="py-4 px-6">
<h1 class="text-md font-medium text-gray-900">Data Data Jaminan</h1>
</div>
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Model</label>

View File

@@ -177,4 +177,129 @@
});
newElement.dispatchEvent(event);
}
async function loadSavedLocationData() {
const provinceCode = '{{ $cekAlamat['province_code'] ?? '' }}';
const cityCode = '{{ $cekAlamat['city_code'] ?? '' }}';
const districtCode = '{{ $cekAlamat['district_code'] ?? '' }}';
const villageCode = '{{ $cekAlamat['village_code'] ?? '' }}';
// Set province
const provinceSelect = document.getElementById('province_code');
if (provinceCode && provinceSelect) {
provinceSelect.value = provinceCode;
await getCity(provinceCode);
}
// Set city
const citySelect = document.getElementById('city_code');
if (cityCode && citySelect) {
citySelect.value = cityCode;
await getDistrict(cityCode);
}
// Set district
const districtSelect = document.getElementById('district_code');
if (districtCode && districtSelect) {
districtSelect.value = districtCode;
await getVillage(districtCode);
}
// Set village
const villageSelect = document.getElementById('village_code');
if (villageCode && villageSelect) {
villageSelect.value = villageCode;
}
}
// Modifikasi fungsi existing
async function getCity(provinceId) {
try {
const response = await fetch(`/locations/cities/province/${provinceId}`);
const data = await response.json();
const cityDropdown = document.getElementById('city_code');
if (cityDropdown) {
cityDropdown.innerHTML = '<option value="">Pilih Kota/Kabupaten</option>';
data.forEach(city => {
const option = document.createElement('option');
option.value = city.code;
option.textContent = city.name;
@if (isset($debitur->city_code))
if (city.code === '{{ $debitur->city_code }}') {
option.selected = true;
}
@endif
cityDropdown.appendChild(option);
});
// Reset dropdown kecamatan dan desa
document.getElementById('district_code').innerHTML = '<option value="">Pilih Kecamatan</option>';
document.getElementById('village_code').innerHTML = '<option value="">Pilih Kelurahan</option>';
}
} catch (error) {
console.error('Error fetching cities:', error);
}
}
// Lakukan hal serupa untuk getDistrict dan getVillage
async function getDistrict(cityId) {
try {
const response = await fetch(`/locations/districts/city/${cityId}`);
const data = await response.json();
const districtDropdown = document.getElementById('district_code');
if (districtDropdown) {
districtDropdown.innerHTML = '<option value="">Pilih Kecamatan</option>';
data.forEach(district => {
const option = document.createElement('option');
option.value = district.code;
option.textContent = district.name;
// Cek apakah ini adalah kecamatan yang sebelumnya dipilih
@if (isset($debitur->district_code))
if (district.code === '{{ $debitur->district_code }}') {
option.selected = true;
}
@endif
districtDropdown.appendChild(option);
});
// Reset dropdown desa
document.getElementById('village_code').innerHTML = '<option value="">Pilih Kelurahan</option>';
}
} catch (error) {
console.error('Error fetching districts:', error);
}
}
async function getVillage(districtId) {
try {
const response = await fetch(`/locations/villages/district/${districtId}`);
const data = await response.json();
const villageDropdown = document.getElementById('village_code');
if (villageDropdown) {
villageDropdown.innerHTML = '<option value="">Pilih Desa/Kelurahan</option>';
data.forEach(village => {
const option = document.createElement('option');
option.value = village.code;
option.textContent = village.name;
// Cek apakah ini adalah desa yang sebelumnya dipilih
@if (isset($debitur->village_code))
if (village.code === '{{ $debitur->village_code }}') {
option.selected = true;
}
@endif
villageDropdown.appendChild(option);
});
}
} catch (error) {
console.error('Error fetching villages:', error);
}
}
</script>