aggiornamento visualizzazione Ordini e Carrello
This commit is contained in:
@@ -1032,6 +1032,14 @@ export const shared_consts = {
|
||||
CANCELED: 10,
|
||||
},
|
||||
|
||||
OrderStatStr: {
|
||||
IN_CORSO: 1,
|
||||
CONFERMATI: 2,
|
||||
PAGATI: 3,
|
||||
COMPLETATI: 4,
|
||||
CANCELLATI: 5,
|
||||
},
|
||||
|
||||
OrderStatusView: [
|
||||
2,
|
||||
3,
|
||||
|
||||
@@ -31,17 +31,6 @@ export default defineComponent({
|
||||
required: 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 },
|
||||
setup(props, { emit }) {
|
||||
@@ -51,7 +40,11 @@ export default defineComponent({
|
||||
const globalStore = useGlobalStore()
|
||||
const products = useProducts()
|
||||
|
||||
const myorder = toRef(props, 'order')
|
||||
const myorder = ref(<IOrder>{
|
||||
idapp: process.env.APP_ID,
|
||||
quantity: 1,
|
||||
idStorehouse: ''
|
||||
})
|
||||
|
||||
const myproduct = ref(<IProduct>{})
|
||||
|
||||
@@ -75,7 +68,7 @@ export default defineComponent({
|
||||
myorder.value.quantity++
|
||||
}
|
||||
|
||||
function addtoCart() {
|
||||
function addtoCart(add: boolean) {
|
||||
|
||||
if (!userStore.isLogged) {
|
||||
tools.showNeutralNotif($q, t('ecomm.area_personale'))
|
||||
@@ -83,20 +76,29 @@ export default defineComponent({
|
||||
return false
|
||||
}
|
||||
|
||||
// Controlla se esiste già nel carrello il prodotto
|
||||
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) => {
|
||||
products.addToCart({ product: myproduct.value, order: myorder.value, addqty: add }).then((ris) => {
|
||||
let strprod = t('ecomm.prodotto')
|
||||
if (myorder.value.quantity > 1)
|
||||
if (myorder.value.quantity > 1 || myorder.value.quantity === 0)
|
||||
strprod = t('ecomm.prodotti')
|
||||
if (ris)
|
||||
tools.showPositiveNotif($q, t('ecomm.haveadded') + ' ' + myorder.value.quantity + ' ' + strprod + ' ' + t('ecomm.tocart'))
|
||||
else
|
||||
tools.showNegativeNotif($q, t('ecomm.error_cart'))
|
||||
})
|
||||
|
||||
let msg = ''
|
||||
if (ris === null)
|
||||
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() {
|
||||
@@ -172,6 +174,10 @@ export default defineComponent({
|
||||
return (props.complete) ? 'myimgtitle centermydiv' : 'centermydiv'
|
||||
}
|
||||
|
||||
function enableSubQty() {
|
||||
return myorder.value ? myorder.value.quantity > 0 : true
|
||||
}
|
||||
|
||||
load()
|
||||
|
||||
return {
|
||||
@@ -190,6 +196,7 @@ export default defineComponent({
|
||||
tools,
|
||||
t,
|
||||
storeSelected,
|
||||
enableSubQty,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,14 +1,23 @@
|
||||
<template>
|
||||
<q-card :class="getmycardcl()" v-if="!!myproduct">
|
||||
<div v-if="myorder">
|
||||
myorder: {{ myorder }}
|
||||
</div>
|
||||
<div v-if="myorder">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-btn v-if="!complete" fab color="primary" icon="fas fa-info" class="absolute"
|
||||
style="top: 0; right: 12px; transform: translateY(-50%);" :to="`/product/` + myproduct.code" />
|
||||
<q-btn
|
||||
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="text-h7 boldhigh">
|
||||
@@ -24,20 +33,34 @@
|
||||
<div v-if="complete && myproduct.producer.city">
|
||||
<div class="text-grey text-title row items-center q-mt-sm">
|
||||
<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
|
||||
}})</span>
|
||||
}})</span
|
||||
>
|
||||
</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" />
|
||||
{{ 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 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" />
|
||||
{{ t('products.weight') }}: <span class="text-black q-ml-xs text-h8"> {{ myproduct.weight }} {{
|
||||
tools.getUnitsMeasure(myproduct.unit, true) }}</span>
|
||||
{{ t('products.weight') }}:
|
||||
<span class="text-black q-ml-xs text-h8">
|
||||
{{ myproduct.weight }}
|
||||
{{ tools.getUnitsMeasure(myproduct.unit, true) }}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -45,33 +68,83 @@
|
||||
|
||||
<div class="row q-mb-sm no-wrap items-center centeritems">
|
||||
<div class="text-price no-wrap">
|
||||
<span v-if="!!myproduct.price">€ {{ myproduct.price ? myproduct.price.toFixed(2) : 0 }}</span>
|
||||
<span v-if="!!myproduct.after_price">{{ myproduct.after_price }}</span>
|
||||
<span v-if="!!myproduct.price"
|
||||
>€ {{ myproduct.price ? myproduct.price.toFixed(2) : 0 }}</span
|
||||
>
|
||||
<span v-if="!!myproduct.after_price">{{
|
||||
myproduct.after_price
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<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-field outlined dense style="width: 40px; height: 30px;" class="q-mx-xs">
|
||||
<!--<q-btn
|
||||
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>
|
||||
<div class="self-center no-outline" tabindex="0">{{ order.quantity }}</div>
|
||||
<div class="self-center no-outline" tabindex="0">
|
||||
{{ myorder.quantity }}
|
||||
</div>
|
||||
</template>
|
||||
</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 v-if="complete || getnumstore() > 1">
|
||||
<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" />
|
||||
{{ t('products.ritiro_presso') }}:
|
||||
</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">
|
||||
<q-select :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" outlined v-model="storeSelected"
|
||||
:options="getStorehouses()" :label="t('products.magazzino') + `:`" emit-value map-options>
|
||||
<q-select
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
outlined
|
||||
v-model="storeSelected"
|
||||
:options="getStorehouses()"
|
||||
:label="t('products.magazzino') + `:`"
|
||||
emit-value
|
||||
map-options
|
||||
>
|
||||
</q-select>
|
||||
</div>
|
||||
<div v-else>
|
||||
<span class="text-title text-center">{{ getSingleStorehouse() }}</span>
|
||||
<span class="text-title text-center">{{
|
||||
getSingleStorehouse()
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -80,9 +153,6 @@
|
||||
<q-separator />
|
||||
|
||||
<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>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<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">
|
||||
<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 class="col-4 q-ml-xs">
|
||||
{{ order.product.name }}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<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({
|
||||
title: 'Ordini Ufficio',
|
||||
title: 'Ordini',
|
||||
description: "",
|
||||
keywords: '' } ) }}
|
||||
</span>
|
||||
|
||||
<div class="q-ma-sm q-gutter-sm q-pa-xs">
|
||||
<CTitleBanner title="Ordini Ufficio"></CTitleBanner>
|
||||
<!--<CGridTableRec prop_mytable="orderscart"
|
||||
<CTitleBanner title="Ordini"></CTitleBanner>
|
||||
<CGridTableRec prop_mytable="orderscart"
|
||||
prop_mytitle="Lista Ordini"
|
||||
:prop_mycolumns="getcolorderscart"
|
||||
prop_colkey="name"
|
||||
@@ -16,7 +16,7 @@
|
||||
noresultLabel="Il filtro selezionato non ha trovato nessun risultato">
|
||||
|
||||
</CGridTableRec>
|
||||
-->
|
||||
|
||||
</div>
|
||||
</CMyPage>
|
||||
</template>
|
||||
|
||||
@@ -39,7 +39,7 @@ function getRoutesEcomm(site: ISites) {
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
},
|
||||
{
|
||||
/*{
|
||||
active: true,
|
||||
order: 35,
|
||||
path: '/admin/ecommerce/orders',
|
||||
@@ -51,7 +51,7 @@ function getRoutesEcomm(site: ISites) {
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
onlyDepartment: true
|
||||
},
|
||||
},*/
|
||||
]
|
||||
|
||||
const routes_admin_ecommerce: IListRoutes[] = [
|
||||
@@ -111,7 +111,7 @@ function getRoutesEcomm(site: ISites) {
|
||||
onlyManager: true,
|
||||
onlyEditor: true
|
||||
},
|
||||
{
|
||||
/*{
|
||||
active: true,
|
||||
order: 31,
|
||||
path: '/admin/ecommerce/orders',
|
||||
@@ -124,7 +124,7 @@ function getRoutesEcomm(site: ISites) {
|
||||
level_child: 0.5,
|
||||
onlyManager: true,
|
||||
onlyEditor: true
|
||||
},
|
||||
},*/
|
||||
{
|
||||
active: true,
|
||||
order: 32,
|
||||
|
||||
@@ -69,7 +69,8 @@ const msg_it = {
|
||||
theme: 'Tema',
|
||||
ritiro_presso: 'Ritiro presso',
|
||||
magazzino: 'Magazzino',
|
||||
addcart: 'Aggiungi {qta} al Carrello',
|
||||
addcart: '+{qta}',
|
||||
subcart: '-{qta}',
|
||||
origine: 'Origine',
|
||||
ingredienti: 'ingredienti',
|
||||
valori_nutrizionali: 'Valori Nutrizionali',
|
||||
@@ -1611,9 +1612,14 @@ const msg_it = {
|
||||
area_personale: 'Devi prima accedere alla tua Area Personale',
|
||||
prodotto: 'prodotto',
|
||||
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.',
|
||||
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: {
|
||||
Installazione_Sito: 'Installazione Sito',
|
||||
|
||||
@@ -32,17 +32,17 @@ export const useProducts = defineStore('Products', {
|
||||
return state.orders
|
||||
},
|
||||
|
||||
getOrdersCart: (state: IProductsState) => (tipoord: string): IOrderCart[] | undefined => {
|
||||
getOrdersCart: (state: IProductsState) => (tipoord: number): IOrderCart[] | undefined => {
|
||||
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)
|
||||
else if (tipoord === 'confermati')
|
||||
else if (tipoord === shared_consts.OrderStatStr.CONFERMATI)
|
||||
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)
|
||||
else if (tipoord === 'completati')
|
||||
else if (tipoord === shared_consts.OrderStatStr.COMPLETATI)
|
||||
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)
|
||||
},
|
||||
|
||||
@@ -54,6 +54,14 @@ export const useProducts = defineStore('Products', {
|
||||
}
|
||||
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 => {
|
||||
|
||||
@@ -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 globalStore = useGlobalStore()
|
||||
@@ -266,9 +274,41 @@ export const useProducts = defineStore('Products', {
|
||||
if (!globalStore.site.confpages.enableEcommerce)
|
||||
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')
|
||||
|
||||
console.log('addToCart', 'userid=', userStore.my._id, neworder)
|
||||
@@ -339,8 +379,6 @@ export const useProducts = defineStore('Products', {
|
||||
if (!globalStore.site.confpages.enableEcommerce)
|
||||
return null
|
||||
|
||||
// console.log('addSubQtyToItem', 'userid=', userStore.my._id, order)
|
||||
|
||||
let ris = null
|
||||
|
||||
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)
|
||||
return null
|
||||
|
||||
// console.log('addSubQtyToItem', 'userid=', userStore.my._id, order)
|
||||
|
||||
let ris = null
|
||||
|
||||
ris = await Api.SendReq('/cart/' + userStore.my._id + '/orderstatus', 'POST', { order_id, status })
|
||||
|
||||
@@ -37,7 +37,7 @@ import { useCircuitStore } from '@store/CircuitStore'
|
||||
import { routesAdmin } from '@src/router/routesAdmin'
|
||||
import { routesECommerce } from '@src/router/routesECommerce'
|
||||
import LandingFooter from '@src/components/LandingFooter/LandingFooter'
|
||||
|
||||
import { useProducts } from '@store/Products'
|
||||
|
||||
const stateConnDefault = 'online'
|
||||
|
||||
@@ -284,6 +284,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
const messageStore = useMessageStore()
|
||||
const notifStore = useNotifStore()
|
||||
|
||||
|
||||
if (table === costanti.TABEVENTS)
|
||||
return calendarStore.eventlist
|
||||
else if (table === 'operators')
|
||||
@@ -1498,6 +1499,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
const userStore = useUserStore()
|
||||
const calendarStore = useCalendarStore()
|
||||
const circuitStore = useCircuitStore()
|
||||
const Products = useProducts()
|
||||
|
||||
// console.log('calendarStore: loadAfterLogin')
|
||||
// Load local data
|
||||
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)
|
||||
|
||||
/* if (res.data.cart)
|
||||
if (res.data.cart)
|
||||
Products.cart = (res.data.cart) ? { ...res.data.cart } : {}
|
||||
else
|
||||
Products.cart = { items: [], totalPrice: 0, totalQty: 0, userId: '' }
|
||||
|
||||
Products.orders = (res.data.orders) ? [...res.data.orders] : []
|
||||
*/
|
||||
|
||||
|
||||
if (showall) {
|
||||
this.newstosent = (res.data.newstosent) ? [...res.data.newstosent] : []
|
||||
|
||||
@@ -136,7 +136,7 @@ export default defineComponent({
|
||||
|
||||
function completeOrder() {
|
||||
$q.dialog({
|
||||
message: 'Confermare l\'ordine di acquisto di ' + myTotalQty() + ' prodotti ?',
|
||||
message: t('ecomm.conferma_acq', { qty: myTotalQty() }),
|
||||
ok: {
|
||||
label: t('dialog.yes'),
|
||||
push: true
|
||||
@@ -144,13 +144,13 @@ export default defineComponent({
|
||||
cancel: {
|
||||
label: t('dialog.cancel')
|
||||
},
|
||||
title: 'Ordine'
|
||||
title: t('ecomm.order')
|
||||
}).onOk(async () => {
|
||||
const status = shared_consts.OrderStatus.CHECKOUT_SENT
|
||||
statusnow.value = await productStore.UpdateStatusCart({ cart_id: mycart.value._id, status })
|
||||
|
||||
if (statusnow.value === status) {
|
||||
tools.showPositiveNotif($q, 'Ordine Confermato')
|
||||
tools.showPositiveNotif($q, t('ecomm.ord_confirmed'))
|
||||
setTimeout(() => {
|
||||
$router.push('/orderinfo')
|
||||
}, 2000)
|
||||
|
||||
@@ -4,39 +4,53 @@
|
||||
<div class="panel">
|
||||
<div>
|
||||
<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" />
|
||||
</div>
|
||||
</div>
|
||||
<q-separator></q-separator>
|
||||
<div class="col-6 q-mr-sm" style="text-align: right">
|
||||
<span class="text-grey q-mr-xs">Totale:</span> <span
|
||||
class="text-subtitle1 q-mr-sm ">€ {{ (myTotalPrice()) }}</span>
|
||||
<span class="text-grey q-mr-xs">Totale:</span>
|
||||
<span class="text-subtitle1 q-mr-sm">€ {{ myTotalPrice() }}</span>
|
||||
</div>
|
||||
|
||||
<q-input v-if="getNumItems() > 0" v-model="note" style="max-width: 400px;" label="Scrivi qui per eventuali note o chiarimenti:"
|
||||
filled dense
|
||||
<q-input
|
||||
v-if="getNumItems() > 0"
|
||||
v-model="note"
|
||||
style="max-width: 400px"
|
||||
label="Scrivi qui per eventuali note o chiarimenti:"
|
||||
filled
|
||||
dense
|
||||
debounce="1000"
|
||||
autogrow
|
||||
@input="change_field('note')">
|
||||
@input="change_field('note')"
|
||||
>
|
||||
</q-input>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<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"
|
||||
@click="completeOrder"></q-btn>
|
||||
@click="completeOrder"
|
||||
></q-btn>
|
||||
</q-stepper-navigation>
|
||||
|
||||
</div>
|
||||
</q-page>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./checkOut.ts">
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -34,7 +34,7 @@ export default defineComponent({
|
||||
const conferma_carrello = ref(false)
|
||||
const conferma_ordine = ref(false)
|
||||
|
||||
const taborders = ref('incorso')
|
||||
const taborders = ref(shared_consts.OrderStatStr.IN_CORSO)
|
||||
const statusnow = ref(0)
|
||||
const arrnumstatus = ref(<any[]>[])
|
||||
const columns = ref(<any>[
|
||||
@@ -93,7 +93,9 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function getOrdersCart(): IOrderCart[] | undefined {
|
||||
return productStore.getOrdersCart(taborders.value)
|
||||
const ris = productStore.getOrdersCart(taborders.value)
|
||||
console.log(ris)
|
||||
return ris
|
||||
}
|
||||
|
||||
function getAllOrdersCart() {
|
||||
@@ -102,9 +104,11 @@ export default defineComponent({
|
||||
|
||||
function updateorders() {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
const allorders = getAllOrdersCart()
|
||||
for (const status of [2, 3, 4, 6, 10]) {
|
||||
|
||||
@@ -5,36 +5,33 @@
|
||||
<q-tabs v-model="taborders" inline-label class="text-blue">
|
||||
<q-tab
|
||||
class="text-black"
|
||||
v-if="arrnumstatus[2] > 0"
|
||||
name="incorso"
|
||||
:name="shared_consts.OrderStatStr.IN_CORSO"
|
||||
icon="fas fa-tasks"
|
||||
:label="`(` + arrnumstatus[2] + `) in Corso`"
|
||||
/>
|
||||
<q-tab
|
||||
class="text-blue"
|
||||
v-if="arrnumstatus[3] > 0"
|
||||
name="confermati"
|
||||
:name="shared_consts.OrderStatStr.CONFERMATI"
|
||||
icon="fas fa-calendar"
|
||||
:label="`(` + arrnumstatus[3] + `) Confermati`"
|
||||
/>
|
||||
<q-tab
|
||||
class="text-green"
|
||||
v-if="arrnumstatus[4] > 0"
|
||||
name="pagati"
|
||||
:name="shared_consts.OrderStatStr.PAGATI"
|
||||
icon="fas fa-calendar"
|
||||
:label="`(` + arrnumstatus[4] + `) Pagati`"
|
||||
/>
|
||||
<q-tab
|
||||
class="text-blue-grey-8"
|
||||
v-if="arrnumstatus[6] > 0"
|
||||
name="completati"
|
||||
:name="shared_consts.OrderStatStr.COMPLETATI"
|
||||
icon="fas fa-check"
|
||||
:label="`(` + arrnumstatus[6] + `) Completati`"
|
||||
/>
|
||||
<q-tab
|
||||
class="text-red"
|
||||
v-if="arrnumstatus[10] > 0"
|
||||
name="cancellati"
|
||||
:name="shared_consts.OrderStatStr.CANCELLATI"
|
||||
icon="delete"
|
||||
:label="`(` + arrnumstatus[10] + `) Cancellati`"
|
||||
/>
|
||||
@@ -46,7 +43,7 @@
|
||||
:hide-header="$q.screen.lt.sm"
|
||||
:columns="columns"
|
||||
row-key="numorder"
|
||||
:data="getOrdersCart()"
|
||||
:rows="getOrdersCart()"
|
||||
>
|
||||
<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">
|
||||
@@ -59,7 +56,7 @@
|
||||
<q-item-section side>
|
||||
<q-item-label v-if="col.name === 'created_at'" caption
|
||||
>{{ tools.getstrDateTime(col.value) }}
|
||||
<span v-if="taborders === 'completati'">
|
||||
<span v-if="taborders === shared_consts.OrderStatStr.COMPLETATI">
|
||||
<br />Completato il:
|
||||
{{ tools.getstrDateTime(props.row.completed_at) }}
|
||||
</span>
|
||||
@@ -104,7 +101,7 @@
|
||||
</q-td>
|
||||
<q-td key="created_at" :props="props">
|
||||
{{ tools.getstrDateTime(props.row.created_at) }}
|
||||
<span v-if="taborders === 'completati'">
|
||||
<span v-if="taborders === shared_consts.OrderStatStr.COMPLETATI">
|
||||
<br />Completato il:<br />{{
|
||||
tools.getstrDateTime(props.row.completed_at)
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user