From ffb660e1573c6088f91cc3afd076cb2004716364 Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Wed, 12 Feb 2020 20:41:57 +0100 Subject: [PATCH] - Aggiunto Step: i 7 Requisiti degli invitati. - Aggiornata la Lavagna (anche sul BOT). - Zoom solo 3 visibili. --- src/components/CGuidelines/CGuidelines.scss | 9 +- src/components/CGuidelines/CGuidelines.ts | 15 +- src/components/CGuidelines/CGuidelines.vue | 200 +++++++----- src/components/CMyDashboard/CMyDashboard.ts | 204 +----------- src/components/CMyDashboard/CMyDashboard.vue | 105 +------ .../CMyRequirement-validate.ts} | 0 .../CMyRequirement/CMyRequirement.scss | 0 .../CMyRequirement/CMyRequirement.ts | 293 ++++++++++++++++++ .../CMyRequirement/CMyRequirement.vue | 98 ++++++ src/components/CMyRequirement/index.ts | 1 + src/components/CNextZoom/CNextZoom.ts | 2 +- src/components/CSignIn/CSignIn.ts | 2 + src/components/CSignIn/CSignIn.vue | 11 +- .../CSignUpNotevole/CSignUpNotevole.ts | 5 +- src/components/CStatus/CStatus.ts | 48 ++- src/components/CStatus/CStatus.vue | 48 ++- src/components/CTitleBanner/CTitleBanner.ts | 1 + src/components/CTitleBanner/CTitleBanner.vue | 3 + src/components/CUserBadge/CUserBadge.vue | 1 + src/components/CVideoPromo/CVideoPromo.scss | 1 - src/components/CVideoPromo/CVideoPromo.ts | 11 +- src/components/CVideoPromo/CVideoPromo.vue | 3 +- src/components/Header/Header.vue | 6 +- src/components/index.ts | 1 + src/statics/i18n.js | 30 +- src/store/Modules/UserStore.ts | 4 +- src/store/Modules/tools.ts | 10 +- src/store/store-flag.d.ts | 9 + src/views/login/signin/signin.vue | 1 + .../login/signin_noreg/signin_noreg.scss | 5 + src/views/login/signin_noreg/signin_noreg.ts | 39 +++ src/views/login/signin_noreg/signin_noreg.vue | 18 ++ 32 files changed, 766 insertions(+), 418 deletions(-) rename src/components/{CMyDashboard/CMyDashboard-validate.ts => CMyRequirement/CMyRequirement-validate.ts} (100%) create mode 100644 src/components/CMyRequirement/CMyRequirement.scss create mode 100644 src/components/CMyRequirement/CMyRequirement.ts create mode 100644 src/components/CMyRequirement/CMyRequirement.vue create mode 100644 src/components/CMyRequirement/index.ts create mode 100644 src/store/store-flag.d.ts create mode 100644 src/views/login/signin_noreg/signin_noreg.scss create mode 100644 src/views/login/signin_noreg/signin_noreg.ts create mode 100644 src/views/login/signin_noreg/signin_noreg.vue diff --git a/src/components/CGuidelines/CGuidelines.scss b/src/components/CGuidelines/CGuidelines.scss index 01d5685..3de1a48 100644 --- a/src/components/CGuidelines/CGuidelines.scss +++ b/src/components/CGuidelines/CGuidelines.scss @@ -1,9 +1,14 @@ -.lista { +.lista, .lista li { text-align: left; - font-size: 0.75rem; + font-size: 1rem; } +.lista-small li { + text-align: left; + font-size: 0.85rem; +} + .step{ font-size: 1.15rem; font-weight: bold; diff --git a/src/components/CGuidelines/CGuidelines.ts b/src/components/CGuidelines/CGuidelines.ts index 3a66a4c..6f2693d 100644 --- a/src/components/CGuidelines/CGuidelines.ts +++ b/src/components/CGuidelines/CGuidelines.ts @@ -20,16 +20,22 @@ export default class CGuidelines extends MixinBase { public $t: any public $q public msg: string = '' + public myguideline: boolean = false get static_data() { return static_data } - get accetta_guideline() { - return tools.isBitActive(UserStore.state.my.profile.saw_and_accepted, shared_consts.Accepted.CHECK_READ_GUIDELINES) + public created() { + this.aggiorna_guideline() } - set accetta_guideline(value) { + public aggiorna_guideline() { + this.myguideline = tools.isBitActive(UserStore.state.my.profile.saw_and_accepted, shared_consts.Accepted.CHECK_READ_GUIDELINES) + } + + public changeval(value) { + console.log('PRIMA saw_and_accepted', UserStore.state.my.profile.saw_and_accepted) if (value) UserStore.state.my.profile.saw_and_accepted = tools.SetBit(UserStore.state.my.profile.saw_and_accepted, shared_consts.Accepted.CHECK_READ_GUIDELINES) else @@ -38,6 +44,9 @@ export default class CGuidelines extends MixinBase { const mydata = { 'profile.saw_and_accepted': UserStore.state.my.profile.saw_and_accepted } + this.aggiorna_guideline() + + console.log('DOPO saw_and_accepted', UserStore.state.my.profile.saw_and_accepted) tools.saveFieldToServer(this, 'users', UserStore.state.my._id, mydata) } diff --git a/src/components/CGuidelines/CGuidelines.vue b/src/components/CGuidelines/CGuidelines.vue index 2bcaafc..d9e7c3a 100644 --- a/src/components/CGuidelines/CGuidelines.vue +++ b/src/components/CGuidelines/CGuidelines.vue @@ -3,125 +3,179 @@ -

Movimento di ECOnomia Solidale

+

Movimento di ECOnomia Solidale ~ AYNI GIFT*ECOnomy

- Ayni è un movimento di economia solidale. Si basa sul concetto del regalo: io - regalo e ricevo in modo libero - ed abbondante. È una struttura pensata e creata per permettere alle persone di aiutarsi e sostenersi fra di - loro, in modo da realizzare i propri sogni. È un progetto serio che richiede, a chi ne fa parte, di + Ayni è un movimento di economia solidale. Si basa sulla pratica del regalo, + del donare come risorsa e come + ricchezza! Dare e donare mi apre al ricevere, crea relazioni basate sull’aiuto e la gratitudine, non + sul profitto.

+

+ Ayni è pensata e creata per permettere alle persone di aiutarsi e sostenersi fra di loro, in + modo da realizzare + i propri sogni e i propri progetti di vita. È un progetto serio che richiede, a chi ne vuol far parte, di comprendere che questo non è un sistema per guadagnare o un classico fondo di investimento, ma un modo per - recuperare quel fattore umano di aiuto reciproco attraverso il continuo sostegno dei nuovi membri supportati - da chi ha già fatto esperienza in movimenti di Economia Solidale, che la civiltà moderna capitalista - (occidentale) ci sta facendo perdere.

- + recuperare quel fattore umano di aiuto reciproco attraverso il continuo sostegno e accompagnamento dei nuovi + membri supportati da chi ha già fatto esperienza in questo e in altri movimenti di Economia Solidale, attraverso + il fare Rete, creando così relazioni e esperienze di Valore, generando Ricchezza Reale.

Strumenti necessari per far parte di AYNI

-

Cosa devi fare per poter entrare in Ayni?

+

Cosa devi fare per poter entrare in Ayni?

Fase 1: Accoglienza

Fase 2: Completamento dei requisiti richiesti

    -
  1. Leggere le Linee Guida ed accettare tutte le condizioni richieste.
  2. -
  3. Vedere i Video Introduttivi al Movimento.
  4. -
  5. Assistere ad uno Zoom di Benvenuto in cui potrai parlare direttamente con gli - Amministratori e porre - tutte le tue domande. +
  6. Leggere ed accettare le nostre Linee Guida e Guardare i Video Introduttivi al Movimento.
  7. +
  8. Assistere ad uno Zoom di Benvenuto (Video-Conferenza) in cui potrai conoscere il movimento, parlare + direttamente con i membri dello Staff, risolvere e chiarire eventuali dubbi.
  9. -
  10. Scrivere il tuo Sogno per il quale sei entrato in Ayni e che desideri realizzare.
  11. -
  12. Attivare almeno 2 metodi di pagamento, uno per il tuo paese di residenza ed uno per - transazioni - all’estero.
    - PayPal è obbiligatorio, il trasferimento e gratuito e si possono collegare carte e conti correnti.
    - Sono consigliati il Conto Revolut o N26 per le transazioni estere. +
  13. Scrivere il tuo Sogno: qual è la cosa o il progetto che vorresti realizzare e che il tuo + Cuore desidera ardentemente?
  14. -
  15. Trovare a tua volta almeno 2 invitati (consigliati 3) invitando più - persone ad assistere agli Zoom di - Benvenuto ed assisterli nella registrazione sul sito AYNI GIFT*ECOnomy. +
  16. Attivare almeno 2 metodi di pagamento. + PayPal è obbligatorio (occorrono 2 minuti per attivarlo). + Ti consente trasferimenti gratuiti in area Euro e puoi collegarci carte e conti + correnti. I tuoi dati sono al sicuro e non condivisi con il ricevente. + Sono consigliati il conto Revolut o N26 come seconda opzione e Western Union, Xoom o TransferWise nei casi di + regali extraeuropei. +
  17. +
  18. Invitare, invitare, invitare. Accompagnare le persone ad un Zoom di Benvenuto e assisterli nella + registrazione al sito. Il movimento è un organismo vivente di cui ora anche tu fai parte. Per ciò ti viene + richiesto di coinvolgere attivamente almeno 2 persone, ne consigliamo 3 in su, non penso solo a + me, ma anche agli altri che ne fanno parte, garantendo e sostenendo così la solidarietà dello stesso.
-

Fase 3: Programmazione della Billettera

+

Fase 3: Programmazione e Attivazione della Billettera

-

Ti verrà comunicato con anticipo la data in cui entrerai nella tua Billettera, il nominativo del Sognatore - a cui dovrai versare il tuo dono di 33€ ed i suoi estremi di pagamento.

-
-

Ora il tuo viaggio comincia !!!

- -

Com’è composta strutturalmente una Billettera AYNI?

-

La sequenza dei passaggi in AYNI è programmata in anticipo, così da

+

In AYNI La sequenza dei passaggi è programmata in anticipo, in modo da:

- -

I 3 passi

- -

Dal momento in cui conosco il giorno della partenza della mia bigliettera, i seguenti passi da compiere - saranno questi:

- -

Passo 1:

-

Entro nella chat Telegram come Donatore:

-

Il mio compito è fare il dono di 33€ al Sognatore.

-

Passo 2:

-

Apro una chat Telegram e divento Mediatore:

-

il mio compito è quello di assicurarmi che tutti i Donatori facciano il Dono al Sognatore. - Il sistema invierà in automatico le istruzioni per fare il Dono, il Mediatore interverrà se ci saranno - eventuali problematiche con i metodi di pagamento scelti.

-

Passo 3:

-

Apro una chat Telegram e divento Sognatore:

-

Il mio compito è quello di ricevere i Doni da tutti i Donatori, aprirmi all’abbondanza e celebrare. +

La tua Billetera verrà programmata e tu entrerai in una chat coi tuoi compagni di viaggio. Allo stesso tempo, + ti verrà comunicata la data in cui la billetera sarà attivata e in cui potrai donare i 33€ e il nominativo e i + dati del Sognatore a cui fare il tuo dono. + Conoscerai, inoltre, le date di ciascuno dei 3 passi.

-
-

Donatore: Colui che effettua il Dono di 33€.
- Mediatore: E’ l’intermediario tra i Donatori e il Sognatore.
- Sognatore: Colui che riceve i Doni.
+

+ Le date di programmazione e dei passi sono intese come ‘previsioni di attivazione e di completamento’. + Nel caso + il flusso di persone e di invitati non consentisse di mantenere e realizzare quanto programmato nei tempi e + forma previsti, le date verranno riprogrammate per permettere il completamento di tutti e non lasciare che il + viaggio possa interrompersi. +

+ +

Nel fare esperienza dei 3 passi incontreremo e transiteremo in 3 personaggi:

+ +

Donatore: Colui che effettua il Dono di 33€.
+ Mediatore: È il ponte, colui che mette in relazione Donatori e Sognatore.
+ Sognatore: Colui che manifesta il suo sogno ricevendo i Doni.
+

+ + +

Dal momento in cui conosco il giorno della partenza della mia bigliettera, i passi da compiere + saranno questi:

+
+ +
+

Entro nella chat Telegram come Donatore:

+

La chat è formata da 8 donatori e un mediatore.
+ Il mio compito è di regalare 33€ al Sognatore (il mediatore mi guiderà nel processo).
+ Il dono lo farò nella data di attivazione della billetera e del passo 1.

+
+ +
+

Apro una chat Telegram e divento Mediatore:

+

La chat è formata da 8 donatori (che aiuterò ad entrare in chat) e da me, il Mediatore.
+ + Il mio compito è quello di assicurarmi che tutti i Donatori facciano il Dono al Sognatore. + Il sistema invierà in automatico le istruzioni per fare il Dono, il Mediatore (io) verificherà e accompagnerà + il + processo.
+ Il passo 2, di norma, è attivato 4 giorni dopo il passo 1.

+ + +
+ +
+

Divento Sognatore:

+

La chat dove sono Sognatore è la stessa e con le stesse persone aperta nel passo 2 (dove io ero Mediatore) e + anche qui cambiano i ruoli, ovvero ora ci sono 8 mediatori e io, il Sognatore.
+ Il mio compito è quello di aprirmi a ricevere i Doni da ciascun Donatore, completarmi e celebrare + l’Abbondanza. +
+ Il passo 3, di norma, è attivato 4 giorni dopo il passo 2.
+
+

+ +
+ +

La Chat Automatica + AYNI BOT mi invierà + tutte le istruzioni che dovrò compiere, + al momento opportuno!

+ + +

Bene... Ora mettiti comodo, il tuo viaggio è cominciato!

 

- -
    + +
    • dichiaro di aver letto e ben compreso le linee guida del movimento AYNI
    • -
    • dichiaro di aver ben compreso gli impegni che prendo iscrivendomi a AYNI (portare 2 persone, ragalo 33 €) e di +
    • dichiaro di aver ben compreso gli impegni che prendo iscrivendomi a AYNI (portare 2 persone, ragalo 33 €) + e di aver compreso che senza non verrò inserito in programmazione.
    • -
    • dichiaro di aver ben compreso che non è un fondo di investimento e che il mio regalo è a fondo perduto +
    • dichiaro di aver ben compreso che non è un fondo di investimento e che il mio regalo è a fondo + perduto
    • -
    • dichiaro di aver ben compreso che devo partecipare almeno ad uno ZOOM (Video-Conferenza On Line)
    • +
    • dichiaro di aver ben compreso che devo partecipare almeno ad uno ZOOM (Video-Conferenza + On Line) +
    • -
    • dichiaro di aver ben compreso che per la mia sicurezza devo aprire un conto Paypal per consegnare il regalo. +
    • dichiaro di aver ben compreso che per la mia sicurezza devo aprire un conto Paypal per + consegnare il regalo.
    + diff --git a/src/components/CMyDashboard/CMyDashboard.ts b/src/components/CMyDashboard/CMyDashboard.ts index 9aa4432..e887fa8 100644 --- a/src/components/CMyDashboard/CMyDashboard.ts +++ b/src/components/CMyDashboard/CMyDashboard.ts @@ -16,14 +16,11 @@ import { CRequisito } from '../CRequisito' import translate from '../../globalroutines/util' import { tools } from '../../store/Modules/tools' import { lists } from '../../store/Modules/lists' -import { validations } from './CMyDashboard-validate' -import { validationMixin } from 'vuelidate' import { shared_consts } from '../../common/shared_vuejs' +import { CMyRequirement } from '../CMyRequirement' @Component({ - mixins: [validationMixin], - validations, - components: { CProfile, CTitleBanner, CMyFieldDb, CCopyBtn, CUserBadge, CLegenda, CRequisito } + components: { CProfile, CTitleBanner, CMyFieldDb, CCopyBtn, CUserBadge, CLegenda, CRequisito, CMyRequirement } }) export default class CMyDashboard extends MixinUsers { @@ -45,122 +42,6 @@ export default class CMyDashboard extends MixinUsers { @Prop({ required: true }) public username - - public arrrequisiti = [ - { - icon: 'email', - textlang: 'reg.verified_email', - textadd(user) { - return '' - }, - isok(user) { - if (user) - return user.verified_email - else - return false - }, - info: '', - }, - { - icon: 'fab fa-telegram', - textlang: 'reg.telegram', - textadd(user) { - return '' - }, - isok(user) { - if (user) - if (user.profile) - return user.profile.teleg_id > 0 - - return false - }, - info: '', - }, - { - icon: 'fas fa-file-signature', - textlang: 'steps.linee_guida', - textadd(user) { - return '' - }, - isok(user) { - if (user) - if (user.profile) - return tools.isBitActive(user.profile.saw_and_accepted, shared_consts.Accepted.CHECK_READ_GUIDELINES) - return false - }, - info: '', - }, - { - icon: 'fas fa-tv', - textlang: 'steps.video_intro', - textadd(user) { - return '' - }, - isok(user) { - if (user) - if (user.profile) - return tools.isBitActive(user.profile.saw_and_accepted, shared_consts.Accepted.CHECK_SEE_VIDEO_PRINCIPI) - return false - }, - info: '', - }, - { - icon: 'fas fa-heart', - textlang: 'steps.dream', - textadd(user) { - return '' - }, - isok(user) { - if (user) - if (user.profile.my_dream) - return user.profile.my_dream.length > 20 - else - return false - }, - info: '', - }, - { - icon: 'far fa-credit-card', - textlang: 'steps.paymenttype', - textadd(user) { - return '' - }, - isok(user) { - let ispaypal = false - if (user) { - if (!!user.profile.paymenttypes) { - if (user.profile.paymenttypes.includes('paypal')) { - if (user.profile.email_paypal) { - ispaypal = true - } - } - if (!!user.profile) - if (!!user.profile.paymenttypes) { - const ris = (user.profile.paymenttypes.length >= 2) && ispaypal - return ris - } - - } - } - return false - }, - info: '', - }, - { - icon: 'fas fa-users', - textlang: 'dashboard.numinvitati', - textadd(user) { - return ' (' + user.numinvitatiattivi + ' / ' + user.numinvitati + ')' - }, - isok(user) { - if (user) { - return user.numinvitatiattivi >= 2 - } - }, - info: '', - }, - ] - @Watch('UserStore.state.my.dashboard') public changedash() { console.log('changedash') @@ -209,85 +90,4 @@ export default class CMyDashboard extends MixinUsers { this.seluser = user } - public isextralist(user) { - return !!user.cell_complete - } - - public ismyinvited_notreg(user) { - return this.dashboard.downnotreg.find((rec) => rec.ind_order === user.ind_order) - } - - public ismydownline(user) { - return this.dashboard.downline.find((rec) => rec.username === user.username) - } - - public async deleteUserFromExtraList(user) { - - await tools.askConfirm(this.$q, translate('reg.cancella_invitato'), translate('reg.cancella_invitato') + ' ' + user.name + ' ' + user.surname + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.DELETE_EXTRALIST, 0, { - param1: user, - param2: true - }) - } - - public async deleteUserFromUsersList(user) { - - await tools.askConfirm(this.$q, translate('reg.cancella_invitato'), translate('reg.cancella_invitato') + ' ' + user.name + ' ' + user.surname + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.DELETE_USERLIST, 0, { - param1: user, - param2: true - }) - } - - public async RegalaInvitato(user, aportador_solidario, notifBottxt) { - let notiftxt = '' - if (this.notifBot) - notiftxt = notifBottxt - - await tools.askConfirm(this.$q, translate('reg.regala_invitato'), translate('reg.regala_invitato') + ' ' + user.name + ' ' + user.surname + ' a ' + aportador_solidario + ' ?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.REGALA_INVITATO, 0, { - param1: user, - param2: aportador_solidario, - param3: notiftxt - }) - } - - public errorMsg(cosa: string, item: any) { - try { - if (!item.$error) { - return '' - } - - if (item.required !== undefined) { - if (!item.required) { - return this.$t('reg.err.required') - } - - } else if (cosa === 'aportador_solidario') { - // console.log(item); - if (!item.aportadorexist) { - // console.log('!item.aportadorexist !') - return this.$t('reg.err.aportador_regalare_not_exist') - } - } - - return '' - } catch (error) { - // console.log("ERR : " + error); - } - } - - get allowSubmit() { - let error = this.$v.$error || this.$v.$invalid - - error = error || (this.aportador_solidario === this.seluser.aportador_solidario) - - return !error - - } - - get getnotifBotTxt() { - return this.$t('dashboard.ricevuto_dono', { - invitato: this.seluser.name + ' ' + this.seluser.surname, - mittente: this.dashboard.myself.username - }) - } - } diff --git a/src/components/CMyDashboard/CMyDashboard.vue b/src/components/CMyDashboard/CMyDashboard.vue index d5cd4b4..87345bb 100644 --- a/src/components/CMyDashboard/CMyDashboard.vue +++ b/src/components/CMyDashboard/CMyDashboard.vue @@ -3,6 +3,13 @@ +
    + + + + + +
    +

    Clicca sul nome dell'invitato per vedere lo stato dei suoi Requisiti.

    @@ -122,102 +130,17 @@
    - - + + - Info: + {{$t('reg.requirement')}} - - + + - -
    - -
    -
    - -
    - -
    - -
    - - -
    - - - - - - - - - -
    -
    - - - - - - -
    - -
    -
    -
    - - - - - - - -
    -
    - - -
    +
    diff --git a/src/components/CMyDashboard/CMyDashboard-validate.ts b/src/components/CMyRequirement/CMyRequirement-validate.ts similarity index 100% rename from src/components/CMyDashboard/CMyDashboard-validate.ts rename to src/components/CMyRequirement/CMyRequirement-validate.ts diff --git a/src/components/CMyRequirement/CMyRequirement.scss b/src/components/CMyRequirement/CMyRequirement.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/components/CMyRequirement/CMyRequirement.ts b/src/components/CMyRequirement/CMyRequirement.ts new file mode 100644 index 0000000..17860f0 --- /dev/null +++ b/src/components/CMyRequirement/CMyRequirement.ts @@ -0,0 +1,293 @@ +import { Component, Prop, Watch } from 'vue-property-decorator' + +import { UserStore } from '../../store/Modules' +import { DefaultUser } from '@src/store/Modules/UserStore' + +import MixinUsers from '../../mixins/mixin-users' +import { CProfile } from '../CProfile' +import { CTitleBanner } from '../CTitleBanner' +import { CMyFieldDb } from '../CMyFieldDb' +import { CCopyBtn } from '../CCopyBtn' +import { CUserBadge } from '../CUserBadge' +import { CLegenda } from '../CLegenda' +import { IDashboard, IUserProfile } from '../../model' +import { IUserFields } from '../../model/UserStore' +import { CRequisito } from '../CRequisito' +import translate from '../../globalroutines/util' +import { tools } from '../../store/Modules/tools' +import { lists } from '../../store/Modules/lists' +import { validations } from './CMyRequirement-validate' +import { validationMixin } from 'vuelidate' +import { shared_consts } from '../../common/shared_vuejs' + +@Component({ + mixins: [validationMixin], + validations, + components: { CProfile, CTitleBanner, CMyFieldDb, CCopyBtn, CUserBadge, CLegenda, CRequisito } +}) + +export default class CMyRequirement extends MixinUsers { + @Prop({ required: true }) public myseluser + @Prop({ required: true }) public mydashboard + @Prop({ required: false, default: false }) public notitle + public $t + public $v + public $q + public notifBot: boolean = true + public aportador_solidario: string = '' + public seluser: IUserFields = DefaultUser + public dashboard: IDashboard = { + myself: DefaultUser, + aportador: DefaultUser, + numpeople_aportador: 0, + downline: [], + downnotreg: [], + downbyuser: [] + } + + @Watch('mydashboard') + public changedash() { + console.log('changedash') + this.dashboard = this.mydashboard + } + + @Watch('myusersel') + public changemyusersel() { + console.log('myseluser') + this.seluser = this.myseluser + } + + public arrrequisiti = [ + { + icon: 'email', + textlang: 'reg.verified_email', + textadd(user) { + return '' + }, + isok(user) { + if (user) + return user.verified_email + else + return false + }, + info: '', + }, + { + icon: 'fab fa-telegram', + textlang: 'reg.telegram', + textadd(user) { + return '' + }, + isok(user) { + if (user) + if (user.profile) + return user.profile.teleg_id > 0 + + return false + }, + info: '', + }, + { + icon: 'fas fa-file-signature', + textlang: 'steps.linee_guida', + textadd(user) { + return '' + }, + isok(user) { + if (user) + if (user.profile) + return tools.isBitActive(user.profile.saw_and_accepted, shared_consts.Accepted.CHECK_READ_GUIDELINES) + return false + }, + info: '', + }, + { + icon: 'fas fa-tv', + textlang: 'steps.video_intro', + textadd(user) { + return '' + }, + isok(user) { + if (user) + if (user.profile) + return tools.isBitActive(user.profile.saw_and_accepted, shared_consts.Accepted.CHECK_SEE_VIDEO_PRINCIPI) + return false + }, + info: '', + }, + { + icon: 'fas fa-video', + textlang: 'steps.zoom', + textadd(user) { + return '' + }, + isok(user) { + if (user) { + return user.profile.saw_zoom_presentation + } + + }, + info: '', + }, + { + icon: 'fas fa-heart', + textlang: 'steps.dream', + textadd(user) { + return '' + }, + isok(user) { + if (user) + if (user.profile.my_dream) + return user.profile.my_dream.length > 20 + else + return false + }, + info: '', + }, + { + icon: 'far fa-credit-card', + textlang: 'steps.paymenttype', + textadd(user) { + return '' + }, + isok(user) { + let ispaypal = false + if (user) { + if (!!user.profile.paymenttypes) { + if (user.profile.paymenttypes.includes('paypal')) { + if (user.profile.email_paypal) { + ispaypal = true + } + } + if (!!user.profile) + if (!!user.profile.paymenttypes) { + const ris = (user.profile.paymenttypes.length >= 1) && ispaypal + return ris + } + + } + } + return false + }, + info: '', + }, + { + icon: 'fas fa-users', + textlang: 'steps.sharemovement', + textadd(user) { + return '' + }, + isok(user) { + if (user) { + return user.numinvitati >= 2 + } + }, + info: '', + }, + { + icon: 'fas fa-users', + textlang: 'dashboard.inv_attivi', + textadd(user) { + return ' (' + user.numinvitatiattivi + ')' + }, + isok(user) { + if (user) { + return user.numinvitatiattivi >= 2 + } + }, + info: '', + }, + ] + + get mythis() { + return this + } + + public created() { + this.dashboard = this.mydashboard + this.seluser = this.myseluser + + } + + public isextralist(user) { + return !!user.cell_complete + } + + public ismyinvited_notreg(user) { + return this.dashboard.downnotreg.find((rec) => rec.ind_order === user.ind_order) + } + + public ismydownline(user) { + return this.dashboard.downline.find((rec) => rec.username === user.username) + } + + public async deleteUserFromExtraList(user) { + + await tools.askConfirm(this.$q, translate('reg.cancella_invitato'), translate('reg.cancella_invitato') + ' ' + user.name + ' ' + user.surname + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.DELETE_EXTRALIST, 0, { + param1: user, + param2: true + }) + } + + public async deleteUserFromUsersList(user) { + + await tools.askConfirm(this.$q, translate('reg.cancella_invitato'), translate('reg.cancella_invitato') + ' ' + user.name + ' ' + user.surname + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.DELETE_USERLIST, 0, { + param1: user, + param2: true + }) + } + + public async RegalaInvitato(user, aportador_solidario, notifBottxt) { + let notiftxt = '' + if (this.notifBot) + notiftxt = notifBottxt + + await tools.askConfirm(this.$q, translate('reg.regala_invitato'), translate('reg.regala_invitato') + ' ' + user.name + ' ' + user.surname + ' a ' + aportador_solidario + ' ?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.REGALA_INVITATO, 0, { + param1: user, + param2: aportador_solidario, + param3: notiftxt + }) + } + + public errorMsg(cosa: string, item: any) { + try { + if (!item.$error) { + return '' + } + + if (item.required !== undefined) { + if (!item.required) { + return this.$t('reg.err.required') + } + + } else if (cosa === 'aportador_solidario') { + // console.log(item); + if (!item.aportadorexist) { + // console.log('!item.aportadorexist !') + return this.$t('reg.err.aportador_regalare_not_exist') + } + } + + return '' + } catch (error) { + // console.log("ERR : " + error); + } + } + + get allowSubmit() { + let error = this.$v.$error || this.$v.$invalid + + error = error || (this.aportador_solidario === this.seluser.aportador_solidario) + + return !error + + } + + get getnotifBotTxt() { + return this.$t('dashboard.ricevuto_dono', { + invitato: this.seluser.name + ' ' + this.seluser.surname, + mittente: this.dashboard.myself.username + }) + } + +} diff --git a/src/components/CMyRequirement/CMyRequirement.vue b/src/components/CMyRequirement/CMyRequirement.vue new file mode 100644 index 0000000..acdf4dc --- /dev/null +++ b/src/components/CMyRequirement/CMyRequirement.vue @@ -0,0 +1,98 @@ + + + + diff --git a/src/components/CMyRequirement/index.ts b/src/components/CMyRequirement/index.ts new file mode 100644 index 0000000..977ca6b --- /dev/null +++ b/src/components/CMyRequirement/index.ts @@ -0,0 +1 @@ +export {default as CMyRequirement} from './CMyRequirement.vue' diff --git a/src/components/CNextZoom/CNextZoom.ts b/src/components/CNextZoom/CNextZoom.ts index 48a49f6..e0f2f55 100644 --- a/src/components/CNextZoom/CNextZoom.ts +++ b/src/components/CNextZoom/CNextZoom.ts @@ -22,7 +22,7 @@ export default class CNextZoom extends MixinBase { public $t get listacalzoom() { - return GlobalStore.state.calzoom + return GlobalStore.state.calzoom.slice(-3) } get nextconf() { diff --git a/src/components/CSignIn/CSignIn.ts b/src/components/CSignIn/CSignIn.ts index e872a91..d7c8411 100644 --- a/src/components/CSignIn/CSignIn.ts +++ b/src/components/CSignIn/CSignIn.ts @@ -25,6 +25,8 @@ import { static_data } from '../../db/static_data' }) export default class CSignIn extends Vue { + @Prop({required: true}) public showregbutt: boolean + public $v public loading: boolean public $t: any diff --git a/src/components/CSignIn/CSignIn.vue b/src/components/CSignIn/CSignIn.vue index 1d89a15..dff2d93 100644 --- a/src/components/CSignIn/CSignIn.vue +++ b/src/components/CSignIn/CSignIn.vue @@ -28,6 +28,7 @@ v-model="signin.password" type="password" rounded outlined dense + v-on:keyup.enter="submit()" @blur="$v.signin.password.$touch" :error="$v.signin.password.$error" :error-message="`${errorMsg('password', $v.signin.password)}`" @@ -37,9 +38,6 @@ - @@ -55,10 +53,15 @@ :disable="$v.$error || iswaitingforRes">{{$t('login.enter')}}
-
+
+
+ +
diff --git a/src/components/CSignUpNotevole/CSignUpNotevole.ts b/src/components/CSignUpNotevole/CSignUpNotevole.ts index 70cf8bf..40b2f42 100644 --- a/src/components/CSignUpNotevole/CSignUpNotevole.ts +++ b/src/components/CSignUpNotevole/CSignUpNotevole.ts @@ -69,14 +69,17 @@ export default class CSignUpNotevole extends MixinBase { this.signup.aportador_solidario = this.$route.params.invited + console.log('1) aportador_solidario', this.signup.aportador_solidario) + if (!this.signup.aportador_solidario) this.signup.aportador_solidario = tools.getCookie(tools.APORTADOR_SOLIDARIO, this.signup.aportador_solidario) - if (!this.signup.aportador_solidario) { + if (!this.signup.aportador_solidario || this.signup.aportador_solidario === 'undefined') { this.signup.aportador_solidario = tools.APORTADOR_NONE } this.$v.signup.aportador_solidario.$touch() + console.log('this.signup.aportador_solidario', this.signup.aportador_solidario) } // @Watch('signup.already_registered') diff --git a/src/components/CStatus/CStatus.ts b/src/components/CStatus/CStatus.ts index 8ba4895..6c3b108 100644 --- a/src/components/CStatus/CStatus.ts +++ b/src/components/CStatus/CStatus.ts @@ -28,6 +28,7 @@ export default class CStatus extends MixinBase { public step = 0 public steptodo = 0 public NUMSTEP_OBBLIGATORI = 9 + public my_dream: string = '' get numpayment() { if (UserStore.state.my.profile) @@ -143,7 +144,7 @@ export default class CStatus extends MixinBase { page: '/mydream', funccheck(index) { if (UserStore.state.my.profile.my_dream) - if (UserStore.state.my.profile.my_dream.length > 20) + if (UserStore.state.my.profile.my_dream.length > 10) return true return false @@ -171,7 +172,7 @@ export default class CStatus extends MixinBase { } if (UserStore.state.my.profile) if (UserStore.state.my.profile.paymenttypes) - return (UserStore.state.my.profile.paymenttypes.length >= 2) && ispaypal + return (UserStore.state.my.profile.paymenttypes.length >= 1) && ispaypal } return false @@ -190,6 +191,24 @@ export default class CStatus extends MixinBase { title: 'steps.sharemovement', descr: 'steps.sharemovement_long', page: '/sharemovement', + funccheck(index) { + if (UserStore.state.my.calcstat) + return UserStore.state.my.calcstat.numinvitati >= 2 + }, + funccheck_error(index) { + return true + }, + funcok() { + return '' + }, + funcko() { + return '' + }, + }, + { + title: 'dashboard.inv_attivi', + descr: 'steps.inv_attivi_long', + page: '', funccheck(index) { if (UserStore.state.my.calcstat) return UserStore.state.my.calcstat.numinvitati_attivi >= 2 @@ -316,6 +335,19 @@ export default class CStatus extends MixinBase { public created() { this.setstep() this.setsteptodo() + + this.my_dream = UserStore.state.my.profile.my_dream + } + + public change_mydream() { + if (UserStore.state.my.profile.my_dream !== this.my_dream) { + UserStore.state.my.profile.my_dream = this.my_dream + + const mydata = { + 'profile.my_dream': UserStore.state.my.profile.my_dream + } + tools.saveFieldToServer(this, 'users', UserStore.state.my._id, mydata) + } } get TelegVerificato() { @@ -358,14 +390,14 @@ export default class CStatus extends MixinBase { return 0 } - public gettextstep(step) { - let tit = this.$t(step.title) + public gettextstep(step, index) { + let tit = (index + 1) + '. ' + this.$t(step.title) if (step.funcok()) tit += ' ' + this.$t(step.funcok()) if (step.title === 'steps.sharemovement') { - tit += ' (' + this.getnuminvitati_attivi() + ' / ' + this.getnuminvitati() + ' invitati Attivi)' + tit += ' (' + this.getnuminvitati() + ' ' + this.$t('dashboard.downline') + ')' } else if (step.title === 'steps.paymenttype') { tit += this.paymenttext } @@ -458,7 +490,7 @@ export default class CStatus extends MixinBase { } if (UserStore.state.my.profile) if (UserStore.state.my.profile.paymenttypes) - return (UserStore.state.my.profile.paymenttypes.length >= 2) && ispaypal + return (UserStore.state.my.profile.paymenttypes.length >= 1) && ispaypal } return false @@ -483,11 +515,11 @@ export default class CStatus extends MixinBase { } get strpercstep() { - return 'Completati ' + (this.getstep + 1) + ' passi su ' + this.NUMSTEP_OBBLIGATORI + return 'Completati ' + (this.getstep) + ' passi su ' + this.NUMSTEP_OBBLIGATORI } get stepcompleti() { - return this.getstep + 1 === this.NUMSTEP_OBBLIGATORI + return this.getstep === this.NUMSTEP_OBBLIGATORI } public scrolltostep(mystep) { diff --git a/src/components/CStatus/CStatus.vue b/src/components/CStatus/CStatus.vue index 3eb2cc1..091b94d 100644 --- a/src/components/CStatus/CStatus.vue +++ b/src/components/CStatus/CStatus.vue @@ -49,7 +49,7 @@ :id="`step`+(index)" :key="mystep.title" :name="index" - :title="gettextstep(mystep)" + :title="gettextstep(mystep, index)" :icon="geticonstep(mystep)" :done-color="geticoncolor(mystep.title)" :done="mystep.funccheck(index)" @@ -160,6 +160,15 @@
+ + +
@@ -227,11 +237,9 @@ - - +
@@ -257,9 +265,23 @@ + +
+
+ + + + + +
+
+
+
@@ -311,19 +333,19 @@ -
- -
- -
+
+
+ +
+
-
- +
- + diff --git a/src/components/CTitleBanner/CTitleBanner.ts b/src/components/CTitleBanner/CTitleBanner.ts index 77a4538..a84fbbf 100644 --- a/src/components/CTitleBanner/CTitleBanner.ts +++ b/src/components/CTitleBanner/CTitleBanner.ts @@ -33,6 +33,7 @@ export default class CTitleBanner extends Vue { @Prop({ required: false, default: '' }) public icon: string @Prop({ required: false, default: true }) public visible: boolean @Prop({ required: false, default: false }) public canopen: boolean + @Prop({ required: false, default: '' }) public imgpreview: string public myvisible: boolean = false diff --git a/src/components/CTitleBanner/CTitleBanner.vue b/src/components/CTitleBanner/CTitleBanner.vue index 62002fa..bc8d334 100644 --- a/src/components/CTitleBanner/CTitleBanner.vue +++ b/src/components/CTitleBanner/CTitleBanner.vue @@ -22,6 +22,9 @@
+
+ +
diff --git a/src/components/CUserBadge/CUserBadge.vue b/src/components/CUserBadge/CUserBadge.vue index 42b7cf0..a7a297f 100644 --- a/src/components/CUserBadge/CUserBadge.vue +++ b/src/components/CUserBadge/CUserBadge.vue @@ -20,6 +20,7 @@ +
- + @@ -42,6 +42,7 @@ diff --git a/src/components/Header/Header.vue b/src/components/Header/Header.vue index 0594815..9550783 100644 --- a/src/components/Header/Header.vue +++ b/src/components/Header/Header.vue @@ -154,10 +154,10 @@ -
- +
+ {{$t('pages.profile')}} - + {{$t('login.exit')}}
diff --git a/src/components/index.ts b/src/components/index.ts index 176eae8..61d34a5 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -55,3 +55,4 @@ export * from './CLegenda' export * from './CRequisito' export * from './CGuidelines' export * from './CVideoPromo' +export * from './CMyRequirement' diff --git a/src/statics/i18n.js b/src/statics/i18n.js index 1e075b2..a4056ae 100644 --- a/src/statics/i18n.js +++ b/src/statics/i18n.js @@ -75,7 +75,7 @@ const msgglobal = { entra_zoom: 'Entra in Zoom', linee_guida: 'Accetto le Linee Guida', video_intro: 'Vedo il Video di AYNI', - zoom: 'Partecipo agli Zoom (Video Conferenza)', + zoom: 'Partecipo ad almeno 1 Zoom', zoom_si_partecipato: 'Hai partecipato ad almeno 1 Zoom', zoom_partecipa: 'Partecipato ad almeno 1 Zoom', zoom_no_partecipato: 'Attualmente non hai ancora partecipato ad uno Zoom (è un requisito per poter entrare)', @@ -84,14 +84,15 @@ const msgglobal = { sharemovement_devi_invitare_almeno_2: 'Ancora non hai invitato 2 persone', sharemovement_hai_invitato: 'Hai invitato almeno 2 persone', sharemovement_invitati_attivi_si: 'Hai almeno 2 persone invitate Attive', - sharemovement_invitati_attivi_no: 'Nota Bene:Le persone che hai invitato, per essere Attive, devono essere verificati Telegram ed aver partecipato ad almeno 1 Zoom', - sharemovement: 'Condivido questo Movimento Economico Solidale', + sharemovement_invitati_attivi_no: 'Nota Bene:Le persone che hai invitato, per essere Attive, devono aver completato tutti i primi 7 Requisiti (vedi la tua Lavagna per capire cosa gli manca)', + sharemovement: 'Invito almeno 2 persone', sharemovement_long: 'Condividi il Movimento AYNI con almeno 2 amici (consigliate 3 persone) e invitali a partecipare agli Zoom di Benvenuto per entrare a far parte di questa grande Famiglia 😄 .
', + inv_attivi_long: '', enter_prog_status: 'NOTA BENE: La Programmazione partirà appena possibile dopo che tutti si saranno registrati su questa piattaforma.
Comunicheremo noi le date in cui ognuno potrà partire ed effettuare così il proprio dono.
', enter_prog_completa_requisiti: 'Completa tutti i requisiti richiesti, per poter entrare in programmazione.', enter_prog_requisiti_ok: 'Hai completato tutti i requisiti per poter accedere alla Programmazione', enter_prog: 'Entro in Programmazione', - enter_prog_long: 'Sottisfatti i requisiti richiesti entrerai in Programmazione, verrai aggiunto alla Bigliettera e nella chat di gruppo corrispondente.
', + enter_prog_long: 'Soddisfatti i requisiti richiesti entrerai in Programmazione, verrai aggiunto alla Bigliettera e nella chat di gruppo corrispondente.
', collaborate: 'Collaborazione', collaborate_long: 'Continuo a collaborare con i miei compagni per arrivare al giorno della programmazione dove si attiverà la mia Bigliettera.', dream: 'Scrivo il mio Sogno', @@ -143,7 +144,7 @@ const msgglobal = { authentication: { telegram: { open: 'Clicca qui per aprire il BOT Telegram e segui le istruzioni', - ifclose: 'Se non si apre cliccando sul bottone oppure l\'avevi eliminato, cerca \'AYNI BOT\' nella ricerca di Telegram e premi Start', + ifclose: 'Se non si apre Telegram cliccando sul bottone oppure l\'avevi eliminato, vai su Telegram e cerca \'AYNI BOT\' dall\'icona della lente, poi premi Start e segui le istruzioni.', openbot: 'Apri \'AYNI BOT\' su Telegram', }, login: { @@ -186,7 +187,8 @@ const msgglobal = { downline: 'Invitati', downnotreg: 'Invitati non Registrati', notreg: 'Non Registrato', - numinvitati: 'Numero di Invitati', + inv_attivi: 'Invitati con i 7 Requisiti', + numinvitati: 'Almeno 2 Invitati', telefono_wa: 'Contatta su Whatsapp chi non si è registrato', sendnotification: 'Invia Notifica al Destinatario su Telegram BOT', ricevuto_dono: 'Hai ricevuto in Regalo un Invitato {invitato} da parte di {mittente} !' @@ -250,12 +252,13 @@ const msgglobal = { selected:'Selezionati', img: 'Immagine', date_reg: 'Data Reg.', + requirement:'Requisiti', perm: 'Permessi', username: 'Username (Pseudonimo)', username_short: 'Username', name: 'Nome', surname: 'Cognome', - username_login: 'Nome Utente o email', + username_login: 'Username o email', password: 'Password', repeatPassword: 'Ripeti password', terms: "Accetto i termini della privacy", @@ -278,7 +281,7 @@ const msgglobal = { email_not_exist: 'l\'Email non è presente in archivio, verificare se è corretta', duplicate_email: 'l\'Email è già stata registrata', user_already_exist: 'La registrazione con questi dati (nome, cognome e cellulare) è stata già effettuata. Per accedere al sito, cliccare sul bottone LOGIN dalla HomePage.', - user_extralist_not_found: 'Utente in archivio non trovato, inserire il Nome, Cognome e numero di cellulare inviato in precedenza', + user_extralist_not_found: 'Utente in archivio non trovato, inserire il Nome, Cognome e numero di cellulare comunicato nella lista nel 2019. Se questa è una nuova registrazione, dovete registrarvi tramite il LINK di chi vi sta invitando.', user_not_this_aportador: 'Stai utilizzando un link di una persona diversa dal tuo invitato originale.', duplicate_username: 'L\'Username è stato già utilizzato', aportador_not_exist: 'L\'Username di chi ti ha invitato non è presente. Contattaci.', @@ -307,7 +310,8 @@ const msgglobal = { login: { page_title: 'Login', incorso: 'Login in corso', - enter: 'Login', + enter: 'Accedi', + esci: 'Esci', errato: "Username o password errata. Riprovare", completato: 'Login effettuato!', needlogin: 'E\' necessario effettuare il login prima di continuare' @@ -671,6 +675,7 @@ const msgglobal = { manage_telegram: 'Gestori Telegram', img: 'File image', date_reg: 'Fecha Reg.', + requirement:'Requisitos', perm: 'Permisos', username: 'Username (Apodo)', username_short: 'Username', @@ -720,6 +725,7 @@ const msgglobal = { page_title: 'Login', incorso: 'Login en curso', enter: 'Entra', + esci: 'Salir', errato: "Nombre de usuario, correo o contraseña incorrectos. inténtelo de nuevo", completato: 'Login realizado!', needlogin: 'Debes iniciar sesión antes de continuar', @@ -1075,6 +1081,7 @@ const msgglobal = { manage_telegram: 'Gestori Telegram', img: 'Fichier image', date_reg: 'Date Inscript.', + requirement:'Exigences', perm: 'Autorisations', username: 'Username (Surnom)', username_short: 'Username', @@ -1124,6 +1131,7 @@ const msgglobal = { page_title: 'Login', incorso: 'Connexion en cours', enter: 'Entrez', + esci: 'Sortir', errato: "Nom d'utilisateur, email ou mot de passe incorrect. réessayer", completato: 'Connexion faite!', needlogin: 'Vous devez vous connecter avant de continuer', @@ -1482,6 +1490,7 @@ const msgglobal = { manage_telegram: 'Gestori Telegram', img: 'File Image', date_reg: 'Reg. Date', + requirement:'Requirements', perm: 'Permissions', username_login: 'Username or email', username: 'Username (Pseudonym)', @@ -1530,6 +1539,7 @@ const msgglobal = { login: { incorso: 'Login...', enter: 'Login', + esci: 'Logout', errato: "Username or password wrong. Please retry again", completato: 'Login successfully!', needlogin: 'You must login before continuing', @@ -1889,6 +1899,7 @@ const msgglobal = { manage_telegram: 'Gestori Telegram', img: 'File Image', date_reg: 'Reg. Date', + requirement:'Requirements', perm: 'Permissions', username_login: 'Username or email', username: 'Username (Pseudonym)', @@ -1938,6 +1949,7 @@ const msgglobal = { page_title: 'Login', incorso: 'Login...', enter: 'Login', + esci: 'Logout', errato: "Username or password wrong. Please retry again", completato: 'Login successfully!', needlogin: 'You must login before continuing', diff --git a/src/store/Modules/UserStore.ts b/src/store/Modules/UserStore.ts index 58a9df2..a1ab396 100644 --- a/src/store/Modules/UserStore.ts +++ b/src/store/Modules/UserStore.ts @@ -703,8 +703,8 @@ namespace Actions { } const usertosend = { - username: authData.username, - password: authData.password, + username: authData.username.trim(), + password: authData.password.trim(), lang: state.lang, subs: sub, options diff --git a/src/store/Modules/tools.ts b/src/store/Modules/tools.ts index b96b9b6..14cb3c6 100644 --- a/src/store/Modules/tools.ts +++ b/src/store/Modules/tools.ts @@ -1542,7 +1542,7 @@ export const tools = { }, showNegativeNotif(q: any, msg) { - tools.showNotif(q, msg, { color: 'negative', icon: 'notifications' }, 8000) + tools.showNotif(q, msg, { color: 'negative', icon: 'notifications' }, 10000) }, showNeutralNotif(q: any, msg) { @@ -3164,6 +3164,10 @@ export const tools = { return 'fa-flag-ro' else if (lang === 'CL') return 'fa-flag-cl' + else if (lang === 'PL') + return 'fa-flag-pl' + else if (lang === 'EG') + return 'fa-flag-eg' return '' } catch (e) { @@ -3235,6 +3239,10 @@ export const tools = { return 'Romania' } else if (nat === 'CL') { return 'Chile' + } else if (nat === 'PL') { + return 'Poland' + } else if (nat === 'EG') { + return 'Egypt' } }, diff --git a/src/store/store-flag.d.ts b/src/store/store-flag.d.ts new file mode 100644 index 0000000..ec274bd --- /dev/null +++ b/src/store/store-flag.d.ts @@ -0,0 +1,9 @@ +// THIS FEATURE-FLAG FILE IS AUTOGENERATED, +// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING +import "quasar/dist/types/feature-flag"; + +declare module "quasar/dist/types/feature-flag" { + interface QuasarFeatureFlags { + store: true; + } +} diff --git a/src/views/login/signin/signin.vue b/src/views/login/signin/signin.vue index 718b5c8..1acabe3 100644 --- a/src/views/login/signin/signin.vue +++ b/src/views/login/signin/signin.vue @@ -1,6 +1,7 @@ + + + +