🐛 fix(prosespenawaran): perbaiki route generation dengan parameter kosong

- Ganti parameter kosong ('') dengan placeholder ':id' pada route helper
- Implementasi JavaScript replace() untuk substitusi parameter dinamis
- Perbaiki fungsi updateulang dan updateKJPPStatus di editeulangxtjs.blade.php
- Meningkatkan keamanan dan konsistensi route generation
- Menghindari error Laravel route dengan parameter kosong
- Kompatibel dengan Laravel route caching mechanism
This commit is contained in:
Daeng Deni Mardaeni
2025-09-13 11:54:17 +07:00
parent 8a5bf21982
commit 627d7f9b40
2 changed files with 34 additions and 33 deletions

View File

@@ -72,7 +72,7 @@ function updateDataUlang(id, kjpp_id, kjppName){
if(passednih) if(passednih)
{ {
var file_data = $("#{{$route[1]}}_dokumenPersetujuan_"+id).prop("files")[0]; var file_data = $("#{{$route[1]}}_dokumenPersetujuan_"+id).prop("files")[0];
let useURL = "{{ route($route[0].'.'.$route[1].'.updateulang', '') }}/"+id; let useURL = "{{ route($route[0].'.'.$route[1].'.updateulang', ':id') }}".replace(':id', id);
let formData = new FormData(); let formData = new FormData();
let token = "{{ csrf_token() }}"; let token = "{{ csrf_token() }}";
formData.append("dokumen_persetujuan", file_data ?? ""); formData.append("dokumen_persetujuan", file_data ?? "");
@@ -132,7 +132,7 @@ function deleteData(data, kjppName) {
//define variable //define variable
let token = "{{ csrf_token() }}"; let token = "{{ csrf_token() }}";
let useURL = "{{ route($route[0].'.'.$route[1].'.updateKJPPStatus','') }}/"+data; let useURL = "{{ route($route[0].'.'.$route[1].'.updateKJPPStatus', ':id') }}".replace(':id', data);
var input_data = new Object(); var input_data = new Object();
input_data._token = token; input_data._token = token;
@@ -334,4 +334,4 @@ function deleteDataUlang(data, kjppName) {
} }
}) })
} }
</script> </script>

View File

