2025-08-08 16:16:10 +07:00

201 lines
7.1 KiB
JavaScript

function initDt(selectDate = []){
let selectedRows = [];
datatablePekerjaan.bootstrapTable('destroy');
datatablePekerjaan.bootstrapTable({
url: "/dashboard/datatable/pekerjaan",
method:'get',
queryParams: function(params) {
params.tanggal = selectDate;
return params;
},
showColumns: true,
showColumnsToggleAll: true,
showRefresh: true,
sortable: true,
search: true,
searchOnEnterKey: false,
searchHighlight: true,
pagination: true,
serverSide:true,
pageSize: 10,
pageList: [10, 20, 30, 40, 50, 100, 200],
cookie: true,
cookieIdTable: "datatablePekerjaan",
icons: {
refresh: "fas fa-sync-alt", // atau ganti ke icon lain
columns: "fas fa-th-large"
},
columns: [
{
title: '<input type="checkbox" id="selectAll" />',
field: 'order_id',
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
return `<input type="checkbox" class="rowCheckbox" data-order_detail_id="${row.order_id}" data-jenis_customer="${row?.order?.jenis_customer}" />`
}
},
{
title: "Action",
field:'order_id',
formatter: function(value, row) {
let buttons = ''
if(row?.status_order !== "Selesai"){
buttons += `
<button class="btn btn-sm btn-success me-2" onclick="approve(this)" data-id="${row.order_detail_id}" data-nama_pemesan="${row?.order?.nama_pemesan}" data-no_order="${row?.order?.no_order}" data-menu="${row?.menu?.nama_menu || row?.paket_menu?.nama_paket}" data-jenis_customer="${row?.order?.jenis_customer}" data-type="${row?.type}">
<i class="fa fa-check me-1"></i>
</button>
`
}
buttons += `
<button class="btn btn-sm btn-primary me-2" onclick="detailOrder(${row?.order_detail_id})">
<i class="fa-solid fa-circle-info"></i>
</button>
`
buttons += `
<button class="btn btn-sm btn-primary me-2" onclick="cetak('${row?.order_detail_id}', '${row?.order?.jenis_customer}')">
<i class="fa-solid fa-qrcode"></i>
</button>
`
return `
<div class="d-flex space-x">
${buttons}
</div>
`;
}
},
{
title: "No.Order",
field: 'order.no_order',
sortable: true,
},
{
title: "Status",
field: 'order_detail_id',
sortable: true,
formatter: function(value, row) {
const status = row?.status_order;
let badgeClass = 'bg-secondary';
if (status === "Selesai") {
badgeClass = 'bg-success text-dark';
} else{
badgeClass = 'bg-primary';
}
return `
<span class="badge ${badgeClass} px-3 py-1">${status}</span>
`;
},
},
{
title: "Menu",
field: 'order_detail_id',
formatter:function(value, row){
return row?.menu?.nama_menu || row?.paket_menu?.nama_paket
},
sortable: true,
},
{
title: "Pemesan",
field:'order.nama_pemesan',
formatter: function(value, row){
return `<ul class="list-unstyled mb-0 text-nowrap;">
<li><i class="fa fa-user me-1 text-muted"></i> <strong> ${row?.order.nama_pemesan ?? '-'} </strong></li>
<li><i class="fa fa-tag me-1 text-muted"></i> ${row?.order?.jenis_customer ?? '-'}</li>
</ul>`
},
sortable: true,
},
{
title: "Tgl Antar",
field: 'tgl_antar',
},
{
title: "Waktu Pemesanan",
field: 'type',
sortable: true,
},
{
title: "Catatan",
field: 'catatan',
sortable: true,
},
],
});
$(document).on('click', '#selectAll', function () {
selectedRows = [];
const isChecked = this.checked;
$('.rowCheckbox').each(function () {
this.checked = isChecked;
let order_detail_id = $(this).data('order_detail_id');
let jenis_customer = $(this).data('jenis_customer');
if (isChecked) {
selectedRows.push({ order_detail_id, jenis_customer });
}
});
$('#buttonLabel').prop("disabled", !isChecked);
});
$(document).on('change', '.rowCheckbox', function () {
let order_detail_id = $(this).data('order_id');
let jenis_customer = $(this).data('jenis_customer');
let isChecked = this.checked;
if (isChecked) {
if (!selectedRows.find(r => r.order_detail_id === order_detail_id)) {
selectedRows.push({ order_detail_id, jenis_customer });
}
} else {
selectedRows = selectedRows.filter(r => r.order_detail_id !== order_detail_id);
}
$('#buttonLabel').prop("disabled", selectedRows.length === 0);
});
window.getSelectedRowsForLabel = () => selectedRows;
}
function labelDownload(){
const selected = (typeof getSelectedRowsForLabel === 'function') ? getSelectedRowsForLabel() : [];
if (selected.length === 0) {
alert("Silakan pilih setidaknya satu item terlebih dahulu.");
return;
}
fetch('/dashboard/pekerjaan/label', {
method:'POST',
headers:{
'Content-Type' : 'application/json',
'X-CSRF-TOKEN': document.querySelector('input[name="_token"]').value,
},
body: JSON.stringify({ items : selected})
})
.then(response => {
if (!response.ok) throw new Error('Gagal download label');
return response.blob();
})
.then(res => {
console.log(res);
})
.catch(error => {
alert('gagal mengunduh');
console.error(error);
})
}
function cetak(id, jenis_customer){
console.log(id, jenis_customer);
}