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

@@ -27,12 +27,12 @@ export default defineComponent({
const $q = useQuasar()
const { t } = useI18n();
const mycart = ref(<ICart>{})
const mycart = ref(<ICart>{})
const myrec = ref(<any[string]>[])
const oldrec = ref(<any[string]>[])
const note = ref('')
const statusnow = ref(shared_consts.OrderStatus.NONE)
function mounted() {
// Inizializza
load()
@@ -42,7 +42,7 @@ export default defineComponent({
const cart = productStore.getCart()
return cart.items || null
}
function getNumItems(): number {
const cart = productStore.getCart()
if (!!cart.items)
@@ -50,30 +50,30 @@ export default defineComponent({
else
return 0
}
function getCart(): ICart {
return productStore.getCart()
}
function getNote() {
const cart = productStore.getCart()
return cart.note
}
function change_field(fieldname: string) {
if (myrec.value[fieldname] !== oldrec.value[fieldname]) {
myrec.value[fieldname] = oldrec.value[fieldname]
const mydata = {
[fieldname]: myrec.value[fieldname]
}
const aggiorna = fieldname !== 'status'
tools.saveFieldToServer($q, 'carts', mycart.value._id, mydata, aggiorna)
oldrec.value[fieldname] = myrec.value[fieldname]
}
}
function myTotalPrice(): string {
if (productStore.cart && productStore.cart.totalPrice) {
return productStore.cart.totalPrice.toFixed(2)
@@ -81,7 +81,7 @@ export default defineComponent({
return '0'
}
}
function myTotalQty(): number {
if (productStore.cart) {
return productStore.cart.totalQty!
@@ -89,7 +89,7 @@ export default defineComponent({
return 0
}
}
async function load() {
mycart.value = getCart()
myrec.value = Object.keys(mycart)
@@ -98,45 +98,45 @@ export default defineComponent({
if (mycart.value)
statusnow.value = await productStore.UpdateStatusCart({ cart_id: mycart.value._id, status: 0 })
console.log('myrec', myrec.value)
}
function CanBeShipped() {
return productStore.cart.items ? productStore.cart.items.filter((rec: any) => rec.order.product.canBeShipped).length : false
}
function CanBeBuyOnline() {
return productStore.cart.items ? productStore.cart.items.filter((rec: any) => rec.order.product.canBeBuyOnline).length : false
}
function getnumsteps() {
let numsteps = 1
if (CanBeShipped())
numsteps++
if (CanBeBuyOnline())
numsteps++
return numsteps
}
function docheckout() {
// Può essere spedito?
if (CanBeShipped()) {
// mostra form di spedizione
}
if (CanBeBuyOnline()) {
// mostra form di acquisto Online
}
}
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)
@@ -159,7 +159,7 @@ export default defineComponent({
// change_field('status')
})
}
onMounted(mounted)

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">
<CSingleCart :order="itemorder.order" :showall="true"/>
<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
debounce="1000"
autogrow
@input="change_field('note')">
<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')"
>
</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"
:disabled="myTotalQty() < 1"
@click="completeOrder"></q-btn>
<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>
</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,8 +104,10 @@ export default defineComponent({
function updateorders() {
myorderscart.value = getOrdersCart()
for (const ordercart of myorderscart.value!) {
myarrrec.value[ordercart._id] = Object.keys(ordercart)
if (myorderscart.value) {
for (const ordercart of myorderscart.value) {
myarrrec.value[ordercart._id] = Object.keys(ordercart)
}
}
const allorders = getAllOrdersCart()

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