aggiornamento visualizzazione Ordini e Carrello

This commit is contained in:
Surya Paolo
2023-12-09 19:38:30 +01:00
parent 2b6411eb77
commit 59c03f28f2
13 changed files with 371 additions and 226 deletions

View File

@@ -1032,6 +1032,14 @@ export const shared_consts = {
CANCELED: 10, CANCELED: 10,
}, },
OrderStatStr: {
IN_CORSO: 1,
CONFERMATI: 2,
PAGATI: 3,
COMPLETATI: 4,
CANCELLATI: 5,
},
OrderStatusView: [ OrderStatusView: [
2, 2,
3, 3,

View File

@@ -31,17 +31,6 @@ export default defineComponent({
required: false, required: false,
default: false, default: false,
}, },
order: {
type: Object as PropType<IOrder>,
required: false,
default: () => {
return {
idapp: process.env.APP_ID,
quantity: 1,
idStorehouse: ''
}
},
},
}, },
components: { CTitleBanner, CCardState, CCopyBtn }, components: { CTitleBanner, CCardState, CCopyBtn },
setup(props, { emit }) { setup(props, { emit }) {
@@ -51,7 +40,11 @@ export default defineComponent({
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const products = useProducts() const products = useProducts()
const myorder = toRef(props, 'order') const myorder = ref(<IOrder>{
idapp: process.env.APP_ID,
quantity: 1,
idStorehouse: ''
})
const myproduct = ref(<IProduct>{}) const myproduct = ref(<IProduct>{})
@@ -75,7 +68,7 @@ export default defineComponent({
myorder.value.quantity++ myorder.value.quantity++
} }
function addtoCart() { function addtoCart(add: boolean) {
if (!userStore.isLogged) { if (!userStore.isLogged) {
tools.showNeutralNotif($q, t('ecomm.area_personale')) tools.showNeutralNotif($q, t('ecomm.area_personale'))
@@ -83,20 +76,29 @@ export default defineComponent({
return false return false
} }
// Controlla se esiste già nel carrello il prodotto products.addToCart({ product: myproduct.value, order: myorder.value, addqty: add }).then((ris) => {
if (products.existProductInCart(myproduct.value._id)) {
tools.showNegativeNotif($q, t('ecomm.already_in_cart'))
} else {
products.addToCart({ product: myproduct.value, order: props.order }).then((ris) => {
let strprod = t('ecomm.prodotto') let strprod = t('ecomm.prodotto')
if (myorder.value.quantity > 1) if (myorder.value.quantity > 1 || myorder.value.quantity === 0)
strprod = t('ecomm.prodotti') strprod = t('ecomm.prodotti')
if (ris)
tools.showPositiveNotif($q, t('ecomm.haveadded') + ' ' + myorder.value.quantity + ' ' + strprod + ' ' + t('ecomm.tocart')) let msg = ''
else if (ris === null)
tools.showNegativeNotif($q, t('ecomm.error_cart')) msg = t('ecomm.error_cart')
}) else {
if (myorder.value.quantity === 0) {
msg = t('ecomm.prodotto_tolto')
} else {
msg = t('ecomm.prod_sul_carrello', { strprod, qty: myorder.value.quantity })
} }
}
if (ris === null || myorder.value.quantity === 0)
tools.showNotif($q, msg)
else
tools.showPositiveNotif($q, msg)
})
} }
function getnumstore() { function getnumstore() {
@@ -172,6 +174,10 @@ export default defineComponent({
return (props.complete) ? 'myimgtitle centermydiv' : 'centermydiv' return (props.complete) ? 'myimgtitle centermydiv' : 'centermydiv'
} }
function enableSubQty() {
return myorder.value ? myorder.value.quantity > 0 : true
}
load() load()
return { return {
@@ -190,6 +196,7 @@ export default defineComponent({
tools, tools,
t, t,
storeSelected, storeSelected,
enableSubQty,
} }
} }
}) })

View File

@@ -1,14 +1,23 @@
<template> <template>
<q-card :class="getmycardcl()" v-if="!!myproduct"> <q-card :class="getmycardcl()" v-if="!!myproduct">
<div v-if="myorder"> <div v-if="myorder">myorder: {{ myorder }}</div>
myorder: {{ myorder }}
</div>
<q-img :src="`` + myproduct.img" :alt="myproduct.name" :class="getclimg()"></q-img> <q-img
:src="`` + myproduct.img"
:alt="myproduct.name"
:class="getclimg()"
></q-img>
<q-card-section> <q-card-section>
<q-btn v-if="!complete" fab color="primary" icon="fas fa-info" class="absolute" <q-btn
style="top: 0; right: 12px; transform: translateY(-50%);" :to="`/product/` + myproduct.code" /> v-if="!complete"
fab
color="primary"
icon="fas fa-info"
class="absolute"
style="top: 0; right: 12px; transform: translateY(-50%)"
:to="`/product/` + myproduct.code"
/>
<div class="row items-center centeritems"> <div class="row items-center centeritems">
<div class="text-h7 boldhigh"> <div class="text-h7 boldhigh">
@@ -24,20 +33,34 @@
<div v-if="complete && myproduct.producer.city"> <div v-if="complete && myproduct.producer.city">
<div class="text-grey text-title row items-center q-mt-sm"> <div class="text-grey text-title row items-center q-mt-sm">
<q-icon name="map" class="q-mr-xs" /> <q-icon name="map" class="q-mr-xs" />
{{ t('products.origine') }}: <span class="text-blue q-ml-xs text-h8"> {{ myproduct.producer.city }} ({{ {{ t('products.origine') }}:
<span class="text-blue q-ml-xs text-h8">
{{ myproduct.producer.city }} ({{
myproduct.producer.region myproduct.producer.region
}})</span> }})</span
>
</div> </div>
</div> </div>
<div v-if="complete && myproduct.producer.name" class="text-grey text-title row items-center"> <div
v-if="complete && myproduct.producer.name"
class="text-grey text-title row items-center"
>
<q-icon name="place" class="q-mr-xs" /> <q-icon name="place" class="q-mr-xs" />
{{ t('products.producer') }}: <span class="text-black q-ml-xs text-h8"> {{ myproduct.producer.name }}</span> {{ t('products.producer') }}:
<span class="text-black q-ml-xs text-h8">
{{ myproduct.producer.name }}</span
>
</div> </div>
<div v-if="complete && myproduct.weight" class="text-grey text-title row items-center"> <div
v-if="complete && myproduct.weight"
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" />
{{ t('products.weight') }}: <span class="text-black q-ml-xs text-h8"> {{ myproduct.weight }} {{ {{ t('products.weight') }}:
tools.getUnitsMeasure(myproduct.unit, true) }}</span> <span class="text-black q-ml-xs text-h8">
{{ myproduct.weight }}
{{ tools.getUnitsMeasure(myproduct.unit, true) }}</span
>
</div> </div>
</div> </div>
@@ -45,33 +68,83 @@
<div class="row q-mb-sm no-wrap items-center centeritems"> <div class="row q-mb-sm no-wrap items-center centeritems">
<div class="text-price no-wrap"> <div class="text-price no-wrap">
<span v-if="!!myproduct.price"> {{ myproduct.price ? myproduct.price.toFixed(2) : 0 }}</span> <span v-if="!!myproduct.price"
<span v-if="!!myproduct.after_price">{{ myproduct.after_price }}</span> > {{ myproduct.price ? myproduct.price.toFixed(2) : 0 }}</span
>
<span v-if="!!myproduct.after_price">{{
myproduct.after_price
}}</span>
</div> </div>
</div> </div>
<div class="row q-mb-sm no-wrap items-center centeritems"> <div class="row q-mb-sm no-wrap items-center centeritems">
<q-btn round size="xs" text-color="grey" icon="fas fa-minus" @click="decqty()"></q-btn> <!--<q-btn
<q-field outlined dense style="width: 40px; height: 30px;" class="q-mx-xs"> round
size="xs"
text-color="grey"
icon="fas fa-minus"
@click="decqty()"
></q-btn>-->
<q-btn
icon="fas fa-cart-arrow-down"
:color="enableSubQty() ? 'negative': 'grey'"
:disable="checkifCartDisable() || !enableSubQty()"
rounded
size="md"
:label="t('products.subcart', { qta: 1 })"
@click="addtoCart(false)"
>
</q-btn>
<q-field
outlined
dense
style="width: 40px; height: 30px"
class="q-mx-xs"
>
<template v-slot:control> <template v-slot:control>
<div class="self-center no-outline" tabindex="0">{{ order.quantity }}</div> <div class="self-center no-outline" tabindex="0">
{{ myorder.quantity }}
</div>
</template> </template>
</q-field> </q-field>
<q-btn round size="xs" text-color="grey" icon="fas fa-plus" @click="addqty()"></q-btn>
<!--<q-btn round size="xs" text-color="grey" icon="fas fa-plus" @click="addqty()"></q-btn>-->
<q-btn
icon-right="fas fa-cart-plus"
color="positive"
:disable="checkifCartDisable()"
rounded
size="md"
:label="t('products.addcart', { qta: 1 })"
@click="addtoCart(true)"
>
</q-btn>
</div> </div>
<div v-if="complete || getnumstore() > 1"> <div v-if="complete || getnumstore() > 1">
<div class="text-blue text-title row items-center q-mr-md centeritems"> <div class="text-blue text-title row items-center q-mr-md centeritems">
<q-icon size="sm" name="fas fa-shipping-fast" class="q-mr-sm" /> <q-icon size="sm" name="fas fa-shipping-fast" class="q-mr-sm" />
{{ t('products.ritiro_presso') }}: {{ t('products.ritiro_presso') }}:
</div> </div>
<div class="text-green-6 text-title row items-center q-my-sm centeritems"> <div
class="text-green-6 text-title row items-center q-my-sm centeritems"
>
<div v-if="getnumstore() > 1"> <div v-if="getnumstore() > 1">
<q-select :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" outlined v-model="storeSelected" <q-select
:options="getStorehouses()" :label="t('products.magazzino') + `:`" emit-value map-options> :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="storeSelected"
:options="getStorehouses()"
:label="t('products.magazzino') + `:`"
emit-value
map-options
>
</q-select> </q-select>
</div> </div>
<div v-else> <div v-else>
<span class="text-title text-center">{{ getSingleStorehouse() }}</span> <span class="text-title text-center">{{
getSingleStorehouse()
}}</span>
</div> </div>
</div> </div>
</div> </div>
@@ -80,9 +153,6 @@
<q-separator /> <q-separator />
<q-card-actions vertical align="center"> <q-card-actions vertical align="center">
<q-btn icon="fas fa-cart-plus" color="primary" :disable="checkifCartDisable()" rounded size="md"
:label="t('products.addcart', {qta: order.quantity})" @click="addtoCart()">
</q-btn>
<!-- <!--
<q-btn :icon="iconWhishlist(myproduct)" flat color="primary" rounded label="Lista Desideri"> <q-btn :icon="iconWhishlist(myproduct)" flat color="primary" rounded label="Lista Desideri">
</q-btn> </q-btn>

View File

@@ -1,10 +1,10 @@
<template> <template>
<div class="q-pa-xs q-gutter-xs"> <div class="q-pa-xs q-gutter-xs">
<div class="row items-center justify-evenly no-wrap"> <div v-if="order.product" class="row items-center justify-evenly no-wrap">
<div class="col-2 text-h6 ellipsis"> <div class="col-2 text-h6 ellipsis">
<img <img
v-if="true" :src="`` + order.product.img" :alt="order.product.name" :class="myimgclass"> v-if="order.product && order.product.img" :src="`` + order.product.img" :alt="order.product.name" :class="myimgclass">
</div> </div>
<div class="col-4 q-ml-xs"> <div class="col-4 q-ml-xs">
{{ order.product.name }} {{ order.product.name }}

View File

@@ -1,14 +1,14 @@
<template> <template>
<CMyPage title="Ordini Ufficio" imgbackground="images/produttori.jpg" sizes="max-height: 120px"> <CMyPage title="Ordini" imgbackground="images/produttori.jpg" sizes="max-height: 120px">
<span>{{ setmeta({ <span>{{ setmeta({
title: 'Ordini Ufficio', title: 'Ordini',
description: "", description: "",
keywords: '' } ) }} keywords: '' } ) }}
</span> </span>
<div class="q-ma-sm q-gutter-sm q-pa-xs"> <div class="q-ma-sm q-gutter-sm q-pa-xs">
<CTitleBanner title="Ordini Ufficio"></CTitleBanner> <CTitleBanner title="Ordini"></CTitleBanner>
<!--<CGridTableRec prop_mytable="orderscart" <CGridTableRec prop_mytable="orderscart"
prop_mytitle="Lista Ordini" prop_mytitle="Lista Ordini"
:prop_mycolumns="getcolorderscart" :prop_mycolumns="getcolorderscart"
prop_colkey="name" prop_colkey="name"
@@ -16,7 +16,7 @@
noresultLabel="Il filtro selezionato non ha trovato nessun risultato"> noresultLabel="Il filtro selezionato non ha trovato nessun risultato">
</CGridTableRec> </CGridTableRec>
-->
</div> </div>
</CMyPage> </CMyPage>
</template> </template>

View File

@@ -39,7 +39,7 @@ function getRoutesEcomm(site: ISites) {
level_parent: 0, level_parent: 0,
level_child: 0.5, level_child: 0.5,
}, },
{ /*{
active: true, active: true,
order: 35, order: 35,
path: '/admin/ecommerce/orders', path: '/admin/ecommerce/orders',
@@ -51,7 +51,7 @@ function getRoutesEcomm(site: ISites) {
level_parent: 0, level_parent: 0,
level_child: 0.5, level_child: 0.5,
onlyDepartment: true onlyDepartment: true
}, },*/
] ]
const routes_admin_ecommerce: IListRoutes[] = [ const routes_admin_ecommerce: IListRoutes[] = [
@@ -111,7 +111,7 @@ function getRoutesEcomm(site: ISites) {
onlyManager: true, onlyManager: true,
onlyEditor: true onlyEditor: true
}, },
{ /*{
active: true, active: true,
order: 31, order: 31,
path: '/admin/ecommerce/orders', path: '/admin/ecommerce/orders',
@@ -124,7 +124,7 @@ function getRoutesEcomm(site: ISites) {
level_child: 0.5, level_child: 0.5,
onlyManager: true, onlyManager: true,
onlyEditor: true onlyEditor: true
}, },*/
{ {
active: true, active: true,
order: 32, order: 32,

View File

@@ -69,7 +69,8 @@ const msg_it = {
theme: 'Tema', theme: 'Tema',
ritiro_presso: 'Ritiro presso', ritiro_presso: 'Ritiro presso',
magazzino: 'Magazzino', magazzino: 'Magazzino',
addcart: 'Aggiungi {qta} al Carrello', addcart: '+{qta}',
subcart: '-{qta}',
origine: 'Origine', origine: 'Origine',
ingredienti: 'ingredienti', ingredienti: 'ingredienti',
valori_nutrizionali: 'Valori Nutrizionali', valori_nutrizionali: 'Valori Nutrizionali',
@@ -1611,9 +1612,14 @@ const msg_it = {
area_personale: 'Devi prima accedere alla tua Area Personale', area_personale: 'Devi prima accedere alla tua Area Personale',
prodotto: 'prodotto', prodotto: 'prodotto',
prodotti: 'prodotti', prodotti: 'prodotti',
haveadded: 'Hai Aggiunto', prod_sul_carrello: '{qty} {strprod} sul Carrello',
prodotto_tolto: 'Il prodotto è stato tolto dal Carrello',
error_cart: 'Errore durante l\'inserimento del prodotto sul carrello, riprovare.', error_cart: 'Errore durante l\'inserimento del prodotto sul carrello, riprovare.',
tocart: 'al Carrello', completa_ord: 'Completa l\'Ordine',
conferma_acq: 'Confermare l\'ordine di acquisto di {qty} prodotti ?',
order: 'Ordine',
ord_confirmed: 'Ordine Confermato',
}, },
install: { install: {
Installazione_Sito: 'Installazione Sito', Installazione_Sito: 'Installazione Sito',

View File

@@ -32,17 +32,17 @@ export const useProducts = defineStore('Products', {
return state.orders return state.orders
}, },
getOrdersCart: (state: IProductsState) => (tipoord: string): IOrderCart[] | undefined => { getOrdersCart: (state: IProductsState) => (tipoord: number): IOrderCart[] | undefined => {
console.log('state.orders', state.orders) console.log('state.orders', state.orders)
if (tipoord === 'incorso') if (tipoord === shared_consts.OrderStatStr.IN_CORSO)
return state.orders.filter((rec: IOrderCart) => (rec.status ? rec.status : 0) <= shared_consts.OrderStatus.CHECKOUT_SENT) return state.orders.filter((rec: IOrderCart) => (rec.status ? rec.status : 0) <= shared_consts.OrderStatus.CHECKOUT_SENT)
else if (tipoord === 'confermati') else if (tipoord === shared_consts.OrderStatStr.CONFERMATI)
return state.orders.filter((rec: IOrderCart) => rec.status === shared_consts.OrderStatus.ORDER_CONFIRMED) return state.orders.filter((rec: IOrderCart) => rec.status === shared_consts.OrderStatus.ORDER_CONFIRMED)
else if (tipoord === 'pagati') else if (tipoord === shared_consts.OrderStatStr.PAGATI)
return state.orders.filter((rec: IOrderCart) => rec.status === shared_consts.OrderStatus.PAYED) return state.orders.filter((rec: IOrderCart) => rec.status === shared_consts.OrderStatus.PAYED)
else if (tipoord === 'completati') else if (tipoord === shared_consts.OrderStatStr.COMPLETATI)
return state.orders.filter((rec: IOrderCart) => rec.status === shared_consts.OrderStatus.RECEIVED) return state.orders.filter((rec: IOrderCart) => rec.status === shared_consts.OrderStatus.RECEIVED)
else if (tipoord === 'cancellati') else if (tipoord === shared_consts.OrderStatStr.CANCELLATI)
return state.orders.filter((rec: IOrderCart) => rec.status === shared_consts.OrderStatus.CANCELED) return state.orders.filter((rec: IOrderCart) => rec.status === shared_consts.OrderStatus.CANCELED)
}, },
@@ -54,6 +54,14 @@ export const useProducts = defineStore('Products', {
} }
return false return false
}, },
getOrderProductInCart: (state: IProductsState) => (idproduct: string): IOrder | null => {
// console.log('.cart.items', this.cart.items)
if (state.cart.items) {
const ris = state.cart.items.find((item: IBaseOrder) => item.order.idProduct === idproduct)
return ris ? ris.order : null
}
return null
},
getRecordEmpty: (state: IProductsState) => (): IProduct => { getRecordEmpty: (state: IProductsState) => (): IProduct => {
@@ -258,7 +266,7 @@ export const useProducts = defineStore('Products', {
}) })
}, },
async addToCart({ product, order }: { product: IProduct, order: IOrder }) { async addToCart({ product, order, addqty }: { product: IProduct, order: IOrder, addqty: boolean }) {
const userStore = useUserStore() const userStore = useUserStore()
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
@@ -266,9 +274,41 @@ export const useProducts = defineStore('Products', {
if (!globalStore.site.confpages.enableEcommerce) if (!globalStore.site.confpages.enableEcommerce)
return null return null
const neworder = this.createOrderByProduct(product, order) let neworder = null;
if (!neworder.idStorehouse) // Controlla se esiste già nel carrello, allora semplicemente aggiungerò la quantità:
if (this.existProductInCart(product._id)) {
const ordcart = this.getOrderProductInCart(product._id)
if (ordcart) {
if (!addqty && ordcart.quantity === 1) {
// sto per rimuovere l'ultimo pezzo, quindi cancello direttamente
const risrem = await this.removeFromCart({ order: ordcart })
if (risrem) {
order.quantity = 0
return true
} else {
return false
}
}
return await this.addSubQtyToItem({
addqty,
subqty: !addqty,
order: ordcart,
}).then((newqty) => {
order.quantity = newqty
})
}
} else {
if (order.quantity === 0)
order.quantity = 1
neworder = this.createOrderByProduct(product, order)
}
if (neworder && !neworder.idStorehouse)
return new Types.AxiosError(serv_constants.RIS_CODE_ERR, null, toolsext.ERR_GENERICO, 'Nessuno Store') return new Types.AxiosError(serv_constants.RIS_CODE_ERR, null, toolsext.ERR_GENERICO, 'Nessuno Store')
console.log('addToCart', 'userid=', userStore.my._id, neworder) console.log('addToCart', 'userid=', userStore.my._id, neworder)
@@ -339,8 +379,6 @@ export const useProducts = defineStore('Products', {
if (!globalStore.site.confpages.enableEcommerce) if (!globalStore.site.confpages.enableEcommerce)
return null return null
// console.log('addSubQtyToItem', 'userid=', userStore.my._id, order)
let ris = null let ris = null
ris = await Api.SendReq('/cart/' + userStore.my._id + '/cartstatus', 'POST', { cart_id, status }) ris = await Api.SendReq('/cart/' + userStore.my._id + '/cartstatus', 'POST', { cart_id, status })
@@ -370,8 +408,6 @@ export const useProducts = defineStore('Products', {
if (!globalStore.site.confpages.enableEcommerce) if (!globalStore.site.confpages.enableEcommerce)
return null return null
// console.log('addSubQtyToItem', 'userid=', userStore.my._id, order)
let ris = null let ris = null
ris = await Api.SendReq('/cart/' + userStore.my._id + '/orderstatus', 'POST', { order_id, status }) ris = await Api.SendReq('/cart/' + userStore.my._id + '/orderstatus', 'POST', { order_id, status })

View File

@@ -37,7 +37,7 @@ import { useCircuitStore } from '@store/CircuitStore'
import { routesAdmin } from '@src/router/routesAdmin' import { routesAdmin } from '@src/router/routesAdmin'
import { routesECommerce } from '@src/router/routesECommerce' import { routesECommerce } from '@src/router/routesECommerce'
import LandingFooter from '@src/components/LandingFooter/LandingFooter' import LandingFooter from '@src/components/LandingFooter/LandingFooter'
import { useProducts } from '@store/Products'
const stateConnDefault = 'online' const stateConnDefault = 'online'
@@ -284,6 +284,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
const messageStore = useMessageStore() const messageStore = useMessageStore()
const notifStore = useNotifStore() const notifStore = useNotifStore()
if (table === costanti.TABEVENTS) if (table === costanti.TABEVENTS)
return calendarStore.eventlist return calendarStore.eventlist
else if (table === 'operators') else if (table === 'operators')
@@ -1498,6 +1499,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
const userStore = useUserStore() const userStore = useUserStore()
const calendarStore = useCalendarStore() const calendarStore = useCalendarStore()
const circuitStore = useCircuitStore() const circuitStore = useCircuitStore()
const Products = useProducts()
// console.log('calendarStore: loadAfterLogin') // console.log('calendarStore: loadAfterLogin')
// Load local data // Load local data
const showall = userStore.isAdmin || userStore.isManager ? '1' : '0' const showall = userStore.isAdmin || userStore.isManager ? '1' : '0'
@@ -1550,13 +1553,13 @@ export const useGlobalStore = defineStore('GlobalStore', {
// console.log('res.data.cart', res.data.cart) // console.log('res.data.cart', res.data.cart)
/* if (res.data.cart) if (res.data.cart)
Products.cart = (res.data.cart) ? { ...res.data.cart } : {} Products.cart = (res.data.cart) ? { ...res.data.cart } : {}
else else
Products.cart = { items: [], totalPrice: 0, totalQty: 0, userId: '' } Products.cart = { items: [], totalPrice: 0, totalQty: 0, userId: '' }
Products.orders = (res.data.orders) ? [...res.data.orders] : [] Products.orders = (res.data.orders) ? [...res.data.orders] : []
*/
if (showall) { if (showall) {
this.newstosent = (res.data.newstosent) ? [...res.data.newstosent] : [] this.newstosent = (res.data.newstosent) ? [...res.data.newstosent] : []

View File

@@ -136,7 +136,7 @@ export default defineComponent({
function completeOrder() { function completeOrder() {
$q.dialog({ $q.dialog({
message: 'Confermare l\'ordine di acquisto di ' + myTotalQty() + ' prodotti ?', message: t('ecomm.conferma_acq', { qty: myTotalQty() }),
ok: { ok: {
label: t('dialog.yes'), label: t('dialog.yes'),
push: true push: true
@@ -144,13 +144,13 @@ export default defineComponent({
cancel: { cancel: {
label: t('dialog.cancel') label: t('dialog.cancel')
}, },
title: 'Ordine' title: t('ecomm.order')
}).onOk(async () => { }).onOk(async () => {
const status = shared_consts.OrderStatus.CHECKOUT_SENT const status = shared_consts.OrderStatus.CHECKOUT_SENT
statusnow.value = await productStore.UpdateStatusCart({ cart_id: mycart.value._id, status }) statusnow.value = await productStore.UpdateStatusCart({ cart_id: mycart.value._id, status })
if (statusnow.value === status) { if (statusnow.value === status) {
tools.showPositiveNotif($q, 'Ordine Confermato') tools.showPositiveNotif($q, t('ecomm.ord_confirmed'))
setTimeout(() => { setTimeout(() => {
$router.push('/orderinfo') $router.push('/orderinfo')
}, 2000) }, 2000)

View File

@@ -4,39 +4,53 @@
<div class="panel"> <div class="panel">
<div> <div>
<div class="container"> <div class="container">
<div class="q-pa-sm col items-start q-gutter-xs" v-for="(itemorder, index) in getItemsCart()" :key="index"> <div
class="q-pa-sm col items-start q-gutter-xs"
v-for="(itemorder, index) in getItemsCart()"
:key="index"
>
<CSingleCart :order="itemorder.order" :showall="true" /> <CSingleCart :order="itemorder.order" :showall="true" />
</div> </div>
</div> </div>
<q-separator></q-separator> <q-separator></q-separator>
<div class="col-6 q-mr-sm" style="text-align: right"> <div class="col-6 q-mr-sm" style="text-align: right">
<span class="text-grey q-mr-xs">Totale:</span> <span <span class="text-grey q-mr-xs">Totale:</span>
class="text-subtitle1 q-mr-sm "> {{ (myTotalPrice()) }}</span> <span class="text-subtitle1 q-mr-sm"> {{ myTotalPrice() }}</span>
</div> </div>
<q-input v-if="getNumItems() > 0" v-model="note" style="max-width: 400px;" label="Scrivi qui per eventuali note o chiarimenti:" <q-input
filled dense v-if="getNumItems() > 0"
v-model="note"
style="max-width: 400px"
label="Scrivi qui per eventuali note o chiarimenti:"
filled
dense
debounce="1000" debounce="1000"
autogrow autogrow
@input="change_field('note')"> @input="change_field('note')"
>
</q-input> </q-input>
<br> <br />
</div> </div>
<q-stepper-navigation> <q-stepper-navigation>
<q-btn v-if="statusnow < shared_consts.OrderStatus.CHECKOUT_SENT" rounded icon="fas fa-shopping-cart" color="green" label="Completa l'Ordine" class="q-mb-sm" <q-btn
v-if="statusnow < shared_consts.OrderStatus.CHECKOUT_SENT"
rounded
icon="fas fa-shopping-cart"
color="green"
:label="$t('ecomm.completa_ord')"
class="q-mb-sm"
:disabled="myTotalQty() < 1" :disabled="myTotalQty() < 1"
@click="completeOrder"></q-btn> @click="completeOrder"
></q-btn>
</q-stepper-navigation> </q-stepper-navigation>
</div> </div>
</q-page> </q-page>
</template> </template>
<script lang="ts" src="./checkOut.ts"> <script lang="ts" src="./checkOut.ts">
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@@ -34,7 +34,7 @@ export default defineComponent({
const conferma_carrello = ref(false) const conferma_carrello = ref(false)
const conferma_ordine = ref(false) const conferma_ordine = ref(false)
const taborders = ref('incorso') const taborders = ref(shared_consts.OrderStatStr.IN_CORSO)
const statusnow = ref(0) const statusnow = ref(0)
const arrnumstatus = ref(<any[]>[]) const arrnumstatus = ref(<any[]>[])
const columns = ref(<any>[ const columns = ref(<any>[
@@ -93,7 +93,9 @@ export default defineComponent({
} }
function getOrdersCart(): IOrderCart[] | undefined { function getOrdersCart(): IOrderCart[] | undefined {
return productStore.getOrdersCart(taborders.value) const ris = productStore.getOrdersCart(taborders.value)
console.log(ris)
return ris
} }
function getAllOrdersCart() { function getAllOrdersCart() {
@@ -102,9 +104,11 @@ export default defineComponent({
function updateorders() { function updateorders() {
myorderscart.value = getOrdersCart() myorderscart.value = getOrdersCart()
for (const ordercart of myorderscart.value!) { if (myorderscart.value) {
for (const ordercart of myorderscart.value) {
myarrrec.value[ordercart._id] = Object.keys(ordercart) myarrrec.value[ordercart._id] = Object.keys(ordercart)
} }
}
const allorders = getAllOrdersCart() const allorders = getAllOrdersCart()
for (const status of [2, 3, 4, 6, 10]) { for (const status of [2, 3, 4, 6, 10]) {

View File

@@ -5,36 +5,33 @@
<q-tabs v-model="taborders" inline-label class="text-blue"> <q-tabs v-model="taborders" inline-label class="text-blue">
<q-tab <q-tab
class="text-black" class="text-black"
v-if="arrnumstatus[2] > 0" :name="shared_consts.OrderStatStr.IN_CORSO"
name="incorso"
icon="fas fa-tasks" icon="fas fa-tasks"
:label="`(` + arrnumstatus[2] + `) in Corso`" :label="`(` + arrnumstatus[2] + `) in Corso`"
/> />
<q-tab <q-tab
class="text-blue" class="text-blue"
v-if="arrnumstatus[3] > 0" :name="shared_consts.OrderStatStr.CONFERMATI"
name="confermati"
icon="fas fa-calendar" icon="fas fa-calendar"
:label="`(` + arrnumstatus[3] + `) Confermati`" :label="`(` + arrnumstatus[3] + `) Confermati`"
/> />
<q-tab <q-tab
class="text-green" class="text-green"
v-if="arrnumstatus[4] > 0" :name="shared_consts.OrderStatStr.PAGATI"
name="pagati"
icon="fas fa-calendar" icon="fas fa-calendar"
:label="`(` + arrnumstatus[4] + `) Pagati`" :label="`(` + arrnumstatus[4] + `) Pagati`"
/> />
<q-tab <q-tab
class="text-blue-grey-8" class="text-blue-grey-8"
v-if="arrnumstatus[6] > 0" v-if="arrnumstatus[6] > 0"
name="completati" :name="shared_consts.OrderStatStr.COMPLETATI"
icon="fas fa-check" icon="fas fa-check"
:label="`(` + arrnumstatus[6] + `) Completati`" :label="`(` + arrnumstatus[6] + `) Completati`"
/> />
<q-tab <q-tab
class="text-red" class="text-red"
v-if="arrnumstatus[10] > 0" v-if="arrnumstatus[10] > 0"
name="cancellati" :name="shared_consts.OrderStatStr.CANCELLATI"
icon="delete" icon="delete"
:label="`(` + arrnumstatus[10] + `) Cancellati`" :label="`(` + arrnumstatus[10] + `) Cancellati`"
/> />
@@ -46,7 +43,7 @@
:hide-header="$q.screen.lt.sm" :hide-header="$q.screen.lt.sm"
:columns="columns" :columns="columns"
row-key="numorder" row-key="numorder"
:data="getOrdersCart()" :rows="getOrdersCart()"
> >
<template v-if="$q.screen.lt.sm" v-slot:item="props"> <template v-if="$q.screen.lt.sm" v-slot:item="props">
<div class="q-pa-xs col-xs-12 col-sm-6 col-md-4"> <div class="q-pa-xs col-xs-12 col-sm-6 col-md-4">
@@ -59,7 +56,7 @@
<q-item-section side> <q-item-section side>
<q-item-label v-if="col.name === 'created_at'" caption <q-item-label v-if="col.name === 'created_at'" caption
>{{ tools.getstrDateTime(col.value) }} >{{ tools.getstrDateTime(col.value) }}
<span v-if="taborders === 'completati'"> <span v-if="taborders === shared_consts.OrderStatStr.COMPLETATI">
<br />Completato il: <br />Completato il:
{{ tools.getstrDateTime(props.row.completed_at) }} {{ tools.getstrDateTime(props.row.completed_at) }}
</span> </span>
@@ -104,7 +101,7 @@
</q-td> </q-td>
<q-td key="created_at" :props="props"> <q-td key="created_at" :props="props">
{{ tools.getstrDateTime(props.row.created_at) }} {{ tools.getstrDateTime(props.row.created_at) }}
<span v-if="taborders === 'completati'"> <span v-if="taborders === shared_consts.OrderStatStr.COMPLETATI">
<br />Completato il:<br />{{ <br />Completato il:<br />{{
tools.getstrDateTime(props.row.completed_at) tools.getstrDateTime(props.row.completed_at)
}} }}