mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
zip pdf download
This commit is contained in:
@ -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))
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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()
|
||||
})
|
||||
}
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
margin: 0;
|
||||
}
|
||||
@media print {
|
||||
body,
|
||||
html {
|
||||
.page,
|
||||
{
|
||||
width: 210mm;
|
||||
height: 297mm;
|
||||
max-width: 210mm;
|
||||
@ -22,7 +22,8 @@ html {
|
||||
max-height: 297mm;
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
|
||||
.page {
|
||||
border: 0px solid;
|
||||
padding: 10px;
|
||||
margin : 10px;
|
||||
|
||||
Reference in New Issue
Block a user