- ho migliorato la grafica della generazione del PDF e PDF Stampa.

This commit is contained in:
Surya Paolo
2025-05-15 19:18:50 +02:00
parent 9e0634da05
commit 685bc34bd0
16 changed files with 570 additions and 476 deletions

View File

@@ -14,6 +14,7 @@ import { shared_consts } from '@src/common/shared_vuejs';
import { CProductCard } from '@src/components/CProductCard';
import { CMyDialog } from '@src/components/CMyDialog';
import { CTitleBanner } from '@src/components/CTitleBanner';
import { CMySelect } from '@src/components/CMySelect';
import { CMyValueDb } from '@src/components/CMyValueDb';
import { CProductTable } from '@src/components/CProductTable';
@@ -57,6 +58,7 @@ export default defineComponent({
CSearchProduct,
CMyDialog,
CMyValueDb,
CTitleBanner,
},
emits: ['update:modelValue', 'updateCatalogo'],
props: {
@@ -90,7 +92,33 @@ export default defineComponent({
const heightpdf = ref('12.31');
const compressionepdf = ref('prepress');
const ismounting = ref(false)
const ismounting = ref(false);
const pdfColumns = [
{ name: 'name', label: 'Nome', field: 'name', align: 'left' },
{ name: 'pdf', label: 'PDF', field: 'pdf', align: 'left' },
{ name: 'data', label: 'Data', field: 'data', align: 'left' },
{ name: 'azioni', label: 'Azioni', field: 'azioni', align: 'center' },
];
const pdfRows = computed(() => [
{
name: 'PDF Generato',
pdf: getCatalogoByMyPage.value.pdf_generato,
data: getCatalogoByMyPage.value.data_generato,
showButton: getCatalogoByMyPage.value.data_generato !== getCatalogoByMyPage.value.data_online,
buttonLabel: 'Pubblica PDF OnLine',
action: pubblicaPDF,
},
{
name: 'PDF Generato Stampa',
pdf: getCatalogoByMyPage.value.pdf_generato_stampa,
data: getCatalogoByMyPage.value.data_generato_stampa,
showButton: getCatalogoByMyPage.value.data_generato_stampa !== getCatalogoByMyPage.value.data_online_stampa,
buttonLabel: 'Pubblica PDF Stampa',
action: pubblicaPDFStampa,
},
]);
const optDisp = ref([
{ label: 'Tutti', value: costanti.DISP.TUTTI },
@@ -585,14 +613,20 @@ export default defineComponent({
if (optcatalogo.value) {
// LINK PAGINA
if (optcatalogo.value.dimensioni_def.linkIdTemplate) {
const reccatalog = globalStore.sovrascriviPaginaDefaultFromTemplate(optcatalogo.value.dimensioni_def.linkIdTemplate, optcatalogo.value.dimensioni_def);
const reccatalog = globalStore.sovrascriviPaginaDefaultFromTemplate(
optcatalogo.value.dimensioni_def.linkIdTemplate,
optcatalogo.value.dimensioni_def
);
if (reccatalog) {
optcatalogo.value.dimensioni_def.pagina = { ...reccatalog.dimensioni_def.pagina};
optcatalogo.value.dimensioni_def.pagina = { ...reccatalog.dimensioni_def.pagina };
}
}
if (optcatalogo.value.print_linkIdTemplate) {
const reccat2 = globalStore.sovrascriviAreadistampaFromTemplate(optcatalogo.value.print_linkIdTemplate, optcatalogo.value);
const reccat2 = globalStore.sovrascriviAreadistampaFromTemplate(
optcatalogo.value.print_linkIdTemplate,
optcatalogo.value
);
if (reccat2) {
const optcatalogo2 = { ...optcatalogo.value };
// optcatalogo2.areadistampa = { ...reccat2.areadistampa};
@@ -847,7 +881,6 @@ export default defineComponent({
await productStore.loadProducts(true);
}
if (!loadpage.value) return;
generatinglist.value = true;
@@ -1333,7 +1366,7 @@ export default defineComponent({
async function mounted() {
// console.log('mounted Catalogo')
ismounting.value = true
ismounting.value = true;
generatinglist.value = true;
if (optcatalogo.value.showListaArgomenti) cat.value = tools.getCookie(getKeyCatAtLoad(), '');
@@ -1400,7 +1433,7 @@ export default defineComponent({
calcArrProducts();
ismounting.value = false
ismounting.value = false;
}
function loaddata() {
@@ -1752,13 +1785,14 @@ export default defineComponent({
if (element) {
// add this record to lista_prodotti
if (getCatalogoByMyPage.value && !getCatalogoByMyPage.value.lista_prodotti?.some((p) => p._id === element._id)) {
if (
getCatalogoByMyPage.value &&
!getCatalogoByMyPage.value.lista_prodotti?.some((p) => p._id === element._id)
) {
// inserire il record in cima
const arr = getCatalogoByMyPage.value.lista_prodotti || [];
if (where === shared_consts.WHERE_INSERT.ONTOP)
arr.unshift(element);
else if (where === shared_consts.WHERE_INSERT.ONBOTTOM)
arr.push(element)
if (where === shared_consts.WHERE_INSERT.ONTOP) arr.unshift(element);
else if (where === shared_consts.WHERE_INSERT.ONBOTTOM) arr.push(element);
updateProducts(arr);
@@ -1989,51 +2023,81 @@ export default defineComponent({
const pubblicaPDF = async () => {
const catalog = getCatalogoByMyPage.value;
const ris = await globalStore.execOnlinePDF({ id_catalog: catalog._id, stampa: false });
const confirm = await $q
.dialog({
title: 'Conferma',
message: 'Vuoi pubblicare OnLine questo PDF?',
ok: {
label: 'S ',
push: true,
},
cancel: {
label: 'Annulla',
},
})
.onOk(async () => {
if (!confirm) return;
if (ris) {
if (ris.record?.pdf_online) {
catalog.pdf_online = ris.record.pdf_online;
catalog.data_online = ris.record.data_online;
}
$q.notify({
color: 'positive',
message: 'PDF inviato ONLINE!',
icon: 'check',
const ris = await globalStore.execOnlinePDF({ id_catalog: catalog._id, stampa: false });
if (ris) {
if (ris.record?.pdf_online) {
catalog.pdf_online = ris.record.pdf_online;
catalog.data_online = ris.record.data_online;
}
$q.notify({
color: 'positive',
message: 'PDF inviato ONLINE!',
icon: 'check',
});
} else {
$q.loading.hide();
$q.notify({
color: 'negative',
message: "Errore nell'invio del PDF OnLine",
icon: 'error',
});
}
});
} else {
$q.loading.hide();
$q.notify({
color: 'negative',
message: "Errore nell'invio del PDF OnLine",
icon: 'error',
});
}
};
const pubblicaPDFStampa = async () => {
const catalog = getCatalogoByMyPage.value;
const ris = await globalStore.execOnlinePDF({ id_catalog: catalog._id, stampa: true });
const confirm = await $q
.dialog({
title: 'Conferma',
message: 'Vuoi pubblicare OnLine questo PDF di STAMPA ?',
ok: {
label: 'S ',
push: true,
},
cancel: {
label: 'Annulla',
},
})
.onOk(async () => {
const ris = await globalStore.execOnlinePDF({ id_catalog: catalog._id, stampa: true });
if (ris) {
if (ris.record.pdf_online_stampa) {
catalog.pdf_online_stampa = ris.record.pdf_online_stampa;
catalog.data_online_stampa = ris.record.data_online_stampa;
}
$q.notify({
color: 'positive',
message: 'PDF STAMPA inviato ONLINE!',
icon: 'check',
if (ris) {
if (ris.record.pdf_online_stampa) {
catalog.pdf_online_stampa = ris.record.pdf_online_stampa;
catalog.data_online_stampa = ris.record.data_online_stampa;
}
$q.notify({
color: 'positive',
message: 'PDF STAMPA inviato ONLINE!',
icon: 'check',
});
} else {
$q.loading.hide();
$q.notify({
color: 'negative',
message: "Errore nell'invio del PDF STAMPA OnLine",
icon: 'error',
});
}
});
} else {
$q.loading.hide();
$q.notify({
color: 'negative',
message: "Errore nell'invio del PDF STAMPA OnLine",
icon: 'error',
});
}
// await saveCatalog();
};
@@ -2118,6 +2182,8 @@ export default defineComponent({
pubblicaPDF,
pubblicaPDFStampa,
ismounting,
pdfColumns,
pdfRows,
};
},
});

View File

@@ -298,21 +298,142 @@
>1</q-badge
>
</q-tab>
<q-tab
v-if="!tools.isUtente()"
name="visu"
icon="fas fa-book-reader"
label="Catalogo"
>
</q-tab>
<q-tab
v-if="!tools.isUtente()"
name="genera"
icon="fas fa-file-pdf"
label="Genera PDF"
>
</q-tab>
</q-tabs>
<CTitleBanner
v-show="tabcatalogo === 'visu'"
class="q-pa-xs"
title="Genera PDF"
bgcolor="bg-blue"
clcolor="text-white"
mystyle=""
myclass="myshad"
:canopen="true"
:visible="false"
>
<div v-if="tabcatalogo === 'visu'">
<div
v-if="!tools.isUtente()"
class="row justify-center"
>
<q-btn
v-if="optcatalogo.pdf && !optcatalogo.generazionePDFInCorso"
:label="`1) PREPARA PDF`"
@click="preparePDF"
></q-btn>
<q-btn
v-if="optcatalogo.generazionePDFInCorso"
:label="`Termina Generazione`"
@click="terminaPDF"
></q-btn>
<q-btn
v-if="optcatalogo.pdf && optcatalogo.generazionePDFInCorso"
:label="`2) Genera PDF ` + getPdfFilename()"
@click="generatePDF()"
color="positive"
></q-btn>
<q-btn
v-if="tools.isAdmin() && false"
label="Debug"
@click="toggleDebug()"
:push="optcatalogo.indebug"
:color="optcatalogo.indebug ? `positive` : 'primary'"
></q-btn>
</div>
<div
v-if="getCatalogoByMyPage.pdf_generato"
class="bg-green-1 q-ma-sm q-pa-sm"
>
<div class="bg-blue-1 text-red text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF generati Temporanei</strong>
</div>
<q-table
:rows="pdfRows"
:columns="pdfColumns"
flat
bordered
dense
row-key="name"
>
<template v-slot:body-cell-pdf="props">
<q-td :props="props">
<a
v-if="props.row.pdf"
:href="tools.getHost() + props.row.pdf"
target="_blank"
class="text-bold"
>
{{ tools.getHost() + props.row.pdf }}
</a>
<span v-else>-</span>
</q-td>
</template>
<template v-slot:body-cell-data="props">
<q-td :props="props">
{{ tools.getstrDateTime(props.row.data) }}
</q-td>
</template>
<template v-slot:body-cell-azioni="props">
<q-td :props="props">
<q-btn
v-if="props.row.showButton"
rounded
color="positive"
size="md"
:label="props.row.buttonLabel"
@click="props.row.action"
/>
</q-td>
</template>
</q-table>
<div class="bg-red-1 q-pa-md q-mt-md">
<div class="bg-blue-1 text-green text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF Pubblicati OnLine</strong>
</div>
<table class="q-table q-table--flat q-table--dense q-ma-none q-pa-none">
<tbody>
<tr>
<td><strong>PDF OnLine:</strong></td>
<td>
<a
v-if="getCatalogoByMyPage.pdf_online"
:href="tools.getHost() + getCatalogoByMyPage.pdf_online"
target="_blank"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_online }}
</a>
<span v-else>-</span>
</td>
<td>{{ tools.getstrDateTime(getCatalogoByMyPage.data_online) }}</td>
</tr>
<tr>
<td><strong>PDF OnLine Stampa:</strong></td>
<td>
<a
v-if="getCatalogoByMyPage.pdf_online_stampa"
:href="tools.getHost() + getCatalogoByMyPage.pdf_online_stampa"
target="_blank"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_online_stampa }}
</a>
<span v-else>-</span>
</td>
<td>{{ tools.getstrDateTime(getCatalogoByMyPage.data_online_stampa) }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</CTitleBanner>
<q-tab-panels
v-model="tabvisu"
animated
@@ -404,119 +525,6 @@
/>-->
</q-toolbar>
</q-tab-panel>
<q-tab-panel name="genera">
<div
v-if="!tools.isUtente()"
class="row justify-center"
>
<q-btn
v-if="optcatalogo.pdf && !optcatalogo.generazionePDFInCorso"
:label="`1) PREPARA PDF`"
@click="preparePDF"
></q-btn>
<q-btn
v-if="optcatalogo.generazionePDFInCorso"
:label="`Termina Generazione`"
@click="terminaPDF"
></q-btn>
<q-btn
v-if="optcatalogo.pdf && optcatalogo.generazionePDFInCorso"
:label="`2) Genera PDF ` + getPdfFilename()"
@click="generatePDF()"
color="positive"
></q-btn>
<q-btn
v-if="tools.isAdmin() && false"
label="Debug"
@click="toggleDebug()"
:push="optcatalogo.indebug"
:color="optcatalogo.indebug ? `positive` : 'primary'"
></q-btn>
</div>
<div
v-if="getCatalogoByMyPage.pdf_generato"
class="bg-green-1 q-ma-sm q-pa-sm"
>
<div class="bg-blue-1 text-red text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF generati Temporanei</strong>
</div>
<div v-if="getCatalogoByMyPage.data_generato !== getCatalogoByMyPage.data_online">
PDF Generato:
<a
:href="tools.getHost() + getCatalogoByMyPage.pdf_generato"
target="_blank"
v-if="getCatalogoByMyPage.pdf_generato"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_generato }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getCatalogoByMyPage.data_generato) }})
<br />
<q-btn
v-if="getCatalogoByMyPage.data_generato !== getCatalogoByMyPage.data_online"
rounded
label="Pubblica PDF OnLine"
color="positive"
@click="pubblicaPDF()"
></q-btn>
</div>
<br />
<div v-if="getCatalogoByMyPage.data_generato_stampa !== getCatalogoByMyPage.data_online_stampa">
PDF Generato Stampa:
<a
:href="tools.getHost() + getCatalogoByMyPage.pdf_generato_stampa"
target="_blank"
v-if="getCatalogoByMyPage.pdf_generato_stampa"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_generato_stampa }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getCatalogoByMyPage.data_generato_stampa) }})
<br />
<q-btn
v-if="getCatalogoByMyPage.data_generato_stampa !== getCatalogoByMyPage.data_online_stampa"
rounded
label="Pubblica PDF Stampa"
color="positive"
@click="pubblicaPDFStampa()"
></q-btn>
</div>
<div class="bg-green-1">
<div class="bg-blue-1 text-green text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF Pubblicati OnLine</strong>
</div>
<div>
PDF OnLine:
<a
:href="tools.getHost() + getCatalogoByMyPage.pdf_online"
target="_blank"
v-if="getCatalogoByMyPage.pdf_online"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_online }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getCatalogoByMyPage.data_online) }})
</div>
<br />
<div>
PDF OnLine Stampa:
<a
:href="tools.getHost() + getCatalogoByMyPage.pdf_online_stampa"
target="_blank"
v-if="getCatalogoByMyPage.pdf_online_stampa"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_online_stampa }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getCatalogoByMyPage.data_online_stampa) }})
</div>
</div>
</div>
</q-tab-panel>
<q-tab-panel name="ricerca">
<div
class="col"