- Migliorata la Notifica degli Eventi su Telegram

- Gli annunci (beni/servizi/ospitalità) ora possono essere visti anche tramite un link, anche per chi non è dentro alla App.
- Aggiunto bottone "Aggiorna" per aggiornare il Saldo attuale.
- I "Conti Collettivi" ora vengono chiamati Gruppi (o Conto di Gruppo).
This commit is contained in:
Surya Paolo
2023-10-01 01:24:55 +02:00
parent bfceb64811
commit 31598e3fbd
43 changed files with 784 additions and 515 deletions

View File

@@ -33,6 +33,7 @@ export default defineComponent({
costanti,
static_data,
site,
t,
}
}
})

View File

@@ -1,56 +1,7 @@
<template>
<div v-if="showalways || (!showalways && !tools.isLogged())">
<div class="q-pa-md q-gutter-sm">
<div id="logo" class="text-center">
<q-img
id="logoimg"
:src="tools.getimglogo()"
class="q-my-sm"
alt="logo APP"
style="height: 100px; width: 100px"
/>
</div>
<q-banner
v-if="site.confpages.videoPromo"
rounded
dense
size="lg"
class="bg-grey-3 shadow-5 q-my-sm"
color="primary q-title"
style="text-align: center"
>
<div class="mybanner bg-blue text-white">Video di Presentazione:</div>
<br />
<q-video :src="site.confpages.videoPromo" :ratio="16 / 9"> </q-video>
</q-banner>
<q-banner
v-if="site.confpages.PDFPromo"
rounded
dense
size="lg"
class="bg-grey-3 shadow-5 q-my-sm"
color="primary q-title"
style="text-align: center"
>
<div class="mybanner bg-blue text-white">PDF Presentazione RISO:</div>
<br />
<template v-slot:action>
<q-btn
type="a"
rounded
icon="fab fa-telegram"
color="primary"
:href="site.confpages.PDFPromo"
target="_blank"
label="Scarica PDF"
>
</q-btn>
</template>
</q-banner>
<div class="text-h6 text-center">
<div class=" text-center">
<transition-group
name="fade"
mode="out-in"
@@ -61,30 +12,33 @@
<q-banner
:key="1"
rounded
dense
size="lg"
class="shadow-5 q-my-sm"
class="text-white bg-red"
color="primary q-title"
style="text-align: center"
>
<template v-slot:avatar>
<q-icon :key="2" name="signal_wifi_off" color="primary" />
<q-icon :key="2" name="fas fa-sign-in-alt" color="white" />
</template>
<div class="mybanner" :key="3">
Accedi per Unirti alla RETE e al Circuito di scambio RIS
<div :key="3">
Accedi con le tue credenziali per utilizzare la APP e per unirti
al Circuito di scambio RIS del tuo territorio
</div>
<template v-slot:action>
<q-btn
rounded
icon="fas fa-user"
color="primary"
@click="tools.openrighttoolbar()"
>{{ $t('login.enter') }}
</q-btn>
<CRegistration />
<div>
<q-btn
flat
color="white"
@click="tools.openrighttoolbar()"
>{{ $t('login.enter') }}
</q-btn>
</div>
<!--<CRegistration />-->
</template>
</q-banner>
</transition-group>
<q-separator inset />
<br>
<q-banner
rounded
dense

View File

