From 664975b1fd7c9bc87514f1874d7ec7109d888943 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Fri, 6 Jun 2025 00:07:47 +0200 Subject: [PATCH] - Aggiunto bottone Aggiungi al Carrello sulla lista dei libri dei cataloghi --- .env | 4 +- index.html | 2 +- package.json | 14 +- .../comunitanuovomondo.app/package.json | 8 +- .../_ALL_SITES/freeplanet.app/package.json | 12 +- .../_ALL_SITES/gruppomacro.app/package.json | 14 +- scripts/_ALL_SITES/kolibrilab.it/package.json | 12 +- .../nutriben-naturopatia.it/package.json | 14 +- .../_ALL_SITES/piuchebuono.app/package.json | 12 +- scripts/_ALL_SITES/riso.app/package.json | 12 +- src-pwa/custom-service-worker.js | 2 +- src/common/shared_vuejs.ts | 1 + src/components/CCatalogoCard/CCatalogoCard.ts | 112 ++--- src/components/CMyChipList/CMyChipList.ts | 5 +- src/components/CMyInnerPage/CMyInnerPage.ts | 2 +- src/components/CMyRecCatalog/CMyRecCatalog.ts | 6 +- .../CMyRecCatalog/CMyRecCatalog.vue | 2 +- src/components/CProductCard/CProductCard.ts | 412 +++++++++--------- src/components/CProductCard/CProductCard.vue | 30 +- src/components/CProductTable/CProductTable.ts | 162 +++++-- .../CProductTable/CProductTable.vue | 43 +- .../CSchedaProdotto/CSchedaProdotto.ts | 2 +- src/components/CSendRISTo/CSendRISTo.vue | 2 +- src/model/CatalogStore.ts | 2 - src/model/Products.ts | 1 + src/statics/lang/it.js | 2 +- src/store/CatalogStore.ts | 2 +- src/store/Modules/fieldsTable.ts | 24 +- src/store/Modules/tools.ts | 3 +- src/store/Products.ts | 57 ++- src/store/globalStore.ts | 203 ++++++--- src/views/admin/dbopmacro/dbopmacro.vue | 5 + src/views/ecommerce/catalogo/catalogo.scss | 5 + src/views/ecommerce/catalogo/catalogo.ts | 58 ++- src/views/ecommerce/catalogo/catalogo.vue | 330 ++++++++------ .../ecommerce/productsList/productsList.ts | 284 +++++++----- 36 files changed, 1110 insertions(+), 751 deletions(-) diff --git a/.env b/.env index 2e35aeff..89477bb5 100755 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ -VITE_APP_VERSION="1.2.52" +VITE_APP_VERSION="1.2.53" VITE_LANG_DEFAULT="it" VITE_PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" -VITE_SERVICE_WORKER_FILE="sw-1.2.52.js" +VITE_SERVICE_WORKER_FILE="sw-1.2.53.js" VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a" VITE_VUE_ROUTER_MODE="history" \ No newline at end of file diff --git a/index.html b/index.html index 5347a381..06cf6ca1 100755 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@ - + diff --git a/package.json b/package.json index ddfea73c..97143b03 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gruppomacro", - "version": "1.2.52", + "version": "1.2.53", "description": "Gruppo Macro", "productName": "Gruppo Macro", "author": "Surya", @@ -9,20 +9,20 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "PORT=8089 APP_VERSION='1.2.52' quasar dev", + "dev": "PORT=8089 APP_VERSION='1.2.53' quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", - "buildpwa": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", - "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", + "buildpwa": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", + "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", "type-check": "vue-tsc --noEmit", "type-check:watch": "vue-tsc --noEmit --watch", - "buildspa": "APP_VERSION='1.2.52' quasar build -m spa", + "buildspa": "APP_VERSION='1.2.53' quasar build -m spa", "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", - "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.52' quasar dev -m pwa", - "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.52' quasar dev", + "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.53' quasar dev -m pwa", + "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.53' quasar dev", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/comunitanuovomondo.app/package.json b/scripts/_ALL_SITES/comunitanuovomondo.app/package.json index 3071a237..c23ebfbe 100755 --- a/scripts/_ALL_SITES/comunitanuovomondo.app/package.json +++ b/scripts/_ALL_SITES/comunitanuovomondo.app/package.json @@ -1,6 +1,6 @@ { "name": "cnm", - "version": "1.2.52", + "version": "1.2.53", "description": "Comunita Nuovo Mondo", "productName": "ComunitaNuovoMondo", "author": "Surya", @@ -9,7 +9,7 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "PORT=8083 APP_VERSION='1.2.52' quasar dev", + "dev": "PORT=8083 APP_VERSION='1.2.53' quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", "buildpwa": "NODE_ENV=production quasar build -m pwa", @@ -21,8 +21,8 @@ "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", - "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.52' quasar dev -m pwa", - "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.52' quasar dev", + "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.53' quasar dev -m pwa", + "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.53' quasar dev", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/freeplanet.app/package.json b/scripts/_ALL_SITES/freeplanet.app/package.json index c9f4e9b2..22bbf914 100755 --- a/scripts/_ALL_SITES/freeplanet.app/package.json +++ b/scripts/_ALL_SITES/freeplanet.app/package.json @@ -1,6 +1,6 @@ { "name": "freeplanet", - "version": "1.2.52", + "version": "1.2.53", "description": "freeplanet", "productName": "freeplanet", "author": "Surya", @@ -9,11 +9,11 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "PORT=8087 APP_VERSION='1.2.52' quasar dev", + "dev": "PORT=8087 APP_VERSION='1.2.53' quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", - "buildpwa": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", - "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", + "buildpwa": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", + "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", "type-check": "vue-tsc --noEmit", "type-check:watch": "vue-tsc --noEmit --watch", "buildspa": "quasar build -m spa", @@ -21,8 +21,8 @@ "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", - "pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.52' quasar dev -m pwa", - "spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.52' quasar dev", + "pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.53' quasar dev -m pwa", + "spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.53' quasar dev", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/gruppomacro.app/package.json b/scripts/_ALL_SITES/gruppomacro.app/package.json index 54adfc47..b33eee15 100755 --- a/scripts/_ALL_SITES/gruppomacro.app/package.json +++ b/scripts/_ALL_SITES/gruppomacro.app/package.json @@ -1,6 +1,6 @@ { "name": "gruppomacro", - "version": "1.2.52", + "version": "1.2.53", "description": "Gruppo Macro", "productName": "Gruppo Macro", "author": "Surya", @@ -9,20 +9,20 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "PORT=8089 APP_VERSION='1.2.52' quasar dev", + "dev": "PORT=8089 APP_VERSION='1.2.53' quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", - "buildpwa": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", - "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", + "buildpwa": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", + "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", "type-check": "vue-tsc --noEmit", "type-check:watch": "vue-tsc --noEmit --watch", - "buildspa": "APP_VERSION='1.2.52' quasar build -m spa", + "buildspa": "APP_VERSION='1.2.53' quasar build -m spa", "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", - "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.52' quasar dev -m pwa", - "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.52' quasar dev", + "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.53' quasar dev -m pwa", + "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.53' quasar dev", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/kolibrilab.it/package.json b/scripts/_ALL_SITES/kolibrilab.it/package.json index c3618621..fd7a6eae 100755 --- a/scripts/_ALL_SITES/kolibrilab.it/package.json +++ b/scripts/_ALL_SITES/kolibrilab.it/package.json @@ -1,6 +1,6 @@ { "name": "kolibrilab", - "version": "1.2.52", + "version": "1.2.53", "description": "kolibrilab", "productName": "kolibrilab", "author": "Surya Paolo", @@ -8,11 +8,11 @@ "keywords": [], "license": "MIT", "scripts": { - "dev": "PORT=8083 APP_VERSION='1.2.52' quasar dev", + "dev": "PORT=8083 APP_VERSION='1.2.53' quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", - "buildpwa": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", - "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", + "buildpwa": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", + "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", "type-check": "vue-tsc --noEmit", "type-check:watch": "vue-tsc --noEmit --watch", "buildspa": "quasar build -m spa", @@ -20,8 +20,8 @@ "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt", - "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.52' quasar dev -m pwa", - "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.52' quasar dev", + "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.53' quasar dev -m pwa", + "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.53' quasar dev", "spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js" diff --git a/scripts/_ALL_SITES/nutriben-naturopatia.it/package.json b/scripts/_ALL_SITES/nutriben-naturopatia.it/package.json index a0558f02..6f0014bf 100755 --- a/scripts/_ALL_SITES/nutriben-naturopatia.it/package.json +++ b/scripts/_ALL_SITES/nutriben-naturopatia.it/package.json @@ -1,6 +1,6 @@ { "name": "nutriben", - "version": "1.2.52", + "version": "1.2.53", "description": "Nutriben", "productName": "Nutriben", "author": "Surya", @@ -9,20 +9,20 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "PORT=8093 APP_VERSION='1.2.52' quasar dev", + "dev": "PORT=8093 APP_VERSION='1.2.53' quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", - "buildpwa": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", - "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", + "buildpwa": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", + "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", "type-check": "vue-tsc --noEmit", "type-check:watch": "vue-tsc --noEmit --watch", - "buildspa": "APP_VERSION='1.2.52' quasar build -m spa", + "buildspa": "APP_VERSION='1.2.53' quasar build -m spa", "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", - "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.52' quasar dev -m pwa", - "spa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.52' quasar dev", + "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.53' quasar dev -m pwa", + "spa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.53' quasar dev", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/piuchebuono.app/package.json b/scripts/_ALL_SITES/piuchebuono.app/package.json index 99890c20..b11a6387 100755 --- a/scripts/_ALL_SITES/piuchebuono.app/package.json +++ b/scripts/_ALL_SITES/piuchebuono.app/package.json @@ -1,6 +1,6 @@ { "name": "piuchebuono", - "version": "1.2.52", + "version": "1.2.53", "description": "PiuCheBuono", "productName": "PiuCheBuono", "author": "Surya", @@ -9,11 +9,11 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "PORT=8085 APP_VERSION='1.2.52' quasar dev", + "dev": "PORT=8085 APP_VERSION='1.2.53' quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", - "buildpwa": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", - "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", + "buildpwa": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", + "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", "type-check": "vue-tsc --noEmit", "type-check:watch": "vue-tsc --noEmit --watch", "buildspa": "quasar build -m spa", @@ -21,8 +21,8 @@ "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", - "pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.52' quasar dev -m pwa", - "spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.52' quasar dev", + "pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.53' quasar dev -m pwa", + "spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.53' quasar dev", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/riso.app/package.json b/scripts/_ALL_SITES/riso.app/package.json index 956ed961..f8c610ac 100755 --- a/scripts/_ALL_SITES/riso.app/package.json +++ b/scripts/_ALL_SITES/riso.app/package.json @@ -1,6 +1,6 @@ { "name": "riso", - "version": "1.2.52", + "version": "1.2.53", "description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.", "productName": "Riso", "author": "Surya", @@ -9,11 +9,11 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "APP_VERSION='1.2.52' PORT=8084 quasar dev", + "dev": "APP_VERSION='1.2.53' PORT=8084 quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", - "buildpwa": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", - "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.52' quasar build -m pwa", + "buildpwa": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", + "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.53' quasar build -m pwa", "type-check": "vue-tsc --noEmit", "type-check:watch": "vue-tsc --noEmit --watch", "buildspa": "quasar build -m spa", @@ -21,8 +21,8 @@ "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", - "pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.52' quasar dev -m pwa", - "spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.52' quasar dev", + "pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.53' quasar dev -m pwa", + "spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.53' quasar dev", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/src-pwa/custom-service-worker.js b/src-pwa/custom-service-worker.js index 18953371..d38c1403 100755 --- a/src-pwa/custom-service-worker.js +++ b/src-pwa/custom-service-worker.js @@ -3,7 +3,7 @@ /* global workbox */ /* global cfgenv */ -const VITE_APP_VERSION = '1.2.52'; +const VITE_APP_VERSION = '1.2.53'; // Costanti di configurazione const DYNAMIC_CACHE = 'dynamic-cache-v2'; diff --git a/src/common/shared_vuejs.ts b/src/common/shared_vuejs.ts index 4e59ba48..518fecc6 100755 --- a/src/common/shared_vuejs.ts +++ b/src/common/shared_vuejs.ts @@ -328,6 +328,7 @@ export const shared_consts = { TABLES_MYGROUPS: 'mygroups', TABLES_ATTIVITAS: 'attivitas', TABLES_CATALOG: 'catalogs', + TABLES_PRODUCTS: 'products', TABLES_LISTA_EDITORI: 'lista_editori', TABLES_RACCOLTACATALOGHIS: 'raccoltacataloghis', diff --git a/src/components/CCatalogoCard/CCatalogoCard.ts b/src/components/CCatalogoCard/CCatalogoCard.ts index ebabb227..fa659167 100755 --- a/src/components/CCatalogoCard/CCatalogoCard.ts +++ b/src/components/CCatalogoCard/CCatalogoCard.ts @@ -112,7 +112,7 @@ export default defineComponent({ const { t } = useI18n(); const userStore = useUserStore(); const globalStore = useGlobalStore(); - const products = useProducts(); + const Products = useProducts(); const listord = ref([]); const sumval = ref(0); @@ -137,19 +137,19 @@ export default defineComponent({ const field_updated_fromGM = ref(''); const dataextractedWeb = ref(''); - const widthoggetto = ref(40) - const heightoggetto = ref(40) + const widthoggetto = ref(40); + const heightoggetto = ref(40); // Crea una copia locale reattiva di modelValue const optcatalogo = ref({ ...props.modelValue }); const mywidthogg = computed(() => { - return widthoggetto.value * tools.getScaleX(optcatalogo.value, props.scheda) - }) + return widthoggetto.value * tools.getScaleX(optcatalogo.value, props.scheda); + }); const myheightogg = computed(() => { - return heightoggetto.value * tools.getScaleY(optcatalogo.value, props.scheda) - }) + return heightoggetto.value * tools.getScaleY(optcatalogo.value, props.scheda); + }); const editOn = computed({ get(): boolean { @@ -213,7 +213,7 @@ export default defineComponent({ const scale = ref(1); const getTesto_Right = computed(() => { - return products.replaceKeyWordsByProduct( + return Products.replaceKeyWordsByProduct( optcatalogo.value, myproduct.value!, props.scheda.testo_right!, @@ -221,7 +221,7 @@ export default defineComponent({ ); }); const getTesto_Right_attaccato = computed(() => { - return products.replaceKeyWordsByProduct( + return Products.replaceKeyWordsByProduct( optcatalogo.value, myproduct.value!, props.scheda.testo_right_attaccato!, @@ -229,7 +229,7 @@ export default defineComponent({ ); }); const getTesto_Debug = computed(() => { - return products.replaceKeyWordsByProduct( + return Products.replaceKeyWordsByProduct( optcatalogo.value, myproduct.value!, { contenuto: '{debug}', maxlength: 10000 }, @@ -238,7 +238,7 @@ export default defineComponent({ }); const getTesto_Bottom = computed(() => { - return products.replaceKeyWordsByProduct( + return Products.replaceKeyWordsByProduct( optcatalogo.value, myproduct.value!, props.scheda.testo_bottom!, @@ -255,7 +255,7 @@ export default defineComponent({ /*const myproduct = computed((): IProduct => { console.log('getproduct computed') - const ris = products.getProduct(props.code) + const ris = Products.getProduct(props.code) console.log(' received', ris) return ris })*/ @@ -271,7 +271,7 @@ export default defineComponent({ } if (myproduct.value) { - const ris = await products.addtoCartBase({ + const ris = await Products.addtoCartBase({ $q, t, id: myproduct.value._id, @@ -286,8 +286,7 @@ export default defineComponent({ function getnumstore() { if (myproduct.value) { - if (myproduct.value.storehouses) - return myproduct.value.storehouses.length; + if (myproduct.value.storehouses) return myproduct.value.storehouses.length; else return 0; } return 0; @@ -320,13 +319,6 @@ export default defineComponent({ } } - function initproduct() { - myorder.quantity = 0; - myorder.quantitypreordered = 0; - myorder.idStorehouse = ''; - myorder.idGasordine = ''; - } - async function updateproduct(atload: boolean, forza?: boolean) { let carica = true; @@ -343,13 +335,13 @@ export default defineComponent({ updateproductmodif(null, forza); } - // products.updateQuantityAvailable(myproduct.value._id) + // Products.updateQuantityAvailable(myproduct.value._id) } async function ricarica() { endload.value = false; if (myproduct.value) { - const prod = await products.loadProductById(myproduct.value._id); + const prod = await Products.loadProductById(myproduct.value._id); if (prod) { myproduct.value = prod; } @@ -361,9 +353,9 @@ export default defineComponent({ console.log('CCATALOGOCARD: updateproductmodif'); try { if (element?._id) { - myproduct.value = await products.getProductById(element?._id, forza); + myproduct.value = await Products.getProductById(element?._id, forza); } else { - myproduct.value = await products.getProductById(props.id, forza); + myproduct.value = await Products.getProductById(props.id, forza); } updateLabel(); @@ -441,9 +433,7 @@ export default defineComponent({ myproduct.value.gasordine.data_arrivo_merce ); if (myproduct.value.gasordine.dataora_ritiro) - dataRitiro = tools.getstrDateTime( - myproduct.value.gasordine.dataora_ritiro - ); + dataRitiro = tools.getstrDateTime(myproduct.value.gasordine.dataora_ritiro); } else { dataArrivoMerce = ''; dataRitiro = ''; @@ -451,8 +441,7 @@ export default defineComponent({ } catch (e) {} if (labelDataArrivoMerce.value !== dataArrivoMerce) labelDataArrivoMerce.value = dataArrivoMerce; - if (labelDataRitiro.value !== dataRitiro) - labelDataRitiro.value = dataRitiro; + if (labelDataRitiro.value !== dataRitiro) labelDataRitiro.value = dataRitiro; updateTimerLabel(); } @@ -487,9 +476,7 @@ export default defineComponent({ return ( myproduct.value.gasordine && myproduct.value.gasordine.dataora_chiusura_ordini && - tools.getCountDown( - myproduct.value.gasordine.dataora_chiusura_ordini - ) === '' + tools.getCountDown(myproduct.value.gasordine.dataora_chiusura_ordini) === '' ); } else return false; } @@ -501,7 +488,7 @@ export default defineComponent({ async function load() { indvariazSel.value = -1; - initproduct(); + Products.initproduct(myorder); await updateproduct(true, true); labelDataArrivoMerce.value = ''; labelDataRitiro.value = ''; @@ -509,30 +496,9 @@ export default defineComponent({ // console.log('Load', myproduct.value.name) if (myproduct.value) { - arrordersCart.value = products.getOrdersCartInAttesaByIdProduct( - myproduct.value._id - ); - - if ( - myproduct.value.storehouses && - myproduct.value.storehouses.length === 1 - ) { - // Se solo 1 presente, metto fisso l'unico negozio ! - myorder.idStorehouse = myproduct.value.storehouses[0]._id; - } - - if (myproduct.value.gasordine) { - myorder.idGasordine = myproduct.value.gasordine._id; - } - - const ord = products.getOrderProductInCart(myproduct.value._id); - if (ord) { - myorder.quantity = ord.quantity; - myorder.quantitypreordered = ord.quantitypreordered; - - // Seleziona il Negozio che avevo già scelto nell'ordine ! - if (ord.idStorehouse) storeSelected.value = ord.idStorehouse; - } + Products.setMyOrder(myorder, myproduct.value, storeSelected.value, { + setstore: true, + }); } updateLabel(); @@ -554,9 +520,7 @@ export default defineComponent({ function visuListDisponibili() { if (myproduct.value) { openlistorders.value = true; - sumval.value = products.getSumQtyOrderProductInOrdersCart( - myproduct.value._id - ); + sumval.value = Products.getSumQtyOrderProductInOrdersCart(myproduct.value._id); listord.value = arrordersCart.value.filter((orderscart: IOrderCart) => orderscart.items!.reduce((accumulator, item) => { @@ -569,9 +533,7 @@ export default defineComponent({ function visuListBookable() { if (myproduct.value) { openlistorders.value = true; - sumval.value = products.getSumQtyPreOrderInOrdersCart( - myproduct.value._id - ); + sumval.value = Products.getSumQtyPreOrderInOrdersCart(myproduct.value._id); listord.value = arrordersCart.value.filter((orderscart: IOrderCart) => orderscart.items!.reduce((accumulator, item) => { @@ -601,8 +563,7 @@ export default defineComponent({ (myproduct.value.bookableGASBloccatiQty + myproduct.value.QuantitaPrenotateInAttesa!) * myproduct.value.productInfo.weight!, - myproduct.value.qtyToReachForGas * - myproduct.value.productInfo.weight! + myproduct.value.qtyToReachForGas * myproduct.value.productInfo.weight! ) / 100 ); else return 0; @@ -770,12 +731,11 @@ export default defineComponent({ loading.value = true; updatefromgm.value = true; field_updated_fromGM.value = ''; - field_updated_fromGM.value = - await globalStore.getGM_FieldOf_T_Web_Articoli( - myproduct.value.productInfo.sku!, - field, - shared_consts.CmdQueryMs.GET - ); + field_updated_fromGM.value = await globalStore.getGM_FieldOf_T_Web_Articoli( + myproduct.value.productInfo.sku!, + field, + shared_consts.CmdQueryMs.GET + ); loading.value = false; } } @@ -798,7 +758,7 @@ export default defineComponent({ } if (!dataupdated) { tools.showNegativeNotif($q, t('dbgm.dati_non_estratti')); - visudataextracted.value = false + visudataextracted.value = false; } return dataupdated; }) @@ -858,7 +818,7 @@ export default defineComponent({ openlistorders, func_tools, toolsext, - products, + Products, arrordersCart, endload, shared_consts, @@ -918,7 +878,7 @@ export default defineComponent({ widthoggetto, heightoggetto, mywidthogg, - myheightogg + myheightogg, }; }, }); diff --git a/src/components/CMyChipList/CMyChipList.ts b/src/components/CMyChipList/CMyChipList.ts index ebbde3e8..d4303f05 100755 --- a/src/components/CMyChipList/CMyChipList.ts +++ b/src/components/CMyChipList/CMyChipList.ts @@ -82,16 +82,17 @@ export default defineComponent({ // console.log('options', props.options) if (props.options.length > 0) { props.options.forEach((rec: any, index) => { + // console.log('rec', rec) if (props.type === costanti.FieldType.multiselect) { if (!!myval.value) { + /* console.log('rec', rec) console.log('optval', props.optval) console.log('optlab', props.optlab) console.log('myval.value', myval.value) console.log('rec[props.optval]', rec[props.optval]) - - */ + */ let trovato = false diff --git a/src/components/CMyInnerPage/CMyInnerPage.ts b/src/components/CMyInnerPage/CMyInnerPage.ts index 7705d874..96627af2 100755 --- a/src/components/CMyInnerPage/CMyInnerPage.ts +++ b/src/components/CMyInnerPage/CMyInnerPage.ts @@ -28,7 +28,7 @@ export default defineComponent({ // console.log('$route.path', $route.path) rec.value = globalStore.getPage(props.path) - console.log('rec', rec) + // console.log('rec', rec) } onMounted(mounted) diff --git a/src/components/CMyRecCatalog/CMyRecCatalog.ts b/src/components/CMyRecCatalog/CMyRecCatalog.ts index 87168648..e5335f0a 100755 --- a/src/components/CMyRecCatalog/CMyRecCatalog.ts +++ b/src/components/CMyRecCatalog/CMyRecCatalog.ts @@ -74,7 +74,7 @@ export default defineComponent({ const argomentistr = ref('') const numprodtot = ref(0) const editorestr = ref('') - const editore_escludi_str = ref('') + const editorestr_escludi = ref('') const products = useProducts() @@ -142,11 +142,11 @@ export default defineComponent({ editorestr.value += rectrovato?.name + ' ' } } - editore_escludi_str.value = '' + editorestr_escludi.value = '' if (myrec.value.editore_escludi) { for (const receditore of myrec.value.editore_escludi) { const rectrovato: IPublisher = products.publishers.find((editore: IPublisher) => editore._id === receditore) - editores_escludi_tr.value += rectrovato?.name + ' ' + editorestr_escludi.value += rectrovato?.name + ' ' } } diff --git a/src/components/CMyRecCatalog/CMyRecCatalog.vue b/src/components/CMyRecCatalog/CMyRecCatalog.vue index f646ce47..adae3cef 100755 --- a/src/components/CMyRecCatalog/CMyRecCatalog.vue +++ b/src/components/CMyRecCatalog/CMyRecCatalog.vue @@ -93,7 +93,7 @@ {{ editorestr }}
{{ $t('cataloglist.editore_escludi') }}: diff --git a/src/components/CProductCard/CProductCard.ts b/src/components/CProductCard/CProductCard.ts index 71e8605b..a766cccf 100755 --- a/src/components/CProductCard/CProductCard.ts +++ b/src/components/CProductCard/CProductCard.ts @@ -1,30 +1,38 @@ -import type { PropType} from 'vue'; -import { defineComponent, ref, toRef, computed, watch, onMounted, reactive, onBeforeUnmount } from 'vue' -import { useI18n } from 'vue-i18n' -import { useUserStore } from '@store/UserStore' -import { useGlobalStore } from '@store/globalStore' -import { useQuasar } from 'quasar' +import type { PropType } from 'vue'; +import { + defineComponent, + ref, + toRef, + computed, + watch, + onMounted, + reactive, + onBeforeUnmount, +} from 'vue'; +import { useI18n } from 'vue-i18n'; +import { useUserStore } from '@store/UserStore'; +import { useGlobalStore } from '@store/globalStore'; +import { useQuasar } from 'quasar'; -import { CTitleBanner } from '../CTitleBanner' -import { CCardState } from '../CCardState' -import { CCopyBtn } from '../CCopyBtn' -import { CMyFieldRec } from '../CMyFieldRec' -import { CBarCode } from '../CBarCode' -import { CText } from '../CText' -import { CMyValueDb } from '../CMyValueDb' +import { CTitleBanner } from '../CTitleBanner'; +import { CCardState } from '../CCardState'; +import { CCopyBtn } from '../CCopyBtn'; +import { CMyFieldRec } from '../CMyFieldRec'; +import { CBarCode } from '../CBarCode'; +import { CText } from '../CText'; +import { CMyValueDb } from '../CMyValueDb'; -import { func_tools, toolsext } from '@store/Modules/toolsext' +import { func_tools, toolsext } from '@store/Modules/toolsext'; import type { IGasordine, IOrder, IOrderCart, IProduct } from '@src/model'; -import { IBaseOrder } from '@src/model' -import { tools } from '@tools' -import { useProducts } from '@store/Products' +import { IBaseOrder } from '@src/model'; +import { tools } from '@tools'; +import { useProducts } from '@store/Products'; -import { shared_consts } from '@src/common/shared_vuejs' -import { useRouter } from 'vue-router' - -import { costanti } from '@costanti' +import { shared_consts } from '@src/common/shared_vuejs'; +import { useRouter } from 'vue-router'; +import { costanti } from '@costanti'; export default defineComponent({ name: 'CProductCard', @@ -51,27 +59,32 @@ export default defineComponent({ }, }, components: { - CTitleBanner, CCardState, CCopyBtn, - CMyFieldRec, CMyValueDb, CBarCode, CText, + CTitleBanner, + CCardState, + CCopyBtn, + CMyFieldRec, + CMyValueDb, + CBarCode, + CText, }, setup(props, { emit }) { - const $q = useQuasar() - const { t } = useI18n() - const userStore = useUserStore() - const globalStore = useGlobalStore() - const products = useProducts() + const $q = useQuasar(); + const { t } = useI18n(); + const userStore = useUserStore(); + const globalStore = useGlobalStore(); + const Products = useProducts(); - const listord = ref([]) - const sumval = ref(0) - const editOn = ref(false) + const listord = ref([]); + const sumval = ref(0); + const editOn = ref(false); - const site = ref(globalStore.site) + const site = ref(globalStore.site); - const $router = useRouter() + const $router = useRouter(); - const fullscreenImage = ref(null) + const fullscreenImage = ref(null); - const apriSchedaPDF = ref(false) + const apriSchedaPDF = ref(false); let myorder = reactive({ idapp: tools.getEnv('VITE_APP_ID'), @@ -81,219 +94,209 @@ export default defineComponent({ idGasordine: '', storehouse: {}, gasordine: { active: false }, - }) + }); - const storeSelected = ref('') - const arrordersCart = ref([]) + const storeSelected = ref(''); + const arrordersCart = ref([]); - const timerInterval = ref(null) - const timerLabelScadenza = ref('') - const labelDataRitiro = ref('') - const labelDataArrivoMerce = ref('') + const timerInterval = ref(null); + const timerLabelScadenza = ref(''); + const labelDataRitiro = ref(''); + const labelDataArrivoMerce = ref(''); - const openlistorders = ref(false) - const endload = ref(false) - const myproduct = ref({}) + const openlistorders = ref(false); + const endload = ref(false); + const myproduct = ref({}); - const isFullScreen = ref(false) - const imageSrc = ref('URL_DEL_TUO_FILE_IMMAGINE') - const startX = ref(0) - const startY = ref(0) - const scale = ref(1) - - - watch(() => editOn.value, (to: any, from: any) => { - if (!editOn.value) - ricarica() - }) + const isFullScreen = ref(false); + const imageSrc = ref('URL_DEL_TUO_FILE_IMMAGINE'); + const startX = ref(0); + const startY = ref(0); + const scale = ref(1); + watch( + () => editOn.value, + (to: any, from: any) => { + if (!editOn.value) ricarica(); + } + ); /*const myproduct = computed((): IProduct => { console.log('getproduct computed') - const ris = products.getProduct(props.code) + const ris = Products.getProduct(props.code) console.log(' received', ris) return ris })*/ - function iconWhishlist(order: IProduct) { if (true) { - return 'far fa-heart' + return 'far fa-heart'; } else { - return 'fas fa-heart' + return 'fas fa-heart'; } } async function addtoCart(add: boolean) { - if (!userStore.isLogged) { - tools.showNeutralNotif($q, t('ecomm.area_personale')) - globalStore.rightDrawerOpen = true - return false + tools.showNeutralNotif($q, t('ecomm.area_personale')); + globalStore.rightDrawerOpen = true; + return false; } - const ris = await products.addtoCartBase({ $q, t, id: myproduct.value._id, order: myorder, addqty: add }) - updateproduct() + const ris = await Products.addtoCartBase({ + $q, + t, + id: myproduct.value._id, + order: myorder, + addqty: add, + }); + updateproduct(); if (ris && ris.myord) { - } } function getnumstore() { if (myproduct.value) { - if (myproduct.value.storehouses) - return myproduct.value.storehouses.length - else - return 0 + if (myproduct.value.storehouses) return myproduct.value.storehouses.length; + else return 0; } - return 0 + return 0; } function getSingleStorehouse() { try { - const mystore = myproduct.value.storehouses[0] - if (mystore) - return mystore.name + ' (' + mystore.city + ')' - else - return '' + const mystore = myproduct.value.storehouses[0]; + if (mystore) return mystore.name + ' (' + mystore.city + ')'; + else return ''; } catch (e) { - return '' + return ''; } } function getSingleGasordine(gasordine: IGasordine) { try { - const mygas = gasordine + const mygas = gasordine; if (mygas) /*return mygas.name + ' (' + mygas.city + ') ' + t('gas.dataora_chiusura_ordini') + ': ' + tools.getstrDateShort(mygas.dataora_chiusura_ordini) + ' ' + t('gas.data_arrivo_merce') + ': ' + tools.getstrDateShort(mygas.data_arrivo_merce) + ' ' + t('gas.dataora_ritiro') + ': ' + tools.getstrDateShort(mygas.dataora_ritiro)*/ - return mygas.name - else - return '' + return mygas.name; + else return ''; } catch (e) { - return '' + return ''; } } - function initproduct() { - - myorder.quantity = 0 - myorder.quantitypreordered = 0 - myorder.idStorehouse = '' - myorder.idGasordine = '' - - } - async function updateproduct() { - // console.log('props.id', props.id) - myproduct.value = await products.getProductById(props.id) + myproduct.value = await Products.getProductById(props.id); - // products.updateQuantityAvailable(myproduct.value._id) + // Products.updateQuantityAvailable(myproduct.value._id) } async function ricarica() { - endload.value = false - const prod = await products.loadProductById(myproduct.value._id) + endload.value = false; + const prod = await Products.loadProductById(myproduct.value._id); if (prod) { - myproduct.value = prod + myproduct.value = prod; } - await load() - endload.value = true - + await load(); + endload.value = true; } async function updateproductmodif(element: any) { // console.log('updateproductmodif') try { if (element?._id) { - myproduct.value = await products.getProductById(element?._id) + myproduct.value = await Products.getProductById(element?._id); } else { - myproduct.value = await products.getProductById(props.id) + myproduct.value = await Products.getProductById(props.id); } - updateLabel() + updateLabel(); } catch (e) { - console.error('err', e) + console.error('err', e); } } function getStorehouses() { - if (!myproduct.value) - return [] + if (!myproduct.value) return []; - const myarr: any = [] - let ind = 1 + const myarr: any = []; + let ind = 1; myproduct.value.storehouses.forEach((store) => { - myarr.push( - { - id: ind, - label: store.name + ' (' + store.city + ')', - value: store._id - }) + myarr.push({ + id: ind, + label: store.name + ' (' + store.city + ')', + value: store._id, + }); - ind++ - }) + ind++; + }); // console.log('arraystore', myarr) - return myarr + return myarr; } function checkifCartDisable() { // return !myorder.idStorehouse - return isOrdineChiuso() + return isOrdineChiuso(); } function getQtyWarn() { if (myorder.quantity > 0) { - return t('ecomm.di_cui_x_in_carrello', { qty: myorder.quantity }) + return t('ecomm.di_cui_x_in_carrello', { qty: myorder.quantity }); } - return '' + return ''; } function getQtyWarnPreOrdered() { if (myorder.quantitypreordered > 0) { - return t('ecomm.di_cui_x_in_carrello', { qty: myorder.quantitypreordered }) + return t('ecomm.di_cui_x_in_carrello', { qty: myorder.quantitypreordered }); } - return '' + return ''; } - watch(() => props.id, async (newval, oldval) => { - // console.log('change code') - await load() - }) + watch( + () => props.id, + async (newval, oldval) => { + // console.log('change code') + await load(); + } + ); - watch(() => storeSelected.value, (newval, oldval) => { - myorder.idStorehouse = newval - }) + watch( + () => storeSelected.value, + (newval, oldval) => { + myorder.idStorehouse = newval; + } + ); function updateLabel() { - let dataArrivoMerce = '' - let dataRitiro = '' + let dataArrivoMerce = ''; + let dataRitiro = ''; try { if (myproduct.value && myproduct.value.gasordine) { if (myproduct.value.gasordine.data_arrivo_merce) - dataArrivoMerce = tools.getstrDateShort(myproduct.value.gasordine.data_arrivo_merce) + dataArrivoMerce = tools.getstrDateShort( + myproduct.value.gasordine.data_arrivo_merce + ); if (myproduct.value.gasordine.dataora_ritiro) - dataRitiro = tools.getstrDateTime(myproduct.value.gasordine.dataora_ritiro) + dataRitiro = tools.getstrDateTime(myproduct.value.gasordine.dataora_ritiro); } else { - dataArrivoMerce = '' - dataRitiro = '' + dataArrivoMerce = ''; + dataRitiro = ''; } - } catch (e) { - - } + } catch (e) {} if (labelDataArrivoMerce.value !== dataArrivoMerce) - labelDataArrivoMerce.value = dataArrivoMerce - if (labelDataRitiro.value !== dataRitiro) - labelDataRitiro.value = dataRitiro + labelDataArrivoMerce.value = dataArrivoMerce; + if (labelDataRitiro.value !== dataRitiro) labelDataRitiro.value = dataRitiro; - updateTimerLabel() + updateTimerLabel(); } async function mounted() { - await load() + await load(); // Start the timer when the component is mounted startTimer(); @@ -305,15 +308,24 @@ export default defineComponent({ } function updateTimerLabel() { - if (myproduct.value && myproduct.value.gasordine && myproduct.value.gasordine._id && myproduct.value.gasordine.dataora_chiusura_ordini) - timerLabelScadenza.value = tools.getCountDown(myproduct.value.gasordine.dataora_chiusura_ordini) - else - timerLabelScadenza.value = '' + if ( + myproduct.value && + myproduct.value.gasordine && + myproduct.value.gasordine._id && + myproduct.value.gasordine.dataora_chiusura_ordini + ) + timerLabelScadenza.value = tools.getCountDown( + myproduct.value.gasordine.dataora_chiusura_ordini + ); + else timerLabelScadenza.value = ''; } function isOrdineChiuso() { - return myproduct.value.gasordine && myproduct.value.gasordine.dataora_chiusura_ordini && + return ( + myproduct.value.gasordine && + myproduct.value.gasordine.dataora_chiusura_ordini && tools.getCountDown(myproduct.value.gasordine.dataora_chiusura_ordini) === '' + ); } function startTimer() { @@ -322,76 +334,74 @@ export default defineComponent({ } async function load() { - initproduct() - await updateproduct() - labelDataArrivoMerce.value = '' - labelDataRitiro.value = '' + Products.initproduct(myorder); + await updateproduct(); - // console.log('Load', myproduct.value.name) - // console.log('created Cproductcard', code) + labelDataArrivoMerce.value = ''; + labelDataRitiro.value = ''; - arrordersCart.value = products.getOrdersCartInAttesaByIdProduct(myproduct.value._id) + arrordersCart.value = Products.getOrdersCartInAttesaByIdProduct( + myproduct.value._id + ); if (!!myproduct.value) { - if (myproduct.value.storehouses && myproduct.value.storehouses.length === 1) { - // Se solo 1 presente, metto fisso l'unico negozio ! - myorder.idStorehouse = myproduct.value.storehouses[0]._id - } - - if (myproduct.value.gasordine) { - myorder.idGasordine = myproduct.value.gasordine._id - } - - const ord = products.getOrderProductInCart(myproduct.value._id) - if (ord) { - myorder.quantity = ord.quantity - myorder.quantitypreordered = ord.quantitypreordered - - // Seleziona il Negozio che avevo già scelto nell'ordine ! - if (ord.idStorehouse) - storeSelected.value = ord.idStorehouse - - } + Products.setMyOrder(myorder, myproduct.value, storeSelected.value, { + setstore: true, + }); } - updateLabel() + updateLabel(); // console.log('°°° ENDLOAD °°°') - endload.value = true + endload.value = true; } function getclimgproduct() { - return 'myimgproduct centermydiv' + return 'myimgproduct centermydiv'; } - function visuListDisponibili() { - openlistorders.value = true - sumval.value = products.getSumQtyOrderProductInOrdersCart(myproduct.value._id) + openlistorders.value = true; + sumval.value = Products.getSumQtyOrderProductInOrdersCart(myproduct.value._id); - listord.value = arrordersCart.value.filter((orderscart: IOrderCart) => orderscart.items!.reduce((accumulator, item) => { - return accumulator + item.order.quantity - }, 0)) + listord.value = arrordersCart.value.filter((orderscart: IOrderCart) => + orderscart.items!.reduce((accumulator, item) => { + return accumulator + item.order.quantity; + }, 0) + ); } function visuListBookable() { - openlistorders.value = true - sumval.value = products.getSumQtyPreOrderInOrdersCart(myproduct.value._id) + openlistorders.value = true; + sumval.value = Products.getSumQtyPreOrderInOrdersCart(myproduct.value._id); - listord.value = arrordersCart.value.filter((orderscart: IOrderCart) => orderscart.items!.reduce((accumulator, item) => { - return accumulator + item.order.quantitypreordered - }, 0)) + listord.value = arrordersCart.value.filter((orderscart: IOrderCart) => + orderscart.items!.reduce((accumulator, item) => { + return accumulator + item.order.quantitypreordered; + }, 0) + ); } function isOrdGas(): boolean { - return (myproduct.value && !!myproduct.value.idGasordine && myproduct.value.gasordine! && myproduct.value.gasordine.active) + return ( + myproduct.value && + !!myproduct.value.idGasordine && + myproduct.value.gasordine! && + myproduct.value.gasordine.active + ); } function getpercqtaraggiunta(): number { if (myproduct.value) - return tools.calcperc((myproduct.value.bookableGASBloccatiQty + myproduct.value.QuantitaPrenotateInAttesa!) * myproduct.value.productInfo.weight!, myproduct.value.qtyToReachForGas * myproduct.value.productInfo.weight!) / 100 - else - return 0 + return ( + tools.calcperc( + (myproduct.value.bookableGASBloccatiQty + + myproduct.value.QuantitaPrenotateInAttesa!) * + myproduct.value.productInfo.weight!, + myproduct.value.qtyToReachForGas * myproduct.value.productInfo.weight! + ) / 100 + ); + else return 0; } function toggleFullScreen() { @@ -430,7 +440,7 @@ export default defineComponent({ } function naviga(path: string) { - $router.push(path) + $router.push(path); } function hasImage(): boolean { @@ -439,11 +449,11 @@ export default defineComponent({ } const { imagefile, image_link } = myproduct.value.productInfo; - return ((!!imagefile && imagefile !== '') || (!!image_link && image_link !== '')) + return (!!imagefile && imagefile !== '') || (!!image_link && image_link !== ''); } - onMounted(mounted) - onBeforeUnmount(beforeDestroy) + onMounted(mounted); + onBeforeUnmount(beforeDestroy); return { visuListDisponibili, @@ -465,7 +475,7 @@ export default defineComponent({ openlistorders, func_tools, toolsext, - products, + Products, arrordersCart, endload, shared_consts, @@ -493,6 +503,6 @@ export default defineComponent({ ricarica, apriSchedaPDF, hasImage, - } - } -}) + }; + }, +}); diff --git a/src/components/CProductCard/CProductCard.vue b/src/components/CProductCard/CProductCard.vue index b7177b9c..70402874 100755 --- a/src/components/CProductCard/CProductCard.vue +++ b/src/components/CProductCard/CProductCard.vue @@ -136,7 +136,7 @@ v-if=" (cosa === shared_consts.PROD.TUTTI && !isOrdGas()) || cosa === shared_consts.PROD.BOTTEGA || - (cosa === shared_consts.PROD.GAS && products.getQtyAvailable(myproduct) > 0) + (cosa === shared_consts.PROD.GAS && Products.getQtyAvailable(myproduct) > 0) " :clickable="tools.isManager()" style="padding: 16px !important;" @@ -166,7 +166,7 @@ v-if="!editOn" class="prod_disp" > - {{ products.getQtyAvailable(myproduct) }} + {{ Products.getQtyAvailable(myproduct) }} {{ t('ecomm.bloccati') }}: @@ -240,7 +240,7 @@ {{ myproduct.productInfo.name }}
- {{ products.getAutoriByArrayAuthors(myproduct.productInfo.authors) }} + {{ Products.getAutoriByArrayAuthors(myproduct.productInfo.authors) }}
  {{ t('ecomm.codice') }}: {{ myproduct.productInfo.code }} @@ -552,7 +552,7 @@ @@ -715,7 +715,7 @@ {{ t('ecomm.bloccati') }}: - {{ products.getQtyBloccataAvailable(myproduct) }} @@ -843,16 +843,16 @@ []); + const globalStore = useGlobalStore(); - const products = useProducts(); + const ProductStore = useProducts(); + const userStore = useUserStore(); const showProd = ref(false); const selProd = ref(null); @@ -97,6 +106,7 @@ export default defineComponent({ const addstr = ref(''); + const optionscatalogo = ref({ maxlength: 0 }); function handleUpdate(newList) { @@ -302,6 +312,14 @@ export default defineComponent({ noexp: true, notsortable: true, }, + { + name: 'addtocart', + label: 'Carrello', + field: 'addtocart', + align: 'center', + noexp: true, + notsortable: true, + }, { name: 'name', label: 'Titolo', field: 'name', align: 'left' }, { name: 'sottotitolo', @@ -436,18 +454,28 @@ export default defineComponent({ const allColumnsComputed = computed(() => { return allColumns.value.filter( - (col) => !col.visu || col.visu === costanti.VISUCAMPI.PER_TUTTI || (col.visu === costanti.VISUCAMPI.PER_EDITORE && tools.isCollaboratore()) + (col) => + !col.visu || + col.visu === costanti.VISUCAMPI.PER_TUTTI || + (col.visu === costanti.VISUCAMPI.PER_EDITORE && tools.isCollaboratore()) ); }); async function mounted() { - console.log('mounted CProductTable'); + //myorder = ProductStore.createMyOrder() + // ProductStore.initproduct(myorder); + + internalProducts.value.forEach((p: IProduct) => { + p.myorder = ProductStore.createMyOrder(); + }); + + // console.log('mounted CProductTable'); loading.value = true; if (props.table === shared_consts.TABLES_CATALOG) { selectedColumns.value = selectedColumns_Catalogs.value; } else { - // "products" + // "ProductStore" selectedColumns.value = tools.isUtente() ? selectedColumns_Utenti.value : selectedColumns_Editori.value; @@ -455,10 +483,10 @@ export default defineComponent({ addstr.value = tools.addstrCookie(props.table); - if (props.table === 'products') { + if (props.table === shared_consts.TABLES_PRODUCTS) { allColumns.value = allColumns_Catalog.value; isVisibleEditBtn.value = true; - } else if (props.table === 'catalogs') { + } else if (props.table === shared_consts.TABLES_CATALOG) { allColumns.value = allColumns_Raccolta.value; isVisibleEditBtn.value = false; } @@ -522,6 +550,8 @@ export default defineComponent({ return tools.getstrDate(catalog.data_online); case 'data_online_stampa': return tools.getstrDate(catalog.data_online_stampa); + case 'addtocart': + return true; case 'image': return catalog.foto_collana?.imagefile ? tools.getFullFileNameByImageFile( @@ -535,7 +565,10 @@ export default defineComponent({ switch (field.field) { case 'image': return element.productInfo?.imagefile - ? tools.getFullFileNameByImageFile('productInfos', element.productInfo?.imagefile) + ? tools.getFullFileNameByImageFile( + 'productInfos', + element.productInfo?.imagefile + ) : element.productInfo?.image_link; case 'name': @@ -576,21 +609,25 @@ export default defineComponent({ return element.arrvariazioni?.[0]?.edizione; case 'casaeditrice': - return products.getCasaEditriceByIdPublisher(element.productInfo?.idPublisher); + return ProductStore.getCasaEditriceByIdPublisher( + element.productInfo?.idPublisher + ); case 'idCollana': return tools.formatCollane(element.productInfo?.idCollana); case 'stato': - return products.getDescrStatiProdottoByIdStatoProdotto( + return ProductStore.getDescrStatiProdottoByIdStatoProdotto( element.productInfo?.idStatoProdotto || '' ); case 'tipologia': - return products.getDescrByIdTipologia(element.arrvariazioni?.[0]?.idTipologia || ''); + return ProductStore.getDescrByIdTipologia( + element.arrvariazioni?.[0]?.idTipologia || '' + ); case 'tipoformato': - return products.getDescrByIdTipoFormato( + return ProductStore.getDescrByIdTipoFormato( element.arrvariazioni?.[0]?.idTipoFormato || '' ); @@ -599,11 +636,11 @@ export default defineComponent({ case 'prezzo': // return element.price ? '€ ' + element.price.toFixed(2) : ''; - return '€ ' + element.arrvariazioni?.[0]?.price.toFixed(2); + return '€ ' + element.arrvariazioni?.[0]?.price?.toFixed(2); case 'prezzo_sconto': // return element.sale_price ? '€ ' + element.sale_price.toFixed(2) : ''; - return '€ ' + element.arrvariazioni?.[0]?.sale_price.toFixed(2); + return '€ ' + element.arrvariazioni?.[0]?.sale_price?.toFixed(2); case 'rank3M': return element.productInfo?.rank3M; @@ -637,7 +674,9 @@ export default defineComponent({ case 'quantity': if (tools.isUtente()) - return tools.getDescrQuantitàByQuantity(element.arrvariazioni?.[0]?.quantita); + return tools.getDescrQuantitàByQuantity( + element.arrvariazioni?.[0]?.quantita + ); else return element.arrvariazioni?.[0]?.quantita; default: @@ -659,13 +698,13 @@ export default defineComponent({ : 'text-red'; case 'stato': - if (products.isProssimaUscita(element.productInfo)) { + if (ProductStore.isProssimaUscita(element.productInfo)) { return 'bg-purple-3'; } - if (products.isPrevendita(element.productInfo)) { + if (ProductStore.isPrevendita(element.productInfo)) { return 'bg-blue-3'; } - if (products.isNonVendibile(element.productInfo)) { + if (ProductStore.isNonVendibile(element.productInfo)) { return 'bg-grey'; } return ''; @@ -680,14 +719,14 @@ export default defineComponent({ } case 'quantity': - if (products.isPubblicato(element.productInfo)) { - if (products.isQtaLimitata(element)) { + if (ProductStore.isPubblicato(element.productInfo)) { + if (ProductStore.isQtaLimitata(element)) { return 'bg-yellow'; } - if (products.isInEsaurendo(element)) { + if (ProductStore.isInEsaurendo(element)) { return 'bg-orange'; } - if (products.isEsaurito(element)) { + if (ProductStore.isEsaurito(element)) { return 'text-white bg-red-10'; } } @@ -846,14 +885,19 @@ export default defineComponent({ persistent: false, }) .onOk(() => { - internalProducts.value = internalProducts.value.filter((p: any) => p._id !== product._id); + internalProducts.value = internalProducts.value.filter( + (p: any) => p._id !== product._id + ); emit('update:lista_prodotti', internalProducts.value); // Notifica il parent del cambiamento }); }; // 8. Salvataggio delle colonne selezionate in un cookie const saveSelectedColumns = () => { - tools.setCookie(addstr.value + 'selColCat_2', JSON.stringify(selectedColumns.value)); + tools.setCookie( + addstr.value + 'selColCat_2', + JSON.stringify(selectedColumns.value) + ); }; // 9. Watcher per salvare automaticamente le preferenze quando cambiano @@ -901,7 +945,7 @@ export default defineComponent({ let link_macro = element.productInfo?.link_macro; if (tools.isUtente() && link_macro) { - tools.openUrl(link_macro + '?utm_source=catalog&id=' + props.idcatalog) + tools.openUrl(link_macro + '?utm_source=catalog&id=' + props.idcatalog); } else { selProd.value = element; @@ -910,7 +954,7 @@ export default defineComponent({ } else if (isCatalog()) { // Apri la pagina del catalogo if (element.idPageAssigned) { - const mypagepath = productStore.getPathByPage(element.idPageAssigned); + const mypagepath = ProductStore.getPathByPage(element.idPageAssigned); // fai il route sulla pagina myfilename $router.push(`/${mypagepath}`); @@ -953,9 +997,9 @@ export default defineComponent({ console.log('PRODUCT TABLE: updateproductmodif'); try { if (element?._id) { - selProd.value = await products.getProductById(element?._id); + selProd.value = await ProductStore.getProductById(element?._id); } else { - selProd.value = await products.getProductById(selProd.value?._id); + selProd.value = await ProductStore.getProductById(selProd.value?._id); } // update record inside internalProducts @@ -1019,7 +1063,9 @@ export default defineComponent({ return sortDirection.value === 1 ? aVal - bVal : bVal - aVal; } if (typeof aVal === 'string' && typeof bVal === 'string') { - return sortDirection.value === 1 ? aVal.localeCompare(bVal) : bVal.localeCompare(aVal); + return sortDirection.value === 1 + ? aVal.localeCompare(bVal) + : bVal.localeCompare(aVal); } return sortDirection.value === 1 ? String(aVal).localeCompare(String(bVal)) @@ -1092,7 +1138,9 @@ export default defineComponent({ } function isSortable(field: string): boolean { - return allColumns && !allColumns.value.find((col) => col.name === field)?.notsortable; + return ( + allColumns && !allColumns.value.find((col) => col.name === field)?.notsortable + ); } function getImageByElement(element) { @@ -1107,10 +1155,48 @@ export default defineComponent({ } function isProduct() { - return props.table === 'products'; + return props.table === shared_consts.TABLES_PRODUCTS; } function isCatalog() { - return props.table === 'catalogs'; + return props.table === shared_consts.TABLES_CATALOG; + } + + /* + async function addToCart(element: any) { + if (props.table === shared_consts.TABLES_PRODUCTS) { + await updateProduct(element); + + if (!!element) { + arrordersCart.value = ProductStore.getOrdersCartInAttesaByIdProduct( + element._id + ); + + ProductStore.setMyOrder(myorder, element, null, { + setstore: false, + }); + } + } + }*/ + + async function addtoCart(element: any, add: boolean) { + if (!userStore.isLogged) { + tools.showNeutralNotif($q, t('ecomm.area_personale')); + globalStore.rightDrawerOpen = true; + return false; + } + + ProductStore.setMyOrder(element.myorder, element, null, { + setstore: false, + }); + + const ris = await ProductStore.addtoCartBase({ + $q, + t, + id: element._id, + order: element.myorder, + addqty: add, + }); + updateProduct(element); } onMounted(mounted); @@ -1144,7 +1230,7 @@ export default defineComponent({ updateproductmodif, optionscatalogo, t, - products, + ProductStore, sortTable, sortAttribute, sortDirection, @@ -1160,6 +1246,8 @@ export default defineComponent({ isProduct, isCatalog, allColumnsComputed, + addtoCart, + arrordersCart, }; }, }); diff --git a/src/components/CProductTable/CProductTable.vue b/src/components/CProductTable/CProductTable.vue index 5eda81c5..841e7280 100755 --- a/src/components/CProductTable/CProductTable.vue +++ b/src/components/CProductTable/CProductTable.vue @@ -54,9 +54,7 @@ {{ col.label }} + + + + + + - + { - console.log('catalogs', res.data.catalog); + // console.log('catalogs', res.data.catalog); if (res.data.catalog) { // console.log('RISULTANTE CATEGORIES DAL SERVER = ', res.data.categories) return res.data.catalog; diff --git a/src/store/Modules/fieldsTable.ts b/src/store/Modules/fieldsTable.ts index 131d1803..4b9e4f6e 100755 --- a/src/store/Modules/fieldsTable.ts +++ b/src/store/Modules/fieldsTable.ts @@ -140,12 +140,6 @@ export const colTableRaccoltaCataloghi = [ fieldtype: costanti.FieldType.select, jointable: 'mypages_id', }), - AddCol({ - name: 'idPageAssigned_stampa', - label_trans: 'cataloglist.idPageAssigned_stampa', - fieldtype: costanti.FieldType.select, - jointable: 'mypages_id', - }), AddCol({ name: 'nomefile_da_generare', @@ -224,14 +218,14 @@ export const colTableCatalogList = [ name: 'editore', label_trans: 'cataloglist.editore_includi', fieldtype: costanti.FieldType.multiselect, - jointable: 'publishers_totali', + jointable: 'publishers_totali_sort_qty', isadvanced_field: true, }), AddCol({ name: 'editore_escludi', label_trans: 'cataloglist.editore_escludi', fieldtype: costanti.FieldType.multiselect, - jointable: 'publishers_totali', + jointable: 'publishers_totali_sort_qty', isadvanced_field: true, }), AddCol({ @@ -272,13 +266,6 @@ export const colTableCatalogList = [ label_trans: 'cataloglist.pdf_online', }), - AddCol({ - name: 'idPageAssigned_stampa', - label_trans: 'cataloglist.idPageAssigned_stampa', - fieldtype: costanti.FieldType.select, - jointable: 'mypages_id', - }), - AddCol({ name: 'img_bordata_stampa', label_trans: 'cataloglist.img_bordata_stampa', @@ -4607,6 +4594,13 @@ export const fieldsTable = { colkey: '_id', collabel: (row: any) => row.name + ' (' + row.quanti + ')', }, + { + value: 'publishers_totali_sort_qty', + label: 'Nome', + columns: colTablePublisher, + colkey: '_id', + collabel: (row: any) => row.name + ' (' + row.quanti + ')', + }, { value: 'catais', label: 'Categorie AI', diff --git a/src/store/Modules/tools.ts b/src/store/Modules/tools.ts index 458674d1..4edf70d7 100644 --- a/src/store/Modules/tools.ts +++ b/src/store/Modules/tools.ts @@ -101,6 +101,7 @@ export const tools = { FILTER_MYFOLLOW: 2, COOK_TIPOCONTO: 'TC_', + COOK_ARGOM: 'CK_ARG', COOK_SEARCH: 'SEARCH_', COOK_SELCART: 'SELCART_', COOK_SELGAS: 'SELGAS', @@ -4105,7 +4106,7 @@ export const tools = { }, setLangAtt($q: any, $router: Router, mylang: string) { - console.log('setLangAtt =', mylang); + // console.log('setLangAtt =', mylang); const globalStore = useGlobalStore(); if (!mylang || typeof mylang !== 'string') { diff --git a/src/store/Products.ts b/src/store/Products.ts index 461bb8c4..e647d9a9 100755 --- a/src/store/Products.ts +++ b/src/store/Products.ts @@ -36,7 +36,7 @@ import { defineStore } from 'pinia'; import { useUserStore } from '@store/UserStore'; import { toolsext } from '@store/Modules/toolsext'; import { useGlobalStore } from './globalStore'; -import { ref } from 'vue'; +import { ref, reactive } from 'vue'; import objectId from '@src/js/objectId'; import { costanti } from '@costanti'; @@ -1109,7 +1109,7 @@ export const useProducts = defineStore('Products', { ris = await Api.SendReq('/products/id/' + id, 'GET', null) .then((res) => { - console.log('product', res.data.product); + // console.log('product', res.data.product); if (res.data.product) { // console.log('RISULTANTE CATEGORIES DAL SERVER = ', res.data.categories) this.updateDataProduct(res); @@ -1242,8 +1242,8 @@ export const useProducts = defineStore('Products', { if (res && res.msgerr) { return res; } else if (res && res.risult) { - order.quantity = res.myord.quantity; - order.quantitypreordered = res.myord.quantitypreordered; + order.quantity = res?.myord?.quantity; + order.quantitypreordered = res?.myord?.quantitypreordered; } return res; }); @@ -1672,7 +1672,7 @@ export const useProducts = defineStore('Products', { }, qtaNextAdd(myorder: IOrder, myproduct: IProduct): number { - let step = myproduct.minStepQty; + let step = myproduct.minStepQty || 1; if (this.getQtyAvailable(myproduct) > 0) { if (myorder.quantity === 0) step = myproduct.minBuyQty; } else { @@ -2557,5 +2557,52 @@ export const useProducts = defineStore('Products', { return ''; } }, + + createMyOrder() { + let myorder = reactive({ + idapp: tools.getEnv('VITE_APP_ID'), + quantity: 0, + quantitypreordered: 0, + idStorehouse: '', + idGasordine: '', + storehouse: {}, + gasordine: { active: false }, + }); + + return myorder; + }, + + initproduct(myorder: IOrder) { + myorder.quantity = 0; + myorder.quantitypreordered = 0; + myorder.idStorehouse = ''; + myorder.idGasordine = ''; + }, + + setMyOrder(myorder: IOrder, myproduct: IProduct, storeSelected: any = null, options: any = {setstore: false}) { + if (myproduct.storehouses && myproduct.storehouses.length === 1) { + // Se solo 1 presente, metto fisso l'unico negozio ! + myorder.idStorehouse = myproduct.storehouses[0]._id; + } else if (myproduct.storehouse) { + myorder.idStorehouse = myproduct.storehouse._id; + } + + if (myproduct.gasordine) { + myorder.idGasordine = myproduct.gasordine._id; + } + + const ord = this.getOrderProductInCart(myproduct._id); + if (ord) { + myorder.quantity = ord.quantity; + myorder.quantitypreordered = ord.quantitypreordered; + + // Seleziona il Negozio che avevo già scelto nell'ordine ! + if (options.setstore && ord.idStorehouse) { + storeSelected = ord.idStorehouse; + } + } + + } + }, }); diff --git a/src/store/globalStore.ts b/src/store/globalStore.ts index 523ce8d3..2019bd2f 100644 --- a/src/store/globalStore.ts +++ b/src/store/globalStore.ts @@ -244,7 +244,9 @@ export const useGlobalStore = defineStore('GlobalStore', { sovrascriviPaginaDefaultFromTemplate: (state: IGlobalState) => (idTemplate: string, origDimensioni: IDimensioni) => { - const myfindelem = state.myelems.find((myelem: IMyElem) => myelem._id === idTemplate); + const myfindelem = state.myelems.find( + (myelem: IMyElem) => myelem._id === idTemplate + ); const precname = origDimensioni.name; @@ -255,7 +257,8 @@ export const useGlobalStore = defineStore('GlobalStore', { // myelemtocopy.scheda._id = origScheda.scheda?._id; myelemtocopy.catalogo.dimensioni_def.isTemplate = false; myelemtocopy.catalogo.dimensioni_def.name = precname; - myelemtocopy.catalogo.dimensioni_def.linkIdTemplate = origDimensioni.linkIdTemplate; + myelemtocopy.catalogo.dimensioni_def.linkIdTemplate = + origDimensioni.linkIdTemplate; return myelemtocopy.catalogo; } @@ -266,13 +269,15 @@ export const useGlobalStore = defineStore('GlobalStore', { sovrascriviAreadistampaFromTemplate: (state: IGlobalState) => (idTemplate: string, optCatalogo: IOptCatalogo) => { - const myfindelem = state.myelems.find((myelem: IMyElem) => myelem._id === idTemplate); + const myfindelem = state.myelems.find( + (myelem: IMyElem) => myelem._id === idTemplate + ); if (myfindelem) { const myelemtocopy = tools.jsonCopy(myfindelem); if (myelemtocopy) { - const linkIdTemplate = myelemtocopy.catalogo.print_linkIdTemplate + const linkIdTemplate = myelemtocopy.catalogo.print_linkIdTemplate; myelemtocopy.catalogo.print_isTemplate = false; myelemtocopy.catalogo.print_linkIdTemplate = linkIdTemplate; @@ -304,24 +309,31 @@ export const useGlobalStore = defineStore('GlobalStore', { }, getColByStatusSkills: (state: IGlobalState) => (id: number) => { - const ctrec = state.statusSkills.find((mystatus: IStatusSkill) => mystatus._id === id); + const ctrec = state.statusSkills.find( + (mystatus: IStatusSkill) => mystatus._id === id + ); return ctrec && ctrec.color ? ctrec.color : 'green'; }, getStatusSkillById: (state: IGlobalState) => (id: number) => { - const ctrec = state.statusSkills.find((mystatus: IStatusSkill) => mystatus._id === id); + const ctrec = state.statusSkills.find( + (mystatus: IStatusSkill) => mystatus._id === id + ); return ctrec ? ctrec.descr : ''; }, getStatusSkillIconById: (state: IGlobalState) => (id: number) => { - const ctrec = state.statusSkills.find((mystatus: IStatusSkill) => mystatus._id === id); + const ctrec = state.statusSkills.find( + (mystatus: IStatusSkill) => mystatus._id === id + ); return ctrec ? ctrec.icon : ''; }, isNewVersionAvailable: (state: IGlobalState) => { // console.log('cfgServer', cfgServer) const serversrec = state.cfgServer.find( - (x) => x.chiave === toolsext.SERVKEY_VERS && x.idapp === tools.getEnv('VITE_APP_ID') + (x) => + x.chiave === toolsext.SERVKEY_VERS && x.idapp === tools.getEnv('VITE_APP_ID') ); // console.log('Record ', serversrec) if (serversrec) { @@ -499,7 +511,8 @@ export const useGlobalStore = defineStore('GlobalStore', { else if (table === 'mypages_id') ris = state.mypage; else if (table === toolsext.TABMYELEMS) ris = state.myelems; else if (table === toolsext.TABCATALOGS) ris = catalogStore.catalogs!; - else if (table === toolsext.TABRACCOLTA_CATALOGHI) ris = catalogStore.raccoltacataloghis!; + else if (table === toolsext.TABRACCOLTA_CATALOGHI) + ris = catalogStore.raccoltacataloghis!; else if (table === toolsext.TABCALZOOM) ris = state.calzoom; else if (table === 'producers') ris = state.producers; else if (table === 'storehouses') ris = state.storehouses; @@ -522,6 +535,8 @@ export const useGlobalStore = defineStore('GlobalStore', { else if (table === 'authors') ris = Products.authors; else if (table === 'publishers') ris = Products.publishers; else if (table === 'publishers_totali') ris = Products.publishers; + else if (table === 'publishers_totali_sort_qty') + ris = Products.publishers_sort_qty; else if (table === 't_web_statiprodottos') ris = Products.stati_prodotto; else if (table === 't_web_tipologies') ris = Products.tipologie; else if (table === 't_web_tipiformatos') ris = Products.tipoformato; @@ -556,7 +571,8 @@ export const useGlobalStore = defineStore('GlobalStore', { else if (table === toolsext.TABSECTORS) return state.sectors; else if (table === 'sectorgoods') return state.sectorgoods; else if (table === 'catgrps') return state.catgrps; - else if (table === 'schedeopt') return Products.getSchedeOptByArrSchede(state.myschedas); + else if (table === 'schedeopt') + return Products.getSchedeOptByArrSchede(state.myschedas); else if (table === 'provinces') return state.provinces.filter( (rec: IProvince) => !rec.card && rec.prov !== 'ITA' && rec.prov !== 'EST' @@ -567,10 +583,12 @@ export const useGlobalStore = defineStore('GlobalStore', { ); if (arrprov) { // const idCardArray: { _id: number, card: string }[] = arrprov.map(({ _id, card }) => ({ _id, card })); - const idCardArray: { card: string; label: string }[] = arrprov.map(({ card }) => ({ - card, - label: card, - })); + const idCardArray: { card: string; label: string }[] = arrprov.map( + ({ card }) => ({ + card, + label: card, + }) + ); return idCardArray; } return []; @@ -601,7 +619,9 @@ export const useGlobalStore = defineStore('GlobalStore', { getdestnewsletterbyId: (mystate: IGlobalState) => (id: string): string => { - const myrec = mystate.destnewsletter.find((rec: IDestNewsletter) => rec._id === id); + const myrec = mystate.destnewsletter.find( + (rec: IDestNewsletter) => rec._id === id + ); return !!myrec ? myrec.descr! : ''; }, }, @@ -624,7 +644,15 @@ export const useGlobalStore = defineStore('GlobalStore', { return []; }, - setValueSettingsByKey({ key, value, serv }: { key: string; value: any; serv: boolean }): any { + setValueSettingsByKey({ + key, + value, + serv, + }: { + key: string; + value: any; + serv: boolean; + }): any { // Update the Server // Update in Memory @@ -633,7 +661,10 @@ export const useGlobalStore = defineStore('GlobalStore', { else myrec = this.settings.find((rec: any) => rec.key === key); if (myrec) { - if (myrec.type === costanti.FieldType.date || myrec.type === costanti.FieldType.onlydate) + if ( + myrec.type === costanti.FieldType.date || + myrec.type === costanti.FieldType.onlydate + ) myrec.value_date = value; else if ( myrec.type === costanti.FieldType.number || @@ -651,9 +682,15 @@ export const useGlobalStore = defineStore('GlobalStore', { const myrec = this.getrecSettingsByKey(key, serv); // console.log('getValueSettingsByKey', myrec, 'key=', key, 'srv=', serv) if (myrec) { - if (myrec.type === costanti.FieldType.date || myrec.type === costanti.FieldType.onlydate) + if ( + myrec.type === costanti.FieldType.date || + myrec.type === costanti.FieldType.onlydate + ) return myrec.value_date; - if (myrec.type === costanti.FieldType.number || myrec.type === costanti.FieldType.hours) + if ( + myrec.type === costanti.FieldType.number || + myrec.type === costanti.FieldType.hours + ) return myrec.value_num; if (myrec.type === costanti.FieldType.boolean) return myrec.value_bool; else if (myrec.type === costanti.FieldType.crypted) return '***********'; @@ -1496,9 +1533,20 @@ export const useGlobalStore = defineStore('GlobalStore', { const obj = { test: 'OK! Versione Client: ' + tools.getvers(), timeout }; - return Api.SendReq('/api/test-lungo', 'POST', obj, false, false, 0, 5000, null, null, { - timeout, - }) + return Api.SendReq( + '/api/test-lungo', + 'POST', + obj, + false, + false, + 0, + 5000, + null, + null, + { + timeout, + } + ) .then((res) => { return res; }) @@ -1851,7 +1899,13 @@ export const useGlobalStore = defineStore('GlobalStore', { }); }, - async GetArrDoniNavi({ ricalcola, showall }: { ricalcola: boolean; showall: boolean }) { + async GetArrDoniNavi({ + ricalcola, + showall, + }: { + ricalcola: boolean; + showall: boolean; + }) { console.log('GetArrDoniNavi'); const mydata = { @@ -1933,7 +1987,11 @@ export const useGlobalStore = defineStore('GlobalStore', { }, async loadTest(ind: number, numval: number) { - const restest = await Api.SendReq(`/testpao/?numval=${numval}&ind=${ind}`, 'GET', null); + const restest = await Api.SendReq( + `/testpao/?numval=${numval}&ind=${ind}`, + 'GET', + null + ); return restest; }, @@ -1968,12 +2026,18 @@ export const useGlobalStore = defineStore('GlobalStore', { calendarStore.bookedevent = res.data.bookedevent ? res.data.bookedevent : []; calendarStore.eventlist = res.data.eventlist ? res.data.eventlist : []; calendarStore.operators = res.data.operators ? res.data.operators : []; - calendarStore.internalpages = res.data.internalpages ? res.data.internalpages : []; + calendarStore.internalpages = res.data.internalpages + ? res.data.internalpages + : []; calendarStore.wheres = res.data.wheres ? res.data.wheres : []; calendarStore.contribtype = res.data.contribtype ? res.data.contribtype : []; - circuitStore.listcircuits = res.data.listcircuits ? res.data.listcircuits : []; - circuitStore.listaccounts = res.data.listaccounts ? res.data.listaccounts : []; + circuitStore.listcircuits = res.data.listcircuits + ? res.data.listcircuits + : []; + circuitStore.listaccounts = res.data.listaccounts + ? res.data.listaccounts + : []; catalogStore.catalogs = res.data.catalogs; catalogStore.raccoltacataloghis = res.data.raccoltacataloghis; @@ -1984,7 +2048,9 @@ export const useGlobalStore = defineStore('GlobalStore', { this.gallery = res.data.gallery ? [...res.data.gallery] : []; this.calzoom = res.data.calzoom ? [...res.data.calzoom] : []; Products.products = res.data.products ? [...res.data.products] : []; - Products.productInfos = res.data.productInfos ? [...res.data.productInfos] : []; + Products.productInfos = res.data.productInfos + ? [...res.data.productInfos] + : []; this.producers = res.data.producers ? [...res.data.producers] : []; this.storehouses = res.data.storehouses ? [...res.data.storehouses] : []; this.providers = res.data.providers ? [...res.data.providers] : []; @@ -1993,13 +2059,23 @@ export const useGlobalStore = defineStore('GlobalStore', { Products.catprtotali = res.data.catprtotali ? [...res.data.catprtotali] : []; Products.collane = res.data.collane ? [...res.data.collane] : []; Products.subcatprods = res.data.subcatprods ? [...res.data.subcatprods] : []; - Products.stati_prodotto = res.data.stati_prodotto ? [...res.data.stati_prodotto] : []; + Products.stati_prodotto = res.data.stati_prodotto + ? [...res.data.stati_prodotto] + : []; Products.tipologie = res.data.tipologie ? [...res.data.tipologie] : []; Products.tipoformato = res.data.tipoformato ? [...res.data.tipoformato] : []; - Products.catprods_gas = res.data.catprods_gas ? [...res.data.catprods_gas] : []; + Products.catprods_gas = res.data.catprods_gas + ? [...res.data.catprods_gas] + : []; Products.authors = res.data.authors ? [...res.data.authors] : []; Products.publishers = res.data.publishers ? [...res.data.publishers] : []; + Products.publishers_sort_qty = [...res.data.publishers]; + Products.publishers_sort_qty.sort((a, b) => b.quanti - a.quanti); + + // console.table(Products.publishers) + // console.table(Products.publishers_sort_qty) + this.gasordines = res.data.gasordines ? [...res.data.gasordines] : []; this.scontisticas = res.data.scontisticas ? [...res.data.scontisticas] : []; this.groups = res.data.groups ? [...res.data.groups] : []; @@ -2372,7 +2448,8 @@ export const useGlobalStore = defineStore('GlobalStore', { else if (table === 'confpages_lang') myarr = costanti.ArrLang; else if (table === 'bottype') myarr = shared_consts.BotType; else if (table === 'visibility') myarr = shared_consts.Visibility; - else if (table === 'cat_interesse_arcadei') myarr = shared_consts.Cat_Interesse_Arcadei; + else if (table === 'cat_interesse_arcadei') + myarr = shared_consts.Cat_Interesse_Arcadei; else if (table === 'pub_to_share') myarr = shared_consts.Pub_to_Share; else if (table === 'visibilGroup') myarr = shared_consts.VisibilGroup; else if (table === 'statuscircuit') myarr = shared_consts.StatusCircuit; @@ -2391,7 +2468,8 @@ export const useGlobalStore = defineStore('GlobalStore', { else if (table === toolsext.TABTYPEACCOM) myarr = shared_consts.TypeAccom; else if (table === toolsext.TABLOCACCOM) myarr = shared_consts.LocationAccom; else if (table === toolsext.TABPREF) myarr = shared_consts.Preferences; - else if (table === toolsext.TABUNITS) myarr = shared_consts.Units_Of_Measure_ListBox; + else if (table === toolsext.TABUNITS) + myarr = shared_consts.Units_Of_Measure_ListBox; else if (table === toolsext.TABTYPECASH) myarr = shared_consts.TypeCashStr; else if (table === 'usernotifs') myarr = shared_consts.UsersNotif_Adv_List; else if (table === 'typenotifs') myarr = shared_consts.TypeNotifs_Arr; @@ -2478,7 +2556,12 @@ export const useGlobalStore = defineStore('GlobalStore', { getTableJoinLabelValueByName(col: IColGridTable) { let myarrrec: any = []; if (col.jointable) { - let myarrtab = this.getTableJoinByName(col.jointable, col.addall, col.addnone, col.filter); + let myarrtab = this.getTableJoinByName( + col.jointable, + col.addall, + col.addnone, + col.filter + ); const key = fieldsTable.getKeyByTable(col.jointable); const collab = fieldsTable.getLabelByTable(col.jointable); @@ -2523,20 +2606,22 @@ export const useGlobalStore = defineStore('GlobalStore', { async delMyElem($q: any, t: any, myelem: IMyElem) { if (!myelem._id) return false; - return await this.DeleteRec({ table: 'myelems', id: myelem._id }).then(async (ris) => { - if (ris) { - this.myelems = this.myelems.filter((rec) => rec._id !== myelem._id); + return await this.DeleteRec({ table: 'myelems', id: myelem._id }).then( + async (ris) => { + if (ris) { + this.myelems = this.myelems.filter((rec) => rec._id !== myelem._id); - // Aggiorna anche tutto il sito... - // await this.loadSite() + // Aggiorna anche tutto il sito... + // await this.loadSite() - tools.showPositiveNotif($q, t('db.deletedrecord')); - return true; - } else { - tools.showNegativeNotif($q, t('db.recdelfailed')); - return false; + tools.showPositiveNotif($q, t('db.deletedrecord')); + return true; + } else { + tools.showNegativeNotif($q, t('db.recdelfailed')); + return false; + } } - }); + ); }, async saveMyElem($q: any, t: any, myelem: IMyElem) { @@ -2748,7 +2833,7 @@ export const useGlobalStore = defineStore('GlobalStore', { dir_out: string = '', file_out: string = '', print: boolean = false, - optcatalogo: IOptCatalogo | null = null, + optcatalogo: IOptCatalogo | null = null ) { try { if (!pdfFile) { @@ -2756,7 +2841,8 @@ export const useGlobalStore = defineStore('GlobalStore', { return; } - const filenameToDownload = tools.removeFileExtension(pdfFile.name) + '-compresso.pdf'; + const filenameToDownload = + tools.removeFileExtension(pdfFile.name) + '-compresso.pdf'; const formData = new FormData(); if (pdfFile instanceof File) { @@ -2775,8 +2861,10 @@ export const useGlobalStore = defineStore('GlobalStore', { formData.append('print_right', optcatalogo.areadistampa.margini.right); formData.append('print_bottom', optcatalogo.areadistampa.margini.bottom); // 7 mm 0,275" } - formData.append('salvasufiledascaricare', salvasufiledascaricare ? 'true' : 'false'); - + formData.append( + 'salvasufiledascaricare', + salvasufiledascaricare ? 'true' : 'false' + ); console.log('2) Invia le immagini al convertitore/compressione di PDF...'); @@ -2877,7 +2965,9 @@ export const useGlobalStore = defineStore('GlobalStore', { numrec: 1, query: '', where: - 'T.IdArticolo =' + sku + ' AND T.DataPubblicazione IS NOT NULL ORDER BY T.DataOra DESC;', + 'T.IdArticolo =' + + sku + + ' AND T.DataPubblicazione IS NOT NULL ORDER BY T.DataOra DESC;', fieldGM: field, showQtaDisponibile: false, outhtml: false, @@ -2913,7 +3003,11 @@ export const useGlobalStore = defineStore('GlobalStore', { return valueris; }, - async setGM_FieldOf_T_Web_Articoli(sku: string, data: Record, cmd: number) { + async setGM_FieldOf_T_Web_Articoli( + sku: string, + data: Record, + cmd: number + ) { try { // Verifica se i campi specificati sono validi if (!data || Object.keys(data).length === 0) { @@ -3051,7 +3145,9 @@ export const useGlobalStore = defineStore('GlobalStore', { if (mytablerec && resdata && resdata.rec) { // Trova l'indice del record da aggiornare - const index = mytablerec.findIndex((item: any) => item._id === resdata.rec._id); + const index = mytablerec.findIndex( + (item: any) => item._id === resdata.rec._id + ); if (index !== -1 && index !== undefined) { // Aggiorna il record mantenendo reattività @@ -3075,8 +3171,7 @@ export const useGlobalStore = defineStore('GlobalStore', { } catch (e) {} }, setshowHeader(value: boolean) { - this.showHeader = value - } - + this.showHeader = value; + }, }, }); diff --git a/src/views/admin/dbopmacro/dbopmacro.vue b/src/views/admin/dbopmacro/dbopmacro.vue index 57462dc8..a51646c7 100755 --- a/src/views/admin/dbopmacro/dbopmacro.vue +++ b/src/views/admin/dbopmacro/dbopmacro.vue @@ -47,6 +47,11 @@ color="accent" @click="EseguiFunz('updateAllBook', { usaDBGMLocale: false, caricatutti: true })" > + ([]); + const arrListaTemporanea = ref([]); const arrProdToView = ref([]); const numRecLoaded = ref(0); @@ -1000,7 +1002,7 @@ export default defineComponent({ return arrris; } - async function calcArrProducts(generalista?: boolean) { + async function calcArrProducts(generalista?: boolean, salva_listatemp: boolean) { // console.log('calcArrProducts (generalista=' + generalista + ')'); if (generalista) { @@ -1089,31 +1091,35 @@ export default defineComponent({ salva = true; } - arrProducts.value = arrprod; + if (salva_listatemp) { + arrListaTemporanea.value = arrprod; + } else { + arrProducts.value = arrprod; - // console.log('arrprod', arrprod) + optcatalogo.value = productStore.populateDataWithlinkIdTemplate( + optcatalogo.value + ); - optcatalogo.value = productStore.populateDataWithlinkIdTemplate(optcatalogo.value); + // Ordina la lista + generatearrProdToViewSorted(!generalista, salva, !showListaFiltrata.value); + loaddata(); - // Ordina la lista - generatearrProdToViewSorted(!generalista, salva, !showListaFiltrata.value); - loaddata(); - - if (generalista) { - const catalog = myCatalog.value; - if (catalog && !showListaFiltrata.value) { - catalog.data_lista_generata = tools.getDateNow(); - catalog.username_lista_generata = userStore.my.username; - await saveCatalog(); + if (generalista) { + const catalog = myCatalog.value; + if (catalog && !showListaFiltrata.value) { + catalog.data_lista_generata = tools.getDateNow(); + catalog.username_lista_generata = userStore.my.username; + await saveCatalog(); + } } } - // console.log('***** FINE calcArrPROD'); - - // console.log('areadistampa FINITO...', optcatalogo.value.areadistampa) - generatinglist.value = false; - rigeneraLibri.value = false; + if (!salva_listatemp) { + rigeneraLibri.value = false; + } else { + tabgen.value = 'generato' + } } async function saveCatalog() { @@ -1146,6 +1152,13 @@ export default defineComponent({ }); } + function generaListaTempLibri() { + // chiedi prima "Sei sicuro di rigenerare il catalogo?" + let risposta_si = false; + + calcArrProducts(true, true); + } + function reSortList() { let risposta_si = false; @@ -1344,12 +1357,12 @@ export default defineComponent({ salva?: boolean, salvasudb?: boolean ) { - console.log( + /*console.log( 'generatearrProdToViewSorted... usaprodottiSalvati=', usaprodottiSalvati, ' salva=', salva - ); + );*/ try { // Svuota @@ -2922,6 +2935,7 @@ export default defineComponent({ componentToFixRef, isFixed, arrProducts, + arrListaTemporanea, show_hide, onLoadScroll, numRecLoaded, @@ -2996,6 +3010,8 @@ export default defineComponent({ isStampa, onlyCatalogoPDF, updatecatalogmodif, + tabgen, + generaListaTempLibri, }; }, }); diff --git a/src/views/ecommerce/catalogo/catalogo.vue b/src/views/ecommerce/catalogo/catalogo.vue index 97109ee7..1e434bf0 100755 --- a/src/views/ecommerce/catalogo/catalogo.vue +++ b/src/views/ecommerce/catalogo/catalogo.vue @@ -188,7 +188,7 @@ icon="fas fa-redo" label="Rigenera Lista" color="primary" - @click="rigeneraLibri = true" + @click="rigeneraLibri = true; tabgen = 'condizioni'" >