@ozdao/martyrs 0.2.423 → 0.2.425
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/builder.js +2 -12
- package/dist/builder.mjs +2 -12
- package/dist/martyrs/src/components/Chips/{Chips.vue2.cjs → Chips.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue2.js → Chips.vue.js} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -0
- package/dist/martyrs/src/components/Popup/{Popup.vue.cjs → Popup.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Popup/{Popup.vue.js → Popup.vue2.js} +2 -2
- package/dist/martyrs/src/components/Popup/{Popup.vue.cjs.map → Popup.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.cjs → SelectMulti.vue.cjs} +2 -2
- package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.js.map → SelectMulti.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.js → SelectMulti.vue.js} +2 -2
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +9 -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 +10 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +2 -2
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
- package/dist/martyrs/src/modules/globals/globals.client.cjs +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +21 -16
- 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 +28 -23
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +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/OrganizationBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
- package/dist/organizations.server.js +1 -0
- package/dist/organizations.server.mjs +1 -0
- package/dist/style.css +3 -3
- package/package.json +1 -1
- package/src/builder/modes/spa.dev.js +3 -1
- package/src/builder/modes/spa.prod.js +1 -1
- package/src/builder/modes/ssr.dev.js +10 -10
- package/src/modules/auth/views/components/pages/Profile.vue +20 -2
- package/src/modules/globals/globals.client.js +1 -1
- package/src/modules/globals/views/components/partials/Header.vue +1 -0
- package/src/modules/orders/components/pages/OrderBackoffice.vue +9 -3
- package/src/modules/organizations/controllers/memberships.controller.js +1 -0
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Popup/Popup.vue.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.vue.js","sources":["../../../../../../../../src/modules/globals/views/components/partials/Header.vue"],"sourcesContent":["<script setup=\"props\">\n\timport { computed, onMounted, toRefs, ref, inject } from 'vue'\n\n\timport { useRouter,useRoute } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\t\n\timport * as globals from '@martyrs/src/modules/globals/views/store/globals'\n\timport * as shopcart from '@martyrs/src/modules/orders/store/shopcart'\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth'\n\t\n\t// Globasls Component\n\n\timport NotificationBadge from '@martyrs/src/modules/notifications/components/elements/NotificationBadge.vue';\n\t// import Navigation from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue'\n\t// Martyrs Component\n\timport Button from '@martyrs/src/components/Button/Button.vue'\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\t// Icons module\n\timport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue'\n\timport IconProfile from '@martyrs/src/modules/icons/entities/IconProfile.vue'\n\timport IconSearch from '@martyrs/src/modules/icons/navigation/IconSearch.vue';\n\t// Props\n\tconst props = defineProps({\n theme: {\n \ttype: String,\n\t default: \"light\"\n },\n logotype: {\n\t type: Object\n\t },\n\t location: {\n\t type: Boolean,\n\t\t default: true\n\t },\n\t theme_switcher: {\n\t type: Boolean,\n\t\t default: true\n\t },\n });\n\t// Accessing state\n\tconst router = useRouter()\n\tconst route = useRoute()\n\t// Localization\n\tconst { t } = useI18n()\n\t// const search = computed(() => store.products.state.search)\n\n\tfunction openLocationPopup() {\n\t globals.state.isOpenLocationPopup = true;\n\t}\n\t/////////////////////////////\n\t// MOUNTED\n\t/////////////////////////////\n\tonMounted(() => {\n shopcart.actions.setShopcart()\n });\n</script>\n\n<template>\n\t<header \n\t\tid=\"header\" \n\t\tclass=\"\n\t\t\tpd-thin \n\t\t\tgap-micro\n\t\t\tflex-justify-between\n\t\t\tflex-nowrap\n\t\t\tflex\n\t\t\th-4r\n\t\t\tw-100\n\t\t\tz-index-2 \n\t\t\tpos-relative pos-t-0\n\t\t\tbr-b\n\t\t\tbr-solid\n\t\t\tbr-light\n\t\t\"\n\t\t:class=\"{\n \t\t't-black': theme === 'light',\n \t\t't-white': theme === 'dark' \n \t}\"\n\t>\n\t<div class=\"flex-nowrap flex-v-center flex-justify-start flex gap-micro \">\n\t\t<!-- MENU -->\n\t\t<button \n\t\t\taria-label=\"menu\"\n\t\t\t@click=\"() => globals.state.isOpenSidebar = !globals.state.isOpenSidebar\" \n\t\t\tclass=\"cursor-pointer menu-btn\"\n\t\t\t:class=\"{\n\t\t\t\t'menu-btn_active': globals.state.isOpenSidebar\n\t\t\t}\"\n\t\t>\n\t <span\n\t \tclass=\"no-events\"\n\t\t :class=\"{\n\t\t 'bg-black': theme === 'light',\n\t\t 'bg-white': theme === 'dark'\n\t\t }\"\n\t\t >\n\t\t <span class=\"menu-btn__before\" :class=\"{ 'bg-black': theme === 'light', 'bg-white': theme === 'dark' }\"></span>\n\t\t <span class=\"menu-btn__after\" :class=\"{ 'bg-black': theme === 'light', 'bg-white': theme === 'dark' }\"></span>\n\t\t </span>\n\t </button>\n\n\t\t<!-- LOGO -->\n\t\t<component\n\t\t\tv-if=\"logotype\"\n\t\t :is=\"logotype\"\n\t\t @click=\"router.push({ path: '/' })\" \n\t\t :theme=\"theme\"\n\t\t class=\"cursor-pointer\"\n\t\t/>\n\n\t\t<button\n\t\t\tv-if=\"location\"\n\t\t\taria-label=\"button_location\"\n \tclass=\"\n \t\tcursor-pointer\n \t\tbg-transp \n \t\tpd-l-micro pd-r-micro\n \t\tradius-extra \n \t\tuppercase \n \t\tt-semi\n \t\tbr-solid \n \t\tbr-2px \n \t\ttransition-linear\n \t\n \t\"\n \t:class=\"{\n \t\t'fill-black br-black t-black hover-bg-black hover-t-white hover-fill-white': theme === 'light',\n \t\t'fill-white br-white t-white hover-bg-white hover-t-black hover-fill-black': theme === 'dark' \n \t}\"\n \t@click=\"openLocationPopup()\"\n >\n \t<svg class=\"i-small\" :fill=\"'inherit'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"50\" height=\"67\" viewBox=\"0 0 50 67\" fill=\"none\">\n\t\t\t <path d=\"M25 0C11.207 0 0 11.207 0 25C0 38.793 20.832 66.668 25 66.668C29.168 66.668 50 38.793 50 25C50 11.207 38.793 0 25 0ZM25 33.332C20.418 33.332 16.668 29.582 16.668 25C16.668 20.418 20.418 16.668 25 16.668C29.582 16.668 33.332 20.418 33.332 25C33.332 29.582 29.582 33.332 25 33.332Z\" :fill=\"'inherit'\"/>\n\t\t\t</svg>\n \t {{globals.state.position?.country ? globals.state.position.country : 'World'}}\n </button>\n </div>\n\n \t<slot></slot>\n\n\t<div class=\"flex-justify-end flex-v-center flex-nowrap flex gap-micro\">\n\t\t<Button \n\t\t\tv-if=\"router.hasRoute('Search')\"\n\t\t\taria-label=\"search\"\n\t\t\tclass=\"pd-zero bg-transp\"\n\t\t\t:submit=\"() => router.push({name: 'Search'})\"\n\t\t\t:showSucces=\"false\"\n\t\t\t:showLoader=\"false\"\n\t\t>\n\t\t\t<IconSearch \n\t\t\t\tclass=\"i-semi\"\n\t\t\t\t:fill=\"theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'\" \n\t\t\t/>\n\t\t</Button>\n\t\n\t\t<Button\n\t\t\taria-label=\"shopcart\"\n\t\t\t:submit=\"a => shopcart.actions.toggleShopcart()\" \n\t\t\t:counter=\"shopcart.getters.cartTotalAmount\" \n\t\t\t:showSucces=\"false\"\n\t\t\t:showLoader=\"false\"\n\t\t\tclass=\"pd-zero mn-r-micro\"\n\t\t\t> \n\t\t\t<IconShopcart \n\t\t\t\tclass=\"i-semi\"\n\t\t\t\t:fill=\"theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'\" \n\t\t\t/>\n\t\t\t<!-- <div class=\"w-max p-small pos-absolute pos-t-100 pos-r-0\">Product Added to Shopcart</div> -->\n\t\t</Button>\n\n\n\t\t<NotificationBadge\n\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t:fill=\"'rgb(var(--black))'\"\n\t\t/>\n\n\t\t<Button \n\t\t\taria-label=\"profile\"\n\t\t\tclass=\"pd-zero bg-transp\"\n\t\t\t:submit=\"\n\t\t\t\tauth.state.access.status === false \n\t\t\t\t? \n\t\t\t\ta => router.push({name: 'Sign In'}) \n\t\t\t\t: \n\t\t\t\ta => router.push({ name: 'User Profile', params: { _id: auth.state.user._id }})\n\t\t\t\"\n\t\t\t:showSucces=\"false\"\n\t\t\t:showLoader=\"false\"\n\t\t>\n\t\t\t<IconProfile \n\t\t\t\tclass=\"i-semi\"\n\t\t\t\t:fill=\"theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'\" \n\t\t\t/>\n\t\t</Button>\n\n\n\n\t\t<Select \n\t\t\tv-if=\"$i18n.availableLocales.length > 1\"\n\t\t\tv-model:select=\"$i18n.locale\"\n\t\t :options=\"$i18n.availableLocales\"\n\t\t :property=\"'value'\"\n class=\"pos-relative uppercase pd-l-small pd-r-small pd-micro t-semi radius-thin\"\n :class=\"{\n \t\t'bg-light t-black': theme === 'light',\n \t\t'bg-dark t-white': theme === 'dark' \n \t}\"\n />\n </div>\n</header>\n \n</template>\n\n<style lang=\"scss\">\n.location-button { \n\t&:hover {\n\t\tbox-shadow: inset 0 0 0 2px rgb(var(--main));\n\t}\n}\n\n.menu-btn {\n display: block;\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n position: relative;\n}\n.menu-btn span,\n.menu-btn__before,\n.menu-btn__after {\n position: absolute;\n top: 50%;\n margin-top: -1px;\n left: 50%;\n margin-left: -10px;\n width: 20px;\n height: 2px;\n}\n.menu-btn__before,\n.menu-btn__after {\n display: block;\n transition: 0.2s;\n}\n.menu-btn__before {\n transform: translateY(-5px);\n}\n.menu-btn__after {\n transform: translateY(5px);\n}\n.menu-btn_active .menu-btn__before {\n transform: rotate(-35deg);\n width: 10px;\n transform-origin: left bottom;\n}\n.menu-btn_active .menu-btn__after {\n transform: rotate(35deg);\n width: 10px;\n transform-origin: left top;\n}\n\n.menu-btn_active span:before {\n transform: rotate(-35deg);\n width: 10px;\n transform-origin: left bottom;\n}\n.menu-btn_active span:after {\n transform: rotate(35deg);\n width: 10px;\n transform-origin: left top;\n}\n\n.menu-block {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.menu-nav {\n background-color: #fff;\n height: 50px;\n \n}\n.menu-nav__link {\n display: inline-block;\n text-decoration: none;\n color: #fff;\n margin-right: 20px;\n}\n.menu-nav__link {\n transition: 0.5s;\n transform-origin: right center;\n transform: translateX(50%);\n opacity: 0;\n}\n.menu-nav__link_active {\n transform: translateX(0%);\n opacity: 1;\n}\n\n</style>"],"names":["globals.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCC,UAAM,SAAS,UAAS;AACV,aAAQ;AAEtB,UAAM,EAAE,EAAC,IAAK,QAAO;AAGrB,aAAS,oBAAoB;AAC3BA,YAAc,sBAAsB;AAAA,IACvC;AAIC,cAAU,MAAM;AACbC,cAAiB,YAAW;AAAA,IAChC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Header.vue.js","sources":["../../../../../../../../src/modules/globals/views/components/partials/Header.vue"],"sourcesContent":["<script setup=\"props\">\n\timport { computed, onMounted, toRefs, ref, inject } from 'vue'\n\n\timport { useRouter,useRoute } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\t\n\timport * as globals from '@martyrs/src/modules/globals/views/store/globals'\n\timport * as shopcart from '@martyrs/src/modules/orders/store/shopcart'\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth'\n\t\n\t// Globasls Component\n\n\timport NotificationBadge from '@martyrs/src/modules/notifications/components/elements/NotificationBadge.vue';\n\t// import Navigation from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue'\n\t// Martyrs Component\n\timport Button from '@martyrs/src/components/Button/Button.vue'\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\t// Icons module\n\timport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue'\n\timport IconProfile from '@martyrs/src/modules/icons/entities/IconProfile.vue'\n\timport IconSearch from '@martyrs/src/modules/icons/navigation/IconSearch.vue';\n\t// Props\n\tconst props = defineProps({\n theme: {\n \ttype: String,\n\t default: \"light\"\n },\n logotype: {\n\t type: Object\n\t },\n\t location: {\n\t type: Boolean,\n\t\t default: true\n\t },\n\t theme_switcher: {\n\t type: Boolean,\n\t\t default: true\n\t },\n });\n\t// Accessing state\n\tconst router = useRouter()\n\tconst route = useRoute()\n\t// Localization\n\tconst { t } = useI18n()\n\t// const search = computed(() => store.products.state.search)\n\n\tfunction openLocationPopup() {\n\t globals.state.isOpenLocationPopup = true;\n\t}\n\t/////////////////////////////\n\t// MOUNTED\n\t/////////////////////////////\n\tonMounted(() => {\n shopcart.actions.setShopcart()\n });\n</script>\n\n<template>\n\t<header \n\t\tid=\"header\" \n\t\tclass=\"\n\t\t\tpd-thin \n\t\t\tgap-micro\n\t\t\tflex-justify-between\n\t\t\tflex-nowrap\n\t\t\tflex\n\t\t\th-4r\n\t\t\tw-100\n\t\t\tz-index-2 \n\t\t\tpos-relative pos-t-0\n\t\t\tbr-b\n\t\t\tbr-solid\n\t\t\tbr-light\n\t\t\"\n\t\t:class=\"{\n \t\t't-black': theme === 'light',\n \t\t't-white': theme === 'dark' \n \t}\"\n\t>\n\t<div class=\"flex-nowrap flex-v-center flex-justify-start flex gap-micro \">\n\t\t<!-- MENU -->\n\t\t<button \n\t\t\taria-label=\"menu\"\n\t\t\t@click=\"() => globals.state.isOpenSidebar = !globals.state.isOpenSidebar\" \n\t\t\tclass=\"cursor-pointer menu-btn\"\n\t\t\t:class=\"{\n\t\t\t\t'menu-btn_active': globals.state.isOpenSidebar\n\t\t\t}\"\n\t\t>\n\t <span\n\t \tclass=\"no-events\"\n\t\t :class=\"{\n\t\t 'bg-black': theme === 'light',\n\t\t 'bg-white': theme === 'dark'\n\t\t }\"\n\t\t >\n\t\t <span class=\"menu-btn__before\" :class=\"{ 'bg-black': theme === 'light', 'bg-white': theme === 'dark' }\"></span>\n\t\t <span class=\"menu-btn__after\" :class=\"{ 'bg-black': theme === 'light', 'bg-white': theme === 'dark' }\"></span>\n\t\t </span>\n\t </button>\n\n\t\t<!-- LOGO -->\n\t\t<component\n\t\t\tv-if=\"logotype\"\n\t\t :is=\"logotype\"\n\t\t @click=\"router.push({ path: '/' })\" \n\t\t :theme=\"theme\"\n\t\t class=\"cursor-pointer\"\n\t\t/>\n\n\t\t<button\n\t\t\tv-if=\"location\"\n\t\t\taria-label=\"button_location\"\n \tclass=\"\n \t\tcursor-pointer\n \t\tbg-transp \n \t\tpd-l-micro pd-r-micro\n \t\tradius-extra \n \t\tuppercase \n \t\tt-semi\n \t\tbr-solid \n \t\tbr-2px \n \t\ttransition-linear\n \t\tt-nowrap\n \t\n \t\"\n \t:class=\"{\n \t\t'fill-black br-black t-black hover-bg-black hover-t-white hover-fill-white': theme === 'light',\n \t\t'fill-white br-white t-white hover-bg-white hover-t-black hover-fill-black': theme === 'dark' \n \t}\"\n \t@click=\"openLocationPopup()\"\n >\n \t<svg class=\"i-small\" :fill=\"'inherit'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"50\" height=\"67\" viewBox=\"0 0 50 67\" fill=\"none\">\n\t\t\t <path d=\"M25 0C11.207 0 0 11.207 0 25C0 38.793 20.832 66.668 25 66.668C29.168 66.668 50 38.793 50 25C50 11.207 38.793 0 25 0ZM25 33.332C20.418 33.332 16.668 29.582 16.668 25C16.668 20.418 20.418 16.668 25 16.668C29.582 16.668 33.332 20.418 33.332 25C33.332 29.582 29.582 33.332 25 33.332Z\" :fill=\"'inherit'\"/>\n\t\t\t</svg>\n \t {{globals.state.position?.country ? globals.state.position.country : 'World'}}\n </button>\n </div>\n\n \t<slot></slot>\n\n\t<div class=\"flex-justify-end flex-v-center flex-nowrap flex gap-micro\">\n\t\t<Button \n\t\t\tv-if=\"router.hasRoute('Search')\"\n\t\t\taria-label=\"search\"\n\t\t\tclass=\"pd-zero bg-transp\"\n\t\t\t:submit=\"() => router.push({name: 'Search'})\"\n\t\t\t:showSucces=\"false\"\n\t\t\t:showLoader=\"false\"\n\t\t>\n\t\t\t<IconSearch \n\t\t\t\tclass=\"i-semi\"\n\t\t\t\t:fill=\"theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'\" \n\t\t\t/>\n\t\t</Button>\n\t\n\t\t<Button\n\t\t\taria-label=\"shopcart\"\n\t\t\t:submit=\"a => shopcart.actions.toggleShopcart()\" \n\t\t\t:counter=\"shopcart.getters.cartTotalAmount\" \n\t\t\t:showSucces=\"false\"\n\t\t\t:showLoader=\"false\"\n\t\t\tclass=\"pd-zero mn-r-micro\"\n\t\t\t> \n\t\t\t<IconShopcart \n\t\t\t\tclass=\"i-semi\"\n\t\t\t\t:fill=\"theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'\" \n\t\t\t/>\n\t\t\t<!-- <div class=\"w-max p-small pos-absolute pos-t-100 pos-r-0\">Product Added to Shopcart</div> -->\n\t\t</Button>\n\n\n\t\t<NotificationBadge\n\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t:fill=\"'rgb(var(--black))'\"\n\t\t/>\n\n\t\t<Button \n\t\t\taria-label=\"profile\"\n\t\t\tclass=\"pd-zero bg-transp\"\n\t\t\t:submit=\"\n\t\t\t\tauth.state.access.status === false \n\t\t\t\t? \n\t\t\t\ta => router.push({name: 'Sign In'}) \n\t\t\t\t: \n\t\t\t\ta => router.push({ name: 'User Profile', params: { _id: auth.state.user._id }})\n\t\t\t\"\n\t\t\t:showSucces=\"false\"\n\t\t\t:showLoader=\"false\"\n\t\t>\n\t\t\t<IconProfile \n\t\t\t\tclass=\"i-semi\"\n\t\t\t\t:fill=\"theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'\" \n\t\t\t/>\n\t\t</Button>\n\n\n\n\t\t<Select \n\t\t\tv-if=\"$i18n.availableLocales.length > 1\"\n\t\t\tv-model:select=\"$i18n.locale\"\n\t\t :options=\"$i18n.availableLocales\"\n\t\t :property=\"'value'\"\n class=\"pos-relative uppercase pd-l-small pd-r-small pd-micro t-semi radius-thin\"\n :class=\"{\n \t\t'bg-light t-black': theme === 'light',\n \t\t'bg-dark t-white': theme === 'dark' \n \t}\"\n />\n </div>\n</header>\n \n</template>\n\n<style lang=\"scss\">\n.location-button { \n\t&:hover {\n\t\tbox-shadow: inset 0 0 0 2px rgb(var(--main));\n\t}\n}\n\n.menu-btn {\n display: block;\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n position: relative;\n}\n.menu-btn span,\n.menu-btn__before,\n.menu-btn__after {\n position: absolute;\n top: 50%;\n margin-top: -1px;\n left: 50%;\n margin-left: -10px;\n width: 20px;\n height: 2px;\n}\n.menu-btn__before,\n.menu-btn__after {\n display: block;\n transition: 0.2s;\n}\n.menu-btn__before {\n transform: translateY(-5px);\n}\n.menu-btn__after {\n transform: translateY(5px);\n}\n.menu-btn_active .menu-btn__before {\n transform: rotate(-35deg);\n width: 10px;\n transform-origin: left bottom;\n}\n.menu-btn_active .menu-btn__after {\n transform: rotate(35deg);\n width: 10px;\n transform-origin: left top;\n}\n\n.menu-btn_active span:before {\n transform: rotate(-35deg);\n width: 10px;\n transform-origin: left bottom;\n}\n.menu-btn_active span:after {\n transform: rotate(35deg);\n width: 10px;\n transform-origin: left top;\n}\n\n.menu-block {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.menu-nav {\n background-color: #fff;\n height: 50px;\n \n}\n.menu-nav__link {\n display: inline-block;\n text-decoration: none;\n color: #fff;\n margin-right: 20px;\n}\n.menu-nav__link {\n transition: 0.5s;\n transform-origin: right center;\n transform: translateX(50%);\n opacity: 0;\n}\n.menu-nav__link_active {\n transform: translateX(0%);\n opacity: 1;\n}\n\n</style>"],"names":["globals.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCC,UAAM,SAAS,UAAS;AACV,aAAQ;AAEtB,UAAM,EAAE,EAAC,IAAK,QAAO;AAGrB,aAAS,oBAAoB;AAC3BA,YAAc,sBAAsB;AAAA,IACvC;AAIC,cAAU,MAAM;AACbC,cAAiB,YAAW;AAAA,IAChC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -5,13 +5,14 @@ const vueRouter = require("vue-router");
|
|
|
5
5
|
;/* empty css */
|
|
6
6
|
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
|
7
7
|
;/* empty css */
|
|
8
|
-
const Popup = require("../../../../components/Popup/Popup.
|
|
8
|
+
const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
|
|
9
9
|
const IconTime = require("../../../icons/entities/IconTime.vue.cjs");
|
|
10
10
|
const CardOrderItem = require("../blocks/CardOrderItem.vue.cjs");
|
|
11
11
|
const CardOrganization = require("../../../organizations/components/blocks/CardOrganization.vue.cjs");
|
|
12
12
|
const ChatPage = require("../../../chats/components/pages/ChatPage.vue.cjs");
|
|
13
13
|
const PriceTotal = require("../elements/PriceTotal.vue.cjs");
|
|
14
14
|
const globals = require("../../../globals/views/store/globals.cjs");
|
|
15
|
+
const auth = require("../../../auth/views/store/auth.cjs");
|
|
15
16
|
const orders = require("../../store/orders.cjs");
|
|
16
17
|
require("../../../products/store/products.cjs");
|
|
17
18
|
const organizations = require("../../../organizations/store/organizations.cjs");
|
|
@@ -63,8 +64,9 @@ const _hoisted_26 = { class: "flex gap-thin flex-column mn-b-thin" };
|
|
|
63
64
|
const _sfc_main = {
|
|
64
65
|
__name: "OrderBackoffice",
|
|
65
66
|
setup(__props) {
|
|
67
|
+
var _a, _b, _c, _d, _e;
|
|
66
68
|
const { locale } = vueI18n.useI18n();
|
|
67
|
-
vueRouter.useRouter();
|
|
69
|
+
const router = vueRouter.useRouter();
|
|
68
70
|
const route = vueRouter.useRoute();
|
|
69
71
|
const order = vue.ref(null);
|
|
70
72
|
vue.ref(null);
|
|
@@ -74,6 +76,9 @@ const _sfc_main = {
|
|
|
74
76
|
const isActiveStatus = (index) => {
|
|
75
77
|
return statuses.slice(index).includes(order.value.status);
|
|
76
78
|
};
|
|
79
|
+
if (route.meta.context === "user" && auth.state.user && route.params._id !== ((_a = auth.state.user) == null ? void 0 : _a._id) && !((_c = (_b = auth.state.access) == null ? void 0 : _b.roles) == null ? void 0 : _c.includes("ROLE_MODERATOR")) && !((_e = (_d = auth.state.access) == null ? void 0 : _d.roles) == null ? void 0 : _e.includes("ROLE_ADMIN"))) {
|
|
80
|
+
router.push("/401");
|
|
81
|
+
}
|
|
77
82
|
const isOpeStatusPopup = vue.ref(false);
|
|
78
83
|
const selectedMember = vue.ref(null);
|
|
79
84
|
function openStatusPopup(member) {
|
|
@@ -85,17 +90,17 @@ const _sfc_main = {
|
|
|
85
90
|
selectedMember.value = null;
|
|
86
91
|
}
|
|
87
92
|
vue.onMounted(async () => {
|
|
88
|
-
var
|
|
93
|
+
var _a2, _b2;
|
|
89
94
|
order.value = await orders.actions.read({ _id: route.params.order });
|
|
90
95
|
order.value = order.value[0];
|
|
91
96
|
orderOrganization.value = await organizations.actions.read({
|
|
92
|
-
_id: (
|
|
93
|
-
location: (
|
|
97
|
+
_id: (_a2 = order.value) == null ? void 0 : _a2.owner.target._id,
|
|
98
|
+
location: (_b2 = globals.state.position) == null ? void 0 : _b2.location
|
|
94
99
|
});
|
|
95
100
|
});
|
|
96
101
|
let cartTotalPrice = vue.computed(() => {
|
|
97
|
-
var
|
|
98
|
-
return Number((
|
|
102
|
+
var _a2;
|
|
103
|
+
return Number((_a2 = order.value) == null ? void 0 : _a2.positions.reduce((total, product) => {
|
|
99
104
|
if (product.listing === "rent") {
|
|
100
105
|
const start = new Date(product.date.start);
|
|
101
106
|
const end = new Date(product.date.end);
|
|
@@ -107,8 +112,8 @@ const _sfc_main = {
|
|
|
107
112
|
}, 0));
|
|
108
113
|
});
|
|
109
114
|
vue.computed(() => {
|
|
110
|
-
var
|
|
111
|
-
return Number((
|
|
115
|
+
var _a2;
|
|
116
|
+
return Number((_a2 = order.value) == null ? void 0 : _a2.positions.reduce((total, product) => {
|
|
112
117
|
return total + product.quantity;
|
|
113
118
|
}, 0));
|
|
114
119
|
});
|
|
@@ -134,7 +139,7 @@ const _sfc_main = {
|
|
|
134
139
|
closeStatusPopup();
|
|
135
140
|
}
|
|
136
141
|
return (_ctx, _cache) => {
|
|
137
|
-
var
|
|
142
|
+
var _a2, _b2, _c2, _d2, _e2, _f, _g;
|
|
138
143
|
return order.value && orderOrganization.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
139
144
|
order.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
|
|
140
145
|
vue.createElementVNode("div", _hoisted_3, [
|
|
@@ -214,9 +219,9 @@ const _sfc_main = {
|
|
|
214
219
|
vue.createElementVNode("p", _hoisted_16, vue.toDisplayString(_ctx.formatDate(order.value.updatedAt, { language: vue.unref(locale) })), 1)
|
|
215
220
|
])
|
|
216
221
|
]),
|
|
217
|
-
((
|
|
222
|
+
((_a2 = order.value.customer.target) == null ? void 0 : _a2.number) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_17, [
|
|
218
223
|
_cache[4] || (_cache[4] = vue.createElementVNode("p", { class: "w-100 t-medium p-medium" }, " Phone ", -1)),
|
|
219
|
-
vue.createElementVNode("p", _hoisted_18, vue.toDisplayString(((
|
|
224
|
+
vue.createElementVNode("p", _hoisted_18, vue.toDisplayString(((_b2 = order.value.customer.target) == null ? void 0 : _b2.number) || "Not specified"), 1)
|
|
220
225
|
])) : vue.createCommentVNode("", true),
|
|
221
226
|
vue.createElementVNode("div", _hoisted_19, [
|
|
222
227
|
_cache[5] || (_cache[5] = vue.createElementVNode("p", { class: "t-medium p-medium" }, " Address ", -1)),
|
|
@@ -230,7 +235,7 @@ const _sfc_main = {
|
|
|
230
235
|
vue.createElementVNode("div", _hoisted_23, [
|
|
231
236
|
_cache[7] || (_cache[7] = vue.createElementVNode("h3", { class: "mn-b-small" }, "Chat With Us", -1)),
|
|
232
237
|
vue.createVNode(ChatPage.default, {
|
|
233
|
-
username: vue.unref(route).name
|
|
238
|
+
username: ["Order", "UserOrder"].includes(vue.unref(route).name) ? ((_c2 = order.value.user) == null ? void 0 : _c2.name) || "User" : "Support",
|
|
234
239
|
chatID: vue.unref(route).params.order,
|
|
235
240
|
class: "radius-semi bs-black bg-light o-hidden"
|
|
236
241
|
}, null, 8, ["username", "chatID"])
|
|
@@ -252,8 +257,8 @@ const _sfc_main = {
|
|
|
252
257
|
vue.createVNode(PriceTotal.default, {
|
|
253
258
|
totalPrice: vue.unref(cartTotalPrice),
|
|
254
259
|
currency: _ctx.returnCurrency(),
|
|
255
|
-
showFees: (
|
|
256
|
-
feesRate: ((
|
|
260
|
+
showFees: (_d2 = globals.state.options) == null ? void 0 : _d2.showFees,
|
|
261
|
+
feesRate: ((_e2 = globals.state.options) == null ? void 0 : _e2.feesRate) || 0,
|
|
257
262
|
showVat: (_f = globals.state.options) == null ? void 0 : _f.showVat,
|
|
258
263
|
vatRate: ((_g = globals.state.options) == null ? void 0 : _g.vatRate) || 0
|
|
259
264
|
}, null, 8, ["totalPrice", "currency", "showFees", "feesRate", "showVat", "vatRate"])
|
|
@@ -263,6 +268,6 @@ const _sfc_main = {
|
|
|
263
268
|
};
|
|
264
269
|
}
|
|
265
270
|
};
|
|
266
|
-
const OrderBackoffice = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
|
271
|
+
const OrderBackoffice = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-eeb4cbf7"]]);
|
|
267
272
|
exports.default = OrderBackoffice;
|
|
268
273
|
//# sourceMappingURL=OrderBackoffice.vue.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderBackoffice.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderBackoffice.vue"],"sourcesContent":["<template>\n\t<div v-if=\"order && orderOrganization\" class=\"pd-thin bg-white\"> \n\n\t <div v-if=\"order\" class=\"mn-b-thin pos-relative w-100 bg-main radius-medium pd-medium\">\n\t \t<div class=\"mn-b-small flex-nowrap flex\">\n\t\t \t<p class=\"t-medium p-medium\">\n\t\t \tOrder No: <span class=\"p-small t-transp\">#{{order._id}}</span>\n\t\t </p>\n\t\t\t</div>\n\n \t<div class=\"flex-nowrap flex gap-thin pos-relative \">\n\t <div v-for=\"(status, index) in statuses\" :key=\"index\" class=\"w-20\">\n\t <div\n\t \tclass=\"bg-white br-anim br-glow radius-extra h-1r w-100\"\n\t :class=\"\n\t\t\t\t { 'br-glow-anim': isActiveStatus(index) },\n\t\t\t\t { 't-transp': !isActiveStatus(index) },\n\t\t\t\t { 'blink': order.status === statuses[index] && getNextStatus(order.status) }\n\t\t\t\t \"\n\t />\n\t <div \n\t \t:class=\"{ 't-transp': !isActiveStatus(index) }\"\n\t\t\t\t class=\"mn-t-thin p-small t-medium uppercase\">{{ statusLabels[index] }}</div>\n\t \t</div>\n\t\t </div>\n\t </div>\n\n\t <div v-if=\"route.meta.context !== 'user'\" class=\"bg-light pd-thin mn-b-thin pd-thin radius-extra flex-nowrap flex\">\n \t\t<div class=\"w-max flex-v-center gap-thin flex-nowrap flex pd-thin radius-small bg-light-transp-20\">\n \t\t\t<IconTime class=\"i-semi t-transp\" fill=\"rgb(var(--black)\" />\n <p class=\"t-medium mn-r-auto\"><span class=\"p-small t-transp\">Estimated Reaction</span><br>{{formatDate(order.deadline, { language: locale })}}</p>\n\t \t</div>\n\t \t<button v-if=\"getNextStatus(order.status)\" @click=\"openStatusPopup\" class=\"mn-l-auto bg-black t-white button\"> \n\t\t Mark as {{ getStatusLabel(getNextStatus(order.status)) }} \n\t\t </button>\n\n\t\t<!-- <Button v-if=\"order.status !== 'canceled'\" :submit=\"cancelOrder\" class=\"w-max t-white mn-l-thin bg-red\">\n\t\t\t\t<span>Cancel Order</span>\n\t\t\t</Button>\n\n\t\t\t <Button v-if=\"order.status !== 'confirmed'\" :submit=\"confirmOrder\" class=\"w-max t-white mn-l-thin bg-red\">\n\t\t\t\t<span>Confirm Order</span>\n\t\t\t</Button>\n -->\n\n \t</div>\n\n\t <Popup \n title=\"Change status\" \n @close-popup=\"closeStatusPopup\" \n :isPopupOpen=\"isOpeStatusPopup\"\n class=\"bg-light w-min-30r w-max-30r radius-medium pd-big\"\n >\n\n\t\t\t<!-- <VueDatePicker v-model=\"order.deadline\" :hide-navigation=\"['calendar']\" :flow=\"['time']\" class=\"z-index-3 bg-white radius-small pd-small mn-b-thin mn-b-semi\" /> -->\n\n\t\t\t<!-- {{order.deadline}} -->\n<!-- \n\t\t\t<p class=\"t-medium p-medium mn-b-thin\">\n\t\t Positions\n\t\t </p>\n\n \t<ul class=\"bg-white pd-small radius-small flex gap-thin flex-column mn-b-semi\">\n \t\t\t<CardOrderItem\n \t\t\t\tv-for=\"(product, index) in orderProducts\" :key=\"product._id\"\n \t\t\t\t:editable=\"false\" \n \t\t\t\t:product=\"product\" \n \t\t\t/>\n </ul> -->\n \t<button @click=\"setNextStatus\" class=\"w-100 bg-black-small t-white button\">\n \t\t{{'Confirm Changing to ' + getStatusLabel(getNextStatus(order.status))}}\n \t</button>\n\t \t</Popup>\n\n\n\t \n\t <div v-if=\"order\" class=\"gap-thin cols-2\">\n\n\t <div class=\"w-100\">\n\n\n\t\t <CardOrganization \n\t\t \tv-if=\"orderOrganization[0]\"\n\t\t :organization=\"orderOrganization[0]\"\n\t\t :showRating=\"true\"\n\t\t :showFollowers=\"false\"\n\t\t :showProducts=\"false\"\n\t\t class=\"bg-light mn-b-thin w-100 o-hidden radius-medium pd-small \"\n\t\t />\n\n\n\t\t <div \n\t\t \tclass=\"mn-b-thin bg-light w-100 o-hidden radius-medium \"\n\t\t >\n\t\t \t<div class=\"pd-small flex-nowrap flex\">\n\t\t\t \t<div class=\"mn-r-auto\">\n\t\t\t\t \t<span class=\"d-block t-medium p-medium\">Order is</span>\n\t\t\t\t\t <span class=\" t-lh-075 h2 d-block mn-b-small\">{{order.status}}</span>\n\t\t\t\t\t <p class=\"pd-t-nano pd-b-nano pd-r-thin pd-l-thin radius-extra bg-black t-white w-max\">{{formatDate(order.updatedAt, {language: locale })}}</p>\n\t\t\t\t\t </div>\n\t\t\t\t\t <!-- <div class=\"t-right\">\n\t\t\t\t\t \tCancel order<br>\n\t\t\t\t\t \tExchange item\n\t\t\t\t\t \t<hr class=\"mn-b-thin mn-t-thin\">\n\t\t\t\t\t \tFor Delivery Queries Contact Us\n\t\t\t\t\t \t\n\t\t\t\t\t </div> -->\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div v-if=\"order.customer.target?.number\" class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"w-100 t-medium p-medium\">\n\t\t\t \tPhone\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right \">\n\t\t\t \t{{order.customer.target?.number || 'Not specified'}}\n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"t-medium p-medium\">\n\t\t\t \tAddress\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right\">\n\t\t\t {{order.delivery.address || (order.delivery.spot[0].profile.name + ', ' + order.delivery.spot[0].address) || 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"mn-b-small t-medium p-medium\">\n\t\t\t \tDelivery\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right mn-b-small\">\n\t\t\t {{order.delivery.type ? order.delivery.type : 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"bg-light radius-medium pd-medium mn-r-bold w-100\">\n\t\t <h3 class=\"mn-b-small\">Chat With Us</h3>\n\n\t\t <ChatWindow\n\t\t \t:username=\"\n\t\t \t\troute.name === 'Order' || 'UserOrder' ? order.user?.name || 'User' : 'Support'\n\t\t \t\"\n\t\t \t:chatID=\"route.params.order\"\n\t\t \tclass=\"radius-semi bs-black bg-light o-hidden\"\n\t\t />\n\n\t </div>\n\t \t<!-- <StatusHistory \n\t \t\tv-if=\"orders.state.current.status_history\"\n\t \t\t:statuses=\"statuses\"\n\t \t\t:statusHistory=\"orders.state.current.status_history\"\n\t \t\t:statusCurrent=\"orders.state.current.status\"\n\t \t\t:edit=\"route.name === 'Order Edit'\"\n\t \t/> -->\n\n\t <!-- \t<button \n\t \t@click=\"requestPayment(order)\"\n\t \tv-if=\"\n\t \t\torder.status === 'Подтвержден' \n\t \t\t&& order.payment.type === 'Online'\n\t \t\t&& payment.Status !== 'CONFIRMED'\n\t \t\t&& payment.Status !== 'REFUNDED'\n\t \t\" \n\t \tclass='w-100 button'>Оплатить заказ</button> -->\n\t \t<span class=\"t-transp\" v-if=\"payment && payment.Status === 'CONFIRMED'\">Paid</span> \n\t </div> \n\n\t <div class=\"bg-light radius-medium pd-medium w-100\">\n\t \t\t<h3 class=\"mn-b-small\">Order Summary</h3>\n\n\t \t\t<ul class=\"flex gap-thin flex-column mn-b-thin\">\n\t \t\t\t<CardOrderItem\n\t \t\t\t\tv-for=\"(product, index) in order.positions\" :key=\"product._id\"\n\t \t\t\t\t:editable=\"false\" \n\t \t\t\t\t:product=\"product\" \n\t \t\t\t\tclass=\"bg-white radius-small pd-small\"\n\t \t\t\t/>\n\t </ul>\n\t \n\t <PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.showFees\"\n :feesRate=\"globals.state.options?.feesRate || 0\"\n :showVat=\"globals.state.options?.showVat\"\n :vatRate=\"globals.state.options?.vatRate || 0\"\n />\n </div>\n\n\t \n\t </div>\n\t</div>\t\t\n\n</template>\n\n\n<script setup=\"props\">\n\timport { computed, ref, onMounted } from 'vue'\n\timport { useRouter, useRoute } from 'vue-router'\n\n\timport Button from '@martyrs/src/components/Button/Button.vue'\n\timport Popup from \"@martyrs/src/components/Popup/Popup.vue\";\n\n\timport IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n\t// Block\n\timport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport ChatWindow from '@martyrs/src/modules/chats/components/pages/ChatPage.vue';\n\n\timport StatusHistory from '@martyrs/src/modules/orders/components/blocks/StatusHistory.vue'\n\timport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\n\n\timport * as globals \tfrom '@martyrs/src/modules/globals/views/store/globals'\n\timport * as orders \tfrom '@martyrs/src/modules/orders/store/orders'\n\timport * as products \tfrom '@martyrs/src/modules/products/store/products'\n\timport * as organizations \tfrom '@martyrs/src/modules/organizations/store/organizations'\n\n\timport { useI18n } from 'vue-i18n';\n\t\n\tconst { locale } = useI18n();\n\n\tconst router = useRouter()\n\tconst route = useRoute()\n\n\tconst order = ref(null)\n\tconst productsOrganization = ref(null)\n\tconst orderOrganization = ref(null)\n\n\tconst statuses = ['created', 'confirmed', 'preparing', 'inuse', 'finished'];\n\tconst statusLabels = ['Created', 'Confirmed', 'Preparing', 'In use', 'Finished'];\n\n\tconst isActiveStatus = (index) => {\n\t return statuses.slice(index).includes(order.value.status);\n\t};\n\n\t// description: 'Your order has been successfully created. Our manager will contact you within five minutes to confirm your order.'\n\t// description: 'Your order has been confirmed. We are now processing your items and preparing them for shipment.'\n\t// description: 'Your order is now awaiting shipment. Once shipped, you will receive a notification with tracking information.'\n\t// description: 'Your order is now awaiting shipment. Once shipped, you will receive a notification with tracking information.'\n\t// description: 'Your order is currently in transit. Our delivery team is working hard to get your items to you as soon as possible.'\n\t// description: 'Congratulations! Your order has been successfully delivered. If you have any concerns or feedback, feel free to contact us.'\n\n\n\tconst isOpeStatusPopup = ref(false);\n\tconst selectedMember = ref(null);\n\n\tfunction openStatusPopup(member) {\n\t isOpeStatusPopup.value = true;\n\t if (typeof member === \"number\") selectedMember.value = member;\n\t}\n\n\tfunction closeStatusPopup() {\n\t isOpeStatusPopup.value = false;\n\t selectedMember.value = null;\n\t}\n\n\tonMounted(async()=>{\n\t\torder.value = await orders.actions.read({_id: route.params.order})\n\t\torder.value = order.value[0]\n\n\t orderOrganization.value = await organizations.actions.read({\n\t _id: order.value?.owner.target._id,\n\t location: globals.state.position?.location,\n\t });\n\n\t})\n\n\tlet cartTotalPrice = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n })\n\n\n let cartTotalAmount = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n })\n\n // Функция установки нового статуса\n\tasync function setStatus (newStatus) {\n\t orders.state.current.status = newStatus\n\n\t await orders.actions.update(orders.state.current)\n\t} \n\n\tfunction getNextStatus(currentStatus) {\n const currentIndex = statuses.indexOf(currentStatus);\n\n if (currentIndex !== -1 && currentIndex + 1 < statuses.length) {\n return statuses[currentIndex + 1];\n }\n return null; // Если следующий статус не существует\n }\n\n function getStatusLabel(status) {\n const index = statuses.indexOf(status);\n\n return status ? statusLabels[index] : \"\";\n }\n async function setNextStatus() {\n const nextStatus = getNextStatus(orders.state.current.status);\n\n if (nextStatus) {\n orders.state.current.status = nextStatus;\n\n await orders.actions.update(orders.state.current)\n } else {\n console.error('Next status is void. Must handle somehow.');\n }\n\n\t\tcloseStatusPopup()\n }\n\n async function cancelOrder() {\n \talert()\n\n orders.state.current.status = 'canceled';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n async function confirmOrder() {\n \talert()\n\n orders.state.current.status = 'confirmed';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n\tfunction requestPayment(order) {\n\t\t // store.dispatch(\"payments/newPayment\", order);\n\t}\n\n\tfunction calculateDeliveryTime(distance, date) {\n\t if (!distance) {\n\t return null;\n\t }\n\n\t const basePreparationTime = 10 * 60 * 1000; // Convert to milliseconds\n\t const travelTime = Math.ceil((15 + 5 + 3 * distance) / 5) * 5 * 60 * 1000;\n\n\t // Преобразование даты начала в миллисекунды и добавление времени подготовки и доставки\n\t const startTime = new Date(date).getTime();\n\t const estimatedDeliveryTime = new Date(startTime + basePreparationTime + travelTime);\n\n\t console.log(date)\n\t console.log(estimatedDeliveryTime)\n\n\t return estimatedDeliveryTime;\n\t}\n\n\n</script>\n\n<style lang=\"scss\" scoped>\n\t.blink {\n\t animation: blink-animation 1s ease infinite;\n\t}\n\n\t@keyframes blink-animation {\n\t 0%, 100% {\n\t opacity: 1;\n\t }\n\t 50% {\n\t opacity: 0.8;\n\t }\n\t}\n</style>"],"names":["useI18n","useRouter","useRoute","ref","onMounted","orders.actions","organizations.actions","globals.state","computed","orders.state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OrderBackoffice.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderBackoffice.vue"],"sourcesContent":["<template>\n\t<div v-if=\"order && orderOrganization\" class=\"pd-thin bg-white\"> \n\n\t <div v-if=\"order\" class=\"mn-b-thin pos-relative w-100 bg-main radius-medium pd-medium\">\n\t \t<div class=\"mn-b-small flex-nowrap flex\">\n\t\t \t<p class=\"t-medium p-medium\">\n\t\t \tOrder No: <span class=\"p-small t-transp\">#{{order._id}}</span>\n\t\t </p>\n\t\t\t</div>\n\n \t<div class=\"flex-nowrap flex gap-thin pos-relative \">\n\t <div v-for=\"(status, index) in statuses\" :key=\"index\" class=\"w-20\">\n\t <div\n\t \tclass=\"bg-white br-anim br-glow radius-extra h-1r w-100\"\n\t :class=\"\n\t\t\t\t { 'br-glow-anim': isActiveStatus(index) },\n\t\t\t\t { 't-transp': !isActiveStatus(index) },\n\t\t\t\t { 'blink': order.status === statuses[index] && getNextStatus(order.status) }\n\t\t\t\t \"\n\t />\n\t <div \n\t \t:class=\"{ 't-transp': !isActiveStatus(index) }\"\n\t\t\t\t class=\"mn-t-thin p-small t-medium uppercase\">{{ statusLabels[index] }}</div>\n\t \t</div>\n\t\t </div>\n\t </div>\n\n\t <div v-if=\"route.meta.context !== 'user'\" class=\"bg-light pd-thin mn-b-thin pd-thin radius-extra flex-nowrap flex\">\n \t\t<div class=\"w-max flex-v-center gap-thin flex-nowrap flex pd-thin radius-small bg-light-transp-20\">\n \t\t\t<IconTime class=\"i-semi t-transp\" fill=\"rgb(var(--black)\" />\n <p class=\"t-medium mn-r-auto\"><span class=\"p-small t-transp\">Estimated Reaction</span><br>{{formatDate(order.deadline, { language: locale })}}</p>\n\t \t</div>\n\t \t<button v-if=\"getNextStatus(order.status)\" @click=\"openStatusPopup\" class=\"mn-l-auto bg-black t-white button\"> \n\t\t Mark as {{ getStatusLabel(getNextStatus(order.status)) }} \n\t\t </button>\n\n\t\t<!-- <Button v-if=\"order.status !== 'canceled'\" :submit=\"cancelOrder\" class=\"w-max t-white mn-l-thin bg-red\">\n\t\t\t\t<span>Cancel Order</span>\n\t\t\t</Button>\n\n\t\t\t <Button v-if=\"order.status !== 'confirmed'\" :submit=\"confirmOrder\" class=\"w-max t-white mn-l-thin bg-red\">\n\t\t\t\t<span>Confirm Order</span>\n\t\t\t</Button>\n -->\n\n \t</div>\n\n\t <Popup \n title=\"Change status\" \n @close-popup=\"closeStatusPopup\" \n :isPopupOpen=\"isOpeStatusPopup\"\n class=\"bg-light w-min-30r w-max-30r radius-medium pd-big\"\n >\n\n\t\t\t<!-- <VueDatePicker v-model=\"order.deadline\" :hide-navigation=\"['calendar']\" :flow=\"['time']\" class=\"z-index-3 bg-white radius-small pd-small mn-b-thin mn-b-semi\" /> -->\n\n\t\t\t<!-- {{order.deadline}} -->\n<!-- \n\t\t\t<p class=\"t-medium p-medium mn-b-thin\">\n\t\t Positions\n\t\t </p>\n\n \t<ul class=\"bg-white pd-small radius-small flex gap-thin flex-column mn-b-semi\">\n \t\t\t<CardOrderItem\n \t\t\t\tv-for=\"(product, index) in orderProducts\" :key=\"product._id\"\n \t\t\t\t:editable=\"false\" \n \t\t\t\t:product=\"product\" \n \t\t\t/>\n </ul> -->\n \t<button @click=\"setNextStatus\" class=\"w-100 bg-black-small t-white button\">\n \t\t{{'Confirm Changing to ' + getStatusLabel(getNextStatus(order.status))}}\n \t</button>\n\t \t</Popup>\n\n\n\t \n\t <div v-if=\"order\" class=\"gap-thin cols-2\">\n\n\t <div class=\"w-100\">\n\n\n\t\t <CardOrganization \n\t\t \tv-if=\"orderOrganization[0]\"\n\t\t :organization=\"orderOrganization[0]\"\n\t\t :showRating=\"true\"\n\t\t :showFollowers=\"false\"\n\t\t :showProducts=\"false\"\n\t\t class=\"bg-light mn-b-thin w-100 o-hidden radius-medium pd-small \"\n\t\t />\n\n\n\t\t <div \n\t\t \tclass=\"mn-b-thin bg-light w-100 o-hidden radius-medium \"\n\t\t >\n\t\t \t<div class=\"pd-small flex-nowrap flex\">\n\t\t\t \t<div class=\"mn-r-auto\">\n\t\t\t\t \t<span class=\"d-block t-medium p-medium\">Order is</span>\n\t\t\t\t\t <span class=\" t-lh-075 h2 d-block mn-b-small\">{{order.status}}</span>\n\t\t\t\t\t <p class=\"pd-t-nano pd-b-nano pd-r-thin pd-l-thin radius-extra bg-black t-white w-max\">{{formatDate(order.updatedAt, {language: locale })}}</p>\n\t\t\t\t\t </div>\n\t\t\t\t\t <!-- <div class=\"t-right\">\n\t\t\t\t\t \tCancel order<br>\n\t\t\t\t\t \tExchange item\n\t\t\t\t\t \t<hr class=\"mn-b-thin mn-t-thin\">\n\t\t\t\t\t \tFor Delivery Queries Contact Us\n\t\t\t\t\t \t\n\t\t\t\t\t </div> -->\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div v-if=\"order.customer.target?.number\" class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"w-100 t-medium p-medium\">\n\t\t\t \tPhone\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right \">\n\t\t\t \t{{order.customer.target?.number || 'Not specified'}}\n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"t-medium p-medium\">\n\t\t\t \tAddress\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right\">\n\t\t\t {{order.delivery.address || (order.delivery.spot[0].profile.name + ', ' + order.delivery.spot[0].address) || 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"mn-b-small t-medium p-medium\">\n\t\t\t \tDelivery\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right mn-b-small\">\n\t\t\t {{order.delivery.type ? order.delivery.type : 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"bg-light radius-medium pd-medium mn-r-bold w-100\">\n\t\t <h3 class=\"mn-b-small\">Chat With Us</h3>\n\n\t\t <ChatWindow\n\t\t \t:username=\"['Order', 'UserOrder'].includes(route.name) ? (order.user?.name || 'User') : 'Support'\"\n\t\t \t:chatID=\"route.params.order\"\n\t\t \tclass=\"radius-semi bs-black bg-light o-hidden\"\n\t\t />\n\n\t </div>\n\t \t<!-- <StatusHistory \n\t \t\tv-if=\"orders.state.current.status_history\"\n\t \t\t:statuses=\"statuses\"\n\t \t\t:statusHistory=\"orders.state.current.status_history\"\n\t \t\t:statusCurrent=\"orders.state.current.status\"\n\t \t\t:edit=\"route.name === 'Order Edit'\"\n\t \t/> -->\n\n\t <!-- \t<button \n\t \t@click=\"requestPayment(order)\"\n\t \tv-if=\"\n\t \t\torder.status === 'Подтвержден' \n\t \t\t&& order.payment.type === 'Online'\n\t \t\t&& payment.Status !== 'CONFIRMED'\n\t \t\t&& payment.Status !== 'REFUNDED'\n\t \t\" \n\t \tclass='w-100 button'>Оплатить заказ</button> -->\n\t \t<span class=\"t-transp\" v-if=\"payment && payment.Status === 'CONFIRMED'\">Paid</span> \n\t </div> \n\n\t <div class=\"bg-light radius-medium pd-medium w-100\">\n\t \t\t<h3 class=\"mn-b-small\">Order Summary</h3>\n\n\t \t\t<ul class=\"flex gap-thin flex-column mn-b-thin\">\n\t \t\t\t<CardOrderItem\n\t \t\t\t\tv-for=\"(product, index) in order.positions\" :key=\"product._id\"\n\t \t\t\t\t:editable=\"false\" \n\t \t\t\t\t:product=\"product\" \n\t \t\t\t\tclass=\"bg-white radius-small pd-small\"\n\t \t\t\t/>\n\t </ul>\n\t \n\t <PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.showFees\"\n :feesRate=\"globals.state.options?.feesRate || 0\"\n :showVat=\"globals.state.options?.showVat\"\n :vatRate=\"globals.state.options?.vatRate || 0\"\n />\n </div>\n\n\t \n\t </div>\n\t</div>\t\t\n\n</template>\n\n\n<script setup=\"props\">\n\timport { computed, ref, onMounted } from 'vue'\n\timport { useRouter, useRoute } from 'vue-router'\n\n\timport Button from '@martyrs/src/components/Button/Button.vue'\n\timport Popup from \"@martyrs/src/components/Popup/Popup.vue\";\n\n\timport IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n\t// Block\n\timport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport ChatWindow from '@martyrs/src/modules/chats/components/pages/ChatPage.vue';\n\n\timport StatusHistory from '@martyrs/src/modules/orders/components/blocks/StatusHistory.vue'\n\timport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\n\n\timport * as globals \tfrom '@martyrs/src/modules/globals/views/store/globals'\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth'\n\timport * as orders \tfrom '@martyrs/src/modules/orders/store/orders'\n\timport * as products \tfrom '@martyrs/src/modules/products/store/products'\n\timport * as organizations \tfrom '@martyrs/src/modules/organizations/store/organizations'\n\n\timport { useI18n } from 'vue-i18n';\n\t\n\tconst { locale } = useI18n();\n\n\tconst router = useRouter()\n\tconst route = useRoute()\n\n\tconst order = ref(null)\n\tconst productsOrganization = ref(null)\n\tconst orderOrganization = ref(null)\n\n\tconst statuses = ['created', 'confirmed', 'preparing', 'inuse', 'finished'];\n\tconst statusLabels = ['Created', 'Confirmed', 'Preparing', 'In use', 'Finished'];\n\n\tconst isActiveStatus = (index) => {\n\t return statuses.slice(index).includes(order.value.status);\n\t};\n\n if (route.meta.context === 'user' && \n auth.state.user && \n route.params._id !== auth.state.user?._id && \n !auth.state.access?.roles?.includes('ROLE_MODERATOR') && \n !auth.state.access?.roles?.includes('ROLE_ADMIN')) {\n router.push('/401');\n }\n\t// description: 'Your order has been successfully created. Our manager will contact you within five minutes to confirm your order.'\n\t// description: 'Your order has been confirmed. We are now processing your items and preparing them for shipment.'\n\t// description: 'Your order is now awaiting shipment. Once shipped, you will receive a notification with tracking information.'\n\t// description: 'Your order is now awaiting shipment. Once shipped, you will receive a notification with tracking information.'\n\t// description: 'Your order is currently in transit. Our delivery team is working hard to get your items to you as soon as possible.'\n\t// description: 'Congratulations! Your order has been successfully delivered. If you have any concerns or feedback, feel free to contact us.'\n\n\n\tconst isOpeStatusPopup = ref(false);\n\tconst selectedMember = ref(null);\n\n\tfunction openStatusPopup(member) {\n\t isOpeStatusPopup.value = true;\n\t if (typeof member === \"number\") selectedMember.value = member;\n\t}\n\n\tfunction closeStatusPopup() {\n\t isOpeStatusPopup.value = false;\n\t selectedMember.value = null;\n\t}\n\n\tonMounted(async()=>{\n\t\torder.value = await orders.actions.read({_id: route.params.order})\n\t\torder.value = order.value[0]\n\n\t orderOrganization.value = await organizations.actions.read({\n\t _id: order.value?.owner.target._id,\n\t location: globals.state.position?.location,\n\t });\n\n\t})\n\n\tlet cartTotalPrice = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n })\n\n\n let cartTotalAmount = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n })\n\n // Функция установки нового статуса\n\tasync function setStatus (newStatus) {\n\t orders.state.current.status = newStatus\n\n\t await orders.actions.update(orders.state.current)\n\t} \n\n\tfunction getNextStatus(currentStatus) {\n const currentIndex = statuses.indexOf(currentStatus);\n\n if (currentIndex !== -1 && currentIndex + 1 < statuses.length) {\n return statuses[currentIndex + 1];\n }\n return null; // Если следующий статус не существует\n }\n\n function getStatusLabel(status) {\n const index = statuses.indexOf(status);\n\n return status ? statusLabels[index] : \"\";\n }\n async function setNextStatus() {\n const nextStatus = getNextStatus(orders.state.current.status);\n\n if (nextStatus) {\n orders.state.current.status = nextStatus;\n\n await orders.actions.update(orders.state.current)\n } else {\n console.error('Next status is void. Must handle somehow.');\n }\n\n\t\tcloseStatusPopup()\n }\n\n async function cancelOrder() {\n \talert()\n\n orders.state.current.status = 'canceled';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n async function confirmOrder() {\n \talert()\n\n orders.state.current.status = 'confirmed';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n\tfunction requestPayment(order) {\n\t\t // store.dispatch(\"payments/newPayment\", order);\n\t}\n\n\tfunction calculateDeliveryTime(distance, date) {\n\t if (!distance) {\n\t return null;\n\t }\n\n\t const basePreparationTime = 10 * 60 * 1000; // Convert to milliseconds\n\t const travelTime = Math.ceil((15 + 5 + 3 * distance) / 5) * 5 * 60 * 1000;\n\n\t // Преобразование даты начала в миллисекунды и добавление времени подготовки и доставки\n\t const startTime = new Date(date).getTime();\n\t const estimatedDeliveryTime = new Date(startTime + basePreparationTime + travelTime);\n\n\t console.log(date)\n\t console.log(estimatedDeliveryTime)\n\n\t return estimatedDeliveryTime;\n\t}\n\n\n</script>\n\n<style lang=\"scss\" scoped>\n\t.blink {\n\t animation: blink-animation 1s ease infinite;\n\t}\n\n\t@keyframes blink-animation {\n\t 0%, 100% {\n\t opacity: 1;\n\t }\n\t 50% {\n\t opacity: 0.8;\n\t }\n\t}\n</style>"],"names":["useI18n","useRouter","useRoute","ref","auth.state","onMounted","orders.actions","organizations.actions","_a","globals.state","computed","orders.state"],"mappings":"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"}
|
|
@@ -3,14 +3,15 @@ import { useRouter, useRoute } from "vue-router";
|
|
|
3
3
|
/* empty css */
|
|
4
4
|
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
5
5
|
/* empty css */
|
|
6
|
-
import _sfc_main$1 from "../../../../components/Popup/Popup.
|
|
6
|
+
import _sfc_main$1 from "../../../../components/Popup/Popup.vue2.js";
|
|
7
7
|
import IconTime from "../../../icons/entities/IconTime.vue.js";
|
|
8
8
|
import _sfc_main$4 from "../blocks/CardOrderItem.vue.js";
|
|
9
9
|
import _sfc_main$2 from "../../../organizations/components/blocks/CardOrganization.vue.js";
|
|
10
10
|
import _sfc_main$3 from "../../../chats/components/pages/ChatPage.vue.js";
|
|
11
11
|
import _sfc_main$5 from "../elements/PriceTotal.vue.js";
|
|
12
|
-
import { state } from "../../../globals/views/store/globals.js";
|
|
13
|
-
import {
|
|
12
|
+
import { state as state$1 } from "../../../globals/views/store/globals.js";
|
|
13
|
+
import { state } from "../../../auth/views/store/auth.js";
|
|
14
|
+
import { actions, state as state$2 } from "../../store/orders.js";
|
|
14
15
|
import "../../../products/store/products.js";
|
|
15
16
|
import { actions as actions$1 } from "../../../organizations/store/organizations.js";
|
|
16
17
|
import { useI18n } from "vue-i18n";
|
|
@@ -61,8 +62,9 @@ const _hoisted_26 = { class: "flex gap-thin flex-column mn-b-thin" };
|
|
|
61
62
|
const _sfc_main = {
|
|
62
63
|
__name: "OrderBackoffice",
|
|
63
64
|
setup(__props) {
|
|
65
|
+
var _a, _b, _c, _d, _e;
|
|
64
66
|
const { locale } = useI18n();
|
|
65
|
-
useRouter();
|
|
67
|
+
const router = useRouter();
|
|
66
68
|
const route = useRoute();
|
|
67
69
|
const order = ref(null);
|
|
68
70
|
ref(null);
|
|
@@ -72,6 +74,9 @@ const _sfc_main = {
|
|
|
72
74
|
const isActiveStatus = (index) => {
|
|
73
75
|
return statuses.slice(index).includes(order.value.status);
|
|
74
76
|
};
|
|
77
|
+
if (route.meta.context === "user" && state.user && route.params._id !== ((_a = state.user) == null ? void 0 : _a._id) && !((_c = (_b = state.access) == null ? void 0 : _b.roles) == null ? void 0 : _c.includes("ROLE_MODERATOR")) && !((_e = (_d = state.access) == null ? void 0 : _d.roles) == null ? void 0 : _e.includes("ROLE_ADMIN"))) {
|
|
78
|
+
router.push("/401");
|
|
79
|
+
}
|
|
75
80
|
const isOpeStatusPopup = ref(false);
|
|
76
81
|
const selectedMember = ref(null);
|
|
77
82
|
function openStatusPopup(member) {
|
|
@@ -83,17 +88,17 @@ const _sfc_main = {
|
|
|
83
88
|
selectedMember.value = null;
|
|
84
89
|
}
|
|
85
90
|
onMounted(async () => {
|
|
86
|
-
var
|
|
91
|
+
var _a2, _b2;
|
|
87
92
|
order.value = await actions.read({ _id: route.params.order });
|
|
88
93
|
order.value = order.value[0];
|
|
89
94
|
orderOrganization.value = await actions$1.read({
|
|
90
|
-
_id: (
|
|
91
|
-
location: (
|
|
95
|
+
_id: (_a2 = order.value) == null ? void 0 : _a2.owner.target._id,
|
|
96
|
+
location: (_b2 = state$1.position) == null ? void 0 : _b2.location
|
|
92
97
|
});
|
|
93
98
|
});
|
|
94
99
|
let cartTotalPrice = computed(() => {
|
|
95
|
-
var
|
|
96
|
-
return Number((
|
|
100
|
+
var _a2;
|
|
101
|
+
return Number((_a2 = order.value) == null ? void 0 : _a2.positions.reduce((total, product) => {
|
|
97
102
|
if (product.listing === "rent") {
|
|
98
103
|
const start = new Date(product.date.start);
|
|
99
104
|
const end = new Date(product.date.end);
|
|
@@ -105,8 +110,8 @@ const _sfc_main = {
|
|
|
105
110
|
}, 0));
|
|
106
111
|
});
|
|
107
112
|
computed(() => {
|
|
108
|
-
var
|
|
109
|
-
return Number((
|
|
113
|
+
var _a2;
|
|
114
|
+
return Number((_a2 = order.value) == null ? void 0 : _a2.positions.reduce((total, product) => {
|
|
110
115
|
return total + product.quantity;
|
|
111
116
|
}, 0));
|
|
112
117
|
});
|
|
@@ -122,17 +127,17 @@ const _sfc_main = {
|
|
|
122
127
|
return status ? statusLabels[index] : "";
|
|
123
128
|
}
|
|
124
129
|
async function setNextStatus() {
|
|
125
|
-
const nextStatus = getNextStatus(state$
|
|
130
|
+
const nextStatus = getNextStatus(state$2.current.status);
|
|
126
131
|
if (nextStatus) {
|
|
127
|
-
state$
|
|
128
|
-
await actions.update(state$
|
|
132
|
+
state$2.current.status = nextStatus;
|
|
133
|
+
await actions.update(state$2.current);
|
|
129
134
|
} else {
|
|
130
135
|
console.error("Next status is void. Must handle somehow.");
|
|
131
136
|
}
|
|
132
137
|
closeStatusPopup();
|
|
133
138
|
}
|
|
134
139
|
return (_ctx, _cache) => {
|
|
135
|
-
var
|
|
140
|
+
var _a2, _b2, _c2, _d2, _e2, _f, _g;
|
|
136
141
|
return order.value && orderOrganization.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
137
142
|
order.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
138
143
|
createElementVNode("div", _hoisted_3, [
|
|
@@ -212,9 +217,9 @@ const _sfc_main = {
|
|
|
212
217
|
createElementVNode("p", _hoisted_16, toDisplayString(_ctx.formatDate(order.value.updatedAt, { language: unref(locale) })), 1)
|
|
213
218
|
])
|
|
214
219
|
]),
|
|
215
|
-
((
|
|
220
|
+
((_a2 = order.value.customer.target) == null ? void 0 : _a2.number) ? (openBlock(), createElementBlock("div", _hoisted_17, [
|
|
216
221
|
_cache[4] || (_cache[4] = createElementVNode("p", { class: "w-100 t-medium p-medium" }, " Phone ", -1)),
|
|
217
|
-
createElementVNode("p", _hoisted_18, toDisplayString(((
|
|
222
|
+
createElementVNode("p", _hoisted_18, toDisplayString(((_b2 = order.value.customer.target) == null ? void 0 : _b2.number) || "Not specified"), 1)
|
|
218
223
|
])) : createCommentVNode("", true),
|
|
219
224
|
createElementVNode("div", _hoisted_19, [
|
|
220
225
|
_cache[5] || (_cache[5] = createElementVNode("p", { class: "t-medium p-medium" }, " Address ", -1)),
|
|
@@ -228,7 +233,7 @@ const _sfc_main = {
|
|
|
228
233
|
createElementVNode("div", _hoisted_23, [
|
|
229
234
|
_cache[7] || (_cache[7] = createElementVNode("h3", { class: "mn-b-small" }, "Chat With Us", -1)),
|
|
230
235
|
createVNode(_sfc_main$3, {
|
|
231
|
-
username:
|
|
236
|
+
username: ["Order", "UserOrder"].includes(unref(route).name) ? ((_c2 = order.value.user) == null ? void 0 : _c2.name) || "User" : "Support",
|
|
232
237
|
chatID: unref(route).params.order,
|
|
233
238
|
class: "radius-semi bs-black bg-light o-hidden"
|
|
234
239
|
}, null, 8, ["username", "chatID"])
|
|
@@ -250,10 +255,10 @@ const _sfc_main = {
|
|
|
250
255
|
createVNode(_sfc_main$5, {
|
|
251
256
|
totalPrice: unref(cartTotalPrice),
|
|
252
257
|
currency: _ctx.returnCurrency(),
|
|
253
|
-
showFees: (
|
|
254
|
-
feesRate: ((
|
|
255
|
-
showVat: (_f = state.options) == null ? void 0 : _f.showVat,
|
|
256
|
-
vatRate: ((_g = state.options) == null ? void 0 : _g.vatRate) || 0
|
|
258
|
+
showFees: (_d2 = state$1.options) == null ? void 0 : _d2.showFees,
|
|
259
|
+
feesRate: ((_e2 = state$1.options) == null ? void 0 : _e2.feesRate) || 0,
|
|
260
|
+
showVat: (_f = state$1.options) == null ? void 0 : _f.showVat,
|
|
261
|
+
vatRate: ((_g = state$1.options) == null ? void 0 : _g.vatRate) || 0
|
|
257
262
|
}, null, 8, ["totalPrice", "currency", "showFees", "feesRate", "showVat", "vatRate"])
|
|
258
263
|
])
|
|
259
264
|
])) : createCommentVNode("", true)
|
|
@@ -261,7 +266,7 @@ const _sfc_main = {
|
|
|
261
266
|
};
|
|
262
267
|
}
|
|
263
268
|
};
|
|
264
|
-
const OrderBackoffice = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
269
|
+
const OrderBackoffice = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-eeb4cbf7"]]);
|
|
265
270
|
export {
|
|
266
271
|
OrderBackoffice as default
|
|
267
272
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderBackoffice.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderBackoffice.vue"],"sourcesContent":["<template>\n\t<div v-if=\"order && orderOrganization\" class=\"pd-thin bg-white\"> \n\n\t <div v-if=\"order\" class=\"mn-b-thin pos-relative w-100 bg-main radius-medium pd-medium\">\n\t \t<div class=\"mn-b-small flex-nowrap flex\">\n\t\t \t<p class=\"t-medium p-medium\">\n\t\t \tOrder No: <span class=\"p-small t-transp\">#{{order._id}}</span>\n\t\t </p>\n\t\t\t</div>\n\n \t<div class=\"flex-nowrap flex gap-thin pos-relative \">\n\t <div v-for=\"(status, index) in statuses\" :key=\"index\" class=\"w-20\">\n\t <div\n\t \tclass=\"bg-white br-anim br-glow radius-extra h-1r w-100\"\n\t :class=\"\n\t\t\t\t { 'br-glow-anim': isActiveStatus(index) },\n\t\t\t\t { 't-transp': !isActiveStatus(index) },\n\t\t\t\t { 'blink': order.status === statuses[index] && getNextStatus(order.status) }\n\t\t\t\t \"\n\t />\n\t <div \n\t \t:class=\"{ 't-transp': !isActiveStatus(index) }\"\n\t\t\t\t class=\"mn-t-thin p-small t-medium uppercase\">{{ statusLabels[index] }}</div>\n\t \t</div>\n\t\t </div>\n\t </div>\n\n\t <div v-if=\"route.meta.context !== 'user'\" class=\"bg-light pd-thin mn-b-thin pd-thin radius-extra flex-nowrap flex\">\n \t\t<div class=\"w-max flex-v-center gap-thin flex-nowrap flex pd-thin radius-small bg-light-transp-20\">\n \t\t\t<IconTime class=\"i-semi t-transp\" fill=\"rgb(var(--black)\" />\n <p class=\"t-medium mn-r-auto\"><span class=\"p-small t-transp\">Estimated Reaction</span><br>{{formatDate(order.deadline, { language: locale })}}</p>\n\t \t</div>\n\t \t<button v-if=\"getNextStatus(order.status)\" @click=\"openStatusPopup\" class=\"mn-l-auto bg-black t-white button\"> \n\t\t Mark as {{ getStatusLabel(getNextStatus(order.status)) }} \n\t\t </button>\n\n\t\t<!-- <Button v-if=\"order.status !== 'canceled'\" :submit=\"cancelOrder\" class=\"w-max t-white mn-l-thin bg-red\">\n\t\t\t\t<span>Cancel Order</span>\n\t\t\t</Button>\n\n\t\t\t <Button v-if=\"order.status !== 'confirmed'\" :submit=\"confirmOrder\" class=\"w-max t-white mn-l-thin bg-red\">\n\t\t\t\t<span>Confirm Order</span>\n\t\t\t</Button>\n -->\n\n \t</div>\n\n\t <Popup \n title=\"Change status\" \n @close-popup=\"closeStatusPopup\" \n :isPopupOpen=\"isOpeStatusPopup\"\n class=\"bg-light w-min-30r w-max-30r radius-medium pd-big\"\n >\n\n\t\t\t<!-- <VueDatePicker v-model=\"order.deadline\" :hide-navigation=\"['calendar']\" :flow=\"['time']\" class=\"z-index-3 bg-white radius-small pd-small mn-b-thin mn-b-semi\" /> -->\n\n\t\t\t<!-- {{order.deadline}} -->\n<!-- \n\t\t\t<p class=\"t-medium p-medium mn-b-thin\">\n\t\t Positions\n\t\t </p>\n\n \t<ul class=\"bg-white pd-small radius-small flex gap-thin flex-column mn-b-semi\">\n \t\t\t<CardOrderItem\n \t\t\t\tv-for=\"(product, index) in orderProducts\" :key=\"product._id\"\n \t\t\t\t:editable=\"false\" \n \t\t\t\t:product=\"product\" \n \t\t\t/>\n </ul> -->\n \t<button @click=\"setNextStatus\" class=\"w-100 bg-black-small t-white button\">\n \t\t{{'Confirm Changing to ' + getStatusLabel(getNextStatus(order.status))}}\n \t</button>\n\t \t</Popup>\n\n\n\t \n\t <div v-if=\"order\" class=\"gap-thin cols-2\">\n\n\t <div class=\"w-100\">\n\n\n\t\t <CardOrganization \n\t\t \tv-if=\"orderOrganization[0]\"\n\t\t :organization=\"orderOrganization[0]\"\n\t\t :showRating=\"true\"\n\t\t :showFollowers=\"false\"\n\t\t :showProducts=\"false\"\n\t\t class=\"bg-light mn-b-thin w-100 o-hidden radius-medium pd-small \"\n\t\t />\n\n\n\t\t <div \n\t\t \tclass=\"mn-b-thin bg-light w-100 o-hidden radius-medium \"\n\t\t >\n\t\t \t<div class=\"pd-small flex-nowrap flex\">\n\t\t\t \t<div class=\"mn-r-auto\">\n\t\t\t\t \t<span class=\"d-block t-medium p-medium\">Order is</span>\n\t\t\t\t\t <span class=\" t-lh-075 h2 d-block mn-b-small\">{{order.status}}</span>\n\t\t\t\t\t <p class=\"pd-t-nano pd-b-nano pd-r-thin pd-l-thin radius-extra bg-black t-white w-max\">{{formatDate(order.updatedAt, {language: locale })}}</p>\n\t\t\t\t\t </div>\n\t\t\t\t\t <!-- <div class=\"t-right\">\n\t\t\t\t\t \tCancel order<br>\n\t\t\t\t\t \tExchange item\n\t\t\t\t\t \t<hr class=\"mn-b-thin mn-t-thin\">\n\t\t\t\t\t \tFor Delivery Queries Contact Us\n\t\t\t\t\t \t\n\t\t\t\t\t </div> -->\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div v-if=\"order.customer.target?.number\" class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"w-100 t-medium p-medium\">\n\t\t\t \tPhone\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right \">\n\t\t\t \t{{order.customer.target?.number || 'Not specified'}}\n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"t-medium p-medium\">\n\t\t\t \tAddress\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right\">\n\t\t\t {{order.delivery.address || (order.delivery.spot[0].profile.name + ', ' + order.delivery.spot[0].address) || 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"mn-b-small t-medium p-medium\">\n\t\t\t \tDelivery\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right mn-b-small\">\n\t\t\t {{order.delivery.type ? order.delivery.type : 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"bg-light radius-medium pd-medium mn-r-bold w-100\">\n\t\t <h3 class=\"mn-b-small\">Chat With Us</h3>\n\n\t\t <ChatWindow\n\t\t \t:username=\"\n\t\t \t\troute.name === 'Order' || 'UserOrder' ? order.user?.name || 'User' : 'Support'\n\t\t \t\"\n\t\t \t:chatID=\"route.params.order\"\n\t\t \tclass=\"radius-semi bs-black bg-light o-hidden\"\n\t\t />\n\n\t </div>\n\t \t<!-- <StatusHistory \n\t \t\tv-if=\"orders.state.current.status_history\"\n\t \t\t:statuses=\"statuses\"\n\t \t\t:statusHistory=\"orders.state.current.status_history\"\n\t \t\t:statusCurrent=\"orders.state.current.status\"\n\t \t\t:edit=\"route.name === 'Order Edit'\"\n\t \t/> -->\n\n\t <!-- \t<button \n\t \t@click=\"requestPayment(order)\"\n\t \tv-if=\"\n\t \t\torder.status === 'Подтвержден' \n\t \t\t&& order.payment.type === 'Online'\n\t \t\t&& payment.Status !== 'CONFIRMED'\n\t \t\t&& payment.Status !== 'REFUNDED'\n\t \t\" \n\t \tclass='w-100 button'>Оплатить заказ</button> -->\n\t \t<span class=\"t-transp\" v-if=\"payment && payment.Status === 'CONFIRMED'\">Paid</span> \n\t </div> \n\n\t <div class=\"bg-light radius-medium pd-medium w-100\">\n\t \t\t<h3 class=\"mn-b-small\">Order Summary</h3>\n\n\t \t\t<ul class=\"flex gap-thin flex-column mn-b-thin\">\n\t \t\t\t<CardOrderItem\n\t \t\t\t\tv-for=\"(product, index) in order.positions\" :key=\"product._id\"\n\t \t\t\t\t:editable=\"false\" \n\t \t\t\t\t:product=\"product\" \n\t \t\t\t\tclass=\"bg-white radius-small pd-small\"\n\t \t\t\t/>\n\t </ul>\n\t \n\t <PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.showFees\"\n :feesRate=\"globals.state.options?.feesRate || 0\"\n :showVat=\"globals.state.options?.showVat\"\n :vatRate=\"globals.state.options?.vatRate || 0\"\n />\n </div>\n\n\t \n\t </div>\n\t</div>\t\t\n\n</template>\n\n\n<script setup=\"props\">\n\timport { computed, ref, onMounted } from 'vue'\n\timport { useRouter, useRoute } from 'vue-router'\n\n\timport Button from '@martyrs/src/components/Button/Button.vue'\n\timport Popup from \"@martyrs/src/components/Popup/Popup.vue\";\n\n\timport IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n\t// Block\n\timport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport ChatWindow from '@martyrs/src/modules/chats/components/pages/ChatPage.vue';\n\n\timport StatusHistory from '@martyrs/src/modules/orders/components/blocks/StatusHistory.vue'\n\timport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\n\n\timport * as globals \tfrom '@martyrs/src/modules/globals/views/store/globals'\n\timport * as orders \tfrom '@martyrs/src/modules/orders/store/orders'\n\timport * as products \tfrom '@martyrs/src/modules/products/store/products'\n\timport * as organizations \tfrom '@martyrs/src/modules/organizations/store/organizations'\n\n\timport { useI18n } from 'vue-i18n';\n\t\n\tconst { locale } = useI18n();\n\n\tconst router = useRouter()\n\tconst route = useRoute()\n\n\tconst order = ref(null)\n\tconst productsOrganization = ref(null)\n\tconst orderOrganization = ref(null)\n\n\tconst statuses = ['created', 'confirmed', 'preparing', 'inuse', 'finished'];\n\tconst statusLabels = ['Created', 'Confirmed', 'Preparing', 'In use', 'Finished'];\n\n\tconst isActiveStatus = (index) => {\n\t return statuses.slice(index).includes(order.value.status);\n\t};\n\n\t// description: 'Your order has been successfully created. Our manager will contact you within five minutes to confirm your order.'\n\t// description: 'Your order has been confirmed. We are now processing your items and preparing them for shipment.'\n\t// description: 'Your order is now awaiting shipment. Once shipped, you will receive a notification with tracking information.'\n\t// description: 'Your order is now awaiting shipment. Once shipped, you will receive a notification with tracking information.'\n\t// description: 'Your order is currently in transit. Our delivery team is working hard to get your items to you as soon as possible.'\n\t// description: 'Congratulations! Your order has been successfully delivered. If you have any concerns or feedback, feel free to contact us.'\n\n\n\tconst isOpeStatusPopup = ref(false);\n\tconst selectedMember = ref(null);\n\n\tfunction openStatusPopup(member) {\n\t isOpeStatusPopup.value = true;\n\t if (typeof member === \"number\") selectedMember.value = member;\n\t}\n\n\tfunction closeStatusPopup() {\n\t isOpeStatusPopup.value = false;\n\t selectedMember.value = null;\n\t}\n\n\tonMounted(async()=>{\n\t\torder.value = await orders.actions.read({_id: route.params.order})\n\t\torder.value = order.value[0]\n\n\t orderOrganization.value = await organizations.actions.read({\n\t _id: order.value?.owner.target._id,\n\t location: globals.state.position?.location,\n\t });\n\n\t})\n\n\tlet cartTotalPrice = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n })\n\n\n let cartTotalAmount = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n })\n\n // Функция установки нового статуса\n\tasync function setStatus (newStatus) {\n\t orders.state.current.status = newStatus\n\n\t await orders.actions.update(orders.state.current)\n\t} \n\n\tfunction getNextStatus(currentStatus) {\n const currentIndex = statuses.indexOf(currentStatus);\n\n if (currentIndex !== -1 && currentIndex + 1 < statuses.length) {\n return statuses[currentIndex + 1];\n }\n return null; // Если следующий статус не существует\n }\n\n function getStatusLabel(status) {\n const index = statuses.indexOf(status);\n\n return status ? statusLabels[index] : \"\";\n }\n async function setNextStatus() {\n const nextStatus = getNextStatus(orders.state.current.status);\n\n if (nextStatus) {\n orders.state.current.status = nextStatus;\n\n await orders.actions.update(orders.state.current)\n } else {\n console.error('Next status is void. Must handle somehow.');\n }\n\n\t\tcloseStatusPopup()\n }\n\n async function cancelOrder() {\n \talert()\n\n orders.state.current.status = 'canceled';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n async function confirmOrder() {\n \talert()\n\n orders.state.current.status = 'confirmed';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n\tfunction requestPayment(order) {\n\t\t // store.dispatch(\"payments/newPayment\", order);\n\t}\n\n\tfunction calculateDeliveryTime(distance, date) {\n\t if (!distance) {\n\t return null;\n\t }\n\n\t const basePreparationTime = 10 * 60 * 1000; // Convert to milliseconds\n\t const travelTime = Math.ceil((15 + 5 + 3 * distance) / 5) * 5 * 60 * 1000;\n\n\t // Преобразование даты начала в миллисекунды и добавление времени подготовки и доставки\n\t const startTime = new Date(date).getTime();\n\t const estimatedDeliveryTime = new Date(startTime + basePreparationTime + travelTime);\n\n\t console.log(date)\n\t console.log(estimatedDeliveryTime)\n\n\t return estimatedDeliveryTime;\n\t}\n\n\n</script>\n\n<style lang=\"scss\" scoped>\n\t.blink {\n\t animation: blink-animation 1s ease infinite;\n\t}\n\n\t@keyframes blink-animation {\n\t 0%, 100% {\n\t opacity: 1;\n\t }\n\t 50% {\n\t opacity: 0.8;\n\t }\n\t}\n</style>"],"names":["orders.actions","organizations.actions","globals.state","orders.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoOC,UAAM,EAAE,OAAQ,IAAG,QAAS;AAEb,cAAS;AACxB,UAAM,QAAQ,SAAQ;AAEtB,UAAM,QAAQ,IAAI,IAAI;AACO,QAAI,IAAI;AACrC,UAAM,oBAAoB,IAAI,IAAI;AAElC,UAAM,WAAW,CAAC,WAAW,aAAa,aAAa,SAAS,UAAU;AAC1E,UAAM,eAAe,CAAC,WAAW,aAAa,aAAa,UAAU,UAAU;AAE/E,UAAM,iBAAiB,CAAC,UAAU;AAChC,aAAO,SAAS,MAAM,KAAK,EAAE,SAAS,MAAM,MAAM,MAAM;AAAA,IACzD;AAUD,UAAM,mBAAmB,IAAI,KAAK;AAClC,UAAM,iBAAiB,IAAI,IAAI;AAE/B,aAAS,gBAAgB,QAAQ;AAC/B,uBAAiB,QAAQ;AACzB,UAAI,OAAO,WAAW,SAAU,gBAAe,QAAQ;AAAA,IAC1D;AAEC,aAAS,mBAAmB;AAC1B,uBAAiB,QAAQ;AACzB,qBAAe,QAAQ;AAAA,IAC1B;AAEC,cAAU,YAAS;;AAClB,YAAM,QAAQ,MAAMA,QAAe,KAAK,EAAC,KAAK,MAAM,OAAO,MAAK,CAAC;AACjE,YAAM,QAAQ,MAAM,MAAM,CAAC;AAE1B,wBAAkB,QAAQ,MAAMC,UAAsB,KAAK;AAAA,QACzD,MAAK,WAAM,UAAN,mBAAa,MAAM,OAAO;AAAA,QAC/B,WAAUC,WAAc,aAAdA,mBAAwB;AAAA,MACvC,CAAI;AAAA,IAEF,CAAA;AAED,QAAI,iBAAiB,SAAS,MAAM;;AAChC,aAAO,QAAO,WAAM,UAAN,mBAAa,UAAU,OAAO,CAAC,OAAO,YAAY;AAE/D,YAAI,QAAQ,YAAY,QAAQ;AAC9B,gBAAM,QAAQ,IAAI,KAAK,QAAQ,KAAK,KAAK;AACzC,gBAAM,MAAM,IAAI,KAAK,QAAQ,KAAK,GAAG;AACrC,gBAAM,WAAW,KAAK,IAAI,MAAM,KAAK;AACrC,iBAAO,QAAQ,QAAQ,SAAS,KAAK,KAAK,YAAY,MAAO,KAAK,KAAK,GAAG,IAAI;AAAA,QACtF,OAAa;AAEL,iBAAO,QAAQ,QAAQ,SAAS,QAAQ,YAAY;AAAA,QAC5D;AAAA,MACK,GAAE,EAAE;AAAA,IACN,CAAA;AAGqB,aAAS,MAAM;;AACnC,aAAO,QAAO,WAAM,UAAN,mBAAa,UAAU,OAAO,CAAC,OAAO,YAAY;AAC9D,eAAO,QAAQ,QAAQ;AAAA,MACxB,GAAE,EAAE;AAAA,IACN,CAAA;AASF,aAAS,cAAc,eAAe;AACnC,YAAM,eAAe,SAAS,QAAQ,aAAa;AAEnD,UAAI,iBAAiB,MAAM,eAAe,IAAI,SAAS,QAAQ;AAC7D,eAAO,SAAS,eAAe,CAAC;AAAA,MACtC;AACI,aAAO;AAAA,IACX;AAEE,aAAS,eAAe,QAAQ;AAC9B,YAAM,QAAQ,SAAS,QAAQ,MAAM;AAErC,aAAO,SAAS,aAAa,KAAK,IAAI;AAAA,IAC1C;AACE,mBAAe,gBAAgB;AAC7B,YAAM,aAAa,cAAcC,QAAa,QAAQ,MAAM;AAE5D,UAAI,YAAY;AACdA,gBAAa,QAAQ,SAAS;AAE9B,cAAMH,QAAe,OAAOG,QAAa,OAAO;AAAA,MACtD,OAAW;AACL,gBAAQ,MAAM,2CAA2C;AAAA,MAC/D;AAEE,uBAAgB;AAAA,IAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"OrderBackoffice.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderBackoffice.vue"],"sourcesContent":["<template>\n\t<div v-if=\"order && orderOrganization\" class=\"pd-thin bg-white\"> \n\n\t <div v-if=\"order\" class=\"mn-b-thin pos-relative w-100 bg-main radius-medium pd-medium\">\n\t \t<div class=\"mn-b-small flex-nowrap flex\">\n\t\t \t<p class=\"t-medium p-medium\">\n\t\t \tOrder No: <span class=\"p-small t-transp\">#{{order._id}}</span>\n\t\t </p>\n\t\t\t</div>\n\n \t<div class=\"flex-nowrap flex gap-thin pos-relative \">\n\t <div v-for=\"(status, index) in statuses\" :key=\"index\" class=\"w-20\">\n\t <div\n\t \tclass=\"bg-white br-anim br-glow radius-extra h-1r w-100\"\n\t :class=\"\n\t\t\t\t { 'br-glow-anim': isActiveStatus(index) },\n\t\t\t\t { 't-transp': !isActiveStatus(index) },\n\t\t\t\t { 'blink': order.status === statuses[index] && getNextStatus(order.status) }\n\t\t\t\t \"\n\t />\n\t <div \n\t \t:class=\"{ 't-transp': !isActiveStatus(index) }\"\n\t\t\t\t class=\"mn-t-thin p-small t-medium uppercase\">{{ statusLabels[index] }}</div>\n\t \t</div>\n\t\t </div>\n\t </div>\n\n\t <div v-if=\"route.meta.context !== 'user'\" class=\"bg-light pd-thin mn-b-thin pd-thin radius-extra flex-nowrap flex\">\n \t\t<div class=\"w-max flex-v-center gap-thin flex-nowrap flex pd-thin radius-small bg-light-transp-20\">\n \t\t\t<IconTime class=\"i-semi t-transp\" fill=\"rgb(var(--black)\" />\n <p class=\"t-medium mn-r-auto\"><span class=\"p-small t-transp\">Estimated Reaction</span><br>{{formatDate(order.deadline, { language: locale })}}</p>\n\t \t</div>\n\t \t<button v-if=\"getNextStatus(order.status)\" @click=\"openStatusPopup\" class=\"mn-l-auto bg-black t-white button\"> \n\t\t Mark as {{ getStatusLabel(getNextStatus(order.status)) }} \n\t\t </button>\n\n\t\t<!-- <Button v-if=\"order.status !== 'canceled'\" :submit=\"cancelOrder\" class=\"w-max t-white mn-l-thin bg-red\">\n\t\t\t\t<span>Cancel Order</span>\n\t\t\t</Button>\n\n\t\t\t <Button v-if=\"order.status !== 'confirmed'\" :submit=\"confirmOrder\" class=\"w-max t-white mn-l-thin bg-red\">\n\t\t\t\t<span>Confirm Order</span>\n\t\t\t</Button>\n -->\n\n \t</div>\n\n\t <Popup \n title=\"Change status\" \n @close-popup=\"closeStatusPopup\" \n :isPopupOpen=\"isOpeStatusPopup\"\n class=\"bg-light w-min-30r w-max-30r radius-medium pd-big\"\n >\n\n\t\t\t<!-- <VueDatePicker v-model=\"order.deadline\" :hide-navigation=\"['calendar']\" :flow=\"['time']\" class=\"z-index-3 bg-white radius-small pd-small mn-b-thin mn-b-semi\" /> -->\n\n\t\t\t<!-- {{order.deadline}} -->\n<!-- \n\t\t\t<p class=\"t-medium p-medium mn-b-thin\">\n\t\t Positions\n\t\t </p>\n\n \t<ul class=\"bg-white pd-small radius-small flex gap-thin flex-column mn-b-semi\">\n \t\t\t<CardOrderItem\n \t\t\t\tv-for=\"(product, index) in orderProducts\" :key=\"product._id\"\n \t\t\t\t:editable=\"false\" \n \t\t\t\t:product=\"product\" \n \t\t\t/>\n </ul> -->\n \t<button @click=\"setNextStatus\" class=\"w-100 bg-black-small t-white button\">\n \t\t{{'Confirm Changing to ' + getStatusLabel(getNextStatus(order.status))}}\n \t</button>\n\t \t</Popup>\n\n\n\t \n\t <div v-if=\"order\" class=\"gap-thin cols-2\">\n\n\t <div class=\"w-100\">\n\n\n\t\t <CardOrganization \n\t\t \tv-if=\"orderOrganization[0]\"\n\t\t :organization=\"orderOrganization[0]\"\n\t\t :showRating=\"true\"\n\t\t :showFollowers=\"false\"\n\t\t :showProducts=\"false\"\n\t\t class=\"bg-light mn-b-thin w-100 o-hidden radius-medium pd-small \"\n\t\t />\n\n\n\t\t <div \n\t\t \tclass=\"mn-b-thin bg-light w-100 o-hidden radius-medium \"\n\t\t >\n\t\t \t<div class=\"pd-small flex-nowrap flex\">\n\t\t\t \t<div class=\"mn-r-auto\">\n\t\t\t\t \t<span class=\"d-block t-medium p-medium\">Order is</span>\n\t\t\t\t\t <span class=\" t-lh-075 h2 d-block mn-b-small\">{{order.status}}</span>\n\t\t\t\t\t <p class=\"pd-t-nano pd-b-nano pd-r-thin pd-l-thin radius-extra bg-black t-white w-max\">{{formatDate(order.updatedAt, {language: locale })}}</p>\n\t\t\t\t\t </div>\n\t\t\t\t\t <!-- <div class=\"t-right\">\n\t\t\t\t\t \tCancel order<br>\n\t\t\t\t\t \tExchange item\n\t\t\t\t\t \t<hr class=\"mn-b-thin mn-t-thin\">\n\t\t\t\t\t \tFor Delivery Queries Contact Us\n\t\t\t\t\t \t\n\t\t\t\t\t </div> -->\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div v-if=\"order.customer.target?.number\" class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"w-100 t-medium p-medium\">\n\t\t\t \tPhone\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right \">\n\t\t\t \t{{order.customer.target?.number || 'Not specified'}}\n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"t-medium p-medium\">\n\t\t\t \tAddress\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right\">\n\t\t\t {{order.delivery.address || (order.delivery.spot[0].profile.name + ', ' + order.delivery.spot[0].address) || 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"mn-b-small t-medium p-medium\">\n\t\t\t \tDelivery\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right mn-b-small\">\n\t\t\t {{order.delivery.type ? order.delivery.type : 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"bg-light radius-medium pd-medium mn-r-bold w-100\">\n\t\t <h3 class=\"mn-b-small\">Chat With Us</h3>\n\n\t\t <ChatWindow\n\t\t \t:username=\"['Order', 'UserOrder'].includes(route.name) ? (order.user?.name || 'User') : 'Support'\"\n\t\t \t:chatID=\"route.params.order\"\n\t\t \tclass=\"radius-semi bs-black bg-light o-hidden\"\n\t\t />\n\n\t </div>\n\t \t<!-- <StatusHistory \n\t \t\tv-if=\"orders.state.current.status_history\"\n\t \t\t:statuses=\"statuses\"\n\t \t\t:statusHistory=\"orders.state.current.status_history\"\n\t \t\t:statusCurrent=\"orders.state.current.status\"\n\t \t\t:edit=\"route.name === 'Order Edit'\"\n\t \t/> -->\n\n\t <!-- \t<button \n\t \t@click=\"requestPayment(order)\"\n\t \tv-if=\"\n\t \t\torder.status === 'Подтвержден' \n\t \t\t&& order.payment.type === 'Online'\n\t \t\t&& payment.Status !== 'CONFIRMED'\n\t \t\t&& payment.Status !== 'REFUNDED'\n\t \t\" \n\t \tclass='w-100 button'>Оплатить заказ</button> -->\n\t \t<span class=\"t-transp\" v-if=\"payment && payment.Status === 'CONFIRMED'\">Paid</span> \n\t </div> \n\n\t <div class=\"bg-light radius-medium pd-medium w-100\">\n\t \t\t<h3 class=\"mn-b-small\">Order Summary</h3>\n\n\t \t\t<ul class=\"flex gap-thin flex-column mn-b-thin\">\n\t \t\t\t<CardOrderItem\n\t \t\t\t\tv-for=\"(product, index) in order.positions\" :key=\"product._id\"\n\t \t\t\t\t:editable=\"false\" \n\t \t\t\t\t:product=\"product\" \n\t \t\t\t\tclass=\"bg-white radius-small pd-small\"\n\t \t\t\t/>\n\t </ul>\n\t \n\t <PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.showFees\"\n :feesRate=\"globals.state.options?.feesRate || 0\"\n :showVat=\"globals.state.options?.showVat\"\n :vatRate=\"globals.state.options?.vatRate || 0\"\n />\n </div>\n\n\t \n\t </div>\n\t</div>\t\t\n\n</template>\n\n\n<script setup=\"props\">\n\timport { computed, ref, onMounted } from 'vue'\n\timport { useRouter, useRoute } from 'vue-router'\n\n\timport Button from '@martyrs/src/components/Button/Button.vue'\n\timport Popup from \"@martyrs/src/components/Popup/Popup.vue\";\n\n\timport IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n\t// Block\n\timport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport ChatWindow from '@martyrs/src/modules/chats/components/pages/ChatPage.vue';\n\n\timport StatusHistory from '@martyrs/src/modules/orders/components/blocks/StatusHistory.vue'\n\timport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\n\n\timport * as globals \tfrom '@martyrs/src/modules/globals/views/store/globals'\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth'\n\timport * as orders \tfrom '@martyrs/src/modules/orders/store/orders'\n\timport * as products \tfrom '@martyrs/src/modules/products/store/products'\n\timport * as organizations \tfrom '@martyrs/src/modules/organizations/store/organizations'\n\n\timport { useI18n } from 'vue-i18n';\n\t\n\tconst { locale } = useI18n();\n\n\tconst router = useRouter()\n\tconst route = useRoute()\n\n\tconst order = ref(null)\n\tconst productsOrganization = ref(null)\n\tconst orderOrganization = ref(null)\n\n\tconst statuses = ['created', 'confirmed', 'preparing', 'inuse', 'finished'];\n\tconst statusLabels = ['Created', 'Confirmed', 'Preparing', 'In use', 'Finished'];\n\n\tconst isActiveStatus = (index) => {\n\t return statuses.slice(index).includes(order.value.status);\n\t};\n\n if (route.meta.context === 'user' && \n auth.state.user && \n route.params._id !== auth.state.user?._id && \n !auth.state.access?.roles?.includes('ROLE_MODERATOR') && \n !auth.state.access?.roles?.includes('ROLE_ADMIN')) {\n router.push('/401');\n }\n\t// description: 'Your order has been successfully created. Our manager will contact you within five minutes to confirm your order.'\n\t// description: 'Your order has been confirmed. We are now processing your items and preparing them for shipment.'\n\t// description: 'Your order is now awaiting shipment. Once shipped, you will receive a notification with tracking information.'\n\t// description: 'Your order is now awaiting shipment. Once shipped, you will receive a notification with tracking information.'\n\t// description: 'Your order is currently in transit. Our delivery team is working hard to get your items to you as soon as possible.'\n\t// description: 'Congratulations! Your order has been successfully delivered. If you have any concerns or feedback, feel free to contact us.'\n\n\n\tconst isOpeStatusPopup = ref(false);\n\tconst selectedMember = ref(null);\n\n\tfunction openStatusPopup(member) {\n\t isOpeStatusPopup.value = true;\n\t if (typeof member === \"number\") selectedMember.value = member;\n\t}\n\n\tfunction closeStatusPopup() {\n\t isOpeStatusPopup.value = false;\n\t selectedMember.value = null;\n\t}\n\n\tonMounted(async()=>{\n\t\torder.value = await orders.actions.read({_id: route.params.order})\n\t\torder.value = order.value[0]\n\n\t orderOrganization.value = await organizations.actions.read({\n\t _id: order.value?.owner.target._id,\n\t location: globals.state.position?.location,\n\t });\n\n\t})\n\n\tlet cartTotalPrice = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n })\n\n\n let cartTotalAmount = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n })\n\n // Функция установки нового статуса\n\tasync function setStatus (newStatus) {\n\t orders.state.current.status = newStatus\n\n\t await orders.actions.update(orders.state.current)\n\t} \n\n\tfunction getNextStatus(currentStatus) {\n const currentIndex = statuses.indexOf(currentStatus);\n\n if (currentIndex !== -1 && currentIndex + 1 < statuses.length) {\n return statuses[currentIndex + 1];\n }\n return null; // Если следующий статус не существует\n }\n\n function getStatusLabel(status) {\n const index = statuses.indexOf(status);\n\n return status ? statusLabels[index] : \"\";\n }\n async function setNextStatus() {\n const nextStatus = getNextStatus(orders.state.current.status);\n\n if (nextStatus) {\n orders.state.current.status = nextStatus;\n\n await orders.actions.update(orders.state.current)\n } else {\n console.error('Next status is void. Must handle somehow.');\n }\n\n\t\tcloseStatusPopup()\n }\n\n async function cancelOrder() {\n \talert()\n\n orders.state.current.status = 'canceled';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n async function confirmOrder() {\n \talert()\n\n orders.state.current.status = 'confirmed';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n\tfunction requestPayment(order) {\n\t\t // store.dispatch(\"payments/newPayment\", order);\n\t}\n\n\tfunction calculateDeliveryTime(distance, date) {\n\t if (!distance) {\n\t return null;\n\t }\n\n\t const basePreparationTime = 10 * 60 * 1000; // Convert to milliseconds\n\t const travelTime = Math.ceil((15 + 5 + 3 * distance) / 5) * 5 * 60 * 1000;\n\n\t // Преобразование даты начала в миллисекунды и добавление времени подготовки и доставки\n\t const startTime = new Date(date).getTime();\n\t const estimatedDeliveryTime = new Date(startTime + basePreparationTime + travelTime);\n\n\t console.log(date)\n\t console.log(estimatedDeliveryTime)\n\n\t return estimatedDeliveryTime;\n\t}\n\n\n</script>\n\n<style lang=\"scss\" scoped>\n\t.blink {\n\t animation: blink-animation 1s ease infinite;\n\t}\n\n\t@keyframes blink-animation {\n\t 0%, 100% {\n\t opacity: 1;\n\t }\n\t 50% {\n\t opacity: 0.8;\n\t }\n\t}\n</style>"],"names":["auth.state","orders.actions","organizations.actions","_a","globals.state","orders.state"],"mappings":"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"}
|
|
@@ -4,11 +4,11 @@ const vue = require("vue");
|
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const Button = require("../../../../components/Button/Button.vue.cjs");
|
|
6
6
|
const Tab = require("../../../../components/Tab/Tab.vue.cjs");
|
|
7
|
-
const Popup = require("../../../../components/Popup/Popup.
|
|
7
|
+
const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
|
|
8
8
|
const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
9
9
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
10
10
|
const CardOrderItem = require("../blocks/CardOrderItem.vue.cjs");
|
|
11
|
-
;/* empty css
|
|
11
|
+
;/* empty css */
|
|
12
12
|
;/* empty css */
|
|
13
13
|
const CardUser = require("../../../auth/views/components/blocks/CardUser.vue.cjs");
|
|
14
14
|
const FormAddCustomer = require("../sections/FormAddCustomer.vue.cjs");
|
|
@@ -2,11 +2,11 @@ import { computed, ref, onMounted, createElementBlock, openBlock, createVNode, c
|
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
3
|
import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
|
|
4
4
|
import _sfc_main$3 from "../../../../components/Tab/Tab.vue.js";
|
|
5
|
-
import _sfc_main$4 from "../../../../components/Popup/Popup.
|
|
5
|
+
import _sfc_main$4 from "../../../../components/Popup/Popup.vue2.js";
|
|
6
6
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
7
7
|
import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
|
|
8
8
|
import _sfc_main$6 from "../blocks/CardOrderItem.vue.js";
|
|
9
|
-
/* empty css
|
|
9
|
+
/* empty css */
|
|
10
10
|
/* empty css */
|
|
11
11
|
import _sfc_main$7 from "../../../auth/views/components/blocks/CardUser.vue.js";
|
|
12
12
|
import _sfc_main$a from "../sections/FormAddCustomer.vue.js";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const CardOrderItem = require("../../../orders/components/blocks/CardOrderItem.vue.cjs");
|
|
6
|
-
const Chips = require("../../../../components/Chips/Chips.
|
|
6
|
+
const Chips = require("../../../../components/Chips/Chips.vue.cjs");
|
|
7
7
|
const PlaceholderOrganizationPic = require("../../../icons/placeholders/PlaceholderOrganizationPic.vue.cjs");
|
|
8
8
|
const IconPrice = require("../../../icons/entities/IconPrice.vue.cjs");
|
|
9
9
|
const IconShopcart = require("../../../icons/entities/IconShopcart.vue.cjs");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createElementBlock, openBlock, createElementVNode, createCommentVNode, createBlock, toDisplayString, withCtx, createVNode, Fragment, renderList, withModifiers } from "vue";
|
|
2
2
|
import { useRouter } from "vue-router";
|
|
3
3
|
import _sfc_main$5 from "../../../orders/components/blocks/CardOrderItem.vue.js";
|
|
4
|
-
import _sfc_main$1 from "../../../../components/Chips/Chips.
|
|
4
|
+
import _sfc_main$1 from "../../../../components/Chips/Chips.vue.js";
|
|
5
5
|
import PlaceholderOrganizationPic from "../../../icons/placeholders/PlaceholderOrganizationPic.vue.js";
|
|
6
6
|
import _sfc_main$3 from "../../../icons/entities/IconPrice.vue.js";
|
|
7
7
|
import _sfc_main$4 from "../../../icons/entities/IconShopcart.vue.js";
|
|
@@ -14,7 +14,7 @@ require("../../../../../../node_modules/@googlemaps/js-api-loader/dist/index.cjs
|
|
|
14
14
|
;/* empty css */
|
|
15
15
|
;/* empty css */
|
|
16
16
|
const Button = require("../../../../components/Button/Button.vue.cjs");
|
|
17
|
-
const Popup = require("../../../../components/Popup/Popup.
|
|
17
|
+
const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
|
|
18
18
|
const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
19
19
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
20
20
|
const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
|
|
@@ -12,7 +12,7 @@ import "../../../../../../node_modules/@googlemaps/js-api-loader/dist/index.js";
|
|
|
12
12
|
/* empty css */
|
|
13
13
|
/* empty css */
|
|
14
14
|
import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
|
|
15
|
-
import _sfc_main$6 from "../../../../components/Popup/Popup.
|
|
15
|
+
import _sfc_main$6 from "../../../../components/Popup/Popup.vue2.js";
|
|
16
16
|
import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
|
|
17
17
|
import _sfc_main$7 from "../../../../components/Feed/Feed.vue.js";
|
|
18
18
|
import _sfc_main$5 from "../../../icons/navigation/IconDelete.vue.js";
|
|
@@ -5,7 +5,7 @@ const vueRouter = require("vue-router");
|
|
|
5
5
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
6
6
|
;/* empty css */
|
|
7
7
|
;/* empty css */
|
|
8
|
-
const Popup = require("../../../../components/Popup/Popup.
|
|
8
|
+
const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
|
|
9
9
|
const SectionPageTitle = require("../../../globals/views/components/sections/SectionPageTitle.vue.cjs");
|
|
10
10
|
const MembersAdd = require("../sections/MembersAdd.vue.cjs");
|
|
11
11
|
;/* empty css */
|
|
@@ -3,7 +3,7 @@ import { useRoute, useRouter } from "vue-router";
|
|
|
3
3
|
import _sfc_main$4 from "../../../../components/Feed/Feed.vue.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
/* empty css */
|
|
6
|
-
import _sfc_main$2 from "../../../../components/Popup/Popup.
|
|
6
|
+
import _sfc_main$2 from "../../../../components/Popup/Popup.vue2.js";
|
|
7
7
|
import _sfc_main$1 from "../../../globals/views/components/sections/SectionPageTitle.vue.js";
|
|
8
8
|
import _sfc_main$3 from "../sections/MembersAdd.vue.js";
|
|
9
9
|
/* empty css */
|
package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const Menu = require("../../../../components/Menu/Menu.vue2.cjs");
|
|
5
5
|
const MenuItem = require("../../../../components/Menu/MenuItem.vue.cjs");
|
|
6
|
-
;/* empty css
|
|
6
|
+
;/* empty css */
|
|
7
7
|
const IconProducts = require("../../../icons/entities/IconProducts.vue.cjs");
|
|
8
8
|
const IconEvents = require("../../../icons/entities/IconEvents.vue.cjs");
|
|
9
9
|
const IconGroups = require("../../../icons/entities/IconGroups.vue.cjs");
|