@@ -141,13 +141,13 @@ export default defineComponent({
const mypagination = computed(() => {
if (props.table === toolsext.TABMYBACHECAS)
return { sortBy: 'dateTimeStart', descending: false, page: 1, rowsNumber: 20, rowsPerPage: 20 }
return { sortBy: 'dateTimeStart', descending: false, page: 1, rowsNumber: 0, rowsPerPage: 10 }
else if (props.table === toolsext.TABMYGROUPS)
return { sortBy: 'date_created', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }
return { sortBy: 'date_created', descending: true, page: 1, rowsNumber: 0, rowsPerPage: 10 }
else if (props.table === toolsext.TABMOVEMENTS)
return { sortBy: 'transactionDate', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }
return { sortBy: 'transactionDate', descending: true, page: 1, rowsNumber: 0, rowsPerPage: 20 }
else if (props.table === toolsext.TABCIRCUITS)
return { sortBy: 'numMembers', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }
return { sortBy: 'numMembers', descending: true, page: 1, rowsNumber: 0, rowsPerPage: 20 }
else if (props.table === toolsext.TABUSER)
return userStore.getMypaginationMembers()
else if (shared_consts.TABLES_ORDER_DATE_UPDATED.includes(props.table))
@@ -155,7 +155,7 @@ export default defineComponent({
else if (shared_consts.TABLES_ORDER_DESCR.includes(props.table))
return { sortBy: 'desc', descending: false, page: 1, rowsNumber: 0, rowsPerPage: 10 }
return { sortBy: 'date_created', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }
return { sortBy: 'date_created', descending: true, page: 1, rowsNumber: 0, rowsPerPage: 10 }
})
const searchList = computed(() => {

View File

@@ -58,7 +58,7 @@
:defaultnewrec="tools.getdefaultnewrec(table)"
labelBtnAddRow="NONE"
:prop_SortFieldsAvailable="mySortFieldsAvailable"
:labelBtnAddExtra="noButtAdd ? `` : ``"
:labelBtnAddExtra="noButtAdd ? `` : (ind >= 0) ? `Aggiungi ` + costanti.MAINCARDS[ind].strsingolo : ''"
:extraparams="tools.extraparams(table, {myrecfiltertoggle})"
>
</CGridTableRec>

View File

@@ -49,13 +49,18 @@ export default defineComponent({
type: String,
required: true,
},
subtitle: {
type: String,
required: false,
default: '',
},
prop_mytable: {
type: String,
required: false,
default: '',
},
prop_mycolumns: {
type: Object as PropType<[]>,
type: Object as PropType<any[]>,
required: false,
default: null,
},
@@ -303,9 +308,10 @@ export default defineComponent({
const globalStore = useGlobalStore()
const isfinishLoading = computed(() => globalStore.finishLoading)
const pagination = ref({ sortBy: 'desc', descending: false, page: 1, rowsNumber: 10, rowsPerPage: 10 } as IPagination)
const pagination = ref({ sortBy: 'desc', descending: false, page: 1, rowsNumber: 0, rowsPerPage: 10 } as IPagination)
const addRow = ref('Aggiungi')
const actmonth = ref('')
const newRecordBool = ref(false)
const newRecordBoolOld = ref(false)
@@ -317,7 +323,7 @@ export default defineComponent({
const mytable = ref('')
const mytitle = ref('')
const mycolumns = ref([])
const mycolumns = ref([] as any[])
const colkey = ref('')
const search = ref('')
@@ -326,6 +332,7 @@ export default defineComponent({
const showNotification = ref(false)
const loading = ref(false)
const alreadymounting = ref(false)
const editOn = computed({
get: () => globalStore.editOn,
set: val => {
@@ -343,13 +350,13 @@ export default defineComponent({
const myinfscroll = ref(null)
const serverData: any = ref([])
const serverData: any = ref([] as any[])
const numRecLoaded = ref(0)
const spinner_visible = ref(false)
const changetable = ref(false)
const searchList = ref([] as ISearchList[])
const actual = ''
const actual = ref(<any>'')
let idsel = ''
const colsel = ref({ name: '', field: '', sortable: false } as IColGridTable | null)
@@ -386,11 +393,14 @@ export default defineComponent({
const ordinam_desc = ref(false)
const valoriopt = computed(() => (item: any, addall: boolean, addnone: boolean) => {
const getNumRecFromQuery = computed(() => () => {
return serverData.value.length
})
const valoriopt = computed(() => (item: any, addall?: boolean, addnone?: boolean) => {
// console.log('valoriopt', item.table)
return globalStore.getTableJoinByName(item.table, addall, addnone, item.filter)
})
const lengthopt = computed(() => (item: any, addall: boolean, addnone: boolean) => {
const lengthopt = computed(() => (item: any, addall: boolean, addnone?: boolean) => {
// console.log('valoriopt', item.table)
const valori = globalStore.getTableJoinByName(item.table, addall, addnone, item.filter)
return (valori ? valori.length : 0)
@@ -1094,6 +1104,7 @@ export default defineComponent({
myinfscroll.value.resume()
}
done()
alreadymounting.value = true
return
}
@@ -1158,6 +1169,8 @@ export default defineComponent({
// console.log(' ...DONE ')
done(pagination.value.rowsNumber === 0 ? true : false)
alreadymounting.value = true
})
} else {
startsearch.value = false
@@ -1169,7 +1182,6 @@ export default defineComponent({
}
}
function refresh_arr() {
const myarr = [...serverData.value]
serverData.value = []
@@ -1185,7 +1197,7 @@ export default defineComponent({
}
function refresh_infscroll(done: any) {
// console.log('refresh_infscroll', 'pag', pagination.value.rowsNumber)
console.log('refresh_infscroll', 'pag', pagination.value.rowsNumber, 'done', done)
rowclicksel.value = null
onUpdateData(0,
@@ -1197,7 +1209,7 @@ export default defineComponent({
function refresh() {
// console.log('refresh', 'startsearch', startsearch.value)
console.log('refresh', 'startsearch', startsearch.value)
clickbuttsearch.value = true
// console.log('refresh')
@@ -1508,12 +1520,13 @@ export default defineComponent({
myvertical.value = props.vertical
// myvertical.value = tools.getCookie('myv_' + props.prop_mytable, props.vertical)
showfilter.value = tools.getCookie('s_adv', '0') !== '0'
showfilter.value = props.prop_showfilter || (tools.getCookie('s_adv', '0') !== '0')
}
function mounted() {
searchList.value = props.prop_searchList
// console.log('GridTable mounted', tablesel.value)
// console.log('props.filtercustom', props.filtercustom)
@@ -1548,7 +1561,8 @@ export default defineComponent({
// console.log('2) tablesel', tablesel.value)
changeTable(tablesel.value)
changeTable(tablesel.value, true)
}
@@ -1696,7 +1710,7 @@ export default defineComponent({
}
}
function changeTable(mysel: any) {
function changeTable(mysel: any, mounted: boolean) {
// console.log('changeTable', tablesel.value)
changetable.value = true
if (tablesel.value === undefined || tablesel.value === '')
@@ -2171,7 +2185,7 @@ export default defineComponent({
if (index > 1) {
// console.log('onLoadScroll', index, 'RECLOAD', numRecLoaded.value, 'ROWS: ', pagination.value.rowsNumber, 'PAGE: ', pagination.value.page)
if (numRecLoaded.value < pagination.value.rowsNumber || (pagination.value.rowsNumber <= 0 && clickbuttsearch.value)) {
if ((numRecLoaded.value < pagination.value.rowsNumber || (pagination.value.rowsNumber <= 0 && clickbuttsearch.value))) {
if (pagination.value.rowsNumber === 0) {
pagination.value.page = 0
}
@@ -2369,6 +2383,9 @@ export default defineComponent({
lengthopt,
update_col,
startsearch,
getNumRecFromQuery,
actmonth,
alreadymounting,
}
}
})

View File

@@ -66,19 +66,27 @@
<q-spinner-tail size="2em" color="primary" />
</q-inner-loading>
<CTitleBanner
v-if="subtitle"
:title="subtitle"
bgcolor="bg-blue"
clcolor="text-white"
>
</CTitleBanner>
<div v-if="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)">
<div v-if="(prop_search || canEdit) && finder" class="q-my-xs text-right">
<!--<q-btn
size="sm"
dense
icon="fas fa-filter"
:label="$t('grid.showfilters')"
:label="t('grid.showfilters')"
@click="showfilter = !showfilter"
></q-btn>
-->
</div>
<q-slide-transition>
<div v-show="showfilter || prop_showfilter">
<div v-show="showfilter">
<div
v-show="searchList"
:class="$q.screen.lt.sm ? `` : `row` + ` text-blue `"
@@ -89,7 +97,7 @@
v-if="
(item.type === costanti.FieldType.select ||
item.type === costanti.FieldType.select_by_server) &&
lengthopt(item, false) > 1
lengthopt(item, false, false) > 1
"
:label="labelcombo(item)"
v-model:value="item.value"
@@ -108,7 +116,7 @@
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:options="valoriopt(item, false)"
:options="valoriopt(item, false, false)"
:filter="item.filter"
:filter_extra="item.filter_extra"
:useinput="
@@ -236,7 +244,7 @@
>
<q-btn
dense
label="Filtra Ricerca"
:label="!showfilter ? 'Apri Filtri' : 'Chiudi Filtri'"
color="positive"
icon="fas fa-filter"
@click="showfilter = !showfilter"
@@ -249,18 +257,11 @@
{{ getNumFilterSelected() }}
</q-badge>
</q-btn>
<q-btn
dense
icon="add"
color="primary"
@click="createNewRecordDialog"
/>
<q-btn
dense
color="orange"
icon="fas fa-bell"
label="Avvisami se..."
label="Notifiche"
@click="showNotification = !showNotification"
></q-btn>
</div>
@@ -272,11 +273,14 @@
type="search"
debounce="500"
:hint="hint"
:error-message="noresultLabel"
:error="getNumRecFromQuery() === 0 && !startsearch"
label="Cerca"
v-on:keyup.enter="doSearch"
>
<template v-slot:prepend>
<q-icon name="search" />
<q-spinner-oval v-if="startsearch" color="primary" size="1em" />
<q-icon v-else name="search" />
</template>
<template v-slot:after>
<q-select
@@ -320,7 +324,7 @@
multiple
dense
options-dense
:display-value="$t('grid.columns')"
:display-value="t('grid.columns')"
emit-value
map-options
:options="mycolumns"
@@ -330,11 +334,13 @@
</q-select>
</div>
<div v-if="pagination.rowsNumber === 1 && prop_search">
{{ pagination.rowsNumber }} elemento trovato
</div>
<div v-if="pagination.rowsNumber > 1 && prop_search">
{{ pagination.rowsNumber }} {{ labelElemFind }}
<div class="q-ma-sm">
<div v-if="pagination.rowsNumber === 1 && prop_search">
{{ pagination.rowsNumber }} elemento trovato
</div>
<div v-if="pagination.rowsNumber > 1 && prop_search">
{{ pagination.rowsNumber }} {{ labelElemFind }}
</div>
</div>
<div v-if="choose_visutype && $q.screen.gt.xs" class="">
@@ -355,15 +361,16 @@
</div>
<q-infinite-scroll
ref="myinfscroll"
v-if="shared_consts.VERTIC_SHOW_GRID.includes(myvertical) && !loading"
v-if="
shared_consts.VERTIC_SHOW_GRID.includes(myvertical) &&
!loading &&
alreadymounting
"
:initial-index="0"
@load="onLoadScroll"
:offset="350"
debounce="300"
>
<div v-if="numRecLoaded === 0 && !startsearch">
<div class="text-grey text-italic">{{ nodataLabel }}</div>
</div>
<div v-if="showHeaderCol">
<div
v-for="col in mycolumns"
@@ -571,13 +578,15 @@
</div>
</div>
<template v-slot:loading>
<div class="row justify-center q-my-md">
<q-spinner-dots color="primary" size="40px" />
</div>
<div class="row justify-center q-my-md">
<q-spinner-dots color="primary" size="40px" />
</div>
</template>
</q-infinite-scroll>
<q-table
v-else
v-else-if="
!shared_consts.VERTIC_SHOW_GRID.includes(myvertical) && !loading
"
:grid="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)"
:grid-header="
shared_consts.VERTIC_SHOW_GRID.includes(myvertical) &&
@@ -654,15 +663,6 @@
>
<span style="display: none">{{ (actual = null) }}</span>
<q-btn
v-if="enableExport"
color="primary"
icon-right="archive"
:label="t('export.csv')"
no-caps
@click="exportTable"
/>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="tablesList"
@@ -677,6 +677,15 @@
>
</q-select>
<q-btn
v-if="enableExport"
color="primary"
icon-right="archive"
:label="t('export.csv')"
no-caps
@click="exportTable"
/>
<div class="row">
<q-toggle
v-for="(filt, index) of arrfilters"
@@ -857,6 +866,8 @@
type="search"
debounce="500"
:hint="hint"
:error-message="noresultLabel"
:error="getNumRecFromQuery() === 0 && !startsearch"
label="Cerca"
v-on:keyup.enter="doSearch"
>
@@ -889,7 +900,7 @@
multiple
dense
options-dense
:display-value="$t('grid.columns')"
:display-value="t('grid.columns')"
emit-value
map-options
:options="mycolumns"
@@ -1278,13 +1289,13 @@
</q-card-section>
<q-card-actions align="center">
<q-btn
:label="$t('dialog.insert')"
:label="t('dialog.insert')"
color="primary"
@click="saveNewRecord"
></q-btn>
<q-btn
flat
:label="$t('dialog.cancel')"
:label="t('dialog.cancel')"
color="primary"
v-close-popup
@click="annulla"
@@ -1352,13 +1363,13 @@
</q-card-section>
<q-card-actions align="center">
<q-btn
:label="$t('dialog.save')"
:label="t('dialog.save')"
color="primary"
@click="saveNewRecord"
></q-btn>
<q-btn
flat
:label="$t('dialog.cancel')"
:label="t('dialog.cancel')"
color="primary"
v-close-popup
@click="annulla"
@@ -1417,13 +1428,13 @@
</q-card-section>
<q-card-actions align="center">
<q-btn
:label="$t('dialog.ok')"
:label="t('dialog.ok')"
color="primary"
@click="saverecModif"
></q-btn>
<q-btn
flat
:label="$t('dialog.cancel')"
:label="t('dialog.cancel')"
color="primary"
@click="cancelrecModif"
></q-btn>

View File

@@ -298,7 +298,7 @@ export default defineComponent({
const globalStore = useGlobalStore()
const isfinishLoading = computed(() => globalStore.finishLoading)
const pagination = ref({ sortBy: 'desc', descending: false, page: 1, rowsNumber: 10, rowsPerPage: 10 } as IPagination)
const pagination = ref({ sortBy: 'desc', descending: false, page: 1, rowsNumber: 0, rowsPerPage: 10 } as IPagination)
const addRow = ref('Aggiungi')

View File

@@ -6,6 +6,7 @@
<q-separator />
<CSaldo
v-if="tools.isUserOk() && myaccount"
:account="myaccount"

View File

@@ -169,11 +169,12 @@ export default defineComponent({
return userStore.my.profile
}
function load() {
async function load() {
// Carica il record
if (props.idRec) {
userStore.loadGeneric(props.table, props.idRec, idnotif.value).then((ris) => {
await userStore.loadGeneric(props.table, props.idRec, idnotif.value).then((ris) => {
console.log('myrec', myrec)
myrec.value = ris
notifStore.setAsRead(idnotif.value)
})
@@ -233,6 +234,10 @@ export default defineComponent({
}
async function clicca(tipo: any, myset: any, title: string) {
if (!userStore.my.username) {
return
}
let mylist = null
if (tipo === costanti.TIPOFAVBOOK.FAVORITE) {
if (myset) {

View File

@@ -2,7 +2,6 @@
<div v-if="myrec && myrec._id" class="fulldiv">
<div class="q-pa-sm row items-start q-gutter-sm full-height fulldiv">
<q-card class="my-card fulldiv" bordered>
idRec: {{ idRec }}
<CGalleryImages
v-if="myrec.photos.length > 0"
:imgGallery="myrec.photos"
@@ -41,6 +40,7 @@
<div class="">
<q-btn flat round color="blue" icon="far fa-eye">
<q-badge
v-if="myrec.myreact"
color="primary"
:label="myrec.myreact.numseen ? myrec.myreact.numseen : 0"
floating
@@ -61,6 +61,7 @@
@click="clicca(costanti.TIPOFAVBOOK.FAVORITE, true, '')"
>
<q-badge
v-if="myrec.myreact"
color="primary"
:label="myrec.myreact.numfav ? myrec.myreact.numfav : 0"
floating
@@ -81,6 +82,7 @@
@click="clicca(costanti.TIPOFAVBOOK.BOOKMARK, true, '')"
>
<q-badge
v-if="myrec.myreact"
color="primary"
:label="myrec.myreact.numbook ? myrec.myreact.numbook : 0"
floating
@@ -124,7 +126,7 @@
</q-item-section>
</q-item>
<q-item
v-if="!nopopup"
v-if="!nopopup && myrec.myreact"
clickable
v-close-popup
@click="naviga(tools.getPathByTableAndRec(table, myrec))"
@@ -138,6 +140,7 @@
</q-item>
<q-separator />
<q-item
v-if="myrec.myreact"
clickable
v-close-popup
@click="
@@ -166,6 +169,7 @@
</q-item-section>
</q-item>
<q-item
v-if="myrec.myreact"
clickable
v-close-popup
@click="
@@ -223,6 +227,7 @@
</q-item-section>
</q-item>
<q-item
v-if="myrec.myreact"
clickable
v-close-popup
@click="

View File

@@ -115,6 +115,7 @@
:qtarem="qtarem"
>
</CSaldo>
</q-item-label>
</q-item-section>
@@ -328,8 +329,10 @@
</q-item-section>
</q-item>
<div class="centermydiv text-center" v-if="visu === costanti.ENTER_TO_THE_CIRCUIT">
<div
class="centermydiv text-center"
v-if="visu === costanti.ENTER_TO_THE_CIRCUIT"
>
<q-btn
v-if="
!userStore.IsMyCircuitByName(circuit.name) &&
@@ -338,7 +341,6 @@
"
icon="fas fa-user-plus"
color="primary"
:label="$t('circuit.ask')"
@click="
requestToEnterCircuit = true;
@@ -441,7 +443,10 @@
<div style="font-weight: bold; font-size: 1.25rem">Regolamento:</div>
<q-btn label="vedi Regolamento" @click="showrules = !showrules">
</q-btn>
<div v-if="showrules" v-html="getRegulation(circuit.regulation)"></div>
<div
v-if="showrules"
v-html="getRegulation(circuit.regulation)"
></div>
</q-card-section>
<q-card-actions align="center">
<q-btn

View File

@@ -119,9 +119,11 @@ export default defineComponent({
}
function mounted() {
async function mounted() {
console.log(' ## INIZIO MOUNT ')
username.value = userStore.my.username
loadCircuits()
await loadCircuits()
console.log(' -- FINE MOUNT ')
}
function updateValue(val: number) {

View File

@@ -34,6 +34,7 @@ import { CNotifAtTop } from '@src/components/CNotifAtTop'
import { CPresentazione } from '@src/components/CPresentazione'
import { CRegistration } from '@src/components/CRegistration'
import { CShareSocial } from '@src/components/CShareSocial'
import { CVisuVideoPromoAndPDF } from '@src/components/CVisuVideoPromoAndPDF'
import MixinMetaTags from '@/mixins/mixin-metatags'
import MixinBase from '@/mixins/mixin-base'
@@ -52,6 +53,7 @@ export default defineComponent({
CPresentazione, CMyActivities,
CMyProfileTutorial, CSendRISTo,
CTitleBanner, CShareSocial, CCheckAppRunning, CRegistration,
CVisuVideoPromoAndPDF,
},
emits: ['selElemClick'],
props: {

View File

@@ -488,6 +488,10 @@
<div v-if="editOn" class="elemEdit">CCheckIfIsLogged</div>
<CCheckIfIsLogged :showalways="myel.container"></CCheckIfIsLogged>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.VISUVIDEOPROMOANDPDF">
<div v-if="editOn" class="elemEdit">Visu Video Promo and PDF</div>
<CVisuVideoPromoAndPDF :showalways="myel.container"></CVisuVideoPromoAndPDF>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.INFO_VERSION">
<div>Versione: {{ tools.getvers() }}</div>
</div>

View File

@@ -181,12 +181,12 @@
><q-icon dense color="blue" name="far fa-check-circle" />
</span>
</span>
<span class="q-mx-xxs">{{ myrec.myreact.numseen ? myrec.myreact.numseen : 0 }}</span>
<span class="q-mx-xxs" v-if="myrec.myreact">{{ myrec.myreact.numseen ? myrec.myreact.numseen : 0 }}</span>
<span class="q-mx-xxs"
><q-icon dense color="blue" name="far fa-eye" />
</span>
<span class="q-mx-xxs">&nbsp;</span>
<span class="">{{ myrec.myreact.numfav ? myrec.myreact.numfav : 0 }}</span>
<span class="" v-if="myrec.myreact">{{ myrec.myreact.numfav ? myrec.myreact.numfav : 0 }}</span>
<span class="q-mx-xxs"
><q-icon
dense

View File

@@ -2,7 +2,7 @@ import { defineComponent, onMounted, PropType, ref, watch } from 'vue'
import { tools } from '@src/store/Modules/tools'
import { CCurrencyValue } from '../CCurrencyValue'
import { useCircuitStore } from '@store/CircuitStore'
import { date, useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { IAccount, ISpecialField } from 'model'
@@ -57,11 +57,12 @@ export default defineComponent({
const showingtooltip = ref(false)
const visuTransac = ref(false)
const circuitStore = useCircuitStore()
function created() {
// created
}
onMounted(created)
return {
@@ -72,7 +73,7 @@ export default defineComponent({
color_border,
visuTransac,
costanti,
circuitStore,
}
},
})

View File

@@ -39,7 +39,9 @@ export default defineComponent({
const loading = ref(false)
const site = ref(globalStore.site)
const site = computed(() => {
return globalStore.site
})
const myForm = ref(null)

View File

@@ -1,6 +1,7 @@
ù<template>
<div>
<div class="q-my-xs">
title: {{title}}
<CGridTableRec
v-if="filtercustom.length > 0 && col && col.length > 0"
:prop_mytable="table"
@@ -13,10 +14,10 @@
:vertical="costanti.VISUTABLE_LISTA"
:choose_visutype="!visuinpage"
:butt_modif_new="!visuinpage"
nodataLabel="Nessun dato presente"
nodataLabel=" "
:prop_search="false"
:visuinpage="visuinpage"
noresultLabel="Il filtro selezionato non ha trovato nessun risultato"
noresultLabel="La ricerca non ha ottenuto nessun risultato"
:defaultnewrec="tools.getdefaultnewrec(table, {groupname})"
:filtercustom="filtercustom"
v-bind="$attrs"

View File

@@ -6,6 +6,7 @@
<q-separator />
<CSaldo
v-if="tools.isUserOk() && myaccount"
:account="myaccount"

View File

@@ -0,0 +1,6 @@
#logoimg {
height: 300px;
width: auto;
@media screen and (max-width: 600px) {
}
}

View File

@@ -0,0 +1,38 @@
import { defineComponent, ref, computed, PropType, toRef } from 'vue'
import { useUserStore } from '@store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import { tools } from '@store/Modules/tools'
import { costanti } from '@store/Modules/costanti'
import { static_data } from '@src/db/static_data'
export default defineComponent({
name: 'CVisuVideoPromoAndPDF',
components: { },
props: {
showalways: {
type: Boolean,
required: false,
default: false,
},
},
setup(props, { emit }) {
const userStore = useUserStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const { t } = useI18n()
const site = ref(globalStore.site)
return {
userStore,
tools,
costanti,
static_data,
site,
t,
}
}
})

View File

@@ -0,0 +1,61 @@
<template>
<div v-if="showalways || (!showalways && !tools.isLogged())">
<div class="q-pa-md q-gutter-sm">
<div id="logo" class="text-center">
<q-img
id="logoimg"
:src="tools.getimglogo()"
class="q-my-sm"
alt="logo APP"
style="height: 100px; width: 100px"
/>
</div>
<q-banner
v-if="site.confpages.videoPromo"
rounded
dense
size="lg"
class="bg-grey-3 shadow-5 q-my-sm"
color="primary q-title"
style="text-align: center"
>
<div class="mybanner bg-blue text-white">Video di Presentazione:</div>
<br />
<q-video :src="site.confpages.videoPromo" :ratio="16 / 9"> </q-video>
</q-banner>
<q-banner
v-if="site.confpages.PDFPromo"
rounded
dense
size="lg"
class="bg-grey-3 shadow-5 q-my-sm"
color="primary q-title"
style="text-align: center"
>
<div class="mybanner bg-blue text-white">PDF Presentazione RISO:</div>
<br />
<template v-slot:action>
<q-btn
type="a"
rounded
icon="fab fa-telegram"
color="primary"
:href="site.confpages.PDFPromo"
target="_blank"
label="Scarica PDF"
>
</q-btn>
</template>
</q-banner>
</div>
</div>
</template>
<script lang="ts" src="./CVisuVideoPromoAndPDF.ts">
</script>
<style lang="scss" scoped>
@import './CVisuVideoPromoAndPDF.scss';
</style>

View File

@@ -0,0 +1 @@
export {default as CVisuVideoPromoAndPDF} from './CVisuVideoPromoAndPDF.vue'