- newsletter: prende la lista utenti (flag news_on)
- Abilita a Tutti la Newsletter news_on - isCommerciale - JobsInProgress - PCB: Corretto Totali che era a zero
This commit is contained in:
4
.env
4
.env
@@ -1,6 +1,6 @@
|
||||
VITE_APP_VERSION="1.2.35"
|
||||
VITE_APP_VERSION="1.2.37"
|
||||
VITE_LANG_DEFAULT="it"
|
||||
VITE_PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
||||
VITE_SERVICE_WORKER_FILE="sw-1.2.35.js"
|
||||
VITE_SERVICE_WORKER_FILE="sw-1.2.37.js"
|
||||
VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
|
||||
VITE_VUE_ROUTER_MODE="history"
|
||||
@@ -10,7 +10,7 @@
|
||||
<meta name="description" content="<%= productDescription %>">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="msapplication-tap-highlight" content="no">
|
||||
<meta name="version" content="1.2.35">
|
||||
<meta name="version" content="1.2.37">
|
||||
<meta name="viewport"
|
||||
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
|
||||
|
||||
|
||||
16
package.json
16
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gruppomacro",
|
||||
"version": "1.2.35",
|
||||
"version": "1.2.37",
|
||||
"description": "Gruppo Macro",
|
||||
"productName": "Gruppo Macro",
|
||||
"author": "Surya",
|
||||
@@ -9,20 +9,20 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8089 APP_VERSION='1.2.35' quasar dev",
|
||||
"dev": "PORT=8089 APP_VERSION='1.2.37' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "APP_VERSION='1.2.35' quasar build -m spa",
|
||||
"buildspa": "APP_VERSION='1.2.37' 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.35' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.35' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.37' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.37' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
@@ -41,6 +41,7 @@
|
||||
"@vuelidate/validators": "^2.0.4",
|
||||
"acorn": "^8.14.1",
|
||||
"animate.css": "^4.1.1",
|
||||
"apexcharts": "^4.7.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"axios": "^1.8.4",
|
||||
"bcryptjs": "^3.0.2",
|
||||
@@ -87,6 +88,7 @@
|
||||
"vue-svgicon": "^4.0.0-alpha.3",
|
||||
"vue-timeago3": "^2.3.2",
|
||||
"vue2-dragula": "^2.5.5",
|
||||
"vue3-apexcharts": "^1.8.0",
|
||||
"vue3-pdf-app": "^1.0.3",
|
||||
"vue3-qr-reader": "^1.0.0",
|
||||
"vuedraggable": "^4.1.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cnm",
|
||||
"version": "1.2.35",
|
||||
"version": "1.2.37",
|
||||
"description": "Comunita Nuovo Mondo",
|
||||
"productName": "ComunitaNuovoMondo",
|
||||
"author": "Surya",
|
||||
@@ -9,7 +9,7 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8083 APP_VERSION='1.2.35' quasar dev",
|
||||
"dev": "PORT=8083 APP_VERSION='1.2.37' 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.35' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.35' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.37' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.37' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -110,65 +110,6 @@ const routes_admin: IListRoutes[] = [
|
||||
}
|
||||
]
|
||||
|
||||
const routes_newsletter: IListRoutes[] = [
|
||||
{
|
||||
active: true,
|
||||
order: 10,
|
||||
name: 'newsletter.template', path: '/admin/newsletter/templemail', materialIcon: 'fas fa-users',
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 20,
|
||||
name: 'newsletter.sendemail', path: '/admin/newsletter/newnewsletter', materialIcon: 'fas fa-users',
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 30,
|
||||
name: 'newsletter.check', path: '/admin/newsletter/check', materialIcon: 'fas fa-users',
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 40,
|
||||
name: 'newsletter.sent', path: '/admin/newsletter/newslist', materialIcon: 'fas fa-users',
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 50,
|
||||
name: 'newsletter.mailinglist', path: '/admin/newsletter/mailinglist', materialIcon: 'fas fa-users',
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 60,
|
||||
name: 'newsletter.settings', path: '/admin/newsletter/settings', materialIcon: 'fas fa-users',
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 70,
|
||||
name: 'newsletter.serversettings', path: '/admin/newsletter/main_settings', materialIcon: 'fas fa-users',
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 80,
|
||||
name: 'newsletter.others', path: '/admin/newsletter/events', materialIcon: 'fas fa-users',
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
|
||||
}
|
||||
]
|
||||
|
||||
const routes_manager: IListRoutes[] = [
|
||||
{
|
||||
active: functionality.BOOKING_EVENTS,
|
||||
@@ -280,7 +221,7 @@ const routes_manager: IListRoutes[] = [
|
||||
faIcon: 'fa fa-list-alt',
|
||||
materialIcon: 'fas fa-users',
|
||||
name: 'otherpages.admin.newsletter',
|
||||
routes2: routes_newsletter,
|
||||
routes2: [],
|
||||
inmenu: false,
|
||||
submenu: true,
|
||||
level_parent: 0.5,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "freeplanet",
|
||||
"version": "1.2.35",
|
||||
"version": "1.2.37",
|
||||
"description": "freeplanet",
|
||||
"productName": "freeplanet",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8087 APP_VERSION='1.2.35' quasar dev",
|
||||
"dev": "PORT=8087 APP_VERSION='1.2.37' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' 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.35' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.35' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.37' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.37' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gruppomacro",
|
||||
"version": "1.2.35",
|
||||
"version": "1.2.37",
|
||||
"description": "Gruppo Macro",
|
||||
"productName": "Gruppo Macro",
|
||||
"author": "Surya",
|
||||
@@ -9,20 +9,20 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8089 APP_VERSION='1.2.35' quasar dev",
|
||||
"dev": "PORT=8089 APP_VERSION='1.2.37' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "APP_VERSION='1.2.35' quasar build -m spa",
|
||||
"buildspa": "APP_VERSION='1.2.37' 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.35' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.35' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.37' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.37' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
@@ -32,6 +32,7 @@
|
||||
"@cubejs-client/core": "^1.2.26",
|
||||
"@quasar/extras": "^1.16.17",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.1.2",
|
||||
"@syncfusion/ej2-vue-pdfviewer": "^29.1.40",
|
||||
"@types/jsbarcode": "^3.11.4",
|
||||
"@types/leaflet": "^1.9.17",
|
||||
"@vue/compat": "^3.5.13",
|
||||
@@ -40,6 +41,7 @@
|
||||
"@vuelidate/validators": "^2.0.4",
|
||||
"acorn": "^8.14.1",
|
||||
"animate.css": "^4.1.1",
|
||||
"apexcharts": "^4.7.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"axios": "^1.8.4",
|
||||
"bcryptjs": "^3.0.2",
|
||||
@@ -86,6 +88,7 @@
|
||||
"vue-svgicon": "^4.0.0-alpha.3",
|
||||
"vue-timeago3": "^2.3.2",
|
||||
"vue2-dragula": "^2.5.5",
|
||||
"vue3-apexcharts": "^1.8.0",
|
||||
"vue3-pdf-app": "^1.0.3",
|
||||
"vue3-qr-reader": "^1.0.0",
|
||||
"vuedraggable": "^4.1.0",
|
||||
|
||||
@@ -75,6 +75,7 @@ const msg_website_it = {
|
||||
eventodef: 'Evento:',
|
||||
prova: 'prova',
|
||||
dbop: 'Operazioni',
|
||||
dbopmacro: 'Operazioni Macro',
|
||||
projall: 'Comunitari',
|
||||
groups: 'Lista Gruppi',
|
||||
projectsShared: 'Condivisi da me',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "kolibrilab",
|
||||
"version": "1.2.35",
|
||||
"version": "1.2.37",
|
||||
"description": "kolibrilab",
|
||||
"productName": "kolibrilab",
|
||||
"author": "Surya Paolo",
|
||||
@@ -8,11 +8,11 @@
|
||||
"keywords": [],
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"dev": "PORT=8083 APP_VERSION='1.2.35' quasar dev",
|
||||
"dev": "PORT=8083 APP_VERSION='1.2.37' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' 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.35' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.35' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.37' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.37' 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"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "piuchebuono",
|
||||
"version": "1.2.35",
|
||||
"version": "1.2.37",
|
||||
"description": "PiuCheBuono",
|
||||
"productName": "PiuCheBuono",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8085 APP_VERSION='1.2.35' quasar dev",
|
||||
"dev": "PORT=8085 APP_VERSION='1.2.37' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' 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.35' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.35' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.37' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.37' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "riso",
|
||||
"version": "1.2.35",
|
||||
"version": "1.2.37",
|
||||
"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.35' PORT=8084 quasar dev",
|
||||
"dev": "APP_VERSION='1.2.37' PORT=8084 quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.35' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' 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.35' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.35' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.37' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.37' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
BIN
scripts/_ALL_SITES/riso.app/public/images/logo.png
Normal file
BIN
scripts/_ALL_SITES/riso.app/public/images/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 424 KiB |
@@ -3,7 +3,7 @@
|
||||
/* global workbox */
|
||||
/* global cfgenv */
|
||||
|
||||
const VITE_APP_VERSION = "1.2.35";
|
||||
const VITE_APP_VERSION = "1.2.37";
|
||||
|
||||
// Costanti di configurazione
|
||||
const DYNAMIC_CACHE = 'dynamic-cache-v2';
|
||||
|
||||
@@ -326,6 +326,7 @@ export const shared_consts = {
|
||||
TABLES_MYGROUPS: 'mygroups',
|
||||
TABLES_ATTIVITAS: 'attivitas',
|
||||
TABLES_CATALOG: 'catalogs',
|
||||
TABLES_LISTA_EDITORI: 'lista_editori',
|
||||
|
||||
TABFILTRI_UTENTE: 'filtriutente',
|
||||
|
||||
@@ -1110,6 +1111,12 @@ export const shared_consts = {
|
||||
icon: 'fas fa-paint-brush',
|
||||
color: 'green',
|
||||
},
|
||||
Commerciale: {
|
||||
value: 256,
|
||||
label: 'dashboard.Commerciale',
|
||||
icon: 'fas fa-briefcase',
|
||||
color: 'brown',
|
||||
},
|
||||
},
|
||||
|
||||
MessageOptions: {
|
||||
@@ -2487,6 +2494,21 @@ export const shared_consts = {
|
||||
VISU_SEARCHPROD_MODE: {
|
||||
VISU: 0,
|
||||
INSERT: 1,
|
||||
}
|
||||
},
|
||||
|
||||
DESTNEWSLETTER: {
|
||||
LISTA_NEWSLETTER: 0,
|
||||
UTENTI: 1,
|
||||
DIARIO: 2,
|
||||
TEST: 10,
|
||||
},
|
||||
|
||||
DESTNEWSLETTER_ARRAY: [
|
||||
{value: 0, label: 'LISTA_NEWSLETTER'},
|
||||
{value: 1, label: 'UTENTI'},
|
||||
{value: 2, label: 'DIARIO'},
|
||||
{value: 10, label: 'TEST'},
|
||||
],
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
/>
|
||||
</q-item-section>
|
||||
<q-item-section>
|
||||
<q-item-label>Modifica Trafiletto</q-item-label>
|
||||
<q-item-label>Modifica Sinossi</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
</q-item>-->
|
||||
<q-item
|
||||
v-if="
|
||||
tools.isManager() && !optcatalogo.generazionePDFInCorso && (editOn || options.show_edit_book)
|
||||
!optcatalogo.generazionePDFInCorso && (editOn || options.show_edit_book)
|
||||
"
|
||||
clickable
|
||||
v-close-popup
|
||||
@@ -683,7 +683,7 @@
|
||||
>
|
||||
<CModifTrafiletto
|
||||
v-model="myproduct"
|
||||
titolo="Trafiletto"
|
||||
titolo="Sinossi"
|
||||
table="productinfos"
|
||||
mykey="descr_trafiletto_catalogo"
|
||||
:canModify="true"
|
||||
|
||||
@@ -745,6 +745,11 @@ export default defineComponent({
|
||||
if (recSector) {
|
||||
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + table + costanti.FILTER_SEP + recSector.value, newval)
|
||||
}
|
||||
} else if (table === shared_consts.TABLES_LISTA_EDITORI) {
|
||||
const rec = searchList.value.find((rec) => rec.table === table)
|
||||
if (rec) {
|
||||
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + table + costanti.FILTER_SEP + 'referente', rec.value)
|
||||
}
|
||||
// setCategBySector('sectorgoods', table, newval)
|
||||
} else if (table === shared_consts.TAB_CITIES) {
|
||||
const rec = searchList.value.find((myrec) => myrec.table === shared_consts.TAB_CITIES) // check if exist
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
>
|
||||
<q-tab-panel name="descr">
|
||||
<q-btn
|
||||
v-if="false"
|
||||
flat
|
||||
round
|
||||
dense
|
||||
|
||||
@@ -18,6 +18,7 @@ import { shared_consts } from '@src/common/shared_vuejs'
|
||||
import { LandingFooter } from '@src/components/LandingFooter'
|
||||
import { CMyActivities } from '@src/components/CMyActivities'
|
||||
import { CECommerce } from '@src/components/CECommerce'
|
||||
import { CStatMacro } from '@src/components/CStatMacro'
|
||||
import { CSearchProduct } from '@src/components/CSearchProduct'
|
||||
import { CQRCode } from '@src/components/CQRCode'
|
||||
import { CAITools } from '@src/components/CAITools'
|
||||
@@ -72,7 +73,7 @@ export default defineComponent({
|
||||
CPresentazione, CMyActivities,
|
||||
CMyProfileTutorial, CSendRISTo,
|
||||
CTitleBanner, CShareSocial, CCheckAppRunning, CRegistration,
|
||||
CVisuVideoPromoAndPDF, CECommerce, CCatalogo, CAITools,
|
||||
CVisuVideoPromoAndPDF, CECommerce, CCatalogo, CAITools, CStatMacro,
|
||||
CMapComuni, CMapUsers, CMapGetCoordinates, CMapEditAddressByCoord,
|
||||
CDashGroup, CMovements, CGridOriz, CQRCode, CCatalogList,
|
||||
CSearchProduct,
|
||||
|
||||
@@ -349,8 +349,8 @@
|
||||
<div v-if="editOn" class="elemEdit">Cataloghi</div>
|
||||
<q-tabs v-if="tools.isEditor() || tools.isGrafico()" v-model="tabcatalogo" dense class="bg-green text-white">
|
||||
<q-tab name="griglia" icon="fas fa-eye" label="Griglia"> </q-tab>
|
||||
<q-tab name="statistiche" icon="fas fa-chart-pie" label="Statistiche"> </q-tab>
|
||||
<q-tab name="lista" icon="fas fa-list" label="Lista"> </q-tab>
|
||||
<q-tab name="cerca" icon="fas fa-book" label="Cerca"> </q-tab>
|
||||
<q-tab name="tutorial" icon="fas fa-info" label="Tutorial"> </q-tab>
|
||||
</q-tabs>
|
||||
<q-tab-panels v-model="tabcatalogo" animated keep-alive>
|
||||
@@ -358,10 +358,6 @@
|
||||
<CGridOriz table="catalogs" :tipovisu="costanti.VISUTABLE_TABLELIST" :prop_search="true" :finder="true"
|
||||
:showMap="false" :prop_modif="tools.isAdmin()"></CGridOriz>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="cerca">
|
||||
<CSearchProduct v-model="myel.catalogo">
|
||||
</CSearchProduct>
|
||||
</q-tab-panel>
|
||||
|
||||
<q-tab-panel name="griglia">
|
||||
<CCatalogList :prop_search="myel.parambool" :finder="myel.parambool2"
|
||||
@@ -374,6 +370,11 @@
|
||||
<q-btn rounded label="Apri Tutorial" color="primary" @click="naviga('/tutorial')"></q-btn>
|
||||
</div>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="statistiche">
|
||||
<div class="q-pa-md q-ma-sm text-center">
|
||||
<CStatMacro></CStatMacro>
|
||||
</div>
|
||||
</q-tab-panel>
|
||||
</q-tab-panels>
|
||||
</div>
|
||||
<div v-else-if="myel.type === shared_consts.ELEMTYPE.STATUSREG">
|
||||
|
||||
@@ -143,7 +143,7 @@ export default defineComponent({
|
||||
const globalStore = useGlobalStore()
|
||||
|
||||
const col = ref(<IColGridTable>{
|
||||
name: 'test', fieldtype: 0, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView, visible: true, maxlength: props.maxlength, minlength: props.minlength
|
||||
name: 'test', fieldtype: 0, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView, visible: true, maxlength: props.maxlength, minlength: props.minlength, label_trans: ''
|
||||
})
|
||||
const row = ref({})
|
||||
|
||||
|
||||
@@ -883,9 +883,9 @@
|
||||
@update:value="changevalRec"
|
||||
@update:model-value="Savedb"
|
||||
:newvaluefunc="addNewValue"
|
||||
:filter_table="col.filter_table"
|
||||
:addnone="col.addnone"
|
||||
:filter_field="col.filter_field"
|
||||
:filter_table="col?.filter_table"
|
||||
:addnone="col?.addnone"
|
||||
:filter_field="col?.filter_field"
|
||||
:value_extra="value_extra"
|
||||
:optval="fieldsTable.getKeyByTable(col.jointable)"
|
||||
:optlab="fieldsTable.getLabelByTable(col.jointable)"
|
||||
@@ -1105,7 +1105,7 @@
|
||||
@update:model-value="changevalRec"
|
||||
:maxlength="col.maxlength ? col.maxlength : undefined"
|
||||
type="password"
|
||||
@keyup.enter="scope.set"
|
||||
@keyup.enter="changevalRec"
|
||||
autofocus
|
||||
>
|
||||
</q-input>
|
||||
@@ -1320,10 +1320,10 @@
|
||||
:type_out="col.field_outtype"
|
||||
:col="col"
|
||||
:row="row"
|
||||
:label="col.label ? col.label : t(col.label_trans)"
|
||||
:label="col.label ? col.label : col.label_trans ? t(col.label_trans) : undefined"
|
||||
v-model:value="scope.value"
|
||||
:pickup="col.fieldtype === costanti.FieldType.select_by_server"
|
||||
:addnone="col.addnone"
|
||||
:addnone="col?.addnone"
|
||||
:tablesel="col.fieldtype === costanti.FieldType.select_by_server ? tablesel : undefined"
|
||||
:filter_table="col.filter_table"
|
||||
:filter_field="col.filter_field"
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
@update:model-value="changeval"
|
||||
@filter="filterFn"
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
:label="addstrrequired + label"
|
||||
:label="label ? addstrrequired + label : undefined"
|
||||
:use-input="useinput"
|
||||
@new-value="newvaluefuncfirst"
|
||||
emit-value
|
||||
|
||||
@@ -126,7 +126,7 @@ export default defineComponent({
|
||||
{ name: "name", label: "Titolo del Libro", field: "name", align: "left" },
|
||||
{ name: "authors", label: "Autore", field: "authors", align: "left" },
|
||||
{ name: "isbn", label: "ISBN", field: "isbn", align: "left" },
|
||||
{ name: "trafiletto", label: "Trafiletto", field: "trafiletto", align: "left" },
|
||||
{ name: "trafiletto", label: "Sinossi", field: "trafiletto", align: "left" },
|
||||
{ name: "catprods", label: "Argomento", field: "catprods", align: "left" },
|
||||
{ name: "edizione", label: "Edizione", field: "edizione", align: "left" },
|
||||
{ name: "casaeditrice", label: "Casa Editrice", field: "casaeditrice", align: "left" },
|
||||
|
||||
@@ -216,7 +216,7 @@ export default defineComponent({
|
||||
const arrlist: IRecFields[] = [
|
||||
{
|
||||
editOn: true,
|
||||
label: "Descrizione Trafiletto per Catalogo",
|
||||
label: "Descrizione Sinossi per Catalogo",
|
||||
title: myproduct.value?.productInfo?.name,
|
||||
table: "productinfos",
|
||||
id: myproduct.value.productInfo._id, // ID dinamico, da sostituire con il valore reale
|
||||
|
||||
0
src/components/CStatMacro/CStatMacro.scss
Executable file
0
src/components/CStatMacro/CStatMacro.scss
Executable file
35
src/components/CStatMacro/CStatMacro.ts
Executable file
35
src/components/CStatMacro/CStatMacro.ts
Executable file
@@ -0,0 +1,35 @@
|
||||
import Vue, { computed, defineComponent, onMounted, ref } from 'vue'
|
||||
|
||||
import { tools } from '../../store/Modules/tools'
|
||||
import { useUserStore } from '@store/UserStore'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useGlobalStore } from '@store/globalStore'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useQuasar } from 'quasar'
|
||||
|
||||
import type { ChartItem, ChartConfiguration } from 'chart.js';
|
||||
import { Chart, BarController, BarElement, LineController, LinearScale, CategoryScale, PointElement, LineElement, Title } from 'chart.js';
|
||||
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CStatMacro',
|
||||
components: {},
|
||||
setup(props, { emit }) {
|
||||
|
||||
const userStore = useUserStore()
|
||||
const globalStore = useGlobalStore()
|
||||
const { t } = useI18n()
|
||||
const q = useQuasar()
|
||||
|
||||
function mounted() {
|
||||
|
||||
}
|
||||
|
||||
onMounted(mounted)
|
||||
|
||||
return {
|
||||
tools,
|
||||
q,
|
||||
}
|
||||
},
|
||||
})
|
||||
12
src/components/CStatMacro/CStatMacro.vue
Executable file
12
src/components/CStatMacro/CStatMacro.vue
Executable file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./CStatMacro.ts">
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './CStatMacro.scss';
|
||||
</style>
|
||||
1
src/components/CStatMacro/index.ts
Executable file
1
src/components/CStatMacro/index.ts
Executable file
@@ -0,0 +1 @@
|
||||
export {default as CStatMacro} from './CStatMacro.vue'
|
||||
@@ -26,6 +26,11 @@ export default defineComponent({
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
tipodest: {
|
||||
required: false,
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
accept: {
|
||||
required: false,
|
||||
type: Boolean,
|
||||
@@ -51,6 +56,7 @@ export default defineComponent({
|
||||
const email = toRef(props, 'email')
|
||||
const idwebsite = toRef(props, 'idwebsite')
|
||||
const locale = toRef(props, 'locale')
|
||||
const tipodest = toRef(props, 'tipodest')
|
||||
|
||||
const onSubmit = async function a2() {
|
||||
if (!accept.value) {
|
||||
@@ -67,6 +73,7 @@ export default defineComponent({
|
||||
firstName: name.value,
|
||||
lastName: surname.value,
|
||||
idwebsite: idwebsite.value,
|
||||
tipodest: tipodest.value,
|
||||
locale: locale.value,
|
||||
settomailchimp: toolsext.getValDb('MAILCHIMP_ON', true, false),
|
||||
}
|
||||
@@ -114,9 +121,19 @@ export default defineComponent({
|
||||
accept.value = false
|
||||
}
|
||||
|
||||
function optionsDest() {
|
||||
return [
|
||||
{ label: 'Lista Newsletter', value: 0 },
|
||||
{ label: 'Utenti', value: 1 },
|
||||
{ label: 'Diario', value: 2 },
|
||||
{ label: 'Test', value: 10 },
|
||||
];
|
||||
}
|
||||
|
||||
return {
|
||||
onSubmit,
|
||||
onReset,
|
||||
optionsDest,
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -11,55 +11,99 @@
|
||||
filled
|
||||
name="firstName"
|
||||
dense
|
||||
dark standout
|
||||
dark
|
||||
standout
|
||||
v-model="name"
|
||||
:label="t('newsletter.name') + `*`"
|
||||
:hint="t('newsletter.namehint')"
|
||||
lazy-rules
|
||||
:rules="[ val => val && val.length > 0 || $t('newsletter.typesomething')]">
|
||||
|
||||
:rules="[(val) => (val && val.length > 0) || $t('newsletter.typesomething')]"
|
||||
>
|
||||
</q-input>
|
||||
|
||||
<q-input
|
||||
filled
|
||||
dense
|
||||
dark standout
|
||||
dark
|
||||
standout
|
||||
v-model="surname"
|
||||
name="lastName"
|
||||
:label="t('newsletter.surname') + `*`"
|
||||
:hint="t('newsletter.surnamehint')"
|
||||
lazy-rules
|
||||
:rules="[ val => val && val.length > 0 || $t('newsletter.typesomething')]">
|
||||
|
||||
:rules="[(val) => (val && val.length > 0) || $t('newsletter.typesomething')]"
|
||||
>
|
||||
</q-input>
|
||||
|
||||
<q-input
|
||||
filled
|
||||
dense
|
||||
dark standout
|
||||
dark
|
||||
standout
|
||||
v-model="email"
|
||||
:label="t('newsletter.email') + `*`"
|
||||
lazy-rules
|
||||
:rules="[ val => val && val.length > 6 || $t('newsletter.typesomething')]">
|
||||
|
||||
:rules="[(val) => (val && val.length > 6) || $t('newsletter.typesomething')]"
|
||||
>
|
||||
</q-input>
|
||||
|
||||
<router-link to="/policy" custom v-slot="{ navigate }">
|
||||
<span class="news_link" @click="navigate" @keypress.enter="navigate" role="link">{{$t('privacy_policy')}}</span></router-link>
|
||||
<q-select
|
||||
filled
|
||||
dense
|
||||
dark
|
||||
standout
|
||||
v-model="tipodest"
|
||||
:options="optionsDest"
|
||||
:label="$t('newsletter.tipodest') + `*`"
|
||||
lazy-rules
|
||||
emit-value
|
||||
map-options
|
||||
option-value="value"
|
||||
option-label="label"
|
||||
:rules="[(val) => (val && val.length > 0) || $t('newsletter.typesomething')]"
|
||||
>
|
||||
</q-select>
|
||||
|
||||
<q-toggle dark v-model="accept" :label="$t('newsletter.acceptlicense')"/>
|
||||
<router-link
|
||||
to="/policy"
|
||||
custom
|
||||
v-slot="{ navigate }"
|
||||
>
|
||||
<span
|
||||
class="news_link"
|
||||
@click="navigate"
|
||||
@keypress.enter="navigate"
|
||||
role="link"
|
||||
>{{ $t('privacy_policy') }}</span
|
||||
></router-link
|
||||
>
|
||||
|
||||
<q-toggle
|
||||
dark
|
||||
v-model="accept"
|
||||
:label="$t('newsletter.acceptlicense')"
|
||||
/>
|
||||
|
||||
<div>
|
||||
<q-btn :label="$t('newsletter.submit')" type="submit" color="primary"/>
|
||||
<q-btn :label="$t('newsletter.reset')" type="reset" color="primary" flat class="q-ml-sm"/>
|
||||
<q-btn
|
||||
:label="$t('newsletter.submit')"
|
||||
type="submit"
|
||||
color="primary"
|
||||
/>
|
||||
<q-btn
|
||||
:label="$t('newsletter.reset')"
|
||||
type="reset"
|
||||
color="primary"
|
||||
flat
|
||||
class="q-ml-sm"
|
||||
/>
|
||||
</div>
|
||||
</q-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./FormNewsletter.ts">
|
||||
</script>
|
||||
<script lang="ts" src="./FormNewsletter.ts"></script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './FormNewsletter.scss';
|
||||
|
||||
@@ -188,12 +188,15 @@
|
||||
<div v-if="isConsiglio()" class="text-weight-bold text-user q-px-xs bg-deep-orange-10">
|
||||
Consiglio
|
||||
</div>
|
||||
<div v-if="isManager()" class="text-weight-bold text-user bg-blue q-px-xs">
|
||||
<div v-if="tools.isManager()" class="text-weight-bold text-user bg-blue q-px-xs">
|
||||
Segreteria
|
||||
</div>
|
||||
<div v-if="isEditor()" class="text-weight-bold text-user bg-indigo q-px-xs">
|
||||
<div v-if="tools.isEditor()" class="text-weight-bold text-user bg-indigo q-px-xs">
|
||||
Editore
|
||||
</div>
|
||||
<div v-if="tools.isCommerciale()" class="text-weight-bold text-user bg-brown q-px-xs">
|
||||
Commerciale
|
||||
</div>
|
||||
<div v-if="isFacilitatore()" class="text-weight-bold text-user q-px-xs">
|
||||
Facilitatore
|
||||
</div>
|
||||
|
||||
@@ -93,6 +93,7 @@ export default defineComponent({
|
||||
if (elem.onlyDepartment) menu += ' isDepartment'
|
||||
if (elem.onlyFacilitatore) menu += ' isFacilitatore'
|
||||
if (elem.onlyEditor) menu += ' isEditor'
|
||||
if (elem.onlyCommerciale) menu += ' isCommerciale'
|
||||
if (elem.onlyGrafico) menu += ' isGrafico'
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ export interface ICatalog {
|
||||
date_updated?: Date,
|
||||
|
||||
lista_prodotti?: IProduct[]
|
||||
isCatalogoGenerale?: boolean
|
||||
}
|
||||
|
||||
export interface ICatalogState {
|
||||
|
||||
@@ -85,6 +85,12 @@ export interface ITemplEmail {
|
||||
options?: ISettings[]
|
||||
}
|
||||
|
||||
export interface IDestNewsletter {
|
||||
_id?: string
|
||||
descr?: string
|
||||
tipodest_id?: number
|
||||
}
|
||||
|
||||
export interface ISettings {
|
||||
_id?: string
|
||||
idapp?: string
|
||||
@@ -372,6 +378,7 @@ export interface INewsToSent {
|
||||
label?: string
|
||||
activate?: boolean
|
||||
templemail_str?: string
|
||||
destnewsletter_str?: string
|
||||
numemail_tot?: number
|
||||
numemail_sent?: number
|
||||
datetoSent?: Date
|
||||
@@ -495,6 +502,7 @@ export interface IGlobalState {
|
||||
myelems: IMyElem[],
|
||||
myschedas: ISchedaSingola[],
|
||||
templemail: ITemplEmail[],
|
||||
destnewsletter?: IDestNewsletter[],
|
||||
opzemail: ISettings[],
|
||||
mailinglist: IMailinglist[],
|
||||
calzoom: ICalZoom[],
|
||||
@@ -589,6 +597,7 @@ export interface IListRoutes {
|
||||
onlyFacilitatore?: boolean
|
||||
color?: string
|
||||
onlyEditor?: boolean
|
||||
onlyCommerciale?: boolean
|
||||
onlyGrafico?: boolean
|
||||
extraclass?: string
|
||||
meta?: any
|
||||
|
||||
@@ -291,6 +291,7 @@ export interface IUserState {
|
||||
isTratuttrici?: boolean
|
||||
isEditor?: boolean
|
||||
isGrafico?: boolean
|
||||
isCommerciale?: boolean
|
||||
isTeacher?: boolean
|
||||
usersList?: IUserFields[]
|
||||
countusers?: number
|
||||
|
||||
@@ -7,7 +7,8 @@ import {
|
||||
coltemplemail,
|
||||
colopzemail,
|
||||
colmailinglist,
|
||||
colmsg_templates, fieldsTable
|
||||
colmsg_templates, fieldsTable,
|
||||
coldestnewsletter
|
||||
} from '@src/store/Modules/fieldsTable'
|
||||
import type { INewsState } from '@src/model/index';
|
||||
import { DefaultNewsState } from '@src/model/index'
|
||||
@@ -92,7 +93,8 @@ export default defineComponent({
|
||||
label: 'Newsletter creata il ' + tools.getstrDateTimeAll(tools.getDateNow()),
|
||||
activate: true,
|
||||
datetoSent: tools.addMinutes(tools.getDateNow(), minuti),
|
||||
templemail_str: globalStore.gettemplemailbyId(getValDb('TEMPLEMAIL_ID', true))
|
||||
templemail_str: globalStore.gettemplemailbyId(getValDb('TEMPLEMAIL_ID', true)),
|
||||
destnewsletter_str: globalStore.getdestnewsletterbyId(getValDb('TEMPLEMAIL_DEST', true)),
|
||||
}
|
||||
await tools.createNewRecord($q, 'newstosent', mynews).then((myrecris) => {
|
||||
// reload data
|
||||
@@ -110,6 +112,7 @@ export default defineComponent({
|
||||
console.log('Newsletter load')
|
||||
myloadingload.value = true
|
||||
const myris = await userStore.newsletterload(true)
|
||||
if (myris) {
|
||||
newsstate.value = myris.newsstate
|
||||
|
||||
// console.log('newsstate')
|
||||
@@ -128,6 +131,7 @@ export default defineComponent({
|
||||
|
||||
checkifpolling()
|
||||
}
|
||||
}
|
||||
|
||||
function DisableNewsletter() {
|
||||
return setActiveDisactiveNewsletter(false)
|
||||
@@ -202,6 +206,10 @@ export default defineComponent({
|
||||
return colnewstosent
|
||||
}
|
||||
|
||||
function getcoldestnewsletter() {
|
||||
return coldestnewsletter
|
||||
}
|
||||
|
||||
function getcolmailinglist() {
|
||||
return colmailinglist
|
||||
}
|
||||
@@ -302,6 +310,7 @@ export default defineComponent({
|
||||
fieldsTable,
|
||||
globalStore,
|
||||
idparam,
|
||||
getcoldestnewsletter,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,61 +1,163 @@
|
||||
<template>
|
||||
<CMyPage title="Newsletter" keywords="" description="" imgbackground="/images/calendario_eventi.jpg"
|
||||
sizes="max-height: 120px">
|
||||
<q-toggle v-model="globalStore.editOn" color="green" icon="fas fa-pencil-alt" dense>
|
||||
<CMyPage
|
||||
title="Newsletter"
|
||||
keywords=""
|
||||
description=""
|
||||
imgbackground="/images/calendario_eventi.jpg"
|
||||
sizes="max-height: 120px"
|
||||
>
|
||||
<q-toggle
|
||||
v-model="globalStore.editOn"
|
||||
color="green"
|
||||
icon="fas fa-pencil-alt"
|
||||
dense
|
||||
>
|
||||
</q-toggle>
|
||||
|
||||
<q-card>
|
||||
<div v-show="false">
|
||||
<q-tabs v-model="tab" dense class="text-grey" active-color="primary" indicator-color="primary" align="justify"
|
||||
narrow-indicator>
|
||||
<q-tab name="settings" label="Impostazioni"></q-tab>
|
||||
<q-tab name="main_settings" label="Impostaz. Primarie"></q-tab>
|
||||
<q-tab name="templemail" label="Template Email"></q-tab>
|
||||
<q-tab name="newnewsletter" label="Invia"></q-tab>
|
||||
<q-tab name="check" label="Controlla"></q-tab>
|
||||
<q-tab name="newslist" label="Già Inviate"></q-tab>
|
||||
<q-tab name="mailinglist" label="Lista Contatti (MailingList)"></q-tab>
|
||||
<q-tab name="events" label="Altre"></q-tab>
|
||||
<q-tabs
|
||||
v-model="tab"
|
||||
dense
|
||||
class="text-grey"
|
||||
active-color="primary"
|
||||
indicator-color="primary"
|
||||
align="justify"
|
||||
narrow-indicator
|
||||
>
|
||||
<q-tab
|
||||
name="settings"
|
||||
label="Impostazioni"
|
||||
></q-tab>
|
||||
<q-tab
|
||||
name="main_settings"
|
||||
label="Impostaz. Primarie"
|
||||
></q-tab>
|
||||
<q-tab
|
||||
name="templemail"
|
||||
label="Template Email"
|
||||
></q-tab>
|
||||
<q-tab
|
||||
name="destnewsletter"
|
||||
label="Destinatari"
|
||||
></q-tab>
|
||||
<q-tab
|
||||
name="newnewsletter"
|
||||
label="Invia"
|
||||
></q-tab>
|
||||
<q-tab
|
||||
name="check"
|
||||
label="Controlla"
|
||||
></q-tab>
|
||||
<q-tab
|
||||
name="newslist"
|
||||
label="Già Inviate"
|
||||
></q-tab>
|
||||
<q-tab
|
||||
name="mailinglist"
|
||||
label="Lista Contatti (MailingList)"
|
||||
></q-tab>
|
||||
<q-tab
|
||||
name="events"
|
||||
label="Altre"
|
||||
></q-tab>
|
||||
</q-tabs>
|
||||
</div>
|
||||
<q-tab-panels v-model="tab" animated @transition="changetabnews">
|
||||
<q-tab-panels
|
||||
v-model="tab"
|
||||
animated
|
||||
@transition="changetabnews"
|
||||
>
|
||||
<q-tab-panel name="settings">
|
||||
<div class="q-ma-xs q-pa-xs text-center rounded-borders q-list--bordered">
|
||||
<CTitleBanner title="Impostazioni:"></CTitleBanner>
|
||||
|
||||
<div class="row">
|
||||
<CMyFieldDb title="Altezza Logo" mykey="HEIGHT_LOGO" :serv="true" :type="costanti.FieldType.number">
|
||||
<CMyFieldDb
|
||||
title="Altezza Logo"
|
||||
mykey="HEIGHT_LOGO"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.number"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Titolo Discipline" mykey="DISC_TITLE" :serv="true" :type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Titolo Discipline"
|
||||
mykey="DISC_TITLE"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
<CMyFieldDb title="Testo Promozione" mykey="TEXT_PROMO" :serv="true" :type="costanti.FieldType.html">
|
||||
<CMyFieldDb
|
||||
title="Testo Promozione"
|
||||
mykey="TEXT_PROMO"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.html"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
|
||||
<div class="row">
|
||||
<CMyFieldDb title="Numero di Eventi da mostrare" mykey="SHOW_LAST_N_EV" :serv="true"
|
||||
:type="costanti.FieldType.number">
|
||||
<CMyFieldDb
|
||||
title="Numero di Eventi da mostrare"
|
||||
mykey="SHOW_LAST_N_EV"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.number"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Testo dopo gli Eventi" mykey="TEXT_AFTER_EV" :serv="true"
|
||||
:type="costanti.FieldType.html">
|
||||
<CMyFieldDb
|
||||
title="Testo dopo gli Eventi"
|
||||
mykey="TEXT_AFTER_EV"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.html"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
<div class="row">
|
||||
<CMyFieldDb title="Pagina Twitter" mykey="URL_TWITTER" :type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Pagina Twitter"
|
||||
mykey="URL_TWITTER"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Pagina Facebook" mykey="URL_FACEBOOK" :type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Pagina Facebook"
|
||||
mykey="URL_FACEBOOK"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Pagina YouTube" mykey="URL_YOUTUBE" :type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Pagina YouTube"
|
||||
mykey="URL_YOUTUBE"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Pagina Instagram" mykey="URL_INSTAGRAM" :type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Pagina Instagram"
|
||||
mykey="URL_INSTAGRAM"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
<CMyFieldDb title="Firma" mykey="TEXT_SIGN" :serv="true" :type="costanti.FieldType.html">
|
||||
<CMyFieldDb
|
||||
title="Firma"
|
||||
mykey="TEXT_SIGN"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Testo Disclaimer" mykey="TEXT_DISCLAIMER" :serv="true" :type="costanti.FieldType.html">
|
||||
<CMyFieldDb
|
||||
title="Testo Disclaimer"
|
||||
mykey="TEXT_DISCLAIMER"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Testo a piè pagina" mykey="TEXT_DISC_BOTTOM" :serv="true"
|
||||
:type="costanti.FieldType.html">
|
||||
<CMyFieldDb
|
||||
title="Testo a piè pagina"
|
||||
mykey="TEXT_DISC_BOTTOM"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
</q-tab-panel>
|
||||
@@ -63,44 +165,100 @@
|
||||
<div class="q-ma-xs q-pa-xs text-center rounded-borders q-list--bordered">
|
||||
<CTitleBanner title="Impostazioni Server:"></CTitleBanner>
|
||||
|
||||
<CMyFieldDb title="Email da cui Inviare la Newsletter" mykey="EMAIL_FROM" :serv="true"
|
||||
:type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Email da cui Inviare la Newsletter"
|
||||
mykey="EMAIL_FROM"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Email di Reply" mykey="EMAIL_REPLY" :serv="true" :type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Email di Reply"
|
||||
mykey="EMAIL_REPLY"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Password email" mykey="PWD_FROM" :serv="true" :type="costanti.FieldType.password">
|
||||
<CMyFieldDb
|
||||
title="Password email"
|
||||
mykey="PWD_FROM"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.password"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Servizio SMTP Email ('gmail' per inviare email da Gmail)" mykey="EMAIL_SERVICE_SEND"
|
||||
:serv="true" :type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Servizio SMTP Email ('gmail' per inviare email da Gmail)"
|
||||
mykey="EMAIL_SERVICE_SEND"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Porta SMTP" mykey="EMAIL_PORT" :serv="true" :type="costanti.FieldType.number">
|
||||
<CMyFieldDb
|
||||
title="Porta SMTP"
|
||||
mykey="EMAIL_PORT"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.number"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb title="Millisecondi di pausa tra una email e l'altra" mykey="MSEC_PAUSE_SEND" :serv="true"
|
||||
:type="costanti.FieldType.number">
|
||||
<CMyFieldDb
|
||||
title="Millisecondi di pausa tra una email e l'altra"
|
||||
mykey="MSEC_PAUSE_SEND"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.number"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="events">
|
||||
<CTitleBanner title="Altre Impostazioni:"></CTitleBanner>
|
||||
|
||||
<CMyFieldDb title="Messaggio dopo che l'utente ha Prenotato un Evento" mykey="MSG_REPLY_AFTER_BOOKING"
|
||||
:serv="true" :type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Messaggio dopo che l'utente ha Prenotato un Evento"
|
||||
mykey="MSG_REPLY_AFTER_BOOKING"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="templemail">
|
||||
<CTitleBanner title="Modelli Email:"></CTitleBanner>
|
||||
<CGridTableRec prop_mytitle="" prop_mytable="templemail" :prop_mycolumns="getcoltemplemail()"
|
||||
<CGridTableRec
|
||||
prop_mytitle=""
|
||||
prop_mytable="templemail"
|
||||
:prop_mycolumns="getcoltemplemail()"
|
||||
:prop_colkey="fieldsTable.getKeyByTable('templemail')"
|
||||
nodataLabel="Nessuna Email Template attualmente creata"
|
||||
noresultLabel="Il filtro selezionato non ha trovato nessun risultato">
|
||||
noresultLabel="Il filtro selezionato non ha trovato nessun risultato"
|
||||
>
|
||||
</CGridTableRec>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="destnewsletter">
|
||||
<CTitleBanner title="Destinatari:"></CTitleBanner>
|
||||
<CGridTableRec
|
||||
prop_mytitle=""
|
||||
prop_mytable="destnewsletter"
|
||||
:prop_mycolumns="getcoldestnewsletter()"
|
||||
:prop_colkey="fieldsTable.getKeyByTable('destnewsletter')"
|
||||
nodataLabel="Nessun Destinatario attualmente creato"
|
||||
noresultLabel="Il filtro selezionato non ha trovato nessun risultato"
|
||||
>
|
||||
</CGridTableRec>
|
||||
|
||||
</q-tab-panel>
|
||||
|
||||
<q-tab-panel name="newnewsletter">
|
||||
<div class="q-ma-md q-pa-sm text-center rounded-borders q-list--bordered">
|
||||
<CTitleBanner title="Test Invio Newsletter:"></CTitleBanner>
|
||||
<div class="q-pa-xs q-ma-md q-gutter-md">
|
||||
<q-btn v-if="tools.isDebug()" :loading="myloadingprew" rounded outline @click="sendNewsletterTest(true)"
|
||||
color="primary" icon="fas fa-desktop">
|
||||
<q-btn
|
||||
v-if="tools.isDebug()"
|
||||
:loading="myloadingprew"
|
||||
rounded
|
||||
outline
|
||||
@click="sendNewsletterTest(true)"
|
||||
color="primary"
|
||||
icon="fas fa-desktop"
|
||||
>
|
||||
<span class="q-px-sm">Anteprima</span>
|
||||
<template v-slot:loading>
|
||||
<q-spinner-hourglass class="on-left" />
|
||||
@@ -108,10 +266,21 @@
|
||||
</template>
|
||||
</q-btn>
|
||||
<div class="text-center">
|
||||
<CMyFieldDb title="Email di Test" mykey="EMAIL_TEST" :serv="true" :type="costanti.FieldType.string">
|
||||
<CMyFieldDb
|
||||
title="Email di Test"
|
||||
mykey="EMAIL_TEST"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<q-btn :loading="myloading" rounded outline @click="sendNewsletterTest(false)" color="primary"
|
||||
icon="email">
|
||||
<q-btn
|
||||
:loading="myloading"
|
||||
rounded
|
||||
outline
|
||||
@click="sendNewsletterTest(false)"
|
||||
color="primary"
|
||||
icon="email"
|
||||
>
|
||||
<span class="q-px-sm">Invia Email di Test</span>
|
||||
<template v-slot:loading>
|
||||
<q-spinner-hourglass class="on-left" />
|
||||
@@ -124,12 +293,32 @@
|
||||
<CTitleBanner title="Invia Newsletter:"></CTitleBanner>
|
||||
|
||||
<div class="q-pa-xs q-ma-md q-gutter-md">
|
||||
<CMyFieldDb title="Template Email da Inviare" mykey="TEMPLEMAIL_ID" :serv="true"
|
||||
:type="costanti.FieldType.select" jointable="templemail">
|
||||
<CMyFieldDb
|
||||
title="Template Email da Inviare"
|
||||
mykey="TEMPLEMAIL_ID"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.select"
|
||||
jointable="templemail"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
|
||||
<q-btn :loading="myloading2" rounded outline @click="createNewsletter(3, myloading2)" color="primary"
|
||||
icon="fas fa-file-alt">
|
||||
<CMyFieldDb
|
||||
title="Lista Destinatari"
|
||||
mykey="TEMPLEMAIL_DEST"
|
||||
:serv="true"
|
||||
:type="costanti.FieldType.select"
|
||||
jointable="destnewsletter"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
|
||||
<q-btn
|
||||
:loading="myloading2"
|
||||
rounded
|
||||
outline
|
||||
@click="createNewsletter(3, myloading2)"
|
||||
color="primary"
|
||||
icon="fas fa-file-alt"
|
||||
>
|
||||
<span class="q-px-sm">Crea Nuovo Invio Newsletter Schedulato tra 3 minuti</span>
|
||||
<template v-slot:loading>
|
||||
<q-spinner-hourglass class="on-left" />
|
||||
@@ -137,8 +326,14 @@
|
||||
</template>
|
||||
</q-btn>
|
||||
<br />
|
||||
<q-btn :loading="myloading3" rounded outline @click="createNewsletter(10, myloading3)" color="primary"
|
||||
icon="fas fa-clock">
|
||||
<q-btn
|
||||
:loading="myloading3"
|
||||
rounded
|
||||
outline
|
||||
@click="createNewsletter(10, myloading3)"
|
||||
color="primary"
|
||||
icon="fas fa-clock"
|
||||
>
|
||||
<span class="q-px-sm">Crea Nuovo Invio Newsletter Schedulato tra 10 minuti</span>
|
||||
<template v-slot:loading>
|
||||
<q-spinner-hourglass class="on-left" />
|
||||
@@ -146,8 +341,14 @@
|
||||
</template>
|
||||
</q-btn>
|
||||
<br />
|
||||
<q-btn :loading="myloading4" rounded outline @click="createNewsletter(60 * 60 * 24, myloading4)"
|
||||
color="primary" icon="fas fa-calendar-day">
|
||||
<q-btn
|
||||
:loading="myloading4"
|
||||
rounded
|
||||
outline
|
||||
@click="createNewsletter(60 * 60 * 24, myloading4)"
|
||||
color="primary"
|
||||
icon="fas fa-calendar-day"
|
||||
>
|
||||
<span class="q-px-sm">Crea Nuovo Invio Newsletter Schedulato tra 1 giorno</span>
|
||||
<template v-slot:loading>
|
||||
<q-spinner-hourglass class="on-left" />
|
||||
@@ -161,85 +362,151 @@
|
||||
<CTitleBanner title="Prossima Newsletter da Inviare:"></CTitleBanner>
|
||||
</div>
|
||||
|
||||
<div v-if="newsstate.nextnewstosent" class="q-ma-md q-pa-sm text-center rounded-borders q-list--bordered">
|
||||
<div
|
||||
v-if="newsstate.nextnewstosent"
|
||||
class="q-ma-md q-pa-sm text-center rounded-borders q-list--bordered"
|
||||
>
|
||||
<q-card class="bg-grey-3 relative-position card-example">
|
||||
<q-card-section>
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="orange" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="orange"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Modello Email da Inviare:
|
||||
<span class="mlvalue">{{
|
||||
newsstate.nextnewstosent.templemail_str
|
||||
}}</span>
|
||||
<span class="mlvalue">{{ newsstate.nextnewstosent.templemail_str }}</span>
|
||||
</q-chip>
|
||||
<br />
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="orange"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Destinatari:
|
||||
<span class="mlvalue">{{ newsstate.nextnewstosent.destnewsletter_str }}</span>
|
||||
</q-chip>
|
||||
<br />
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Data Schedulato:
|
||||
<span class="mlvalue">{{
|
||||
tools.getstrDateTimeAll(
|
||||
newsstate.nextnewstosent.datetoSent
|
||||
)
|
||||
}}</span>
|
||||
<span class="mlvalue">{{ tools.getstrDateTimeAll(newsstate.nextnewstosent.datetoSent) }}</span>
|
||||
</q-chip>
|
||||
<br />
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Inizio Invio:
|
||||
<span class="mlvalue">{{
|
||||
tools.getstrDateTimeAll(
|
||||
newsstate.nextnewstosent.datestartJob
|
||||
)
|
||||
}}</span>
|
||||
<span class="mlvalue">{{ tools.getstrDateTimeAll(newsstate.nextnewstosent.datestartJob) }}</span>
|
||||
</q-chip>
|
||||
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Fine Invio:
|
||||
<span class="mlvalue">{{
|
||||
tools.getstrDateTimeAll(
|
||||
newsstate.nextnewstosent.datefinishJob
|
||||
)
|
||||
}}</span>
|
||||
<span class="mlvalue">{{ tools.getstrDateTimeAll(newsstate.nextnewstosent.datefinishJob) }}</span>
|
||||
</q-chip>
|
||||
<br />
|
||||
<div v-if="
|
||||
newsstate.nextnewstosent.starting_job &&
|
||||
!newsstate.nextnewstosent.finish_job
|
||||
">
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="orange" text-color="white" icon="email">
|
||||
<div v-if="newsstate.nextnewstosent.starting_job && !newsstate.nextnewstosent.finish_job">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="orange"
|
||||
text-color="white"
|
||||
icon="email"
|
||||
>
|
||||
<span class="mlvalue">Invio Newsletter in Corso...</span>
|
||||
</q-chip>
|
||||
<br />
|
||||
</div>
|
||||
<div>
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Ultima Email inviata:
|
||||
<span class="mlvalue">{{
|
||||
tools.getstrTimeAll(
|
||||
newsstate.nextnewstosent.lastemailsent_Job
|
||||
)
|
||||
tools.getstrTimeAll(newsstate.nextnewstosent.lastemailsent_Job)
|
||||
}}</span>
|
||||
</q-chip>
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="email">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="email"
|
||||
>
|
||||
Inviate:
|
||||
<span class="mlvalue">{{ newsstate.nextnewstosent.numemail_sent }} /
|
||||
{{ newsstate.nextnewstosent.numemail_tot }}</span>
|
||||
<span class="mlvalue"
|
||||
>{{ newsstate.nextnewstosent.numemail_sent }} /
|
||||
{{ newsstate.nextnewstosent.numemail_tot }}</span
|
||||
>
|
||||
</q-chip>
|
||||
<q-circular-progress show-value font-size="12px" :value="percsent(true)" size="60px"
|
||||
:thickness="0.22" color="green" track-color="grey-3" class="q-ma-md">
|
||||
<q-circular-progress
|
||||
show-value
|
||||
font-size="12px"
|
||||
:value="percsent(true)"
|
||||
size="60px"
|
||||
:thickness="0.22"
|
||||
color="green"
|
||||
track-color="grey-3"
|
||||
class="q-ma-md"
|
||||
>
|
||||
<span class="mlvalue"> {{ percsent(true) }} % </span>
|
||||
</q-circular-progress>
|
||||
<div class="text-center">
|
||||
<q-slider v-model="newsstate.nextnewstosent.numemail_sent" :min="0" readonly
|
||||
:max="newsstate.nextnewstosent.numemail_tot" :step="1" label label-always
|
||||
color="light-green"></q-slider>
|
||||
<q-slider
|
||||
v-model="newsstate.nextnewstosent.numemail_sent"
|
||||
:min="0"
|
||||
readonly
|
||||
:max="newsstate.nextnewstosent.numemail_tot"
|
||||
:step="1"
|
||||
label
|
||||
label-always
|
||||
color="light-green"
|
||||
></q-slider>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="newsstate.nextnewstosent.finish_job">
|
||||
<br />
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="green" text-color="white" icon="email">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="green"
|
||||
text-color="white"
|
||||
icon="email"
|
||||
>
|
||||
<span class="mlvalue">Invio Newsletter Completato</span>
|
||||
</q-chip>
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-inner-loading id="spinner3" :showing="myloadingload">
|
||||
<q-spinner-tail color="primary" size="4em">
|
||||
<q-inner-loading
|
||||
id="spinner3"
|
||||
:showing="myloadingload"
|
||||
>
|
||||
<q-spinner-tail
|
||||
color="primary"
|
||||
size="4em"
|
||||
>
|
||||
</q-spinner-tail>
|
||||
</q-inner-loading>
|
||||
</q-card>
|
||||
@@ -256,104 +523,175 @@
|
||||
<CTitleBanner title="Ultima Newsletter Inviata:"></CTitleBanner>
|
||||
</div>
|
||||
|
||||
<div v-if="newsstate.lastnewstosent" class="q-ma-md q-pa-sm text-center rounded-borders q-list--bordered">
|
||||
<div
|
||||
v-if="newsstate.lastnewstosent"
|
||||
class="q-ma-md q-pa-sm text-center rounded-borders q-list--bordered"
|
||||
>
|
||||
<q-card class="bg-grey-3 relative-position card-example">
|
||||
<q-card-section>
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="orange" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="orange"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Modello Email:
|
||||
<span class="mlvalue">{{
|
||||
newsstate.lastnewstosent.templemail_str
|
||||
}}</span>
|
||||
<span class="mlvalue">{{ newsstate.lastnewstosent.templemail_str }}</span>
|
||||
</q-chip>
|
||||
<div class="text-center"></div>
|
||||
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Data Schedulato:
|
||||
<span class="mlvalue">{{
|
||||
tools.getstrDateTimeAll(
|
||||
newsstate.lastnewstosent.datetoSent
|
||||
)
|
||||
}}</span>
|
||||
<span class="mlvalue">{{ tools.getstrDateTimeAll(newsstate.lastnewstosent.datetoSent) }}</span>
|
||||
</q-chip>
|
||||
<br />
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Inizio Invio:
|
||||
<span class="mlvalue">{{
|
||||
tools.getstrDateTimeAll(
|
||||
newsstate.lastnewstosent.datestartJob
|
||||
)
|
||||
}}</span>
|
||||
<span class="mlvalue">{{ tools.getstrDateTimeAll(newsstate.lastnewstosent.datestartJob) }}</span>
|
||||
</q-chip>
|
||||
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Fine Invio:
|
||||
<span class="mlvalue">{{
|
||||
tools.getstrDateTimeAll(
|
||||
newsstate.lastnewstosent.datefinishJob
|
||||
)
|
||||
}}</span>
|
||||
<span class="mlvalue">{{ tools.getstrDateTimeAll(newsstate.lastnewstosent.datefinishJob) }}</span>
|
||||
</q-chip>
|
||||
<br />
|
||||
<div v-if="
|
||||
<div
|
||||
v-if="
|
||||
newsstate.lastnewstosent.activate &&
|
||||
newsstate.lastnewstosent.starting_job &&
|
||||
!newsstate.lastnewstosent.finish_job
|
||||
">
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="orange" text-color="white" icon="email">
|
||||
"
|
||||
>
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="orange"
|
||||
text-color="white"
|
||||
icon="email"
|
||||
>
|
||||
<span class="mlvalue">Invio Newsletter in Corso...</span>
|
||||
</q-chip>
|
||||
<br />
|
||||
</div>
|
||||
<div v-if="!newsstate.lastnewstosent.activate">
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="red" text-color="white" icon="email">
|
||||
<span class="mlvalue">L'invio della Newsletter è stato fermato
|
||||
dall'Utente.</span>
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="red"
|
||||
text-color="white"
|
||||
icon="email"
|
||||
>
|
||||
<span class="mlvalue">L'invio della Newsletter è stato fermato dall'Utente.</span>
|
||||
</q-chip>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="schedule">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="schedule"
|
||||
>
|
||||
Ultima Email inviata:
|
||||
<span class="mlvalue">{{
|
||||
tools.getstrTimeAll(
|
||||
newsstate.lastnewstosent.lastemailsent_Job
|
||||
)
|
||||
}}</span>
|
||||
<span class="mlvalue">{{ tools.getstrTimeAll(newsstate.lastnewstosent.lastemailsent_Job) }}</span>
|
||||
</q-chip>
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="email">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="email"
|
||||
>
|
||||
Inviate:
|
||||
<span class="mlvalue">{{ newsstate.lastnewstosent.numemail_sent }} /
|
||||
{{ newsstate.lastnewstosent.numemail_tot }}</span>
|
||||
<span class="mlvalue"
|
||||
>{{ newsstate.lastnewstosent.numemail_sent }} /
|
||||
{{ newsstate.lastnewstosent.numemail_tot }}</span
|
||||
>
|
||||
</q-chip>
|
||||
<q-circular-progress show-value font-size="12px" :value="percsent(false)" size="60px"
|
||||
:thickness="0.5" color="green" track-color="grey-3" class="q-ma-md">
|
||||
<q-circular-progress
|
||||
show-value
|
||||
font-size="12px"
|
||||
:value="percsent(false)"
|
||||
size="60px"
|
||||
:thickness="0.5"
|
||||
color="green"
|
||||
track-color="grey-3"
|
||||
class="q-ma-md"
|
||||
>
|
||||
<span class="mlvalue"> {{ percsent(false) }} % </span>
|
||||
</q-circular-progress>
|
||||
<div class="text-center">
|
||||
<q-slider v-model="newsstate.lastnewstosent.numemail_sent" :min="0" readonly
|
||||
:max="newsstate.lastnewstosent.numemail_tot" :step="1" label label-always
|
||||
color="light-green"></q-slider>
|
||||
<q-slider
|
||||
v-model="newsstate.lastnewstosent.numemail_sent"
|
||||
:min="0"
|
||||
readonly
|
||||
:max="newsstate.lastnewstosent.numemail_tot"
|
||||
:step="1"
|
||||
label
|
||||
label-always
|
||||
color="light-green"
|
||||
></q-slider>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="newsstate.lastnewstosent.finish_job">
|
||||
<br />
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="green" text-color="white" icon="email">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="green"
|
||||
text-color="white"
|
||||
icon="email"
|
||||
>
|
||||
<span class="mlvalue">Invio Newsletter Completato</span>
|
||||
</q-chip>
|
||||
</div>
|
||||
|
||||
<div v-if="!newsstate.lastnewstosent.finish_job">
|
||||
<q-btn v-if="newsstate.lastnewstosent.activate" :loading="myloadingState" rounded outline
|
||||
@click="DisableNewsletter()" color="negative" icon="">
|
||||
<q-btn
|
||||
v-if="newsstate.lastnewstosent.activate"
|
||||
:loading="myloadingState"
|
||||
rounded
|
||||
outline
|
||||
@click="DisableNewsletter()"
|
||||
color="negative"
|
||||
icon=""
|
||||
>
|
||||
Ferma l'Invio della Newsletter
|
||||
<template v-slot:loading>
|
||||
<q-spinner-hourglass class="on-left" />
|
||||
Disattivazione Invio Newsletter ...
|
||||
</template>
|
||||
</q-btn>
|
||||
<q-btn v-if="!newsstate.lastnewstosent.activate" :loading="myloadingState" rounded outline
|
||||
@click="EnableNewsletter()" color="positive" icon="">
|
||||
<q-btn
|
||||
v-if="!newsstate.lastnewstosent.activate"
|
||||
:loading="myloadingState"
|
||||
rounded
|
||||
outline
|
||||
@click="EnableNewsletter()"
|
||||
color="positive"
|
||||
icon=""
|
||||
>
|
||||
Riattiva l'Invio della Newsletter
|
||||
<template v-slot:loading>
|
||||
<q-spinner-hourglass class="on-left" />
|
||||
@@ -362,8 +700,15 @@
|
||||
</q-btn>
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-inner-loading id="spinner2" :showing="myloading">
|
||||
<q-spinner-tail color="primary" size="4em"> </q-spinner-tail>
|
||||
<q-inner-loading
|
||||
id="spinner2"
|
||||
:showing="myloading"
|
||||
>
|
||||
<q-spinner-tail
|
||||
color="primary"
|
||||
size="4em"
|
||||
>
|
||||
</q-spinner-tail>
|
||||
</q-inner-loading>
|
||||
</q-card>
|
||||
</div>
|
||||
@@ -371,51 +716,106 @@
|
||||
</q-tab-panel>
|
||||
|
||||
<q-tab-panel name="newslist">
|
||||
<CTitleBanner bgcolor="bg-accent" title="Lista Newsletter Inviate:"></CTitleBanner>
|
||||
<CTitleBanner
|
||||
bgcolor="bg-accent"
|
||||
title="Lista Newsletter Inviate:"
|
||||
></CTitleBanner>
|
||||
|
||||
<CGridTableRec prop_mytitle="Newsletter" prop_mytable="newstosent" :prop_mycolumns="getcolnewstosent()"
|
||||
:prop_colkey="fieldsTable.getKeyByTable('newstosent')" nodataLabel="Nessuna Newsletter attualmente creata"
|
||||
noresultLabel="Il filtro selezionato non ha trovato nessun risultato">
|
||||
<CGridTableRec
|
||||
prop_mytitle="Newsletter"
|
||||
prop_mytable="newstosent"
|
||||
:prop_mycolumns="getcolnewstosent()"
|
||||
:prop_colkey="fieldsTable.getKeyByTable('newstosent')"
|
||||
nodataLabel="Nessuna Newsletter attualmente creata"
|
||||
noresultLabel="Il filtro selezionato non ha trovato nessun risultato"
|
||||
>
|
||||
</CGridTableRec>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="mailinglist">
|
||||
<div class="q-ma-md rounded-borders q-list--bordered">
|
||||
<CTitleBanner title="Lista Contatti:" bgcolor="bg-positive"></CTitleBanner>
|
||||
<CTitleBanner
|
||||
title="Lista Contatti:"
|
||||
bgcolor="bg-positive"
|
||||
></CTitleBanner>
|
||||
|
||||
<div class="q-ma-md q-pa-sm text-center rounded-borders q-list--bordered">
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="blue" text-color="white" icon="email">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
icon="email"
|
||||
>
|
||||
Email Totali:
|
||||
<span class="mlvalue">{{ newsstate.totemail }}</span>
|
||||
</q-chip>
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="green" text-color="white" icon="event_available">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="green"
|
||||
text-color="white"
|
||||
icon="event_available"
|
||||
>
|
||||
Email Sottoscritte:
|
||||
<span class="mlvalue">{{ newsstate.totsubscribed }}</span>
|
||||
</q-chip>
|
||||
<q-circular-progress show-value font-size="12px" :value="percsubscribed * 100" size="60px"
|
||||
:thickness="0.22" color="green" track-color="grey-3" class="q-ma-md">
|
||||
<q-circular-progress
|
||||
show-value
|
||||
font-size="12px"
|
||||
:value="percsubscribed * 100"
|
||||
size="60px"
|
||||
:thickness="0.22"
|
||||
color="green"
|
||||
track-color="grey-3"
|
||||
class="q-ma-md"
|
||||
>
|
||||
<span class="mlvalue"> {{ progresslabsubscribed() }} </span>
|
||||
</q-circular-progress>
|
||||
|
||||
<q-chip dense class="shadow-5 q-mb-md" color="orange" text-color="white" icon="">
|
||||
<q-chip
|
||||
dense
|
||||
class="shadow-5 q-mb-md"
|
||||
color="orange"
|
||||
text-color="white"
|
||||
icon=""
|
||||
>
|
||||
Email Desottoscritte:
|
||||
<span class="mlvalue">{{ newsstate.totunsubscribed }}</span>
|
||||
</q-chip>
|
||||
</div>
|
||||
|
||||
<CGridTableRec prop_mytitle="Lista Contatti" :prop_mytable="toolsext.TABMAILINGLIST"
|
||||
:prop_mycolumns="getcolmailinglist()" :prop_colkey="fieldsTable.getKeyByTable('mailinglist')"
|
||||
<CGridTableRec
|
||||
prop_mytitle="Lista Contatti"
|
||||
:prop_mytable="toolsext.TABMAILINGLIST"
|
||||
:prop_mycolumns="getcolmailinglist()"
|
||||
:prop_colkey="fieldsTable.getKeyByTable('mailinglist')"
|
||||
nodataLabel="Nessuna Lista Contatti attualmente creata"
|
||||
noresultLabel="Il filtro selezionato non ha trovato nessun risultato">
|
||||
noresultLabel="Il filtro selezionato non ha trovato nessun risultato"
|
||||
>
|
||||
</CGridTableRec>
|
||||
|
||||
<CTitleBanner title="Importa lista di Email:"></CTitleBanner>
|
||||
<div class="q-ma-md q-pa-sm text-center rounded-borders q-list--bordered">
|
||||
<q-input v-model="mailinglist_imported" autofocus filled bordered color="blue-12" @keyup.enter.stop
|
||||
type="textarea">
|
||||
<q-input
|
||||
v-model="mailinglist_imported"
|
||||
autofocus
|
||||
filled
|
||||
bordered
|
||||
color="blue-12"
|
||||
@keyup.enter.stop
|
||||
type="textarea"
|
||||
>
|
||||
</q-input>
|
||||
<div class="q-ma-md q-pa-sm text-center">
|
||||
<q-btn :loading="myloadingImport" rounded outline :disable="mailinglist_imported === ''"
|
||||
@click="importMailinglist()" color="primary" icon="email">
|
||||
<q-btn
|
||||
:loading="myloadingImport"
|
||||
rounded
|
||||
outline
|
||||
:disable="mailinglist_imported === ''"
|
||||
@click="importMailinglist()"
|
||||
color="primary"
|
||||
icon="email"
|
||||
>
|
||||
Importa
|
||||
<template v-slot:loading>
|
||||
<q-spinner-hourglass class="on-left" />
|
||||
@@ -424,10 +824,21 @@
|
||||
</q-btn>
|
||||
</div>
|
||||
|
||||
<transition enter-active-class="animated fadeIn" leave-active-class="animated fadeOut" appear>
|
||||
<transition
|
||||
enter-active-class="animated fadeIn"
|
||||
leave-active-class="animated fadeOut"
|
||||
appear
|
||||
>
|
||||
<div>
|
||||
<CTitleBanner v-if="errimport" bgcolor="bg-warning" :title="myrisimport"></CTitleBanner>
|
||||
<CTitleBanner v-if="okimport" :title="myrisimport"></CTitleBanner>
|
||||
<CTitleBanner
|
||||
v-if="errimport"
|
||||
bgcolor="bg-warning"
|
||||
:title="myrisimport"
|
||||
></CTitleBanner>
|
||||
<CTitleBanner
|
||||
v-if="okimport"
|
||||
:title="myrisimport"
|
||||
></CTitleBanner>
|
||||
</div>
|
||||
</transition>
|
||||
</div>
|
||||
@@ -437,8 +848,7 @@
|
||||
</q-card>
|
||||
</CMyPage>
|
||||
</template>
|
||||
<script lang="ts" src="./newsletter.ts">
|
||||
</script>
|
||||
<script lang="ts" src="./newsletter.ts"></script>
|
||||
<style lang="scss" scoped>
|
||||
@import './newsletter.scss';
|
||||
</style>
|
||||
|
||||
@@ -107,6 +107,13 @@ function getRoutesAd(site: ISites) {
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 10,
|
||||
name: 'newsletter.destnewsletter', path: '/admin/newsletter/destnewsletter', materialIcon: 'fas fa-users',
|
||||
component: () => import('@src/rootgen/admin/newsletter/newsletter.vue'),
|
||||
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 20,
|
||||
|
||||
@@ -105,7 +105,7 @@ const msg_it = {
|
||||
origine: 'Origine',
|
||||
ingredienti: 'Ingredienti',
|
||||
descrizione_breve_macro: 'Descrizione Breve Macro',
|
||||
descr_trafiletto_catalogo: 'Trafiletto per Cataloghi',
|
||||
descr_trafiletto_catalogo: 'Sinossi per Cataloghi',
|
||||
descrizione_completa_macro: 'Descrizione Estesa',
|
||||
valori_nutrizionali: 'Valori Nutrizionali',
|
||||
note: 'Note',
|
||||
@@ -435,6 +435,10 @@ const msg_it = {
|
||||
img2: 'Immagine 2',
|
||||
content2: 'Contenuto 2',
|
||||
options: 'Opzioni',
|
||||
disclaimer: 'Disclaimer',
|
||||
piedipagina: 'piedipagina',
|
||||
firma: 'firma',
|
||||
|
||||
},
|
||||
dashboard: {
|
||||
info: 'Info',
|
||||
@@ -465,6 +469,7 @@ const msg_it = {
|
||||
nave_partita: 'Partita il',
|
||||
facilitatore: 'Facilitatore',
|
||||
Editor: 'Editor',
|
||||
Commerciale: 'Commerciale',
|
||||
zoomeri: 'Zoomeri',
|
||||
grafico: 'Grafico',
|
||||
/* sonomediatore: 'Quando diventi Meditore vieni contattato da un <strong>FACILITATORE</strong>, con lui devi:<br><ol class="lista">' +
|
||||
@@ -1117,6 +1122,7 @@ const msg_it = {
|
||||
serversettings: 'Server',
|
||||
others: 'Altro',
|
||||
templemail: 'Modello Email',
|
||||
destnewsletter: 'Destinatari',
|
||||
datetoSent: 'DataOra Invio',
|
||||
activate: 'Attivato',
|
||||
numemail_tot: 'Email Totali',
|
||||
@@ -2084,6 +2090,11 @@ const msg_it = {
|
||||
TO_RESOLV: 'Da Risolvere!',
|
||||
},
|
||||
|
||||
destnewsletter: {
|
||||
descr: 'Descrizione',
|
||||
tipodest_id: 'Tipo Destinatario',
|
||||
}
|
||||
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -118,6 +118,7 @@ export const colmailinglist = [
|
||||
AddCol({ name: 'surname', label_trans: 'reg.surname' }),
|
||||
AddCol({ name: 'email', label_trans: 'reg.email' }),
|
||||
AddCol({ name: 'news_on', label_trans: 'newsletter.news_on', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'diario_on', label_trans: 'newsletter.diario_on', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'email_errata', label_trans: 'newsletter.email_errata', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'lastid_newstosent', label_trans: 'reg.lastid_newstosent', fieldtype: costanti.FieldType.string }),
|
||||
AddCol(DeleteRec),
|
||||
@@ -151,29 +152,34 @@ export const colTableCatalogList = [
|
||||
label_trans: 'cataloglist.argomenti',
|
||||
fieldtype: costanti.FieldType.multiselect,
|
||||
jointable: 'catprtotali',
|
||||
isadvanced_field: true,
|
||||
}),
|
||||
AddCol({
|
||||
name: 'condition_andor',
|
||||
label_trans: 'cataloglist.op_andor',
|
||||
fieldtype: costanti.FieldType.op_andor,
|
||||
isadvanced_field: true,
|
||||
}),
|
||||
AddCol({
|
||||
name: 'idCollane',
|
||||
label_trans: 'cataloglist.collane',
|
||||
fieldtype: costanti.FieldType.multiselect,
|
||||
jointable: 'collanastotali',
|
||||
isadvanced_field: true,
|
||||
}),
|
||||
AddCol({
|
||||
name: 'editore',
|
||||
label_trans: 'cataloglist.editore',
|
||||
fieldtype: costanti.FieldType.multiselect,
|
||||
jointable: 'publishers_totali',
|
||||
isadvanced_field: true,
|
||||
}),
|
||||
AddCol({
|
||||
name: 'idTipoFormato',
|
||||
label_trans: 'cataloglist.idTipoFormato',
|
||||
fieldtype: costanti.FieldType.multiselect,
|
||||
jointable: 't_web_tipiformatos',
|
||||
isadvanced_field: true,
|
||||
}),
|
||||
|
||||
AddCol({ name: 'descr_introduttiva', label_trans: 'cataloglist.descr_introduttiva', fieldtype: costanti.FieldType.html, maxlength: 1300 }),
|
||||
@@ -517,10 +523,24 @@ export const colopzemail = [
|
||||
AddCol(DuplicateRec),
|
||||
]
|
||||
|
||||
export const coldestnewsletter = [
|
||||
AddCol({ name: 'descr', label_trans: 'destnewsletter.descr' }),
|
||||
AddCol({
|
||||
name: 'tipodest_id',
|
||||
label_trans: 'destnewsletter.tipodest_id',
|
||||
fieldtype: costanti.FieldType.select,
|
||||
jointable: 'tipodest',
|
||||
}),
|
||||
]
|
||||
|
||||
|
||||
export const coltemplemail = [
|
||||
AddCol({ name: 'subject', label_trans: 'templemail.subject' }),
|
||||
AddCol({ name: 'testoheadermail', label_trans: 'templemail.testoheadermail', fieldtype: costanti.FieldType.html }),
|
||||
AddCol({ name: 'content', label_trans: 'templemail.content', fieldtype: costanti.FieldType.html }),
|
||||
AddCol({ name: 'disclaimer', label_trans: 'templemail.disclaimer', fieldtype: costanti.FieldType.html }),
|
||||
AddCol({ name: 'piedipagina', label_trans: 'templemail.piedipagina', fieldtype: costanti.FieldType.html }),
|
||||
AddCol({ name: 'firma', label_trans: 'templemail.firma', fieldtype: costanti.FieldType.html }),
|
||||
AddCol({ name: 'img', label_trans: 'templemail.img' }),
|
||||
AddCol({ name: 'content2', label_trans: 'templemail.content2', fieldtype: costanti.FieldType.html }),
|
||||
AddCol({ name: 'img2', label_trans: 'templemail.img2' }),
|
||||
@@ -537,6 +557,7 @@ export const coltemplemail = [
|
||||
export const colnewstosent = [
|
||||
AddCol({ name: 'label', label_trans: 'event.title' }),
|
||||
AddCol({ name: 'templemail_str', label_trans: 'newsletter.templemail' }),
|
||||
AddCol({ name: 'destnewsletter_str', label_trans: 'newsletter.destnewsletter' }),
|
||||
AddCol({ name: 'datetoSent', label_trans: 'newsletter.datetoSent', fieldtype: costanti.FieldType.date }),
|
||||
AddCol({ name: 'activate', label_trans: 'newsletter.activate', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'numemail_tot', label_trans: 'newsletter.numemail_tot', fieldtype: costanti.FieldType.number }),
|
||||
@@ -3244,6 +3265,8 @@ export const colTableUsers = [
|
||||
// AddCol({ name: 'aportador_solidario_ind_order', label_trans: 'reg.aportador_solidario_ind_order' }),
|
||||
// AddCol({ name: 'aportador_solidario_nome_completo', label_trans: 'reg.aportador_solidario_nome_completo' }),
|
||||
AddCol({ name: 'news_on', label_trans: 'reg.news_on', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'test', label_trans: 'reg.test', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'diario_on', label_trans: 'reg.diario_on', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'email_errata', label_trans: 'reg.email_errata', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'lastid_newstosent', label_trans: 'reg.lastid_newstosent', fieldtype: costanti.FieldType.string }),
|
||||
AddCol({ name: 'aportador_solidario', label_trans: 'reg.aportador_solidario' }),
|
||||
@@ -3533,6 +3556,8 @@ export const colTableUsersISP = [
|
||||
}),
|
||||
|
||||
AddCol({ name: 'news_on', label_trans: 'reg.news_on', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'diario_on', label_trans: 'reg.diario_on', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'test', label_trans: 'reg.test', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'email_errata', label_trans: 'reg.email_errata', fieldtype: costanti.FieldType.boolean }),
|
||||
AddCol({ name: 'lastid_newstosent', label_trans: 'reg.lastid_newstosent', fieldtype: costanti.FieldType.string }),
|
||||
|
||||
@@ -4628,6 +4653,14 @@ export const fieldsTable = {
|
||||
collabel: 'subject',
|
||||
onlyAdmin: true,
|
||||
},
|
||||
{
|
||||
value: 'destnewsletter',
|
||||
label: 'Dest Newsletter',
|
||||
columns: coldestnewsletter,
|
||||
colkey: '_id',
|
||||
collabel: 'descr',
|
||||
onlyAdmin: true,
|
||||
},
|
||||
{
|
||||
value: 'opzemail',
|
||||
label: 'Opzioni Email',
|
||||
@@ -5162,6 +5195,13 @@ export const fieldsTable = {
|
||||
colkey: 'value',
|
||||
collabel: 'label',
|
||||
},
|
||||
{
|
||||
value: 'tipodest',
|
||||
label: 'Template Cataloghi',
|
||||
columns: colTableGeneric,
|
||||
colkey: 'value',
|
||||
collabel: 'label',
|
||||
},
|
||||
],
|
||||
|
||||
}
|
||||
|
||||
@@ -2677,6 +2677,7 @@ export const tools = {
|
||||
|| (elem.onlyNotSoci && !userStore.my.profile.socio)
|
||||
|| (elem.onlyFacilitatore && userStore.isFacilitatore)
|
||||
|| (elem.onlyEditor && userStore.isEditor)
|
||||
|| (elem.onlyCommerciale && userStore.isCommerciale)
|
||||
|| (elem.onlyGrafico && userStore.isGrafico)
|
||||
|| (elem.onlyDepartment && userStore.isDepartment)
|
||||
|| ((!elem.onlyAdmin) && (!elem.onlyManager) && (!elem.onlyFacilitatore) && (!elem.onlyEditor) && (!elem.onlyDepartment)
|
||||
@@ -3206,6 +3207,11 @@ export const tools = {
|
||||
return userStore.isGrafico || userStore.isAdmin
|
||||
},
|
||||
|
||||
isCommerciale() {
|
||||
const userStore = useUserStore()
|
||||
return userStore.isCommerciale || userStore.isAdmin
|
||||
},
|
||||
|
||||
isTeacher() {
|
||||
const userStore = useUserStore()
|
||||
return userStore.isTeacher
|
||||
@@ -7617,7 +7623,7 @@ export const tools = {
|
||||
// return true
|
||||
|
||||
if (shared_consts.TABLES_PER_EDITORI.includes(tablesel)) {
|
||||
if (userStore.isEditor || userStore.isGrafico || userStore.isAdmin) {
|
||||
if (userStore.isCommerciale || userStore.isEditor || userStore.isGrafico || userStore.isAdmin) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -9823,7 +9829,7 @@ export const tools = {
|
||||
table: 'lista_editori',
|
||||
key: 'referenti',
|
||||
type: costanti.FieldType.select,
|
||||
value: this.getCookie(this.COOK_SEARCH + costanti.FILTER_SEP + shared_consts.TABLES_CATALOG + costanti.FILTER_SEP + 'referente', costanti.FILTER_TUTTI),
|
||||
value: this.getCookie(this.COOK_SEARCH + costanti.FILTER_SEP + shared_consts.TABLES_LISTA_EDITORI + costanti.FILTER_SEP + 'referente', costanti.FILTER_TUTTI),
|
||||
keycookie: '',
|
||||
addall: true,
|
||||
arrvalue: [],
|
||||
|
||||
@@ -91,6 +91,7 @@ export const toolsext = {
|
||||
TABMYBOT: 'bots',
|
||||
TABCALZOOM: 'calzoom',
|
||||
TABTEMPLEMAIL: 'templemail',
|
||||
TABDESTNEWSLETTER: 'destnewsletter',
|
||||
TABOPZEMAIL: 'opzemail',
|
||||
TABSHAREWITHUS: 'sharewithus',
|
||||
TABTYPEHOSP: 'typehosps',
|
||||
|
||||
@@ -312,14 +312,26 @@ export const useProducts = defineStore('Products', {
|
||||
return mystr;
|
||||
},
|
||||
|
||||
getTotaleOrdineByOrdId: (state: IProductsState) => (idOrdine: string, idGasordine: string, mostra_solo_ordini_produttore: boolean): number => {
|
||||
getTotaleOrdineByOrdId: (state: IProductsState) => (idOrdine: string, idGasordine: string, totale: boolean, mostra_solo_ordini_produttore: boolean, status: number): number => {
|
||||
|
||||
const arrprod = state.orders.filter((rec: IOrderCart) => {
|
||||
let arrprod = []
|
||||
|
||||
if (totale) {
|
||||
arrprod = state.orders.filter((rec: IOrderCart) => {
|
||||
if (idGasordine && !rec.items?.some(item => item.order && item.order.idGasordine === idGasordine) || (rec.status !== status)) {
|
||||
return false; // Skip records not matching gasordine condition
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
} else {
|
||||
arrprod = state.orders.filter((rec: IOrderCart) => {
|
||||
if (idGasordine && !rec.items?.some(item => item.order && item.order.idGasordine === idGasordine) || (rec._id !== idOrdine)) {
|
||||
return false; // Skip records not matching gasordine condition
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
let subtotalPrice = 0
|
||||
|
||||
|
||||
@@ -1153,6 +1153,7 @@ export const useUserStore = defineStore('UserStore', {
|
||||
if (res.data) {
|
||||
globalStore.serv_settings = res.data.serv_settings
|
||||
globalStore.templemail = res.data.templemail
|
||||
globalStore.destnewsletter = res.data.destnewsletter
|
||||
globalStore.opzemail = res.data.opzemail
|
||||
}
|
||||
|
||||
@@ -1205,6 +1206,7 @@ export const useUserStore = defineStore('UserStore', {
|
||||
this.isDepartment = tools.isBitActive(this.my.perm, shared_consts.Permissions.Department.value)
|
||||
this.isTeacher = tools.isBitActive(this.my.perm, shared_consts.Permissions.Teacher.value)
|
||||
this.isEditor = tools.isBitActive(this.my.perm, shared_consts.Permissions.Editor.value)
|
||||
this.isCommerciale = tools.isBitActive(this.my.perm, shared_consts.Permissions.Commerciale.value)
|
||||
this.isGrafico = tools.isBitActive(this.my.perm, shared_consts.Permissions.Grafico.value)
|
||||
|
||||
this.my.tokens = []
|
||||
|
||||
@@ -16,7 +16,8 @@ import type {
|
||||
IOptCatalogo,
|
||||
IProduct,
|
||||
IProductInfo,
|
||||
IVariazione
|
||||
IVariazione,
|
||||
IDestNewsletter
|
||||
} from '@model';
|
||||
import {
|
||||
ICity, IMySkill,
|
||||
@@ -420,6 +421,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
else if (table === toolsext.TABNEWSLETTER) ris = state.newstosent
|
||||
else if (table === toolsext.TABGALLERY) ris = state.gallery
|
||||
else if (table === toolsext.TABTEMPLEMAIL) ris = state.templemail
|
||||
else if (table === toolsext.TABDESTNEWSLETTER) ris = state.destnewsletter
|
||||
else if (table === toolsext.TABOPZEMAIL) ris = state.opzemail
|
||||
else if (table === toolsext.TABMAILINGLIST) ris = state.mailinglist
|
||||
else if (table === toolsext.TABMYPAGE) ris = state.mypage
|
||||
@@ -532,6 +534,10 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
const myrec = mystate.templemail.find((rec) => rec._id === templid)
|
||||
return (!!myrec) ? myrec.subject! : ''
|
||||
},
|
||||
getdestnewsletterbyId: (mystate: IGlobalState) => (id: string): string => {
|
||||
const myrec = mystate.destnewsletter.find((rec: IDestNewsletter) => rec._id === id)
|
||||
return (!!myrec) ? myrec.descr! : ''
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
@@ -2213,6 +2219,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
else if (table === toolsext.TABCALDATE) myarr = this.getArrDateEvent()
|
||||
else if (table === toolsext.TABCALALLDATE) myarr = this.getArrAllDateEvent()
|
||||
else if (table === toolsext.TABTYPEHOSP) myarr = shared_consts.TypeHosps
|
||||
else if (table === 'tipodest') myarr = shared_consts.DESTNEWSLETTER_ARRAY
|
||||
else if (table === 'versions') myarr = shared_consts.VERSIONI_PRODOTTO
|
||||
else if (table === toolsext.TABPEOPLE) myarr = shared_consts.People
|
||||
else if (table === toolsext.TABTYPEACCOM) myarr = shared_consts.TypeAccom
|
||||
|
||||
@@ -771,6 +771,11 @@
|
||||
color="positive"
|
||||
@click="EseguiFunz('MyElemSetIdPageInsteadThePah')"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
label="Abilita a Tutti la Newsletter news_on !"
|
||||
color="positive"
|
||||
@click="EseguiFunz('EnableNewsOn_ToAll')"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
label="getGM_Lista_Argomenti"
|
||||
color="positive"
|
||||
|
||||
@@ -52,6 +52,16 @@
|
||||
color="accent"
|
||||
@click="EseguiFunz('updateAllBook', {usaDBGMLocale: true, caricatutti: true})"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
label="Statistiche Macro"
|
||||
color="primary"
|
||||
@click="EseguiFunz('StatMacro')"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
label="Cancella Prodotti non piu aggiornati da GM"
|
||||
color="negative"
|
||||
@click="EseguiFunz('removeProductInfoWithoutDateUpdatedFromGM')"
|
||||
></q-btn>
|
||||
|
||||
<!--
|
||||
<q-btn
|
||||
|
||||
@@ -96,7 +96,7 @@ export default defineComponent({
|
||||
|
||||
const generatinglist = ref(false)
|
||||
|
||||
const optrigenera = ref<IOptRigenera>({ visibilitaDisp: costanti.DISP.DISPONIBILI, stato: costanti.STATO.IN_COMMERCIO, rig_mod: false })
|
||||
const optrigenera = ref<IOptRigenera>({ visibilitaDisp: costanti.DISP.DISPONIBILI, stato: costanti.STATO.IN_COMMERCIO, rig_mod: costanti.RIGENERAMOD.SOVRASCRIVI })
|
||||
|
||||
const optcatalogo = ref(<IOptCatalogo>{ ...props.modelValue });
|
||||
|
||||
@@ -567,6 +567,13 @@ export default defineComponent({
|
||||
|
||||
const trovatocatalogo = getCatalogoByMyPage.value
|
||||
|
||||
if (boolfiltroVuotoProductTypes && boolfiltroVuotoExcludeProductTypes && boolfiltroVuotoidTipologie && boolfiltroVuotoidTipoFormato && boolfiltroVuotoEditore && boolfiltroVuotoCollane && boolfiltroVuotoArgomenti
|
||||
&& (catstr === '' )
|
||||
) {
|
||||
// Nessun filtro selezionato, pertanto non mostrare niente!
|
||||
return []
|
||||
}
|
||||
|
||||
const arrris = products
|
||||
.filter((product: IProduct) => {
|
||||
if (!product || !product.productInfo) {
|
||||
@@ -580,7 +587,7 @@ export default defineComponent({
|
||||
|
||||
if (!(optrigenera.value.visibilitaDisp === costanti.DISP.TUTTI ||
|
||||
(optrigenera.value.visibilitaDisp === costanti.DISP.ESAURITI && productStore.isEsaurito(product)) ||
|
||||
(optrigenera.value.visibilitaDisp === costanti.DISP.DISPONIBILI && (productStore.isDisponibile(product) || productStore.isPrevendita(product))))) {
|
||||
(optrigenera.value.visibilitaDisp === costanti.DISP.DISPONIBILI && (productStore.isDisponibile(product) || productStore.isPrevendita(product.productInfo))))) {
|
||||
return false;
|
||||
}
|
||||
if (!(optrigenera.value.stato === costanti.STATO.TUTTI ||
|
||||
@@ -608,9 +615,12 @@ export default defineComponent({
|
||||
if (!optcatalogo.value.showListaArgomenti) {
|
||||
|
||||
} else {
|
||||
hasCategoria = (catstr === costanti.NO_CATEGORY)
|
||||
? (boolfiltroVuotoCat ? se_tutti_veri : product.productInfo.idCatProds.length === 0)
|
||||
: !catstr || (product.productInfo.idCatProds || []).includes(catstr);
|
||||
const isCatVuoto = boolfiltroVuotoCat || (product.productInfo.idCatProds || []).length === 0;
|
||||
const isCatSenzaArgomento = catstr === costanti.NO_CATEGORY;
|
||||
const isCatCorretto = !catstr || (product.productInfo.idCatProds || []).includes(catstr);
|
||||
hasCategoria = (isCatSenzaArgomento && isCatVuoto)
|
||||
? true
|
||||
: isCatCorretto;
|
||||
|
||||
hasArgomentiCat = boolfiltroVuotoArgomenti
|
||||
? se_tutti_veri
|
||||
@@ -1098,11 +1108,13 @@ export default defineComponent({
|
||||
// console.log('indadded', indadded)
|
||||
if (optcatalogo.value.maxnumlibri! > 0) {
|
||||
if (indtotale > optcatalogo.value.maxnumlibri!)
|
||||
return
|
||||
break
|
||||
|
||||
//} else {
|
||||
// if (indtotale > 5000)
|
||||
// return
|
||||
|
||||
|
||||
} else {
|
||||
// if (indtotale > 1000)
|
||||
// break
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1207,6 +1219,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
optrigenera.value.visibilitaDisp = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_DISP', costanti.DISP.DISPONIBILI)
|
||||
if (!showListaArgomenti.value)
|
||||
optrigenera.value.rig_mod = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'RIG_MOD', costanti.RIGENERAMOD.AGGIUNGI_SOLO)
|
||||
optrigenera.value.stato = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_STATO', costanti.STATO.IN_COMMERCIO)
|
||||
|
||||
|
||||
@@ -8,13 +8,15 @@
|
||||
{{ getTitoloCatalogo() }}
|
||||
</div>
|
||||
<div
|
||||
v-if="ispageCatalogata && tools.isEditor() && getCatalogoByMyPage?.referenti.length > 0"
|
||||
v-if="
|
||||
ispageCatalogata && (tools.isEditor() || tools.isCommerciale()) && getCatalogoByMyPage?.referenti.length > 0
|
||||
"
|
||||
class="text-h7 text-center text-red q-ma-sm"
|
||||
>
|
||||
{{ $t('cataloglist.referenti') }}: <span class="text-bold">{{ getReferentiCatalogo() }}</span>
|
||||
</div>
|
||||
<q-tabs
|
||||
v-if="optcatalogo.pdf && tools.isEditor()"
|
||||
v-if="optcatalogo.pdf && (tools.isEditor() || tools.isCommerciale())"
|
||||
v-model="tabcatalogo"
|
||||
dense
|
||||
class="bg-green text-white"
|
||||
@@ -221,32 +223,6 @@
|
||||
>
|
||||
</q-spinner-tail>
|
||||
</q-inner-loading>
|
||||
<div>
|
||||
<q-btn
|
||||
v-if="optcatalogo.pdf && !optcatalogo.generazionePDFInCorso"
|
||||
:label="`Prepara PDF`"
|
||||
@click="preparePDF"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
v-if="optcatalogo.generazionePDFInCorso"
|
||||
:label="`Termina Generazione`"
|
||||
@click="terminaPDF"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
v-if="optcatalogo.pdf && optcatalogo.generazionePDFInCorso"
|
||||
:label="`Genera PDF ` + getPdfFilename()"
|
||||
@click="generatePDF()"
|
||||
color="positive"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
label="Debug"
|
||||
@click="toggleDebug()"
|
||||
:push="optcatalogo.indebug"
|
||||
:color="optcatalogo.indebug ? `positive` : 'primary'"
|
||||
></q-btn>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row justify-center q-mx-auto bg-blue-1">
|
||||
<div class="text-center">
|
||||
<q-spinner
|
||||
@@ -293,7 +269,7 @@
|
||||
>
|
||||
</q-tab>
|
||||
<q-tab
|
||||
v-if="showListaArgomenti"
|
||||
v-if="showListaArgomenti && false"
|
||||
name="ricerca"
|
||||
icon="fas fa-search"
|
||||
label="Cerca"
|
||||
@@ -305,6 +281,13 @@
|
||||
>1</q-badge
|
||||
>
|
||||
</q-tab>
|
||||
<q-tab
|
||||
v-if="showListaArgomenti"
|
||||
name="genera"
|
||||
icon="fas fa-book"
|
||||
label="Genera"
|
||||
>
|
||||
</q-tab>
|
||||
</q-tabs>
|
||||
<q-tab-panels
|
||||
v-model="tabvisu"
|
||||
@@ -380,6 +363,32 @@
|
||||
/>-->
|
||||
</q-toolbar>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="genera">
|
||||
<div v-if="tools.isEditor() || tools.isCommerciale()">
|
||||
<q-btn
|
||||
v-if="optcatalogo.pdf && !optcatalogo.generazionePDFInCorso"
|
||||
:label="`Prepara PDF`"
|
||||
@click="preparePDF"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
v-if="optcatalogo.generazionePDFInCorso"
|
||||
:label="`Termina Generazione`"
|
||||
@click="terminaPDF"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
v-if="optcatalogo.pdf && optcatalogo.generazionePDFInCorso"
|
||||
:label="`Genera PDF ` + getPdfFilename()"
|
||||
@click="generatePDF()"
|
||||
color="positive"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
label="Debug"
|
||||
@click="toggleDebug()"
|
||||
:push="optcatalogo.indebug"
|
||||
:color="optcatalogo.indebug ? `positive` : 'primary'"
|
||||
></q-btn>
|
||||
</div>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="ricerca">
|
||||
<div
|
||||
class="col"
|
||||
@@ -785,7 +794,6 @@
|
||||
</pre>
|
||||
</q-tab-panel>
|
||||
</q-tab-panels>
|
||||
|
||||
</div>
|
||||
</q-page>
|
||||
<CMyDialog
|
||||
|
||||
@@ -315,20 +315,20 @@ export default defineComponent({
|
||||
|
||||
watch(() => mostra_codice.value, (newval, oldval) => {
|
||||
tools.setCookie(tools.COOK_SHOWCODICE, mostra_codice.value ? '1' : '0')
|
||||
updateorders(true)
|
||||
updateorders(true, true)
|
||||
})
|
||||
watch(() => mostra_cat.value, (newval, oldval) => {
|
||||
tools.setCookie(tools.COOK_SHOWCAT, mostra_cat.value ? '1' : '0')
|
||||
updateorders(true)
|
||||
updateorders(true, true)
|
||||
})
|
||||
watch(() => showWhichCode.value, (newval, oldval) => {
|
||||
tools.setCookie(tools.COOK_SHOWCODE, showWhichCode.value.toString())
|
||||
updateorders(true)
|
||||
updateorders(true, true)
|
||||
})
|
||||
|
||||
watch(() => mostra_solo_ordini_produttore.value, (newval, oldval) => {
|
||||
tools.setCookie(tools.COOK_SHOWORDPROD, mostra_solo_ordini_produttore.value ? '1' : '0')
|
||||
updateorders(true)
|
||||
updateorders(false, true)
|
||||
})
|
||||
|
||||
// const { setValDb, getValDb } = MixinBase()
|
||||
@@ -381,8 +381,8 @@ export default defineComponent({
|
||||
return listproductstotal
|
||||
}
|
||||
|
||||
function getTotaleOrdineByOrdId(id: string, idGasordine: string): string {
|
||||
return productStore.getTotaleOrdineByOrdId(id, idGasordine, mostra_solo_ordini_produttore.value).toFixed(2)
|
||||
function getTotaleOrdineByOrdId(id: string, idGasordine: string, totale: boolean): string {
|
||||
return productStore.getTotaleOrdineByOrdId(id, idGasordine, totale, mostra_solo_ordini_produttore.value, taborders.value).toFixed(2)
|
||||
}
|
||||
|
||||
function getOrdersCartWithTotals(): any[] {
|
||||
@@ -428,7 +428,7 @@ export default defineComponent({
|
||||
return productStore.getOrdersAllCart(storeGasordine.value)
|
||||
}
|
||||
|
||||
function updateorders(updatetab: boolean) {
|
||||
function updateorders(updatetab: boolean, notupdatetabsel: boolean) {
|
||||
|
||||
// Rimuovi dalla lista columns_listaTotali il record "codice_interno" se mostra_codice.value = false
|
||||
columns_listafiltrati.value = columns_listaTotali.value.filter((column: any) => {
|
||||
@@ -460,6 +460,7 @@ export default defineComponent({
|
||||
arrnumstatus.value[status] = allorders.filter((rec) => (rec.status === status)).reduce((sum, item) => sum + 1, 0)
|
||||
}
|
||||
|
||||
if (!notupdatetabsel)
|
||||
selectfirstavailable()
|
||||
}
|
||||
|
||||
|
||||
@@ -222,7 +222,8 @@
|
||||
>{{
|
||||
getTotaleOrdineByOrdId(
|
||||
props.row._id,
|
||||
storeGasordine
|
||||
storeGasordine,
|
||||
props.row.user.name === 'TOTALI'
|
||||
)
|
||||
}}
|
||||
€</q-item-label
|
||||
@@ -457,7 +458,7 @@
|
||||
<span
|
||||
:class="props.row.user.name !== 'TOTALI' ? '' : 'totali'"
|
||||
>{{
|
||||
getTotaleOrdineByOrdId(props.row._id, storeGasordine)
|
||||
getTotaleOrdineByOrdId(props.row._id, storeGasordine, props.row.user.name === 'TOTALI')
|
||||
}}
|
||||
€</span
|
||||
>
|
||||
@@ -578,7 +579,9 @@
|
||||
|
||||
<br>
|
||||
</div>
|
||||
--></div>
|
||||
-->
|
||||
|
||||
</div>
|
||||
<div v-else-if="tabpages === shared_consts.OrderPages.LISTA_TOTALI.value">
|
||||
<div class="q-pa-sm">
|
||||
<q-btn
|
||||
|
||||
@@ -36,7 +36,7 @@ export default defineComponent({
|
||||
|
||||
function load() {
|
||||
// console.log('load')
|
||||
param.value = { em: $route.query.em, mc: $route.query.mc, locale: tools.getLocale(), email: $route.query.email }
|
||||
param.value = { em: $route.query.em, mc: $route.query.mc, locale: tools.getLocale(), email: $route.query.email, diario_on: $route.query.diario }
|
||||
console.log('idlink = ', param.value)
|
||||
let ris = null;
|
||||
ris = userStore.unsubscribe_news_on_fielduser(param.value)
|
||||
|
||||
49
yarn.lock
49
yarn.lock
@@ -2616,6 +2616,33 @@
|
||||
magic-string "^0.25.0"
|
||||
string.prototype.matchall "^4.0.6"
|
||||
|
||||
"@svgdotjs/svg.draggable.js@^3.0.4":
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/@svgdotjs/svg.draggable.js/-/svg.draggable.js-3.0.6.tgz#bca1065ec27b1dbae5a92a0558777ed964a395cb"
|
||||
integrity sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA==
|
||||
|
||||
"@svgdotjs/svg.filter.js@^3.0.8":
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.9.tgz#758e336b79e73a6797358d655b60842131a9a52b"
|
||||
integrity sha512-/69XMRCDoam2HgC4ldHIaDgeQf1ViHIsa0Ld4uWgiXtZ+E24DWHe/9Ib6kbNiZ7WRIdlVokUDR1Fg0kjIpkfbw==
|
||||
dependencies:
|
||||
"@svgdotjs/svg.js" "^3.2.4"
|
||||
|
||||
"@svgdotjs/svg.js@^3.2.4":
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@svgdotjs/svg.js/-/svg.js-3.2.4.tgz#4716be92a64c66b29921b63f7235fcfb953fb13a"
|
||||
integrity sha512-BjJ/7vWNowlX3Z8O4ywT58DqbNRyYlkk6Yz/D13aB7hGmfQTvGX4Tkgtm/ApYlu9M7lCQi15xUEidqMUmdMYwg==
|
||||
|
||||
"@svgdotjs/svg.resize.js@^2.0.2":
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@svgdotjs/svg.resize.js/-/svg.resize.js-2.0.5.tgz#732e4cae15d09ad3021adeac63bc9fad0dc7255a"
|
||||
integrity sha512-4heRW4B1QrJeENfi7326lUPYBCevj78FJs8kfeDxn5st0IYPIRXoTtOSYvTzFWgaWWXd3YCDE6ao4fmv91RthA==
|
||||
|
||||
"@svgdotjs/svg.select.js@^4.0.1":
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@svgdotjs/svg.select.js/-/svg.select.js-4.0.2.tgz#80a10409e6c73206218690eac5c9f94f8c8909b5"
|
||||
integrity sha512-5gWdrvoQX3keo03SCmgaBbD+kFftq0F/f2bzCbNnpkkvW6tk4rl4MakORzFuNjvXPWwB4az9GwuvVxQVnjaK2g==
|
||||
|
||||
"@swc/core-darwin-arm64@1.11.12":
|
||||
version "1.11.12"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.12.tgz#3fcc7fd52844c1b0486a38b338331c9efa1d240b"
|
||||
@@ -3790,6 +3817,11 @@
|
||||
dependencies:
|
||||
vue-demi "^0.13.11"
|
||||
|
||||
"@yr/monotone-cubic-spline@^1.0.3":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz#7272d89f8e4f6fb7a1600c28c378cc18d3b577b9"
|
||||
integrity sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==
|
||||
|
||||
abort-controller@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
|
||||
@@ -3912,6 +3944,18 @@ anymatch@^3.0.3, anymatch@~3.1.2:
|
||||
normalize-path "^3.0.0"
|
||||
picomatch "^2.0.4"
|
||||
|
||||
apexcharts@^4.7.0:
|
||||
version "4.7.0"
|
||||
resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-4.7.0.tgz#27e578a2fd66847d8ea425aeea1de56d6be42f21"
|
||||
integrity sha512-iZSrrBGvVlL+nt2B1NpqfDuBZ9jX61X9I2+XV0hlYXHtTwhwLTHDKGXjNXAgFBDLuvSYCB/rq2nPWVPRv2DrGA==
|
||||
dependencies:
|
||||
"@svgdotjs/svg.draggable.js" "^3.0.4"
|
||||
"@svgdotjs/svg.filter.js" "^3.0.8"
|
||||
"@svgdotjs/svg.js" "^3.2.4"
|
||||
"@svgdotjs/svg.resize.js" "^2.0.2"
|
||||
"@svgdotjs/svg.select.js" "^4.0.1"
|
||||
"@yr/monotone-cubic-spline" "^1.0.3"
|
||||
|
||||
archiver-utils@^5.0.0, archiver-utils@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-5.0.2.tgz#63bc719d951803efc72cf961a56ef810760dd14d"
|
||||
@@ -11452,6 +11496,11 @@ vue2-dragula@^2.5.5:
|
||||
dependencies:
|
||||
dragula "3.7.2"
|
||||
|
||||
vue3-apexcharts@^1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/vue3-apexcharts/-/vue3-apexcharts-1.8.0.tgz#1984648d966aa91bc4dc3e87fa847f5289f7f1cf"
|
||||
integrity sha512-5tSD4mXTBbIJ9ir+58qHE6oNtIe0RNgqIRYMKpcsIaxkKtwUww4JhvPkpUFlmiW4OJbbdklgjleXq1lfcM4gdA==
|
||||
|
||||
vue3-pdf-app@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/vue3-pdf-app/-/vue3-pdf-app-1.0.3.tgz#2f4ad738d7d86e8082a1aacbe498c5a08cb4d226"
|
||||
|
||||
Reference in New Issue
Block a user