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,
},
OrderStatStr: {
IN_CORSO: 1,
CONFERMATI: 2,
PAGATI: 3,
COMPLETATI: 4,
CANCELLATI: 5,
},
OrderStatusView: [
2,
3,

View File

@@ -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,
}
}
})

View File

@@ -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>

View File

@@ -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 }}

View File

@@ -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>

View File

@@ -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,

View File

@@ -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',

View File

@@ -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 })

View File

@@ -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] : []

View File

@@ -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)

View File

@@ -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>

View File

@@ -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]) {

View File

@@ -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)
}}