aggiornamento visualizzazione Ordini e Carrello
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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,9 +40,13 @@ 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>{})
|
||||||
|
|
||||||
const storeSelected = ref('')
|
const storeSelected = ref('')
|
||||||
|
|
||||||
@@ -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,113 +76,127 @@ 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)) {
|
let strprod = t('ecomm.prodotto')
|
||||||
tools.showNegativeNotif($q, t('ecomm.already_in_cart'))
|
if (myorder.value.quantity > 1 || myorder.value.quantity === 0)
|
||||||
} else {
|
strprod = t('ecomm.prodotti')
|
||||||
products.addToCart({ product: myproduct.value, order: props.order }).then((ris) => {
|
|
||||||
let strprod = t('ecomm.prodotto')
|
let msg = ''
|
||||||
if (myorder.value.quantity > 1)
|
if (ris === null)
|
||||||
strprod = t('ecomm.prodotti')
|
msg = t('ecomm.error_cart')
|
||||||
if (ris)
|
else {
|
||||||
tools.showPositiveNotif($q, t('ecomm.haveadded') + ' ' + myorder.value.quantity + ' ' + strprod + ' ' + t('ecomm.tocart'))
|
if (myorder.value.quantity === 0) {
|
||||||
else
|
msg = t('ecomm.prodotto_tolto')
|
||||||
tools.showNegativeNotif($q, t('ecomm.error_cart'))
|
} 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() {
|
||||||
if (myproduct.value.storehouses)
|
if (myproduct.value.storehouses)
|
||||||
return myproduct.value.storehouses.length
|
return myproduct.value.storehouses.length
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSingleStorehouse() {
|
function getSingleStorehouse() {
|
||||||
const mystore = myproduct.value.storehouses[0]
|
const mystore = myproduct.value.storehouses[0]
|
||||||
if (mystore)
|
if (mystore)
|
||||||
return mystore.name + ' (' + mystore.city + ')'
|
return mystore.name + ' (' + mystore.city + ')'
|
||||||
else
|
else
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
|
|
||||||
function getStorehouses() {
|
function getStorehouses() {
|
||||||
|
|
||||||
const myarr: any = []
|
const myarr: any = []
|
||||||
let ind = 1
|
let ind = 1
|
||||||
myproduct.value.storehouses.forEach((store) => {
|
myproduct.value.storehouses.forEach((store) => {
|
||||||
myarr.push(
|
myarr.push(
|
||||||
{
|
{
|
||||||
id: ind,
|
id: ind,
|
||||||
label: store.name + ' (' + store.city + ')',
|
label: store.name + ' (' + store.city + ')',
|
||||||
value: store._id
|
value: store._id
|
||||||
})
|
|
||||||
|
|
||||||
ind++
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// console.log('arraystore', myarr)
|
ind++
|
||||||
return myarr
|
})
|
||||||
}
|
|
||||||
|
|
||||||
function checkifCartDisable() {
|
// console.log('arraystore', myarr)
|
||||||
return !myorder.value.idStorehouse
|
return myarr
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(() => props.code, (newval, oldval) => {
|
function checkifCartDisable() {
|
||||||
console.log('change code')
|
return !myorder.value.idStorehouse
|
||||||
load()
|
}
|
||||||
})
|
|
||||||
|
|
||||||
watch(() => storeSelected.value, (newval, oldval) => {
|
watch(() => props.code, (newval, oldval) => {
|
||||||
myorder.value.idStorehouse = newval
|
console.log('change code')
|
||||||
})
|
load()
|
||||||
|
})
|
||||||
|
|
||||||
async function load() {
|
watch(() => storeSelected.value, (newval, oldval) => {
|
||||||
// console.log('created Cproductcard', code)
|
myorder.value.idStorehouse = newval
|
||||||
if (props.code) {
|
})
|
||||||
myproduct.value = await products.loadProduct({ code: props.code })
|
|
||||||
} else {
|
|
||||||
// @ts-ignore
|
|
||||||
myproduct.value = props.product
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('myproduct', myproduct, 'product', props.product)
|
async function load() {
|
||||||
|
// console.log('created Cproductcard', code)
|
||||||
|
if (props.code) {
|
||||||
|
myproduct.value = await products.loadProduct({ code: props.code })
|
||||||
|
} else {
|
||||||
|
// @ts-ignore
|
||||||
|
myproduct.value = props.product
|
||||||
|
}
|
||||||
|
|
||||||
if (!!myproduct.value) {
|
console.log('myproduct', myproduct, 'product', props.product)
|
||||||
if (myproduct.value.storehouses.length === 1) {
|
|
||||||
myorder.value.idStorehouse = myproduct.value.storehouses[0]._id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getmycardcl() {
|
if (!!myproduct.value) {
|
||||||
return (props.complete) ? 'my-card-big' : 'my-card'
|
if (myproduct.value.storehouses.length === 1) {
|
||||||
}
|
myorder.value.idStorehouse = myproduct.value.storehouses[0]._id
|
||||||
|
|
||||||
function getclimg() {
|
|
||||||
return (props.complete) ? 'myimgtitle centermydiv' : 'centermydiv'
|
|
||||||
}
|
|
||||||
|
|
||||||
load()
|
|
||||||
|
|
||||||
return {
|
|
||||||
decqty,
|
|
||||||
addqty,
|
|
||||||
addtoCart,
|
|
||||||
iconWhishlist,
|
|
||||||
getmycardcl,
|
|
||||||
getclimg,
|
|
||||||
getnumstore,
|
|
||||||
getSingleStorehouse,
|
|
||||||
getStorehouses,
|
|
||||||
checkifCartDisable,
|
|
||||||
myproduct,
|
|
||||||
myorder,
|
|
||||||
tools,
|
|
||||||
t,
|
|
||||||
storeSelected,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getmycardcl() {
|
||||||
|
return (props.complete) ? 'my-card-big' : 'my-card'
|
||||||
|
}
|
||||||
|
|
||||||
|
function getclimg() {
|
||||||
|
return (props.complete) ? 'myimgtitle centermydiv' : 'centermydiv'
|
||||||
|
}
|
||||||
|
|
||||||
|
function enableSubQty() {
|
||||||
|
return myorder.value ? myorder.value.quantity > 0 : true
|
||||||
|
}
|
||||||
|
|
||||||
|
load()
|
||||||
|
|
||||||
|
return {
|
||||||
|
decqty,
|
||||||
|
addqty,
|
||||||
|
addtoCart,
|
||||||
|
iconWhishlist,
|
||||||
|
getmycardcl,
|
||||||
|
getclimg,
|
||||||
|
getnumstore,
|
||||||
|
getSingleStorehouse,
|
||||||
|
getStorehouses,
|
||||||
|
checkifCartDisable,
|
||||||
|
myproduct,
|
||||||
|
myorder,
|
||||||
|
tools,
|
||||||
|
t,
|
||||||
|
storeSelected,
|
||||||
|
enableSubQty,
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -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') }}:
|
||||||
myproduct.producer.region
|
<span class="text-blue q-ml-xs text-h8">
|
||||||
}})</span>
|
{{ myproduct.producer.city }} ({{
|
||||||
|
myproduct.producer.region
|
||||||
|
}})</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>
|
||||||
|
|||||||
@@ -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 }}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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',
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -296,7 +336,7 @@ export const useProducts = defineStore('Products', {
|
|||||||
return ris
|
return ris
|
||||||
},
|
},
|
||||||
|
|
||||||
async addSubQtyToItem({ addqty, subqty, order } : { addqty: boolean, subqty: boolean, order: IOrder }) {
|
async addSubQtyToItem({ addqty, subqty, order }: { addqty: boolean, subqty: boolean, order: IOrder }) {
|
||||||
|
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
const globalStore = useGlobalStore()
|
const globalStore = useGlobalStore()
|
||||||
@@ -331,7 +371,7 @@ export const useProducts = defineStore('Products', {
|
|||||||
return ris
|
return ris
|
||||||
},
|
},
|
||||||
|
|
||||||
async UpdateStatusCart({ cart_id, status }: { cart_id:string, status: number }) {
|
async UpdateStatusCart({ cart_id, status }: { cart_id: string, status: number }) {
|
||||||
|
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
const globalStore = useGlobalStore()
|
const globalStore = useGlobalStore()
|
||||||
@@ -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 })
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|
||||||
@@ -283,6 +283,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
|||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
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
|
||||||
@@ -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] : []
|
||||||
|
|||||||
@@ -27,12 +27,12 @@ export default defineComponent({
|
|||||||
const $q = useQuasar()
|
const $q = useQuasar()
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
const mycart = ref(<ICart>{})
|
const mycart = ref(<ICart>{})
|
||||||
const myrec = ref(<any[string]>[])
|
const myrec = ref(<any[string]>[])
|
||||||
const oldrec = ref(<any[string]>[])
|
const oldrec = ref(<any[string]>[])
|
||||||
const note = ref('')
|
const note = ref('')
|
||||||
const statusnow = ref(shared_consts.OrderStatus.NONE)
|
const statusnow = ref(shared_consts.OrderStatus.NONE)
|
||||||
|
|
||||||
function mounted() {
|
function mounted() {
|
||||||
// Inizializza
|
// Inizializza
|
||||||
load()
|
load()
|
||||||
@@ -42,7 +42,7 @@ export default defineComponent({
|
|||||||
const cart = productStore.getCart()
|
const cart = productStore.getCart()
|
||||||
return cart.items || null
|
return cart.items || null
|
||||||
}
|
}
|
||||||
|
|
||||||
function getNumItems(): number {
|
function getNumItems(): number {
|
||||||
const cart = productStore.getCart()
|
const cart = productStore.getCart()
|
||||||
if (!!cart.items)
|
if (!!cart.items)
|
||||||
@@ -50,30 +50,30 @@ export default defineComponent({
|
|||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCart(): ICart {
|
function getCart(): ICart {
|
||||||
return productStore.getCart()
|
return productStore.getCart()
|
||||||
}
|
}
|
||||||
|
|
||||||
function getNote() {
|
function getNote() {
|
||||||
const cart = productStore.getCart()
|
const cart = productStore.getCart()
|
||||||
return cart.note
|
return cart.note
|
||||||
}
|
}
|
||||||
|
|
||||||
function change_field(fieldname: string) {
|
function change_field(fieldname: string) {
|
||||||
if (myrec.value[fieldname] !== oldrec.value[fieldname]) {
|
if (myrec.value[fieldname] !== oldrec.value[fieldname]) {
|
||||||
myrec.value[fieldname] = oldrec.value[fieldname]
|
myrec.value[fieldname] = oldrec.value[fieldname]
|
||||||
|
|
||||||
const mydata = {
|
const mydata = {
|
||||||
[fieldname]: myrec.value[fieldname]
|
[fieldname]: myrec.value[fieldname]
|
||||||
}
|
}
|
||||||
|
|
||||||
const aggiorna = fieldname !== 'status'
|
const aggiorna = fieldname !== 'status'
|
||||||
tools.saveFieldToServer($q, 'carts', mycart.value._id, mydata, aggiorna)
|
tools.saveFieldToServer($q, 'carts', mycart.value._id, mydata, aggiorna)
|
||||||
oldrec.value[fieldname] = myrec.value[fieldname]
|
oldrec.value[fieldname] = myrec.value[fieldname]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function myTotalPrice(): string {
|
function myTotalPrice(): string {
|
||||||
if (productStore.cart && productStore.cart.totalPrice) {
|
if (productStore.cart && productStore.cart.totalPrice) {
|
||||||
return productStore.cart.totalPrice.toFixed(2)
|
return productStore.cart.totalPrice.toFixed(2)
|
||||||
@@ -81,7 +81,7 @@ export default defineComponent({
|
|||||||
return '0'
|
return '0'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function myTotalQty(): number {
|
function myTotalQty(): number {
|
||||||
if (productStore.cart) {
|
if (productStore.cart) {
|
||||||
return productStore.cart.totalQty!
|
return productStore.cart.totalQty!
|
||||||
@@ -89,7 +89,7 @@ export default defineComponent({
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function load() {
|
async function load() {
|
||||||
mycart.value = getCart()
|
mycart.value = getCart()
|
||||||
myrec.value = Object.keys(mycart)
|
myrec.value = Object.keys(mycart)
|
||||||
@@ -98,45 +98,45 @@ export default defineComponent({
|
|||||||
|
|
||||||
if (mycart.value)
|
if (mycart.value)
|
||||||
statusnow.value = await productStore.UpdateStatusCart({ cart_id: mycart.value._id, status: 0 })
|
statusnow.value = await productStore.UpdateStatusCart({ cart_id: mycart.value._id, status: 0 })
|
||||||
|
|
||||||
console.log('myrec', myrec.value)
|
console.log('myrec', myrec.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
function CanBeShipped() {
|
function CanBeShipped() {
|
||||||
return productStore.cart.items ? productStore.cart.items.filter((rec: any) => rec.order.product.canBeShipped).length : false
|
return productStore.cart.items ? productStore.cart.items.filter((rec: any) => rec.order.product.canBeShipped).length : false
|
||||||
}
|
}
|
||||||
|
|
||||||
function CanBeBuyOnline() {
|
function CanBeBuyOnline() {
|
||||||
return productStore.cart.items ? productStore.cart.items.filter((rec: any) => rec.order.product.canBeBuyOnline).length : false
|
return productStore.cart.items ? productStore.cart.items.filter((rec: any) => rec.order.product.canBeBuyOnline).length : false
|
||||||
}
|
}
|
||||||
|
|
||||||
function getnumsteps() {
|
function getnumsteps() {
|
||||||
let numsteps = 1
|
let numsteps = 1
|
||||||
|
|
||||||
if (CanBeShipped())
|
if (CanBeShipped())
|
||||||
numsteps++
|
numsteps++
|
||||||
if (CanBeBuyOnline())
|
if (CanBeBuyOnline())
|
||||||
numsteps++
|
numsteps++
|
||||||
|
|
||||||
return numsteps
|
return numsteps
|
||||||
}
|
}
|
||||||
|
|
||||||
function docheckout() {
|
function docheckout() {
|
||||||
|
|
||||||
// Può essere spedito?
|
// Può essere spedito?
|
||||||
|
|
||||||
if (CanBeShipped()) {
|
if (CanBeShipped()) {
|
||||||
// mostra form di spedizione
|
// mostra form di spedizione
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CanBeBuyOnline()) {
|
if (CanBeBuyOnline()) {
|
||||||
// mostra form di acquisto Online
|
// mostra form di acquisto Online
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
@@ -159,7 +159,7 @@ export default defineComponent({
|
|||||||
// change_field('status')
|
// change_field('status')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
onMounted(mounted)
|
onMounted(mounted)
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
<CSingleCart :order="itemorder.order" :showall="true"/>
|
v-for="(itemorder, index) in getItemsCart()"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<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"
|
||||||
debounce="1000"
|
v-model="note"
|
||||||
autogrow
|
style="max-width: 400px"
|
||||||
@input="change_field('note')">
|
label="Scrivi qui per eventuali note o chiarimenti:"
|
||||||
|
filled
|
||||||
|
dense
|
||||||
|
debounce="1000"
|
||||||
|
autogrow
|
||||||
|
@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
|
||||||
:disabled="myTotalQty() < 1"
|
v-if="statusnow < shared_consts.OrderStatus.CHECKOUT_SENT"
|
||||||
@click="completeOrder"></q-btn>
|
rounded
|
||||||
|
icon="fas fa-shopping-cart"
|
||||||
|
color="green"
|
||||||
|
:label="$t('ecomm.completa_ord')"
|
||||||
|
class="q-mb-sm"
|
||||||
|
:disabled="myTotalQty() < 1"
|
||||||
|
@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>
|
||||||
|
|||||||
@@ -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,8 +104,10 @@ export default defineComponent({
|
|||||||
|
|
||||||
function updateorders() {
|
function updateorders() {
|
||||||
myorderscart.value = getOrdersCart()
|
myorderscart.value = getOrdersCart()
|
||||||
for (const ordercart of myorderscart.value!) {
|
if (myorderscart.value) {
|
||||||
myarrrec.value[ordercart._id] = Object.keys(ordercart)
|
for (const ordercart of myorderscart.value) {
|
||||||
|
myarrrec.value[ordercart._id] = Object.keys(ordercart)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const allorders = getAllOrdersCart()
|
const allorders = getAllOrdersCart()
|
||||||
|
|||||||
@@ -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)
|
||||||
}}
|
}}
|
||||||
|
|||||||
Reference in New Issue
Block a user