- Creazione pagina Home logout

- Nuovo Gasordine
- Visualizzazione GAS / BOTTEGA
This commit is contained in:
Surya Paolo
2023-12-21 15:21:30 +01:00
parent 00e8bd8fa6
commit 3f4eb0877c
10 changed files with 92 additions and 31 deletions

View File

@@ -17,6 +17,11 @@ export const shared_consts = {
}, },
LIMIT_NOTIF_FOR_USER: 200, LIMIT_NOTIF_FOR_USER: 200,
PROD: {
GAS: 1,
BOTTEGA: 2,
},
UNITS_OF_MEASURE: { UNITS_OF_MEASURE: {
NESSUNO: 0, NESSUNO: 0,
GRAMMI: 1, GRAMMI: 1,

View File

@@ -91,7 +91,7 @@
> >
</div> </div>
<div <div
v-if="complete && myproduct.weight" v-if="myproduct.weight"
class="text-grey text-title row items-center" class="text-grey text-title row items-center"
> >
<q-icon name="fas fa-balance-scale" class="q-mr-xs" /> <q-icon name="fas fa-balance-scale" class="q-mr-xs" />

View File

@@ -114,7 +114,7 @@ export default defineComponent({
let ret = true let ret = true
if (slide.value === '1') { if (slide.value === '1') {
// Invitante + Email // Invitante + Email
ret = !signup.email || !signup.aportador_solidario || inputAportador.value.hasError || (inputEmail.value && inputEmail.value.hasError) ret = !signup.email || (tools.getAskToVerifyReg() && (!signup.aportador_solidario || inputAportador.value.hasError)) || (inputEmail.value && inputEmail.value.hasError)
} else if (slide.value === '2') { } else if (slide.value === '2') {
// Username // Username
ret = !signup.username || (inputUsername.value && inputUsername.value.hasError) ret = !signup.username || (inputUsername.value && inputUsername.value.hasError)

View File

@@ -2,7 +2,7 @@
<div> <div>
<div <div
v-if=" v-if="
needTelegram && tools.isLogged() && tools.getUsername() && !collettivo tools.isLogged() && tools.getUsername() && !collettivo
" "
class="text-center" class="text-center"
> >

View File

@@ -7,10 +7,12 @@ export interface IProduct {
idProducer?: string, idProducer?: string,
idProvider?: string, idProvider?: string,
idStorehouses?: string[], idStorehouses?: string[],
idGasordines?: string[],
idScontisticas?: string[], idScontisticas?: string[],
scontisticas: IScontistica[], scontisticas: IScontistica[],
producer?: IProducer, producer?: IProducer,
storehouses: IStorehouse[], storehouses: IStorehouse[],
gasordines: IGasordine[],
provider?: IProvider, provider?: IProvider,
code?: string, code?: string,
name?: string, name?: string,
@@ -26,6 +28,7 @@ export interface IProduct {
QuantitaOrdinateInAttesa?: number, QuantitaOrdinateInAttesa?: number,
QuantitaPrenotateInAttesa?: number, QuantitaPrenotateInAttesa?: number,
stockQty: number, stockQty: number,
minBuyQty: number,
bookableQty: number, bookableQty: number,
canBeShipped?: boolean, canBeShipped?: boolean,
canBeBuyOnline?: boolean, canBeBuyOnline?: boolean,
@@ -141,7 +144,7 @@ export interface IGasordine {
referent?: string, referent?: string,
city?: string, city?: string,
img?: string, img?: string,
dataora_chiusura?: Date, dataora_chiusura_ordini?: Date,
dataora_ritiro?: Date, dataora_ritiro?: Date,
} }

View File

@@ -62,6 +62,7 @@ const msg_it = {
quantity: 'Quantità', quantity: 'Quantità',
quantityAvailable: 'Disponibili', quantityAvailable: 'Disponibili',
stockQty: 'In Magazzino', stockQty: 'In Magazzino',
minBuyQty: 'Qta minima acquistabile',
bookableQty: 'Prenotabili', bookableQty: 'Prenotabili',
bookableAvailableQty: 'Disponib. Prenotabili', bookableAvailableQty: 'Disponib. Prenotabili',
weight: 'Peso', weight: 'Peso',
@@ -79,6 +80,8 @@ const msg_it = {
note: 'Note', note: 'Note',
codice_EAN: 'EAN', codice_EAN: 'EAN',
barcode: 'BarCode', barcode: 'BarCode',
price_acquistato: 'Prezzo Acquistato',
vegan: 'Vegano',
}, },
storehouses: { storehouses: {
name: 'Magazzino', name: 'Magazzino',
@@ -1669,12 +1672,17 @@ const msg_it = {
qta_in_attesa: '(Ordinati In attesa {qty})', qta_in_attesa: '(Ordinati In attesa {qty})',
sconto_applicato: 'Risparmi {risparmio} € !', sconto_applicato: 'Risparmi {risparmio} € !',
codice: 'Codice', codice: 'Codice',
code_o_text_search: 'Inserisci il codice o il testo', code_o_text_search: 'Inserisci il codice o il testo da cercare',
code_add_to_cart: 'Aggiungi un codice al carrello', code_add_to_cart: 'Aggiungi un codice al carrello',
qta_prenotate_in_attesa: '(Preordinate In attesa {qty})', qta_prenotate_in_attesa: '(Preordinate In attesa {qty})',
}, },
}, },
gas: {
dataora_chiusura_ordini: 'Data Chiusura Ordini',
dataora_ritiro: 'Data Ritiro Prodotti',
}
}; };
export default msg_it; export default msg_it;

View File

@@ -449,7 +449,7 @@ export const colTableGasordine = [
AddCol({ name: 'referente', label_trans: 'store.referent' }), AddCol({ name: 'referente', label_trans: 'store.referent' }),
AddCol({ name: 'city', label_trans: 'store.city' }), AddCol({ name: 'city', label_trans: 'store.city' }),
AddCol({ name: 'img', label_trans: 'store.img' }), AddCol({ name: 'img', label_trans: 'store.img' }),
AddCol({ name: 'dataora_chiusura', label_trans: 'gas.dataora_chiusura', fieldtype: costanti.FieldType.date }), AddCol({ name: 'dataora_chiusura_ordini', label_trans: 'gas.dataora_chiusura_ordini', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'dataora_ritiro', label_trans: 'gas.dataora_ritiro', fieldtype: costanti.FieldType.date }), AddCol({ name: 'dataora_ritiro', label_trans: 'gas.dataora_ritiro', fieldtype: costanti.FieldType.date }),
AddCol(DeleteRec), AddCol(DeleteRec),
AddCol(DuplicateRec), AddCol(DuplicateRec),
@@ -1957,7 +1957,7 @@ export const colTableIscrittiArcadei = [
export const colTableProducts = [ export const colTableProducts = [
AddCol({ name: 'active', label_trans: 'products.active', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'active', label_trans: 'products.active', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'code', label_trans: 'products.code' }), AddCol({ name: 'code', label_trans: 'products.code', required: true }),
AddCol({ name: 'codice_EAN', label_trans: 'products.codice_EAN' }), AddCol({ name: 'codice_EAN', label_trans: 'products.codice_EAN' }),
AddCol({ name: 'barcode', label_trans: 'products.barcode' }), AddCol({ name: 'barcode', label_trans: 'products.barcode' }),
AddCol({ name: 'name', label_trans: 'products.name' }), AddCol({ name: 'name', label_trans: 'products.name' }),
@@ -1977,6 +1977,12 @@ export const colTableProducts = [
fieldtype: costanti.FieldType.multiselect, fieldtype: costanti.FieldType.multiselect,
jointable: 'storehouses', jointable: 'storehouses',
}), }),
AddCol({
name: 'idGasordines',
label_trans: 'gasordine.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'gasordines',
}),
AddCol({ AddCol({
name: 'idProvider', name: 'idProvider',
label_trans: 'provider.name', label_trans: 'provider.name',
@@ -2002,11 +2008,12 @@ export const colTableProducts = [
fieldtype: costanti.FieldType.multiselect, fieldtype: costanti.FieldType.multiselect,
jointable: 'categorys', jointable: 'categorys',
}), }),
AddCol({ name: 'price', label_trans: 'products.price', fieldtype: costanti.FieldType.number }), AddCol({ name: 'price', label_trans: 'products.price', fieldtype: costanti.FieldType.number, required: true }),
AddCol({ name: 'price_acquistato', label_trans: 'products.price_acquistato', fieldtype: costanti.FieldType.number, required: true }),
AddCol({ name: 'after_price', label_trans: 'products.after_price' }), AddCol({ name: 'after_price', label_trans: 'products.after_price' }),
AddCol({ name: 'color', label_trans: 'products.color' }), AddCol({ name: 'color', label_trans: 'products.color' }),
AddCol({ name: 'size', label_trans: 'products.size' }), AddCol({ name: 'size', label_trans: 'products.size' }),
AddCol({ /*AddCol({
name: 'quantityAvailable', name: 'quantityAvailable',
label_trans: 'products.quantityAvailable', label_trans: 'products.quantityAvailable',
fieldtype: costanti.FieldType.number fieldtype: costanti.FieldType.number
@@ -2015,6 +2022,11 @@ export const colTableProducts = [
name: 'bookableAvailableQty', name: 'bookableAvailableQty',
label_trans: 'products.bookableAvailableQty', label_trans: 'products.bookableAvailableQty',
fieldtype: costanti.FieldType.number fieldtype: costanti.FieldType.number
}), */
AddCol({
name: 'minBuyQty',
label_trans: 'products.minBuyQty',
fieldtype: costanti.FieldType.number
}), }),
AddCol({ AddCol({
name: 'stockQty', name: 'stockQty',

View File

@@ -20,8 +20,18 @@ export const useProducts = defineStore('Products', {
}), }),
getters: { getters: {
getProducts: (state: IProductsState) => (): IProduct[] => { getProducts: (state: IProductsState) => (cosa?: number): IProduct[] => {
return state.products if (!!cosa) {
let ris = null
if (cosa === shared_consts.PROD.GAS) {
ris = state.products.filter((rec) => (rec.idGasordines && rec.idGasordines.length > 0))
} else if (cosa === shared_consts.PROD.BOTTEGA) {
ris = state.products.filter((rec) => (!rec.idGasordines || (rec.idGasordines && rec.idGasordines.length === 0)))
}
return ris ? ris : []
} else {
return state.products
}
}, },
updateDataProduct: (state: IProductsState) => (res: any) => { updateDataProduct: (state: IProductsState) => (res: any) => {
@@ -55,14 +65,15 @@ export const useProducts = defineStore('Products', {
getProductById: (state: IProductsState) => (id: string): IProduct => { getProductById: (state: IProductsState) => (id: string): IProduct => {
const prod = state.products.find((prod: IProduct) => prod._id === id) const prod = state.products.find((prod: IProduct) => prod._id === id)
return prod ? prod : { active: false, img: '', code: '', name: '', storehouses: [], scontisticas: [], price: 0, stockQty: 0, bookableQty: 0 } return prod ? prod : { active: false, img: '', code: '', name: '', storehouses: [], scontisticas: [], price: 0, stockQty: 0, bookableQty: 0, gasordines: [], idGasordines: [], minBuyQty: 1 }
}, },
getProductByCode: (state: IProductsState) => (code: string): IProduct => { getProductByCode: (state: IProductsState) => (code: string): IProduct => {
const prod = state.products.find((prod: IProduct) => prod.code === code) const prod = state.products.find((prod: IProduct) => prod.code === code)
return prod ? prod : { return prod ? prod : {
active: false, img: '', code: '', name: '', storehouses: [], scontisticas: [], price: 0, active: false, img: '', code: '', name: '', storehouses: [], scontisticas: [], price: 0,
stockQty: 0, bookableQty: 0 gasordines: [], idGasordines: [],
stockQty: 0, bookableQty: 0, minBuyQty: 1
} }
}, },
@@ -215,8 +226,10 @@ export const useProducts = defineStore('Products', {
active: false, active: false,
idProducer: '', idProducer: '',
idStorehouses: [], idStorehouses: [],
idGasordines: [],
idScontisticas: [], idScontisticas: [],
scontisticas: [], scontisticas: [],
gasordines: [],
idProvider: '', idProvider: '',
producer: {}, producer: {},
storehouses: [], storehouses: [],
@@ -232,6 +245,7 @@ export const useProducts = defineStore('Products', {
quantityAvailable: 0, quantityAvailable: 0,
bookableAvailableQty: 0, bookableAvailableQty: 0,
stockQty: 0, stockQty: 0,
minBuyQty: 1,
bookableQty: 0, bookableQty: 0,
canBeShipped: false, canBeShipped: false,
QuantitaOrdinateInAttesa: 0, QuantitaOrdinateInAttesa: 0,
@@ -645,7 +659,7 @@ export const useProducts = defineStore('Products', {
if (ris && ris.myord == null) { if (ris && ris.myord == null) {
msg = t('ecomm.prodotto_tolto') msg = t('ecomm.prodotto_tolto')
tools.showNotif($q, msg) tools.showNotif($q, msg)
return return
} }
if (ris === null || ris.myord == null) { if (ris === null || ris.myord == null) {
msg = t('ecomm.error_cart') msg = t('ecomm.error_cart')

View File

@@ -9,6 +9,7 @@ import { toolsext } from '@store/Modules/toolsext'
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar'
import { costanti } from '@costanti' import { costanti } from '@costanti'
import { shared_consts } from '@/common/shared_vuejs'
import { CProductCard } from '@src/components/CProductCard' import { CProductCard } from '@src/components/CProductCard'
import { IProduct } from '@src/model' import { IProduct } from '@src/model'
@@ -27,12 +28,14 @@ export default defineComponent({
const search = ref('') const search = ref('')
const cosa = ref(shared_consts.PROD.GAS)
function mounted() { function mounted() {
// Inizializza // Inizializza
productStore.loadProducts() productStore.loadProducts()
} }
function getProducts() { function getProducts() {
let arrprod = productStore.getProducts() let arrprod = productStore.getProducts(cosa.value)
if (!search.value) { if (!search.value) {
return arrprod return arrprod
} }
@@ -54,6 +57,8 @@ export default defineComponent({
toolsext, toolsext,
getProducts, getProducts,
search, search,
cosa,
shared_consts,
} }
} }
}) })

View File

@@ -1,29 +1,43 @@
<template> <template>
<q-page> <q-page>
<div class="panel"> <div class="panel">
<div>
<div class="q-gutter-md text-center q-mb-md">
<q-btn-toggle v-model="cosa" push rounded glossy toggle-color="purple" :options="[
{ value: shared_consts.PROD.GAS, slot: 'gas' },
{ value: shared_consts.PROD.BOTTEGA, slot: 'bottega' },
]">
<template v-slot:gas>
<div class="row items-center no-wrap">
<div class="text-center">
Ordina sul GAS
</div>
<q-icon right name="fas fa-user-friends" />
</div>
</template>
<template v-slot:bottega>
<div class="row items-center no-wrap">
<div class="text-center">
Vai alla Bottega
</div>
<q-icon right name="fas fa-store" />
</div>
</template>
</q-btn-toggle>
</div>
</div>
<div class="container"> <div class="container">
<div <div class="q-gutter-y-md column text-center q-mx-auto" style="width: 350px; max-width: 100%">
class="q-gutter-y-md column text-center q-mx-auto" <q-input filled stack-label :label="$t('ecomm.code_o_text_search')" v-model="search" class="q-ml-md">
style="width: 350px; max-width: 100%"
>
<q-input
filled
stack-label
:label="$t('ecomm.code_o_text_search')"
v-model="search"
class="q-ml-md"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="search" /> <q-icon name="search" />
</template> </template>
</q-input> </q-input>
</div> </div>
<div class="row"> <div class="row">
<div <div class="q-pa-md row items-start q-gutter-md" v-for="(product, index) in getProducts()" :key="index">
class="q-pa-md row items-start q-gutter-md"
v-for="(product, index) in getProducts()"
:key="index"
>
<CProductCard :code="product.code" :complete="false" /> <CProductCard :code="product.code" :complete="false" />
</div> </div>
</div> </div>