From b7ecd60fc354d7692b18fb9a8fc04ef5302e17f7 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Thu, 15 May 2025 22:37:39 +0200 Subject: [PATCH] fix altro --- src/components/CProductTable/CProductTable.ts | 37 ++++-- .../CProductTable/CProductTable.vue | 5 +- src/store/CatalogStore.ts | 21 ++-- src/views/ecommerce/catalogo/catalogo.ts | 119 +++++++++--------- src/views/ecommerce/catalogo/catalogo.vue | 58 ++++----- 5 files changed, 129 insertions(+), 111 deletions(-) diff --git a/src/components/CProductTable/CProductTable.ts b/src/components/CProductTable/CProductTable.ts index 29fff0b4..e1d4614c 100755 --- a/src/components/CProductTable/CProductTable.ts +++ b/src/components/CProductTable/CProductTable.ts @@ -3,7 +3,9 @@ import draggable from 'vuedraggable'; import { tools } from '@tools'; +import { useRouter } from 'vue-router' import { useGlobalStore } from '@src/store/globalStore'; +import { useProducts } from '@src/store/productStore'; import { CMyValueDb } from '@src/components/CMyValueDb'; import { CSchedaProdotto } from '@src/components/CSchedaProdotto'; @@ -56,6 +58,10 @@ export default defineComponent({ // Copia locale della lista_prodotti per manipolazione interna const internalProducts = ref([...(props.lista_prodotti || [])]); + const productStore = useProducts() + + const $router = useRouter() + const { t } = useI18n(); const globalStore = useGlobalStore(); @@ -107,7 +113,7 @@ export default defineComponent({ const allColumns = ref([]); - const isVisibleEditBtn = ref(false) + const isVisibleEditBtn = ref(false); // Colonne della tabella const allColumns_Raccolta = ref([ @@ -210,10 +216,10 @@ export default defineComponent({ if (props.table === 'products') { allColumns.value = allColumns_Catalog.value; - isVisibleEditBtn.value = true + isVisibleEditBtn.value = true; } else if (props.table === 'catalogs') { allColumns.value = allColumns_Raccolta.value; - isVisibleEditBtn.value = false + isVisibleEditBtn.value = false; } optionscatalogo.value = { @@ -277,7 +283,11 @@ export default defineComponent({ return tools.getstrDate(catalog.data_online_stampa); case 'image': return catalog.foto_collana?.imagefile - ? tools.getFullFileNameByImageFile(shared_consts.TABLES_CATALOG, catalog.foto_collana?.imagefile, catalog._id) + ? tools.getFullFileNameByImageFile( + shared_consts.TABLES_CATALOG, + catalog.foto_collana?.imagefile, + catalog._id + ) : ''; } } else { @@ -609,9 +619,18 @@ export default defineComponent({ } function showProduct(element: any) { - selProd.value = element; + if (isProduct()) { + selProd.value = element; - showProd.value = true; + showProd.value = true; + } else if (isCatalog()) { + // Apri la pagina del catalogo + if (element.idPageAssigned) { + const mypagepath = productStore.getPathByPage(element.idPageAssigned); + // fai il route sulla pagina myfilename + $router.push(`/${mypagepath}`); + } + } } function modifyProduct(element: any) { @@ -788,7 +807,10 @@ export default defineComponent({ } function isProduct() { - return props.table === 'products' + return props.table === 'products'; + } + function isCatalog() { + return props.table === 'catalogs'; } onMounted(mounted); @@ -835,6 +857,7 @@ export default defineComponent({ getImageByElement, isVisibleEditBtn, isProduct, + isCatalog, }; }, }); diff --git a/src/components/CProductTable/CProductTable.vue b/src/components/CProductTable/CProductTable.vue index 200e9542..22d409f0 100755 --- a/src/components/CProductTable/CProductTable.vue +++ b/src/components/CProductTable/CProductTable.vue @@ -116,9 +116,8 @@ : element.productInfo?.image_link " style="width: 50px; height: 50px" - class="rounded-borders" - :style="isProduct() ? 'cursor: pointer' : ''" - @click="isProduct() ? showProduct(element) : null" + class="rounded-borders cursor-pointer" + @click="showProduct(element)" /> diff --git a/src/store/CatalogStore.ts b/src/store/CatalogStore.ts index b103f2cb..a4aedea7 100755 --- a/src/store/CatalogStore.ts +++ b/src/store/CatalogStore.ts @@ -26,9 +26,12 @@ export const useCatalogStore = defineStore('CatalogStore', { }), getters: { - getCatalogById: (state) => (id: string) => { + getCatalogById: (state) => (id: string): ICatalog => { return state.catalogs.find((cat: ICatalog) => cat._id === id) || null; }, + getCatalogByIdPageAssigned: (state) => (idPage: string): ICatalog => { + return state.catalogs.find((cat: ICatalog) => cat.idPageAssigned === idPage) || null; + }, }, actions: { @@ -37,10 +40,10 @@ export const useCatalogStore = defineStore('CatalogStore', { let cat = this.getCatalogById(id); if (!cat || !cat.prodotti_caricati_inmem) { // Carica dal server - const ris = await this.loadCatalogById(id); - if (ris) { + const catalog = await this.loadCatalogById(id); + if (catalog) { // Aggiorna lo store con i dati ricevuti - this.updateDataCatalog(ris); + this.updateDataCatalog(catalog); cat = this.getCatalogById(id); } } @@ -57,7 +60,7 @@ export const useCatalogStore = defineStore('CatalogStore', { console.log('catalogs', res.data.catalog); if (res.data.catalog) { // console.log('RISULTANTE CATEGORIES DAL SERVER = ', res.data.categories) - return res.data.product; + return res.data.catalog; } return null; }) @@ -89,12 +92,12 @@ export const useCatalogStore = defineStore('CatalogStore', { } }, - updateDataCatalog(res: any) { - if (res && res.data.catalog) { + updateDataCatalog(catalog: ICatalog) { + if (catalog) { // Update catalog from server - const indelem = this.catalogs.findIndex((catalog: ICatalogCompleto) => catalog._id === res.data.catalog._id); + const indelem = this.catalogs.findIndex((catalog: ICatalogCompleto) => catalog._id === catalog._id); if (indelem >= 0) { - this.catalogs[indelem] = { ...res.data.catalog }; + this.catalogs[indelem] = { ...catalog }; this.catalogs[indelem].prodotti_caricati_inmem = true; } } diff --git a/src/views/ecommerce/catalogo/catalogo.ts b/src/views/ecommerce/catalogo/catalogo.ts index 649de9f7..aa0b9210 100755 --- a/src/views/ecommerce/catalogo/catalogo.ts +++ b/src/views/ecommerce/catalogo/catalogo.ts @@ -80,6 +80,8 @@ export default defineComponent({ const $q = useQuasar(); const { t } = useI18n(); + const myCatalog = ref(null as ICatalog); + const rigeneraLibri = ref(false); const search = ref(''); @@ -104,17 +106,17 @@ export default defineComponent({ 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, + pdf: myCatalog.value.pdf_generato, + data: myCatalog.value.data_generato, + showButton: myCatalog.value.data_generato !== myCatalog.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, + pdf: myCatalog.value.pdf_generato_stampa, + data: myCatalog.value.data_generato_stampa, + showButton: myCatalog.value.data_generato_stampa !== myCatalog.value.data_online_stampa, buttonLabel: 'Pubblica PDF Stampa', action: pubblicaPDFStampa, }, @@ -148,14 +150,8 @@ export default defineComponent({ }); const optcatalogo = ref({ ...props.modelValue }); - - const lista_prodotti = computed(() => { - const arr = catalogStore.catalogs?.find((catalog: ICatalog) => catalog.idPageAssigned === props.idPage); - return arr?.lista_prodotti; - }); - const ispageCatalogata = computed(() => { - return !!getCatalogoByMyPage.value; + return !!myCatalog.value; }); const filtroStrApplicato = computed(() => { @@ -173,7 +169,7 @@ export default defineComponent({ const getPdfFilename = () => { let myfilename = optcatalogo.value.pdf_filename ?? 'catalogo_completo'; - const catalog = getCatalogoByMyPage.value; + const catalog = myCatalog.value; if (catalog) { myfilename = productStore.getPathByPage(catalog.idPageAssigned); } @@ -212,10 +208,6 @@ export default defineComponent({ { deep: true } ); - const getCatalogoByMyPage = computed(() => { - return catalogStore.catalogs?.find((catalog: ICatalog) => catalog.idPageAssigned === props.idPage); - }); - /*watch(optcatalogo, (newValue) => { emit('update:modelValue', newValue); }, { deep: true });*/ @@ -277,8 +269,7 @@ export default defineComponent({ let testo = recscheda.scheda!.dimensioni.pagina?.testo_up?.contenuto; if (recscheda.scheda!.isPagIntro) { - const catalogStore = useCatalogStore(); - const catalog = getCatalogoByMyPage.value; + const catalog = myCatalog.value; if (catalog && catalog.descr_introduttiva) { // Cerca se la descrizione introduttiva è stata impostata testo = catalog.descr_introduttiva; @@ -310,7 +301,7 @@ export default defineComponent({ const getTitoloPagina = computed(() => (product: IProduct, recscheda: ISchedaSingola) => { let testo = getTextSostituito(recscheda.scheda!.dimensioni.pagina?.testo_title); - const catalog = getCatalogoByMyPage.value; + const catalog = myCatalog.value; let clcol = ''; @@ -458,12 +449,12 @@ export default defineComponent({ } function getTitoloCatalogo(): string { - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; return trovatocatalogo ? trovatocatalogo.title : 'Catalogo'; } function getReferentiCatalogo(): string { - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; if (trovatocatalogo && trovatocatalogo.referenti && trovatocatalogo.referenti.length > 0) { return trovatocatalogo.referenti.join(', '); @@ -473,7 +464,7 @@ export default defineComponent({ } function getImgIntroCatalogo(scheda: IMyScheda): IImg { - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; let imagefile = ''; let fit = 'contain'; @@ -493,7 +484,7 @@ export default defineComponent({ } function getSfondoImgCatalogo(scheda?: IMyScheda | null, mypage?: IDimensioni): IImg { - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; let imagefile = ''; let fit = 'contain'; @@ -543,7 +534,7 @@ export default defineComponent({ let idCollane: string[] = []; // Cerca se nella lista cataloghi c'è la Collana di questa Pagina ! - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; if (trovatocatalogo) { idCollane = trovatocatalogo.idCollane! || []; @@ -558,7 +549,7 @@ export default defineComponent({ let argomenti: string[] = []; // Cerca se nella lista cataloghi c'è la Collana di questa Pagina ! - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; if (trovatocatalogo) { argomenti = trovatocatalogo.argomenti! || []; @@ -577,7 +568,7 @@ export default defineComponent({ let idTipoFormato: number[] = []; // Cerca se nella lista cataloghi c'è la Collana di questa Pagina ! - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; if (trovatocatalogo) { idTipoFormato = trovatocatalogo.idTipoFormato! || []; @@ -596,7 +587,7 @@ export default defineComponent({ let editore: string[] = []; // Cerca se nella lista cataloghi c'è la Collana di questa Pagina ! - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; if (trovatocatalogo) { editore = trovatocatalogo.editore! || []; @@ -705,7 +696,7 @@ export default defineComponent({ const se_tutti_veri = op_andor.condition_andor === costanti.OP_ANDOR.OP_AND; - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; if ( boolfiltroVuotoProductTypes && @@ -909,7 +900,7 @@ export default defineComponent({ let salva = false; // Se nel catalogo è stato già generato, allora gli passo quello. - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; // if (editore) console.log('FILTRO editore', editore); @@ -917,7 +908,7 @@ export default defineComponent({ generalista = true; } - /*if (trovatocatalogo?.lista_prodotti.length === 0) { + /*if (myCatalog.value.lista_prodotti.length === 0) { generalista = true }*/ @@ -926,8 +917,8 @@ export default defineComponent({ trovatocatalogo?.condition_andor !== undefined ? trovatocatalogo.condition_andor : costanti.OP_ANDOR.OP_AND, }; - if (!generalista && trovatocatalogo?.lista_prodotti.length > 0) { - arrprod = trovatocatalogo?.lista_prodotti; + if (!generalista && myCatalog.value.lista_prodotti?.length > 0) { + arrprod = myCatalog.value.lista_prodotti; } else { arrprod = productStore.getProducts(cosa.value); arrprod = filterProducts( @@ -964,7 +955,7 @@ export default defineComponent({ loaddata(); if (generalista) { - const catalog = getCatalogoByMyPage.value; + const catalog = myCatalog.value; if (catalog && !showListaFiltrata.value) { catalog.data_lista_generata = tools.getDateNow(); catalog.username_lista_generata = userStore.my.username; @@ -981,7 +972,7 @@ export default defineComponent({ } async function saveCatalog() { - const catalog = getCatalogoByMyPage.value; + const catalog = myCatalog.value; const mydata = { table: 'catalogs', data: catalog, @@ -1067,14 +1058,14 @@ export default defineComponent({ const collanastr = collana.value || ''; const gasselstr = cosa.value === shared_consts.PROD.GAS ? idGasSel.value || '' : ''; - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; let op_andor: IOpAndOr = { condition_andor: trovatocatalogo?.condition_andor ?? costanti.OP_ANDOR.OP_AND, }; - if (trovatocatalogo?.lista_prodotti.length > 0) { - arrprod = trovatocatalogo?.lista_prodotti; + if (myCatalog.value.lista_prodotti?.length > 0) { + arrprod = myCatalog.value.lista_prodotti; } else { arrprod = productStore.getProducts(cosa.value); @@ -1191,11 +1182,11 @@ export default defineComponent({ // Svuota arrProdToView.value = []; - const trovatocatalogo = getCatalogoByMyPage.value; + const trovatocatalogo = myCatalog.value; let arrGeneraleProdotti = []; - if (usaprodottiSalvati && trovatocatalogo?.lista_prodotti.length > 0) { + if (usaprodottiSalvati && myCatalog.value.lista_prodotti?.length > 0) { } else { arrGeneraleProdotti = arrProducts.value; } @@ -1217,8 +1208,8 @@ export default defineComponent({ let arrProdFiltrati: IProduct[] = []; - if (usaprodottiSalvati && trovatocatalogo?.lista_prodotti.length > 0) { - arrProdFiltrati = trovatocatalogo?.lista_prodotti; + if (usaprodottiSalvati && myCatalog.value.lista_prodotti?.length > 0) { + arrProdFiltrati = myCatalog.value.lista_prodotti; } else { if (recscheda.scheda.productTypes!.length > 0) { // Filtra i prodotti in base ai filtri impostati ! @@ -1325,7 +1316,7 @@ export default defineComponent({ function salvaListaProdotti(ricarica: boolean) { // Estrai solo gli ID dei prodotti filtrati - const myarr = [...getCatalogoByMyPage.value.lista_prodotti]; + const myarr = [...myCatalog.value.lista_prodotti]; const productIds = myarr.map((product) => product._id); let mydata = { @@ -1333,7 +1324,7 @@ export default defineComponent({ }; // Salva gli ID dei prodotti nel catalogo - tools.saveFieldToServer($q, 'catalogs', getCatalogoByMyPage.value._id, mydata, !showListaFiltrata.value, false); + tools.saveFieldToServer($q, 'catalogs', myCatalog.value._id, mydata, !showListaFiltrata.value, false); if (ricarica) { generatearrProdToViewSorted(true, false); @@ -1366,6 +1357,12 @@ export default defineComponent({ async function mounted() { // console.log('mounted Catalogo') + let mycat = catalogStore.getCatalogByIdPageAssigned(props.idPage) || null; + if (mycat && !mycat.lista_prodotti) { + mycat = await catalogStore.fetchCatalogById(mycat._id); + } + myCatalog.value = mycat; + ismounting.value = true; generatinglist.value = true; @@ -1373,10 +1370,10 @@ export default defineComponent({ if (optcatalogo.value.showListaCollane) collana.value = tools.getCookie(getKeyCollanaAtLoad(), ''); - if (getCatalogoByMyPage.value) { + if (myCatalog.value) { tabcatalogo.value = tools.getCookie('TAB_CAT', 'lista'); } else { - tabcatalogo.value = 'visu' + tabcatalogo.value = 'visu'; } optrigenera.value.visibilitaDisp = tools.getCookie( @@ -1394,13 +1391,13 @@ export default defineComponent({ ); loadpage.value = false; - if (showListaFiltrata.value || !getCatalogoByMyPage.value) { + if (showListaFiltrata.value || !myCatalog.value) { // Carica tutti i prodotti await productStore.loadProducts(true); } else { - if (getCatalogoByMyPage.value && props.idPage) { - getCatalogoByMyPage.value.lista_prodotti = await catalogStore.loadProductsOnlyByIdPageCatalog(props.idPage); - } + /*if (myCatalog.value && props.idPage) { + myCatalog.value.lista_prodotti = await catalogStore.loadProductsOnlyByIdPageCatalog(props.idPage); + }*/ } mycolumns.value = fieldsTable.getArrColsByTable('products'); @@ -1774,8 +1771,8 @@ export default defineComponent({ } function updateProducts(arr: any) { - if (getCatalogoByMyPage.value) { - getCatalogoByMyPage.value.lista_prodotti = [...arr]; + if (myCatalog.value) { + myCatalog.value.lista_prodotti = [...arr]; if (!showListaFiltrata.value) salvaListaProdotti(true); else generatearrProdToViewSorted(true, false); @@ -1787,12 +1784,9 @@ 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 (myCatalog.value && !myCatalog.value.lista_prodotti?.some((p) => p._id === element._id)) { // inserire il record in cima - const arr = getCatalogoByMyPage.value.lista_prodotti || []; + const arr = myCatalog.value.lista_prodotti || []; if (where === shared_consts.WHERE_INSERT.ONTOP) arr.unshift(element); else if (where === shared_consts.WHERE_INSERT.ONBOTTOM) arr.push(element); @@ -1911,7 +1905,7 @@ export default defineComponent({ ); if (ris) { - const catalog = getCatalogoByMyPage.value; + const catalog = myCatalog.value; if (ris.pdf_generato) { catalog.pdf_generato = ris.pdf_generato; catalog.data_generato = tools.getDateNow(); @@ -2023,7 +2017,7 @@ export default defineComponent({ }; const pubblicaPDF = async () => { - const catalog = getCatalogoByMyPage.value; + const catalog = myCatalog.value; const confirm = await $q .dialog({ @@ -2064,7 +2058,7 @@ export default defineComponent({ }; const pubblicaPDFStampa = async () => { - const catalog = getCatalogoByMyPage.value; + const catalog = myCatalog.value; const confirm = await $q .dialog({ @@ -2159,7 +2153,6 @@ export default defineComponent({ getTitoloCatalogo, getTitoloPagina, generaListaLibri, - lista_prodotti, updateProducts, clickaddNewBook, addProductToList, @@ -2171,7 +2164,7 @@ export default defineComponent({ optDisp, optRigeneraModalita, optStato, - getCatalogoByMyPage, + myCatalog, getReferentiCatalogo, reSortList, preparePDF, diff --git a/src/views/ecommerce/catalogo/catalogo.vue b/src/views/ecommerce/catalogo/catalogo.vue index 6e15c9aa..83048802 100755 --- a/src/views/ecommerce/catalogo/catalogo.vue +++ b/src/views/ecommerce/catalogo/catalogo.vue @@ -9,7 +9,7 @@
@@ -30,7 +30,7 @@ > -->
-
+
@@ -402,31 +402,31 @@ PDF OnLine: - {{ tools.getHost() + getCatalogoByMyPage.pdf_online }} + {{ tools.getHost() + myCatalog.pdf_online }} - - {{ tools.getstrDateTime(getCatalogoByMyPage.data_online) }} + {{ tools.getstrDateTime(myCatalog.data_online) }} PDF OnLine Stampa: - {{ tools.getHost() + getCatalogoByMyPage.pdf_online_stampa }} + {{ tools.getHost() + myCatalog.pdf_online_stampa }} - - {{ tools.getstrDateTime(getCatalogoByMyPage.data_online_stampa) }} + {{ tools.getstrDateTime(myCatalog.data_online_stampa) }} @@ -954,12 +954,12 @@