commit
bd37355e14
@ -0,0 +1,7 @@
|
||||
{
|
||||
"/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=7fcd283086b499f2c4eb",
|
||||
"/js/vue/Home/app.js": "/js/vue/Home/app.js?id=4271ddf84160f6db9559",
|
||||
"/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=42a67229cb063f0afead",
|
||||
"/js/vue/Modules/Reservation/app.js": "/js/vue/Modules/Reservation/app.js?id=31627036c5ddd8a0c6ba",
|
||||
"/js/vue/User/app.js": "/js/vue/User/app.js?id=140e6ef646d3001986ba"
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<v-card-text>
|
||||
<v-textarea
|
||||
:label="element.label"
|
||||
:placeholder="element.placeholder"
|
||||
:hint="element.hint"
|
||||
:color="element.color"
|
||||
:append-icon="element.append_icon"
|
||||
:prepend-icon="element.prepend_icon || 'fas fa-align-right' "
|
||||
v-model="values[element.slug]"
|
||||
></v-textarea>
|
||||
</v-card-text>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
element: {
|
||||
type: Object
|
||||
},
|
||||
values: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
@ -1,4 +1,2 @@
|
||||
export default {
|
||||
getClientTypes: state => state.clientTypes,
|
||||
getPhoneTypes: state => state.phoneTypes
|
||||
};
|
||||
|
@ -1,4 +1,2 @@
|
||||
export default {
|
||||
PaymentConfirmation: false,
|
||||
TrialConfirmation: false,
|
||||
};
|
@ -1,215 +1,259 @@
|
||||
<template>
|
||||
<v-container fluid>
|
||||
<div class="Tile Shadowed Padd-0 WM-Margin-B-10">
|
||||
<wm-breadcrumbs LinkClass="WM-Link-Cyan" :items="breadcrumbItems"></wm-breadcrumbs>
|
||||
</div>
|
||||
<div class="Tile Shadowed">
|
||||
<WM-PageTitle titleFaClass="black--text" color="black" titleFa=" افزودن بخش جدید " titleEn=" Add a New Section "></WM-PageTitle>
|
||||
<div v-for="(module, index) in modules" :key="index">
|
||||
<div :class="'ModuleItem '+module.color+'Border'">
|
||||
<div :class="'itrator En '+module.color+'--text'"> {{index+1}} </div>
|
||||
<v-layout row wrap class="WM-Margin-0">
|
||||
<v-flex lg4 class="Title">
|
||||
<div class="FA"> {{ module.nameFa }} </div>
|
||||
<div class="EN"> {{ module.nameEn }} </div>
|
||||
</v-flex>
|
||||
<v-flex lg4 class="Price">
|
||||
<div class="Old En" v-if="module.oldPrice"> {{ module.oldPrice }} </div>
|
||||
<div class="Main En"> {{ module.price }} <span class="Unit">IRT</span></div>
|
||||
</v-flex>
|
||||
<v-flex lg4 class="WM-Align-L">
|
||||
<v-tooltip top color="black">
|
||||
<v-container fluid>
|
||||
<div class="Tile Shadowed Padd-0 WM-Margin-B-10">
|
||||
<wm-breadcrumbs LinkClass="WM-Link-Cyan" :items="breadcrumbItems"></wm-breadcrumbs>
|
||||
</div>
|
||||
<div class="Tile Shadowed">
|
||||
<WM-PageTitle
|
||||
titleFaClass="black--text"
|
||||
color="black"
|
||||
titleFa=" افزودن بخش جدید "
|
||||
titleEn=" Add a New Section "
|
||||
></WM-PageTitle>
|
||||
<div v-for="(module, index) in getAllModules" :key="index">
|
||||
<div :class="'ModuleItem '+module.color_class+'Border'">
|
||||
<div :class="'itrator En '+module.color_class+'--text'">{{index+1}}</div>
|
||||
<v-layout row wrap class="WM-Margin-0">
|
||||
<v-flex lg4 class="Title">
|
||||
<div class="FA">{{ module.title_fa }}</div>
|
||||
<div class="EN">{{ module.title_en }}</div>
|
||||
</v-flex>
|
||||
<v-flex lg4 class="Price">
|
||||
<div class="Old En" v-if="module.old_price">{{ Intl.NumberFormat().format(module.old_price) }}</div>
|
||||
<div class="Main En">
|
||||
{{ Intl.NumberFormat().format(module.price) }}
|
||||
<span class="Unit">IRT</span>
|
||||
</div>
|
||||
</v-flex>
|
||||
<v-flex lg4 class="WM-Align-L">
|
||||
<v-tooltip top color="black">
|
||||
<v-btn
|
||||
small
|
||||
outline
|
||||
@click.native="$_openModal('role_permission/trial_confirmation'), SET_CURRENT_MODULE(module)"
|
||||
slot="activator"
|
||||
fab
|
||||
:color="module.color_class"
|
||||
>
|
||||
<v-icon dark>fas fa-history</v-icon>
|
||||
</v-btn>
|
||||
<span>فعالسازی نسخه ی 15 روزه، آزمایشی</span>
|
||||
</v-tooltip>
|
||||
<!-- <v-tooltip top color="black">
|
||||
<v-btn
|
||||
small
|
||||
outline
|
||||
@click.native="$store.state.TrialConfirmation = true"
|
||||
@click.native="$_openModal('role_permission/payment_confirmation'), SET_CURRENT_ALL_MODULE(module)"
|
||||
slot="activator"
|
||||
fab
|
||||
:color="module.color"
|
||||
>
|
||||
<v-icon dark> fas fa-history </v-icon>
|
||||
</v-btn>
|
||||
<span> فعالسازی نسخه ی 15 روزه، آزمایشی </span>
|
||||
</v-tooltip>
|
||||
<v-tooltip top color="black">
|
||||
<v-btn
|
||||
@click.native="$store.state.PaymentConfirmation = true"
|
||||
slot="activator"
|
||||
fab
|
||||
:color="module.color"
|
||||
:color="module.color_class"
|
||||
dark
|
||||
>
|
||||
<v-icon dark> fas fa-plus </v-icon>
|
||||
</v-btn>
|
||||
<span> خرید </span>
|
||||
</v-tooltip>
|
||||
</v-flex>
|
||||
<v-flex lg12 class="description RTL" v-if="module.descriptionTitle">
|
||||
<v-expansion-panel popout style="margin-bottom:0px;">
|
||||
<v-expansion-panel-content>
|
||||
<template v-slot:header>
|
||||
<v-flex lg12 class="text-lg-right Title"><v-icon> fas fa-align-right </v-icon> {{ module.descriptionTitle }} </v-flex>
|
||||
</template>
|
||||
<v-card>
|
||||
<v-card-text style="padding:0px 40px 10px 40px">
|
||||
<div class="WM-Tile" >
|
||||
<v-layout row wrap class="WM-Margin-0">
|
||||
<v-flex lg12 class="text-lg-right zIndex99 Text" v-html="module.descriptionText"> </v-flex>
|
||||
</v-layout>
|
||||
</div>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-expansion-panel-content>
|
||||
</v-expansion-panel>
|
||||
</v-flex>
|
||||
</v-layout>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</v-tooltip>-->
|
||||
</v-flex>
|
||||
<v-flex lg12 class="description RTL" v-if="module.description_title">
|
||||
<v-expansion-panel popout style="margin-bottom:0px;">
|
||||
<v-expansion-panel-content>
|
||||
<template v-slot:header>
|
||||
<v-flex lg12 class="text-lg-right Title">
|
||||
<v-icon>fas fa-align-right</v-icon>
|
||||
{{ module.description_title }}
|
||||
</v-flex>
|
||||
</template>
|
||||
<v-card>
|
||||
<v-card-text style="padding:0px 40px 10px 40px">
|
||||
<div class="WM-Tile">
|
||||
<v-layout row wrap class="WM-Margin-0">
|
||||
<v-flex lg12 class="text-lg-right zIndex99 Text" v-html="module.description"></v-flex>
|
||||
</v-layout>
|
||||
</div>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-expansion-panel-content>
|
||||
</v-expansion-panel>
|
||||
</v-flex>
|
||||
</v-layout>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- --------------------------------------------------------------------
|
||||
<!-- --------------------------------------------------------------------
|
||||
Modals :: BEGIN
|
||||
-------------------------------------------------------------------- -->
|
||||
<template>
|
||||
<div class="text-xs-center">
|
||||
<wm-payment-confirmation></wm-payment-confirmation>
|
||||
<wm-trial-confirmation></wm-trial-confirmation>
|
||||
</div>
|
||||
</template>
|
||||
---------------------------------------------------------------------->
|
||||
<template>
|
||||
<div class="text-xs-center">
|
||||
<!-- <wm-payment-confirmation></wm-payment-confirmation> -->
|
||||
<wm-trial-confirmation></wm-trial-confirmation>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- --------------------------------------------------------------------
|
||||
<!-- --------------------------------------------------------------------
|
||||
Modals :: END
|
||||
-------------------------------------------------------------------- -->
|
||||
|
||||
</v-container>
|
||||
---------------------------------------------------------------------->
|
||||
</v-container>
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
import PaymentConfirmation from "@Common/components/Misc/PaymentConfirmation.vue";
|
||||
import TrialConfirmation from "@Common/components/Misc/TrialConfirmation.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
'wm-payment-confirmation' : PaymentConfirmation,
|
||||
'wm-trial-confirmation' : TrialConfirmation,
|
||||
},
|
||||
props: {
|
||||
color: { default: 'grey darken-4' },
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
breadcrumbItems: [
|
||||
{
|
||||
text: "",
|
||||
disabled: false,
|
||||
routeName: "Home",
|
||||
icon: "home"
|
||||
},
|
||||
{
|
||||
text: " افزودن بخش جدید ",
|
||||
disabled: true,
|
||||
}
|
||||
],
|
||||
modules: [
|
||||
{ nameFa: ' باشگاه مشتریان ', nameEn: ' Members Club ', price: '1,500,000', id: 1, color:"red",
|
||||
descriptionTitle: ' باشگاه مشتریان در واقع بستری است برای اینکه بتوانید مشتریان خود را ثبت، آنها را مدیریت و با آنها ارتباط بر قرار کنید. ',
|
||||
descriptionText: ' امکانات مشتریان به طور خلاصه به شرح زیر می باشد: <div class="WM-Margin-R-10"> 1. ثبت و ویرایش اعضای باشگاه <br> 2. امکان ثبت تاریخ تولد و ازدواج</div> '
|
||||
},
|
||||
{ nameFa: ' مدیریت ارتباط با مشتری ', nameEn: ' Customers Relationship Management ', price: '3,500,000', oldPrice: '3,000,000', id: 2, color:"orange" },
|
||||
{ nameFa: ' مدیریت فروشگاه ', nameEn: ' Store Management ', price: '2,500,000', id: 3, color:"cyan" },
|
||||
{ nameFa: ' سیستم رزرو وقت ', nameEn: ' Reservations System ', price: '1,000,000', id: 4, color:"purple" },
|
||||
],
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// import PaymentConfirmation from "@Common/components/Misc/PaymentConfirmation.vue";
|
||||
import TrialConfirmation from "@Common/components/Misc/TrialConfirmation.vue";
|
||||
import { mapGetters, mapActions, mapMutations } from "vuex";
|
||||
export default {
|
||||
components: {
|
||||
// "wm-payment-confirmation": PaymentConfirmation,
|
||||
"wm-trial-confirmation": TrialConfirmation
|
||||
},
|
||||
props: {
|
||||
color: { default: "grey darken-4" }
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
breadcrumbItems: [
|
||||
{
|
||||
text: "",
|
||||
disabled: false,
|
||||
routeName: "Home",
|
||||
icon: "home"
|
||||
},
|
||||
{
|
||||
text: " افزودن بخش جدید ",
|
||||
disabled: true
|
||||
}
|
||||
],
|
||||
modules: [
|
||||
{
|
||||
nameFa: " باشگاه مشتریان ",
|
||||
nameEn: " Members Club ",
|
||||
price: "1,500,000",
|
||||
id: 1,
|
||||
color: "red",
|
||||
descriptionTitle:
|
||||
" باشگاه مشتریان در واقع بستری است برای اینکه بتوانید مشتریان خود را ثبت، آنها را مدیریت و با آنها ارتباط بر قرار کنید. ",
|
||||
descriptionText:
|
||||
' امکانات مشتریان به طور خلاصه به شرح زیر می باشد: <div class="WM-Margin-R-10"> 1. ثبت و ویرایش اعضای باشگاه <br> 2. امکان ثبت تاریخ تولد و ازدواج</div> '
|
||||
},
|
||||
{
|
||||
nameFa: " مدیریت ارتباط با مشتری ",
|
||||
nameEn: " Customers Relationship Management ",
|
||||
price: "3,500,000",
|
||||
oldPrice: "3,000,000",
|
||||
id: 2,
|
||||
color: "orange"
|
||||
},
|
||||
{
|
||||
nameFa: " مدیریت فروشگاه ",
|
||||
nameEn: " Store Management ",
|
||||
price: "2,500,000",
|
||||
id: 3,
|
||||
color: "cyan"
|
||||
},
|
||||
{
|
||||
nameFa: " سیستم رزرو وقت ",
|
||||
nameEn: " Reservations System ",
|
||||
price: "1,000,000",
|
||||
id: 4,
|
||||
color: "purple"
|
||||
}
|
||||
]
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters("role_permission", ["getAllModules"])
|
||||
},
|
||||
methods: {
|
||||
...mapActions("role_permission", ["loadAllModules"]),
|
||||
...mapMutations("role_permission", ["SET_CURRENT_MODULE"]),
|
||||
},
|
||||
created() {
|
||||
this.loadAllModules({ home_page: true });
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.ModuleItem {
|
||||
position: relative;
|
||||
padding: 10px;
|
||||
border: 1px solid #eeeeee;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.ModuleItem.redBorder {
|
||||
border-right:2px solid #ee3552;
|
||||
}
|
||||
.ModuleItem.orangeBorder {
|
||||
border-right:2px solid #ff6b57;
|
||||
}
|
||||
.ModuleItem.cyanBorder {
|
||||
border-right:2px solid #32c5d2;
|
||||
}
|
||||
.ModuleItem.purpleBorder {
|
||||
border-right:2px solid #ac3773;
|
||||
}
|
||||
.ModuleItem .itrator {
|
||||
position: absolute;
|
||||
font-size: 60px;
|
||||
right: -5px;
|
||||
bottom: -25px;
|
||||
opacity: 0.1;
|
||||
font-family: "Montserrat-ExtraBold";
|
||||
z-index: 100;
|
||||
}
|
||||
.ModuleItem .Title {
|
||||
text-align: right;
|
||||
}
|
||||
.ModuleItem .FA {
|
||||
font-size: 26px;
|
||||
}
|
||||
.ModuleItem .EN {
|
||||
font-size: 12px;
|
||||
letter-spacing: 5px;
|
||||
text-transform: uppercase;
|
||||
color: #9a9a9a
|
||||
}
|
||||
.ModuleItem .Price {
|
||||
text-align: left;
|
||||
padding-top: 10px;
|
||||
}
|
||||
.ModuleItem .Price .Main {
|
||||
font-size: 26px;
|
||||
// font-family: "Montserrat-ExtraBold";
|
||||
}
|
||||
.ModuleItem .Price .Old {
|
||||
font-size: 12px;
|
||||
color: #ee3552;
|
||||
text-decoration: line-through;
|
||||
margin-bottom: -10px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
.ModuleItem {
|
||||
position: relative;
|
||||
padding: 10px;
|
||||
border: 1px solid #eeeeee;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.ModuleItem.redBorder {
|
||||
border-right: 2px solid #ee3552;
|
||||
}
|
||||
.ModuleItem.orangeBorder {
|
||||
border-right: 2px solid #ff6b57;
|
||||
}
|
||||
.ModuleItem.cyanBorder {
|
||||
border-right: 2px solid #32c5d2;
|
||||
}
|
||||
.ModuleItem.purpleBorder {
|
||||
border-right: 2px solid #ac3773;
|
||||
}
|
||||
.ModuleItem .itrator {
|
||||
position: absolute;
|
||||
font-size: 60px;
|
||||
right: -5px;
|
||||
bottom: -25px;
|
||||
opacity: 0.1;
|
||||
font-family: "Montserrat-ExtraBold";
|
||||
z-index: 100;
|
||||
}
|
||||
.ModuleItem .Title {
|
||||
text-align: right;
|
||||
}
|
||||
.ModuleItem .FA {
|
||||
font-size: 26px;
|
||||
}
|
||||
.ModuleItem .EN {
|
||||
font-size: 12px;
|
||||
letter-spacing: 5px;
|
||||
text-transform: uppercase;
|
||||
color: #9a9a9a;
|
||||
}
|
||||
.ModuleItem .Price {
|
||||
text-align: left;
|
||||
padding-top: 10px;
|
||||
}
|
||||
.ModuleItem .Price .Main {
|
||||
font-size: 26px;
|
||||
// font-family: "Montserrat-ExtraBold";
|
||||
}
|
||||
.ModuleItem .Price .Old {
|
||||
font-size: 12px;
|
||||
color: #ee3552;
|
||||
text-decoration: line-through;
|
||||
margin-bottom: -10px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.v-expansion-panel--inset .v-expansion-panel__container--active,
|
||||
.v-expansion-panel--popout .v-expansion-panel__container--active {
|
||||
border: 1px solid #eeeeee !important;
|
||||
border-right:2px solid #000 !important;
|
||||
box-shadow: none;
|
||||
}
|
||||
.v-expansion-panel__container {
|
||||
transition: 0.2s;
|
||||
border: 1px solid transparent !important;
|
||||
border-right:2px solid transparent !important;
|
||||
}
|
||||
.v-expansion-panel__container:hover {
|
||||
border: 1px solid #eeeeee !important;
|
||||
border-right:2px solid #000 !important;
|
||||
}
|
||||
|
||||
.ModuleItem .description .Title {
|
||||
font-size: 16px;
|
||||
color: #000;
|
||||
}
|
||||
.ModuleItem .description .v-icon {
|
||||
margin-left: 5px;
|
||||
line-height: 27px;
|
||||
}
|
||||
.ModuleItem .description .Text {
|
||||
font-size: 14px;
|
||||
color: #6d6d6d;
|
||||
}
|
||||
.v-expansion-panel--inset .v-expansion-panel__container--active,
|
||||
.v-expansion-panel--popout .v-expansion-panel__container--active {
|
||||
border: 1px solid #eeeeee !important;
|
||||
border-right: 2px solid #000 !important;
|
||||
box-shadow: none;
|
||||
}
|
||||
.v-expansion-panel__container {
|
||||
transition: 0.2s;
|
||||
border: 1px solid transparent !important;
|
||||
border-right: 2px solid transparent !important;
|
||||
}
|
||||
.v-expansion-panel__container:hover {
|
||||
border: 1px solid #eeeeee !important;
|
||||
border-right: 2px solid #000 !important;
|
||||
}
|
||||
|
||||
.ModuleItem .description .Title {
|
||||
font-size: 16px;
|
||||
color: #000;
|
||||
}
|
||||
.ModuleItem .description .v-icon {
|
||||
margin-left: 5px;
|
||||
line-height: 27px;
|
||||
}
|
||||
.ModuleItem .description .Text {
|
||||
font-size: 14px;
|
||||
color: #6d6d6d;
|
||||
}
|
||||
</style>
|
||||
|
@ -1,8 +0,0 @@
|
||||
import sharedPath from './path';
|
||||
|
||||
|
||||
// let paths = [];
|
||||
|
||||
// paths = paths.concat(sharedPath);
|
||||
|
||||
export default sharedPath;
|
@ -1,7 +0,0 @@
|
||||
export default [
|
||||
// {
|
||||
// path: '/CRM/MyTasks',
|
||||
// name: 'MyTasks',
|
||||
// view: 'Common/views/Tasks'
|
||||
// }
|
||||
];
|
@ -1,56 +0,0 @@
|
||||
|
||||
window._ = require('lodash');
|
||||
|
||||
/**
|
||||
* We'll load jQuery and the Bootstrap jQuery plugin which provides support
|
||||
* for JavaScript based Bootstrap features such as modals and tabs. This
|
||||
* code may be modified to fit the specific needs of your application.
|
||||
*/
|
||||
|
||||
try {
|
||||
window.Popper = require('popper.js').default;
|
||||
window.$ = window.jQuery = require('jquery');
|
||||
|
||||
require('bootstrap');
|
||||
} catch (e) {}
|
||||
|
||||
/**
|
||||
* We'll load the axios HTTP library which allows us to easily issue requests
|
||||
* to our Laravel back-end. This library automatically handles sending the
|
||||
* CSRF token as a header based on the value of the "XSRF" token cookie.
|
||||
*/
|
||||
|
||||
window.axios = require('axios');
|
||||
|
||||
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
|
||||
|
||||
/**
|
||||
* Next we will register the CSRF Token as a common header with Axios so that
|
||||
* all outgoing HTTP requests automatically have it attached. This is just
|
||||
* a simple convenience so we don't have to attach every token manually.
|
||||
*/
|
||||
|
||||
let token = document.head.querySelector('meta[name="csrf-token"]');
|
||||
|
||||
if (token) {
|
||||
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
|
||||
} else {
|
||||
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
|
||||
}
|
||||
|
||||
/**
|
||||
* Echo exposes an expressive API for subscribing to channels and listening
|
||||
* for events that are broadcast by Laravel. Echo and event broadcasting
|
||||
* allows your team to easily build robust real-time web applications.
|
||||
*/
|
||||
|
||||
// import Echo from 'laravel-echo'
|
||||
|
||||
// window.Pusher = require('pusher-js');
|
||||
|
||||
// window.Echo = new Echo({
|
||||
// broadcaster: 'pusher',
|
||||
// key: process.env.MIX_PUSHER_APP_KEY,
|
||||
// cluster: process.env.MIX_PUSHER_APP_CLUSTER,
|
||||
// encrypted: true
|
||||
// });
|
@ -1,17 +0,0 @@
|
||||
import { TokenService } from '@/services'
|
||||
|
||||
const $hasRole = function(roles) {
|
||||
if (TokenService.getToken()) {
|
||||
roles = roles.split('|');
|
||||
for (const role of roles) {
|
||||
if(TokenService.getInfo().roles && Array.isArray(TokenService.getInfo().roles) && TokenService.getInfo().roles.includes(role)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
export {
|
||||
$hasRole
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
import axios from "axios";
|
||||
import toast from "./toast.service";
|
||||
// import {TokenService, ApiService} from '@/services';
|
||||
// import store from "@/store"
|
||||
// import router from '@/router'
|
||||
function errorResponseHandler(error) {
|
||||
|
||||
// check for errorHandle config
|
||||
if (
|
||||
error.config.hasOwnProperty("errorHandle") &&
|
||||
error.config.errorHandle === false
|
||||
) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
|
||||
// if has response show the error
|
||||
if (error.response) {
|
||||
if(typeof error.response.data.errors !== 'undefined') {
|
||||
for (const key in error.response.data.errors) {
|
||||
if (error.response.data.errors.hasOwnProperty(key)) {
|
||||
let title = (error.response.data.title) ? error.response.data.title : undefined;
|
||||
toast.error(error.response.data.errors[key], title);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(error.response.status == 401) {
|
||||
// TokenService.removeToken();
|
||||
// TokenService.removeRefreshToken();
|
||||
// TokenService.removeInfo();
|
||||
// ApiService.removeAuthHeader();
|
||||
// store.commit('auth/logoutSuccess', {}, {root: true})
|
||||
// router.push({ name: `Dashboard` });
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
function successHandler(response) {
|
||||
if(response.status == 200) {
|
||||
if(typeof response.data.message !== 'undefined') {
|
||||
toast.success(response.data.message, response.data.title);
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
// apply interceptor on response
|
||||
axios.interceptors.response.use(successHandler, errorResponseHandler);
|
||||
|
||||
export default errorResponseHandler;
|
@ -1,21 +0,0 @@
|
||||
import "izitoast/dist/css/iziToast.min.css";
|
||||
import iZtoast from "izitoast";
|
||||
|
||||
const toast = {
|
||||
error: (message, title = "Error") => {
|
||||
return iZtoast.error({
|
||||
title: title,
|
||||
message: message,
|
||||
position: "bottomCenter"
|
||||
});
|
||||
},
|
||||
success: (message, title = "Success") => {
|
||||
return iZtoast.success({
|
||||
title: title,
|
||||
message: message,
|
||||
position: "bottomCenter"
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export default toast;
|
@ -1,6 +0,0 @@
|
||||
import {$hasRole} from '../acl/role';
|
||||
export default {
|
||||
methods: {
|
||||
$hasRole
|
||||
},
|
||||
}
|
Loading…
Reference in new issue