- 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,
PROD: {
GAS: 1,
BOTTEGA: 2,
},
UNITS_OF_MEASURE: {
NESSUNO: 0,
GRAMMI: 1,

View File

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

View File

@@ -114,7 +114,7 @@ export default defineComponent({
let ret = true
if (slide.value === '1') {
// 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') {
// Username
ret = !signup.username || (inputUsername.value && inputUsername.value.hasError)

View File

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

View File

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

View File

@@ -62,6 +62,7 @@ const msg_it = {
quantity: 'Quantità',
quantityAvailable: 'Disponibili',
stockQty: 'In Magazzino',
minBuyQty: 'Qta minima acquistabile',
bookableQty: 'Prenotabili',
bookableAvailableQty: 'Disponib. Prenotabili',
weight: 'Peso',
@@ -79,6 +80,8 @@ const msg_it = {
note: 'Note',
codice_EAN: 'EAN',
barcode: 'BarCode',
price_acquistato: 'Prezzo Acquistato',
vegan: 'Vegano',
},
storehouses: {
name: 'Magazzino',
@@ -1669,12 +1672,17 @@ const msg_it = {
qta_in_attesa: '(Ordinati In attesa {qty})',
sconto_applicato: 'Risparmi {risparmio} € !',
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',
qta_prenotate_in_attesa: '(Preordinate In attesa {qty})',
},
},
gas: {
dataora_chiusura_ordini: 'Data Chiusura Ordini',
dataora_ritiro: 'Data Ritiro Prodotti',
}
};
export default msg_it;

View File

@@ -449,7 +449,7 @@ export const colTableGasordine = [
AddCol({ name: 'referente', label_trans: 'store.referent' }),
AddCol({ name: 'city', label_trans: 'store.city' }),
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(DeleteRec),
AddCol(DuplicateRec),
@@ -1957,7 +1957,7 @@ export const colTableIscrittiArcadei = [
export const colTableProducts = [
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: 'barcode', label_trans: 'products.barcode' }),
AddCol({ name: 'name', label_trans: 'products.name' }),
@@ -1977,6 +1977,12 @@ export const colTableProducts = [
fieldtype: costanti.FieldType.multiselect,
jointable: 'storehouses',
}),
AddCol({
name: 'idGasordines',
label_trans: 'gasordine.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'gasordines',
}),
AddCol({
name: 'idProvider',
label_trans: 'provider.name',
@@ -2002,11 +2008,12 @@ export const colTableProducts = [
fieldtype: costanti.FieldType.multiselect,
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: 'color', label_trans: 'products.color' }),
AddCol({ name: 'size', label_trans: 'products.size' }),
AddCol({
/*AddCol({
name: 'quantityAvailable',
label_trans: 'products.quantityAvailable',
fieldtype: costanti.FieldType.number
@@ -2015,6 +2022,11 @@ export const colTableProducts = [
name: 'bookableAvailableQty',
label_trans: 'products.bookableAvailableQty',
fieldtype: costanti.FieldType.number
}), */
AddCol({
name: 'minBuyQty',
label_trans: 'products.minBuyQty',
fieldtype: costanti.FieldType.number
}),
AddCol({
name: 'stockQty',

View File

@@ -20,8 +20,18 @@ export const useProducts = defineStore('Products', {
}),
getters: {
getProducts: (state: IProductsState) => (): IProduct[] => {
return state.products
getProducts: (state: IProductsState) => (cosa?: number): IProduct[] => {
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) => {
@@ -55,14 +65,15 @@ export const useProducts = defineStore('Products', {
getProductById: (state: IProductsState) => (id: string): IProduct => {
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 => {
const prod = state.products.find((prod: IProduct) => prod.code === code)
return prod ? prod : {
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,
idProducer: '',
idStorehouses: [],
idGasordines: [],
idScontisticas: [],
scontisticas: [],
gasordines: [],
idProvider: '',
producer: {},
storehouses: [],
@@ -232,6 +245,7 @@ export const useProducts = defineStore('Products', {
quantityAvailable: 0,
bookableAvailableQty: 0,
stockQty: 0,
minBuyQty: 1,
bookableQty: 0,
canBeShipped: false,
QuantitaOrdinateInAttesa: 0,
@@ -645,7 +659,7 @@ export const useProducts = defineStore('Products', {
if (ris && ris.myord == null) {
msg = t('ecomm.prodotto_tolto')
tools.showNotif($q, msg)
return
return
}
if (ris === null || ris.myord == null) {
msg = t('ecomm.error_cart')

View File

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

View File

@@ -1,29 +1,43 @@
<template>
<q-page>
<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="q-gutter-y-md column text-center q-mx-auto"
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"
>
<div class="q-gutter-y-md column text-center q-mx-auto" 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>
<q-icon name="search" />
</template>
</q-input>
</div>
<div class="row">
<div
class="q-pa-md row items-start q-gutter-md"
v-for="(product, index) in getProducts()"
:key="index"
>
<div class="q-pa-md row items-start q-gutter-md" v-for="(product, index) in getProducts()" :key="index">
<CProductCard :code="product.code" :complete="false" />
</div>
</div>