perbaikan back halaman di otorisator so dan penambahan nilai likuidasi di resume
This commit is contained in:
@@ -29,10 +29,23 @@
|
||||
<h3 class="card-title uppercase">
|
||||
Data Jaminan
|
||||
</h3>
|
||||
@php
|
||||
use Illuminate\Support\Facades\Route;
|
||||
@endphp
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Back
|
||||
</a>
|
||||
|
||||
@if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) &&
|
||||
Route::currentRouteName('otorisator.show'))
|
||||
<a href="{{ route('otorisator.show', ['id' => $permohonan->id, 'type' => 'Pelaporan']) }}"
|
||||
class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Back
|
||||
</a>
|
||||
@elseif (Auth::user()->hasAnyRole(['administrator', 'surveyor']) && Route::currentRouteName('penilai.show'))
|
||||
<a href="{{ route('penilai.show', $permohonan->id) }}" class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Back
|
||||
</a>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body grid gap-5 grid-cols-2">
|
||||
@@ -181,7 +194,8 @@
|
||||
<th class="text-center">Luas Tanah</th>
|
||||
<th class="text-center">Luas Bangunan</th>
|
||||
<th class="text-center">Nilai Pasar Wajar</th>
|
||||
|
||||
<th class="text-center">Nilai Likuidasi</th>
|
||||
<th class="text-center">Total Nilai Likuidasi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
@@ -202,7 +216,18 @@
|
||||
class="input number-format"></td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="fisik_nilai[]"
|
||||
class="input currency-format" value="{{ $item['nilai'] }}">
|
||||
class="input currency-format nilai-pasar"
|
||||
value="{{ $item['nilai'] }}" onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="likuidasi[]" class="input likuidasi"
|
||||
value="{{ $item['likuidasi'] ?? 0 }}"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="total_nilai_likuidasi[]"
|
||||
class="input currency-format total-likuidasi"
|
||||
value="{{ $item['total_likuidasi'] ?? 0 }}" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@@ -250,7 +275,17 @@
|
||||
<td class="text-center"> <input type="text" name="fisik_luas_bangunan[]"
|
||||
class="input number-format" value="{{ $luas_bangunan }}"></td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="fisik_nilai[]" class="input currency-format">
|
||||
<input type="text" name="fisik_nilai[]"
|
||||
class="input currency-format nilai-pasar"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="likuidasi[]" class="input likuidasi"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="total_nilai_likuidasi[]"
|
||||
class="input currency-format total-likuidasi" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@@ -271,7 +306,8 @@
|
||||
<th class="text-center">Luas Tanah</th>
|
||||
<th class="text-center">Luas Bangunan</th>
|
||||
<th class="text-center">Nilai Pasar Wajar</th>
|
||||
|
||||
<th class="text-center">Likuidasi</th>
|
||||
<th class="text-center">Total Nilai Likuidasi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
@@ -293,7 +329,18 @@
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_nilai[]"
|
||||
class="input currency-format" value="{{ $item['nilai'] }}">
|
||||
class="input currency-format nilai-pasar"
|
||||
value="{{ $item['nilai'] }}" onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_likuidasi[]"
|
||||
class="input likuidasi" value="{{ $item['likuidasi'] ?? '' }}"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_total_likuidasi[]"
|
||||
class="input currency-format total-likuidasi"
|
||||
value="{{ $item['total_likuidasi'] ?? 0 }}">
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@@ -312,8 +359,17 @@
|
||||
class="input number-format">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_nilai[]"
|
||||
class="input currency-format">
|
||||
<input type="text" name="sesuai_nilai[]" class="input currency-format"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_likuidasi[]" class="input likuidasi"
|
||||
value="{{ $item['likuidasi'] ?? 0 }}" onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_total_likuidasi[]"
|
||||
class="input currency-format total-likudasi"
|
||||
value="{{ $item['total_likuidasi'] ?? 0 }}">
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@@ -323,7 +379,7 @@
|
||||
</div>
|
||||
|
||||
@if (!empty($resumeData['tambahan']))
|
||||
@foreach ($resumeData['tambahan'] as $item)
|
||||
@foreach ($resumeData['tambahan'] as $counter => $item)
|
||||
<div id="kesimpulan" class="gird gap-5">
|
||||
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@@ -342,44 +398,50 @@
|
||||
<th class="text-center">Luas Tanah</th>
|
||||
<th class="text-center">Luas Bangunan</th>
|
||||
<th class="text-center">Nilai Pasar Wajar</th>
|
||||
|
||||
<th class="text-center"> Likuidasi</th>
|
||||
<th class="text-center">Total Nilai Likuidasi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if (!empty($resumeData['tambahan']))
|
||||
@foreach ($resumeData['tambahan'] as $item)
|
||||
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_sertifikat[]"
|
||||
class="input number-format"
|
||||
value="{{ $item['sertifikat'] }}">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_luas_tanah[]"
|
||||
class="input number-format"
|
||||
value="{{ $item['luas_tanah'] }}">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_luas_bangunan[]"
|
||||
class="input number-format"
|
||||
value="{{ $item['luas_bangunan'] }}">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_nilai[]"
|
||||
class="input currency-format" value="{{ $item['nilai'] }}">
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_sertifikat[]"
|
||||
class="input number-format" value="{{ $item['sertifikat'] }}">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_luas_tanah[]"
|
||||
class="input number-format" value="{{ $item['luas_tanah'] }}">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_luas_bangunan[]"
|
||||
class="input number-format" value="{{ $item['luas_bangunan'] }}">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_nilai[]"
|
||||
class="input currency-format nilai-pasar"
|
||||
value="{{ $item['nilai'] }}" onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_nilai_likuidasi[]"
|
||||
class="input likuidasi " value="{{ $item['likuidasi'] ?? 0 }}"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_total_likuidasi[]"
|
||||
class="input currency-format total-likuidasi"
|
||||
value="{{ $item['total_likuidasi'] ?? 0 }}">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
<div id="kesimpulans" class="grid gap-5 w-full"></div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-primary btn-sm mt-5" onclick="tambahKesimpulanNilai()">
|
||||
<i class="ki-outline ki-plus"></i>
|
||||
@@ -387,7 +449,7 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="kesimpulan" class="grid gap-5 w-full"></div>
|
||||
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
|
||||
|
||||
@@ -452,14 +514,15 @@
|
||||
@endsection
|
||||
@include('lpj::surveyor.js.utils')
|
||||
<script type="text/javascript">
|
||||
|
||||
let data = @json($resumeData ?? 0);
|
||||
console.log(data);
|
||||
let counter = 3;
|
||||
|
||||
function tambahKesimpulanNilai() {
|
||||
const kesimpulan = document.getElementById('kesimpulan');
|
||||
const kesimpulan = document.getElementById('kesimpulans');
|
||||
|
||||
kesimpulan.innerHTML += `
|
||||
<div class="grid gap-5 w-full" id="kesimpulan-${counter}">
|
||||
<div class="grid gap-5 w-full mt-5" id="kesimpulan-${counter}">
|
||||
|
||||
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@@ -467,7 +530,9 @@
|
||||
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
|
||||
|
||||
<input type="text" name="tambahan_nama_kesimpulan[]"
|
||||
class="input number-format">
|
||||
class="input number-format"
|
||||
placeholder="Masukkan Nama Kesimpulan.."
|
||||
>
|
||||
|
||||
<thead>
|
||||
|
||||
@@ -476,6 +541,8 @@
|
||||
<th class="text-center">Luas Tanah</th>
|
||||
<th class="text-center">Luas Bangunan</th>
|
||||
<th class="text-center">Nilai Pasar Wajar</th>
|
||||
<th class="text-center">Likuidasi</th>
|
||||
<th class="text-center">Total Nilai Likuidasi</th>
|
||||
<th class="text-center">Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -495,8 +562,17 @@
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_nilai[]"
|
||||
class="input currency-format">
|
||||
class="input currency-format nilai-pasar">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_nilai_likuidasi[]"
|
||||
class="input likuidasi"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_total_likuidasi[]"
|
||||
class="input currency-format total-likuidasi" >
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<button type="button" class="btn btn-danger" onclick="deleteRow(this)">Delete</button>
|
||||
</td>
|
||||
@@ -508,17 +584,17 @@
|
||||
</div>
|
||||
`;
|
||||
|
||||
const newCurrencyInputs = kesimpulan.querySelectorAll(`#kesimpulan-${counter} .currency-format`);
|
||||
newCurrencyInputs.forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
handleCurrencyInput(this);
|
||||
});
|
||||
const newCurrencyInputs = kesimpulan.querySelectorAll(`#kesimpulan-${counter} .currency-format`);
|
||||
newCurrencyInputs.forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
handleCurrencyInput(this);
|
||||
});
|
||||
|
||||
// Format initial value jika ada
|
||||
if (input.value) {
|
||||
input.value = formatCurrency(input.value);
|
||||
}
|
||||
});
|
||||
// Format initial value jika ada
|
||||
if (input.value) {
|
||||
input.value = formatCurrency(input.value);
|
||||
}
|
||||
});
|
||||
counter++;
|
||||
}
|
||||
|
||||
@@ -638,7 +714,10 @@
|
||||
sertifikat: row.querySelector('input[name="fisik_sertifikat[]"]')?.value || "",
|
||||
luas_tanah: row.querySelector('input[name="fisik_luas_tanah[]"]')?.value || "",
|
||||
luas_bangunan: row.querySelector('input[name="fisik_luas_bangunan[]"]')?.value || "",
|
||||
nilai: cleanCurrencyValue(row.querySelector('input[name="fisik_nilai[]"]')?.value || "")
|
||||
nilai: cleanCurrencyValue(row.querySelector('input[name="fisik_nilai[]"]')?.value || ""),
|
||||
likuidasi: row.querySelector('input[name="likuidasi[]"]')?.value || "",
|
||||
total_likuidasi: cleanCurrencyValue(row.querySelector(
|
||||
'input[name="total_nilai_likuidasi[]"]')?.value || "")
|
||||
};
|
||||
if (fisikData.sertifikat) {
|
||||
jsonData.fisik.push(fisikData);
|
||||
@@ -651,7 +730,10 @@
|
||||
sertifikat: row.querySelector('input[name="sesuai_sertifikat[]"]')?.value || "",
|
||||
luas_tanah: row.querySelector('input[name="sesuai_luas_tanah[]"]')?.value || "",
|
||||
luas_bangunan: row.querySelector('input[name="sesuai_luas_bangunan[]"]')?.value || "",
|
||||
nilai: cleanCurrencyValue(row.querySelector('input[name="sesuai_nilai[]"]')?.value || "")
|
||||
nilai: cleanCurrencyValue(row.querySelector('input[name="sesuai_nilai[]"]')?.value || ""),
|
||||
likuidasi: row.querySelector('input[name="sesuai_likuidasi[]"]')?.value || "",
|
||||
total_likuidasi: cleanCurrencyValue(row.querySelector(
|
||||
'input[name="sesuai_total_likuidasi[]"]')?.value || "")
|
||||
};
|
||||
if (imbData.sertifikat) {
|
||||
jsonData.sesuai_imb.push(imbData);
|
||||
@@ -665,13 +747,16 @@
|
||||
sertifikat: row.querySelector('input[name="tambahan_sertifikat[]"]')?.value || "",
|
||||
luas_tanah: row.querySelector('input[name="tambahan_luas_tanah[]"]')?.value || "",
|
||||
luas_bangunan: row.querySelector('input[name="tambahan_luas_bangunan[]"]')?.value || "",
|
||||
nilai: cleanCurrencyValue(row.querySelector('input[name="tambahan_nilai[]"]')?.value || "")
|
||||
nilai: cleanCurrencyValue(row.querySelector('input[name="tambahan_nilai[]"]')?.value || ""),
|
||||
likuidasi: row.querySelector('input[name="tambahan_nilai_likuidasi[]"]')?.value || "",
|
||||
total_likuidasi: cleanCurrencyValue(row.querySelector(
|
||||
'input[name="tambahan_total_likuidasi[]"]')?.value || "")
|
||||
};
|
||||
console.log(imbData);
|
||||
if (imbData.sertifikat) {
|
||||
jsonData.tambahan.push(imbData);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Ambil keterangan
|
||||
const keterangan = formElement.querySelector('textarea[name="keterangan"]')?.value || "";
|
||||
@@ -684,27 +769,81 @@
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Initialize currency format for existing inputs
|
||||
document.querySelectorAll('.currency-format').forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
handleCurrencyInput(this);
|
||||
});
|
||||
|
||||
// Format initial values if they exist
|
||||
if (input.value) {
|
||||
input.value = formatCurrency(input.value);
|
||||
}
|
||||
// Initialize currency format for existing inputs
|
||||
document.querySelectorAll('.currency-format').forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
handleCurrencyInput(this);
|
||||
});
|
||||
|
||||
// Format initial values if they exist
|
||||
if (input.value) {
|
||||
input.value = formatCurrency(input.value);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function handleCurrencyInput(input) {
|
||||
const value = input.value.replace(/[^\d]/g, '');
|
||||
input.value = formatCurrency(value);
|
||||
const value = input.value.replace(/[^\d]/g, '');
|
||||
input.value = formatCurrency(value);
|
||||
}
|
||||
|
||||
function cleanCurrencyValue(value) {
|
||||
return value.replace(/[^\d]/g, '');
|
||||
}
|
||||
|
||||
function calculateTotal(element) {
|
||||
|
||||
|
||||
const row = element.closest('tr');
|
||||
|
||||
const nilaiPasarInput = row.querySelector('.nilai-pasar');
|
||||
let likuidasiInput = row.querySelector('.likuidasi');
|
||||
|
||||
const totalLikuidasiInput = row.querySelector('.total-likuidasi');
|
||||
|
||||
// Bersihkan nilai dari karakter non-digit
|
||||
const cleanNilaiPasar = cleanCurrencyValue(nilaiPasarInput.value);
|
||||
const cleanLikuidasi = cleanCurrencyValue(likuidasiInput.value);
|
||||
likuidasiInput.value = formatPercentages(likuidasiInput.value);
|
||||
// Konversi ke angka
|
||||
const nilaiPasar = parseFloat(cleanNilaiPasar) || 0;
|
||||
let likuidasi = parseFloat(cleanLikuidasi) || 0;
|
||||
|
||||
// Jika nilai likuidasi lebih dari 100, reset ke nilai awal yang diinputkan
|
||||
if (likuidasi > 100) {
|
||||
likuidasi = parseFloat(cleanLikuidasi) || 0; // Reset ke nilai awal
|
||||
likuidasiInput.value = likuidasi
|
||||
}
|
||||
function cleanCurrencyValue(value) {
|
||||
return value.replace(/[^\d]/g, '');
|
||||
}
|
||||
|
||||
// Pastikan nilai likuidasi tidak melebihi 100
|
||||
likuidasi = Math.min(likuidasi, 100);
|
||||
|
||||
// Hitung total likuidasi
|
||||
const totalLikuidasi = nilaiPasar - (nilaiPasar * (likuidasi / 100));
|
||||
|
||||
// Tampilkan hasil dengan format yang benar
|
||||
totalLikuidasiInput.value = formatCurrency(totalLikuidasi.toString());
|
||||
}
|
||||
|
||||
function formatPercentages(value) {
|
||||
// Hapus semua karakter kecuali angka dan koma
|
||||
let numericValue = value.replace(/[^0-9,]/g, '');
|
||||
|
||||
// Pastikan hanya satu koma yang ada
|
||||
let parts = numericValue.split(',');
|
||||
if (parts.length > 2) {
|
||||
numericValue = parts[0] + ',' + parts[1]; // Pertahankan hanya bagian pertama dan kedua
|
||||
}
|
||||
|
||||
// Jika nilai melebihi 100, batasi menjadi 100
|
||||
let numericFloat = parseFloat(numericValue.replace(',', '.')) || 0;
|
||||
if (numericFloat > 100) {
|
||||
numericFloat = 100;
|
||||
numericValue = '100';
|
||||
}
|
||||
|
||||
// Kembalikan nilai dengan simbol %
|
||||
return numericValue;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user