Files
myprojplanet_vite/src/views/ecommerce/catalogo/catalogo.vue
2025-05-15 21:41:25 +02:00

1094 lines
40 KiB
Vue
Executable File

<template>
<q-page>
<div>
<div
v-if="ispageCatalogata"
class="text-bold text-h6 text-center text-blue"
>
{{ getTitoloCatalogo() }}
</div>
<div
v-if="
ispageCatalogata && (tools.isEditor() || tools.isCommerciale()) && getCatalogoByMyPage?.referenti.length > 0
"
class="text-h7 text-center text-red q-ma-sm"
>
{{ $t('cataloglist.referenti') }}: <span class="text-bold">{{ getReferentiCatalogo() }}</span>
</div>
<q-tabs
v-model="tabcatalogo"
dense
class="bg-green text-white"
>
<!--<q-toggle
v-model="show_hide"
push
label="Modifica"
rounded
glossy
toggle-color="primary"
></q-toggle>
-->
<q-tab
v-if="lista_prodotti"
name="lista"
icon="fas fa-list"
label="Lista"
>
</q-tab>
<q-tab
name="visu"
icon="fas fa-book"
label="Catalogo"
>
</q-tab>
<q-tab
v-if="tools.isGrafico()"
name="sfondo"
icon="fas fa-image"
label="Sfondo"
>
</q-tab>
<q-tab
v-if="tools.isGrafico()"
name="pagine"
icon="fas fa-book-reader"
label="Pagine"
>
</q-tab>
<q-tab
v-if="!tools.isUtente()"
name="tutorial"
icon="fas fa-info"
label="Tutorial"
>
</q-tab>
<q-tab
v-if="tools.isAdmin()"
name="opzioni"
icon="fas fa-save"
label="Avanzati"
>
</q-tab>
</q-tabs>
<q-tab-panels
v-model="tabcatalogo"
animated
class=""
keep-alive
>
<q-tab-panel
name="lista"
v-if="optcatalogo"
>
<q-spinner-hourglass
v-if="generatinglist"
size="4em"
/>
<q-inner-loading
id="spinner"
:showing="generatinglist"
>
</q-inner-loading>
<q-tab-panel
v-if="showListaFiltrata"
name="categorie"
>
<div class="row justify-center q-mx-auto bg-blue-1">
<div
class="categories"
v-if="optcatalogo.showListaArgomenti"
>
<div
v-for="(reccat, index) in getCatProds()"
:key="index"
class="category"
:class="{ category_sel: cat === reccat.value }"
@click="cat = reccat.value"
>
{{ reccat.label }}
</div>
</div>
<div
class="categories"
v-else-if="optcatalogo.showListaCollane"
>
<div
v-for="(reccollana, index) in getCollane()"
:key="index"
class="category"
:class="{ category_sel: collana === reccollana.value }"
@click="collana = reccollana.value"
>
{{ reccollana.label }}
</div>
</div>
</div>
<div
v-if="!generatinglist"
class="text-center q-py-sm prod_trov"
>
<div
v-if="cat === '' && arrProducts.length === 0 && showListaFiltrata"
class="row justify-center text-h6"
>
Seleziona {{ filtroStrApplicato }}
</div>
<span
v-else
v-show="productStore.getNumProdTot() !== arrProducts.length"
>{{
t('ecomm.prodotti_trovati', {
qta: arrProducts.length,
qtatot: productStore.getNumProdTot(),
})
}}</span
>
</div>
</q-tab-panel>
<div>
<q-inner-loading
id="spinner"
:showing="generatinglist"
>
<q-spinner-tail
color="primary"
size="4em"
>
</q-spinner-tail>
</q-inner-loading>
<q-btn
v-if="!showListaFiltrata"
rounded
icon="fas fa-redo"
label="Rigenera Lista"
color="primary"
@click="rigeneraLibri = true"
></q-btn>
<!--<q-bcctn
v-if="!showListaFiltrata"
rounded
label="Riordina"
color="primary"
@click="reSortList"
></q-btn>-->
<q-btn
v-if="!showListaFiltrata"
rounded
label="Aggiungi"
icon="fas fa-plus"
color="primary"
@click="clickaddNewBook()"
></q-btn>
<div
class="q-ma-sm row"
style="border-radius: 10px; border: 1px solid #ccc"
v-if="showListaFiltrata"
>
<q-select
v-model="optrigenera.visibilitaDisp"
:options="optDisp"
emit-value
map-options
option-value="value"
option-label="label"
style="min-width: 200px"
label="Visibilità"
class="q-my-md"
outlined
dense
/>
<q-select
v-model="optrigenera.stato"
:options="optStato"
emit-value
map-options
style="min-width: 200px"
option-value="value"
option-label="label"
label="Stato"
class="q-my-md"
outlined
dense
/>
</div>
</div>
<CProductTable
v-if="!ismounting && lista_prodotti?.length > 0"
:lista_prodotti="lista_prodotti"
@update:lista_prodotti="updateProducts"
:optcatalogo="optcatalogo"
table="products"
@rigenera="generaListaLibri()"
/>
</q-tab-panel>
<q-tab-panel
name="visu"
v-if="optcatalogo"
>
<q-inner-loading
id="spinner"
:showing="generatinglist"
>
</q-inner-loading>
<div class="row justify-center q-mx-auto bg-blue-1">
<div class="text-center">
<q-spinner
v-if="ismounting"
color="primary"
size="3em"
:thickness="2"
/>
</div>
<div
v-if="!ismounting"
class="panel"
>
<div class="container">
<q-tabs
v-model="tabvisu"
dense
class="bg-indigo text-white"
>
<q-tab
v-if="showListaFiltrata"
name="categorie"
icon="fas fa-folder-open"
label="Categorie"
>
<q-badge
v-if="cat"
color="red"
floating
>1</q-badge
>
</q-tab>
<q-tab
v-if="showListaFiltrata && false"
name="autori"
icon="fas fa-user"
label="Autori"
>
<q-badge
v-if="filter.author"
color="red"
floating
>1</q-badge
>
</q-tab>
<q-tab
v-if="showListaFiltrata && false"
name="ricerca"
icon="fas fa-search"
label="Cerca"
>
<q-badge
v-if="getSearchText()"
color="red"
floating
>1</q-badge
>
</q-tab>
</q-tabs>
<CTitleBanner
v-show="tabcatalogo === 'visu' && !tools.isUtente()"
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">
<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>
</div>
</CTitleBanner>
<q-tab-panels
v-model="tabvisu"
animated
class=""
keep-alive
>
<q-tab-panel
v-if="showListaFiltrata"
name="categorie"
>
<div class="row justify-center q-mx-auto bg-blue-1">
<div
class="categories"
v-if="optcatalogo.showListaArgomenti"
>
<div
v-for="(reccat, index) in getCatProds()"
:key="index"
class="category"
:class="{ category_sel: cat === reccat.value }"
@click="cat = reccat.value"
>
{{ reccat.label }}
</div>
</div>
<div
class="categories"
v-else-if="optcatalogo.showListaCollane"
>
<div
v-for="(reccollana, index) in getCollane()"
:key="index"
class="category"
:class="{ category_sel: collana === reccollana.value }"
@click="collana = reccollana.value"
>
{{ reccollana.label }}
</div>
</div>
</div>
</q-tab-panel>
<q-tab-panel name="autori">
<q-toolbar>
<q-select
class="full-width"
v-model="filter.author"
:options="optauthors"
label="Autore"
placeholder="Tutti"
emit-value
map-options
use-input
hide-selected
fill-input
stack-label
use-chips
filled
rounded
@filter="filterFn"
>
<template v-slot:append>
<q-icon
v-if="filter.author !== ''"
class="cursor-pointer"
name="clear"
@click.stop.prevent="filter.author = ''"
/> </template
></q-select>
<!--<q-select
v-model="filter.publisher"
:options="publishers"
label="editore"
placeholder="Tutti"
dense
/>
<q-select
v-model="filter.type"
:options="types"
label="Tipo"
placeholder="Tutti"
dense
/>
<q-select
v-model="filter.ageGroup"
:options="ageGroups"
label="Fascia d'età"
placeholder="Tutte"
dense
/>-->
</q-toolbar>
</q-tab-panel>
<q-tab-panel name="ricerca">
<div
class="col"
v-for="(item, index) in searchList"
:key="index"
>
<CMySelect
:col="fieldsTable.getColByColumns(mycolumns, item.key)"
v-if="
item.type === costanti.FieldType.select || item.type === costanti.FieldType.select_by_server
"
:label="item.value && item.value._id > 0 ? undefined : labelcombo(item)"
v-model:value="item.value"
:addall="item.addall"
:addnone="item.addnone"
:addlast="true"
:tablesel="item.type === costanti.FieldType.select_by_server ? item.tablesel : ''"
:pickup="item.type === costanti.FieldType.select_by_server"
:label-color="$q.dark.isActive ? 'white' : 'black'"
myclass="comboselector"
color="primary"
:dense="true"
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:options="valoriopt(item, false)"
:filter="item.filter"
:filter_extra="item.filter_extra"
style="font-size: 0.8rem !important"
:useinput="item.useinput && item.type !== costanti.FieldType.select_by_server"
>
</CMySelect>
</div>
</q-tab-panel>
</q-tab-panels>
<div
v-if="showListaFiltrata"
class="row justify-center q-mx-auto"
>
<q-select
v-model="filter.sort_field"
dense
:options="shared_consts.ORDINAMENTO_CATALOGHI_PUBBLICO"
label="Ordinamento"
placeholder=""
emit-value
map-options
filled
rounded
></q-select>
<q-select
v-model="filter.sort_dir"
dense
:options="shared_consts.ORDINAMENTO_DIREZIONE"
label="Direzione"
placeholder=""
emit-value
map-options
filled
rounded
></q-select>
</div>
<div class="text-center q-py-sm prod_trov">
<div
v-if="cat === '' && arrProducts.length === 0 && showListaFiltrata"
class="row justify-center text-h6"
>
Seleziona {{ filtroStrApplicato }}
</div>
<span
v-else
v-show="productStore.getNumProdTot() !== arrProducts.length"
>{{
t('ecomm.prodotti_trovati', {
qta: arrProducts.length,
qtatot: productStore.getNumProdTot(),
})
}}</span
>
</div>
<div
class="row justify-around"
v-if="tools.isManager() && false"
>
<q-toggle
v-if="!optcatalogo.pdf"
v-model="show_hide"
push
label="Mostra Nascosti"
rounded
glossy
toggle-color="primary"
></q-toggle>
</div>
<div
v-if="optcatalogo"
id="pdf-content"
ref="pdfContent"
:class="{ 'fixed-width': true }"
>
<div
v-if="
optcatalogo.first_page &&
optcatalogo.first_page.text_html &&
optcatalogo.first_page.text_html.contenuto
"
:style="generateStyleByPageDim(optcatalogo, optcatalogo.first_page)"
>
<div v-html="optcatalogo.first_page.text_html.contenuto"></div>
</div>
<div :style="generateStyleCatalogo(optcatalogo)">
<div class="flex-container-book">
<q-infinite-scroll
v-if="!optcatalogo.pdf && arrLoaded && arrLoaded.length > 0 && !ismounting"
ref="myinfscroll"
:initial-index="0"
@load="onLoadScroll"
:offset="2000"
debounce="200"
class="row items-start"
style="place-content: center"
>
<div
v-for="(product, index) in arrLoaded"
:key="index"
>
<CContainerCatalogoCard
v-if="
product.active ||
(show_hide &&
product.productInfo.productTypes.includes(shared_consts.PRODUCTTYPE.PRODUCT))
"
:id="product._id"
:product="product"
:complete="false"
:cosa="cosa"
v-model="optcatalogo"
:idPage="idPage"
:options="{
show_short_descr: false,
show_price: false,
show_cat: false,
quante_col: 'c2',
in_3d: false,
}"
@selauthor="selauthor"
/>
<CProductCard
v-else-if="product.active || show_hide"
:id="product._id"
:product="product"
:complete="false"
:cosa="cosa"
/>
</div>
<template v-slot:loading>
<div class="text-center">
<q-spinner-dots
color="primary"
size="40px"
/>
</div>
</template>
</q-infinite-scroll>
<div
v-else
class="cards-container"
>
<!-- Itera sulle schede -->
<div
v-for="(recscheda, schedaIndex) in optcatalogo.arrSchede"
:key="schedaIndex"
>
<div v-if="recscheda && recscheda.scheda">
<!-- Itera sulle pagine -->
<div
v-for="(page, pageIndex) in groupedPages(recscheda)"
:key="pageIndex"
>
<div
v-if="containsProducts(page)"
:class="{
'fixed-width': true,
'fixed-height': true,
'card-page': false,
'pdf-section': true,
}"
:style="generateStylePageScheda(optcatalogo, recscheda.scheda)"
>
<div
v-if="recscheda.scheda.dimensioni.pagina?.testo_title?.contenuto"
:style="{
'--scalecatalog': tools.getScale(optcatalogo),
'line-height': recscheda.scheda.dimensioni.pagina?.testo_title?.font.line_height,
display: 'flex',
flexDirection: 'column',
position: 'relative', // Posizionamento assoluto
top: '0', // Posiziona in alto
left: '50%', // Centra orizzontalmente
transform: 'translateX(-50%)', // Correzione per centrare perfettamente
width: '100%', // Assicura che il contenitore occupi l'intera larghezza
textAlign: 'center', // Allinea il testo al centro
zIndex: '10', // Assicura che il testo sia visibile sopra altri elementi
}"
>
<div
v-html="getTitoloPagina(null, recscheda)"
style="display: flex; flex-direction: row; justify-content: center"
></div>
</div>
<div
v-if="recscheda.scheda.dimensioni.pagina?.testo_up?.contenuto"
:style="{
'--scalecatalog': tools.getScale(optcatalogo),
'line-height': recscheda.scheda.dimensioni.pagina?.testo_up?.font.line_height,
display: 'flex',
flexDirection: 'column',
}"
>
<div
v-html="getTestoIntroduttivo(recscheda)"
style="display: flex; flex-direction: row"
></div>
</div>
<!-- Itera sulle righe di ogni pagina -->
<div
v-for="(row, rowIndex) in page"
:key="`${pageIndex}-${rowIndex}`"
class="column"
>
<div
class="card-row"
:style="getStyleRow(recscheda)"
>
<!-- Itera sui prodotti di ogni riga -->
<div class="row justify-center">
<!--<span v-if="optcatalogo.indebug">{{getStyleSchedaProdotto(recscheda)}}</span>-->
<div
v-for="(prod, colIndex) in row"
:key="`${pageIndex}-${rowIndex}-${colIndex}`"
class="flex-item-book"
:style="getStyleSchedaProdotto(recscheda)"
>
<CContainerCatalogoCard
v-if="prod && prod.active"
:id="prod._id"
:product="prod"
:complete="false"
:cosa="cosa"
v-model="optcatalogo"
:idPage="idPage"
:scheda="recscheda.scheda"
:options="{
show_short_descr: false,
show_price: false,
show_cat: false,
quante_col: 'c2',
in_3d: false,
}"
@selauthor="selauthor"
/>
<CProductCard
v-else-if="prod && (prod.active || show_hide)"
:id="prod._id"
:complete="false"
:cosa="cosa"
/>
</div>
<!-- Prodotti singoli -->
</div>
<!-- Separatore -->
<div
v-if="recscheda.scheda?.show_separatore && rowIndex !== page.length - 1"
class="text-center"
:style="getStyleRow(recscheda)"
>
<q-separator
inset
:size="tools.adjustSize(optcatalogo, '1px')"
></q-separator>
</div>
</div>
<!-- Card Row -->
</div>
<!-- Righe (row) -->
</div>
</div>
<!-- Pagine -->
</div>
</div>
</div>
</div>
</div>
<div
v-if="
optcatalogo.last_page &&
optcatalogo.last_page.text_html &&
optcatalogo.last_page.text_html.contenuto
"
:style="generateStyleByPageDim(optcatalogo, optcatalogo.last_page)"
>
<div v-html="optcatalogo.last_page.text_html.contenuto"></div>
</div>
</div>
</div>
</div>
</div>
</q-tab-panel>
<q-tab-panel name="sfondo">
<div class="row justify-center q-mx-auto bg-blue-1">
<div>
Sfondo:
{{
tools.getDirUpload() + costanti.DIR_CATALOGO + optcatalogo.dimensioni_def?.pagina.imgsfondo?.imagefile
}}
</div>
<q-img
v-if="optcatalogo.dimensioni_def?.pagina.imgsfondo?.imagefile"
:src="
tools.getDirUpload() + costanti.DIR_CATALOGO + optcatalogo.dimensioni_def?.pagina.imgsfondo?.imagefile
"
>
</q-img>
</div>
</q-tab-panel>
<q-tab-panel name="pagine">
<div class="row justify-center q-mx-auto bg-blue-1">
<div>
Prima Pagina:
{{ tools.getDirUpload() + costanti.DIR_CATALOGO + optcatalogo.first_page.imgsfondo.imagefile }}
</div>
<q-img :src="tools.getDirUpload() + costanti.DIR_CATALOGO + optcatalogo.first_page.imgsfondo.imagefile">
</q-img>
<div>
Ultima Pagina:
{{ tools.getDirUpload() + costanti.DIR_CATALOGO + optcatalogo.last_page.imgsfondo.imagefile }}
</div>
<q-img :src="tools.getDirUpload() + costanti.DIR_CATALOGO + optcatalogo.last_page.imgsfondo.imagefile">
</q-img>
</div>
</q-tab-panel>
<q-tab-panel name="tutorial">
<div class="q-pa-md q-ma-sm text-center">
<q-btn
rounded
label="Apri Tutorial"
color="primary"
@click="naviga('/tutorial')"
></q-btn>
</div>
</q-tab-panel>
<q-tab-panel name="opzioni">
<pre>
<strong>PASSI DA COMPIERE PER FARE AGGIORNAMENTI :</strong>
1. Ottenere il file delle descrizioni aggiornato (esportare tutti i prodotti presenti su GruppoMacro - XML)
<a
href="https://www.gruppomacro.com/admin/prodotti_esportazione.php"
target="_blank"
>Esporta Prodotti (XML)</a>
2. Eseguire "IMPORTA DESCRIZIONI E LINK DA SITO GRUPPOMACRO (XML)" - importa_descrizioni_e_link.xml
3. Visualizza:
<a
href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-articles-sales"
target="_blank"
>Articoli Venduti</a>
e controlla se tutto ok
<br>
4 . GENERARE UN CATALOGO cliccando su "CREA CATALOGO ..."
8. <a
href="https://gruppomacro.app/admin/convertPDF"
target="_blank"
>CONVERTI IL PDF</a
>
ALTRO:
<a
href="http://vps-88271abb.vps.ovh.net/apimacro/public/getstruct/123123456"
target="_blank"
>Struttura Campi GM</a
>
<a
href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-table/T_WEB_Argomenti/100"
target="_blank"
>Tabella Argomenti </a>
<a
href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-lista-ordini-totale/2024-11-01"
target="_blank"
>Lista Ordini Libri - Totale Venduti (scegli data)</a
>
<a
href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-ordini-test/1000"
target="_blank"
>Lista di Tutti gli Ordini (mostra gli ultimi N)</a
>
<br />
</pre>
</q-tab-panel>
</q-tab-panels>
</div>
</q-page>
<CMyDialog
v-model="rigeneraLibri"
title="Rigenera Lista"
class="q-ma-sm"
>
<q-card class="q-ma-sm">
<q-card-section>
<div style="width: 800px; margin: 0 auto">
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.idTipoFormato')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="idTipoFormato"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="t_web_tipiformatos"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<div class="row">
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
table="catalogs"
:title="t('cataloglist.op_andor')"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="condition_andor"
debounce="1000"
:type="costanti.FieldType.op_andor"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.argomenti')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="argomenti"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="catprods"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.collane')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="idCollane"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="collanastotali"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.editore')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="editore"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="publishers_totali"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
</div>
<div>Filtra per Disponibilità Magazzino:</div>
<q-btn-toggle
v-model="optrigenera.visibilitaDisp"
toggle-color="green"
class="q-my-md"
:options="optDisp"
>
</q-btn-toggle>
<div>Modalità di Creazione:</div>
<q-btn-toggle
v-model="optrigenera.rig_mod"
toggle-color="red"
class="q-my-md"
:options="optRigeneraModalita"
>
</q-btn-toggle>
</div>
</q-card-section>
<q-card-actions align="center">
<q-btn
rounded
label="Rigenera"
color="primary"
icon="fas fa-redo"
@click="generaListaLibri()"
class="float-right"
></q-btn>
<q-btn
rounded
label="Chiudi"
outlined
class="float-right"
@click="rigeneraLibri = false"
></q-btn>
</q-card-actions>
</q-card>
</CMyDialog>
<CMyDialog
v-model="addnewProd"
title="Aggiungi"
class="q-ma-md"
>
<CSearchProduct
:visu="shared_consts.VISU_SEARCHPROD_MODE.INSERT"
@insert="addProductToList"
@close="addnewProd = false"
nameLinkTemplate="SEARCH_Prima"
:empty="true"
table="products"
>
</CSearchProduct>
</CMyDialog>
</template>
<script lang="ts" src="./catalogo.ts"></script>
<style lang="scss" scoped>
@import './catalogo.scss';
</style>