vuetify 2 change

pull/1/head
alireza hassani 5 years ago
commit bd37355e14

@ -224,7 +224,6 @@ return [
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
'AuthFinder' => App\CorePackages\Authenticate\AuthFinderFacade::class,
],

@ -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"
}

@ -2,7 +2,7 @@
<v-layout wrap>
<v-container class="Header">
<v-icon class="Menu" @click.stop="drawer = !drawer" dark>fas fa-bars</v-icon>
<a href="/Main/Home">
<a :href="mainHref">
<v-icon class="Home" dark>fas fa-home</v-icon>
</a>
<div class="Time">
@ -51,6 +51,7 @@
<script>
import Tile from "@Global/components/Drawer/Tile";
import Notifications from "@Global/components/Drawer/Notifications";
import Routes from "@Global/utils/common/routes";
import { mapActions, mapGetters } from "vuex";
export default {
data() {
@ -68,11 +69,13 @@ export default {
titleFa: " کاربران مجموعه ی من ",
icon: "question_answer",
permission: "",
href: "/User/List"
href: Routes.user(),
}
],
user: { name: "" },
timeNow: "",
mainHref: Routes.main(),
};
},
mounted(){

@ -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>

@ -9,10 +9,7 @@ var CommingSoonArray = [
"crm-setting",
"crm-client-filter",
"crm-statistics",
"user-list-filter",
"user-roles",
];
const commingSoon = {
methods: {

@ -3,6 +3,7 @@ import qs from 'qs';
const TOKEN_KEY = 'access_token'
const USER = 'user'
const PERMISSION = 'permission'
const VIRTUALACTIVITY = 'virtual_activity'
/**
* Manage the how Access Tokens are being stored and retreived from storage.
*
@ -58,5 +59,22 @@ const PermissionService = {
localStorage.removeItem(PERMISSION)
},
}
const VirtualActivityService = {
get() {
if (localStorage.getItem(VIRTUALACTIVITY)) {
return qs.parse(localStorage.getItem(VIRTUALACTIVITY))
}
return null;
},
save(virtualActivity = null) {
virtualActivity = qs.stringify(virtualActivity);
localStorage.setItem(VIRTUALACTIVITY, virtualActivity)
},
remove() {
localStorage.removeItem(PERMISSION)
},
}
export { TokenService, UserService, PermissionService }
export { TokenService, UserService, PermissionService, VirtualActivityService }

@ -4,5 +4,8 @@ export default {
},
main() {
return process.env.MIX_PUSHER_APP_ROUTE_MAIN || "/Main/Home";
}
},
user() {
return "/User/List";
},
}

@ -1,4 +1,2 @@
export default {
getClientTypes: state => state.clientTypes,
getPhoneTypes: state => state.phoneTypes
};

@ -1,4 +1,2 @@
export default {
PaymentConfirmation: false,
TrialConfirmation: false,
};

@ -4,57 +4,68 @@
<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>
<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.nameFa }} </div>
<div class="EN"> {{ module.nameEn }} </div>
<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.oldPrice"> {{ module.oldPrice }} </div>
<div class="Main En"> {{ module.price }} <span class="Unit">IRT</span></div>
<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="$store.state.TrialConfirmation = true"
@click.native="$_openModal('role_permission/trial_confirmation'), SET_CURRENT_MODULE(module)"
slot="activator"
fab
:color="module.color"
: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-tooltip top color="black">
<v-btn
@click.native="$store.state.PaymentConfirmation = true"
@click.native="$_openModal('role_permission/payment_confirmation'), SET_CURRENT_ALL_MODULE(module)"
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-tooltip>-->
</v-flex>
<v-flex lg12 class="description RTL" v-if="module.descriptionTitle">
<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.descriptionTitle }} </v-flex>
<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.descriptionText"> </v-flex>
<v-flex lg12 class="text-lg-right zIndex99 Text" v-html="module.description"></v-flex>
</v-layout>
</div>
</v-card-text>
@ -72,7 +83,7 @@
---------------------------------------------------------------------->
<template>
<div class="text-xs-center">
<wm-payment-confirmation></wm-payment-confirmation>
<!-- <wm-payment-confirmation></wm-payment-confirmation> -->
<wm-trial-confirmation></wm-trial-confirmation>
</div>
</template>
@ -80,23 +91,22 @@
<!-- --------------------------------------------------------------------
Modals :: END
---------------------------------------------------------------------->
</v-container>
</template>
<script>
import PaymentConfirmation from "@Common/components/Misc/PaymentConfirmation.vue";
// 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,
// "wm-payment-confirmation": PaymentConfirmation,
"wm-trial-confirmation": TrialConfirmation
},
props: {
color: { default: 'grey darken-4' },
color: { default: "grey darken-4" }
},
data() {
return {
@ -109,22 +119,57 @@
},
{
text: " افزودن بخش جدید ",
disabled: true,
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: " 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" },
],
{
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">
@ -165,7 +210,7 @@
font-size: 12px;
letter-spacing: 5px;
text-transform: uppercase;
color: #9a9a9a
color: #9a9a9a;
}
.ModuleItem .Price {
text-align: left;
@ -211,5 +256,4 @@
font-size: 14px;
color: #6d6d6d;
}
</style>

@ -18,11 +18,11 @@
></wm-tile>
</a>
</v-layout>
<!-- <router-link :to="{name: 'AddModule'}">
<router-link :to="{name: 'AddModule'}">
<v-btn large fab color="cyan" fixed bottom left dark style="left:5%">
<v-icon dark>fas fa-plus</v-icon>
</v-btn>
</router-link> -->
</router-link>
</v-container>
</template>

@ -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…
Cancel
Save