@ozdao/martyrs 0.2.511 → 0.2.513
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{main-B1XN9Zjg.cjs → main-CVOBCkmD.cjs} +5 -5
- package/dist/{main-u7zgfMGL.js → main-CVRRj-vK.js} +259 -262
- package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs +2 -2
- package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js +2 -2
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs +0 -2
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +0 -2
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +3 -5
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +3 -5
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs +10 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +31 -22
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +42 -46
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +45 -49
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +308 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js +308 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js.map +1 -0
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +14 -16
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +13 -15
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs +101 -32
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js +101 -32
- package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/store/notifications.store.cjs +45 -12
- package/dist/martyrs/src/modules/notifications/store/notifications.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/store/notifications.store.js +38 -5
- package/dist/martyrs/src/modules/notifications/store/notifications.store.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs +19 -18
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +19 -18
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +82 -61
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +83 -62
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +3 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +4 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +4 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.cjs +1 -0
- package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.js +2 -0
- package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs +33 -23
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.js +31 -21
- package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +3 -18
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +4 -19
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +37 -43
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +48 -54
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +11 -8
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +11 -8
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.cjs +8 -0
- package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +8 -0
- package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -0
- package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.cjs +13 -0
- package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.cjs.map +1 -0
- package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +13 -0
- package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -0
- package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.cjs +43 -0
- package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.cjs.map +1 -0
- package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js +43 -0
- package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js.map +1 -0
- package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs +43 -0
- package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs.map +1 -0
- package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js +43 -0
- package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js.map +1 -0
- package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.cjs +1630 -0
- package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.cjs.map +1 -0
- package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js +1630 -0
- package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js.map +1 -0
- package/dist/notifications.server.cjs +205 -11
- package/dist/notifications.server.js +205 -11
- package/dist/style.css +258 -242
- package/dist/{web--8-wgr6b.js → web-BW449LVt.js} +1 -1
- package/dist/{web-BS6utuAZ.cjs → web-CO3tWG6J.cjs} +1 -1
- package/package.json +1 -1
- package/src/components/Button/Button.vue +2 -2
- package/src/components/Menu/MenuItem.vue +11 -6
- package/src/modules/auth/views/components/pages/Profile.vue +1 -1
- package/src/modules/chats/components/sections/ChatWindow.vue +1 -1
- package/src/modules/events/components/pages/EventsBackoffice.vue +0 -1
- package/src/modules/globals/globals.client.js +17 -0
- package/src/modules/globals/views/components/layouts/Client.vue +1 -0
- package/src/modules/globals/views/components/sections/Filters.vue +2 -4
- package/src/modules/globals/views/components/sections/Walkthrough.vue +245 -57
- package/src/modules/inventory/components/pages/Inventory.vue +0 -1
- package/src/modules/notifications/FIXES.md +1 -0
- package/src/modules/notifications/controllers/notifications.controller.js +147 -7
- package/src/modules/notifications/models/user-device.model.js +10 -2
- package/src/modules/notifications/notifications.client.js +127 -41
- package/src/modules/notifications/routes/notifications.routes.js +4 -0
- package/src/modules/notifications/services/notification.service.js +93 -0
- package/src/modules/notifications/store/notifications.store.js +47 -7
- package/src/modules/orders/components/blocks/CardOrderItem.vue +1 -1
- package/src/modules/orders/components/forms/FormCustomerDetails.vue +52 -35
- package/src/modules/orders/components/pages/OrderBackoffice.vue +2 -2
- package/src/modules/orders/components/pages/OrderCreate.vue +3 -1
- package/src/modules/orders/components/sections/FormDelivery.vue +2 -2
- package/src/modules/orders/orders.client.js +2 -0
- package/src/modules/orders/store/shopcart.js +34 -23
- package/src/modules/organizations/components/pages/Organization.vue +6 -2
- package/src/modules/organizations/configs/navigation.organization.config.js +36 -36
- package/src/modules/products/components/pages/Products.vue +11 -9
- package/src/modules/products/migrations/categories-to-materialized-path.js +0 -3
- package/src/styles/base/backgrounds.scss +1 -0
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderCreate.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\n\t<!-- Empty State -->\n\t<EmptyState \n\t\tv-if=\"shopcart.state.positions < 1\" \n\t/>\t\n\t<Succes \n\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t:order=\"order\" \n\t/>\n\t<!-- Уведомления о минимальной сумме заказа и времени работы -->\n\t<div v-if=\"shopcart.state.positions.length > 0\" class=\"w-100 gap-thin cols-1 mn-b-thin\">\n\t\t<div v-if=\"!isOpen\" class=\"bg-fifth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ This spot is currently closed. You can place an order, but it will be processed when the spot opens.</p>\n\t\t</div>\n\t\t<div v-if=\"cartTotalPrice < minOrderAmount\" class=\"bg-fourth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ Minimum order amount is {{ formatPrice(minOrderAmount) }}. Your current total is {{ formatPrice(cartTotalPrice) }}.</p>\n\t\t</div>\n\t</div>\n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2\">\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\tv-model:customer=\"orders.state.current.customer\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"(product, index) in shopcart.state.positions\" \n\t\t\t\t\t:key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:productId=\"product._id\"\n\t\t\t\t\t:variantId=\"product.variant\"\n\t\t\t\t\t:images=\"product.images\"\n\t\t\t\t\t:name=\"product.name\"\n\t\t\t\t\t:quantity=\"product.quantity\"\n\t\t\t\t\t:unit=\"product.unit\"\n\t\t\t\t\t:dates=\"product.date\"\n\t\t\t\t\t:listing=\"product.listing\"\n\t\t\t\t\t:price=\"product.price\"\n\t :increase=\"() => shopcart.actions.incrementItemQuantity(product._id, product.variant)\"\n\t :decrease=\"() => shopcart.actions.decrementItemQuantity(product._id, product.variant)\"\n\t :remove=\"() => shopcart.actions.removeProduct(product._id, product.variant)\"\n\t\t\t\t\t@updateRentDates=\"(productId, variantId, dates) => shopcart.actions.updateRentDates({ productId, variantId, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t || cartTotalPrice < minOrderAmount\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\nimport * as orders from '@martyrs/src/modules/orders/store/orders.js';\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency, formatPrice } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\nconst spotOrganization = ref({})\nconst isOpen = ref(true)\n\n// Новые переменные для проверки минимальной суммы заказа и времени работы\nconst minOrderAmount = ref(0)\n\nfunction checkIsOpenNow(worktime) {\n try {\n console.log('[checkIsOpenNow] worktime:', worktime);\n\n if (\n !worktime ||\n typeof worktime !== 'object' ||\n Array.isArray(worktime) ||\n !worktime.regular\n ) {\n console.log('[checkIsOpenNow] invalid, returning true');\n return true;\n }\n\n const now = new Date();\n const currentDay = now.getDay();\n const currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\n console.log('[checkIsOpenNow] currentDay:', currentDay);\n console.log('[checkIsOpenNow] currentTime:', currentTime);\n\n const specialDay = worktime.special?.find(s => {\n const d = new Date(s.date);\n return (\n d.getFullYear() === today.getFullYear() &&\n d.getMonth() === today.getMonth() &&\n d.getDate() === today.getDate()\n );\n });\n\n if (specialDay) {\n console.log('[checkIsOpenNow] specialDay:', specialDay);\n if (!specialDay.isOpen) return false;\n return specialDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n }\n\n const regularDay = worktime.regular.find(d => d.dayOfWeek === currentDay);\n if (!regularDay || !regularDay.isOpen) return false;\n\n return regularDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n } catch (err) {\n console.error('[checkIsOpenNow] error:', err);\n return true;\n }\n}\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\t\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n\t// Получаем информацию о минимальной сумме заказа и времени работы из spot\n\tif (orderOrganization.value && orderOrganization.value[0]?.spots?.length > 0) {\n\t spotOrganization.value = orderOrganization.value[0].spots[0];\n\t\tisOpen.value = checkIsOpenNow(spotOrganization.value.worktime);\n\t console.log(spotOrganization.value)\n\t minOrderAmount.value = spotOrganization.value.minorder || 0;\n\t}\n\n\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n \n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["ref","useRoute","useRouter","useGlobalMixins","computed","orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","onMounted","users.actions","organizations.actions","shopcart.state","watch","order","orders.actions","shopcart.actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OrderCreate.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\n\t<!-- Empty State -->\n\t<EmptyState \n\t\tv-if=\"shopcart.state.positions < 1\" \n\t/>\t\n\t<Succes \n\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t:order=\"order\" \n\t/>\n\t<!-- Уведомления о минимальной сумме заказа и времени работы -->\n\t<div v-if=\"shopcart.state.positions.length > 0\" class=\"w-100 gap-thin cols-1 mn-b-thin\">\n\t\t<div v-if=\"!isOpen\" class=\"bg-fifth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ This spot is currently closed. You can place an order, but it will be processed when the spot opens.</p>\n\t\t</div>\n\t\t<div v-if=\"cartTotalPrice < minOrderAmount\" class=\"bg-fourth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ Minimum order amount is {{ formatPrice(minOrderAmount) }}. Your current total is {{ formatPrice(cartTotalPrice) }}.</p>\n\t\t</div>\n\t</div>\n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2 mobile:cols-1\">\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\tv-model:customer=\"orders.state.current.customer\"\n\t\t\t :showAdminFields=\"false\"\n\t\t\t :showButtons=\"false\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"(product, index) in shopcart.state.positions\" \n\t\t\t\t\t:key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:productId=\"product._id\"\n\t\t\t\t\t:variantId=\"product.variant\"\n\t\t\t\t\t:images=\"product.images\"\n\t\t\t\t\t:name=\"product.name\"\n\t\t\t\t\t:quantity=\"product.quantity\"\n\t\t\t\t\t:unit=\"product.unit\"\n\t\t\t\t\t:dates=\"product.date\"\n\t\t\t\t\t:listing=\"product.listing\"\n\t\t\t\t\t:price=\"product.price\"\n\t :increase=\"() => shopcart.actions.incrementItemQuantity(product._id, product.variant)\"\n\t :decrease=\"() => shopcart.actions.decrementItemQuantity(product._id, product.variant)\"\n\t :remove=\"() => shopcart.actions.removeProduct(product._id, product.variant)\"\n\t\t\t\t\t@updateRentDates=\"(productId, variantId, dates) => shopcart.actions.updateRentDates({ productId, variantId, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t || cartTotalPrice < minOrderAmount\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\nimport * as orders from '@martyrs/src/modules/orders/store/orders.js';\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency, formatPrice } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\nconst spotOrganization = ref({})\nconst isOpen = ref(true)\n\n// Новые переменные для проверки минимальной суммы заказа и времени работы\nconst minOrderAmount = ref(0)\n\nfunction checkIsOpenNow(worktime) {\n try {\n console.log('[checkIsOpenNow] worktime:', worktime);\n\n if (\n !worktime ||\n typeof worktime !== 'object' ||\n Array.isArray(worktime) ||\n !worktime.regular\n ) {\n console.log('[checkIsOpenNow] invalid, returning true');\n return true;\n }\n\n const now = new Date();\n const currentDay = now.getDay();\n const currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\n console.log('[checkIsOpenNow] currentDay:', currentDay);\n console.log('[checkIsOpenNow] currentTime:', currentTime);\n\n const specialDay = worktime.special?.find(s => {\n const d = new Date(s.date);\n return (\n d.getFullYear() === today.getFullYear() &&\n d.getMonth() === today.getMonth() &&\n d.getDate() === today.getDate()\n );\n });\n\n if (specialDay) {\n console.log('[checkIsOpenNow] specialDay:', specialDay);\n if (!specialDay.isOpen) return false;\n return specialDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n }\n\n const regularDay = worktime.regular.find(d => d.dayOfWeek === currentDay);\n if (!regularDay || !regularDay.isOpen) return false;\n\n return regularDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n } catch (err) {\n console.error('[checkIsOpenNow] error:', err);\n return true;\n }\n}\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\t\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n\t// Получаем информацию о минимальной сумме заказа и времени работы из spot\n\tif (orderOrganization.value && orderOrganization.value[0]?.spots?.length > 0) {\n\t spotOrganization.value = orderOrganization.value[0].spots[0];\n\t\tisOpen.value = checkIsOpenNow(spotOrganization.value.worktime);\n\t console.log(spotOrganization.value)\n\t minOrderAmount.value = spotOrganization.value.minorder || 0;\n\t}\n\n\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n \n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["ref","useRoute","useRouter","useGlobalMixins","computed","orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","onMounted","users.actions","organizations.actions","shopcart.state","watch","order","orders.actions","shopcart.actions"],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ const _hoisted_4 = {
|
|
|
31
31
|
class: "bg-fourth-nano pd-small radius-medium t-center"
|
|
32
32
|
};
|
|
33
33
|
const _hoisted_5 = { class: "t-fourth" };
|
|
34
|
-
const _hoisted_6 = { class: "gap-small mn-b-thin cols-2" };
|
|
34
|
+
const _hoisted_6 = { class: "gap-small mn-b-thin cols-2 mobile:cols-1" };
|
|
35
35
|
const _hoisted_7 = {
|
|
36
36
|
key: 0,
|
|
37
37
|
class: "rows-1 gap-thin"
|
|
@@ -274,7 +274,9 @@ const _sfc_main = {
|
|
|
274
274
|
state.current.status !== true && state$4.positions.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_7, [
|
|
275
275
|
createVNode(_sfc_main$4, {
|
|
276
276
|
customer: state.current.customer,
|
|
277
|
-
"onUpdate:customer": _cache[0] || (_cache[0] = ($event) => state.current.customer = $event)
|
|
277
|
+
"onUpdate:customer": _cache[0] || (_cache[0] = ($event) => state.current.customer = $event),
|
|
278
|
+
showAdminFields: false,
|
|
279
|
+
showButtons: false
|
|
278
280
|
}, null, 8, ["customer"]),
|
|
279
281
|
state.current.status !== true && state$4.positions.length > 0 ? (openBlock(), createBlock(_sfc_main$5, {
|
|
280
282
|
key: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderCreate.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\n\t<!-- Empty State -->\n\t<EmptyState \n\t\tv-if=\"shopcart.state.positions < 1\" \n\t/>\t\n\t<Succes \n\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t:order=\"order\" \n\t/>\n\t<!-- Уведомления о минимальной сумме заказа и времени работы -->\n\t<div v-if=\"shopcart.state.positions.length > 0\" class=\"w-100 gap-thin cols-1 mn-b-thin\">\n\t\t<div v-if=\"!isOpen\" class=\"bg-fifth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ This spot is currently closed. You can place an order, but it will be processed when the spot opens.</p>\n\t\t</div>\n\t\t<div v-if=\"cartTotalPrice < minOrderAmount\" class=\"bg-fourth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ Minimum order amount is {{ formatPrice(minOrderAmount) }}. Your current total is {{ formatPrice(cartTotalPrice) }}.</p>\n\t\t</div>\n\t</div>\n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2\">\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\tv-model:customer=\"orders.state.current.customer\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"(product, index) in shopcart.state.positions\" \n\t\t\t\t\t:key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:productId=\"product._id\"\n\t\t\t\t\t:variantId=\"product.variant\"\n\t\t\t\t\t:images=\"product.images\"\n\t\t\t\t\t:name=\"product.name\"\n\t\t\t\t\t:quantity=\"product.quantity\"\n\t\t\t\t\t:unit=\"product.unit\"\n\t\t\t\t\t:dates=\"product.date\"\n\t\t\t\t\t:listing=\"product.listing\"\n\t\t\t\t\t:price=\"product.price\"\n\t :increase=\"() => shopcart.actions.incrementItemQuantity(product._id, product.variant)\"\n\t :decrease=\"() => shopcart.actions.decrementItemQuantity(product._id, product.variant)\"\n\t :remove=\"() => shopcart.actions.removeProduct(product._id, product.variant)\"\n\t\t\t\t\t@updateRentDates=\"(productId, variantId, dates) => shopcart.actions.updateRentDates({ productId, variantId, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t || cartTotalPrice < minOrderAmount\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\nimport * as orders from '@martyrs/src/modules/orders/store/orders.js';\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency, formatPrice } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\nconst spotOrganization = ref({})\nconst isOpen = ref(true)\n\n// Новые переменные для проверки минимальной суммы заказа и времени работы\nconst minOrderAmount = ref(0)\n\nfunction checkIsOpenNow(worktime) {\n try {\n console.log('[checkIsOpenNow] worktime:', worktime);\n\n if (\n !worktime ||\n typeof worktime !== 'object' ||\n Array.isArray(worktime) ||\n !worktime.regular\n ) {\n console.log('[checkIsOpenNow] invalid, returning true');\n return true;\n }\n\n const now = new Date();\n const currentDay = now.getDay();\n const currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\n console.log('[checkIsOpenNow] currentDay:', currentDay);\n console.log('[checkIsOpenNow] currentTime:', currentTime);\n\n const specialDay = worktime.special?.find(s => {\n const d = new Date(s.date);\n return (\n d.getFullYear() === today.getFullYear() &&\n d.getMonth() === today.getMonth() &&\n d.getDate() === today.getDate()\n );\n });\n\n if (specialDay) {\n console.log('[checkIsOpenNow] specialDay:', specialDay);\n if (!specialDay.isOpen) return false;\n return specialDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n }\n\n const regularDay = worktime.regular.find(d => d.dayOfWeek === currentDay);\n if (!regularDay || !regularDay.isOpen) return false;\n\n return regularDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n } catch (err) {\n console.error('[checkIsOpenNow] error:', err);\n return true;\n }\n}\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\t\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n\t// Получаем информацию о минимальной сумме заказа и времени работы из spot\n\tif (orderOrganization.value && orderOrganization.value[0]?.spots?.length > 0) {\n\t spotOrganization.value = orderOrganization.value[0].spots[0];\n\t\tisOpen.value = checkIsOpenNow(spotOrganization.value.worktime);\n\t console.log(spotOrganization.value)\n\t minOrderAmount.value = spotOrganization.value.minorder || 0;\n\t}\n\n\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n \n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","users.actions","organizations.actions","shopcart.state","order","orders.actions","shopcart.actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OrderCreate.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\n\t<!-- Empty State -->\n\t<EmptyState \n\t\tv-if=\"shopcart.state.positions < 1\" \n\t/>\t\n\t<Succes \n\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t:order=\"order\" \n\t/>\n\t<!-- Уведомления о минимальной сумме заказа и времени работы -->\n\t<div v-if=\"shopcart.state.positions.length > 0\" class=\"w-100 gap-thin cols-1 mn-b-thin\">\n\t\t<div v-if=\"!isOpen\" class=\"bg-fifth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ This spot is currently closed. You can place an order, but it will be processed when the spot opens.</p>\n\t\t</div>\n\t\t<div v-if=\"cartTotalPrice < minOrderAmount\" class=\"bg-fourth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ Minimum order amount is {{ formatPrice(minOrderAmount) }}. Your current total is {{ formatPrice(cartTotalPrice) }}.</p>\n\t\t</div>\n\t</div>\n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2 mobile:cols-1\">\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\tv-model:customer=\"orders.state.current.customer\"\n\t\t\t :showAdminFields=\"false\"\n\t\t\t :showButtons=\"false\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"(product, index) in shopcart.state.positions\" \n\t\t\t\t\t:key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:productId=\"product._id\"\n\t\t\t\t\t:variantId=\"product.variant\"\n\t\t\t\t\t:images=\"product.images\"\n\t\t\t\t\t:name=\"product.name\"\n\t\t\t\t\t:quantity=\"product.quantity\"\n\t\t\t\t\t:unit=\"product.unit\"\n\t\t\t\t\t:dates=\"product.date\"\n\t\t\t\t\t:listing=\"product.listing\"\n\t\t\t\t\t:price=\"product.price\"\n\t :increase=\"() => shopcart.actions.incrementItemQuantity(product._id, product.variant)\"\n\t :decrease=\"() => shopcart.actions.decrementItemQuantity(product._id, product.variant)\"\n\t :remove=\"() => shopcart.actions.removeProduct(product._id, product.variant)\"\n\t\t\t\t\t@updateRentDates=\"(productId, variantId, dates) => shopcart.actions.updateRentDates({ productId, variantId, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t || cartTotalPrice < minOrderAmount\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\nimport * as orders from '@martyrs/src/modules/orders/store/orders.js';\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency, formatPrice } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\nconst spotOrganization = ref({})\nconst isOpen = ref(true)\n\n// Новые переменные для проверки минимальной суммы заказа и времени работы\nconst minOrderAmount = ref(0)\n\nfunction checkIsOpenNow(worktime) {\n try {\n console.log('[checkIsOpenNow] worktime:', worktime);\n\n if (\n !worktime ||\n typeof worktime !== 'object' ||\n Array.isArray(worktime) ||\n !worktime.regular\n ) {\n console.log('[checkIsOpenNow] invalid, returning true');\n return true;\n }\n\n const now = new Date();\n const currentDay = now.getDay();\n const currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\n console.log('[checkIsOpenNow] currentDay:', currentDay);\n console.log('[checkIsOpenNow] currentTime:', currentTime);\n\n const specialDay = worktime.special?.find(s => {\n const d = new Date(s.date);\n return (\n d.getFullYear() === today.getFullYear() &&\n d.getMonth() === today.getMonth() &&\n d.getDate() === today.getDate()\n );\n });\n\n if (specialDay) {\n console.log('[checkIsOpenNow] specialDay:', specialDay);\n if (!specialDay.isOpen) return false;\n return specialDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n }\n\n const regularDay = worktime.regular.find(d => d.dayOfWeek === currentDay);\n if (!regularDay || !regularDay.isOpen) return false;\n\n return regularDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n } catch (err) {\n console.error('[checkIsOpenNow] error:', err);\n return true;\n }\n}\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\t\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n\t// Получаем информацию о минимальной сумме заказа и времени работы из spot\n\tif (orderOrganization.value && orderOrganization.value[0]?.spots?.length > 0) {\n\t spotOrganization.value = orderOrganization.value[0].spots[0];\n\t\tisOpen.value = checkIsOpenNow(spotOrganization.value.worktime);\n\t console.log(spotOrganization.value)\n\t minOrderAmount.value = spotOrganization.value.minorder || 0;\n\t}\n\n\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n \n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","users.actions","organizations.actions","shopcart.state","order","orders.actions","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgKA,UAAM,QAAQ;AAKd,UAAM,oBAAoB,IAAI,KAAK;AAErB,aAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,gBAAgB,YAAW,IAAK,gBAAe;AAEvD,UAAM,QAAQ,SAAS,MAAMA,MAAa,OAAO;AACpC,aAAS,MAAMC,QAAY,OAAO;AAE/C,UAAM,iBAAiBC,QAAiB;AAExC,UAAM,eAAe,SAAS,MAAM;AAClC,YAAM,OAAOF,MAAa,QAAQ,SAAS;AAC3C,YAAM,WAAW,kBAAkB,MAAM,CAAC,GAAG,YAAY;AACzD,YAAM,SAASG,QAAc,SAAS,QAAQ,oBAAoB,CAAA;AAElE,aAAOC,UAAe,iBAAiB,MAAM,UAAU,MAAM;AAAA,IAC/D,CAAC;AAGD,UAAM,oBAAoB,IAAI,CAAA,CAAE;AAChC,UAAM,mBAAmB,IAAI,CAAA,CAAE;AAC/B,UAAM,SAAS,IAAI,IAAI;AAGvB,UAAM,iBAAiB,IAAI,CAAC;AAE5B,aAAS,eAAe,UAAU;AAChC,UAAI;AACF,gBAAQ,IAAI,8BAA8B,QAAQ;AAElD,YACE,CAAC,YACD,OAAO,aAAa,YACpB,MAAM,QAAQ,QAAQ,KACtB,CAAC,SAAS,SACV;AACA,kBAAQ,IAAI,0CAA0C;AACtD,iBAAO;AAAA,QACT;AAEA,cAAM,MAAM,oBAAI,KAAI;AACpB,cAAM,aAAa,IAAI,OAAM;AAC7B,cAAM,cAAc,GAAG,OAAO,IAAI,UAAU,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,IAAI,WAAU,CAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAC3G,cAAM,QAAQ,IAAI,KAAK,IAAI,YAAW,GAAI,IAAI,SAAQ,GAAI,IAAI,SAAS;AAEvE,gBAAQ,IAAI,gCAAgC,UAAU;AACtD,gBAAQ,IAAI,iCAAiC,WAAW;AAExD,cAAM,aAAa,SAAS,SAAS,KAAK,OAAK;AAC7C,gBAAM,IAAI,IAAI,KAAK,EAAE,IAAI;AACzB,iBACE,EAAE,YAAW,MAAO,MAAM,YAAW,KACrC,EAAE,SAAQ,MAAO,MAAM,SAAQ,KAC/B,EAAE,cAAc,MAAM,QAAO;AAAA,QAEjC,CAAC;AAED,YAAI,YAAY;AACd,kBAAQ,IAAI,gCAAgC,UAAU;AACtD,cAAI,CAAC,WAAW,OAAQ,QAAO;AAC/B,iBAAO,WAAW,SAAS,KAAK,OAAK,EAAE,QAAQ,eAAe,EAAE,QAAQ,WAAW;AAAA,QACrF;AAEA,cAAM,aAAa,SAAS,QAAQ,KAAK,OAAK,EAAE,cAAc,UAAU;AACxE,YAAI,CAAC,cAAc,CAAC,WAAW,OAAQ,QAAO;AAE9C,eAAO,WAAW,SAAS,KAAK,OAAK,EAAE,QAAQ,eAAe,EAAE,QAAQ,WAAW;AAAA,MACrF,SAAS,KAAK;AACZ,gBAAQ,MAAM,2BAA2B,GAAG;AAC5C,eAAO;AAAA,MACT;AAAA,IACF;AAGA,QAAI,CAACD,QAAc,QAAQ,OAAO,8BAA8B,CAACE,QAAW,KAAK,KAAK;AACrF,aAAO,KAAK,EAAC,MAAM,UAAS,CAAC;AAAA,IAC9B;AAGAC,cAAiB,WAAU;AAE3B,cAAU,YAAU;AACnB,YAAM,cAAc;AAEpB,wBAAkB,QAAQ;AAE1B,UAAID,QAAW,KAAK,KAAK;AACb,cAAME,QAAc,KAAK,EAAE,KAAIF,QAAW,KAAK,KAAK,MAAMA,QAAW,KAAK,IAAG,CAAE;AAE1FL,cAAa,QAAQ,SAAS,QAAQ,OAAOC,QAAY,QAAQ,QAAQ;AACzED,cAAa,QAAQ,SAAS,QAAQC,QAAY,QAAQ;AAC1DD,cAAa,QAAQ,SAAS,QAAQC,QAAY,QAAQ;AAAA,MAC3D;AAEA,wBAAkB,QAAQ,MAAMO,UAAsB,KAAK;AAAA,QACzD,KAAKC,QAAe;AAAA,QACpB,UAAUN,QAAc,UAAU;AAAA,QAClC,QAAQ,CAAC,OAAO;AAAA,MACnB,CAAE;AAGD,UAAI,kBAAkB,SAAS,kBAAkB,MAAM,CAAC,GAAG,OAAO,SAAS,GAAG;AAC5E,yBAAiB,QAAQ,kBAAkB,MAAM,CAAC,EAAE,MAAM,CAAC;AAC5D,eAAO,QAAQ,eAAe,iBAAiB,MAAM,QAAQ;AAC5D,gBAAQ,IAAI,iBAAiB,KAAK;AAClC,uBAAe,QAAQ,iBAAiB,MAAM,YAAY;AAAA,MAC5D;AAIC,wBAAkB,QAAQ;AAC1B,YAAM,aAAa;AAEnB,UAAI,OAAO,SAAS,YAAY;AAC9B,aAAK,SAAS,kBAAkB;AAAA,UAC9B,UAAU,eAAc;AAAA;AAAA,UACxB,OAAO,kBAAkB;AAAA,UACzB,OAAOM,QAAe,UAAU,IAAI,WAAS;AAAA,YAC3C,SAAS,KAAK,SAAS;AAAA,YACvB,WAAW,KAAK,SAAS;AAAA,YACzB,OAAO,KAAK,SAAS;AAAA,YACrB,UAAU,KAAK,YAAY;AAAA,YAC3B,eAAe,KAAK,SAAS,YAAY;AAAA,YACzC,YAAY,kBAAkB,MAAM,SAAS,QAAQ;AAAA,UAC7D,EAAQ;AAAA,UACF,cAAc,kBAAkB,MAAM,SAAS,QAAQ;AAAA,UACvD,UAAUN,QAAc,UAAU,YAAY;AAAA,QACpD,CAAK;AAAA,MACH;AAAA,IACF,CAAC;AAGD;AAAA,MACE,MAAMH,MAAa,QAAQ;AAAA,MAC3B,OAAO,WAAW;AAChB,YAAI,QAAQ,UAAU;AACrB,4BAAkB,QAAQ;AAEzB,4BAAkB,QAAQ,MAAMQ,UAAsB,KAAK;AAAA,YACzD,KAAKC,QAAe;AAAA,YACpB,UAAU,OAAO;AAAA,YACjB,QAAQ,CAAC,OAAO;AAAA,UACxB,CAAO;AAED,4BAAkB,QAAQ;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,EAAE,MAAM,KAAI;AAAA,IACd;AAMA,UAAM,YAAY,SAAS,MAAM;AAC/B,UAAIT,MAAa,QAAQ,SAAS,MAAM,SAAS,GAAG;AAAE,eAAO;AAAA,MAAK,OAAO;AAAE,eAAO;AAAA,MAAM;AAAA,IAC1F,CAAC;AAED,UAAM,wBAAwB,SAAS,MAAM;AAC3C,YAAM,mBAAmBA,MAAa,QAAQ,SAAS,WAAW;AAClE,YAAM,oBAAoBA,MAAa,QAAQ,SAAS,WAAW,OAAO,SAAU;AACpF,YAAM,WAAWA,MAAa,QAAQ,SAAS,QAAQ,SAAS;AAEhE,aAAO,CAAC,YAAY,EAAE,oBAAoB;AAAA,IAC5C,CAAC;AAED,UAAM,eAAe,SAAS,MAAM;AAClC,YAAM,OAAOA,MAAa,QAAQ,SAAS;AAC3C,UAAI,SAAS,UAAU;AACrB,eAAO,CAACA,MAAa,QAAQ,SAAS;AAAA,MACxC,WAAW,SAAS,aAAa,SAAS,QAAQ;AAChD,cAAM,UAAUA,MAAa,QAAQ,SAAS;AAC9C,eAAO,CAAC,WAAW,OAAO,YAAY,YAAY,QAAQ,SAAS;AAAA,MACrE;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,gBAAgB,SAAS,MAAM;AACnC,UAAIA,MAAa,QAAQ,SAAS,MAAM;AAAC,eAAO;AAAA,MAAM,OAAO;AAAC,eAAO;AAAA,MAAK;AAAA,IAC5E,CAAC;AAED,UAAM,eAAe,SAAS,MAAM;AAClC,UAAIA,MAAa,QAAQ,QAAQ,MAAM;AAAE,eAAO;AAAA,MAAM,OAAO;AAAC,eAAO;AAAA,MAAK;AAAA,IAC5E,CAAC;AAID,mBAAe,eAAe;AAE7BA,YAAa,QAAQ,SAAS;AAE9BA,YAAa,QAAQ,QAAQ;AAAA,QAC5B,QAAQ,kBAAkB,MAAM,CAAC,EAAE;AAAA,QACnC,MAAM;AAAA,MACR;AAEC,UAAIK,QAAW,KAAK,KAAK;AACxBL,cAAa,QAAQ,UAAU;AAAA,UAC9B,QAAQK,QAAW,KAAK;AAAA,UACxB,MAAM;AAAA,QACT;AAAA,MACC;AAEA,UAAIA,QAAW,KAAK,KAAK;AACxBL,cAAa,QAAQ,WAAW;AAAA,UAC/B,QAAQK,QAAW,KAAK;AAAA,UACxB,MAAM;AAAA,QACT;AAAA,MACC;AAEAL,YAAa,QAAQ,YAAYS,QAAe;AAE/C,YAAM,eAAe,aAAa,QAAQ,aAAa;AAEvD,UAAI,cAAc;AAChBT,cAAa,QAAQ,eAAe;AAAA,MACtC;AAEA,UAAIU,SAAQ,MAAMC,UAAe,OAAOX,MAAa,OAAO;AAE3D,UAAIU,QAAO;AACX,YAAI,OAAO,SAAS,YAAY;AAC9B,eAAK,SAAS,YAAY;AAAA,YACxB,gBAAgBA,OAAM;AAAA,YACtB,OAAO,kBAAkB;AAAA,YACzB,UAAU,eAAc;AAAA;AAAA,YACxB,KAAK;AAAA;AAAA,YACL,UAAU,aAAa;AAAA;AAAA,YACvB,OAAOD,QAAe,UAAU,IAAI,WAAS;AAAA,cAC3C,SAAS,KAAK,SAAS;AAAA,cACvB,WAAW,KAAK,SAAS;AAAA,cACzB,OAAO,KAAK,SAAS;AAAA,cACrB,UAAU,KAAK,YAAY;AAAA,cAC3B,eAAe,KAAK,SAAS,YAAY;AAAA,YAClD,EAAS;AAAA,YACF,cAAc,kBAAkB,OAAO,SAAS;AAAA,YAChD,UAAUN,QAAc,UAAU,YAAY;AAAA,YAC9C,eAAe,gBAAgB;AAAA,YAC/B,SAASE,QAAW,KAAK,OAAO;AAAA,UACvC,CAAM;AAAA,QACH;AAAA,MACF;AAEC,UAAIK,QAAO;AACV,cAAM,OAAO,KAAK;AAAA,UACjB,MAAM;AAAA,UACN,QAAQ;AAAA,YACP,OAAOA,OAAM;AAAA,UAClB;AAAA,QACA,CAAI;AAEDE,kBAAiB,cAAa;AAAA,MAE/B,OAAO;AACN,cAAM,iBAAiB;AAAA,MACxB;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -66,7 +66,7 @@ const _sfc_main = {
|
|
|
66
66
|
"onUpdate:radio": ($event) => __props.order.delivery.type = $event,
|
|
67
67
|
label: capitalize(type),
|
|
68
68
|
value: type,
|
|
69
|
-
class: "bg-white pd-medium radius-small w-100 mn-r-small"
|
|
69
|
+
class: "bg-white field-wrapper cursor-pointer pd-medium radius-small w-100 mn-r-small"
|
|
70
70
|
}, null, 8, ["radio", "onUpdate:radio", "label", "value"]);
|
|
71
71
|
}), 128))
|
|
72
72
|
])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, "No delivery options available.")),
|
|
@@ -82,7 +82,7 @@ const _sfc_main = {
|
|
|
82
82
|
showPaymentOptions: false,
|
|
83
83
|
selected: __props.order.delivery.spot === spot._id,
|
|
84
84
|
onClick: () => __props.order.delivery.spot = __props.order.delivery.spot === spot._id ? null : spot._id,
|
|
85
|
-
class: "mn-b-thin radius-medium o-hidden bg-white"
|
|
85
|
+
class: "field-wrapper cursor-pointer mn-b-thin radius-medium o-hidden bg-white"
|
|
86
86
|
}, null, 8, ["spot", "organization", "selected", "onClick"]);
|
|
87
87
|
}), 128))
|
|
88
88
|
], 64)) : __props.order.delivery.type === "courier" || __props.order.delivery.type === "post" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 3 }, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormDelivery.vue.cjs","sources":["../../../../../../../src/modules/orders/components/sections/FormDelivery.vue"],"sourcesContent":["<template>\n <Block title=\"Delivery\">\n <h5 class=\"font-second mn-b-thin\">Select delivery type</h5>\n \n <div class=\"mn-b-small flex-nowrap flex\" v-if=\"availableDeliveryTypes.length\">\n <Radio \n v-for=\"type in availableDeliveryTypes\"\n :key=\"type\"\n v-model:radio=\"order.delivery.type\"\n :label=\"capitalize(type)\"\n :value=\"type\"\n class=\"bg-white pd-medium radius-small w-100 mn-r-small\"\n />\n </div>\n <div v-else>No delivery options available.</div>\n\n <!-- Раздел для Pickup -->\n <template v-if=\"order.delivery.type === 'pickup'\">\n <h5 class=\"font-second mn-b-thin\">Select pickup spot</h5>\n <CardSpot\n v-for=\"(spot, index) in organization?.spots.filter(item => item.delivery?.includes('pickup'))\"\n :key=\"index\"\n :spot=\"spot\"\n :organization=\"order.organization\"\n :editAcess=\"false\"\n :showDeliveryOptions=\"false\"\n :showPaymentOptions=\"false\"\n :selected=\"order.delivery.spot === spot._id\"\n @click=\"() => order.delivery.spot = order.delivery.spot === spot._id ? null : spot._id\"\n class=\"mn-b-thin radius-medium o-hidden bg-white\"\n />\n </template>\n\n <!-- Раздел для Courier -->\n <template v-else-if=\"order.delivery.type === 'courier' || order.delivery.type === 'post'\">\n <h5 class=\"font-second mn-b-thin\">Address</h5>\n <Address\n label=\"Location\" \n :apiKey=\"GOOGLE_MAPS_API_KEY\" \n :address=\"order.delivery.address\" \n :location=\"order.delivery.location\" \n placeholder=\"Enter your address\" \n class=\"bg-white radius-tl-medium radius-tr-medium t-black pd-medium\"\n @update:location=\"newLocation => { order.delivery.location = newLocation; }\"\n @update:address=\"newAddress => { order.delivery.address = newAddress; }\"\n />\n <!-- Карта доставки -->\n <LocationMarker \n :apiKey=\"GOOGLE_MAPS_API_KEY\" \n :address=\"order.delivery.address\" \n :location=\"order.delivery.location\"\n class=\"mn-b-thin radius-bl-medium radius-br-medium h-15r o-hidden\"\n @update:location=\"newLocation => { \n if (order.delivery.type === 'courier') order.delivery.location = newLocation;\n }\"\n @update:address=\"newAddress => { \n if (order.delivery.type === 'courier') order.delivery.address = newAddress;\n }\"\n />\n </template>\n <!-- Комментарии -->\n <Field \n v-model:field=\"order.comment\" \n placeholder=\"Comments regarding the address (apartment unit, floor level, building section)\"\n type=\"textarea\" \n class=\"bg-white pd-medium radius-small\"\n />\n </Block>\n</template>\n\n<script setup>\nimport { watch, computed, onMounted } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport CardSpot from '@martyrs/src/modules/spots/components/blocks/CardSpot.vue'; \nimport * as spotsModule from '@martyrs/src/modules/spots/store/spots.js';\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Address from '@martyrs/src/components/Address/Address.vue';\nimport LocationMarker from '@martyrs/src/components/LocationMarker/LocationMarker.vue';\nimport Radio from '@martyrs/src/components/Radio/Radio.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\n\nconst props = defineProps({\n order: Object,\n organization: Object,\n});\n\nconst route = useRoute();\n\n// Сбрасываем spot при переключении типа доставки\nwatch(() => props.order.delivery.type, (newType) => {\n if (newType !== 'pickup') {\n props.order.delivery.spot = null;\n }\n});\n\n// Устанавливаем начальные данные из globals при монтировании\nonMounted(() => {\n if (globals.state.position) {\n props.order.delivery.address = globals.state.position.address;\n props.order.delivery.location = globals.state.position.location;\n }\n});\n\nconst availableDeliveryTypes = computed(() => {\n const types = new Set()\n props.organization?.spots?.forEach(spot => {\n spot.delivery?.forEach(type => types.add(type))\n })\n return Array.from(types)\n})\n\nfunction capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\n</script>"],"names":["useRoute","watch","onMounted","globals.state","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFA,UAAM,QAAQ;AAKAA,cAAAA,SAAQ;AAGtBC,QAAAA,MAAM,MAAM,MAAM,MAAM,SAAS,MAAM,CAAC,YAAY;AAClD,UAAI,YAAY,UAAU;AACxB,cAAM,MAAM,SAAS,OAAO;AAAA,MAC9B;AAAA,IACF,CAAC;AAGDC,QAAAA,UAAU,MAAM;AACd,UAAIC,QAAAA,MAAc,UAAU;AAC1B,cAAM,MAAM,SAAS,UAAUA,QAAAA,MAAc,SAAS;AACtD,cAAM,MAAM,SAAS,WAAWA,QAAAA,MAAc,SAAS;AAAA,MACzD;AAAA,IACF,CAAC;AAED,UAAM,yBAAyBC,IAAAA,SAAS,MAAM;AAC5C,YAAM,QAAQ,oBAAI,IAAG;AACrB,YAAM,cAAc,OAAO,QAAQ,UAAQ;AACzC,aAAK,UAAU,QAAQ,UAAQ,MAAM,IAAI,IAAI,CAAC;AAAA,MAChD,CAAC;AACD,aAAO,MAAM,KAAK,KAAK;AAAA,IACzB,CAAC;AAED,aAAS,WAAW,KAAK;AACvB,aAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,IAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"FormDelivery.vue.cjs","sources":["../../../../../../../src/modules/orders/components/sections/FormDelivery.vue"],"sourcesContent":["<template>\n <Block title=\"Delivery\">\n <h5 class=\"font-second mn-b-thin\">Select delivery type</h5>\n \n <div class=\"mn-b-small flex-nowrap flex\" v-if=\"availableDeliveryTypes.length\">\n <Radio \n v-for=\"type in availableDeliveryTypes\"\n :key=\"type\"\n v-model:radio=\"order.delivery.type\"\n :label=\"capitalize(type)\"\n :value=\"type\"\n class=\"bg-white field-wrapper cursor-pointer pd-medium radius-small w-100 mn-r-small\"\n />\n </div>\n <div v-else>No delivery options available.</div>\n\n <!-- Раздел для Pickup -->\n <template v-if=\"order.delivery.type === 'pickup'\">\n <h5 class=\"font-second mn-b-thin\">Select pickup spot</h5>\n <CardSpot\n v-for=\"(spot, index) in organization?.spots.filter(item => item.delivery?.includes('pickup'))\"\n :key=\"index\"\n :spot=\"spot\"\n :organization=\"order.organization\"\n :editAcess=\"false\"\n :showDeliveryOptions=\"false\"\n :showPaymentOptions=\"false\"\n :selected=\"order.delivery.spot === spot._id\"\n @click=\"() => order.delivery.spot = order.delivery.spot === spot._id ? null : spot._id\"\n class=\"field-wrapper cursor-pointer mn-b-thin radius-medium o-hidden bg-white\"\n />\n </template>\n\n <!-- Раздел для Courier -->\n <template v-else-if=\"order.delivery.type === 'courier' || order.delivery.type === 'post'\">\n <h5 class=\"font-second mn-b-thin\">Address</h5>\n <Address\n label=\"Location\" \n :apiKey=\"GOOGLE_MAPS_API_KEY\" \n :address=\"order.delivery.address\" \n :location=\"order.delivery.location\" \n placeholder=\"Enter your address\" \n class=\"bg-white radius-tl-medium radius-tr-medium t-black pd-medium\"\n @update:location=\"newLocation => { order.delivery.location = newLocation; }\"\n @update:address=\"newAddress => { order.delivery.address = newAddress; }\"\n />\n <!-- Карта доставки -->\n <LocationMarker \n :apiKey=\"GOOGLE_MAPS_API_KEY\" \n :address=\"order.delivery.address\" \n :location=\"order.delivery.location\"\n class=\"mn-b-thin radius-bl-medium radius-br-medium h-15r o-hidden\"\n @update:location=\"newLocation => { \n if (order.delivery.type === 'courier') order.delivery.location = newLocation;\n }\"\n @update:address=\"newAddress => { \n if (order.delivery.type === 'courier') order.delivery.address = newAddress;\n }\"\n />\n </template>\n <!-- Комментарии -->\n <Field \n v-model:field=\"order.comment\" \n placeholder=\"Comments regarding the address (apartment unit, floor level, building section)\"\n type=\"textarea\" \n class=\"bg-white pd-medium radius-small\"\n />\n </Block>\n</template>\n\n<script setup>\nimport { watch, computed, onMounted } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport CardSpot from '@martyrs/src/modules/spots/components/blocks/CardSpot.vue'; \nimport * as spotsModule from '@martyrs/src/modules/spots/store/spots.js';\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Address from '@martyrs/src/components/Address/Address.vue';\nimport LocationMarker from '@martyrs/src/components/LocationMarker/LocationMarker.vue';\nimport Radio from '@martyrs/src/components/Radio/Radio.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\n\nconst props = defineProps({\n order: Object,\n organization: Object,\n});\n\nconst route = useRoute();\n\n// Сбрасываем spot при переключении типа доставки\nwatch(() => props.order.delivery.type, (newType) => {\n if (newType !== 'pickup') {\n props.order.delivery.spot = null;\n }\n});\n\n// Устанавливаем начальные данные из globals при монтировании\nonMounted(() => {\n if (globals.state.position) {\n props.order.delivery.address = globals.state.position.address;\n props.order.delivery.location = globals.state.position.location;\n }\n});\n\nconst availableDeliveryTypes = computed(() => {\n const types = new Set()\n props.organization?.spots?.forEach(spot => {\n spot.delivery?.forEach(type => types.add(type))\n })\n return Array.from(types)\n})\n\nfunction capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\n</script>"],"names":["useRoute","watch","onMounted","globals.state","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFA,UAAM,QAAQ;AAKAA,cAAAA,SAAQ;AAGtBC,QAAAA,MAAM,MAAM,MAAM,MAAM,SAAS,MAAM,CAAC,YAAY;AAClD,UAAI,YAAY,UAAU;AACxB,cAAM,MAAM,SAAS,OAAO;AAAA,MAC9B;AAAA,IACF,CAAC;AAGDC,QAAAA,UAAU,MAAM;AACd,UAAIC,QAAAA,MAAc,UAAU;AAC1B,cAAM,MAAM,SAAS,UAAUA,QAAAA,MAAc,SAAS;AACtD,cAAM,MAAM,SAAS,WAAWA,QAAAA,MAAc,SAAS;AAAA,MACzD;AAAA,IACF,CAAC;AAED,UAAM,yBAAyBC,IAAAA,SAAS,MAAM;AAC5C,YAAM,QAAQ,oBAAI,IAAG;AACrB,YAAM,cAAc,OAAO,QAAQ,UAAQ;AACzC,aAAK,UAAU,QAAQ,UAAQ,MAAM,IAAI,IAAI,CAAC;AAAA,MAChD,CAAC;AACD,aAAO,MAAM,KAAK,KAAK;AAAA,IACzB,CAAC;AAED,aAAS,WAAW,KAAK;AACvB,aAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,IAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -64,7 +64,7 @@ const _sfc_main = {
|
|
|
64
64
|
"onUpdate:radio": ($event) => __props.order.delivery.type = $event,
|
|
65
65
|
label: capitalize(type),
|
|
66
66
|
value: type,
|
|
67
|
-
class: "bg-white pd-medium radius-small w-100 mn-r-small"
|
|
67
|
+
class: "bg-white field-wrapper cursor-pointer pd-medium radius-small w-100 mn-r-small"
|
|
68
68
|
}, null, 8, ["radio", "onUpdate:radio", "label", "value"]);
|
|
69
69
|
}), 128))
|
|
70
70
|
])) : (openBlock(), createElementBlock("div", _hoisted_2, "No delivery options available.")),
|
|
@@ -80,7 +80,7 @@ const _sfc_main = {
|
|
|
80
80
|
showPaymentOptions: false,
|
|
81
81
|
selected: __props.order.delivery.spot === spot._id,
|
|
82
82
|
onClick: () => __props.order.delivery.spot = __props.order.delivery.spot === spot._id ? null : spot._id,
|
|
83
|
-
class: "mn-b-thin radius-medium o-hidden bg-white"
|
|
83
|
+
class: "field-wrapper cursor-pointer mn-b-thin radius-medium o-hidden bg-white"
|
|
84
84
|
}, null, 8, ["spot", "organization", "selected", "onClick"]);
|
|
85
85
|
}), 128))
|
|
86
86
|
], 64)) : __props.order.delivery.type === "courier" || __props.order.delivery.type === "post" ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormDelivery.vue.js","sources":["../../../../../../../src/modules/orders/components/sections/FormDelivery.vue"],"sourcesContent":["<template>\n <Block title=\"Delivery\">\n <h5 class=\"font-second mn-b-thin\">Select delivery type</h5>\n \n <div class=\"mn-b-small flex-nowrap flex\" v-if=\"availableDeliveryTypes.length\">\n <Radio \n v-for=\"type in availableDeliveryTypes\"\n :key=\"type\"\n v-model:radio=\"order.delivery.type\"\n :label=\"capitalize(type)\"\n :value=\"type\"\n class=\"bg-white pd-medium radius-small w-100 mn-r-small\"\n />\n </div>\n <div v-else>No delivery options available.</div>\n\n <!-- Раздел для Pickup -->\n <template v-if=\"order.delivery.type === 'pickup'\">\n <h5 class=\"font-second mn-b-thin\">Select pickup spot</h5>\n <CardSpot\n v-for=\"(spot, index) in organization?.spots.filter(item => item.delivery?.includes('pickup'))\"\n :key=\"index\"\n :spot=\"spot\"\n :organization=\"order.organization\"\n :editAcess=\"false\"\n :showDeliveryOptions=\"false\"\n :showPaymentOptions=\"false\"\n :selected=\"order.delivery.spot === spot._id\"\n @click=\"() => order.delivery.spot = order.delivery.spot === spot._id ? null : spot._id\"\n class=\"mn-b-thin radius-medium o-hidden bg-white\"\n />\n </template>\n\n <!-- Раздел для Courier -->\n <template v-else-if=\"order.delivery.type === 'courier' || order.delivery.type === 'post'\">\n <h5 class=\"font-second mn-b-thin\">Address</h5>\n <Address\n label=\"Location\" \n :apiKey=\"GOOGLE_MAPS_API_KEY\" \n :address=\"order.delivery.address\" \n :location=\"order.delivery.location\" \n placeholder=\"Enter your address\" \n class=\"bg-white radius-tl-medium radius-tr-medium t-black pd-medium\"\n @update:location=\"newLocation => { order.delivery.location = newLocation; }\"\n @update:address=\"newAddress => { order.delivery.address = newAddress; }\"\n />\n <!-- Карта доставки -->\n <LocationMarker \n :apiKey=\"GOOGLE_MAPS_API_KEY\" \n :address=\"order.delivery.address\" \n :location=\"order.delivery.location\"\n class=\"mn-b-thin radius-bl-medium radius-br-medium h-15r o-hidden\"\n @update:location=\"newLocation => { \n if (order.delivery.type === 'courier') order.delivery.location = newLocation;\n }\"\n @update:address=\"newAddress => { \n if (order.delivery.type === 'courier') order.delivery.address = newAddress;\n }\"\n />\n </template>\n <!-- Комментарии -->\n <Field \n v-model:field=\"order.comment\" \n placeholder=\"Comments regarding the address (apartment unit, floor level, building section)\"\n type=\"textarea\" \n class=\"bg-white pd-medium radius-small\"\n />\n </Block>\n</template>\n\n<script setup>\nimport { watch, computed, onMounted } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport CardSpot from '@martyrs/src/modules/spots/components/blocks/CardSpot.vue'; \nimport * as spotsModule from '@martyrs/src/modules/spots/store/spots.js';\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Address from '@martyrs/src/components/Address/Address.vue';\nimport LocationMarker from '@martyrs/src/components/LocationMarker/LocationMarker.vue';\nimport Radio from '@martyrs/src/components/Radio/Radio.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\n\nconst props = defineProps({\n order: Object,\n organization: Object,\n});\n\nconst route = useRoute();\n\n// Сбрасываем spot при переключении типа доставки\nwatch(() => props.order.delivery.type, (newType) => {\n if (newType !== 'pickup') {\n props.order.delivery.spot = null;\n }\n});\n\n// Устанавливаем начальные данные из globals при монтировании\nonMounted(() => {\n if (globals.state.position) {\n props.order.delivery.address = globals.state.position.address;\n props.order.delivery.location = globals.state.position.location;\n }\n});\n\nconst availableDeliveryTypes = computed(() => {\n const types = new Set()\n props.organization?.spots?.forEach(spot => {\n spot.delivery?.forEach(type => types.add(type))\n })\n return Array.from(types)\n})\n\nfunction capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\n</script>"],"names":["globals.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFA,UAAM,QAAQ;AAKA,aAAQ;AAGtB,UAAM,MAAM,MAAM,MAAM,SAAS,MAAM,CAAC,YAAY;AAClD,UAAI,YAAY,UAAU;AACxB,cAAM,MAAM,SAAS,OAAO;AAAA,MAC9B;AAAA,IACF,CAAC;AAGD,cAAU,MAAM;AACd,UAAIA,MAAc,UAAU;AAC1B,cAAM,MAAM,SAAS,UAAUA,MAAc,SAAS;AACtD,cAAM,MAAM,SAAS,WAAWA,MAAc,SAAS;AAAA,MACzD;AAAA,IACF,CAAC;AAED,UAAM,yBAAyB,SAAS,MAAM;AAC5C,YAAM,QAAQ,oBAAI,IAAG;AACrB,YAAM,cAAc,OAAO,QAAQ,UAAQ;AACzC,aAAK,UAAU,QAAQ,UAAQ,MAAM,IAAI,IAAI,CAAC;AAAA,MAChD,CAAC;AACD,aAAO,MAAM,KAAK,KAAK;AAAA,IACzB,CAAC;AAED,aAAS,WAAW,KAAK;AACvB,aAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,IAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"FormDelivery.vue.js","sources":["../../../../../../../src/modules/orders/components/sections/FormDelivery.vue"],"sourcesContent":["<template>\n <Block title=\"Delivery\">\n <h5 class=\"font-second mn-b-thin\">Select delivery type</h5>\n \n <div class=\"mn-b-small flex-nowrap flex\" v-if=\"availableDeliveryTypes.length\">\n <Radio \n v-for=\"type in availableDeliveryTypes\"\n :key=\"type\"\n v-model:radio=\"order.delivery.type\"\n :label=\"capitalize(type)\"\n :value=\"type\"\n class=\"bg-white field-wrapper cursor-pointer pd-medium radius-small w-100 mn-r-small\"\n />\n </div>\n <div v-else>No delivery options available.</div>\n\n <!-- Раздел для Pickup -->\n <template v-if=\"order.delivery.type === 'pickup'\">\n <h5 class=\"font-second mn-b-thin\">Select pickup spot</h5>\n <CardSpot\n v-for=\"(spot, index) in organization?.spots.filter(item => item.delivery?.includes('pickup'))\"\n :key=\"index\"\n :spot=\"spot\"\n :organization=\"order.organization\"\n :editAcess=\"false\"\n :showDeliveryOptions=\"false\"\n :showPaymentOptions=\"false\"\n :selected=\"order.delivery.spot === spot._id\"\n @click=\"() => order.delivery.spot = order.delivery.spot === spot._id ? null : spot._id\"\n class=\"field-wrapper cursor-pointer mn-b-thin radius-medium o-hidden bg-white\"\n />\n </template>\n\n <!-- Раздел для Courier -->\n <template v-else-if=\"order.delivery.type === 'courier' || order.delivery.type === 'post'\">\n <h5 class=\"font-second mn-b-thin\">Address</h5>\n <Address\n label=\"Location\" \n :apiKey=\"GOOGLE_MAPS_API_KEY\" \n :address=\"order.delivery.address\" \n :location=\"order.delivery.location\" \n placeholder=\"Enter your address\" \n class=\"bg-white radius-tl-medium radius-tr-medium t-black pd-medium\"\n @update:location=\"newLocation => { order.delivery.location = newLocation; }\"\n @update:address=\"newAddress => { order.delivery.address = newAddress; }\"\n />\n <!-- Карта доставки -->\n <LocationMarker \n :apiKey=\"GOOGLE_MAPS_API_KEY\" \n :address=\"order.delivery.address\" \n :location=\"order.delivery.location\"\n class=\"mn-b-thin radius-bl-medium radius-br-medium h-15r o-hidden\"\n @update:location=\"newLocation => { \n if (order.delivery.type === 'courier') order.delivery.location = newLocation;\n }\"\n @update:address=\"newAddress => { \n if (order.delivery.type === 'courier') order.delivery.address = newAddress;\n }\"\n />\n </template>\n <!-- Комментарии -->\n <Field \n v-model:field=\"order.comment\" \n placeholder=\"Comments regarding the address (apartment unit, floor level, building section)\"\n type=\"textarea\" \n class=\"bg-white pd-medium radius-small\"\n />\n </Block>\n</template>\n\n<script setup>\nimport { watch, computed, onMounted } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport CardSpot from '@martyrs/src/modules/spots/components/blocks/CardSpot.vue'; \nimport * as spotsModule from '@martyrs/src/modules/spots/store/spots.js';\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Address from '@martyrs/src/components/Address/Address.vue';\nimport LocationMarker from '@martyrs/src/components/LocationMarker/LocationMarker.vue';\nimport Radio from '@martyrs/src/components/Radio/Radio.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\n\nconst props = defineProps({\n order: Object,\n organization: Object,\n});\n\nconst route = useRoute();\n\n// Сбрасываем spot при переключении типа доставки\nwatch(() => props.order.delivery.type, (newType) => {\n if (newType !== 'pickup') {\n props.order.delivery.spot = null;\n }\n});\n\n// Устанавливаем начальные данные из globals при монтировании\nonMounted(() => {\n if (globals.state.position) {\n props.order.delivery.address = globals.state.position.address;\n props.order.delivery.location = globals.state.position.location;\n }\n});\n\nconst availableDeliveryTypes = computed(() => {\n const types = new Set()\n props.organization?.spots?.forEach(spot => {\n spot.delivery?.forEach(type => types.add(type))\n })\n return Array.from(types)\n})\n\nfunction capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\n</script>"],"names":["globals.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFA,UAAM,QAAQ;AAKA,aAAQ;AAGtB,UAAM,MAAM,MAAM,MAAM,SAAS,MAAM,CAAC,YAAY;AAClD,UAAI,YAAY,UAAU;AACxB,cAAM,MAAM,SAAS,OAAO;AAAA,MAC9B;AAAA,IACF,CAAC;AAGD,cAAU,MAAM;AACd,UAAIA,MAAc,UAAU;AAC1B,cAAM,MAAM,SAAS,UAAUA,MAAc,SAAS;AACtD,cAAM,MAAM,SAAS,WAAWA,MAAc,SAAS;AAAA,MACzD;AAAA,IACF,CAAC;AAED,UAAM,yBAAyB,SAAS,MAAM;AAC5C,YAAM,QAAQ,oBAAI,IAAG;AACrB,YAAM,cAAc,OAAO,QAAQ,UAAQ;AACzC,aAAK,UAAU,QAAQ,UAAQ,MAAM,IAAI,IAAI,CAAC;AAAA,MAChD,CAAC;AACD,aAAO,MAAM,KAAK,KAAK;AAAA,IACzB,CAAC;AAED,aAAS,WAAW,KAAK;AACvB,aAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,IAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -34,6 +34,7 @@ function initializeOrders(app, store, router, options = {}) {
|
|
|
34
34
|
const routeBackoffice = options.routeBackoffice || "Backoffice Root";
|
|
35
35
|
const routeOrganizations = options.routeOrganizations || "OrganizationRoot";
|
|
36
36
|
const routeUsers = options.routeUsers || "User Profile Root";
|
|
37
|
+
if (typeof window !== "undefined") shopcart.actions.setShopcart();
|
|
37
38
|
addRoutes.default(router, {
|
|
38
39
|
parentName: route,
|
|
39
40
|
basePath: "orders",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders.client.cjs","sources":["../../../../../src/modules/orders/orders.client.js"],"sourcesContent":["// Store\nimport * as storeOrders from './store/orders.js';\nimport * as storeShopcart from './store/shopcart.js';\nimport * as storeTestimonials from './store/testimonials.js';\nimport storeCustomers from './store/customers.store.js';\nimport storeApplications from './store/applications.js';\n// Router\nimport addRoutes from '@martyrs/src/modules/globals/views/router/addRoutes.js';\nimport routerOrders from './router/orders.router.js';\nimport routerCustomers from './router/customers.router.js';\nimport routerApplications from './router/applications.router.js';\n// Views\nimport OrderCreate from './components/pages/OrderCreate.vue';\nimport OrderCreateBackoffice from './components/pages/OrderCreateBackoffice.vue';\nimport Orders from './components/pages/Orders.vue';\nimport Customers from './components/pages/Customers.vue';\nimport Applications from './components/pages/Applications.vue';\n// import Favorites from './components/pages/Favorites.vue';\n// Importing blocks components\nimport CardOrder from './components/blocks/CardOrder.vue';\nimport CardOrderItem from './components/blocks/CardOrderItem.vue';\nimport CardOrderUser from './components/blocks/CardOrderUser.vue';\nimport CardCustomer from './components/blocks/CardCustomer.vue';\nimport StatusHistory from './components/blocks/StatusHistory.vue';\n// Importing sections components\nimport AskToLogin from './components/sections/AskToLogin.vue';\nimport EmptyState from './components/sections/EmptyState.vue';\nimport FormCustomerDetails from './components/forms/FormCustomerDetails.vue';\nimport FormDelivery from './components/sections/FormDelivery.vue';\nimport FormPayment from './components/sections/FormPayment.vue';\nimport Succes from './components/sections/Succes.vue';\n// Importing partials components\nimport ShopCart from './components/partials/ShopCart.vue';\n\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\nimport locales from './locales/index.js';\n\n// Пример функции инициализации для модуля заказов\nfunction initializeOrders(app, store, router, options = {}) {\n // Регистрируем локализацию для модуля orders\n i18nManager.register('orders', locales);\n const route = options.route || 'Home';\n const routeBackoffice = options.routeBackoffice || 'Backoffice Root';\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n const routeUsers = options.routeUsers || 'User Profile Root';\n\n addRoutes(router, {\n parentName: route,\n basePath: 'orders',\n routes: routerOrders,\n routeNamePrefix: '',\n filterConfig: {\n include: ['CreateOrder', 'Order'], // Только создание заказа на корневом уровне\n },\n meta: {\n context: 'root',\n },\n });\n\n // Backoffice routes\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'orders', // Промежуточный маршрут /backoffice/orders\n routes: routerOrders,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['OrdersList', 'AdminCreateOrder', 'Order', 'OrderEdit'], // Специфичные для бэкофиса маршруты\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // User routes\n if (!options.withUserRoutes) {\n addRoutes(router, {\n parentName: routeUsers,\n basePath: 'orders', // Промежуточный маршрут /user/orders\n routes: routerOrders,\n routeNamePrefix: 'User',\n filterConfig: {\n include: ['OrdersList', 'Order'], // Специфичные для пользователя маршруты\n },\n meta: {\n context: 'user',\n },\n });\n }\n\n // Organization routes\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'orders', // Промежуточный маршрут /organization/orders\n routes: routerOrders,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['OrdersList', 'Order', 'AdminCreateOrder', 'OrderEdit'], // Специфичные для организации маршруты\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Customer routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['CustomersList'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Customer routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['CustomersList'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Application routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Application routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n store.addStore('orders', storeOrders);\n store.addStore('shopcart', storeShopcart);\n store.addStore('testimonials', storeTestimonials);\n store.addStore('customers', storeCustomers);\n store.addStore('applications', storeApplications);\n}\n\nconst ModuleOrder = {\n initialize: initializeOrders,\n store: {\n storeOrders,\n storeShopcart,\n storeTestimonials,\n storeCustomers,\n storeApplications,\n },\n router: {\n routerOrders,\n routerCustomers,\n routerApplications,\n },\n components: {\n // Pages\n Orders,\n Customers,\n Applications,\n // Order,\n OrderCreate,\n OrderCreateBackoffice,\n // Favorites,\n // Blocks\n CardOrderItem,\n CardOrder,\n CardOrderUser,\n CardCustomer,\n StatusHistory,\n // Sections\n FormCustomerDetails,\n AskToLogin,\n FormDelivery,\n EmptyState,\n Succes,\n FormPayment,\n // Partials\n ShopCart,\n },\n};\n\nexport default ModuleOrder;\n"],"names":["i18nManager","locales","addRoutes","routerOrders","routerCustomers","routerApplications","storeOrders","storeShopcart","storeTestimonials","storeCustomers","storeApplications","Orders","Customers","Applications","OrderCreate","OrderCreateBackoffice","CardOrderItem","CardOrder","CardOrderUser","CardCustomer","StatusHistory","FormCustomerDetails","AskToLogin","FormDelivery","EmptyState","Succes","FormPayment","ShopCart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orders.client.cjs","sources":["../../../../../src/modules/orders/orders.client.js"],"sourcesContent":["// Store\nimport * as storeOrders from './store/orders.js';\nimport * as storeShopcart from './store/shopcart.js';\nimport * as storeTestimonials from './store/testimonials.js';\nimport storeCustomers from './store/customers.store.js';\nimport storeApplications from './store/applications.js';\n// Router\nimport addRoutes from '@martyrs/src/modules/globals/views/router/addRoutes.js';\nimport routerOrders from './router/orders.router.js';\nimport routerCustomers from './router/customers.router.js';\nimport routerApplications from './router/applications.router.js';\n// Views\nimport OrderCreate from './components/pages/OrderCreate.vue';\nimport OrderCreateBackoffice from './components/pages/OrderCreateBackoffice.vue';\nimport Orders from './components/pages/Orders.vue';\nimport Customers from './components/pages/Customers.vue';\nimport Applications from './components/pages/Applications.vue';\n// import Favorites from './components/pages/Favorites.vue';\n// Importing blocks components\nimport CardOrder from './components/blocks/CardOrder.vue';\nimport CardOrderItem from './components/blocks/CardOrderItem.vue';\nimport CardOrderUser from './components/blocks/CardOrderUser.vue';\nimport CardCustomer from './components/blocks/CardCustomer.vue';\nimport StatusHistory from './components/blocks/StatusHistory.vue';\n// Importing sections components\nimport AskToLogin from './components/sections/AskToLogin.vue';\nimport EmptyState from './components/sections/EmptyState.vue';\nimport FormCustomerDetails from './components/forms/FormCustomerDetails.vue';\nimport FormDelivery from './components/sections/FormDelivery.vue';\nimport FormPayment from './components/sections/FormPayment.vue';\nimport Succes from './components/sections/Succes.vue';\n// Importing partials components\nimport ShopCart from './components/partials/ShopCart.vue';\n\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\nimport locales from './locales/index.js';\n\n// Пример функции инициализации для модуля заказов\nfunction initializeOrders(app, store, router, options = {}) {\n // Регистрируем локализацию для модуля orders\n i18nManager.register('orders', locales);\n const route = options.route || 'Home';\n const routeBackoffice = options.routeBackoffice || 'Backoffice Root';\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n const routeUsers = options.routeUsers || 'User Profile Root';\n\n if (typeof window !== 'undefined') storeShopcart.actions.setShopcart()\n\n addRoutes(router, {\n parentName: route,\n basePath: 'orders',\n routes: routerOrders,\n routeNamePrefix: '',\n filterConfig: {\n include: ['CreateOrder', 'Order'], // Только создание заказа на корневом уровне\n },\n meta: {\n context: 'root',\n },\n });\n\n // Backoffice routes\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'orders', // Промежуточный маршрут /backoffice/orders\n routes: routerOrders,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['OrdersList', 'AdminCreateOrder', 'Order', 'OrderEdit'], // Специфичные для бэкофиса маршруты\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // User routes\n if (!options.withUserRoutes) {\n addRoutes(router, {\n parentName: routeUsers,\n basePath: 'orders', // Промежуточный маршрут /user/orders\n routes: routerOrders,\n routeNamePrefix: 'User',\n filterConfig: {\n include: ['OrdersList', 'Order'], // Специфичные для пользователя маршруты\n },\n meta: {\n context: 'user',\n },\n });\n }\n\n // Organization routes\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'orders', // Промежуточный маршрут /organization/orders\n routes: routerOrders,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['OrdersList', 'Order', 'AdminCreateOrder', 'OrderEdit'], // Специфичные для организации маршруты\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Customer routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['CustomersList'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Customer routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['CustomersList'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Application routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Application routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n store.addStore('orders', storeOrders);\n store.addStore('shopcart', storeShopcart);\n store.addStore('testimonials', storeTestimonials);\n store.addStore('customers', storeCustomers);\n store.addStore('applications', storeApplications);\n}\n\nconst ModuleOrder = {\n initialize: initializeOrders,\n store: {\n storeOrders,\n storeShopcart,\n storeTestimonials,\n storeCustomers,\n storeApplications,\n },\n router: {\n routerOrders,\n routerCustomers,\n routerApplications,\n },\n components: {\n // Pages\n Orders,\n Customers,\n Applications,\n // Order,\n OrderCreate,\n OrderCreateBackoffice,\n // Favorites,\n // Blocks\n CardOrderItem,\n CardOrder,\n CardOrderUser,\n CardCustomer,\n StatusHistory,\n // Sections\n FormCustomerDetails,\n AskToLogin,\n FormDelivery,\n EmptyState,\n Succes,\n FormPayment,\n // Partials\n ShopCart,\n },\n};\n\nexport default ModuleOrder;\n"],"names":["i18nManager","locales","storeShopcart.actions","addRoutes","routerOrders","routerCustomers","routerApplications","storeOrders","storeShopcart","storeTestimonials","storeCustomers","storeApplications","Orders","Customers","Applications","OrderCreate","OrderCreateBackoffice","CardOrderItem","CardOrder","CardOrderUser","CardCustomer","StatusHistory","FormCustomerDetails","AskToLogin","FormDelivery","EmptyState","Succes","FormPayment","ShopCart"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as orders from "./store/orders.js";
|
|
2
2
|
import * as shopcart from "./store/shopcart.js";
|
|
3
|
+
import { actions } from "./store/shopcart.js";
|
|
3
4
|
import * as testimonials from "./store/testimonials.js";
|
|
4
5
|
import customers from "./store/customers.store.js";
|
|
5
6
|
import applications from "./store/applications.js";
|
|
@@ -32,6 +33,7 @@ function initializeOrders(app, store, router, options = {}) {
|
|
|
32
33
|
const routeBackoffice = options.routeBackoffice || "Backoffice Root";
|
|
33
34
|
const routeOrganizations = options.routeOrganizations || "OrganizationRoot";
|
|
34
35
|
const routeUsers = options.routeUsers || "User Profile Root";
|
|
36
|
+
if (typeof window !== "undefined") actions.setShopcart();
|
|
35
37
|
addRoutes(router, {
|
|
36
38
|
parentName: route,
|
|
37
39
|
basePath: "orders",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders.client.js","sources":["../../../../../src/modules/orders/orders.client.js"],"sourcesContent":["// Store\nimport * as storeOrders from './store/orders.js';\nimport * as storeShopcart from './store/shopcart.js';\nimport * as storeTestimonials from './store/testimonials.js';\nimport storeCustomers from './store/customers.store.js';\nimport storeApplications from './store/applications.js';\n// Router\nimport addRoutes from '@martyrs/src/modules/globals/views/router/addRoutes.js';\nimport routerOrders from './router/orders.router.js';\nimport routerCustomers from './router/customers.router.js';\nimport routerApplications from './router/applications.router.js';\n// Views\nimport OrderCreate from './components/pages/OrderCreate.vue';\nimport OrderCreateBackoffice from './components/pages/OrderCreateBackoffice.vue';\nimport Orders from './components/pages/Orders.vue';\nimport Customers from './components/pages/Customers.vue';\nimport Applications from './components/pages/Applications.vue';\n// import Favorites from './components/pages/Favorites.vue';\n// Importing blocks components\nimport CardOrder from './components/blocks/CardOrder.vue';\nimport CardOrderItem from './components/blocks/CardOrderItem.vue';\nimport CardOrderUser from './components/blocks/CardOrderUser.vue';\nimport CardCustomer from './components/blocks/CardCustomer.vue';\nimport StatusHistory from './components/blocks/StatusHistory.vue';\n// Importing sections components\nimport AskToLogin from './components/sections/AskToLogin.vue';\nimport EmptyState from './components/sections/EmptyState.vue';\nimport FormCustomerDetails from './components/forms/FormCustomerDetails.vue';\nimport FormDelivery from './components/sections/FormDelivery.vue';\nimport FormPayment from './components/sections/FormPayment.vue';\nimport Succes from './components/sections/Succes.vue';\n// Importing partials components\nimport ShopCart from './components/partials/ShopCart.vue';\n\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\nimport locales from './locales/index.js';\n\n// Пример функции инициализации для модуля заказов\nfunction initializeOrders(app, store, router, options = {}) {\n // Регистрируем локализацию для модуля orders\n i18nManager.register('orders', locales);\n const route = options.route || 'Home';\n const routeBackoffice = options.routeBackoffice || 'Backoffice Root';\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n const routeUsers = options.routeUsers || 'User Profile Root';\n\n addRoutes(router, {\n parentName: route,\n basePath: 'orders',\n routes: routerOrders,\n routeNamePrefix: '',\n filterConfig: {\n include: ['CreateOrder', 'Order'], // Только создание заказа на корневом уровне\n },\n meta: {\n context: 'root',\n },\n });\n\n // Backoffice routes\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'orders', // Промежуточный маршрут /backoffice/orders\n routes: routerOrders,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['OrdersList', 'AdminCreateOrder', 'Order', 'OrderEdit'], // Специфичные для бэкофиса маршруты\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // User routes\n if (!options.withUserRoutes) {\n addRoutes(router, {\n parentName: routeUsers,\n basePath: 'orders', // Промежуточный маршрут /user/orders\n routes: routerOrders,\n routeNamePrefix: 'User',\n filterConfig: {\n include: ['OrdersList', 'Order'], // Специфичные для пользователя маршруты\n },\n meta: {\n context: 'user',\n },\n });\n }\n\n // Organization routes\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'orders', // Промежуточный маршрут /organization/orders\n routes: routerOrders,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['OrdersList', 'Order', 'AdminCreateOrder', 'OrderEdit'], // Специфичные для организации маршруты\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Customer routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['CustomersList'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Customer routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['CustomersList'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Application routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Application routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n store.addStore('orders', storeOrders);\n store.addStore('shopcart', storeShopcart);\n store.addStore('testimonials', storeTestimonials);\n store.addStore('customers', storeCustomers);\n store.addStore('applications', storeApplications);\n}\n\nconst ModuleOrder = {\n initialize: initializeOrders,\n store: {\n storeOrders,\n storeShopcart,\n storeTestimonials,\n storeCustomers,\n storeApplications,\n },\n router: {\n routerOrders,\n routerCustomers,\n routerApplications,\n },\n components: {\n // Pages\n Orders,\n Customers,\n Applications,\n // Order,\n OrderCreate,\n OrderCreateBackoffice,\n // Favorites,\n // Blocks\n CardOrderItem,\n CardOrder,\n CardOrderUser,\n CardCustomer,\n StatusHistory,\n // Sections\n FormCustomerDetails,\n AskToLogin,\n FormDelivery,\n EmptyState,\n Succes,\n FormPayment,\n // Partials\n ShopCart,\n },\n};\n\nexport default ModuleOrder;\n"],"names":["routerOrders","routerCustomers","routerApplications","storeOrders","storeShopcart","storeTestimonials","storeCustomers","storeApplications","Orders","Customers","Applications","OrderCreate","OrderCreateBackoffice","CardOrderItem","StatusHistory","FormCustomerDetails","AskToLogin","FormDelivery","EmptyState","Succes","FormPayment","ShopCart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orders.client.js","sources":["../../../../../src/modules/orders/orders.client.js"],"sourcesContent":["// Store\nimport * as storeOrders from './store/orders.js';\nimport * as storeShopcart from './store/shopcart.js';\nimport * as storeTestimonials from './store/testimonials.js';\nimport storeCustomers from './store/customers.store.js';\nimport storeApplications from './store/applications.js';\n// Router\nimport addRoutes from '@martyrs/src/modules/globals/views/router/addRoutes.js';\nimport routerOrders from './router/orders.router.js';\nimport routerCustomers from './router/customers.router.js';\nimport routerApplications from './router/applications.router.js';\n// Views\nimport OrderCreate from './components/pages/OrderCreate.vue';\nimport OrderCreateBackoffice from './components/pages/OrderCreateBackoffice.vue';\nimport Orders from './components/pages/Orders.vue';\nimport Customers from './components/pages/Customers.vue';\nimport Applications from './components/pages/Applications.vue';\n// import Favorites from './components/pages/Favorites.vue';\n// Importing blocks components\nimport CardOrder from './components/blocks/CardOrder.vue';\nimport CardOrderItem from './components/blocks/CardOrderItem.vue';\nimport CardOrderUser from './components/blocks/CardOrderUser.vue';\nimport CardCustomer from './components/blocks/CardCustomer.vue';\nimport StatusHistory from './components/blocks/StatusHistory.vue';\n// Importing sections components\nimport AskToLogin from './components/sections/AskToLogin.vue';\nimport EmptyState from './components/sections/EmptyState.vue';\nimport FormCustomerDetails from './components/forms/FormCustomerDetails.vue';\nimport FormDelivery from './components/sections/FormDelivery.vue';\nimport FormPayment from './components/sections/FormPayment.vue';\nimport Succes from './components/sections/Succes.vue';\n// Importing partials components\nimport ShopCart from './components/partials/ShopCart.vue';\n\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\nimport locales from './locales/index.js';\n\n// Пример функции инициализации для модуля заказов\nfunction initializeOrders(app, store, router, options = {}) {\n // Регистрируем локализацию для модуля orders\n i18nManager.register('orders', locales);\n const route = options.route || 'Home';\n const routeBackoffice = options.routeBackoffice || 'Backoffice Root';\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n const routeUsers = options.routeUsers || 'User Profile Root';\n\n if (typeof window !== 'undefined') storeShopcart.actions.setShopcart()\n\n addRoutes(router, {\n parentName: route,\n basePath: 'orders',\n routes: routerOrders,\n routeNamePrefix: '',\n filterConfig: {\n include: ['CreateOrder', 'Order'], // Только создание заказа на корневом уровне\n },\n meta: {\n context: 'root',\n },\n });\n\n // Backoffice routes\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'orders', // Промежуточный маршрут /backoffice/orders\n routes: routerOrders,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['OrdersList', 'AdminCreateOrder', 'Order', 'OrderEdit'], // Специфичные для бэкофиса маршруты\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // User routes\n if (!options.withUserRoutes) {\n addRoutes(router, {\n parentName: routeUsers,\n basePath: 'orders', // Промежуточный маршрут /user/orders\n routes: routerOrders,\n routeNamePrefix: 'User',\n filterConfig: {\n include: ['OrdersList', 'Order'], // Специфичные для пользователя маршруты\n },\n meta: {\n context: 'user',\n },\n });\n }\n\n // Organization routes\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'orders', // Промежуточный маршрут /organization/orders\n routes: routerOrders,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['OrdersList', 'Order', 'AdminCreateOrder', 'OrderEdit'], // Специфичные для организации маршруты\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Customer routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['CustomersList'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Customer routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['CustomersList'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Application routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Application routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n store.addStore('orders', storeOrders);\n store.addStore('shopcart', storeShopcart);\n store.addStore('testimonials', storeTestimonials);\n store.addStore('customers', storeCustomers);\n store.addStore('applications', storeApplications);\n}\n\nconst ModuleOrder = {\n initialize: initializeOrders,\n store: {\n storeOrders,\n storeShopcart,\n storeTestimonials,\n storeCustomers,\n storeApplications,\n },\n router: {\n routerOrders,\n routerCustomers,\n routerApplications,\n },\n components: {\n // Pages\n Orders,\n Customers,\n Applications,\n // Order,\n OrderCreate,\n OrderCreateBackoffice,\n // Favorites,\n // Blocks\n CardOrderItem,\n CardOrder,\n CardOrderUser,\n CardCustomer,\n StatusHistory,\n // Sections\n FormCustomerDetails,\n AskToLogin,\n FormDelivery,\n EmptyState,\n Succes,\n FormPayment,\n // Partials\n ShopCart,\n },\n};\n\nexport default ModuleOrder;\n"],"names":["storeShopcart.actions","routerOrders","routerCustomers","routerApplications","storeOrders","storeShopcart","storeTestimonials","storeCustomers","storeApplications","Orders","Customers","Applications","OrderCreate","OrderCreateBackoffice","CardOrderItem","StatusHistory","FormCustomerDetails","AskToLogin","FormDelivery","EmptyState","Succes","FormPayment","ShopCart"],"mappings":"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"}
|