Aggiornamento APP RISO:

 Inviando i RIS, deve comparire prima il Circuito della Provincia, e poi quello Nazionale
 Risolto problema per vecchie registrazioni, la provincia compariva "undefined".
This commit is contained in:
Surya Paolo
2024-06-19 00:21:06 +02:00
parent 2d9c178c1f
commit 49d51712bd
155 changed files with 2510 additions and 5296 deletions

View File

@@ -138,6 +138,7 @@ export const shared_consts = {
MAINVIEW: 130,
CHECKAPPRUNNING: 135,
DASHBOARD: 140,
DASHGROUP: 145,
CSENDRISTO: 150,
STATUSREG: 160,
CHECKIFISLOGGED: 170,
@@ -281,19 +282,23 @@ export const shared_consts = {
TABLES_MYEVENTS: 'myevents',
TABLES_CIRCUITS: 'circuits',
TABLES_MYGROUPS: 'mygroups',
TABLES_ATTIVITAS: 'attivitas',
MYTABS: [{ id: 0, table: 'none' },
{ id: 1, table: 'myskills' },
{ id: 2, table: 'mybachecas' },
{ id: 3, table: 'myhosps' },
{ id: 4, table: 'mygoods' },
{ id: 5, table: 'myevents' }
],
{ id: 5, table: 'myevents' },
{ id: 6, table: 'attivitas' }],
TABLES_ENABLE_GETREC_BYID: ['mybachecas', 'myhosps'],
// Condivise
TABLES_FAVORITE_BOOKMARK: ['myskills', 'mygoods', 'mybachecas', 'myhosps', 'attivitas'],
// Solo per VUE.JS
TABLES_USER_INCLUDE_MY: ['mygroups'],
TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas', 'myhosps', 'mygoods'],
TABLES_INSERT_ALMOST_ONE_TO_ENABLE_CIRCUIT: ['myskills', 'myhosps', 'mygoods'],
TABLES_WITH_FILTER_FIELD: ['caldate'],
TABLES_WITH_SPECIAL_FILTER: ['pub_to_share'],
@@ -302,7 +307,6 @@ export const shared_consts = {
TABLES_WITH_DATE: ['mybachecas', 'myhosps'], // 'mybachecas'
TABLES_WITH_SORTING: ['mybachecas', 'myhosps'],
TABLES_REC_ID: ['skills', 'goods', 'subskills', 'myskills', 'mybachecas', 'myhosps', 'mygoods'],
TABLES_FAVORITE_BOOKMARK: ['myskills', 'mygoods', 'mybachecas', 'myhosps'],
// costanti.VISUTABLE_SCHEDA_USER, VISUTABLE_SCHEDA_GROUP, VISUTABLE_USER_TABGROUP, VISUTABLE_USER_TABCIRCUIT, VISUTABLE_GROUP_CIRCUIT
VERTIC_SHOW_GRID: [-1, 2, -3, -4, -5, -6],
@@ -446,6 +450,38 @@ export const shared_consts = {
}
],
TipoDiAttivita: [
{
value: 0,
label: '[Nessuna]',
note: '',
},
{
value: 1,
label: 'Individuo',
note: 'Artigiano, professionista, insegnante, consulente',
},
{
value: 2,
label: 'Non Profit',
note: 'Associazione, comitato, fondazione, cooperativa',
},
{
value: 3,
label: 'Profit',
note: 'Azienda, société comerciale, banca, ...',
},
{
value: 4,
label: 'Pubblico',
note: 'Comune, regione, ministero, ...',
},
{
value: 5,
label: 'Altro',
},
],
TypeAccom: [
{
value: 1,
@@ -1606,6 +1642,10 @@ export const shared_consts = {
value: 140,
label: 'Dashboard',
},
{
value: 145,
label: 'DashGroup',
},
{
value: 150,
label: 'SendCoinTo',
@@ -1974,6 +2014,31 @@ export const shared_consts = {
groupname: 1,
}
} else if (table === this.TABLES_ATTIVITAS) {
proj = {
recSkill: 1,
sector: 1,
idSector: 1,
idSkill: 1,
idCity: 1,
logo: 1,
photos: 1,
note: 1,
descr: 1,
website: 1,
date_created: 1,
date_updated: 1,
tipodiAttivita: 1,
nome_attivita: 1,
coordinate_gps: 1,
email: 1,
telegram_username: 1,
cell_phone: 1,
whatsapp: 1,
createdBy: 1,
//**ADDFIELD_ATTIVITA
};
} else if (table === this.TABLES_MYBACHECAS) {
proj = {
recSkill: 1,

View File

@@ -151,7 +151,7 @@ export default defineComponent({
})
watch(() => globalStore.myselector.data, (newval, oldval) => {
const rec = searchList.value.find((myrec) => myrec.table === toolsext.TABCITIES) // check if exist
const rec = searchList.value.find((myrec) => myrec.table === shared_consts.TAB_CITIES) // check if exist
if (rec) {
rec.value = globalStore.myselector.data
}
@@ -201,9 +201,9 @@ export default defineComponent({
item.value = costanti.FILTER_TUTTI
}
}
} else if (item.table === toolsext.TABCITIES) {
} else if (item.table === shared_consts.TAB_CITIES) {
const valsaved = tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + item.table + costanti.FILTER_SEP + newval, costanti.FILTER_TUTTI)
const rec = searchList.value.find((myrec) => myrec.table === toolsext.TABCITIES) // check if exist
const rec = searchList.value.find((myrec) => myrec.table === shared_consts.TAB_CITIES) // check if exist
let trovato = false
let arrvalues = []
if (rec) {

View File

@@ -3,7 +3,6 @@
:class="$q.screen.lt.sm ? `` : `q-pa-xs`"
v-if="isfinishLoading && mycolumns"
>
<div :class="`shadow-2 rounded-borders`">
<div>
<div v-if="prop_search || canEdit" class="q-my-xs text-right">
@@ -16,7 +15,9 @@
></q-btn>
</div>
<q-slide-transition>
<div class="row no-wrap shadow-1" style="height: 40px;">
<div
class="row no-wrap shadow-1"
style="height: 40px">
<div v-if="$q.screen.gt.xs" class="col-1">
<q-avatar @click="toHome" class="imglink">
<img
@@ -84,7 +85,9 @@
: labelcombo(item)
"
v-model:value="item.value"
@update:value="searchval(item.value, item.table, tablesel)"
@update:value="
searchval(item.value, item.table, tablesel)
"
:addall="item.addall"
:addnone="item.addnone"
:addlast="true"
@@ -127,7 +130,9 @@
:multiselect_by_server="true"
:label="labelcombo(item)"
v-model:arrvalue="item.arrvalue"
@update:arrvalue="searchval(item.arrvalue, item.table, tablesel)"
@update:arrvalue="
searchval(item.arrvalue, item.table, tablesel)
"
:addall="item.addall"
:addnone="item.addnone"
dark
@@ -153,7 +158,9 @@
v-model="item.arrvalue"
label-color="primary"
:label="labelcombo(item)"
@update:model-value="searchval(item.arrvalue, item.table, tablesel)"
@update:model-value="
searchval(item.arrvalue, item.table, tablesel)
"
rounded
dark
dense

View File

@@ -25,16 +25,16 @@
<br />
</q-banner>
<div class="text-center">
<div class="text-center" v-if="to_user">
<q-btn
glossy
size="md"
:label="$t('circuit.invia_msg_dest', {name: to_user.username})"
:label="$t('circuit.invia_msg_dest', {name: to_user ? to_user.username : ''})"
icon="fas fa-paper-plane"
color="blue"
text-color="white"
rounded
@click="tools.SendMsgRisItalia($q, to_user.username)"
@click="tools.SendMsgRisItalia($q, to_user ? to_user.username : '')"
></q-btn>
</div>
</div>

View File

@@ -57,7 +57,7 @@
<q-btn
outline
icon="fas fa-envelope"
:color="$q.dark.isActive ? `shite` : `black`"
:color="$q.dark.isActive ? `white` : `black`"
:type="tools.isUserOk() ? 'a' : 'btn'"
size="md"
:label="$t('msgs.send_email')"

View File

@@ -0,0 +1,90 @@
.box_1 {
color: #0dceec;
}
.box_2 {
color: #fe434f;
}
.box_3 {
color: #15ca20;
}
.box_4 {
color: #ff9700;
}
.shadow {
-webkit-box-shadow: 0 0 10px #bfbfbf !important;
box-shadow: 0 0 10px #bfbfbf !important;
}
.progress-base {
height: 5px;
border-radius: 3px;
background-color: #e9ecef;
}
.progress-bar-1 {
height: 8px;
border-radius: 3px;
background: #17ead9;
background: -webkit-linear-gradient(45deg, #17ead9, #6078ea) !important;
background: linear-gradient(45deg, #17ead9, #6078ea) !important;
}
.progress-bar-2 {
height: 8px;
border-radius: 3px;
background: #f54ea2;
background: -webkit-linear-gradient(45deg, #f54ea2, #ff7676) !important;
background: linear-gradient(45deg, #f54ea2, #ff7676) !important;
}
.progress-bar-3 {
height: 8px;
border-radius: 3px;
background: #42e695;
background: -webkit-linear-gradient(45deg, #42e695, #3bb2b8) !important;
background: linear-gradient(45deg, #42e695, #3bb2b8) !important;
}
.progress-bar-4 {
height: 8px;
border-radius: 3px;
background: #ffdf40;
background: -webkit-linear-gradient(45deg, #ffdf40, #ff8359) !important;
background: linear-gradient(45deg, #ffdf40, #ff8359) !important;
}
.progress-bar-5 {
height: 8px;
border-radius: 3px;
background: #ffdf40;
background: -webkit-linear-gradient(45deg, #ffdf40, #ff8359) !important;
background: linear-gradient(45deg, #ffdf40, #ff8359) !important;
}
.progress-bar-6 {
height: 8px;
border-radius: 3px;
background: #ffdf40;
background: -webkit-linear-gradient(45deg, #ffdf40, #ff8359) !important;
background: linear-gradient(45deg, #ffdf40, #ff8359) !important;
}
.border-top {
border-top: 1px solid #efefef;
}
.chip_pending {
background: #ffdf40;
background: -webkit-linear-gradient(45deg, #ffdf40, #ff8359) !important;
background: linear-gradient(45deg, #ffdf40, #ff8359) !important;
}
.chip_completed {
background: #42e695;
background: -webkit-linear-gradient(45deg, #42e695, #3bb2b8) !important;
background: linear-gradient(45deg, #42e695, #3bb2b8) !important;
}

View File

@@ -0,0 +1,48 @@
import { computed, defineComponent, PropType, ref } from 'vue'
import { ICalcStat, IOperators } from '../../model'
import { useUserStore } from '../../store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '../../store/globalStore'
import { useI18n } from '../../boot/i18n'
import { shared_consts } from '@src/common/shared_vuejs'
import { costanti, IMainCard } from '@store/Modules/costanti'
import { tools } from '@store/Modules/tools'
export default defineComponent({
name: 'CDashGroup',
props: {},
setup(props) {
const userStore = useUserStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const { t } = useI18n()
const calcstat = computed(() => userStore.my.calcstat ? userStore.my.calcstat : {
numUsersReg: 0,
numByTab: {},
})
const visustat = computed(() => {
// @ts-ignore
return costanti.GROUPCARDS.filter((rec: IMainCard) => rec.visuonstat)
})
const visulinks = computed(() => {
// @ts-ignore
return costanti.GROUPCARDS.filter((rec: IMainCard) => rec.link)
})
return {
userStore,
tools,
calcstat,
shared_consts,
visustat,
visulinks,
}
},
})

View File

@@ -0,0 +1,161 @@
<template>
<div class="q-ma-xs">
<div
v-if="tools.visualizzaHomeApp()"
class="row q-my-xs shadow"
style="border-radius: 4px; border: 1px solid rgba(0, 0, 0, 0.12)"
>
<!--<div class="col-md-3 col-lg-3 col-sm-12 col-xs-12 box_4" style="border-left: 1px solid #efefef;"
v-bind:class="{'border-top': $q.platform.is.mobile}">
<q-card class="no-shadow q-pa-sm">
<q-item class="q-pb-none q-pt-xs">
<q-item-section>
<q-item-label class="text-h4" style="font-weight: 500;letter-spacing: 3px;">{{
calcstat.numUsersReg
}}
</q-item-label>
<q-item-label :class="!$q.dark.isActive? 'text-grey-7':'text-white'" style="letter-spacing: 1px;">Persone Iscritte
</q-item-label>
</q-item-section>
<q-item-section side>
<q-icon name="o_people" class="box_4" size="60px"></q-icon>
</q-item-section>
</q-item>
<q-item class="q-py-xs" style="min-height: unset">
<q-item-section>
<div class="progress-base q-my-sm">
<div class="progress-bar-4" style="width:100%"></div>
</div>
</q-item-section>
</q-item>
</q-card>
</div>-->
<div
v-for="(rec, index) of visustat"
:class="`col-md-3 col-lg-3 col-sm-6 col-xs-6 text-` + rec.color"
style="border-left: 1px solid #efefef"
:key="index"
>
<q-card class="no-shadow q-pa-xs">
<q-item
class="q-pb-none q-pt-xs cursor-pointer"
:to="tools.updateLink(rec.to)"
>
<q-item-section>
<q-item-label
:class="
(!$q.dark.isActive ? 'text-grey-9' : 'text-white') +
` title_view_shadow`
"
style="letter-spacing: 1px"
>
{{ rec.title }}
</q-item-label>
<q-item-label
lines="3"
no-wrap
v-if="rec.subtitle"
:class="
(!$q.dark.isActive ? 'text-grey-8' : 'text-white') +
` title_view_subtitle`
"
>
<span v-html="rec.subtitle"></span>
</q-item-label>
</q-item-section>
<q-item-section
side
class="small_side"
style="right: 4px; position: absolute"
>
<q-img
v-if="rec.image"
:src="rec.image"
style="width: 27px"
></q-img>
<q-icon
v-else
:name="rec.icon"
:class="`text-` + rec.color"
size="27px"
></q-icon>
</q-item-section>
</q-item>
<q-item class="q-py-xs" style="min-height: unset">
<q-item-section>
<div class="progress-base q-my-sm">
<div
class="progress-base"
:style="tools.getbackgroundGradient(rec.color, 45)"
></div>
</div>
</q-item-section>
</q-item>
</q-card>
</div>
</div>
<div class="row shadow">
<div
v-for="(rec, index) of visulinks"
:class="`col-md-3 col-lg-3 col-sm-6 col-xs-6 text-` + rec.color"
style="border-left: 1px solid #efefef"
:key="index"
>
<q-card class="no-shadow q-pa-xxs">
<q-item
class="q-pb-none q-pt-xs cursor-pointer"
:to="tools.updateLink(rec.to)"
>
<q-item-section>
<q-item-label
lines="3"
:class="
(!$q.dark.isActive ? 'text-grey-9' : 'text-white') +
` title_view_small_shadow`
"
style="letter-spacing: 0.5px"
>
{{ rec.title }}
</q-item-label>
<q-item-label
v-if="rec.subtitle"
:class="
(!$q.dark.isActive ? 'text-grey-8' : 'text-white') +
` title_view_subtitle`
"
style="letter-spacing: 0.2px"
>
<span v-html="rec.subtitle"></span>
</q-item-label>
</q-item-section>
<q-item-section side>
<q-img
v-if="rec.image"
:src="rec.image"
style="width: 35px"
></q-img>
<q-icon
v-else
:name="rec.icon"
:class="`text-` + rec.color"
size="20px"
></q-icon>
</q-item-section>
</q-item>
</q-card>
</div>
</div>
</div>
</template>
<script lang="ts" src="./CDashGroup.ts">
</script>
<style lang="scss" scoped>
@import './CDashGroup.scss';
</style>

View File

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

View File

@@ -68,6 +68,7 @@ export default defineComponent({
const searchList_MyCircuits = ref(<ISearchList[]>[])
const searchList_Events = ref(<ISearchList[]>[])
const searchList_Hosp = ref(<ISearchList[]>[])
const searchList_Attivita = ref(<ISearchList[]>[])
const search = ref('')
const myrecfiltertoggle = ref(tools.FILTER_ALL)
@@ -101,13 +102,13 @@ export default defineComponent({
function updatefilter(value: any) {
if (value === tools.FILTER_MYREC) {
if (props.table === toolsext.TABMYGROUPS) {
if (props.table === shared_consts.TABLES_MYGROUPS) {
filtercustom.value = [{
'admins': {
$elemMatch: { username: { $eq: userStore.my.username } }
},
}]
} else if (props.table === toolsext.TABCIRCUITS) {
} else if (props.table === shared_consts.TABLES_CIRCUITS) {
filtercustom.value = [{
'admins': {
$elemMatch: { username: { $eq: userStore.my.username } }
@@ -119,7 +120,7 @@ export default defineComponent({
}
} else if (value === tools.FILTER_MYFOLLOW) {
if (props.table === toolsext.TABMYGROUPS) {
if (props.table === shared_consts.TABLES_MYGROUPS) {
}
} else {
@@ -140,13 +141,13 @@ export default defineComponent({
)
const mypagination = computed(() => {
if (props.table === toolsext.TABMYBACHECAS)
if (props.table === shared_consts.TABLES_MYBACHECAS)
return { sortBy: 'dateTimeStart', descending: false, page: 1, rowsNumber: 0, rowsPerPage: 10 }
else if (props.table === toolsext.TABMYGROUPS)
else if (props.table === shared_consts.TABLES_MYGROUPS)
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: 0, rowsPerPage: 20 }
else if (props.table === toolsext.TABCIRCUITS)
else if (props.table === shared_consts.TABLES_CIRCUITS)
return { sortBy: 'numMembers', descending: true, page: 1, rowsNumber: 0, rowsPerPage: 20 }
else if (props.table === toolsext.TABUSER)
return userStore.getMypaginationMembers()
@@ -159,78 +160,75 @@ export default defineComponent({
})
const searchList = computed(() => {
if (props.table === toolsext.TABMYGOODS)
if (props.table === shared_consts.TABLES_MYGOODS)
return searchList_Beni.value
else if (props.table === toolsext.TABMYSKILLS)
else if (props.table === shared_consts.TABLES_MYSKILLS)
return searchList_Servizi.value
else if (props.table === toolsext.TABMYGROUPS)
else if (props.table === shared_consts.TABLES_MYGROUPS)
return searchList_MyGroups.value
else if (props.table === toolsext.TABCIRCUITS)
else if (props.table === shared_consts.TABLES_CIRCUITS)
return searchList_MyCircuits.value
else if (props.table === toolsext.TABMYBACHECAS)
else if (props.table === shared_consts.TABLES_MYBACHECAS)
return searchList_Events.value
else if (props.table === toolsext.TABMYHOSPS)
else if (props.table === shared_consts.TABLES_MYHOSPS)
return searchList_Hosp.value
else if (props.table === shared_consts.TABLES_ATTIVITAS)
return searchList_Attivita.value
return searchList_Servizi.value
})
const showType = computed(() => {
if (props.table === toolsext.TABMYGOODS)
return costanti.SHOW_MYCARD
else if (props.table === toolsext.TABMYSKILLS)
return costanti.SHOW_MYCARD
else if (props.table === toolsext.TABMYGROUPS)
return costanti.SHOW_MYCARD
else if (props.table === toolsext.TABCIRCUITS)
return costanti.SHOW_MYCARD
return costanti.SHOW_MYCARD
})
const hint = computed(() => {
if (props.table === toolsext.TABMYGOODS)
if (props.table === shared_consts.TABLES_MYGOODS)
return 'digita il nome del Bene o del settore'
else if (props.table === toolsext.TABMYSKILLS)
else if (props.table === shared_consts.TABLES_MYSKILLS)
return 'digita il nome del Servizio o del settore'
else if (props.table === toolsext.TABMYGROUPS)
else if (props.table === shared_consts.TABLES_MYGROUPS)
return 'digita il nome del Gruppo'
else if (props.table === toolsext.TABCIRCUITS)
else if (props.table === shared_consts.TABLES_CIRCUITS)
return 'digita il nome della provincia'
else if (props.table === toolsext.TABMYBACHECAS)
else if (props.table === shared_consts.TABLES_MYBACHECAS)
return 'digita il nome dell\'Evento'
else if (props.table === toolsext.TABMYHOSPS)
else if (props.table === shared_consts.TABLES_MYHOSPS)
return 'digita delle parole da cercare nella descrizione dell\'Ospitalità'
else if (props.table === shared_consts.TABLES_ATTIVITAS)
return 'digita un\'attività da cercare nella descrizione dell\'Ospitalità'
return 'digita una parola da cercare'
})
const visuType = computed(() => {
if (props.table === toolsext.TABMYGOODS)
if (props.table === shared_consts.TABLES_MYGOODS)
return false
else if (props.table === toolsext.TABMYSKILLS)
else if (props.table === shared_consts.TABLES_MYSKILLS)
return false
else if (props.table === toolsext.TABMYGROUPS)
else if (props.table === shared_consts.TABLES_MYGROUPS)
return false
else if (props.table === toolsext.TABMYBACHECAS)
else if (props.table === shared_consts.TABLES_MYBACHECAS)
return false
return false // $q.screen.gt.xs
})
const noMsgRecord = computed(() => {
if (props.table === toolsext.TABMYGOODS)
if (props.table === shared_consts.TABLES_MYGOODS)
return 'Nessun Bene trovato con i filtri selezionati'
else if (props.table === toolsext.TABMYSKILLS)
else if (props.table === shared_consts.TABLES_MYSKILLS)
return 'Nessun Servizio trovato con i filtri selezionati'
else if (props.table === toolsext.TABMYGROUPS)
else if (props.table === shared_consts.TABLES_MYGROUPS)
return 'Nessun Gruppo trovato con i filtri selezionati'
else if (props.table === toolsext.TABCIRCUITS)
else if (props.table === shared_consts.TABLES_CIRCUITS)
return 'Nessun Circuito trovato con i filtri selezionati'
else if (props.table === toolsext.TABMYBACHECAS)
else if (props.table === shared_consts.TABLES_MYBACHECAS)
return 'Nessun Evento trovato con i filtri selezionati'
else if (props.table === toolsext.TABMYHOSPS)
else if (props.table === shared_consts.TABLES_MYHOSPS)
return 'Nessuna Ospitalità trovata con i filtri selezionati'
else if (props.table === shared_consts.TABLES_ATTIVITAS)
return 'Nessuna Attività trovata con i filtri selezionati'
return 'Nessun dato trovato con i filtri selezionati'
})
@@ -251,14 +249,14 @@ export default defineComponent({
col_footer.value = obj.col_footer
col_tabfooter.value = obj.col_tabfooter
if (props.table === toolsext.TABMYGROUPS) {
if (props.table === shared_consts.TABLES_MYGROUPS) {
myoptions.value = [
{ label: '🌎 Tutti', value: tools.FILTER_ALL },
{ label: '👤 Gruppi che Gestisci', value: tools.FILTER_MYREC },
// {label: 'Seguo', value: tools.FILTER_MYFOLLOW},
]
} else if (props.table === toolsext.TABCIRCUITS) {
} else if (props.table === shared_consts.TABLES_CIRCUITS) {
myoptions.value = [
{ label: '🌎 Tutti', value: tools.FILTER_ALL },
{ label: '👤 Circuiti che Gestisci', value: tools.FILTER_MYREC },
@@ -913,6 +911,47 @@ export default defineComponent({
},
]
searchList_Attivita.value = [
{
label: 'Regione',
table: 'regions',
key: 'idReg',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + 'regions', costanti.FILTER_TUTTI),
addall: true,
arrvalue: [],
filter: null,
useinput: false,
icon: 'fas fa-globe-europe'
},
{
label: 'Provincia',
table: 'provinces',
key: 'idProvince',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + 'provinces', costanti.FILTER_TUTTI),
addall: true,
arrvalue: [],
filter: getFilterProvinceByRegion,
useinput: true,
icon: 'flag',
},
{
label: 'Comune',
table: 'cities',
key: 'idCity',
type: costanti.FieldType.select_by_server,
value: tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + 'cities', costanti.FILTER_TUTTI),
addall: true,
arrvalue: [],
useinput: true,
filter: null,
// filter: getFilterCitiesByProvince,
// param1: shared_consts.PARAM_SHOW_PROVINCE,
tablesel: 'cities',
},
]
searchList_MyGroups.value = [
{
label: 'Regione',

View File

@@ -154,7 +154,7 @@
<q-tooltip v-if="!maximizedToggle" :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`">Maximize</q-tooltip>
</q-btn>
<q-btn dense flat icon="close" v-close-popup>
<q-tooltip :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`">Close</q-tooltip>
<q-tooltip :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`">{{t('dialog.close')}}</q-tooltip>
</q-btn>
</q-bar>

View File

@@ -560,9 +560,9 @@ export default defineComponent({
item.value = costanti.FILTER_TUTTI
}
}
} else if (item.table === toolsext.TABCITIES) {
} else if (item.table === shared_consts.TAB_CITIES) {
const valsaved = tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + item.table + costanti.FILTER_SEP + newval, costanti.FILTER_TUTTI)
const rec = searchList.value.find((myrec) => myrec.table === toolsext.TABCITIES) // check if exist
const rec = searchList.value.find((myrec) => myrec.table === shared_consts.TAB_CITIES) // check if exist
let trovato = false
let arrvalues = []
if (rec) {
@@ -595,13 +595,13 @@ export default defineComponent({
keycookie += myrecfilt.keycookie
tools.setCookie(keycookie, newval)
if (table === toolsext.TABSKILLS) {
if (table === shared_consts.TABLES_MYSKILLS) {
const recSector = searchList.value.find((rec) => rec.table === 'sectors')
if (recSector) {
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + recSector.value, newval)
}
} else if (table === toolsext.TABSECTORS) {
setCategBySector(toolsext.TABSKILLS, table, newval)
setCategBySector(shared_consts.TABLES_MYSKILLS, table, newval)
} else if (table === toolsext.TABSECTORGOODS) {
setCategBySector(toolsext.TABGOODS, table, newval)
} else if (table === toolsext.TABREGIONS) {
@@ -612,8 +612,8 @@ export default defineComponent({
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + table + costanti.FILTER_SEP + recSector.value, newval)
}
// setCategBySector('sectorgoods', table, newval)
} else if (table === toolsext.TABCITIES) {
const rec = searchList.value.find((myrec) => myrec.table === toolsext.TABCITIES) // check if exist
} else if (table === shared_consts.TAB_CITIES) {
const rec = searchList.value.find((myrec) => myrec.table === shared_consts.TAB_CITIES) // check if exist
if (rec) {
if (rec.value === costanti.FILTER_TUTTI) {
globalStore.myselector.data = { _id: 0, comune: '' }
@@ -763,7 +763,7 @@ export default defineComponent({
}
if (searchList.value) {
recSkill = searchList.value.find((item: ISearchList) => item.table === toolsext.TABSKILLS)
recSkill = searchList.value.find((item: ISearchList) => item.table === shared_consts.TABLES_MYSKILLS)
idSkill = recSkill ? recSkill.value : 0
// console.log('recSkill', idSkill)
}
@@ -891,7 +891,7 @@ export default defineComponent({
}
} else {
if ((item.table === toolsext.TABSKILLS) && item.value === costanti.FILTER_TUTTI) {
if ((item.table === shared_consts.TABLES_MYSKILLS) && item.value === costanti.FILTER_TUTTI) {
const obj2: any = {}
if (idSector > 0) {
@@ -1919,7 +1919,7 @@ export default defineComponent({
if (col.showonlyif_dipersona) {
const valori = myrec['idStatusSkill']
if (valori.length === 1 && valori.includes(shared_consts.STATUSSKILL_ONLINE)) {
if (valori && (valori.length === 1) && valori.includes(shared_consts.STATUSSKILL_ONLINE)) {
col.required = false
} else {
col.required = true

View File

@@ -348,7 +348,7 @@
<!--<q-radio v-if="mytable === toolsext.TAB" v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_GROUP"
label="Scheda"
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
<q-radio v-else-if="mytable !== toolsext.TABMYGROUPS && !finder" v-model="myvertical"
<q-radio v-else-if="mytable !== shared_consts.TABLES_MYGROUPS && !finder" v-model="myvertical"
:val="costanti.VISUTABLE_SCHEDA_USER" slabel="Scheda"
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>-->
<q-radio
@@ -409,14 +409,14 @@
</div>
<CMyRecGrpCard
v-if="tablesel === toolsext.TABMYGROUPS"
v-if="tablesel === shared_consts.TABLES_MYGROUPS"
:table="tablesel"
:prop_myrec="row"
@cmdext="cmdExt"
>
</CMyRecGrpCard>
<CMyRecCircuitCard
v-else-if="tablesel === toolsext.TABCIRCUITS"
v-else-if="tablesel === shared_consts.TABLES_CIRCUITS"
:table="tablesel"
:prop_myrec="row"
@cmdext="cmdExt"
@@ -894,7 +894,7 @@
<!--<q-radio v-if="mytable === toolsext.TAB" v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_GROUP"
label="Scheda"
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
<q-radio v-else-if="mytable !== toolsext.TABMYGROUPS && !finder" v-model="myvertical"
<q-radio v-else-if="mytable !== shared_consts.TABLES_MYGROUPS && !finder" v-model="myvertical"
:val="costanti.VISUTABLE_SCHEDA_USER" slabel="Scheda"
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>-->
<q-radio
@@ -1120,13 +1120,13 @@
class="dialog_annunci"
>
<CMyCardGrpPopup
v-if="mytable === toolsext.TABMYGROUPS"
v-if="mytable === shared_consts.TABLES_MYGROUPS"
:table="mytable"
:prop_myrec="myrecdialog"
>
</CMyCardGrpPopup>
<CMyCardCircuitPopup
v-else-if="mytable === toolsext.TABCIRCUITS"
v-else-if="mytable === shared_consts.TABLES_CIRCUITS"
:table="mytable"
:prop_myrec="myrecdialog"
>

View File

@@ -540,9 +540,9 @@ export default defineComponent({
item.value = costanti.FILTER_TUTTI
}
}
} else if (item.table === toolsext.TABCITIES) {
} else if (item.table === shared_consts.TAB_CITIES) {
const valsaved = tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + item.table + costanti.FILTER_SEP + newval, costanti.FILTER_TUTTI)
const rec = searchList.value.find((myrec) => myrec.table === toolsext.TABCITIES) // check if exist
const rec = searchList.value.find((myrec) => myrec.table === shared_consts.TAB_CITIES) // check if exist
let trovato = false
let arrvalues = []
if (rec) {
@@ -575,13 +575,13 @@ export default defineComponent({
keycookie += myrecfilt.keycookie
tools.setCookie(keycookie, newval)
if (table === toolsext.TABSKILLS) {
if (table === shared_consts.TABLES_MYSKILLS) {
const recSector = searchList.value.find((rec) => rec.table === 'sectors')
if (recSector) {
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + table + costanti.FILTER_SEP + recSector.value, newval)
}
} else if (table === toolsext.TABSECTORS) {
setCategBySector(toolsext.TABSKILLS, table, newval)
setCategBySector(shared_consts.TABLES_MYSKILLS, table, newval)
} else if (table === toolsext.TABSECTORGOODS) {
setCategBySector(toolsext.TABGOODS, table, newval)
} else if (table === toolsext.TABREGIONS) {
@@ -592,8 +592,8 @@ export default defineComponent({
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + table + costanti.FILTER_SEP + recSector.value, newval)
}
// setCategBySector('sectorgoods', table, newval)
} else if (table === toolsext.TABCITIES) {
const rec = searchList.value.find((myrec) => myrec.table === toolsext.TABCITIES) // check if exist
} else if (table === shared_consts.TAB_CITIES) {
const rec = searchList.value.find((myrec) => myrec.table === shared_consts.TAB_CITIES) // check if exist
if (rec) {
if (rec.value === costanti.FILTER_TUTTI) {
globalStore.myselector.data = { _id: 0, comune: '' }
@@ -743,7 +743,7 @@ export default defineComponent({
}
if (searchList.value) {
recSkill = searchList.value.find((item: ISearchList) => item.table === toolsext.TABSKILLS)
recSkill = searchList.value.find((item: ISearchList) => item.table === shared_consts.TABLES_MYSKILLS)
idSkill = recSkill ? recSkill.value : 0
// console.log('recSkill', idSkill)
}
@@ -856,7 +856,7 @@ export default defineComponent({
}
} else {
if ((item.table === toolsext.TABSKILLS) && item.value === costanti.FILTER_TUTTI) {
if ((item.table === shared_consts.TABLES_MYSKILLS) && item.value === costanti.FILTER_TUTTI) {
const obj2: any = {}
if (idSector > 0) {

View File

@@ -74,7 +74,7 @@
</div>
<CMyRecGrpCard
v-if="tablesel === toolsext.TABMYGROUPS"
v-if="tablesel === shared_consts.TABLES_MYGROUPS"
:table="tablesel"
:prop_myrec="row"
@cmdext="cmdExt"

View File

@@ -52,7 +52,7 @@ export default defineComponent({
const circuitStore = useCircuitStore()
const table = ref(toolsext.TABMYGROUPS)
const table = ref(shared_consts.TABLES_MYGROUPS)
const loadSaldo = ref(false)
const circuit = ref(<ICircuit | null | undefined>null)

View File

@@ -315,6 +315,17 @@ export default defineComponent({
return obj
}
function getTipodiAttivita() {
let obj = null
if (myrec.value.tipodiAttivita) {
obj = globalStore.getRecordByTableSingle(toolsext.TABTIPODIATTIVITA, myrec.value.tipodiAttivita)
if (obj)
return obj.label
}
return obj
}
function hasModifiedBooking() {
return (bookEventpage.value.bookedevent.numpeople !== bookEventForm.value.numpeople) ||
(bookEventpage.value.bookedevent.numpeopleLunch !== bookEventForm.value.numpeopleLunch) ||
@@ -645,6 +656,7 @@ export default defineComponent({
filter,
extraparams,
condividi,
getTipodiAttivita,
}
}
})

View File

@@ -29,7 +29,7 @@
@click.stop="tools.copyToClip($q, getlinkpage(), true)"
>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-share" />
<q-icon color="blue" name="fas fa-share" />
</q-item-section>
<q-item-section>
{{ $t('reaction.condividi') }}
@@ -193,13 +193,7 @@
@click.stop="tools.copyToClip($q, getlinkpage(), true)"
>
</q-btn>
<q-btn
flat
round
color="blue"
icon="far fa-eye"
style="z-index: 1"
>
<q-btn flat round color="blue" icon="far fa-eye" style="z-index: 1">
<q-badge
v-if="myrec"
text-color="primary"
@@ -292,7 +286,19 @@
<q-separator />
<q-list style="z-index: 5">
<q-item>
<q-item v-if="myrec.tipodiAttivita">
<q-item-section avatar>
<q-icon color="blue" name="fas fa-balance-scale" />
</q-item-section>
<q-item-section>
<q-item-label class="text-bold text-h7">
<q-chip dense color="green" text-color="white"
>{{ getTipodiAttivita() }}
</q-chip>
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="myrec.adType">
<q-item-section avatar>
<div v-if="showBadge()" class="text-center">
<q-chip
@@ -305,17 +311,29 @@
</q-chip>
</div>
</q-item-section>
</q-item>
<q-item v-if="myrec.typeHosp">
<q-item-section avatar>
<q-icon color="blue" name="fas fa-balance-scale" />
</q-item-section>
<q-item-section>
<q-item-label v-if="myrec.typeHosp" class="text-bold text-h7">
<q-item-label class="text-bold text-h7">
<q-chip dense color="green" text-color="white"
>{{ getTypeHosps() }}
</q-chip>
</q-item-label>
<q-item-label class="text-bold text-h7">{{
myrec.descr
}}</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="myrec.nome_attivita">
<q-item-section>
<q-item-label class="text-bold text-h7">
{{ myrec.nome_attivita }}
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="myrec.descr">
<q-item-section>
<q-item-label class="text-h7">{{ myrec.descr }}</q-item-label>
</q-item-section>
</q-item>
<q-item
@@ -489,7 +507,9 @@
class="my-card clBorderUser"
bordered
@click="
naviga(tools.getPathByGroup(myrec.mygrp, toolsext.TABMYGROUPS))
naviga(
tools.getPathByGroup(myrec.mygrp, shared_consts.TABLES_MYGROUPS)
)
"
>
<CMyGroup
@@ -500,7 +520,10 @@
</CMyGroup>
</q-card>
<q-card
v-else-if="!myrec.organisedBy"
v-else-if="
!myrec.organisedBy &&
shared_consts.TABLES_VISU_LISTA_USER.includes(table)
"
class="my-card clBorderUser"
bordered
>
@@ -548,7 +571,13 @@
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="myrec.mycities && myrec.mycities.length > 0 && myrec.mycities[0].comune">
<q-item
v-if="
myrec.mycities &&
myrec.mycities.length > 0 &&
myrec.mycities[0].comune
"
>
<q-item-section avatar>
<q-icon color="amber" name="fas fa-map-marker-alt" />
</q-item-section>
@@ -591,11 +620,61 @@
<q-item-label lines="1">
<span
v-html="
tools.getlinkhref(myrec.website, 'Visita il Sito Web')
tools.getlinkhref(
myrec.website,
t('services.visit_website')
)
"
/></q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-if="myrec.email">
<q-item-section avatar>
<q-icon color="blue-grey-6" name="fas fa-envelope" />
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<span
v-html="tools.getlinkEmail(myrec.email, t('services.email'))"
/></q-item-label>
</q-item-section>
</q-item>
<q-item v-if="myrec.telegram_username" clickable>
<q-item-section avatar>
<q-icon color="blue" name="telegram" />
</q-item-section>
<q-item-section>
<a
v-if="myrec.telegram_username"
:href="tools.getHttpForTelegram(myrec.telegram_username)"
target="_blank"
>@{{ myrec.telegram_username }}</a
>
</q-item-section>
</q-item>
<q-item clickable v-if="myrec.whatsapp">
<q-item-section avatar>
<q-icon color="green" name="fab fa-whatsapp" />
</q-item-section>
<q-item-section>
<q-item-label lines="1">
{{ myrec.whatsapp }}
</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-if="myrec.cell_phone">
<q-item-section avatar>
<q-icon color="green" name="fas fa-mobile-alt" />
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<span> {{ myrec.cell_phone }}: </span>
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="
@@ -715,6 +794,12 @@
}}</a></span
></span
>
<span v-if="myrec.createdBy"
><br />{{ $t('services.createdBy') }}
<span class="text-bold"
><a :href="'my/' + createdBy">{{ createdBy }}</a></span
></span
>
</q-item-label>
</q-item-section>
</q-item>

View File

@@ -69,7 +69,7 @@ export default defineComponent({
const saldo_pend = computed(() => account.value ? account.value.saldo_pend : 0)
const saldo = computed(() => account.value ? account.value.saldo : 0)
const table = ref(toolsext.TABCIRCUITS)
const table = ref(shared_consts.TABLES_CIRCUITS)
const showingtooltip = ref(false)
const showrules = ref(false)

View File

@@ -31,6 +31,7 @@ import { CMainView } from '@src/components/CMainView'
import { CMyProfileTutorial } from '@src/components/CMyProfileTutorial'
import { CSendRISTo } from '@src/components/CSendRISTo'
import { CDashboard } from '@src/components/CDashboard'
import { CDashGroup } from '@src/components/CDashGroup'
import { CCheckAppRunning } from '@src/components/CCheckAppRunning'
import { CStatusReg } from '@src/components/CStatusReg'
import { CTitleBanner } from '@src/components/CTitleBanner'
@@ -60,7 +61,7 @@ export default defineComponent({
CMyProfileTutorial, CSendRISTo,
CTitleBanner, CShareSocial, CCheckAppRunning, CRegistration,
CVisuVideoPromoAndPDF, CECommerce, CCatalogo, CAITools,
CMapComuni, CMapUsers,
CMapComuni, CMapUsers, CDashGroup,
// , //CMapMarker,
},
emits: ['selElemClick'],

View File

@@ -464,6 +464,10 @@
<div v-if="editOn" class="elemEdit">CDashboard</div>
<CDashboard></CDashboard>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.DASHGROUP">
<div v-if="editOn" class="elemEdit">CDashGroup</div>
<CDashGroup></CDashGroup>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.CSENDRISTO">
<div v-if="editOn" class="elemEdit">CSendRISTo</div>
<CSendRISTo></CSendRISTo>

View File

@@ -63,7 +63,7 @@ export default defineComponent({
const grp = ref(<IMyGroup | null>null)
const table = ref(toolsext.TABMYGROUPS)
const table = ref(shared_consts.TABLES_MYGROUPS)
const circuit = ref(<ICircuit | null | undefined>null)

View File

@@ -1,5 +1,6 @@
<template>
<div v-if="tools.isUserOk()">
<div v-if="grp">
<q-item class="q-my-sm" clickable>
<q-item-section

View File

@@ -62,7 +62,7 @@ export default defineComponent({
const grp = ref(<IMyGroup | null>null)
const table = ref(toolsext.TABMYGROUPS)
const table = ref(shared_consts.TABLES_MYGROUPS)
const circuit = ref(<ICircuit | null | undefined>null)

View File

@@ -399,7 +399,8 @@
>
</CAccomodation>
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.image">
<div v-else-if="col.fieldtype === costanti.FieldType.image"
style="text-align: center">
<div v-if="canEdit">
{{ $t('reg.photo') }}
<CGallery

View File

@@ -131,9 +131,9 @@ export default defineComponent({
indstep: 0,
step: STEP_CITY,
title: t('tutorial.step_residence_title'),
extratitle: function () { return ': ' + contact.value!.profile.resid_province },
extratitle: function () { return ': ' + (contact.value!.profile.resid_province ? contact.value!.profile.resid_province : '') },
label: t('tutorial.step_residence'),
checkOk: function (): boolean { return contact.value ? contact.value.profile.resid_province !== '' && contact.value.profile.resid_province !== '0' : false },
checkOk: function (): boolean { return contact.value ? !!contact.value!.profile.resid_province && contact.value.profile.resid_province !== '' && contact.value.profile.resid_province !== '0' : false },
checkOkReal: function (): boolean { return this.checkOk() },
icon: 'house',
required: true,
@@ -158,7 +158,7 @@ export default defineComponent({
checkOk: function () {
if (mycircuit.value) {
return ((userStore.IsMyCircuitByName(mycircuit.value.name) ||
userStore.IsAskedCircuitByName(mycircuit.value.name))) || userStore.my.profile.noCircuit
userStore.IsAskedCircuitByName(mycircuit.value.name))) || (userStore.my.profile.noCircuit)
}
return false
},
@@ -199,6 +199,7 @@ export default defineComponent({
])
const numindstep = computed(() => arrStep.value.length)
watch(() => indstep.value, (newval: number, oldval: number) => {
if (indstep.value >= 0)
@@ -356,6 +357,8 @@ export default defineComponent({
if (indstep.value > numindstep.value)
indstep.value = numindstep.value
console.log('indstep.value', indstep.value)
// circuit.value = circuitStore.getCircuitByName(props.circuitname)
if (!userStore.my.profile.stepTutorial || userStore.my.profile.stepTutorial === 0) {

View File

@@ -460,7 +460,7 @@ export default defineComponent({
let myarr: any = []
// console.log(props.col.jointable, props.filter)
if (props.col.jointable) {
if (props && props.col && props.col.jointable) {
optionsreal.value = globalStore.getTableJoinByName(props.col.jointable, props.col.addall, props.col.addnone, props.filter)
// console.log('optionsreal.value', optionsreal.value)
} else {
@@ -547,8 +547,8 @@ export default defineComponent({
function filterFn(val: any, update: any, abort: any) {
update(
async () => {
// console.log('Filter val', val, val.length)
// console.log('props.filter_extra', props.filter_extra)
console.log('Filter val', val, val.length)
console.log('props.filter_extra', props.filter_extra)
let myarr: any = []

View File

@@ -81,7 +81,7 @@
table="users"
mykey="profile"
mysubkey="notif_cities"
:jointable="toolsext.TABCITIES"
:jointable="shared_consts.TAB_CITIES"
:type="costanti.FieldType.multiselect_by_server">
</CMyFieldDb>-->

View File

@@ -53,6 +53,15 @@
font-size: 0.75rem;
color: gray;
}
.subcat {
font-size: 1rem;
@media (max-width: 718px) {
font-size: 0.85rem;
}
}
.subcat_color {
color: green;
}
.label-qta{
font-size: 1.15rem;

View File

@@ -424,6 +424,15 @@ export default defineComponent({
$router.push(path)
}
function hasImage(): boolean {
if (!myproduct.value || !myproduct.value.productInfo) {
return false;
}
const { img, image_link } = myproduct.value.productInfo;
return ((!!img && img !== '') || (!!image_link && image_link !== ''))
}
onMounted(mounted)
onBeforeUnmount(beforeDestroy)
@@ -474,6 +483,7 @@ export default defineComponent({
isOrdineChiuso,
ricarica,
apriSchedaPDF,
hasImage,
}
}
})

View File

@@ -25,8 +25,8 @@
t('ecomm.not_active')
}}</span>
</div>
<q-card-section horizontal class="image-section">
<div class="image-container">
<q-card-section horizontal :class="'image-section'">
<div v-if="hasImage()" :class="hasImage() ? 'image-container' : ''">
<q-img
:src="myproduct.productInfo.img ? `` + myproduct.productInfo.img : myproduct.productInfo.image_link"
:alt="myproduct.productInfo.name"
@@ -217,6 +217,9 @@
<div class="product_code">
&nbsp; {{ t('ecomm.codice') }}: {{ myproduct.productInfo.code }}
</div>
<div v-if="myproduct.productInfo.subcatprods && myproduct.productInfo.subcatprods.length > 0" class="subcat">
<span style="color: #333333;">{{ t('ecomm.subcat') }}:</span> <span class="subcat_color">{{ myproduct.productInfo.subcatprods[0].name }}</span>
</div>
</div>
</q-card-section>
<q-card-section v-if="complete && myproduct.productInfo.description">

View File

@@ -150,7 +150,7 @@
<q-tooltip v-if="!maximizedToggle" :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`">Maximize</q-tooltip>
</q-btn>
<q-btn dense flat icon="close" v-close-popup>
<q-tooltip :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`">Close</q-tooltip>
<q-tooltip :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`">{{t('dialog.close')}}</q-tooltip>
</q-btn>
</q-bar>

View File

@@ -18,6 +18,7 @@
>
</CCheckCircuitsEnabled>
<q-select
v-if="!circuitname"
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"

View File

@@ -64,7 +64,7 @@ export default defineComponent({
const globalStore = useGlobalStore()
const userStore = useUserStore()
const table = ref(toolsext.TABMYSKILLS)
const table = ref(shared_consts.TABLES_MYSKILLS)
const col = ref(<IColGridTable>{})

View File

@@ -62,7 +62,7 @@ export default defineComponent({
const circuitStore = useCircuitStore()
const table = ref(toolsext.TABMYGROUPS)
const table = ref(shared_consts.TABLES_MYGROUPS)
const circuitsnational = ref(<any[]>[])

View File

@@ -13,7 +13,7 @@
img-class="imgprofile"
height="30px"
@click="
naviga(tools.getPathByTableAndRec(toolsext.TABCIRCUITS, circuit))
naviga(tools.getPathByTableAndRec(shared_consts.TABLES_CIRCUITS, circuit))
"
/>
</q-avatar>
@@ -22,7 +22,7 @@
color="primary"
rounded
size="sm"
@click="naviga(tools.getPathByTableAndRec(toolsext.TABCIRCUITS, circuit))"
@click="naviga(tools.getPathByTableAndRec(shared_consts.TABLES_CIRCUITS, circuit))"
>
{{ circuit.name }}
</q-btn>
@@ -50,7 +50,7 @@
img-class="imgprofile"
height="30px"
@click="
naviga(tools.getPathByTableAndRec(toolsext.TABCIRCUITS, circnaz))
naviga(tools.getPathByTableAndRec(shared_consts.TABLES_CIRCUITS, circnaz))
"
/>
</q-avatar>
@@ -60,7 +60,7 @@
rounded
size="sm"
@click="
naviga(tools.getPathByTableAndRec(toolsext.TABCIRCUITS, circnaz))
naviga(tools.getPathByTableAndRec(shared_consts.TABLES_CIRCUITS, circnaz))
"
>
{{ circnaz.name }}

View File

@@ -89,6 +89,17 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/activities',
materialIcon: 'fas fa-house-user',
name: 'mypages.activities',
component: () => import('@/root/activities/activities.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 15,

View File

@@ -10,7 +10,7 @@
<meta name="description" content="<%= productDescription %>">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="version" content="1.0.47">
<meta name="version" content="1.0.48">
<meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">

View File

@@ -46,8 +46,8 @@
>
<CFinder
:ind="tools.getIndMainCardsByTable(toolsext.TABMYBACHECAS)"
:table="toolsext.TABCIRCUITS"
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_MYBACHECAS)"
:table="shared_consts.TABLES_CIRCUITS"
:noButtAdd="true"
:showFilterPersonal="false"
:showBarSelection="false"

View File

@@ -1227,4 +1227,42 @@ export interface IAnim {
export interface ICoordinates {
lat: any
long: any
}
export interface ITipoDiAttivita {
_id: string
label: string
note: string
}
export interface IAttivita {
_id: string
// INFORMAZIONI:
tipodiAttivita: ITipoDiAttivita
nome_attivita: string
descr: string
idSector: number[]
idCity: number[]
coordinate_gps: string
// FOTO
logo: IGallery
photos: IGallery[]
// Contatto (Opzionale)
email: string
telegram_username: string
cell_phone: string
whatsapp: string
website: string
//++Todo: Aggiungere ORARI
// Altri CAMPI:
date_updated?: Date
createdBy?: string // Username del creatore (proponente)
}

View File

View File

@@ -0,0 +1,39 @@
import {
defineComponent, ref, computed,
} from 'vue'
import { tools } from '@src/store/Modules/tools'
import { toolsext } from '@src/store/Modules/toolsext'
import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CDashboard } from '@/components/CDashboard'
import { CTitlePage } from '@/components/CTitlePage'
import { CChartMap } from '@src/components/CChartMap'
import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CNotifAtTop } from '@src/components/CNotifAtTop'
// import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
import { LandingFooter } from '@/components/LandingFooter'
import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
import { costanti } from '@costanti'
import { CCheckIfIsLogged } from '@components'
import { shared_consts } from '@/common/shared_vuejs'
export default defineComponent({
name: 'Activities',
components: { CSkill, CChartMap, CNotifAtTop, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage, LandingFooter, CCheckIfIsLogged },
setup() {
return {
tools,
toolsext,
static_data,
shared_consts,
}
},
})

View File

@@ -0,0 +1,30 @@
<template>
<q-page class="">
<div v-if="tools.isLogged()">
<CNotifAtTop />
<div v-if="tools.isUserOk()">
<CFinder
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_ATTIVITAS)"
:table="shared_consts.TABLES_ATTIVITAS"
/>
</div>
<div v-else>
<CUserNonVerif></CUserNonVerif>
</div>
</div>
<div v-else>
<CCheckIfIsLogged></CCheckIfIsLogged>
</div>
</q-page>
</template>
<script lang="ts" src="./activities.ts">
</script>
<style lang="scss" scoped>
@import './activities.scss';
</style>

View File

@@ -19,6 +19,7 @@ import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
import { shared_consts } from '@/common/shared_vuejs'
import { colmyBachecas } from '@store/Modules/fieldsTable'
@@ -33,6 +34,7 @@ export default defineComponent({
tools,
toolsext,
static_data,
shared_consts,
}
},
})

View File

@@ -5,8 +5,8 @@
<div v-if="tools.isUserOk()">
<CFinder
:ind="tools.getIndMainCardsByTable(toolsext.TABMYBACHECAS)"
:table="toolsext.TABMYBACHECAS">
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_MYBACHECAS)"
:table="shared_consts.TABLES_MYBACHECAS">
</CFinder>

View File

@@ -23,6 +23,8 @@ import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
import { shared_consts } from '@/common/shared_vuejs'
export default defineComponent({
name: 'Goods',
components: { CSkill, CChartMap, CFinder,
@@ -33,6 +35,7 @@ export default defineComponent({
tools,
toolsext,
static_data,
shared_consts,
}
},
})

View File

@@ -5,8 +5,8 @@
<div v-if="tools.isUserOk()">
<CFinder
:ind="tools.getIndMainCardsByTable(toolsext.TABMYGOODS)"
:table="toolsext.TABMYGOODS"
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_MYGOODS)"
:table="shared_consts.TABLES_MYGOODS"
/>
</div>
<div v-else>

View File

@@ -24,6 +24,8 @@ import MixinUsers from '@/mixins/mixin-users'
import { colmyHosp } from '@store/Modules/fieldsTable'
import { shared_consts } from '@/common/shared_vuejs'
export default defineComponent({
name: 'hosp',
components: { CSkill, CChartMap, CMapsEsempio, CNotifAtTop, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage, LandingFooter },
@@ -33,6 +35,7 @@ export default defineComponent({
tools,
toolsext,
static_data,
shared_consts,
}
},
})

View File

@@ -7,8 +7,8 @@
<div v-if="tools.isUserOk()">
<CFinder
:ind="tools.getIndMainCardsByTable(toolsext.TABMYHOSPS)"
:table="toolsext.TABMYHOSPS">
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_MYHOSPS)"
:table="shared_consts.TABLES_MYHOSPS">
</CFinder>

View File

@@ -6,7 +6,7 @@
<CFinder
:ind="1"
:table="toolsext.TABMYSKILLS"
:table="shared_consts.TABLES_MYSKILLS"
/>
Prova Pao:<br>

View File

@@ -4,7 +4,6 @@ import {
import { tools } from '@src/store/Modules/tools'
import { toolsext } from '@src/store/Modules/toolsext'
import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CDashboard } from '@/components/CDashboard'
import { CTitlePage } from '@/components/CTitlePage'
@@ -23,14 +22,17 @@ import MixinUsers from '@/mixins/mixin-users'
import { costanti } from '@costanti'
import { CCheckIfIsLogged } from '@components'
import { shared_consts } from '@/common/shared_vuejs'
export default defineComponent({
name: 'Services',
components: { CSkill, CChartMap, CNotifAtTop, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage, LandingFooter, CCheckIfIsLogged },
components: { CChartMap, CNotifAtTop, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage, LandingFooter, CCheckIfIsLogged },
setup() {
return {
tools,
toolsext,
static_data,
shared_consts,
}
},
})

View File

@@ -6,8 +6,8 @@
<div v-if="tools.isUserOk()">
<CFinder
:ind="tools.getIndMainCardsByTable(toolsext.TABMYSKILLS)"
:table="toolsext.TABMYSKILLS"
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_MYSKILLS)"
:table="shared_consts.TABLES_MYSKILLS"
/>
<!--<CDashboard></CDashboard>-->

View File

@@ -373,7 +373,7 @@ export default defineComponent({
if (opt.iseuro) {
valstr = tools.convertPriceEurToValue(valstr)
}
valstr = tools.removeescape(valstr)
valstr = tools.removeescape_e_acapo(valstr)
// valstr = tools.addslashes(valstr)
if (!opt.primo)
risultato += ', '
@@ -520,11 +520,11 @@ export default defineComponent({
}
if (cmd === shared_consts.Cmd.CITIES_SERVER) {
userStore.importToServerCmd($q, t, cmd, null)
userStore.importToServerCmd($q, t, cmd, null, true)
} else if ((cmd === shared_consts.Cmd.PRODUCTS) || (cmd === shared_consts.Cmd.PRODUCTS_V2)) {
let options = { aggiornaStockQty: checkAggiornaQta.value }
if (importasulserver.value)
userStore.importToServerCmd($q, t, cmd, { arrdata: JSON.stringify(strris, null, 2), options })
userStore.importToServerCmd($q, t, cmd, { arrdata: JSON.stringify(strris, null, 2), options }, true)
}
risultato = strris
@@ -569,20 +569,20 @@ export default defineComponent({
function eseguiCmdProduct() {
let options = { aggiornaStockQty: checkAggiornaQta.value }
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options })
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options }, true)
risultato.value = ''
}
function eseguiCmdInventario() {
let options = { aggiornaStockQty: checkAggiornaQta.value }
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options })
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options }, true)
risultato.value = ''
}
function eseguiCmdCatalogoJson() {
let options = { aggiornaStockQty: checkAggiornaQta.value }
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options })
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options }, true)
risultato.value = ''
}

View File

@@ -1152,6 +1152,13 @@ const msg_it = {
sector_goods: 'Settori dei Beni',
sector_goods_select: 'Scegli i Settori Preferiti dei Beni',
},
services: {
visit_website: 'Visita il Sito Web',
email: 'Email:',
whatsapp: 'Whatsapp',
createdBy: 'Creato da',
cell_phone: 'Telefono',
},
catgrps: {
name: 'Categoria',
},
@@ -1181,6 +1188,7 @@ const msg_it = {
iscritti: 'Iscritti',
bacheca: 'Bacheca',
services: 'Servizi',
activities: 'Attività',
catalogo: 'Catalogo',
handshake: 'Rapporti di Fiducia',
hosp: 'Ospitalità',
@@ -1717,6 +1725,7 @@ const msg_it = {
qta_in_attesa: '(Ordinati In attesa {qty})',
sconto_applicato: 'Risparmi {risparmio} € !',
codice: 'Codice',
subcat: 'Cat',
code_o_text_search: 'Inserisci il codice o il testo da cercare',
code_add_to_cart: 'Aggiungi un codice al carrello',
qta_prenotate_in_attesa: '(Preordinate In attesa {qty})',
@@ -1792,6 +1801,19 @@ const msg_it = {
tipiace: 'Ti piace',
condividi: 'Condividi',
},
attivita: {
tipodiattivita: 'Tipologia',
name: 'Nome Attività',
email: 'Email',
cell_phone: 'Telefono',
whatsapp: 'Whatsapp',
telegram_username: 'Username Telegram',
website: 'Sito Web',
coordinate_gps: 'Coordinate GPS',
logo: 'Logo',
foto: 'Foto',
},
},
};

View File

@@ -87,7 +87,7 @@ export const useCircuitStore = defineStore('CircuitStore', {
const circNazionali: any = this.listcircuits.filter((circ: any) => circ.showAlways)
if (user.profile.mycircuits && user.profile.mycircuits.length > 0) {
if (user && user.profile && user.profile.mycircuits && user.profile.mycircuits.length > 0) {
for (const circ of circNazionali) {
const trovato = user.profile.mycircuits.findIndex((mycirc: any) => mycirc.circuitname === circ.name) >= 0
if (trovato) {

View File

@@ -1,3 +1,5 @@
import { GROUPSCMD } from "@src/common/shared_nodejs"
export interface IMainCard {
visible: boolean
strsingolo?: string
@@ -260,8 +262,39 @@ export const costanti = {
small: true,
table: '',
},
{
visible: false,
title: ' Attività ',
subtitle: 'Artigiani, Aziende, Società, Negozi',
strsingolo: 'Attivita',
to: '/activities',
icon: 'fas fa-tshirt',
color: 'indigo-6',
hint: '',
table: 'attivitas',
visuonstat: true,
small: false,
showfavorite: true,
},
],
GROUPCARDS: [
{
visible: true,
title: ' Attività ',
subtitle: 'Artigiani, Aziende, Società, Negozi',
strsingolo: 'Attivita',
to: '/activities',
icon: 'fas fa-tshirt',
color: 'indigo-6',
hint: '',
table: 'attivitas',
visuonstat: true,
small: false,
showfavorite: true,
},
],
BINARY_CHECK: 1,

View File

@@ -5,6 +5,7 @@ import { costanti } from './costanti'
import { useGlobalStore } from '@store/globalStore'
import { toolsext } from '@store/Modules/toolsext'
import { static_data } from '@/db/static_data'
import { shared_consts } from '@src/common/shared_vuejs'
const DeleteRec = {
name: 'deleterec',
@@ -1198,6 +1199,158 @@ export const colmyGoods = [
AddCol(DeleteRec),
]
export const colAttivita = [
AddCol({
name: 'tipodiAttivita',
label_trans: 'attivita.tipodiattivita',
fieldtype: costanti.FieldType.select,
required: true,
jointable: toolsext.TABTIPODIATTIVITA,
icon: 'fas fa-balance-scale',
// noshowlabel: true,
// numpag_carousel: 1,
// inline: true,
// typeobj: 'radio',
}),
AddCol({
name: 'nome_attivita',
label_trans: 'attivita.nome_attivita',
fieldtype: costanti.FieldType.string,
maxlength: 100,
required: true,
}),
AddCol({
name: 'descr',
label_trans: 'proj.shortdescr',
fieldtype: costanti.FieldType.string,
maxlength: 300,
required: true,
}),
AddCol({
name: 'idSector',
label_trans: 'sectors.name',
fieldtype: costanti.FieldType.select,
required: true,
jointable: toolsext.TABSECTORS,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
visible: true,
icon: 'category',
numpag_carousel: 4,
}),
AddCol({
name: 'idSkill',
label_trans: 'skill.name',
fieldtype: costanti.FieldType.select,
jointable: 'skills',
addnone: true,
filter_table: toolsext.TABSECTORS,
filter_field: 'idSector',
noshowlabel: true,
icon: 'engineering',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
allowNewValue: false,
required: false,
sortable: false,
}),
AddCol({
name: 'note', label_trans: 'proj.descrapprof', fieldtype: costanti.FieldType.html,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
titlepopupedit: 'Dettagli', field_extra1: 'username', subfield_extra1: '',
required: false,
isadvanced_field: true,
numpag_carousel: 3,
}),
AddCol({
name: 'idCity',
label_trans: 'skill.city',
fieldtype: costanti.FieldType.multiselect_by_server,
jointable: 'cities',
tablesel: 'cities',
noshowlabel: true,
icon: 'fas fa-map-marker-alt',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
remote_table: 'mycities',
remote_key: '_id',
remote_field: 'comune',
required: true,
showonlyif_dipersona: true,
numpag_carousel: 2,
}),
AddCol({
name: 'date_updated', label_trans: 'reg.pub_updated', fieldtype: costanti.FieldType.date,
required: false,
visible: false,
sortable: true,
showWhen: 0
}),
AddCol({
name: 'createdBy',
label_trans: 'reg.username',
foredit: false,
tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip,
link: '',
noshowlabel: true,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
}),
AddCol({
name: 'date_publishing', label_trans: 'products.date_publishing',
fieldtype: costanti.FieldType.onlydate,
foredit: false,
noshowlabel: true,
}),
AddCol({ name: 'email', label_trans: 'attivita.email', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'cell_phone', label_trans: 'attivita.cell_phone', fieldtype: costanti.FieldType.string }),
AddCol({
name: 'whatsapp',
label_trans: 'attivita.whatsapp',
}),
AddCol({
name: 'telegram_username',
label_trans: 'attivita.telegram_username',
fieldtype: costanti.FieldType.string,
}),
AddCol({ name: 'website', label_trans: 'attivita.website' }),
AddCol({ name: 'coordinate_gps', label_trans: 'attivita.coordinate_gps', fieldtype: costanti.FieldType.string }),
AddCol({
name: 'logo',
label_trans: 'attivita.logo',
fieldtype: costanti.FieldType.image,
jointable: '',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit,
isadvanced_field: false,
}),
AddCol({
name: 'photos',
label_trans: 'attivita.foto',
fieldtype: costanti.FieldType.listimages,
jointable: '',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit,
isadvanced_field: false,
}),
AddCol({
name: 'date_updated', label_trans: 'reg.pub_updated', fieldtype: costanti.FieldType.date,
required: false,
visible: false,
sortable: true,
showWhen: 0
}),
AddCol(DuplicateRec),
AddCol(ModifRec),
AddCol(DeleteRec),
//++Todo: Aggiungere ORARI di Servizio
]
export const colmySkills = [
AddCol({
name: 'adType',
@@ -2043,7 +2196,7 @@ export const colTableProductInfos = [
AddCol({ name: 'name', label_trans: 'products.name' }),
AddCol({ name: 'description', label_trans: 'products.description', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'icon', label_trans: 'products.icon' }),
AddCol({ name: 'img', label_trans: 'products.img', fieldtype: costanti.FieldType.image_and_filename, path: 'upload/products/' }),
AddCol({ name: 'img', label_trans: 'products.img', fieldtype: costanti.FieldType.image_and_filename, path: 'upload/products/' }),
AddCol({
name: 'department',
label_trans: 'products.department',
@@ -2093,8 +2246,8 @@ export const colTableOrdersCart = [
AddCol({ name: 'totalPrice', label_trans: 'orderscart.totalPrice', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'totalPriceCalc', label_trans: 'orderscart.totalPriceCalc', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'status', label_trans: 'orderscart.status', fieldtype: costanti.FieldType.number }),
]
]
export const colTableProducts = [
AddCol({ name: 'active', label_trans: 'products.active', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'isbn', label_trans: 'products.isbn' }),
@@ -2136,8 +2289,8 @@ export const colTableProducts = [
jointable: 'scontisticas',
}),
AddCol({ name: 'price', label_trans: 'products.price', fieldtype: costanti.FieldType.number, required: true }),
// arrvariazioni
/* AddCol({ name: 'sale_price', label_trans: 'products.sale_price', fieldtype: costanti.FieldType.number, required: false }),
AddCol({
@@ -2368,6 +2521,13 @@ const colTablePermission = [
AddCol(DeleteRec),
AddCol(DuplicateRec),
]
const colTableTipoDiAttivita = [
AddCol({ name: '_id', label_trans: 'others.value' }),
AddCol({ name: 'label', label_trans: 'proj.longdescr' }),
AddCol({ name: 'note', label_trans: 'proj.longdescr' }),
AddCol(DeleteRec),
AddCol(DuplicateRec),
]
const colCalDate = [
AddCol({ name: '_id', label_trans: 'rec.date', fieldtype: costanti.FieldType.number }),
@@ -3527,7 +3687,7 @@ export const colmyUserCircuit = [
AddCol({ name: 'deperibile', label_trans: 'account.deperibile', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'fidoConcesso', label_trans: 'account.fidoConcesso', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'qta_maxConcessa', label_trans: 'account.qta_maxConcessa', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'totCircolante', label_trans: 'circuit.totCircolante', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'totTransato', label_trans: 'circuit.totTransato', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'numtransactions', label_trans: 'circuit.numtransactions', fieldtype: costanti.FieldType.number }),
@@ -4151,6 +4311,15 @@ export const fieldsTable = {
colicon: 'icon',
noshow: true,
},
{
value: toolsext.TABTIPODIATTIVITA,
label: 'Tipo di Attivita',
columns: colTableTipoDiAttivita,
colkey: 'value',
collabel: 'label',
colicon: 'icon',
noshow: true,
},
{
value: 'accepted',
label: 'Condizioni',
@@ -4180,14 +4349,14 @@ export const fieldsTable = {
collabel: 'key',
},
{
value: toolsext.TABMYSKILLS,
value: shared_consts.TABLES_MYSKILLS,
label: 'Mie Competenze',
columns: colmySkills,
colkey: '_id',
collabel: (rec: any) => `${rec.descr}`,
},
{
value: toolsext.TABMYBACHECAS,
value: shared_consts.TABLES_MYBACHECAS,
label: 'Bacheca',
columns: colmyBachecas,
colkey: '_id',
@@ -4201,12 +4370,26 @@ export const fieldsTable = {
collabel: (rec: any) => `${rec.descr}`,
},
{
value: toolsext.TABMYGOODS,
value: shared_consts.TABLES_MYGOODS,
label: 'Beni',
columns: colmyGoods,
colkey: '_id',
collabel: (rec: any) => `${rec.descr}`,
},
{
value: shared_consts.TABLES_ATTIVITAS,
label: 'Attività',
columns: colAttivita,
colkey: '_id',
collabel: (rec: any) => `${rec.name}`,
},
{
value: toolsext.TABATTIVITA,
label: 'Attivita',
columns: colAttivita,
colkey: '_id',
collabel: (rec: any) => `${rec.descr} - ${rec.note}`,
},
{
value: 'skills',
label: 'Competenze',

View File

@@ -4671,6 +4671,15 @@ export const tools = {
return ''
}
},
getlinkEmail(myemail: string) {
if (myemail) {
return `<a href="${myemail}" >${myemail}</a>`
} else {
return ''
}
},
getNationsByNationality(nat: string) {
@@ -8407,6 +8416,15 @@ export const tools = {
return inputString.replace('\\', '').replace(/"/g, '')
},
removeTrailingBr(str: string) {
// Usa una regex per cercare il tag <br> alla fine della stringa e rimuoverlo
return str.replace(/<br>$/, '');
},
removeescape_e_acapo(inputString: string): string {
return this.removeTrailingBr(inputString.replace('\\', '').replace(/"/g, '').replace(/\r\n/g, '<br>').replace(/\r/g, '<br>'))
},
isObjectEmpty(obj: any) {
return Object.keys(obj).length === 0;
},

View File

@@ -71,6 +71,8 @@ export const toolsext = {
TABPROVINCE: 'provinces',
TABMYSKILLS: 'myskills',
TABMYGOODS: 'mygoods',
TABATTIVITA: 'attivita',
TABTIPODIATTIVITA: 'tipodiattivitas',
TABMYBACHECAS: 'mybachecas',
TABMYHOSPS: 'myhosps',
TABCALDATE: 'caldate',

View File

@@ -1,4 +1,4 @@
import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor } from 'model'
import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd } from 'model'
import { Api } from '@api'
import { serv_constants } from '@src/store/Modules/serv_constants'
@@ -13,6 +13,7 @@ import { useGlobalStore } from './globalStore'
import { ref } from 'vue'
import translate from '@src/globalroutines/util'
import products from '@src/rootgen/admin/products/products'
function getRecordOrdersCartEmpty(): IOrderCart {
return {
@@ -124,6 +125,54 @@ export const useProducts = defineStore('Products', {
},
getCatProdsByGas: (state: IProductsState) => (idGasOrdine: string): ICatProd[] => {
let arrcat = state.catprods_gas
// Ottieni le categorie solo per i "products" che hanno come idGasOrdine il valore passato
if (idGasOrdine) {
arrcat = state.catprods_gas.filter((rec: ICatProd) => {
const arrprod = state.products.filter((prod: IProduct) => {
if (prod.idGasordine === idGasOrdine && prod.productInfo.idCatProds?.includes(rec._id)) {
return true
}
})
return arrprod.length > 0 ? true : false
})
} else {
return []
}
return arrcat
},
getSubCatProdsByGas: (state: IProductsState) => (idGasOrdine: string, idCatProd: string): ISubCatProd[] => {
let arrcat = state.subcatprods
// Ottieni le categorie solo per i "products" che hanno come idGasOrdine il valore passato
if (idGasOrdine) {
arrcat = state.subcatprods.filter((rec: ISubCatProd) => {
const arrprod = state.products.filter((prod: IProduct) => {
if (prod.idGasordine === idGasOrdine
&& prod.productInfo.idSubCatProds?.includes(rec._id)
&& prod.productInfo.idCatProds?.includes(idCatProd)
) {
return true
}
})
return arrprod.length > 0 ? true : false
})
} else {
return []
}
return arrcat
},
getAuthors: (state: IProductsState) => (): any[] => {
// Get the list of authors, for the q-select component using state.authors array
// [{name: xxx, value: _id }]

View File

@@ -472,7 +472,7 @@ export const useUserStore = defineStore('UserStore', {
IsAskedCircuitByName(name: string): boolean {
if (this.my.profile.asked_circuits)
if (this.my.profile.asked_circuits && this.my.profile.asked_circuits.length > 0)
return this.my.profile.asked_circuits.findIndex((rec: ICircuit) => rec.name === name) >= 0
else
return false
@@ -482,7 +482,7 @@ export const useUserStore = defineStore('UserStore', {
IsMyCircuitByName(circuitname: string): boolean {
if (this.my.profile.mycircuits)
if (this.my.profile.mycircuits && this.my.profile.mycircuits.length > 0)
return this.my.profile.mycircuits.findIndex((rec: IMyCircuit) => rec.circuitname === circuitname) >= 0
else
return false
@@ -515,10 +515,20 @@ export const useUserStore = defineStore('UserStore', {
else
arrout = tools.getCommon([...this.my.profile.mycircuits], [...user.profile.mycircuits], 'circuitname')
// controlla che il circuito sia Abilitato!
// controlla che il circuito sia Abilitato e Territoriale !
for (const circuitname of arrout) {
const circuit = circuitStore.getCircuitByName(circuitname)
if (circuit && circuit.transactionsEnabled) {
if (circuit && circuit.transactionsEnabled && !circuit.showAlways) {
arrfinale.push(circuitname)
}
}
// Poi aggiungi i Circuiti ITALIA
for (const circuitname of arrout) {
const circuit = circuitStore.getCircuitByName(circuitname)
if (circuit && circuit.transactionsEnabled && circuit.showAlways) {
arrfinale.push(circuitname)
}
}
@@ -1840,7 +1850,7 @@ export const useUserStore = defineStore('UserStore', {
})
},
async importToServerCmd($q: any, t: any, cmd: number, data: any) {
async importToServerCmd($q: any, t: any, cmd: number, data: any, recorddaimportare: boolean = false) {
return Api.SendReq('/admin/import', 'POST', { cmd, data })
.then((res: any) => {
if (res) {
@@ -1856,9 +1866,17 @@ export const useUserStore = defineStore('UserStore', {
msg += ' ' + t('db.records_updated', { num: res.data.updated })
}
if (!msg) {
msg = t('db.recupdated')
if (recorddaimportare) {
msg += ' ' + t('db.records_imported', { num: 0 })
tools.showNegativeNotif($q, msg)
} else {
msg = t('db.recupdated')
tools.showPositiveNotif($q, msg)
}
} else {
tools.showPositiveNotif($q, msg)
}
tools.showPositiveNotif($q, msg)
}
}).catch((error) => {
tools.showNegativeNotif($q, t('db.recfailed'))

View File

@@ -338,6 +338,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
else if (table === 'departments') ris = state.departments
else if (table === 'categorys') ris = state.categories
else if (table === 'catprods') ris = Products.catprods
else if (table === 'subcatprods') ris = Products.subcatprods
else if (table === 'catprods_gas') ris = Products.catprods_gas
else if (table === 'authors') ris = Products.authors
else if (table === 'catais') ris = state.catAI
@@ -1573,6 +1574,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
this.providers = (res.data.providers) ? [...res.data.providers] : []
Products.catprods = (res.data.catprods) ? [...res.data.catprods] : []
Products.subcatprods = (res.data.subcatprods) ? [...res.data.subcatprods] : []
Products.catprods_gas = (res.data.catprods_gas) ? [...res.data.catprods_gas] : []
Products.authors = (res.data.authors) ? [...res.data.authors] : []
@@ -1907,6 +1909,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
else if (table === toolsext.TABTYPECASH) myarr = shared_consts.TypeCashStr
else if (table === 'usernotifs') myarr = shared_consts.UsersNotif_Adv_List
else if (table === 'typenotifs') myarr = shared_consts.TypeNotifs_Arr
else if (table === toolsext.TABTIPODIATTIVITA) myarr = shared_consts.TipoDiAttivita
else myarr = this.getListByTable(table, value2)
if (costanti.TABLES_ARRAY.includes(table)) {
@@ -1935,9 +1938,9 @@ export const useGlobalStore = defineStore('GlobalStore', {
obj[mykey] = costanti.FILTER_NESSUNO
obj[collab] = '[Nessuno]'
if (table === toolsext.TABMYGOODS) {
if (table === shared_consts.TABLES_MYGOODS) {
obj.idSectorGood = []
} else if ((table === toolsext.TABMYSKILLS)) {
} else if ((table === shared_consts.TABLES_MYSKILLS)) {
obj.idSector = []
}

View File

@@ -546,6 +546,11 @@
color="primary"
@click="EseguiFunz('createAllCircuits', '', '')"
></q-btn>
<br /><q-btn
label="Correggi i Circuiti (togli i null)"
color="primary"
@click="EseguiFunz('correggiCircuitiANull', '', '')"
></q-btn>
<br />
</div>
<div class="row">

View File

@@ -67,6 +67,12 @@ export default defineComponent({
return lab
})
const getlist = computed(() => {
const mylist = searchList.value.find((rec: any) => rec.table === 'products')
return mylist
})
const arrLoaded = computed(() => {
if (arrProducts.value && numRecLoaded.value)
@@ -88,6 +94,12 @@ export default defineComponent({
};
watch(() => cat.value, (newval, oldval) => {
if (cat.value) {
filter.value.author = '' // disattivo il filtro autore
search.value = '' // disattivo anche la ricerca per testo
}
calcArrProducts()
})
@@ -103,6 +115,12 @@ export default defineComponent({
})
watch(() => filter.value.author, (newval, oldval) => {
// Se filtroAuthor attivato, allora evito il filtro per Categoria
if (filter.value.author) {
cat.value = '' // disattivo il filtro categoria
search.value = '' // disattivo anche la ricerca per testo
}
calcArrProducts()
if (tools.scrollTop() > 300) {
tools.scrollToTopValue(300)
@@ -121,8 +139,10 @@ export default defineComponent({
refreshpage.value = true
let arrprod = productStore.getProducts(cosa.value) || [];
let catstr = cat.value || '';
let filtroAuthor = filter.value.author || '';
let catstr = cat.value || '';
let gasselstr = ''
if (cosa.value === shared_consts.PROD.GAS) {
gasselstr = idGasSel.value || '';
@@ -281,8 +301,8 @@ export default defineComponent({
console.log('REFRR searchval', newval, table, 'tablesel', tablesel)
if (newval === '') {
search.value = ''
} else {
search.value = newval.name
} else {
search.value = newval.name
}
}

View File

@@ -30,6 +30,7 @@ export default defineComponent({
const cosa = ref(0)
const cat = ref('')
const subcat = ref('')
const idGasSel = ref('')
const loadpage = ref(false)
const refreshpage = ref(false)
@@ -68,6 +69,10 @@ export default defineComponent({
calcArrProducts()
})
watch(() => subcat.value, (newval, oldval) => {
calcArrProducts()
})
watch(() => idGasSel.value, (newval, oldval) => {
calcArrProducts()
})
@@ -81,8 +86,11 @@ export default defineComponent({
watch(() => cosa.value, (newval, oldval) => {
tools.setCookie(tools.COOK_COSA_PRODOTTI, cosa.value.toString())
if (cosa.value !== shared_consts.PROD.TUTTI)
if (cosa.value !== shared_consts.PROD.TUTTI) {
cat.value = ''
subcat.value = ''
}
calcArrProducts()
})
@@ -92,19 +100,21 @@ export default defineComponent({
refreshpage.value = true
let arrprod = productStore.getProducts(cosa.value)
let catstr = cat.value;
let subcatstr = subcat.value;
let gasselstr = ''
if (cosa.value === shared_consts.PROD.GAS) {
gasselstr = idGasSel.value
}
let lowerSearchText = search.value.toLowerCase().trim();
if ((!lowerSearchText || (lowerSearchText && lowerSearchText.length < 2)) && !catstr && (!gasselstr && (cosa.value !== shared_consts.PROD.GAS))) {
if ((!lowerSearchText || (lowerSearchText && lowerSearchText.length < 2)) && !catstr && !subcatstr && (!gasselstr && (cosa.value !== shared_consts.PROD.GAS))) {
} else {
arrprod = arrprod.filter((product: IProduct) => {
if (product && product.productInfo) {
if (product && product.productInfo && !!product.productInfo.name) {
let lowerName = product.productInfo.name!.toLowerCase();
let hasCategoria = !catstr || (catstr && product.productInfo.idCatProds?.includes(catstr));
let hasSubCategoria = !subcatstr || (subcatstr && product.productInfo.idSubCatProds?.includes(subcatstr));
let productgassel = true
if (gasselstr || (cosa.value === shared_consts.PROD.GAS)) {
@@ -118,7 +128,7 @@ export default defineComponent({
// Check if any word in lowerName starts with lowerSearchText
let anyWordStartsWithSearch = lowerName.split(/\s+/).some(word => nameMatch.test(word));
return (codeMatch.test(product.productInfo.code!) || anyWordStartsWithSearch) && hasCategoria && productgassel;
return (codeMatch.test(product.productInfo.code!) || anyWordStartsWithSearch) && hasCategoria && hasSubCategoria && productgassel;
}
});
}
@@ -171,9 +181,36 @@ export default defineComponent({
function getCatProds() {
let arrcat = productStore.getCatProds(cosa.value)
let riscat: any = [{ label: 'Tutti', value: '', icon: undefined, color: undefined }]
for (const rec of arrcat) {
riscat.push({ label: rec.name, value: rec._id, icon: rec.icon, color: rec.color })
let riscat: any = []
if (arrcat && arrcat.length > 0) {
riscat = [{ label: 'Tutti', value: '', icon: undefined, color: undefined }]
for (const rec of arrcat) {
riscat.push({ label: rec.name, value: rec._id, icon: rec.icon, color: rec.color })
}
}
return riscat
}
function getCatProdsByGas(idGasOrdine: string): any {
let arrcat = productStore.getCatProdsByGas(idGasOrdine)
let riscat: any = []
if (arrcat && arrcat.length > 0) {
riscat = [{ label: 'Tutti', value: '', icon: undefined, color: undefined }]
for (const rec of arrcat) {
riscat.push({ label: rec.name, value: rec._id, icon: rec.icon, color: rec.color })
}
}
return riscat
}
function getSubCatProdsByGas(idGasOrdine: string, idCatProd: string): any {
let arrcat = productStore.getSubCatProdsByGas(idGasOrdine, idCatProd)
let riscat: any = []
if (arrcat && arrcat.length > 0) {
riscat = [{ label: 'Tutti', value: '', icon: undefined, color: undefined }]
for (const rec of arrcat) {
riscat.push({ label: rec.name, value: rec._id, icon: rec.icon, color: rec.color })
}
}
return riscat
@@ -210,7 +247,9 @@ export default defineComponent({
cosa,
shared_consts,
getCatProds,
getCatProdsByGas,
cat,
subcat,
idGasSel,
productStore,
t,
@@ -223,6 +262,7 @@ export default defineComponent({
onLoadScroll,
numRecLoaded,
arrLoaded,
getSubCatProdsByGas,
}
}
})

View File

@@ -96,19 +96,65 @@
<div class="text-center text-h6 text-red">Ordini Attivi:</div>
</div>
<div class="row q-gutter-xs justify-center q-mx-auto">
<div v-for="(recgas, index) in productStore.getGasordinesActives()" :key="index">
<div
v-for="(recgas, index) in productStore.getGasordinesActives()"
:key="index"
>
<q-btn
push
dense
:size="tools.isMobile() ? '0.9rem' : '1.05rem'"
:color="idGasSel === recgas._id ? 'primary' : undefined"
:text-color="idGasSel === recgas._id ? 'white' : 'black'"
:text-color="idGasSel === recgas._id ? 'white' : 'black'"
:label="recgas.name"
@click="idGasSel = recgas._id"
>
</q-btn>
</div>
</div>
<div class="row q-gutter-xs justify-center q-mx-auto">
<div
v-for="(reccat, index) in getCatProdsByGas(idGasSel)"
:key="index"
>
<q-btn
:push="cat === reccat.value"
dense
:size="tools.isMobile() ? '0.70rem' : '0.85rem'"
:icon="reccat.icon ? reccat.icon : undefined"
:color="cat === reccat.value ? 'primary' : undefined"
:text-color="cat === reccat.value ? 'white' : 'black'"
rounded
:label="reccat.label"
@click="cat = reccat.value"
>
</q-btn>
</div>
</div>
<q-separator class="q-ma-md">&nbsp;</q-separator>
<div
v-if="getSubCatProdsByGas(idGasSel, cat)"
class="row q-gutter-xs justify-center q-mx-auto"
>
<div
v-for="(recsubcat, index) in getSubCatProdsByGas(idGasSel, cat)"
:key="index"
>
<q-btn
:push="subcat === recsubcat.value"
dense
:size="tools.isMobile() ? '0.70rem' : '0.85rem'"
:icon="recsubcat.icon ? recsubcat.icon : undefined"
:color="subcat === recsubcat.value ? 'positive' : undefined"
:text-color="subcat === recsubcat.value ? 'white' : 'blue'"
rounded
:label="recsubcat.label"
@click="subcat = recsubcat.value"
>
</q-btn>
</div>
</div>
<div class="text-center q-py-sm prod_trov">
<span
v-show="productStore.getNumProdTot() !== arrProducts.length"

View File

@@ -4,8 +4,8 @@
<CNotifAtTop />
<CMyCircuits v-model="filter" :finder="true" :showfinder="true" :showBarSelection="true">
<CFinder
:ind="tools.getIndMainCardsByTable(toolsext.TABCIRCUITS)"
:table="toolsext.TABCIRCUITS"
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_CIRCUITS)"
:table="shared_consts.TABLES_CIRCUITS"
:noButtAdd="!tools.isManager()"
:showFilterPersonal="true"
:showBarSelection="true"

View File

@@ -9,6 +9,7 @@ import { CMyFieldRec } from '@/components/CMyFieldRec'
import { CSkill } from '@/components/CSkill'
import { CDateTime } from '@/components/CDateTime'
import { CInfoAccount } from '@/components/CInfoAccount'
import { CSendCoins } from '@/components/CSendCoins'
import { tools } from '@store/Modules/tools'
import { computed, defineComponent, onMounted, ref, watch } from 'vue'
import { useUserStore } from '@store/UserStore'
@@ -29,7 +30,8 @@ export default defineComponent({
name: 'mygroup',
components: {
CProfile, CTitleBanner, CMyFieldRec,
CInfoAccount, CSkill, CDateTime, CMyFriends, CGridTableRec, CMyUser, CCheckIfIsLogged, CNotifAtTop
CInfoAccount, CSkill, CDateTime, CMyFriends, CGridTableRec, CMyUser, CCheckIfIsLogged,
CNotifAtTop, CSendCoins
},
props: {},
setup() {
@@ -48,6 +50,8 @@ export default defineComponent({
const filtroutente = ref(<any[]>[])
const showPic = ref(false)
const showsendCoinTo = ref(false)
const tabcircuit = ref('info')
const mygrp = ref(<IMyGroup | null>{})
@@ -268,6 +272,7 @@ export default defineComponent({
circuitslistOpt,
filtroeventsgroup,
getlinkpage,
showsendCoinTo,
}
}
})

View File

@@ -36,7 +36,9 @@
<div
v-if="mygrp.title !== mygrp.groupname"
class="col-12 text-h7 text-blue text-shadow-2"
>{{ mygrp.groupname }}</div>
>
{{ mygrp.groupname }}
</div>
<q-banner
v-if="userStore.IsRefusedGroupByGroupname(mygrp.groupname)"
@@ -48,6 +50,18 @@
<br />
</q-banner>
<q-btn
v-if="circuitslistOpt.length > 0"
icon="fas fa-coins"
color="green"
size="md"
:label="t('circuit.sendcoins')"
dense
rounded
@click="showsendCoinTo = true"
>
</q-btn>
<div>
<q-btn
v-if="
@@ -93,9 +107,7 @@
<q-icon color="negative" name="fas fa-user-minus" />
</q-item-section>
<q-item-section>
{{
$t('groups.exit_group')
}}
{{ $t('groups.exit_group') }}
</q-item-section>
</q-item>
@@ -123,9 +135,7 @@
<q-icon color="negative" name="fas fa-trash-alt" />
</q-item-section>
<q-item-section>
{{
$t('groups.delete_group')
}}
{{ $t('groups.delete_group') }}
</q-item-section>
</q-item>
</q-list>
@@ -165,7 +175,10 @@
</div>
</div>
<div v-if="mygrp.descr" class="no-wrap justify-evenly items-center content-start">
<div
v-if="mygrp.descr"
class="no-wrap justify-evenly items-center content-start"
>
<!--
<q-btn
v-if="tools.iAmAdminGroup(groupname)" icon="fas fa-pencil-alt"
@@ -177,7 +190,11 @@
-->
<q-tabs v-model="tabgrp" class="text-blue">
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info"></q-tab>
<q-tab
:label="t('shared.info1')"
name="info"
icon="fas fa-info"
></q-tab>
<q-tab
v-if="
tools.iCanShowGroupsMember(mygrp) ||
@@ -196,7 +213,11 @@
name="circuits"
icon="fas fa-coins"
></q-tab>
<q-tab :label="t('groups.events')" name="events" icon="fas fa-bullhorn"></q-tab>
<q-tab
:label="t('groups.events')"
name="events"
icon="fas fa-bullhorn"
></q-tab>
</q-tabs>
<q-tab-panels v-model="tabgrp" animated>
@@ -223,7 +244,7 @@
v-if="
!!mygrp.date_updated &&
tools.getstrshortDate(mygrp.date_updated) !==
tools.getstrshortDate(mygrp.createdBy)
tools.getstrshortDate(mygrp.createdBy)
"
class="element"
>
@@ -247,7 +268,9 @@
<q-icon name="fas fa-lock"></q-icon>
</div>
<div>
<div class="title_param">{{ $t('groups.private') }}</div>
<div class="title_param">
{{ $t('groups.private') }}
</div>
{{ $t('groups.private_descr') }}
</div>
</div>
@@ -275,10 +298,9 @@
</div>
<div>
<div class="title_param">
<div
v-for="(city, index) of cities"
:key="index"
>{{ city.comune }} ({{ city.prov }})</div>
<div v-for="(city, index) of cities" :key="index">
{{ city.comune }} ({{ city.prov }})
</div>
</div>
</div>
</div>
@@ -477,8 +499,16 @@
class="text-blue"
no-caps
>
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info"></q-tab>
<q-tab :label="t('circuit.movements')" name="mov" icon="fas fa-coins"></q-tab>
<q-tab
:label="t('shared.info1')"
name="info"
icon="fas fa-info"
></q-tab>
<q-tab
:label="t('circuit.movements')"
name="mov"
icon="fas fa-coins"
></q-tab>
</q-tabs>
</q-tab-panel>
<q-tab-panel name="events"></q-tab-panel>
@@ -619,13 +649,23 @@
></CGridTableRec>
</div>
</div>
<div v-else class="fit column no-wrap justify-evenly items-center content-start">
<q-skeleton type="QAvatar" size="140px" height="140px" animation="fade" />
<div
v-else
class="fit column no-wrap justify-evenly items-center content-start"
>
<q-skeleton
type="QAvatar"
size="140px"
height="140px"
animation="fade"
/>
<q-card flat bordered style="width: 250px">
<div class="text-h6">
<q-skeleton :animation="animation" />
</div>
<div class="col-12 text-h7 text-grey text-center">{{ groupname }}</div>
<div class="col-12 text-h7 text-grey text-center">
{{ groupname }}
</div>
<div class="col-12 text-h7">
<q-skeleton :animation="animation" />
</div>
@@ -647,12 +687,23 @@
</q-dialog>
</div>
</div>
<div v-if="showsendCoinTo">
<CSendCoins
:showprop="showsendCoinTo"
:to_group="mygrp"
circuitname=""
@close="showsendCoinTo = false"
>
</CSendCoins>
</div>
</template>
<script lang="ts" src="./mygroup.ts">
</script>
<style lang="scss" scoped>
@import "./mygroup.scss";
@import './mygroup.scss';
</style>

View File

@@ -17,8 +17,8 @@
<CMyGroups v-model="filter" :finder="true">
<CFinder
:ind="tools.getIndMainCardsByTable(toolsext.TABMYGROUPS)"
:table="toolsext.TABMYGROUPS"
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_MYGROUPS)"
:table="shared_consts.TABLES_MYGROUPS"
:showFilterPersonal="true"
/>

View File

@@ -4,7 +4,7 @@
sizes="max-height: 120px" styleadd="bottom: -20px !important;">
<CMyCardService
:table="toolsext.TABMYBACHECAS"
:table="shared_consts.TABLES_MYBACHECAS"
:nopopup="true"
:idRec="idBacheca"
>
@@ -16,7 +16,7 @@
<!-- <CMyCardPopup
v-if="!!idBacheca"
:table="toolsext.TABMYBACHECAS"
:table="shared_consts.TABLES_MYBACHECAS"
:nopopup="true"
:idRec="idBacheca">

View File

@@ -7,7 +7,7 @@
>
<CMyCardService
v-if="idGood"
:table="toolsext.TABMYGOODS"
:table="shared_consts.TABLES_MYGOODS"
:nopopup="true"
:idRec="idGood"
>

View File

@@ -5,7 +5,7 @@
<CMyCardService
v-if="!!idHosp"
:table="toolsext.TABMYHOSPS"
:table="shared_consts.TABLES_MYHOSPS"
:nopopup="true"
:idRec="idHosp">

View File

@@ -35,7 +35,7 @@ export default defineComponent({
const animation = ref('fade')
const table = ref(toolsext.TABMYSKILLS)
const table = ref(shared_consts.TABLES_MYSKILLS)
const idSkill = computed(() => $route.params.idSkill ? $route.params.idSkill.toString() : '')

View File

@@ -7,7 +7,7 @@
>
<CMyCardService
v-if="idSkill"
:table="toolsext.TABMYSKILLS"
:table="shared_consts.TABLES_MYSKILLS"
:nopopup="true"
:idRec="idSkill"
>