Integrazione ECommerce (conversione)
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
APP_VERSION="1.0.21"
|
APP_VERSION="1.0.21"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="16"
|
APP_ID="17"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
DIRECTORY_SERVER="freeplanet_serverside"
|
DIRECTORY_SERVER="freeplanet_serverside"
|
||||||
SERVERDIR_WEBSITE=""
|
SERVERDIR_WEBSITE=""
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ module.exports = configure((ctx) => ({
|
|||||||
},
|
},
|
||||||
devServer: {
|
devServer: {
|
||||||
https: false,
|
https: false,
|
||||||
port: 8087,
|
port: 8088,
|
||||||
open: false, // opens browser window automatically
|
open: false, // opens browser window automatically
|
||||||
headers: {
|
headers: {
|
||||||
'Access-Control-Allow-Origin': '*',
|
'Access-Control-Allow-Origin': '*',
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
APP_VERSION="1.0.20"
|
APP_VERSION="1.0.21"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="16"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
DIRECTORY_SERVER="freeplanet_serverside"
|
DIRECTORY_SERVER="freeplanet_serverside"
|
||||||
SERVERDIR_WEBSITE=""
|
SERVERDIR_WEBSITE=""
|
||||||
@@ -12,7 +12,7 @@ LANG_DEFAULT="it"
|
|||||||
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
||||||
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
|
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
|
||||||
MONGODB_HOST="https://localhost:3000"
|
MONGODB_HOST="https://localhost:3000"
|
||||||
LOGO_REG='riso-logo-full.png'
|
LOGO_REG='piuchebuono-logo-full.png'
|
||||||
TEST_NAME="Paolo"
|
TEST_NAME="Paolo"
|
||||||
TEST_SURNAME="Arena"
|
TEST_SURNAME="Arena"
|
||||||
TEST_EMAIL=""
|
TEST_EMAIL=""
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.19"
|
APP_VERSION="1.0.20"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="13"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.19"
|
APP_VERSION="1.0.20"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="13"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,89 +1,11 @@
|
|||||||
import { IEvents } from '../model';
|
import { IEvents } from '../model';
|
||||||
|
|
||||||
export const db_data = {
|
export const db_data = {
|
||||||
URL_FACEBOOK: 'https://www.facebook.com/associazioneshen',
|
URL_FACEBOOK: '',
|
||||||
|
|
||||||
userdata: {
|
userdata: {
|
||||||
calendar_editable: false,
|
calendar_editable: false,
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
events: [
|
|
||||||
{
|
|
||||||
title: 'Scambi Reiki',
|
|
||||||
details: 'Nelle serate esperienziali è possibile <span class="boldhigh">Dare e Ricevere</span> un trattamento completo.<br />'
|
|
||||||
+ 'Possono partecipare le persone che hanno già preso parte al <span class="boldhigh">seminario di 1° livello</span>, ma anche <span class="boldhigh">tutti quelli che hanno il desiderio di conoscere il Reiki</span> e sperimentarlo per la prima volta: in questo caso invitiamo gli interessati a contattarci per un appuntamento prima dell’inizio della serata per ricevere le informazioni pratiche.',
|
|
||||||
date: '2019-07-11',
|
|
||||||
time: '21:00',
|
|
||||||
duration: 120,
|
|
||||||
side: 'left',
|
|
||||||
bgcolor: 'orange',
|
|
||||||
icon: 'fas fa-praying-hands',
|
|
||||||
img: 'images/reiki/reikisfondo.jpg',
|
|
||||||
where: 'Centro Shen',
|
|
||||||
// whereicon: 'shen.png',
|
|
||||||
teacher: 'Cristina Barattoni',
|
|
||||||
avatar: 'cristina.png',
|
|
||||||
infoextra: '',
|
|
||||||
linkpdf: 'files/eventi/Reiki_aMICHI.pdf',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Scambi Reiki',
|
|
||||||
details: 'Nelle serate esperienziali è possibile <span class="boldhigh">Dare e Ricevere</span> un trattamento completo.<br />'
|
|
||||||
+ 'Possono partecipare le persone che hanno già preso parte al <span class="boldhigh">seminario di 1° livello</span>, ma anche <span class="boldhigh">tutti quelli che hanno il desiderio di conoscere il Reiki</span> e sperimentarlo per la prima volta: in questo caso invitiamo gli interessati a contattarci per un appuntamento prima dell’inizio della serata per ricevere le informazioni pratiche.',
|
|
||||||
date: '2019-07-20',
|
|
||||||
time: '21:00',
|
|
||||||
duration: 120,
|
|
||||||
side: 'left',
|
|
||||||
bgcolor: 'orange',
|
|
||||||
icon: 'fas fa-praying-hands',
|
|
||||||
img: 'images/reiki/reikisfondo.jpg',
|
|
||||||
where: 'Centro Shen',
|
|
||||||
// whereicon: 'shen.png',
|
|
||||||
teacher: 'Cristina Barattoni',
|
|
||||||
avatar: 'cristina.png',
|
|
||||||
infoextra: '',
|
|
||||||
linkpdf: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Seminario Reiki 1° Livello',
|
|
||||||
details: 'I seminari vengono organizzati volutamente in gruppi poco numerosi.\n'
|
|
||||||
+ 'Si crea così un ambiente accogliente e tranquillo con un atmosfera conviviale.<br />'
|
|
||||||
+ ''
|
|
||||||
+ 'Per info vedi <a href="reiki/seminari">Seminari Reiki</a>',
|
|
||||||
date: '2019-07-22',
|
|
||||||
days: 2,
|
|
||||||
time: '9:00',
|
|
||||||
side: 'left',
|
|
||||||
bgcolor: 'red',
|
|
||||||
icon: 'fas fa-chalkboard-teacher',
|
|
||||||
img: 'images/reiki/reikisfondo.jpg',
|
|
||||||
where: 'Centro Shen',
|
|
||||||
// whereicon: 'shen.png',
|
|
||||||
teacher: 'Cristina Barattoni',
|
|
||||||
avatar: 'cristina.png',
|
|
||||||
teacher2: 'Elisa Ghizzardi',
|
|
||||||
avatar2: 'elisa.png',
|
|
||||||
infoextra: 'sabato e domenica dalle 10.00 alle 18.00',
|
|
||||||
linkpdf: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Presentazione Corsi per Operatori del Massaggio del Benessere',
|
|
||||||
details: 'Vieni alla presentazione dei Corsi!<br>10 settembre a Ravenna, 17 settembre a Lugo',
|
|
||||||
date: '2019-09-10',
|
|
||||||
time: '20:30',
|
|
||||||
duration: 120,
|
|
||||||
side: 'left',
|
|
||||||
bgcolor: 'blue',
|
|
||||||
icon: 'fas fa-praying-hands',
|
|
||||||
img: 'images/scuolaopbenessere/img1.jpg',
|
|
||||||
where: 'Centro Shen',
|
|
||||||
// whereicon: 'shen.png',
|
|
||||||
teacher: 'Operatori',
|
|
||||||
avatar: 'cristina.png',
|
|
||||||
avatar2: 'elisa.png',
|
|
||||||
infoextra: '',
|
|
||||||
linkpdf: '',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
const msg_website_enUs = {
|
const msg_website_enUs = {
|
||||||
ws: {
|
ws: {
|
||||||
sitename: 'Riso',
|
sitename: 'Fiore Della Vita',
|
||||||
siteshortname: 'RISO',
|
siteshortname: 'Fiore Della Vita',
|
||||||
botname: 'Riso BOT',
|
description: '',
|
||||||
|
keywords: '',
|
||||||
},
|
},
|
||||||
products: {
|
products: {
|
||||||
quantity: 'Quantità',
|
quantity: 'Quantità',
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
const msg_website_es = {
|
const msg_website_es = {
|
||||||
ws: {
|
ws: {
|
||||||
sitename: 'Riso',
|
sitename: 'Fiore Della Vita',
|
||||||
siteshortname: 'RISO',
|
siteshortname: 'Fiore Della Vita',
|
||||||
botname: 'Riso BOT',
|
description: '',
|
||||||
|
keywords: '',
|
||||||
},
|
},
|
||||||
products: {
|
products: {
|
||||||
quantity: 'Quantità',
|
quantity: 'Quantità',
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
const msg_website_fr = {
|
const msg_website_fr = {
|
||||||
ws: {
|
ws: {
|
||||||
sitename: 'Riso',
|
sitename: 'Fiore Della Vita',
|
||||||
siteshortname: 'RISO',
|
siteshortname: 'Fiore Della Vita',
|
||||||
botname: 'Riso BOT',
|
description: '',
|
||||||
|
keywords: '',
|
||||||
},
|
},
|
||||||
homepage: {
|
homepage: {
|
||||||
titlecontatti: 'CONTACTS',
|
titlecontatti: 'CONTACTS',
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
const msg_website_it = {
|
const msg_website_it = {
|
||||||
ws: {
|
ws: {
|
||||||
sitename: 'Riso',
|
sitename: 'Fiore Della Vita',
|
||||||
siteshortname: 'RISO',
|
siteshortname: 'Fiore Della Vita',
|
||||||
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.',
|
description: '',
|
||||||
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
|
keywords: '',
|
||||||
},
|
},
|
||||||
products: {
|
products: {
|
||||||
quantity: 'Quantità',
|
quantity: 'Quantità',
|
||||||
@@ -131,7 +131,7 @@ const msg_website_it = {
|
|||||||
color: 'Colore',
|
color: 'Colore',
|
||||||
},
|
},
|
||||||
msg: {
|
msg: {
|
||||||
myAppName: 'Riso',
|
myAppName: 'Fiore della Vita',
|
||||||
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
|
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
|
||||||
underconstruction: 'App in costruzione...',
|
underconstruction: 'App in costruzione...',
|
||||||
myDescriz: '',
|
myDescriz: '',
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
const msg_website_pt = {
|
const msg_website_pt = {
|
||||||
ws: {
|
ws: {
|
||||||
sitename: 'Riso',
|
sitename: 'Fiore Della Vita',
|
||||||
siteshortname: 'RISO',
|
siteshortname: 'Fiore Della Vita',
|
||||||
botname: 'Riso BOT',
|
description: '',
|
||||||
|
keywords: '',
|
||||||
},
|
},
|
||||||
pages: {
|
pages: {
|
||||||
home: 'Home',
|
home: 'Home',
|
||||||
|
|||||||
@@ -7,30 +7,6 @@ import {
|
|||||||
import { func } from '@store/Modules/fieldsTable'
|
import { func } from '@store/Modules/fieldsTable'
|
||||||
|
|
||||||
|
|
||||||
// const SHOW_PROJINTHEMENU = false
|
|
||||||
//
|
|
||||||
// let arrlistafavourite = []
|
|
||||||
// let arrlistaprojtutti = []
|
|
||||||
// let arrlistaprojmiei = []
|
|
||||||
// if (SHOW_PROJINTHEMENU) {
|
|
||||||
// arrlistaprojtutti = Projects.getters.listaprojects(RouteNames.projectsall)
|
|
||||||
// arrlistaprojmiei = Projects.getters.listaprojects(RouteNames.myprojects)
|
|
||||||
// arrlistafavourite = Projects.getters.listaprojects(RouteNames.favouriteprojects)
|
|
||||||
// }
|
|
||||||
// PROGETTI -> FAVORITI :
|
|
||||||
|
|
||||||
// if (arrlistafavourite.length > 0) {
|
|
||||||
// arrMenu.push({
|
|
||||||
// icon: 'favorite_border',
|
|
||||||
// nametranslate: 'pages.' + RouteNames.favouriteprojects,
|
|
||||||
// urlroute: RouteNames.favouriteprojects,
|
|
||||||
// level_parent: 0.0,
|
|
||||||
// level_child: 0.5,
|
|
||||||
// routes2: arrlistafavourite,
|
|
||||||
// idelem: ''
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
|
|
||||||
const firstPage = {
|
const firstPage = {
|
||||||
active: true,
|
active: true,
|
||||||
order: 5,
|
order: 5,
|
||||||
@@ -46,7 +22,7 @@ const firstPage = {
|
|||||||
function getDynamicPages(site: ISites): IListRoutes[] {
|
function getDynamicPages(site: ISites): IListRoutes[] {
|
||||||
|
|
||||||
const baseroutes: IListRoutes[] = [
|
const baseroutes: IListRoutes[] = [
|
||||||
{
|
/*{
|
||||||
active: true,
|
active: true,
|
||||||
order: 5,
|
order: 5,
|
||||||
path: '/',
|
path: '/',
|
||||||
@@ -57,61 +33,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 12,
|
|
||||||
path: '/goods',
|
|
||||||
materialIcon: 'fas fa-tshirt',
|
|
||||||
name: 'mypages.goods',
|
|
||||||
component: () => import('@/root/goods/goods.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/services',
|
|
||||||
materialIcon: 'fas fa-house-user',
|
|
||||||
name: 'mypages.services',
|
|
||||||
component: () => import('@/root/services/services.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/provapao',
|
|
||||||
materialIcon: 'fas fa-house-user',
|
|
||||||
name: 'mypages.provapao',
|
|
||||||
component: () => import('@/root/provapao/provapao.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/hosps',
|
|
||||||
materialIcon: 'fas fa-bed',
|
|
||||||
name: 'mypages.hosp',
|
|
||||||
component: () => import('@/root/hosp/hosp.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: site.confpages && site.confpages.enableCircuits,
|
|
||||||
order: 16,
|
|
||||||
path: '/circuits',
|
|
||||||
materialIcon: 'fas fa-coins',
|
|
||||||
name: 'mypages.circuits',
|
|
||||||
component: () => import('@/views/user/mycircuits/mycircuits.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
order: 20,
|
order: 20,
|
||||||
@@ -122,145 +43,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
meta: { requiresAuth: true },
|
meta: { requiresAuth: true },
|
||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
},*/
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 120,
|
|
||||||
path: '/myprofile',
|
|
||||||
materialIcon: 'fas fa-user',
|
|
||||||
name: 'pages.profile',
|
|
||||||
component: () => import('@/views/user/myprofile/myprofile.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 120,
|
|
||||||
path: '/editprofile',
|
|
||||||
materialIcon: 'fas fa-user',
|
|
||||||
name: 'pages.profile3',
|
|
||||||
component: () => import('@/views/user/editprofile/editprofile.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 130,
|
|
||||||
path: '/friends',
|
|
||||||
materialIcon: 'fas fa-user-friends',
|
|
||||||
name: 'mypages.iscritti',
|
|
||||||
component: () => import('@/views/user/myfriends/myfriends.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: site.confpages && site.confpages.enableGroups,
|
|
||||||
order: 132,
|
|
||||||
path: '/groups',
|
|
||||||
materialIcon: 'fas fa-users',
|
|
||||||
name: 'mypages.groups',
|
|
||||||
component: () => import('@/views/user/mygroups/mygroups.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 136,
|
|
||||||
path: '/grp/:groupname',
|
|
||||||
materialIcon: 'fas fa-user',
|
|
||||||
name: 'proj.group2',
|
|
||||||
component: () => import('@/views/user/mygroup/mygroup.vue'),
|
|
||||||
meta: { requiresAuth: true, newpage: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
}, {
|
|
||||||
active: true,
|
|
||||||
order: 137,
|
|
||||||
path: '/circuit/:path',
|
|
||||||
materialIcon: 'fas fa-user',
|
|
||||||
name: 'proj.circuit2',
|
|
||||||
component: () => import('@/views/user/mycircuit/mycircuit.vue'),
|
|
||||||
meta: { requiresAuth: true, newpage: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
path: '/separator',
|
|
||||||
name: 'separator',
|
|
||||||
order: 140,
|
|
||||||
isseparator: true,
|
|
||||||
inmenu: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 130,
|
|
||||||
path: '/mypage/:idBacheca',
|
|
||||||
materialIcon: 'fas fa-user',
|
|
||||||
name: 'pages.mypage2',
|
|
||||||
component: () => import('@/views/user/mypagebacheca/mypagebacheca.vue'),
|
|
||||||
meta: { requiresAuth: true, newpage: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 130,
|
|
||||||
path: '/myservice/:idSkill',
|
|
||||||
materialIcon: '',
|
|
||||||
name: 'pages.myservice2',
|
|
||||||
component: () => import('@/views/user/myservice/myservice.vue'),
|
|
||||||
meta: { requiresAuth: true, newpage: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 135,
|
|
||||||
path: '/myhosps/:idHosp',
|
|
||||||
materialIcon: '',
|
|
||||||
name: 'pages.myhosps2',
|
|
||||||
component: () => import('@/views/user/mypagehosp/mypagehosp.vue'),
|
|
||||||
meta: { requiresAuth: true, newpage: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 132,
|
|
||||||
path: '/mygood/:idGood',
|
|
||||||
materialIcon: '',
|
|
||||||
name: 'pages.mygood2',
|
|
||||||
component: () => import('@/views/user/mypagegood/mypagegood.vue'),
|
|
||||||
meta: { requiresAuth: true, newpage: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 150,
|
|
||||||
path: '/fundraising',
|
|
||||||
materialIcon: 'fas fa-hand-holding-heart',
|
|
||||||
name: 'pages.fundraising',
|
|
||||||
component: () => import('@src/root/fundraising/fundraising.vue'),
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 80,
|
|
||||||
path: '/calendario-eventi',
|
|
||||||
materialIcon: 'event',
|
|
||||||
name: 'ris.calendario_eventi_riso',
|
|
||||||
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
|
|
||||||
extraclass: 'isCalendar',
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
|
|
||||||
return baseroutes
|
return baseroutes
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "riso",
|
"name": "piuchebuono",
|
||||||
"version": "0.6.1",
|
"version": "2.0.1",
|
||||||
"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.",
|
"description": "PiuCheBuono",
|
||||||
"productName": "Riso",
|
"productName": "PiuCheBuono",
|
||||||
"author": "Paolo Arena",
|
"author": "Paolo Arena",
|
||||||
"private": true,
|
"private": true,
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
@@ -123,18 +123,17 @@
|
|||||||
"crypto": false
|
"crypto": false
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"last 80 Chrome versions",
|
"last 100 Chrome versions",
|
||||||
"last 40 Firefox versions",
|
"last 40 Firefox versions",
|
||||||
"last 10 Edge versions",
|
"last 20 Edge versions",
|
||||||
"last 45 Safari versions",
|
"last 55 Safari versions",
|
||||||
"last 80 Android versions",
|
"last 90 Android versions",
|
||||||
"last 120 ChromeAndroid versions",
|
"last 250 ChromeAndroid versions",
|
||||||
"last 30 FirefoxAndroid versions",
|
"last 60 FirefoxAndroid versions",
|
||||||
"last 20 iOS versions",
|
"last 35 iOS versions",
|
||||||
"last 10 Opera versions",
|
"last 10 Opera versions",
|
||||||
"> 0.03%",
|
"> 0.03%",
|
||||||
"not dead",
|
"not dead"
|
||||||
"fully supports es6-module"
|
|
||||||
],
|
],
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 16.14.0",
|
"node": ">= 16.14.0",
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ module.exports = configure((ctx) => ({
|
|||||||
},
|
},
|
||||||
devServer: {
|
devServer: {
|
||||||
https: false,
|
https: false,
|
||||||
port: 8084,
|
port: 8088,
|
||||||
open: false, // opens browser window automatically
|
open: false, // opens browser window automatically
|
||||||
headers: {
|
headers: {
|
||||||
'Access-Control-Allow-Origin': '*',
|
'Access-Control-Allow-Origin': '*',
|
||||||
@@ -305,9 +305,9 @@ module.exports = configure((ctx) => ({
|
|||||||
},
|
},
|
||||||
|
|
||||||
manifest: {
|
manifest: {
|
||||||
name: 'Riso',
|
name: 'Più che Buono',
|
||||||
short_name: 'Riso',
|
short_name: 'PiuCheBuono',
|
||||||
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.',
|
description: 'PiuCheBuono è un GAS e Bottega',
|
||||||
display: 'standalone',
|
display: 'standalone',
|
||||||
orientation: 'portrait',
|
orientation: 'portrait',
|
||||||
background_color: '#fff',
|
background_color: '#fff',
|
||||||
@@ -317,54 +317,54 @@ module.exports = configure((ctx) => ({
|
|||||||
start_url: "/?homescreen=1",
|
start_url: "/?homescreen=1",
|
||||||
icons: [
|
icons: [
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-512x512.png',
|
src: 'images/fv-android-icon-512x512.png',
|
||||||
sizes: '512x512',
|
sizes: '512x512',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-384x384.png',
|
src: 'images/fv-android-icon-384x384.png',
|
||||||
sizes: '384x384',
|
sizes: '384x384',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-192x192.png',
|
src: 'images/fv-android-icon-192x192.png',
|
||||||
sizes: '192x192',
|
sizes: '192x192',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-144x144.png',
|
src: 'images/fv-android-icon-144x144.png',
|
||||||
sizes: '144x144',
|
sizes: '144x144',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-96x96.png',
|
src: 'images/fv-android-icon-96x96.png',
|
||||||
sizes: '96x96',
|
sizes: '96x96',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-120x120.png',
|
src: 'images/fv-apple-icon-120x120.png',
|
||||||
sizes: '120x120',
|
sizes: '120x120',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-144x144.png',
|
src: 'images/fv-apple-icon-144x144.png',
|
||||||
sizes: '144x144',
|
sizes: '144x144',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-152x152.png',
|
src: 'images/fv-apple-icon-152x152.png',
|
||||||
sizes: '152x152',
|
sizes: '152x152',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-180x180.png',
|
src: 'images/fv-apple-icon-180x180.png',
|
||||||
sizes: '180x180',
|
sizes: '180x180',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
related_applications: [{
|
related_applications: [{
|
||||||
"platform": "webapp",
|
"platform": "webapp",
|
||||||
"url": "https://www.riso.app/manifest.json"
|
"url": "https://www.piuchebuono.app/manifest.json"
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -399,7 +399,7 @@ module.exports = configure((ctx) => ({
|
|||||||
builder: {
|
builder: {
|
||||||
// https://www.electron.build/configuration/configuration
|
// https://www.electron.build/configuration/configuration
|
||||||
|
|
||||||
appId: 'Riso',
|
appId: 'PiuCheBuono',
|
||||||
},
|
},
|
||||||
|
|
||||||
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
|
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
|
||||||
|
|||||||
@@ -364,7 +364,7 @@ module.exports = configure((ctx) => ({
|
|||||||
],
|
],
|
||||||
related_applications: [{
|
related_applications: [{
|
||||||
"platform": "webapp",
|
"platform": "webapp",
|
||||||
"url": "https://www.piuchebuono.app/manifest.json"
|
"url": "https://www.riso.app/manifest.json"
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -75,7 +75,8 @@ export const shared_consts = {
|
|||||||
BTN_LOGIN: 260,
|
BTN_LOGIN: 260,
|
||||||
FOOTER: 270,
|
FOOTER: 270,
|
||||||
PROFILETUTORIAL: 280,
|
PROFILETUTORIAL: 280,
|
||||||
VISUVIDEOPROMOANDPDF: 290
|
VISUVIDEOPROMOANDPDF: 290,
|
||||||
|
ECOMMERCE: 300,
|
||||||
},
|
},
|
||||||
|
|
||||||
QUERYTYPE_MYGROUP: 1,
|
QUERYTYPE_MYGROUP: 1,
|
||||||
@@ -1525,6 +1526,10 @@ export const shared_consts = {
|
|||||||
value: 70,
|
value: 70,
|
||||||
label: 'Calendario',
|
label: 'Calendario',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
value: 300,
|
||||||
|
label: 'E-COMMERCE',
|
||||||
|
},
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { tools } from '@store/Modules/tools'
|
|||||||
import { shared_consts } from '@/common/shared_vuejs'
|
import { shared_consts } from '@/common/shared_vuejs'
|
||||||
import { LandingFooter } from '@/components/LandingFooter'
|
import { LandingFooter } from '@/components/LandingFooter'
|
||||||
import { CMyActivities } from '@/components/CMyActivities'
|
import { CMyActivities } from '@/components/CMyActivities'
|
||||||
|
import { CECommerce } from '@/components/CECommerce'
|
||||||
import { COpenStreetMap } from '@src/components/COpenStreetMap'
|
import { COpenStreetMap } from '@src/components/COpenStreetMap'
|
||||||
import { CCardCarousel } from '@src/components/CCardCarousel'
|
import { CCardCarousel } from '@src/components/CCardCarousel'
|
||||||
import { CMyPage } from '@src/components/CMyPage'
|
import { CMyPage } from '@src/components/CMyPage'
|
||||||
|
|||||||
@@ -372,13 +372,7 @@
|
|||||||
>
|
>
|
||||||
<div class="landing__header"></div>
|
<div class="landing__header"></div>
|
||||||
<div
|
<div
|
||||||
class="
|
class="landing__hero-content row justify-center q-gutter-xs clgutter"
|
||||||
landing__hero-content
|
|
||||||
row
|
|
||||||
justify-center
|
|
||||||
q-gutter-xs
|
|
||||||
clgutter
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<div class="row"> </div>
|
<div class="row"> </div>
|
||||||
<div class="flex justify-end">
|
<div class="flex justify-end">
|
||||||
@@ -390,13 +384,7 @@
|
|||||||
{{ myel.container }}
|
{{ myel.container }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="
|
class="text-subtitle1 shadow-max big text-italic q-pl-sm"
|
||||||
text-subtitle1
|
|
||||||
shadow-max
|
|
||||||
big
|
|
||||||
text-italic
|
|
||||||
q-pl-sm
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
{{ myel.container2 }}
|
{{ myel.container2 }}
|
||||||
</div>
|
</div>
|
||||||
@@ -488,9 +476,13 @@
|
|||||||
<div v-if="editOn" class="elemEdit">CCheckIfIsLogged</div>
|
<div v-if="editOn" class="elemEdit">CCheckIfIsLogged</div>
|
||||||
<CCheckIfIsLogged :showalways="myel.container"></CCheckIfIsLogged>
|
<CCheckIfIsLogged :showalways="myel.container"></CCheckIfIsLogged>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="myel.type === shared_consts.ELEMTYPE.VISUVIDEOPROMOANDPDF">
|
<div
|
||||||
|
v-else-if="myel.type === shared_consts.ELEMTYPE.VISUVIDEOPROMOANDPDF"
|
||||||
|
>
|
||||||
<div v-if="editOn" class="elemEdit">Visu Video Promo and PDF</div>
|
<div v-if="editOn" class="elemEdit">Visu Video Promo and PDF</div>
|
||||||
<CVisuVideoPromoAndPDF :showalways="myel.container"></CVisuVideoPromoAndPDF>
|
<CVisuVideoPromoAndPDF
|
||||||
|
:showalways="myel.container"
|
||||||
|
></CVisuVideoPromoAndPDF>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="myel.type === shared_consts.ELEMTYPE.INFO_VERSION">
|
<div v-else-if="myel.type === shared_consts.ELEMTYPE.INFO_VERSION">
|
||||||
<div>Versione: {{ tools.getvers() }}</div>
|
<div>Versione: {{ tools.getvers() }}</div>
|
||||||
@@ -537,6 +529,10 @@
|
|||||||
<div v-if="editOn" class="elemEdit">Pagina Attività</div>
|
<div v-if="editOn" class="elemEdit">Pagina Attività</div>
|
||||||
<CMyActivities></CMyActivities>
|
<CMyActivities></CMyActivities>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else-if="myel.type === shared_consts.ELEMTYPE.ECOMMERCE">
|
||||||
|
<div v-if="editOn" class="elemEdit">PRODOTTI ECOMMERCE:</div>
|
||||||
|
<CECommerce> </CECommerce>
|
||||||
|
</div>
|
||||||
<div v-else-if="myel.type === shared_consts.ELEMTYPE.NOTIFATTOP">
|
<div v-else-if="myel.type === shared_consts.ELEMTYPE.NOTIFATTOP">
|
||||||
<div v-if="editOn" class="elemEdit">Notifiche in Cima</div>
|
<div v-if="editOn" class="elemEdit">Notifiche in Cima</div>
|
||||||
<CNotifAtTop></CNotifAtTop>
|
<CNotifAtTop></CNotifAtTop>
|
||||||
@@ -582,7 +578,6 @@
|
|||||||
<span class="mybanner"
|
<span class="mybanner"
|
||||||
>Chiudere e Riaprire la App, per completare l'Aggiornamento</span
|
>Chiudere e Riaprire la App, per completare l'Aggiornamento</span
|
||||||
>
|
>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<span class="mybanner"
|
<span class="mybanner"
|
||||||
@@ -590,7 +585,6 @@
|
|||||||
scomparire questo messaggio, chiudere e riaprire la pagina.</span
|
scomparire questo messaggio, chiudere e riaprire la pagina.</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</q-banner>
|
</q-banner>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="myel.type === shared_consts.ELEMTYPE.BTN_REG">
|
<div v-else-if="myel.type === shared_consts.ELEMTYPE.BTN_REG">
|
||||||
|
|||||||
5
src/views/ecommerce/cartList/cartList.scss
Executable file
5
src/views/ecommerce/cartList/cartList.scss
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
$heightBtn: 100%;
|
||||||
|
|
||||||
|
.card .product-image {
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
59
src/views/ecommerce/cartList/cartList.ts
Executable file
59
src/views/ecommerce/cartList/cartList.ts
Executable file
@@ -0,0 +1,59 @@
|
|||||||
|
import { 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 { useProducts } from '@store/Products'
|
||||||
|
import { useI18n } from '@/boot/i18n'
|
||||||
|
import { toolsext } from '@store/Modules/toolsext'
|
||||||
|
import { useQuasar } from 'quasar'
|
||||||
|
import { costanti } from '@costanti'
|
||||||
|
|
||||||
|
import { CProductCard } from '@src/components/CProductCard'
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'CartList',
|
||||||
|
components: { CProductCard },
|
||||||
|
filters: {
|
||||||
|
capitalize(value: any) {
|
||||||
|
if (!value) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
value = value.toString()
|
||||||
|
return value.charAt(0).toUpperCase() + value.slice(1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props: {},
|
||||||
|
setup() {
|
||||||
|
const userStore = useUserStore()
|
||||||
|
const globalStore = useGlobalStore()
|
||||||
|
const productStore = useProducts()
|
||||||
|
const $router = useRouter()
|
||||||
|
const $q = useQuasar()
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
function getCart() {
|
||||||
|
return productStore.getCart()
|
||||||
|
}
|
||||||
|
|
||||||
|
function getProducts() {
|
||||||
|
return productStore.getProducts()
|
||||||
|
}
|
||||||
|
|
||||||
|
function mounted() {
|
||||||
|
// Inizializza
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(mounted)
|
||||||
|
|
||||||
|
return {
|
||||||
|
userStore,
|
||||||
|
costanti,
|
||||||
|
tools,
|
||||||
|
toolsext,
|
||||||
|
getCart,
|
||||||
|
getProducts,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
21
src/views/ecommerce/cartList/cartList.vue
Executable file
21
src/views/ecommerce/cartList/cartList.vue
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
<template>
|
||||||
|
<q-page>
|
||||||
|
<div class="panel">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="q-pa-md row items-start q-gutter-md" v-for="(product, index) in getProducts" :key="index">
|
||||||
|
<CProductCard :product="product"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./cartList.ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './cartList';
|
||||||
|
</style>
|
||||||
1
src/views/ecommerce/cartList/index.ts
Executable file
1
src/views/ecommerce/cartList/index.ts
Executable file
@@ -0,0 +1 @@
|
|||||||
|
export {default as CartList} from './cartList.vue'
|
||||||
5
src/views/ecommerce/checkOut/checkOut.scss
Executable file
5
src/views/ecommerce/checkOut/checkOut.scss
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
$heightBtn: 100%;
|
||||||
|
|
||||||
|
.card .product-image {
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
178
src/views/ecommerce/checkOut/checkOut.ts
Executable file
178
src/views/ecommerce/checkOut/checkOut.ts
Executable file
@@ -0,0 +1,178 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import { Component, Watch } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
import { SingleProject } from '../../../components/projects/SingleProject/index'
|
||||||
|
import { CTodo } from '../../../components/todos/CTodo'
|
||||||
|
|
||||||
|
import { CProgress } from '../../../components/CProgress'
|
||||||
|
import { CDate } from '../../../components/CDate'
|
||||||
|
import { Action } from 'vuex'
|
||||||
|
import Products from '@src/store/Modules/Products'
|
||||||
|
import { CSingleCart } from '../../../components/CSingleCart'
|
||||||
|
import { CTitleBanner } from '@components'
|
||||||
|
import { tools } from '@src/store/Modules/tools'
|
||||||
|
import { ICart } from '@src/model'
|
||||||
|
import MixinBase from '@src/mixins/mixin-base'
|
||||||
|
import { shared_consts } from '@src/common/shared_vuejs'
|
||||||
|
|
||||||
|
const namespace: string = 'Products'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'checkOut',
|
||||||
|
components: { SingleProject, CProgress, CTodo, CDate, CSingleCart, CTitleBanner },
|
||||||
|
filters: {
|
||||||
|
capitalize(value) {
|
||||||
|
if (!value) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
value = value.toString()
|
||||||
|
return value.charAt(0).toUpperCase() + value.slice(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class CheckOut extends MixinBase {
|
||||||
|
public $q: any
|
||||||
|
public mycart: ICart = {}
|
||||||
|
public myrec: any[]
|
||||||
|
public note: string = ''
|
||||||
|
public statusnow: number = shared_consts.OrderStatus.NONE
|
||||||
|
|
||||||
|
public conferma_carrello: boolean = false
|
||||||
|
public conferma_ordine: boolean = false
|
||||||
|
|
||||||
|
/*public $refs: {
|
||||||
|
singleproject: SingleProject[],
|
||||||
|
ctodo: CTodo
|
||||||
|
}*/
|
||||||
|
|
||||||
|
get getItemsCart() {
|
||||||
|
const cart = Products.getters.getCart()
|
||||||
|
return cart.items || null
|
||||||
|
}
|
||||||
|
|
||||||
|
get getNumItems() {
|
||||||
|
const cart = Products.getters.getCart()
|
||||||
|
if (!!cart.items)
|
||||||
|
return cart.items.length || 0
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
get getCart() {
|
||||||
|
return Products.getters.getCart()
|
||||||
|
}
|
||||||
|
|
||||||
|
get getNote() {
|
||||||
|
const cart = Products.getters.getCart()
|
||||||
|
return cart.note
|
||||||
|
}
|
||||||
|
|
||||||
|
public change_field(fieldname) {
|
||||||
|
if (this.myrec[fieldname] !== this[fieldname]) {
|
||||||
|
this.myrec[fieldname] = this[fieldname]
|
||||||
|
|
||||||
|
const mydata = {
|
||||||
|
[fieldname]: this.myrec[fieldname]
|
||||||
|
}
|
||||||
|
|
||||||
|
const aggiorna = fieldname !== 'status'
|
||||||
|
tools.saveFieldToServer(this, 'carts', this.mycart._id, mydata, aggiorna)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get myTotalPrice() {
|
||||||
|
if (Products.state.cart && Products.state.cart.totalPrice) {
|
||||||
|
return Products.state.cart.totalPrice.toFixed(2)
|
||||||
|
} else {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get myTotalQty() {
|
||||||
|
if (Products.state.cart) {
|
||||||
|
return Products.state.cart.totalQty
|
||||||
|
} else {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async mounted() {
|
||||||
|
// Products.actions.loadCart()
|
||||||
|
this.load()
|
||||||
|
}
|
||||||
|
|
||||||
|
public async load() {
|
||||||
|
this.mycart = this.getCart
|
||||||
|
this.myrec = Object.keys(this.mycart)
|
||||||
|
this.note = this.mycart.note
|
||||||
|
|
||||||
|
if (this.mycart)
|
||||||
|
this.statusnow = await Products.actions.UpdateStatusCart({ cart_id: this.mycart._id, status })
|
||||||
|
|
||||||
|
console.log('myrec', this.myrec)
|
||||||
|
}
|
||||||
|
|
||||||
|
public CanBeShipped() {
|
||||||
|
return Products.state.cart.items.filter((rec) => rec.order.product.canBeShipped).length
|
||||||
|
}
|
||||||
|
|
||||||
|
public CanBeBuyOnline() {
|
||||||
|
return Products.state.cart.items.filter((rec) => rec.order.product.canBeBuyOnline).length
|
||||||
|
}
|
||||||
|
|
||||||
|
get getnumsteps() {
|
||||||
|
let numsteps = 1
|
||||||
|
|
||||||
|
if (this.CanBeShipped())
|
||||||
|
numsteps++
|
||||||
|
if (this.CanBeBuyOnline())
|
||||||
|
numsteps++
|
||||||
|
|
||||||
|
return numsteps
|
||||||
|
}
|
||||||
|
|
||||||
|
public docheckout() {
|
||||||
|
|
||||||
|
// Può essere spedito?
|
||||||
|
|
||||||
|
if (this.CanBeShipped()) {
|
||||||
|
// mostra form di spedizione
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.CanBeBuyOnline()) {
|
||||||
|
// mostra form di acquisto Online
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get nextstep() {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
public completeOrder() {
|
||||||
|
this.$q.dialog({
|
||||||
|
message: 'Confermare l\'ordine di acquisto di ' + this.myTotalQty + ' prodotti ?',
|
||||||
|
ok: {
|
||||||
|
label: this.$t('dialog.yes'),
|
||||||
|
push: true
|
||||||
|
},
|
||||||
|
cancel: {
|
||||||
|
label: this.$t('dialog.cancel')
|
||||||
|
},
|
||||||
|
title: 'Ordine'
|
||||||
|
}).onOk(async () => {
|
||||||
|
const status = shared_consts.OrderStatus.CHECKOUT_SENT
|
||||||
|
this.statusnow = await Products.actions.UpdateStatusCart({ cart_id: this.mycart._id, status })
|
||||||
|
|
||||||
|
if (this.statusnow === status) {
|
||||||
|
tools.showPositiveNotif(this.$q, 'Ordine Confermato')
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$router.push('/orderinfo')
|
||||||
|
}, 2000)
|
||||||
|
}
|
||||||
|
// this.change_field('status')
|
||||||
|
// this.change_field('status')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
44
src/views/ecommerce/checkOut/checkOut.vue
Executable file
44
src/views/ecommerce/checkOut/checkOut.vue
Executable file
@@ -0,0 +1,44 @@
|
|||||||
|
<template>
|
||||||
|
<q-page>
|
||||||
|
<CTitleBanner title="Carrello"></CTitleBanner>
|
||||||
|
<div class="panel">
|
||||||
|
<div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="q-pa-sm col items-start q-gutter-xs" v-for="(itemorder, index) in getItemsCart" :key="index">
|
||||||
|
|
||||||
|
<CSingleCart :order="itemorder.order" :showall="true"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<q-separator></q-separator>
|
||||||
|
<div class="col-6 q-mr-sm" style="text-align: right">
|
||||||
|
<span class="text-grey q-mr-xs">Totale:</span> <span
|
||||||
|
class="text-subtitle1 q-mr-sm ">€ {{ myTotalPrice }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<q-input v-if="getNumItems > 0" v-model="note" style="max-width: 400px;" label="Scrivi qui per eventuali note o chiarimenti:"
|
||||||
|
filled dense
|
||||||
|
debounce="1000"
|
||||||
|
autogrow
|
||||||
|
@input="change_field('note')">
|
||||||
|
</q-input>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<q-stepper-navigation>
|
||||||
|
<q-btn v-if="statusnow < shared_consts.OrderStatus.CHECKOUT_SENT" rounded icon="fas fa-shopping-cart" color="green" label="Completa l'Ordine" class="q-mb-sm"
|
||||||
|
:disabled="myTotalQty < 1"
|
||||||
|
@click="completeOrder"></q-btn>
|
||||||
|
</q-stepper-navigation>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./checkOut.ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './checkOut';
|
||||||
|
</style>
|
||||||
1
src/views/ecommerce/checkOut/index.ts
Executable file
1
src/views/ecommerce/checkOut/index.ts
Executable file
@@ -0,0 +1 @@
|
|||||||
|
export {default as checkOut} from './checkOut.vue'
|
||||||
1
src/views/ecommerce/index.ts
Executable file
1
src/views/ecommerce/index.ts
Executable file
@@ -0,0 +1 @@
|
|||||||
|
export * from './productsList'
|
||||||
1
src/views/ecommerce/orderInfo/index.ts
Executable file
1
src/views/ecommerce/orderInfo/index.ts
Executable file
@@ -0,0 +1 @@
|
|||||||
|
export {default as orderInfo} from './orderInfo.vue'
|
||||||
14
src/views/ecommerce/orderInfo/orderInfo.scss
Executable file
14
src/views/ecommerce/orderInfo/orderInfo.scss
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
$heightBtn: 100%;
|
||||||
|
|
||||||
|
.card .product-image {
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycol{
|
||||||
|
color:gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.q-item__label--caption{
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
227
src/views/ecommerce/orderInfo/orderInfo.ts
Executable file
227
src/views/ecommerce/orderInfo/orderInfo.ts
Executable file
@@ -0,0 +1,227 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import { Component, Watch } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
import { SingleProject } from '../../../components/projects/SingleProject/index'
|
||||||
|
import { CTodo } from '../../../components/todos/CTodo'
|
||||||
|
|
||||||
|
import { CProgress } from '../../../components/CProgress'
|
||||||
|
import { CDate } from '../../../components/CDate'
|
||||||
|
import { Action } from 'vuex'
|
||||||
|
import Products from '@src/store/Modules/Products'
|
||||||
|
import { CSingleCart } from '../../../components/CSingleCart'
|
||||||
|
import { CTitleBanner } from '@components'
|
||||||
|
import { tools } from '@src/store/Modules/tools'
|
||||||
|
import { ICart, IOrderCart } from '@src/model'
|
||||||
|
import MixinBase from '@src/mixins/mixin-base'
|
||||||
|
import { shared_consts } from '@src/common/shared_vuejs'
|
||||||
|
|
||||||
|
const namespace: string = 'Products'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'checkOut',
|
||||||
|
components: { SingleProject, CProgress, CTodo, CDate, CSingleCart, CTitleBanner },
|
||||||
|
filters: {
|
||||||
|
capitalize(value) {
|
||||||
|
if (!value) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
value = value.toString()
|
||||||
|
return value.charAt(0).toUpperCase() + value.slice(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class OrderInfo extends MixinBase {
|
||||||
|
public $q: any
|
||||||
|
public myorderscart: IOrderCart[] = []
|
||||||
|
public myarrrec: any = {}
|
||||||
|
|
||||||
|
public conferma_carrello: boolean = false
|
||||||
|
public conferma_ordine: boolean = false
|
||||||
|
|
||||||
|
public taborders: string = 'incorso'
|
||||||
|
public filter: string = ''
|
||||||
|
public statusnow: number = 0
|
||||||
|
public arrnumstatus: any = []
|
||||||
|
public columns = [
|
||||||
|
{
|
||||||
|
name: 'numorder',
|
||||||
|
required: true,
|
||||||
|
align: 'left',
|
||||||
|
label: 'Numero Ordine',
|
||||||
|
field: 'numorder',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'nameSurname',
|
||||||
|
required: true,
|
||||||
|
align: 'left',
|
||||||
|
label: 'Nome',
|
||||||
|
field: 'nameSurname',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'created_at',
|
||||||
|
required: true,
|
||||||
|
align: 'center',
|
||||||
|
label: 'Effettuato il',
|
||||||
|
field: 'created_at',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'items',
|
||||||
|
required: true,
|
||||||
|
label: 'Articoli',
|
||||||
|
field: 'items',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'totalPrice',
|
||||||
|
required: true,
|
||||||
|
label: 'Totale',
|
||||||
|
field: 'totalPrice',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'status',
|
||||||
|
align: 'center',
|
||||||
|
required: true,
|
||||||
|
label: 'Stato',
|
||||||
|
field: 'status',
|
||||||
|
sortable: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
/*public $refs: {
|
||||||
|
singleproject: SingleProject[],
|
||||||
|
ctodo: CTodo
|
||||||
|
}*/
|
||||||
|
|
||||||
|
get getOrdersCart() {
|
||||||
|
return Products.getters.getOrdersCart(this.taborders)
|
||||||
|
}
|
||||||
|
|
||||||
|
get getAllOrdersCart() {
|
||||||
|
return Products.getters.getOrdersAllCart()
|
||||||
|
}
|
||||||
|
|
||||||
|
public change_field(myorderid, fieldname) {
|
||||||
|
if (this.myarrrec[myorderid][fieldname] !== this[fieldname]) {
|
||||||
|
this.myarrrec[myorderid][fieldname] = this[fieldname]
|
||||||
|
|
||||||
|
const mydata = {
|
||||||
|
[fieldname]: this.myarrrec[myorderid][fieldname]
|
||||||
|
}
|
||||||
|
|
||||||
|
const aggiorna = fieldname !== 'status'
|
||||||
|
tools.saveFieldToServer(this, 'orderscart', myorderid, mydata, aggiorna)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public updateorders() {
|
||||||
|
this.myorderscart = this.getOrdersCart
|
||||||
|
for (const ordercart of this.myorderscart) {
|
||||||
|
this.myarrrec[ordercart._id] = Object.keys(ordercart)
|
||||||
|
}
|
||||||
|
|
||||||
|
const allorders = this.getAllOrdersCart
|
||||||
|
for (const status of [
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
10
|
||||||
|
]) {
|
||||||
|
this.arrnumstatus[status] = allorders.filter((rec) => (rec.status === status)).reduce((sum, item) => sum + 1, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public mounted() {
|
||||||
|
|
||||||
|
this.updateorders()
|
||||||
|
|
||||||
|
console.log('arrnumstatus;')
|
||||||
|
console.log(this.arrnumstatus)
|
||||||
|
|
||||||
|
this.columns = [...this.columns,
|
||||||
|
{
|
||||||
|
name: 'comandi',
|
||||||
|
align: 'center',
|
||||||
|
required: false,
|
||||||
|
label: 'Comandi',
|
||||||
|
field: 'comandi',
|
||||||
|
sortable: false
|
||||||
|
}]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public CanBeShipped() {
|
||||||
|
return Products.state.cart.items.filter((rec) => rec.order.product.canBeShipped).length
|
||||||
|
}
|
||||||
|
|
||||||
|
public CanBeBuyOnline() {
|
||||||
|
return Products.state.cart.items.filter((rec) => rec.order.product.canBeBuyOnline).length
|
||||||
|
}
|
||||||
|
|
||||||
|
get getnumsteps() {
|
||||||
|
let numsteps = 1
|
||||||
|
|
||||||
|
if (this.CanBeShipped())
|
||||||
|
numsteps++
|
||||||
|
if (this.CanBeBuyOnline())
|
||||||
|
numsteps++
|
||||||
|
|
||||||
|
return numsteps
|
||||||
|
}
|
||||||
|
|
||||||
|
public docheckout() {
|
||||||
|
|
||||||
|
// Può essere spedito?
|
||||||
|
|
||||||
|
if (this.CanBeShipped()) {
|
||||||
|
// mostra form di spedizione
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.CanBeBuyOnline()) {
|
||||||
|
// mostra form di acquisto Online
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get nextstep() {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
public clickFunz(order, status) {
|
||||||
|
|
||||||
|
if (status === shared_consts.OrderStatus.ORDER_CONFIRMED) {
|
||||||
|
// Conferma Ordine
|
||||||
|
}
|
||||||
|
|
||||||
|
const statusStr = shared_consts.getStatusStr(status)
|
||||||
|
|
||||||
|
this.$q.dialog({
|
||||||
|
message: 'Impostare l\'ordine n. ' + order.numorder + ' ' + statusStr + ' ?',
|
||||||
|
ok: {
|
||||||
|
label: this.$t('dialog.yes'),
|
||||||
|
push: true
|
||||||
|
},
|
||||||
|
cancel: {
|
||||||
|
label: this.$t('dialog.cancel')
|
||||||
|
},
|
||||||
|
title: 'Ordine'
|
||||||
|
}).onOk(async () => {
|
||||||
|
|
||||||
|
this.statusnow = await Products.actions.UpdateOrderStatus({ order_id: order._id, status })
|
||||||
|
|
||||||
|
if (this.statusnow === status) {
|
||||||
|
order.status = this.statusnow
|
||||||
|
this.updateorders()
|
||||||
|
tools.showPositiveNotif(this.$q, 'Ordine ' + statusStr)
|
||||||
|
}
|
||||||
|
// this.change_field('status')
|
||||||
|
// this.change_field('status')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
191
src/views/ecommerce/orderInfo/orderInfo.vue
Executable file
191
src/views/ecommerce/orderInfo/orderInfo.vue
Executable file
@@ -0,0 +1,191 @@
|
|||||||
|
<template>
|
||||||
|
<q-page>
|
||||||
|
<CTitleBanner title="Ordini"></CTitleBanner>
|
||||||
|
<div class="panel">
|
||||||
|
<q-tabs
|
||||||
|
v-model="taborders"
|
||||||
|
inline-label
|
||||||
|
class="text-blue"
|
||||||
|
>
|
||||||
|
<q-tab class="text-black" v-if="this.arrnumstatus[2] > 0" name="incorso" icon="fas fa-tasks" :label="`(` + this.arrnumstatus[2] +`) in Corso`"/>
|
||||||
|
<q-tab class="text-blue" v-if="this.arrnumstatus[3] > 0" name="confermati" icon="fas fa-calendar" :label="`(` + this.arrnumstatus[3] +`) Confermati`"/>
|
||||||
|
<q-tab class="text-green" v-if="this.arrnumstatus[4] > 0" name="pagati" icon="fas fa-calendar" :label="`(` + this.arrnumstatus[4] +`) Pagati`"/>
|
||||||
|
<q-tab class="text-blue-grey-8" v-if="this.arrnumstatus[6] > 0" name="completati" icon="fas fa-check" :label="`(` + this.arrnumstatus[6] +`) Completati`"/>
|
||||||
|
<q-tab class="text-red" v-if="this.arrnumstatus[10] > 0" name="cancellati" icon="delete" :label="`(` + this.arrnumstatus[10] +`) Cancellati`"/>
|
||||||
|
</q-tabs>
|
||||||
|
|
||||||
|
<div class="q-pa-sm">
|
||||||
|
<q-table
|
||||||
|
:grid="$q.screen.lt.sm"
|
||||||
|
:hide-header="$q.screen.lt.sm"
|
||||||
|
:columns="columns"
|
||||||
|
row-key="numorder"
|
||||||
|
:data="getOrdersCart">
|
||||||
|
|
||||||
|
<template v-if="$q.screen.lt.sm" v-slot:item="props">
|
||||||
|
<div class="q-pa-xs col-xs-12 col-sm-6 col-md-4">
|
||||||
|
<q-card class="my-card-shadow yes_shadow">
|
||||||
|
<q-list dense>
|
||||||
|
<q-item v-for="col in props.cols.filter(col => col.name !== 'desc')" :key="col.name">
|
||||||
|
<q-item-section>
|
||||||
|
<q-item-label>{{ col.label }}</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section side>
|
||||||
|
<q-item-label v-if="col.name === 'created_at'" caption>{{
|
||||||
|
tools.getstrDateTime(col.value)
|
||||||
|
}}
|
||||||
|
<span v-if="taborders === 'completati'">
|
||||||
|
<br>Completato il: {{ tools.getstrDateTime(props.row.completed_at) }}
|
||||||
|
</span>
|
||||||
|
</q-item-label>
|
||||||
|
<q-item-label v-else-if="col.name === 'items'" caption>
|
||||||
|
<div v-for="item of props.row.items">
|
||||||
|
<div v-if="!!item.order.product">
|
||||||
|
{{ item.order.product.name }} ({{ item.order.quantity }})<br>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-item-label>
|
||||||
|
<q-item-label v-else-if="col.name === 'totalPrice'" caption>
|
||||||
|
{{ props.row.totalPrice }} €
|
||||||
|
</q-item-label>
|
||||||
|
<q-item-label v-else-if="col.name === 'status'" caption>
|
||||||
|
{{ shared_consts.getStatusStr(props.row.status) }}
|
||||||
|
</q-item-label>
|
||||||
|
<q-item-label v-else caption>{{ col.value }}</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
</q-list>
|
||||||
|
</q-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template v-else v-slot:body="props">
|
||||||
|
<q-tr :props="props">
|
||||||
|
<q-td key="numorder" :props="props">
|
||||||
|
n. {{ props.row.numorder }}
|
||||||
|
</q-td>
|
||||||
|
<q-td key="nameSurname" :props="props">
|
||||||
|
{{ props.row.nameSurname }}
|
||||||
|
</q-td>
|
||||||
|
<q-td key="created_at" :props="props">
|
||||||
|
{{ tools.getstrDateTime(props.row.created_at) }}
|
||||||
|
<span v-if="taborders === 'completati'">
|
||||||
|
<br>Completato il:<br>{{ tools.getstrDateTime(props.row.completed_at) }}
|
||||||
|
</span>
|
||||||
|
</q-td>
|
||||||
|
<q-td key="items" :props="props">
|
||||||
|
<div v-for="item of props.row.items">
|
||||||
|
<div v-if="!!item.order.product">
|
||||||
|
{{ item.order.product.name }} ({{ item.order.quantity }})<br>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</q-td>
|
||||||
|
<q-td key="totalPrice" :props="props">
|
||||||
|
{{ props.row.totalPrice }} €
|
||||||
|
</q-td>
|
||||||
|
<q-td key="status" :props="props">
|
||||||
|
<span :class="props.row.status">{{ shared_consts.getStatusStr(props.row.status) }}</span>
|
||||||
|
</q-td>
|
||||||
|
<q-td key="comandi" :props="props">
|
||||||
|
Bottone:
|
||||||
|
<div v-if="tools.isManager()" class="q-pa-sm">
|
||||||
|
|
||||||
|
<q-btn-dropdown rounded dense label="Azioni">
|
||||||
|
<q-list class="text-primary">
|
||||||
|
<q-item clickable v-close-popup
|
||||||
|
@click="clickFunz(props.row, shared_consts.OrderStatus.ORDER_CONFIRMED)">
|
||||||
|
<q-item-section avatar>
|
||||||
|
<q-avatar icon="fas fa-list-ol" color="grey" text-color="white"/>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-item-label>Inviato</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item clickable v-close-popup
|
||||||
|
@click="clickFunz(props.row, shared_consts.OrderStatus.ORDER_CONFIRMED)">
|
||||||
|
<q-item-section avatar>
|
||||||
|
<q-avatar icon="fas fa-calendar-check" color="secondary" text-color="white"/>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-item-label>Confermato</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item clickable v-close-popup @click="clickFunz(props.row, shared_consts.OrderStatus.PAYED)"
|
||||||
|
color="blue">
|
||||||
|
<q-item-section avatar>
|
||||||
|
<q-avatar icon="money" color="positive" text-color="white"/>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-item-label>Pagato</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item clickable v-close-popup @click="clickFunz(props.row, shared_consts.OrderStatus.RECEIVED)"
|
||||||
|
color="blue">
|
||||||
|
<q-item-section avatar>
|
||||||
|
<q-avatar icon="fas fa-check" color="primary" text-color="white"/>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-item-label>Completato</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item clickable v-close-popup @click="clickFunz(props.row, shared_consts.OrderStatus.CANCELED)"
|
||||||
|
color="blue">
|
||||||
|
<q-item-section avatar>
|
||||||
|
<q-avatar icon="delete" color="negative" text-color="white"/>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-item-label>Cancellato</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
|
||||||
|
</q-list>
|
||||||
|
</q-btn-dropdown>
|
||||||
|
</div>
|
||||||
|
</q-td>
|
||||||
|
</q-tr>
|
||||||
|
</template>
|
||||||
|
</q-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<div v-for="(ordercart, index) in getOrdersCart" :key="index">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{{ ordercart.numorder }}<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="q-pa-sm col items-start q-gutter-xs" v-for="(itemorder, index) in ordercart.items" :key="index">
|
||||||
|
|
||||||
|
<CSingleCart :order="itemorder.order" :showall="true" :nomodif="true"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<q-separator></q-separator>
|
||||||
|
<div class="col-6 q-mr-sm" style="text-align: right">
|
||||||
|
<span class="text-grey q-mr-xs">Totale:</span> <span
|
||||||
|
class="text-subtitle1 q-mr-sm ">€ {{ ordercart.totalPrice.toFixed(2) }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<q-input v-model="ordercart.note" style="max-width: 400px;" label="Note aggiuntive:"
|
||||||
|
filled dense
|
||||||
|
debounce="1000"
|
||||||
|
autogrow
|
||||||
|
@input="change_field(ordercart.id, 'note')">
|
||||||
|
</q-input>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./orderInfo.ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './orderInfo';
|
||||||
|
</style>
|
||||||
1
src/views/ecommerce/productInfo/index.ts
Executable file
1
src/views/ecommerce/productInfo/index.ts
Executable file
@@ -0,0 +1 @@
|
|||||||
|
export {default as ProductInfo} from './ProductInfo.vue'
|
||||||
5
src/views/ecommerce/productInfo/productInfo.scss
Executable file
5
src/views/ecommerce/productInfo/productInfo.scss
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
$heightBtn: 100%;
|
||||||
|
|
||||||
|
.card .product-image {
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
51
src/views/ecommerce/productInfo/productInfo.ts
Executable file
51
src/views/ecommerce/productInfo/productInfo.ts
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import { Component, Prop, Watch } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
import {
|
||||||
|
IAction,
|
||||||
|
IDrag, IProduct,
|
||||||
|
IProductsState, ITodo, ITodosState,
|
||||||
|
TypeProj
|
||||||
|
} from '../../../model/index'
|
||||||
|
import { SingleProject } from '../../../components/projects/SingleProject/index'
|
||||||
|
import { CTodo } from '../../../components/todos/CTodo'
|
||||||
|
|
||||||
|
import { tools } from '../../../store/Modules/tools'
|
||||||
|
import { toolsext } from '@src/store/Modules/toolsext'
|
||||||
|
import { lists } from '../../../store/Modules/lists'
|
||||||
|
import * as ApiTables from '../../../store/Modules/ApiTables'
|
||||||
|
|
||||||
|
import { GlobalStore, Projects, Todos } from '@store'
|
||||||
|
import { UserStore } from '@store'
|
||||||
|
|
||||||
|
import { Getter } from 'vuex-class'
|
||||||
|
|
||||||
|
import { date, Screen } from 'quasar'
|
||||||
|
import { CProgress } from '../../../components/CProgress'
|
||||||
|
import { CDate } from '../../../components/CDate'
|
||||||
|
import { RouteNames } from '@src/router/route-names'
|
||||||
|
import { CProductCard } from '@src/components/CProductCard'
|
||||||
|
import { Action } from 'vuex'
|
||||||
|
import Products from '@src/store/Modules/Products'
|
||||||
|
|
||||||
|
const namespace: string = 'Products'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'ProductInfo',
|
||||||
|
components: { SingleProject, CProgress, CTodo, CDate, CProductCard }
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class ProductInfo extends Vue {
|
||||||
|
public $q: any
|
||||||
|
public code: string = ''
|
||||||
|
|
||||||
|
public created() {
|
||||||
|
console.log('created productInfo')
|
||||||
|
console.log(this.$route)
|
||||||
|
if (!!this.$route.params.codprod) {
|
||||||
|
this.code = this.$route.params.codprod.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('this.code', this.code)
|
||||||
|
}
|
||||||
|
}
|
||||||
19
src/views/ecommerce/productInfo/productInfo.vue
Executable file
19
src/views/ecommerce/productInfo/productInfo.vue
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
<template>
|
||||||
|
<q-page>
|
||||||
|
<div class="panel">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<CProductCard :code="code" complete="true"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./productInfo.ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './productInfo';
|
||||||
|
</style>
|
||||||
1
src/views/ecommerce/productsList/index.ts
Executable file
1
src/views/ecommerce/productsList/index.ts
Executable file
@@ -0,0 +1 @@
|
|||||||
|
export {default as ProductsList} from './productsList.vue'
|
||||||
5
src/views/ecommerce/productsList/productsList.scss
Executable file
5
src/views/ecommerce/productsList/productsList.scss
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
$heightBtn: 100%;
|
||||||
|
|
||||||
|
.card .product-image {
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
55
src/views/ecommerce/productsList/productsList.ts
Executable file
55
src/views/ecommerce/productsList/productsList.ts
Executable file
@@ -0,0 +1,55 @@
|
|||||||
|
import { 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 { useProducts } from '@store/Products'
|
||||||
|
import { useI18n } from '@/boot/i18n'
|
||||||
|
import { toolsext } from '@store/Modules/toolsext'
|
||||||
|
import { useQuasar } from 'quasar'
|
||||||
|
import { costanti } from '@costanti'
|
||||||
|
|
||||||
|
import { CProductCard } from '@src/components/CProductCard'
|
||||||
|
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'ProductsList',
|
||||||
|
components: { CProductCard },
|
||||||
|
filters: {
|
||||||
|
capitalize(value: any) {
|
||||||
|
if (!value) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
value = value.toString()
|
||||||
|
return value.charAt(0).toUpperCase() + value.slice(1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props: {},
|
||||||
|
setup() {
|
||||||
|
const userStore = useUserStore()
|
||||||
|
const globalStore = useGlobalStore()
|
||||||
|
const productStore = useProducts()
|
||||||
|
const $router = useRouter()
|
||||||
|
const $q = useQuasar()
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
function mounted() {
|
||||||
|
// Inizializza
|
||||||
|
productStore.loadProducts()
|
||||||
|
}
|
||||||
|
function getProducts() {
|
||||||
|
return productStore.getProducts()
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(mounted)
|
||||||
|
|
||||||
|
return {
|
||||||
|
userStore,
|
||||||
|
costanti,
|
||||||
|
tools,
|
||||||
|
toolsext,
|
||||||
|
getProducts,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
21
src/views/ecommerce/productsList/productsList.vue
Executable file
21
src/views/ecommerce/productsList/productsList.vue
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
<template>
|
||||||
|
<q-page>
|
||||||
|
<div class="panel">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="q-pa-md row items-start q-gutter-md" v-for="(product, index) in getProducts" :key="index">
|
||||||
|
<CProductCard :product="product" :complete="false"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./productsList.ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './productsList';
|
||||||
|
</style>
|
||||||
0
src/views/scheletro_convers/scheletro_convers.scss
Executable file
0
src/views/scheletro_convers/scheletro_convers.scss
Executable file
40
src/views/scheletro_convers/scheletro_convers.ts
Executable file
40
src/views/scheletro_convers/scheletro_convers.ts
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
import { 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 { useProducts } from '@store/Products'
|
||||||
|
import { useI18n } from '@/boot/i18n'
|
||||||
|
import { toolsext } from '@store/Modules/toolsext'
|
||||||
|
import { useQuasar } from 'quasar'
|
||||||
|
import { costanti } from '@costanti'
|
||||||
|
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'Scheletro',
|
||||||
|
components: { },
|
||||||
|
props: {},
|
||||||
|
setup() {
|
||||||
|
const userStore = useUserStore()
|
||||||
|
const globalStore = useGlobalStore()
|
||||||
|
const productStore = useProducts()
|
||||||
|
const $router = useRouter()
|
||||||
|
const $q = useQuasar()
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
|
||||||
|
function mounted() {
|
||||||
|
// Inizializza
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(mounted)
|
||||||
|
|
||||||
|
return {
|
||||||
|
userStore,
|
||||||
|
costanti,
|
||||||
|
tools,
|
||||||
|
toolsext,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
4
src/views/scheletro_convers/scheletro_convers.vue
Executable file
4
src/views/scheletro_convers/scheletro_convers.vue
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
Reference in New Issue
Block a user