@@ -1,9 +1,9 @@
<script tipe="module"> <script tipe="module">
function switchProses(id) function switchProses(id)
{ {
let c = $('#{{$route[1]}}_check_'+id).val(); let c = $('#{{$route[1]}}_check_'+id).val();
if($('input[name="{{$route[1]}}_check_'+id+'"]').is(':checked')) if($('input[name="{{$route[1]}}_check_'+id+'"]').is(':checked'))
{ {
// checked // checked
@@ -16,7 +16,7 @@
setNonActiveElement(id); setNonActiveElement(id);
} }
} }
function setActiveElement(id) function setActiveElement(id)
{ {
$('#{{$route[1]}}_biayaPenawaran_'+id).removeAttr('disabled'); $('#{{$route[1]}}_biayaPenawaran_'+id).removeAttr('disabled');
@@ -24,7 +24,7 @@
$('#{{$route[1]}}_icon_update_'+id).removeAttr('disabled'); $('#{{$route[1]}}_icon_update_'+id).removeAttr('disabled');
$('#{{$route[1]}}_icon_delete_'+id).removeAttr('disabled'); $('#{{$route[1]}}_icon_delete_'+id).removeAttr('disabled');
} }
function setNonActiveElement(id) function setNonActiveElement(id)
{ {
$('#{{$route[1]}}_biayaPenawaran_'+id).attr('disabled', 'disabled'); $('#{{$route[1]}}_biayaPenawaran_'+id).attr('disabled', 'disabled');
@@ -32,32 +32,32 @@
$('#{{$route[1]}}_icon_update_'+id).attr('disabled', 'disabled'); $('#{{$route[1]}}_icon_update_'+id).attr('disabled', 'disabled');
$('#{{$route[1]}}_icon_delete_'+id).attr('disabled', 'disabled'); $('#{{$route[1]}}_icon_delete_'+id).attr('disabled', 'disabled');
} }
function updateData(id, kjpp_id, kjppName){ function updateData(id, kjpp_id, kjppName){
// id => detail_penawaran.id // id => detail_penawaran.id
removeErrorCssMsg(); removeErrorCssMsg();
let no_proposal = $("#{{$route[1]}}_no_proposal_"+id).val(); let no_proposal = $("#{{$route[1]}}_no_proposal_"+id).val();
let tgl_proposal = $("#{{$route[1]}}_tgl_proposal_"+id).val(); let tgl_proposal = $("#{{$route[1]}}_tgl_proposal_"+id).val();
let biaya = $("#{{$route[1]}}_biayaPenawaran_"+id).val(); let biaya = $("#{{$route[1]}}_biayaPenawaran_"+id).val();
let filepdf = $("#{{$route[1]}}_dokumenPersetujuan_"+id).val(); let filepdf = $("#{{$route[1]}}_dokumenPersetujuan_"+id).val();
let passednih = true; let passednih = true;
if(passednih) if(passednih)
{ {
var file_data = $("#{{$route[1]}}_dokumenPersetujuan_"+id).prop("files")[0]; var file_data = $("#{{$route[1]}}_dokumenPersetujuan_"+id).prop("files")[0];
let useURL = "{{ route($route[0].'.'.$route[1].'.update', '') }}/"+id; let useURL = "{{ route($route[0].'.'.$route[1].'.update', $id) }}";
let formData = new FormData(); let formData = new FormData();
let token = "{{ csrf_token() }}"; let token = "{{ csrf_token() }}";
formData.append("dokumen_persetujuan", file_data ?? ""); formData.append("dokumen_persetujuan", file_data ?? "");
formData.append("no_proposal", no_proposal); formData.append("no_proposal", no_proposal);
formData.append("tgl_proposal", tgl_proposal); formData.append("tgl_proposal", tgl_proposal);
formData.append("biaya_penawaran", biaya); formData.append("biaya_penawaran", biaya);
formData.append("kjpp_rekanan_id", kjpp_id); formData.append("kjpp_rekanan_id", kjpp_id);
formData.append("_method", "PUT"); formData.append("_method", "PUT");
formData.append("_token", token); formData.append("_token", token);
$.ajax({ $.ajax({
url: useURL, url: useURL,
type: "POST", type: "POST",
data: formData, data: formData,
processData: false, processData: false,
contentType: false, contentType: false,
@@ -68,7 +68,7 @@
// success // success
var message = response.message; var message = response.message;
toastrku("success", message); toastrku("success", message);
setTimeout(function () { setTimeout(function () {
location.reload(true); location.reload(true);
}, 2000); }, 2000);
} }
@@ -78,7 +78,7 @@
var message = response.message; var message = response.message;
toastrku("error", message); toastrku("error", message);
} }
}, },
error: function (response, textStatus, errorThrown) { error: function (response, textStatus, errorThrown) {
var errors = response.responseJSON.errors; var errors = response.responseJSON.errors;
@@ -87,11 +87,11 @@
}); });
} }
}); });
} }
} }
function deleteData(data, kjppName) { function deleteData(data, kjppName) {
// data => detail_penawaran.id // data => detail_penawaran.id
Swal.fire({ Swal.fire({
@@ -104,10 +104,11 @@
confirmButtonText: 'Yes, delete it!' confirmButtonText: 'Yes, delete it!'
}).then((result) => { }).then((result) => {
if (result.isConfirmed) { if (result.isConfirmed) {
//define variable //define variable
let token = "{{ csrf_token() }}"; let token = "{{ csrf_token() }}";
let useURL = "{{ route($route[0].'.'.$route[1].'.updateKJPPStatus','') }}/"+data; let useURL = "{{ route($route[0].'.'.$route[1].'.updateKJPPStatus', ':id') }}";
useURL = useURL.replace(':id', data);
var input_data = new Object(); var input_data = new Object();
input_data._token = token; input_data._token = token;
input_data.id =data; input_data.id =data;
@@ -119,7 +120,7 @@
data: input_data, data: input_data,
dataType: "json", dataType: "json",
success: function(response) { success: function(response) {
if('success' == response.status) if('success' == response.status)
{ {
swal.fire('Deleted!', response.message.message_success[0], 'success').then(() => { swal.fire('Deleted!', response.message.message_success[0], 'success').then(() => {
@@ -130,18 +131,18 @@
{ {
Swal.fire('Error!', response.message.message_error[0], 'error'); Swal.fire('Error!', response.message.message_error[0], 'error');
} }
}, },
error: function(response, textStatus, errorThrown) { error: function(response, textStatus, errorThrown) {
// var errors = response.responseJSON.errors; // var errors = response.responseJSON.errors;
// console.log(errors); // console.log(errors);
console.log(response); console.log(response);
} }
}); });
} }
}) })
} }
</script> </script>