diff --git a/src/views/ecommerce/checkOut/checkOut.ts b/src/views/ecommerce/checkOut/checkOut.ts index 6b47ca9b..276b039c 100755 --- a/src/views/ecommerce/checkOut/checkOut.ts +++ b/src/views/ecommerce/checkOut/checkOut.ts @@ -1,178 +1,182 @@ -import Vue from 'vue' -import { Component, Watch } from 'vue-property-decorator' +import { defineComponent, onMounted, ref } from 'vue' +import { tools } from '@store/Modules/tools' +import { useUserStore } from '@store/UserStore' +import { useRouter } from 'vue-router' +import { useGlobalStore } from '@store/globalStore' +import { useProducts } from '@store/Products' +import { useI18n } from '@/boot/i18n' +import { toolsext } from '@store/Modules/toolsext' +import { useQuasar } from 'quasar' +import { costanti } from '@costanti' +import { ICart, IOrderCart, IShareWithUs } from '@src/model/Products' -import { SingleProject } from '../../../components/projects/SingleProject/index' -import { CTodo } from '../../../components/todos/CTodo' - -import { CProgress } from '../../../components/CProgress' -import { CDate } from '../../../components/CDate' -import { Action } from 'vuex' -import Products from '@src/store/Modules/Products' -import { CSingleCart } from '../../../components/CSingleCart' -import { CTitleBanner } from '@components' -import { tools } from '@src/store/Modules/tools' -import { ICart } from '@src/model' -import MixinBase from '@src/mixins/mixin-base' import { shared_consts } from '@src/common/shared_vuejs' -const namespace: string = 'Products' +import { CSingleCart } from '../../../components/CSingleCart' +import { CTitleBanner } from '@components' -@Component({ +export default defineComponent({ name: 'checkOut', - components: { SingleProject, CProgress, CTodo, CDate, CSingleCart, CTitleBanner }, - filters: { - capitalize(value) { - if (!value) { - return '' + components: { CSingleCart, CTitleBanner }, + props: {}, + setup() { + const userStore = useUserStore() + const globalStore = useGlobalStore() + const productStore = useProducts() + const $router = useRouter() + const $q = useQuasar() + const { t } = useI18n(); + + const mycart = ref({}) + const myrec = ref([]) + const oldrec = ref([]) + const note = ref('') + const statusnow = ref(shared_consts.OrderStatus.NONE) + + function mounted() { + // Inizializza + load() + } + + function getItemsCart() { + const cart = productStore.getCart() + return cart.items || null + } + + function getNumItems() { + const cart = productStore.getCart() + if (!!cart.items) + return cart.items.length || 0 + else + return 0 + } + + function getCart() { + 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) + myrec.value = oldrec.value } - value = value.toString() - return value.charAt(0).toUpperCase() + value.slice(1) + } + + function myTotalPrice() { + if (productStore.cart && productStore.cart.totalPrice) { + return productStore.cart.totalPrice.toFixed(2) + } else { + return 0 + } + } + + function myTotalQty() { + if (productStore.cart) { + return productStore.cart.totalQty + } else { + return 0 + } + } + + async function load() { + mycart.value = getCart() + myrec.value = Object.keys(mycart) + note.value = mycart.value.note! + + 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 ?', + ok: { + label: t('dialog.yes'), + push: true + }, + cancel: { + label: t('dialog.cancel') + }, + title: 'Ordine' + }).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') + setTimeout(() => { + $router.push('/orderinfo') + }, 2000) + } + // change_field('status') + // change_field('status') + }) + } + + + onMounted(mounted) + + return { + userStore, + costanti, + tools, + toolsext, + completeOrder, + getNumItems, + myTotalPrice, + getItemsCart, + getNote, + change_field, + note, + statusnow, + shared_consts, + myTotalQty, } } }) - -export default class CheckOut extends MixinBase { - public $q: any - public mycart: ICart = {} - public myrec: any[] - public note: string = '' - public statusnow: number = shared_consts.OrderStatus.NONE - - public conferma_carrello: boolean = false - public conferma_ordine: boolean = false - - /*public $refs: { - singleproject: SingleProject[], - ctodo: CTodo - }*/ - - get getItemsCart() { - const cart = Products.getters.getCart() - return cart.items || null - } - - get getNumItems() { - const cart = Products.getters.getCart() - if (!!cart.items) - return cart.items.length || 0 - else - return 0 - } - - get getCart() { - return Products.getters.getCart() - } - - get getNote() { - const cart = Products.getters.getCart() - return cart.note - } - - public change_field(fieldname) { - if (this.myrec[fieldname] !== this[fieldname]) { - this.myrec[fieldname] = this[fieldname] - - const mydata = { - [fieldname]: this.myrec[fieldname] - } - - const aggiorna = fieldname !== 'status' - tools.saveFieldToServer(this, 'carts', this.mycart._id, mydata, aggiorna) - } - } - - get myTotalPrice() { - if (Products.state.cart && Products.state.cart.totalPrice) { - return Products.state.cart.totalPrice.toFixed(2) - } else { - return 0 - } - } - - get myTotalQty() { - if (Products.state.cart) { - return Products.state.cart.totalQty - } else { - return 0 - } - } - - public async mounted() { - // Products.actions.loadCart() - this.load() - } - - public async load() { - this.mycart = this.getCart - this.myrec = Object.keys(this.mycart) - this.note = this.mycart.note - - if (this.mycart) - this.statusnow = await Products.actions.UpdateStatusCart({ cart_id: this.mycart._id, status }) - - console.log('myrec', this.myrec) - } - - public CanBeShipped() { - return Products.state.cart.items.filter((rec) => rec.order.product.canBeShipped).length - } - - public CanBeBuyOnline() { - return Products.state.cart.items.filter((rec) => rec.order.product.canBeBuyOnline).length - } - - get getnumsteps() { - let numsteps = 1 - - if (this.CanBeShipped()) - numsteps++ - if (this.CanBeBuyOnline()) - numsteps++ - - return numsteps - } - - public docheckout() { - - // Può essere spedito? - - if (this.CanBeShipped()) { - // mostra form di spedizione - } - - if (this.CanBeBuyOnline()) { - // mostra form di acquisto Online - } - } - - get nextstep() { - return 0 - } - - public completeOrder() { - this.$q.dialog({ - message: 'Confermare l\'ordine di acquisto di ' + this.myTotalQty + ' prodotti ?', - ok: { - label: this.$t('dialog.yes'), - push: true - }, - cancel: { - label: this.$t('dialog.cancel') - }, - title: 'Ordine' - }).onOk(async () => { - const status = shared_consts.OrderStatus.CHECKOUT_SENT - this.statusnow = await Products.actions.UpdateStatusCart({ cart_id: this.mycart._id, status }) - - if (this.statusnow === status) { - tools.showPositiveNotif(this.$q, 'Ordine Confermato') - setTimeout(() => { - this.$router.push('/orderinfo') - }, 2000) - } - // this.change_field('status') - // this.change_field('status') - }) - } - -} diff --git a/src/views/ecommerce/checkOut/checkOut.vue b/src/views/ecommerce/checkOut/checkOut.vue index c8ab6b5a..68fe0142 100755 --- a/src/views/ecommerce/checkOut/checkOut.vue +++ b/src/views/ecommerce/checkOut/checkOut.vue @@ -4,7 +4,7 @@
-
+
@@ -15,7 +15,7 @@ class="text-subtitle1 q-mr-sm ">€ {{ myTotalPrice }}
- diff --git a/src/views/scheletro_convers/scheletro_convers.ts b/src/views/scheletro_convers/scheletro_convers.ts index ac5dd3da..ae6b151b 100755 --- a/src/views/scheletro_convers/scheletro_convers.ts +++ b/src/views/scheletro_convers/scheletro_convers.ts @@ -8,6 +8,8 @@ import { useI18n } from '@/boot/i18n' import { toolsext } from '@store/Modules/toolsext' import { useQuasar } from 'quasar' import { costanti } from '@costanti' +import { shared_consts } from '@src/common/shared_vuejs' +// import MixinBase from '@src/mixins/mixin-base' export default defineComponent({ @@ -22,6 +24,8 @@ export default defineComponent({ const $q = useQuasar() const { t } = useI18n(); + // const { setValDb, getValDb } = MixinBase() + function mounted() { // Inizializza @@ -35,6 +39,7 @@ export default defineComponent({ costanti, tools, toolsext, + shared_consts, } } })