- Raccolte Cataloghi corretto e migliorato.

- Bottoni "Apri" e "PDF".
This commit is contained in:
Surya Paolo
2025-07-06 23:12:56 +02:00
parent 9e95fe622b
commit e7ead2e66a
23 changed files with 612 additions and 324 deletions

View File

@@ -96,7 +96,8 @@ body {
text-align: justify;
word-wrap: break-word;
hyphens: auto; /* Sillabazione automatica */
hyphens: auto;
/* Sillabazione automatica */
}
@@ -116,7 +117,7 @@ body {
font-size: calc(17 * var(--scalecatalogx) * 1px);
height: calc(380 * var(--scalecatalogy) * 1px);
line-height: 130%;
font-weight: normal;
padding: 8px;
@@ -124,7 +125,8 @@ body {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
text-shadow: 1px 1px 2px black;
overflow: hidden; /* Nasconde il testo che esce dalla height fissa */
overflow: hidden;
/* Nasconde il testo che esce dalla height fissa */
}
@@ -240,7 +242,7 @@ body {
transform: translateY(-2px);
}
.text-link{
.text-link {
font-family: 'Arial', sans-serif;
font-size: 1.1rem;
color: #1a3f8a;
@@ -252,8 +254,13 @@ body {
color: #5c8ef4;
}
}
.clCondiz {
margin-bottom: 2px;
margin-left: 2px;
margin-right: 2px;
}
.title_Catalogo {
text-shadow: 1px 1px 2px black;
}

View File

@@ -213,7 +213,11 @@ export default defineComponent({
});
const onlyCatalogoPDF = computed(() => {
return optcatalogo.value.showOnlyCatalogoPDF;
return optcatalogo.value.showOnlyCatalogoPDF || $route.query?.hideHeader;
});
const mostraTuttiITab = computed(() => {
return !onlyCatalogoPDF.value;
});
const showListaFiltrata = computed(() => {
@@ -577,6 +581,15 @@ export default defineComponent({
}
}
function esistePagIntroduttiva(): boolean {
for (const recscheda of optcatalogo.value.arrSchede!) {
if (recscheda.scheda?.isPagIntro) {
return true;
}
}
return false;
}
const getImgIntroCatalogo = (scheda: IMyScheda): IImg => {
const trovatocatalogo = myCatalog.value;
@@ -1003,7 +1016,7 @@ export default defineComponent({
return arrris;
}
async function calcArrProducts(generalista?: boolean, salva_listatemp: boolean) {
async function calcArrProducts(generalista?: boolean, salva_listatemp?: boolean) {
// console.log('calcArrProducts (generalista=' + generalista + ')');
if (generalista) {
@@ -1139,7 +1152,7 @@ export default defineComponent({
await globalStore.saveTable(mydata);
}
function generaListaLibri() {
async function generaListaLibri() {
// chiedi prima "Sei sicuro di rigenerare il catalogo?"
let risposta_si = false;
@@ -1154,16 +1167,27 @@ export default defineComponent({
message: msg,
cancel: true,
persistent: false,
}).onOk(() => {
calcArrProducts(true);
}).onOk(async () => {
$q.loading.show({
message: `Rigenera lista in corso, attendere ...`,
});
await calcArrProducts(true);
$q.loading.hide();
});
}
function generaListaTempLibri() {
async function generaListaTempLibri() {
// chiedi prima "Sei sicuro di rigenerare il catalogo?"
let risposta_si = false;
calcArrProducts(true, true);
$q.loading.show({
message: `Mostra lista, attendere ...`,
});
await calcArrProducts(true, true);
$q.loading.hide();
}
function reSortList() {
@@ -1586,9 +1610,13 @@ export default defineComponent({
// controlla se è stato passato l'id dalla pagina:
let idcatsel = '';
if ($route.query.id) idcatsel = $route.query.id as string;
if ($route.query.stampa) instampa = $route.query.stampa === '1';
else idcatsel = optcatalogo.value.idCatalogSel;
if ($route.query.id) {
idcatsel = $route.query.id as string;
} else {
idcatsel = optcatalogo.value.idCatalogSel;
}
instampa = $route.query?.stampa === '1';
mycat = catalogStore.getCatalogById(idcatsel);
} else {
@@ -2399,7 +2427,7 @@ export default defineComponent({
generaPdfCatalogo(true);
};
const preparePDF = (instampa: boolean, senzachiedere: boolean) => {
async function preparePDF(instampa: boolean, senzachiedere = false) {
let str = '';
if (instampa) {
str = 'per la stampa';
@@ -2416,7 +2444,7 @@ export default defineComponent({
label: t('dialog.cancel'),
},
title: 'Generazione PDF',
}).onOk(async () => {
}).onOk(() => {
parti = true;
});
}
@@ -2427,8 +2455,8 @@ export default defineComponent({
: shared_consts.PREPARA_PDF.WEB;
arrProducts.value = [];
console.log('aggiorna... ');
calcArrProducts(false);
console.log('aggiorna... ', optcatalogo.value.selectedVersionStampabile);
await calcArrProducts(false);
updateCatalogoPadre();
optcatalogo.value.generazionePDFInCorso = true;
@@ -2444,10 +2472,15 @@ export default defineComponent({
optcatalogo.value.selectedVersionStampabile = instampa
? shared_consts.PREPARA_PDF.STAMPA
: shared_consts.PREPARA_PDF.WEB;
console.log(
'selectedVersionStampabile',
optcatalogo.value.selectedVersionStampabile
);
}, 500);
}, 200);
}
};
}
const terminaPDF = () => {
optcatalogo.value.generazionePDFInCorso = false;
@@ -2806,6 +2839,8 @@ export default defineComponent({
generaListaTempLibri,
globalStore,
showColorPicker,
mostraTuttiITab,
esistePagIntroduttiva,
};
},
});

View File

@@ -2,7 +2,7 @@
<q-page>
<div>
<div
v-if="ispageCatalogata && !optcatalogo.showOnlyCatalogoPDF"
v-if="ispageCatalogata && mostraTuttiITab"
class="text-bold text-h6 text-center text-blue"
>
{{ getTitoloCatalogo() }}
@@ -10,8 +10,8 @@
<div
v-if="
ispageCatalogata &&
!optcatalogo.showOnlyCatalogoPDF &&
(tools.isCollaboratore()) &&
mostraTuttiITab &&
tools.isCollaboratore() &&
myCatalog?.referenti?.length > 0
"
class="text-h7 text-center text-red q-ma-sm"
@@ -20,7 +20,7 @@
<span class="text-bold">{{ getReferentiCatalogo() }}</span>
</div>
<q-tabs
v-if="!optcatalogo.showOnlyCatalogoPDF"
v-if="mostraTuttiITab"
v-model="tabcatalogo"
dense
class="bg-green text-white"
@@ -142,7 +142,7 @@
</div>
<div
v-if="!generatinglist && !optcatalogo.showOnlyCatalogoPDF"
v-if="!generatinglist && mostraTuttiITab"
class="text-center q-py-sm prod_trov"
>
<div
@@ -183,7 +183,7 @@
</q-inner-loading>
<q-btn
v-if="!showListaFiltrata && (tools.isCollaboratore())"
v-if="!showListaFiltrata && tools.isCollaboratore()"
rounded
icon="fas fa-redo"
label="Rigenera Lista"
@@ -827,7 +827,7 @@
<q-tab-panel
name="visu"
v-if="optcatalogo"
:style="{ padding: optcatalogo.showOnlyCatalogoPDF ? '0px !important' : '' }"
:style="{ padding: !mostraTuttiITab ? '0px !important' : '' }"
>
<q-inner-loading
id="spinner"
@@ -847,7 +847,7 @@
v-if="!ismounting"
class="panel"
>
<div :class="{ container: !optcatalogo.showOnlyCatalogoPDF }">
<div :class="{ container: mostraTuttiITab }">
<q-tabs
v-model="tabvisu"
dense
@@ -1065,14 +1065,14 @@
<div
class="text-center q-py-sm prod_trov"
v-if="!optcatalogo.showOnlyCatalogoPDF"
v-if="mostraTuttiITab"
>
<div
v-if="
cat === '' &&
arrProducts.length === 0 &&
showListaFiltrata &&
!optcatalogo.showOnlyCatalogoPDF
mostraTuttiITab
"
class="row justify-center text-h6"
>
@@ -1148,6 +1148,19 @@
v-for="(product, index) in arrLoaded"
:key="index"
>
<div
v-if="!esistePagIntroduttiva() && index === 0"
class="title_Catalogo text-bold text-h6 text-center text-blue"
style="
position: absolute;
top: 30;
left: 50%;
transform: translateX(-50%);
"
>
<div>{{ getTitoloCatalogo() }}</div>
</div>
<CContainerCatalogoCard
v-if="
product.active ||
@@ -1198,6 +1211,20 @@
v-for="(recscheda, schedaIndex) in optcatalogo.arrSchede"
:key="schedaIndex"
>
<div
v-if="!esistePagIntroduttiva() && schedaIndex === 0"
class="title_Catalogo text-bold text-h6 text-center text-blue"
style="
position: absolute;
top: 30;
left: 50%;
transform: translateX(-50%);
z-Index: 1000;
"
>
<div>{{ getTitoloCatalogo() }}</div>
</div>
<div v-if="recscheda && recscheda.scheda">
<!-- Itera sulle pagine -->
<div
@@ -1255,10 +1282,7 @@
icon="fas fa-pencil-alt"
@click="showColorPicker = !showColorPicker"
color="primary"
style="
position: absolute;
z-index: 1000;
"
style="position: absolute; z-index: 1000"
></q-btn>
<q-dialog

View File

@@ -387,7 +387,7 @@ export default defineComponent({
id_raccolta: getRaccoltaCataloghiByMyPage.value._id,
stampa,
metti_online: false,
dir_out: '/upload/raccolte/',
dir_out: '/upload/raccoltacataloghis/' + getRaccoltaCataloghiByMyPage.value._id + '/',
};
const ris = await globalStore.execJoinPDF({ options });

View File

@@ -19,10 +19,9 @@
>
</q-tab>
<q-tab
v-if="!tools.isUtente()"
name="genera"
icon="fas fa-book"
label="Genera"
label="PDF Completo"
>
</q-tab>
</q-tabs>
@@ -34,6 +33,7 @@
>
<q-tab-panel name="lista">
<q-btn
v-if="!tools.isUtente()"
rounded
label="Aggiungi"
icon="fas fa-plus"
@@ -52,204 +52,363 @@
</q-tab-panel>
<q-tab-panel name="genera">
<div
v-if="!tools.isUtente()"
class="column justify-center"
>
<div>
<div class="row justify-center">
<q-btn
rounded
label="Rigenera TUTTI i Cataloghi"
icon="fas fa-redo"
color="primary"
@click="rigeneraTUTTI()"
></q-btn>
<q-btn
rounded
label="Online TUTTI i Cataloghi"
icon="fas fa-redo"
color="positive"
@click="onlineTUTTI()"
></q-btn>
</div>
<br />
<div class="row justify-center">
<q-btn
rounded
label="Rigenera TUTTI per STAMPA"
icon="fas fa-print"
color="primary"
@click="rigeneraTUTTI(true)"
></q-btn>
<q-btn
rounded
label="Online TUTTI per STAMPA"
icon="fas fa-redo"
color="positive"
@click="onlineTUTTI(true)"
></q-btn>
</div>
<div
v-if="getRaccoltaCataloghiByMyPage.pdf_online"
class="catalog-download-section"
>
<q-card class="catalog-card shadow-8">
<q-card-section class="text-center">
<q-img
:src="
tools.getFullFileName(
[getRaccoltaCataloghiByMyPage.foto_raccolta],
'raccoltacataloghis',
'',
getRaccoltaCataloghiByMyPage._id
)
"
class="catalog-image"
height="128px"
fit="contain"
style="max-width: 100%"
/>
<div class="text-h5 q-mt-sm q-mb-xs">
{{ `${getRaccoltaCataloghiByMyPage.title}` }}
</div>
<div class="text-caption text-grey-8 text-center q-mt-sm">
<div class="row items-center justify-center">
<q-icon
name="fas fa-file-pdf"
size="sm"
/>
<span class="q-ml-xs">
{{
getRaccoltaCataloghiByMyPage.pdf_online
? `${getRaccoltaCataloghiByMyPage.pdf_online_size} MB`
: ''
}}
</span>
<q-icon
name="fas fa-clock"
size="sm"
class="q-ml-sm"
/>
<span class="q-ml-xs"> Pubblicato il </span>
<br /><br />
<span class="q-ml-xs">
{{
getRaccoltaCataloghiByMyPage.pdf_online
? tools.getstrDate(getRaccoltaCataloghiByMyPage.data_online)
: ''
}}
</span>
</div>
</div>
</q-card-section>
<div class="row justify-center">
<q-btn
v-if="!optcatalogo.generazionePDFInCorso"
:label="`GENERA PDF ` + getTitoloRaccolta()"
color="red"
@click="preparePDF(false)"
rounded
></q-btn>
<q-btn
v-if="!optcatalogo.generazionePDFInCorso"
:label="`GENERA PDF ${getTitoloRaccolta()} per STAMPA`"
@click="preparePDF(true)"
color="orange"
rounded
></q-btn>
<q-btn
v-if="optcatalogo.generazionePDFInCorso"
:label="`Termina Generazione`"
@click="terminaPDF"
></q-btn>
<q-card-actions
align="center"
class="q-pb-md"
>
<q-btn
v-if="getRaccoltaCataloghiByMyPage.pdf_online"
unelevated
rounded
color="primary"
icon="fas fa-file-pdf"
:label="`Apri PDF`"
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage.pdf_online,
getRaccoltaCataloghiByMyPage.data_online
? new Date(getRaccoltaCataloghiByMyPage.data_online).getTime()
: undefined
)
"
size="md"
class="hover-lift"
/>
<q-btn
v-if="getRaccoltaCataloghiByMyPage.pdf_online"
unelevated
rounded
color="primary"
icon="download"
:label="`Scarica PDF`"
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage.pdf_online,
getRaccoltaCataloghiByMyPage.data_online
? new Date(getRaccoltaCataloghiByMyPage.data_online).getTime()
: undefined
)
"
download
size="md"
class="hover-lift"
/>
</q-card-actions>
</q-card>
</div>
<div
v-if="
tools.isCollStampa() && getRaccoltaCataloghiByMyPage.pdf_online_stampa
"
class="catalog-download-section"
>
<q-card class="catalog-card shadow-8">
<q-card-section class="text-center">
<q-img
:src="
tools.getFullFileName(
[getRaccoltaCataloghiByMyPage.foto_raccolta],
'raccoltacataloghis',
'',
getRaccoltaCataloghiByMyPage._id
)
"
class="catalog-image"
height="128px"
fit="contain"
style="max-width: 100%"
/>
<div class="text-h5 q-mt-sm q-mb-xs">Versione per STAMPA</div>
<div class="text-caption text-grey-8 text-center q-mt-sm">
<div class="row items-center justify-center">
<q-icon
name="fas fa-print"
size="sm"
/>
<span class="q-ml-xs">
{{
getRaccoltaCataloghiByMyPage.pdf_online
? `${getRaccoltaCataloghiByMyPage.pdf_online_stampa_size} MB`
: ''
}}
</span>
<q-icon
name="fas fa-clock"
size="sm"
class="q-ml-sm"
/>
<span class="q-ml-xs"> Pubblicato il </span>
<span class="q-ml-xs">
{{
getRaccoltaCataloghiByMyPage.pdf_online_stampa
? tools.getstrDate(
getRaccoltaCataloghiByMyPage.data_online_stampa
)
: ''
}}
</span>
</div>
</div>
</q-card-section>
<q-card-actions
align="center"
class="q-pb-md"
>
<q-btn
v-if="getRaccoltaCataloghiByMyPage.pdf_online_stampa"
unelevated
rounded
color="primary"
icon="fas fa-file-pdf"
:label="`Apri PDF`"
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage.pdf_online_stampa,
getRaccoltaCataloghiByMyPage.data_online_stampa
? new Date(
getRaccoltaCataloghiByMyPage.data_online_stampa
).getTime()
: undefined
)
"
size="md"
class="hover-lift"
/>
<q-btn
v-if="getRaccoltaCataloghiByMyPage.pdf_online_stampa"
unelevated
rounded
color="primary"
icon="download"
:label="`Scarica PDF`"
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage.pdf_online_stampa,
getRaccoltaCataloghiByMyPage.data_online_stampa
? new Date(
getRaccoltaCataloghiByMyPage.data_online_stampa
).getTime()
: undefined
)
"
download
size="md"
class="hover-lift"
/>
</q-card-actions>
</q-card>
</div>
</div>
</div>
<div
v-if="getRaccoltaCataloghiByMyPage?.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 v-if="!tools.isUtente()">
<div
v-if="!tools.isUtente()"
class="column justify-center"
>
<div class="row justify-center">
<q-btn
rounded
label="Rigenera TUTTI i Cataloghi"
icon="fas fa-redo"
color="primary"
@click="rigeneraTUTTI()"
></q-btn>
<q-btn
rounded
label="Online TUTTI i Cataloghi"
icon="fas fa-redo"
color="positive"
@click="onlineTUTTI()"
></q-btn>
</div>
<br />
<div class="row justify-center">
<q-btn
rounded
label="Rigenera TUTTI per STAMPA"
icon="fas fa-print"
color="primary"
@click="rigeneraTUTTI(true)"
></q-btn>
<q-btn
rounded
label="Online TUTTI per STAMPA"
icon="fas fa-redo"
color="positive"
@click="onlineTUTTI(true)"
></q-btn>
</div>
<br /><br />
</div>
<div>
<div class="row justify-center">
<q-btn
v-if="!optcatalogo.generazionePDFInCorso"
:label="`GENERA PDF ` + getTitoloRaccolta()"
color="red"
@click="preparePDF(false)"
rounded
></q-btn>
<q-btn
v-if="!optcatalogo.generazionePDFInCorso"
:label="`GENERA PDF ${getTitoloRaccolta()} per STAMPA`"
@click="preparePDF(true)"
color="orange"
rounded
></q-btn>
<q-btn
v-if="optcatalogo.generazionePDFInCorso"
:label="`Termina Generazione`"
@click="terminaPDF"
></q-btn>
</div>
</div>
<div
v-if="
getRaccoltaCataloghiByMyPage?.data_generato !==
getRaccoltaCataloghiByMyPage?.data_online
"
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato"
class="bg-green-1 q-ma-sm q-pa-sm"
>
PDF Generato:
<a
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato
)
"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato"
class="text-bold"
>
{{
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato
)
}}
</a>
<span v-else>-</span>
<br />(del
{{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_generato) }})
<br />
<q-btn
<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="
getRaccoltaCataloghiByMyPage?.data_generato !==
getRaccoltaCataloghiByMyPage?.data_online
"
rounded
label="Pubblica PDF OnLine"
color="positive"
@click="pubblicaPDF()"
></q-btn>
</div>
<br />
<div
v-if="
getRaccoltaCataloghiByMyPage?.data_generato_stampa !==
getRaccoltaCataloghiByMyPage?.data_online_stampa
"
>
PDF Generato Stampa:
<a
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato_stampa
)
"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato_stampa"
class="text-bold"
>
{{
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato_stampa
)
}}
</a>
<span v-else>-</span>
<br />(del
{{
tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_generato_stampa)
}})
PDF Generato:
<a
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato
)
"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato"
class="text-bold"
>
{{
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato
)
}}
</a>
<span v-else>-</span>
<br />(del
{{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_generato) }})
<br />
<q-btn
v-if="
getRaccoltaCataloghiByMyPage?.data_generato !==
getRaccoltaCataloghiByMyPage?.data_online
"
rounded
label="Pubblica PDF OnLine"
color="positive"
@click="pubblicaPDF()"
></q-btn>
</div>
<br />
<q-btn
<div
v-if="
getRaccoltaCataloghiByMyPage?.data_generato_stampa !==
getRaccoltaCataloghiByMyPage?.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 v-if="getRaccoltaCataloghiByMyPage?.data_online">
PDF OnLine:
>
PDF Generato Stampa:
<a
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_online
getRaccoltaCataloghiByMyPage?.pdf_generato_stampa
)
"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_online"
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato_stampa"
class="text-bold"
>
{{
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_online
)
}}
</a>
<span v-else>-</span>
<br />(del
{{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_online) }})
</div>
<br />
<div v-if="getRaccoltaCataloghiByMyPage?.data_online_stampa">
> PDF OnLine Stampa:
<a
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_online_stampa
)
"
target="_blank"
class="text-bold"
v-if="getRaccoltaCataloghiByMyPage?.pdf_online_stampa"
>
{{
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_online_stampa
getRaccoltaCataloghiByMyPage?.pdf_generato_stampa
)
}}
</a>
<span v-else>-</span>
<br />(del
{{
tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_online_stampa)
tools.getstrDateTime(
getRaccoltaCataloghiByMyPage?.data_generato_stampa
)
}})
<br />
<q-btn
v-if="
getRaccoltaCataloghiByMyPage?.data_generato_stampa !==
getRaccoltaCataloghiByMyPage?.data_online_stampa
"
rounded
label="Pubblica PDF Stampa"
color="positive"
@click="pubblicaPDFStampa()"
></q-btn>
</div>
</div>
</div>