zip pdf download

This commit is contained in:
amazuecos
2025-05-05 20:59:57 +02:00
parent 24fc4ff1c1
commit caac71a48d
10 changed files with 605 additions and 77 deletions

View File

@ -12,10 +12,11 @@ class OrdenTrabajoDatatable {
this.datatableRevisionComerical = this.item.find("#ot-datatable-revision-com")
this.columnIdIndex = 1;
this.datatableColumns = [
{ data: 'id', searchable: false, sortable: false },
{ data: 'pdf_check', searchable: false, sortable: false, render: d => `<input class="form-check-input pdf-check" data-id="${d}" type="checkbox">` },
{ data: 'id', searchable: false, sortable: true },
{ data: 'pedido_id', searchable: false, sortable: false },
{ data: 'fecha_encuadernado_at', searchable: false, sortable: false },
{ data: 'cliente_nombre', searchable: false, sortable: false },
@ -51,8 +52,27 @@ class OrdenTrabajoDatatable {
}
]
}
actualDatatable(event) {
let order = $(event.currentTarget).data('order')
console.log(order)
this.focusDatatable = this.datatableOrder[order]
}
events(){
this.datatableOrder = [
this.datatableN,
this.datatableP,
this.datatableW,
this.datatableFP,
this.datatableFO,
this.datatableRC,
this.datatableProduccion,
this.datatable
]
this.focusDatatable = this.datatableN
$('.nav-link').on('click', this.actualDatatable.bind(this))
}
init() {
this.datatableItem.DataTable({
this.datatable = this.datatableItem.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
@ -60,9 +80,10 @@ class OrdenTrabajoDatatable {
bottomStart: 'info',
bottomEnd: 'paging'
},
order: [[this.columnIdIndex, 'desc']],
columnDefs: [
{ className: 'dt-center', targets: '_all' },
],
serverSide: true,
pageLength: 25,
@ -71,14 +92,14 @@ class OrdenTrabajoDatatable {
},
columns: this.datatableColumns,
ajax: '/produccion/ordentrabajo/datatable',
createdRow: (row,data,dataIndex) => {
$(row).css("border-left",`10px solid ${data.logo.color}`)
$(row).css("border-right",`10px solid ${data.logo.color}`)
createdRow: (row, data, dataIndex) => {
$(row).css("border-left", `10px solid ${data.logo.color}`)
$(row).css("border-right", `10px solid ${data.logo.color}`)
}
});
}
initPendientes() {
this.datatablePendientesItem.DataTable({
this.datatableP = this.datatablePendientesItem.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
@ -86,6 +107,7 @@ class OrdenTrabajoDatatable {
bottomStart: 'info',
bottomEnd: 'paging'
},
order: [[this.columnIdIndex, 'desc']],
columnDefs: [
{ className: 'dt-center', targets: '_all' },
@ -97,15 +119,15 @@ class OrdenTrabajoDatatable {
},
columns: this.datatableColumns,
ajax: '/produccion/ordentrabajo/datatable_pendientes',
createdRow: (row,data,dataIndex) => {
$(row).css("border-left",`20px solid ${data.logo.color}`)
$(row).css("border-right",`20px solid ${data.logo.color}`)
createdRow: (row, data, dataIndex) => {
$(row).css("border-left", `20px solid ${data.logo.color}`)
$(row).css("border-right", `20px solid ${data.logo.color}`)
}
});
}
initFerroPendiente() {
this.datatableFerroPendienteItem.DataTable({
this.datatableFP = this.datatableFerroPendienteItem.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
@ -115,23 +137,24 @@ class OrdenTrabajoDatatable {
},
serverSide: true,
pageLength: 25,
order: [[this.columnIdIndex, 'desc']],
columnDefs: [
{ className: 'dt-center', targets: '_all' },
],
language: {
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
},
columns: this.datatableColumns,
ajax: '/produccion/ordentrabajo/datatable_ferro_pendiente',
createdRow: (row,data,dataIndex) => {
$(row).css("border-left",`20px solid ${data.logo.color}`)
$(row).css("border-right",`20px solid ${data.logo.color}`)
createdRow: (row, data, dataIndex) => {
$(row).css("border-left", `20px solid ${data.logo.color}`)
$(row).css("border-right", `20px solid ${data.logo.color}`)
}
});
}
initFerroOk() {
this.datatableFerroOkItem.DataTable({
this.datatableFO = this.datatableFerroOkItem.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
@ -140,9 +163,10 @@ class OrdenTrabajoDatatable {
bottomEnd: 'paging'
},
serverSide: true,
order: [[this.columnIdIndex, 'desc']],
columnDefs: [
{ className: 'dt-center', targets: '_all' },
],
pageLength: 25,
language: {
@ -150,14 +174,14 @@ class OrdenTrabajoDatatable {
},
columns: this.datatableColumns,
ajax: '/produccion/ordentrabajo/datatable_ferro_ok',
createdRow: (row,data,dataIndex) => {
$(row).css("border-left",`20px solid ${data.logo.color}`)
$(row).css("border-right",`20px solid ${data.logo.color}`)
createdRow: (row, data, dataIndex) => {
$(row).css("border-left", `20px solid ${data.logo.color}`)
$(row).css("border-right", `20px solid ${data.logo.color}`)
}
});
}
initNews() {
this.datatableNews.DataTable({
this.datatableN = this.datatableNews.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
@ -166,9 +190,10 @@ class OrdenTrabajoDatatable {
bottomEnd: 'paging'
},
serverSide: true,
order: [[this.columnIdIndex, 'desc']],
columnDefs: [
{ className: 'dt-center', targets: '_all' },
],
pageLength: 25,
language: {
@ -176,14 +201,16 @@ class OrdenTrabajoDatatable {
},
columns: this.datatableColumns,
ajax: '/produccion/ordentrabajo/datatable_news',
createdRow: (row,data,dataIndex) => {
$(row).css("border-left",`20px solid ${data.logo.color}`)
$(row).css("border-right",`20px solid ${data.logo.color}`)
createdRow: (row, data, dataIndex) => {
$(row).css("border-left", `20px solid ${data.logo.color}`)
$(row).css("border-right", `20px solid ${data.logo.color}`)
}
});
this.focusDatatable = this.datatableN
}
initWaiting() {
this.datatableWaiting.DataTable({
this.datatableW = this.datatableWaiting.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
@ -192,9 +219,10 @@ class OrdenTrabajoDatatable {
bottomEnd: 'paging'
},
serverSide: true,
order: [[this.columnIdIndex, 'desc']],
columnDefs: [
{ className: 'dt-center', targets: '_all' },
],
pageLength: 25,
language: {
@ -202,14 +230,14 @@ class OrdenTrabajoDatatable {
},
columns: this.datatableColumns,
ajax: '/produccion/ordentrabajo/datatable_waiting',
createdRow: (row,data,dataIndex) => {
$(row).css("border-left",`20px solid ${data.logo.color}`)
$(row).css("border-right",`20px solid ${data.logo.color}`)
createdRow: (row, data, dataIndex) => {
$(row).css("border-left", `20px solid ${data.logo.color}`)
$(row).css("border-right", `20px solid ${data.logo.color}`)
}
});
}
initProd() {
this.datatableProd.DataTable({
this.datatableProduccion = this.datatableProd.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
@ -218,9 +246,10 @@ class OrdenTrabajoDatatable {
bottomEnd: 'paging'
},
serverSide: true,
order: [[this.columnIdIndex, 'desc']],
columnDefs: [
{ className: 'dt-center', targets: '_all' },
],
pageLength: 25,
language: {
@ -228,14 +257,14 @@ class OrdenTrabajoDatatable {
},
columns: this.datatableColumns,
ajax: '/produccion/ordentrabajo/datatable_prod',
createdRow: (row,data,dataIndex) => {
$(row).css("border-left",`20px solid ${data.logo.color}`)
$(row).css("border-right",`20px solid ${data.logo.color}`)
createdRow: (row, data, dataIndex) => {
$(row).css("border-left", `20px solid ${data.logo.color}`)
$(row).css("border-right", `20px solid ${data.logo.color}`)
}
});
}
initRevisionComercial() {
this.datatableRevisionComerical.DataTable({
this.datatableRC = this.datatableRevisionComerical.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
@ -244,9 +273,10 @@ class OrdenTrabajoDatatable {
bottomEnd: 'paging'
},
serverSide: true,
order: [[this.columnIdIndex, 'desc']],
columnDefs: [
{ className: 'dt-center', targets: '_all' },
],
pageLength: 25,
language: {
@ -254,12 +284,18 @@ class OrdenTrabajoDatatable {
},
columns: this.datatableColumns,
ajax: '/produccion/ordentrabajo/datatable_revision_com',
createdRow: (row,data,dataIndex) => {
$(row).css("border-left",`20px solid ${data.logo.color}`)
$(row).css("border-right",`20px solid ${data.logo.color}`)
createdRow: (row, data, dataIndex) => {
$(row).css("border-left", `20px solid ${data.logo.color}`)
$(row).css("border-right", `20px solid ${data.logo.color}`)
}
});
}
getSelectIDs() {
return this.focusDatatable.rows((idx, data, node) => {
return $(node).find('input[type="checkbox"]').prop('checked');
}).data().toArray().map((e) => parseInt(e.id))
}
}

View File

@ -1,4 +1,6 @@
import OrdenTrabajoDatatable from '../../components/datatables/otDatatable.js'
import Ajax from '../../components/ajax.js'
import { alertError, alertSuccessMessage } from '../../components/alerts/sweetAlert.js'
$(function () {
const otDatatable = new OrdenTrabajoDatatable($("#ots-datatables-container"))
@ -9,5 +11,59 @@ $(function () {
otDatatable.initNews()
otDatatable.initProd()
otDatatable.initWaiting()
otDatatable.events()
// otDatatable.initRevisionComercial()
})
$("#btn-download-pdf-zip").on('click', async () => {
let zip = new JSZip()
let ordenesTrabajo = otDatatable.getSelectIDs()
for (let element of ordenesTrabajo) {
try {
// Create hidden iframe
Notiflix.Block.circle('.section-block',{opacity : 1});
const response = await getPdf(element);
var opt = {
margin: 2,
filename: $(response).find(".pdf-wrapper").data("id") + ".pdf",
image: { type: 'jpeg', quality: 1 },
html2canvas: { scale: 4, logging: false },
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
};
let pdf = await html2pdf().set(opt).from(response).outputPdf('blob');
zip.file(opt.filename, pdf);
} catch (error) {
}
};
if (ordenesTrabajo.length > 0) {
Notiflix.Block.remove('.section-block');
zip.generateAsync({ type: "blob" }).then(function (blob) {
const now = new Date();
const pad = (n) => String(n).padStart(2, '0');
const timestamp = `${now.getFullYear()}_${pad(now.getMonth() + 1)}_${pad(now.getDate())}_${pad(now.getHours())}${pad(now.getMinutes())}${pad(now.getSeconds())}`;
const filename = `ordenes_trabajo_${timestamp}.zip`;
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = filename;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
});
}else{
alertError('Seleccione una OT para descargar').fire()
}
})
})
const getPdf = (otId) => {
return new Promise((resolve, reject) => {
new Ajax('/produccion/ordentrabajo/pdf/content/' + otId, null, null, resolve, reject).get()
})
}