commit
85453fd3d2
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
|
||||||
|
class TempBussinessAddIsVirtualColumn extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('businesses', function (Blueprint $table) {
|
||||||
|
$table->enum('is_virtual', ['yes', 'no'])->default('yes');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
if (Schema::hasColumn('businesses', 'is_virtual')) {
|
||||||
|
Schema::table('businesses', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('is_virtual');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,14 @@
|
|||||||
{
|
{
|
||||||
|
<<<<<<< HEAD
|
||||||
"/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=46082928a20a61ffac98",
|
"/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=46082928a20a61ffac98",
|
||||||
"/js/vue/Home/app.js": "/js/vue/Home/app.js?id=2e3732fbd7feea17db64",
|
"/js/vue/Home/app.js": "/js/vue/Home/app.js?id=2e3732fbd7feea17db64",
|
||||||
"/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=148b27c08322ebf935a0",
|
"/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=148b27c08322ebf935a0",
|
||||||
"/js/vue/Modules/Reservation/app.js": "/js/vue/Modules/Reservation/app.js?id=9ef7b1af8b4a64d9d2cb",
|
"/js/vue/Modules/Reservation/app.js": "/js/vue/Modules/Reservation/app.js?id=9ef7b1af8b4a64d9d2cb",
|
||||||
"/js/vue/User/app.js": "/js/vue/User/app.js?id=ad10046a6197a537f107"
|
"/js/vue/User/app.js": "/js/vue/User/app.js?id=ad10046a6197a537f107"
|
||||||
|
=======
|
||||||
|
"/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=6b97e64b88b473b78429",
|
||||||
|
"/js/vue/Home/app.js": "/js/vue/Home/app.js?id=5cf42ee9bf28ccc49b35",
|
||||||
|
"/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=7ff9b1d2a8dddd5e3d03",
|
||||||
|
"/js/vue/User/app.js": "/js/vue/User/app.js?id=e0ac9d2216e187241d2a"
|
||||||
|
>>>>>>> refs/remotes/origin/master
|
||||||
}
|
}
|
||||||
|
@ -1,231 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-app>
|
|
||||||
<div id="app">
|
|
||||||
|
|
||||||
<!-- <Loader></Loader> -->
|
|
||||||
<!-- <Header></Header> -->
|
|
||||||
<background></background>
|
|
||||||
<v-container mt-5 p-5 fluid class="Login">
|
|
||||||
<h2 class="Title"> WILLA ENGINE </h2>
|
|
||||||
<transition name="Fade" mode="out-in" >
|
|
||||||
<v-layout v-if="State === 'Login'" key="Login" column justify-center fill-height class="LoginContainer" ref="LoginContainer" >
|
|
||||||
<v-flex xs12>
|
|
||||||
<WM-PartTitle class="WM-Margin-T-20" TitleFa=" ورود " TitleEn=" Login " TextFaColor="white--text" TextColor="black--text" color="white"></WM-PartTitle>
|
|
||||||
<v-flex mt-3>
|
|
||||||
<v-text-field dark label=" شماره ی همراه خود را وارد کنید " hint="حداکثر 50 کاراکتر " color="white" prepend-icon="fas fa-phone"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex>
|
|
||||||
<v-text-field dark type="password" label=" کلمه ی عبور " color="white" prepend-icon="fas fa-asterisk"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex>
|
|
||||||
<v-btn outline fab color="white" @click="State = 'Register'">
|
|
||||||
<v-icon>fas fa-plus</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<a href="/Main/Home">
|
|
||||||
<v-btn outline fab color="white" >
|
|
||||||
<v-icon>fas fa-chevron-left</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
</a>
|
|
||||||
</v-flex>
|
|
||||||
</v-flex>
|
|
||||||
</v-layout>
|
|
||||||
<v-layout v-if="State === 'Register'" key="Register" column justify-center fill-height class="RegisterContainer" ref="RegisterContainer" >
|
|
||||||
<WM-PartTitle class="WM-Margin-T-20" TitleFa=" ثبت نام " TitleEn=" Sign Up " TextFaColor="white--text" TextColor="black--text" color="white"></WM-PartTitle>
|
|
||||||
<v-flex mt-3>
|
|
||||||
<v-text-field dark label=" نام و نام خانوادگی " hint="حداکثر 50 کاراکتر " color="white" prepend-icon="fas fa-user"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex>
|
|
||||||
<v-text-field dark label=" شماره ی همراه خود را وارد کنید " hint="حداکثر 50 کاراکتر " color="white" prepend-icon="fas fa-phone"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex>
|
|
||||||
<v-text-field dark type="password" label=" کلمه ی عبور " color="white" prepend-icon="fas fa-asterisk"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex>
|
|
||||||
<v-btn outline fab color="white" @click="State = 'Login'">
|
|
||||||
<v-icon>fas fa-plus</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<a href="/Main/Home">
|
|
||||||
<v-btn outline fab color="white" >
|
|
||||||
<v-icon>fas fa-chevron-left</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
</a>
|
|
||||||
</v-flex>
|
|
||||||
</v-layout>
|
|
||||||
</transition>
|
|
||||||
|
|
||||||
</v-container>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</v-app>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import Background from '@JS/Authentication/components/Background';
|
|
||||||
import Tile from '@JS/Authentication/components/Tile';
|
|
||||||
import Loader from '@JS/Authentication/components/Loader';
|
|
||||||
import Header from '@JS/Authentication/components/Header';
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
loading: true,
|
|
||||||
isShifted: false,
|
|
||||||
loadingVisible: false,
|
|
||||||
RegisterStatus: false,
|
|
||||||
LoginStatus: false,
|
|
||||||
State: 'Login'
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
components: {
|
|
||||||
Header: Header,
|
|
||||||
background: Background,
|
|
||||||
Tile: Tile,
|
|
||||||
Loader: Loader,
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
Register: function() {
|
|
||||||
// console.log(this.$refs.RegisterContainer)
|
|
||||||
this.RegisterStatus = !this.RegisterStatus;
|
|
||||||
this.LoginStatus = !this.LoginStatus;
|
|
||||||
},
|
|
||||||
Log(value) {
|
|
||||||
this.$store.commit('Log',value);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
beforeMount() {
|
|
||||||
var self = this;
|
|
||||||
setTimeout(function() {
|
|
||||||
self.loading = ! self.loading;
|
|
||||||
}, 2000)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
|
|
||||||
.Title {
|
|
||||||
letter-spacing: 15px;
|
|
||||||
font-size: 18px;
|
|
||||||
text-align: center;
|
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
}
|
|
||||||
.Login {
|
|
||||||
// animation: FadeInUp 1s;
|
|
||||||
// transition: all 600ms cubic-bezier(.17,.67,1,.01);
|
|
||||||
|
|
||||||
}
|
|
||||||
.LoginContainer, .RegisterContainer {
|
|
||||||
margin-top: 150px !important;
|
|
||||||
width:600px;
|
|
||||||
margin:0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.Blur-enter-active, .Blur2-leave-active {
|
|
||||||
animation: BlurIn 0.5s;
|
|
||||||
animation-fill-mode: both;
|
|
||||||
}
|
|
||||||
.Blur-enter, .Blur2-leave-to /* .fade-leave-active below version 2.1.8 */ {
|
|
||||||
animation: BlurOut 0.5s;
|
|
||||||
animation-fill-mode: both;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.FadeUp-enter-active, .FadeUp-leave-active {
|
|
||||||
animation: FadeInUp 500ms;
|
|
||||||
}
|
|
||||||
.FadeUp-enter, .FadeUp-leave-to /* .fade-leave-active below version 2.1.8 */ {
|
|
||||||
animation: FadeOutUp 200ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.Fade-enter-active, .Fade-leave-active {
|
|
||||||
animation: FadeIn 500ms;
|
|
||||||
}
|
|
||||||
.Fade-enter, .Fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
|
|
||||||
animation: FadeOut 500ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@keyframes FadeIn {
|
|
||||||
0% {
|
|
||||||
opacity: 0;
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes FadeOut {
|
|
||||||
0% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
display:none;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@keyframes FadeInUp {
|
|
||||||
0% {
|
|
||||||
display:none;
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(300px);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes FadeOutUp {
|
|
||||||
0% {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0px);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(-300px);
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@keyframes BlurIn {
|
|
||||||
0% {
|
|
||||||
opacity: 0;
|
|
||||||
filter: blur(40px);
|
|
||||||
-webkit-filter: blur(40px);
|
|
||||||
transform: translateY(50px) scale(3);
|
|
||||||
-webkit-transform: translateY(50px) scale(3);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
filter: blur(0px);
|
|
||||||
-webkit-filter: blur(0px);
|
|
||||||
transform: translateY(0px) scale(1);
|
|
||||||
-webkit-transform: translateY(0px) scale(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes BlurOut {
|
|
||||||
0% {
|
|
||||||
opacity: 1;
|
|
||||||
filter: blur(0px);
|
|
||||||
-webkit-filter: blur(0px);
|
|
||||||
transform: translateY(0px) scale(1);
|
|
||||||
-webkit-transform: translateY(0px) scale(1);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 0;
|
|
||||||
filter: blur(40px);
|
|
||||||
-webkit-filter: blur(40px);
|
|
||||||
transform: translateY(0px) scale(0.4);
|
|
||||||
-webkit-transform: translateY(0px) scale(0.4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
|
@ -1,85 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import App from './App.vue'
|
|
||||||
import router from './router.js'
|
|
||||||
import store from './store'
|
|
||||||
import VueScrollReveal from 'vue-scroll-reveal'
|
|
||||||
import Vuetify from 'vuetify'
|
|
||||||
import {
|
|
||||||
global
|
|
||||||
} from '@Global/mixins/global';
|
|
||||||
|
|
||||||
import 'popper.js'
|
|
||||||
import 'bootstrap-v4-rtl'
|
|
||||||
import 'bootstrap-v4-rtl/scss/bootstrap-rtl.scss'
|
|
||||||
import 'bootstrap-select'
|
|
||||||
import 'bootstrap-select/dist/css/bootstrap-select.css'
|
|
||||||
import 'vuetify/dist/vuetify.min.css' // Ensure you are using css-loader
|
|
||||||
import '@Global/assets/Font-Icons/css/fontello.css'
|
|
||||||
import "@Global/scss/style.scss";
|
|
||||||
|
|
||||||
|
|
||||||
// components
|
|
||||||
import PartTitle from "@Global/components/Dividers/PartTitle.vue";
|
|
||||||
import PageTitle from "@Global/components/Dividers/PageTitle.vue";
|
|
||||||
import Checkbox from "@Global/components/Inputs/Checkbox.vue";
|
|
||||||
import InfoBlock from "@Global/components/Misc/InfoBlock.vue";
|
|
||||||
import Breadcrumbs from '@Global/components/Misc/Breadcrumbs';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Vue.component('WM-PartTitle', PartTitle)
|
|
||||||
Vue.component('WM-PageTitle', PageTitle)
|
|
||||||
Vue.component('WM-Checkbox', Checkbox)
|
|
||||||
Vue.component('WM-InfoBlock', InfoBlock)
|
|
||||||
Vue.component('wm-breadcrumbs', Breadcrumbs)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* First we will load all of this project's JavaScript dependencies which
|
|
||||||
* includes Vue and other libraries. It is a great starting point when
|
|
||||||
* building robust, powerful web applications using Vue and Laravel.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
window.Vue = require('vue');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The following block of code may be used to automatically register your
|
|
||||||
* Vue components. It will recursively scan this directory for the Vue
|
|
||||||
* components and automatically register them with their "basename".
|
|
||||||
*
|
|
||||||
* Eg. ./components/ExampleComponent.vue -> <example-component></example-component>
|
|
||||||
*/
|
|
||||||
|
|
||||||
// const files = require.context('./', true, /\.vue$/i)
|
|
||||||
// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Next, we will create a fresh Vue application instance and attach it to
|
|
||||||
* the page. Then, you may begin adding components to this application
|
|
||||||
* or customize the JavaScript scaffolding to fit your unique needs.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
Vue.use(Vuetify, {
|
|
||||||
iconfont: 'fa',
|
|
||||||
rtl: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Vue.config.productionTip = false;
|
|
||||||
Vue.use(VueScrollReveal, {
|
|
||||||
class: 'v-scroll-reveal', // A CSS class applied to elements with the v-scroll-reveal directive; useful for animation overrides.
|
|
||||||
duration: 800,
|
|
||||||
scale: 1,
|
|
||||||
distance: '10px',
|
|
||||||
mobile: false
|
|
||||||
});
|
|
||||||
|
|
||||||
Vue.mixin(global);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const app = new Vue({
|
|
||||||
router,
|
|
||||||
store,
|
|
||||||
render: h => h(App),
|
|
||||||
}).$mount('#app');
|
|
@ -1,117 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div class="backgrounds">
|
|
||||||
<canvas id="canvas__bg" width="32" height="32"></canvas>
|
|
||||||
<div class="overlay gradient"></div>
|
|
||||||
<div class="overlay vignette"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
methods: {
|
|
||||||
moveGradient: function() {
|
|
||||||
var c = document.getElementById("canvas__bg");
|
|
||||||
var $ = c.getContext("2d");
|
|
||||||
|
|
||||||
var col = function(x, y, r, g, b) {
|
|
||||||
$.fillStyle = "rgb(" + r + "," + g + "," + b + ")";
|
|
||||||
$.fillRect(x, y, 1, 1);
|
|
||||||
};
|
|
||||||
|
|
||||||
var R = function(x, y, t) {
|
|
||||||
return Math.floor(130 + 64 * Math.cos((x * x - y * y) / 300 + t));
|
|
||||||
};
|
|
||||||
var G = function(x, y, t) {
|
|
||||||
return Math.floor(
|
|
||||||
0 +
|
|
||||||
64 *
|
|
||||||
Math.sin(
|
|
||||||
(x * x * Math.cos(t / 4) + y * y * Math.sin(t / 3)) / 300
|
|
||||||
)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
var B = function(x, y, t) {
|
|
||||||
return Math.floor(
|
|
||||||
250 +
|
|
||||||
64 *
|
|
||||||
Math.sin(
|
|
||||||
5 * Math.sin(t / 9) +
|
|
||||||
((x - 100) * (x - 100) + (y - 100) * (y - 100)) / 1100
|
|
||||||
)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
var t = 0;
|
|
||||||
|
|
||||||
var run = function() {
|
|
||||||
for (let x = 0; x <= 35; x++) {
|
|
||||||
for (let y = 0; y <= 35; y++) {
|
|
||||||
col(x, y, R(x, y, t), G(x, y, t), B(x, y, t));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
t = t + 0.03;
|
|
||||||
window.requestAnimationFrame(run);
|
|
||||||
};
|
|
||||||
(function() {
|
|
||||||
setTimeout(function() {
|
|
||||||
run(); // canvas background animation
|
|
||||||
}, 100);
|
|
||||||
})();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
|
||||||
this.moveGradient();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
#canvas__bg,
|
|
||||||
.overlay {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.backgrounds {
|
|
||||||
position: fixed;
|
|
||||||
z-index: -1;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.overlay.gradient {
|
|
||||||
background: #17a2b8;
|
|
||||||
/* Old browsers */
|
|
||||||
// background: -moz-linear-gradient( -45deg, #310089 0%, #5b007c 100%);
|
|
||||||
/* FF3.6-15 */
|
|
||||||
// background: -webkit-linear-gradient( -45deg, #310089 0%, #5b007c 100%);
|
|
||||||
/* Chrome10-25,Safari5.1-6 */
|
|
||||||
background: linear-gradient(135deg, #000 0%, #ee3552 100%);
|
|
||||||
/* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
|
|
||||||
// filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#17a2b8', endColorstr='#ee3552', GradientType=1);
|
|
||||||
/* IE6-9 fallback on horizontal gradient */
|
|
||||||
opacity: 0.59;
|
|
||||||
}
|
|
||||||
|
|
||||||
.overlay.vignette {
|
|
||||||
// background: -moz-radial-gradient( center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%);
|
|
||||||
/* FF3.6-15 */
|
|
||||||
// background: -webkit-radial-gradient( center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%);
|
|
||||||
/* Chrome10-25,Safari5.1-6 */
|
|
||||||
background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, #000000 100%);
|
|
||||||
/* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
|
|
||||||
// filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00000000', endColorstr='#000000', GradientType=1);
|
|
||||||
/* IE6-9 fallback on horizontal gradient */
|
|
||||||
opacity: 0.6;
|
|
||||||
transition: opacity 4s cubic-bezier(0.19, 1, 0.22, 1) 0.5s;
|
|
||||||
-webkit-transition: opacity 4s cubic-bezier(0.19, 1, 0.22, 1) 0.5s;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,29 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="Header">
|
|
||||||
<div class="Logo">
|
|
||||||
WILLA ENGINE
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.Header {
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.Logo {
|
|
||||||
letter-spacing: 15px;
|
|
||||||
color: #fff;
|
|
||||||
position: absolute;
|
|
||||||
top: 20px;
|
|
||||||
right: calc( 50% - 150px );
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,118 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="LoaderContainer">
|
|
||||||
<div class="LoaderOverlay">
|
|
||||||
<div class="Loader"> WILLA ENGINE </div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.LoaderContainer {
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
.LoaderOverlay {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: inherit;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
}
|
|
||||||
.LoaderContainer:after {
|
|
||||||
content: '';
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: inherit;
|
|
||||||
position: absolute;
|
|
||||||
left: -25px;
|
|
||||||
right: 0;
|
|
||||||
top: -25px;
|
|
||||||
bottom: 0;
|
|
||||||
box-shadow: inset 0 0 0 200px rgba(255, 255, 255, 0.05);
|
|
||||||
filter: blur(20px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.Loader {
|
|
||||||
color: #fff;
|
|
||||||
display:flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
height: 100%;
|
|
||||||
margin: auto;
|
|
||||||
background-color: transparent;
|
|
||||||
animation: load 2.2s infinite 0s ease-in-out;
|
|
||||||
animation-direction: alternate;
|
|
||||||
font-size: 40px;
|
|
||||||
}
|
|
||||||
.Loader div {
|
|
||||||
/* animation: BlurFade 4s linear infinite alternate; */
|
|
||||||
animation: load 2.2s infinite 0s ease-in-out;
|
|
||||||
animation-direction: alternate;
|
|
||||||
margin-right: 15px;
|
|
||||||
font-size: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@-webkit-keyframes BlurFade {
|
|
||||||
0% {
|
|
||||||
opacity: 0;
|
|
||||||
filter: blur(40px);
|
|
||||||
-webkit-filter: blur(40px);
|
|
||||||
transform: translateY(50px) rotateY(90deg) scale(3);
|
|
||||||
-webkit-transform: translateY(50px) rotateY(90deg) scale(3);
|
|
||||||
}
|
|
||||||
25% {
|
|
||||||
opacity: 1;
|
|
||||||
filter: blur(0px);
|
|
||||||
-webkit-filter: blur(0px);
|
|
||||||
transform: translateY(0px) rotateY(0deg) scale(1.2);
|
|
||||||
-webkit-transform: translateY(0px) rotateY(0deg) scale(1.2);
|
|
||||||
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
opacity: 1;
|
|
||||||
filter: blur(0px);
|
|
||||||
-webkit-filter: blur(0px);
|
|
||||||
transform: translateY(0px) rotateY(0deg) scale(1.2);
|
|
||||||
-webkit-transform: translateY(0px) scale(1.2);
|
|
||||||
|
|
||||||
}
|
|
||||||
75% {
|
|
||||||
opacity: 1;
|
|
||||||
filter: blur(0px);
|
|
||||||
-webkit-filter: blur(0px);
|
|
||||||
transform: translateY(0px) rotateY(0deg) scale(1.2);
|
|
||||||
-webkit-transform: translateY(0px) rotateY(0deg) scale(1.2);
|
|
||||||
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 0;
|
|
||||||
filter: blur(40px);
|
|
||||||
-webkit-filter: blur(40px);
|
|
||||||
transform: translateY(50px) rotateY(90deg) scale(3);
|
|
||||||
-webkit-transform: translateY(50px) rotateY(90deg) scale(3);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes load {
|
|
||||||
0% {
|
|
||||||
opacity: 0.08;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: 400;
|
|
||||||
filter: blur(5px);
|
|
||||||
letter-spacing: 15px;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight:600;
|
|
||||||
filter: blur(0);
|
|
||||||
letter-spacing: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,81 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-layout wrap>
|
|
||||||
<v-container>
|
|
||||||
<v-icon class="Menu" @click.stop="drawer = !drawer" dark>fas fa-bars</v-icon>
|
|
||||||
</v-container>
|
|
||||||
|
|
||||||
<v-navigation-drawer v-model="drawer" app temporary right>
|
|
||||||
<v-list class="pa-1">
|
|
||||||
<v-list-tile avatar>
|
|
||||||
<v-list-tile-avatar>
|
|
||||||
<img src="https://randomuser.me/api/portraits/men/85.jpg">
|
|
||||||
</v-list-tile-avatar>
|
|
||||||
|
|
||||||
<v-list-tile-content>
|
|
||||||
<v-list-tile-title>John Leider</v-list-tile-title>
|
|
||||||
</v-list-tile-content>
|
|
||||||
</v-list-tile>
|
|
||||||
</v-list>
|
|
||||||
|
|
||||||
<v-list class="pt-0" dense>
|
|
||||||
<v-divider></v-divider>
|
|
||||||
|
|
||||||
<v-list-tile v-for="item in items" :key="item.title">
|
|
||||||
<v-list-tile-action>
|
|
||||||
<v-icon>{{ item.icon }}</v-icon>
|
|
||||||
</v-list-tile-action>
|
|
||||||
|
|
||||||
<v-list-tile-content>
|
|
||||||
<v-list-tile-title>{{ item.title }}</v-list-tile-title>
|
|
||||||
</v-list-tile-content>
|
|
||||||
</v-list-tile>
|
|
||||||
</v-list>
|
|
||||||
</v-navigation-drawer>
|
|
||||||
</v-layout>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
drawer: false,
|
|
||||||
items: [
|
|
||||||
{ title: 'Home', icon: 'dashboard' },
|
|
||||||
{ title: 'About', icon: 'question_answer' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.Menu {
|
|
||||||
position: absolute;
|
|
||||||
right: 20px;
|
|
||||||
top: 20px;
|
|
||||||
}
|
|
||||||
.drawer-trigger {
|
|
||||||
position: fixed;
|
|
||||||
top: 0px;
|
|
||||||
padding: 40px;
|
|
||||||
background-color: white;
|
|
||||||
left: 400px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drawer-trigger.active {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drawer {
|
|
||||||
position: fixed;
|
|
||||||
top: 0px;
|
|
||||||
left: -400px;
|
|
||||||
bottom: 0px;
|
|
||||||
background-color: white;
|
|
||||||
width: 400px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drawer.open {
|
|
||||||
left: 0px;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,38 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="blurred-box">
|
|
||||||
Salam
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.blurred-box {
|
|
||||||
position: relative;
|
|
||||||
width: 250px;
|
|
||||||
height: 350px;
|
|
||||||
top: calc(50% - 175px);
|
|
||||||
left: calc(50% - 125px);
|
|
||||||
background: inherit;
|
|
||||||
border-radius: 2px;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blurred-box:after {
|
|
||||||
content: '';
|
|
||||||
width: 300px;
|
|
||||||
height: 300px;
|
|
||||||
background: inherit;
|
|
||||||
position: absolute;
|
|
||||||
left: -25px;
|
|
||||||
right: 0;
|
|
||||||
top: -25px;
|
|
||||||
bottom: 0;
|
|
||||||
box-shadow: inset 0 0 0 200px rgba(255, 255, 255, 0.05);
|
|
||||||
filter: blur(10px);
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,34 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import Router from 'vue-router'
|
|
||||||
|
|
||||||
Vue.use(Router)
|
|
||||||
|
|
||||||
const router = new Router({
|
|
||||||
mode: 'history',
|
|
||||||
base: process.env.BASE_URL,
|
|
||||||
linkActiveClass: "WM-Active",
|
|
||||||
linkExactActiveClass: "WM-Exact-Active",
|
|
||||||
routes: [
|
|
||||||
// {
|
|
||||||
// path: '*',
|
|
||||||
// redirect: '/Login'
|
|
||||||
// },
|
|
||||||
|
|
||||||
]
|
|
||||||
})
|
|
||||||
|
|
||||||
router.beforeResolve((to, from, next) => {
|
|
||||||
if (to.name && router.app.$children[0] != undefined)
|
|
||||||
router.app.$children[0].loadingVisible = true;
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
next();
|
|
||||||
}, 500)
|
|
||||||
})
|
|
||||||
|
|
||||||
router.afterEach(() => {
|
|
||||||
if (router.app.$children[0] != undefined)
|
|
||||||
router.app.$children[0].loadingVisible = false;
|
|
||||||
})
|
|
||||||
|
|
||||||
export default router;
|
|
@ -1,20 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import Vuex from 'vuex'
|
|
||||||
|
|
||||||
Vue.use(Vuex)
|
|
||||||
|
|
||||||
export default new Vuex.Store({
|
|
||||||
state: {
|
|
||||||
UserDetails: false,
|
|
||||||
UserRoles: false,
|
|
||||||
OrderDetails: false,
|
|
||||||
OrderStatus: false,
|
|
||||||
SendEmail: false,
|
|
||||||
SendSMS: false
|
|
||||||
},
|
|
||||||
mutations: {
|
|
||||||
Log(state, ToLog) {
|
|
||||||
console.log(ToLog);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
@ -0,0 +1,26 @@
|
|||||||
|
import axios from 'axios'
|
||||||
|
import { TokenService } from './storage.services'
|
||||||
|
|
||||||
|
const ApiService = {
|
||||||
|
|
||||||
|
init(baseURL) {
|
||||||
|
axios.defaults.baseURL = baseURL;
|
||||||
|
},
|
||||||
|
|
||||||
|
setHeader() {
|
||||||
|
axios.defaults.headers.common["Accept"] = `application/json`;
|
||||||
|
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
|
||||||
|
},
|
||||||
|
|
||||||
|
setAuthHeader() {
|
||||||
|
axios.defaults.headers.common["Authorization"] = `Bearer ${TokenService.getToken()}`;
|
||||||
|
},
|
||||||
|
|
||||||
|
removeAuthHeader() {
|
||||||
|
axios.defaults.headers.common["Authorization"] = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ApiService
|
||||||
|
export { ApiService }
|
@ -0,0 +1,42 @@
|
|||||||
|
import qs from 'qs';
|
||||||
|
|
||||||
|
const TOKEN_KEY = 'access_token'
|
||||||
|
const USER = 'user'
|
||||||
|
/**
|
||||||
|
* Manage the how Access Tokens are being stored and retreived from storage.
|
||||||
|
*
|
||||||
|
* Current implementation stores to localStorage. Local Storage should always be
|
||||||
|
* accessed through this instace.
|
||||||
|
**/
|
||||||
|
const TokenService = {
|
||||||
|
getToken() {
|
||||||
|
return localStorage.getItem(TOKEN_KEY)
|
||||||
|
},
|
||||||
|
|
||||||
|
saveToken(accessToken = null) {
|
||||||
|
console.log(accessToken);
|
||||||
|
|
||||||
|
localStorage.setItem(TOKEN_KEY, accessToken)
|
||||||
|
},
|
||||||
|
|
||||||
|
removeToken() {
|
||||||
|
localStorage.removeItem(TOKEN_KEY)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const UserService = {
|
||||||
|
getUser() {
|
||||||
|
return qs.parse(localStorage.getItem(USER))
|
||||||
|
},
|
||||||
|
|
||||||
|
saveUser(user = null) {
|
||||||
|
user = qs.stringify(user);
|
||||||
|
localStorage.setItem(USER, user)
|
||||||
|
},
|
||||||
|
|
||||||
|
removeUser() {
|
||||||
|
localStorage.removeItem(USER)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export { TokenService, UserService }
|
@ -1,27 +1,25 @@
|
|||||||
const urlGenerator = (url, parameters = {}) => {
|
const urlGenerator = (urls) => {
|
||||||
let urlPath = url.split("/");
|
return function(routeAddress, parameters) {
|
||||||
let newPath = [];
|
let urlPath = urls[routeAddress].split("/");
|
||||||
for (const iterator of urlPath) {
|
let newPath = [];
|
||||||
if (iterator.startsWith(":")) {
|
for (const iterator of urlPath) {
|
||||||
if (iterator.endsWith("?")) {
|
if (iterator.startsWith(":")) {
|
||||||
if (parameters.hasOwnProperty(iterator.slice(1, -1))) {
|
if (iterator.endsWith("?")) {
|
||||||
newPath.push(parameters[iterator.slice(1, -1)]);
|
if (parameters.hasOwnProperty(iterator.slice(1, -1))) {
|
||||||
|
newPath.push(parameters[iterator.slice(1, -1)]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.assert(parameters.hasOwnProperty(iterator.slice(1)), 'parameter "' + iterator.slice(1) + '" not specified in parameters.')
|
||||||
|
newPath.push(parameters[iterator.slice(1)]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.assert(
|
newPath.push(iterator);
|
||||||
parameters.hasOwnProperty(iterator.slice(1)),
|
|
||||||
'parameter "' +
|
|
||||||
iterator.slice(1) +
|
|
||||||
'" not specified in parameters.'
|
|
||||||
);
|
|
||||||
newPath.push(parameters[iterator.slice(1)]);
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
newPath.push(iterator);
|
|
||||||
}
|
}
|
||||||
|
return '/' + newPath.join("/");
|
||||||
}
|
}
|
||||||
|
|
||||||
return ("/" + newPath.join("/")).replace("//", "/");
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export { urlGenerator };
|
export {
|
||||||
|
urlGenerator
|
||||||
|
}
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import Vuex from 'vuex'
|
|
||||||
|
|
||||||
Vue.use(Vuex)
|
|
||||||
|
|
||||||
export default new Vuex.Store({
|
|
||||||
state: {
|
|
||||||
UserDetails: false,
|
|
||||||
UserRoles: false,
|
|
||||||
OrderDetails: false,
|
|
||||||
OrderStatus: false,
|
|
||||||
SendEmail: false,
|
|
||||||
SendSMS: false
|
|
||||||
}
|
|
||||||
})
|
|
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
export default {
|
||||||
|
|
||||||
|
};
|
@ -0,0 +1,4 @@
|
|||||||
|
export default {
|
||||||
|
getClientTypes: state => state.clientTypes,
|
||||||
|
getPhoneTypes: state => state.phoneTypes
|
||||||
|
};
|
@ -0,0 +1,31 @@
|
|||||||
|
/**
|
||||||
|
* Vuex
|
||||||
|
*
|
||||||
|
* @library
|
||||||
|
*
|
||||||
|
* https://vuex.vuejs.org/en/
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Lib imports
|
||||||
|
import Vue from 'vue'
|
||||||
|
import Vuex from 'vuex'
|
||||||
|
|
||||||
|
// Store functionality
|
||||||
|
import actions from './actions'
|
||||||
|
import getters from './getters'
|
||||||
|
import modules from './modules'
|
||||||
|
import mutations from './mutations'
|
||||||
|
import state from './state'
|
||||||
|
|
||||||
|
Vue.use(Vuex)
|
||||||
|
|
||||||
|
// Create a new store
|
||||||
|
const store = new Vuex.Store({
|
||||||
|
actions,
|
||||||
|
getters,
|
||||||
|
modules,
|
||||||
|
mutations,
|
||||||
|
state
|
||||||
|
})
|
||||||
|
|
||||||
|
export default store
|
@ -0,0 +1,56 @@
|
|||||||
|
const requireCurrentModule = require.context('.', true, /\.js$/);
|
||||||
|
const requireGlobalModule = require.context('@Global/store/modules', true, /\.js$/)
|
||||||
|
const requireCoreModule = require.context('@Core/store/modules', true, /\.js$/)
|
||||||
|
|
||||||
|
const modules = {};
|
||||||
|
|
||||||
|
requireCurrentModule.keys().forEach(fileName => {
|
||||||
|
if (fileName === './index.js') return
|
||||||
|
|
||||||
|
// Replace ./ and .js
|
||||||
|
const path = fileName.replace(/(\.\/|\.js)/g, '')
|
||||||
|
const [moduleName, imported] = path.split('/')
|
||||||
|
if (!modules[moduleName]) {
|
||||||
|
modules[moduleName] = {
|
||||||
|
namespaced: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
modules[moduleName][imported] = requireCurrentModule(fileName).default
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
requireGlobalModule.keys().forEach(fileName => {
|
||||||
|
if (fileName === './index.js') return
|
||||||
|
|
||||||
|
// Replace ./ and .js
|
||||||
|
const path = fileName.replace(/(\.\/|\.js)/g, '')
|
||||||
|
const [moduleName, imported] = path.split('/')
|
||||||
|
if (!modules[moduleName]) {
|
||||||
|
modules[moduleName] = {
|
||||||
|
namespaced: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
modules[moduleName][imported] = requireGlobalModule(fileName).default
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
requireCoreModule.keys().forEach(fileName => {
|
||||||
|
if (fileName === './index.js') return
|
||||||
|
|
||||||
|
// Replace ./ and .js
|
||||||
|
const path = fileName.replace(/(\.\/|\.js)/g, '')
|
||||||
|
const [moduleName, imported] = path.split('/')
|
||||||
|
if (!modules[moduleName]) {
|
||||||
|
modules[moduleName] = {
|
||||||
|
namespaced: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
modules[moduleName][imported] = requireCoreModule(fileName).default
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
export default modules
|
@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
|
||||||
|
};
|
@ -0,0 +1,4 @@
|
|||||||
|
export default {
|
||||||
|
|
||||||
|
|
||||||
|
};
|
@ -1,40 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-app>
|
|
||||||
<div id="app">
|
|
||||||
<wm-background></wm-background>
|
|
||||||
<app-menu></app-menu>
|
|
||||||
<v-content>
|
|
||||||
<v-container fluid class="Login">
|
|
||||||
<div class="Tile">
|
|
||||||
<router-view></router-view>
|
|
||||||
<!-- <wm-tiles-layout></wm-tiles-layout> -->
|
|
||||||
</div>
|
|
||||||
</v-container>
|
|
||||||
</v-content>
|
|
||||||
</div>
|
|
||||||
</v-app>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import Background from '@Global/components/Body/Backgrounds/Gradient';
|
|
||||||
import Menu from '@Global/components/Drawer/SideBar';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
'wm-background':Background,
|
|
||||||
appMenu: Menu,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
#app {
|
|
||||||
background-color: transparent;
|
|
||||||
// -webkit-font-smoothing: antialiased;
|
|
||||||
// -moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
||||||
.WM-Container-Fluid {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,82 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import App from './App.vue'
|
|
||||||
import router from './router'
|
|
||||||
import store from './store'
|
|
||||||
import VueScrollReveal from 'vue-scroll-reveal'
|
|
||||||
import Vuetify from 'vuetify'
|
|
||||||
import {global} from '../Global/mixins/global';
|
|
||||||
|
|
||||||
import 'popper.js'
|
|
||||||
import 'bootstrap-v4-rtl'
|
|
||||||
import 'bootstrap-v4-rtl/scss/bootstrap-rtl.scss'
|
|
||||||
import 'bootstrap-select'
|
|
||||||
import 'bootstrap-select/dist/css/bootstrap-select.css'
|
|
||||||
import 'vuetify/dist/vuetify.min.css' // Ensure you are using css-loader
|
|
||||||
import '@Global/assets/Font-Icons/css/fontello.css'
|
|
||||||
import "@Global/scss/style.scss"
|
|
||||||
|
|
||||||
|
|
||||||
// components
|
|
||||||
import PartTitle from "@Global/components/Dividers/PartTitle.vue";
|
|
||||||
import PageTitle from "@Global/components/Dividers/PageTitle.vue";
|
|
||||||
import Checkbox from "@Global/components/Inputs/Checkbox.vue";
|
|
||||||
import InfoBlock from "@Global/components/Misc/InfoBlock.vue";
|
|
||||||
import Breadcrumbs from '@Global/components/Misc/Breadcrumbs';
|
|
||||||
|
|
||||||
|
|
||||||
Vue.component('WM-PartTitle', PartTitle)
|
|
||||||
Vue.component('WM-PageTitle', PageTitle)
|
|
||||||
Vue.component('WM-Checkbox', Checkbox)
|
|
||||||
Vue.component('WM-InfoBlock', InfoBlock)
|
|
||||||
Vue.component('wm-breadcrumbs', Breadcrumbs)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* First we will load all of this project's JavaScript dependencies which
|
|
||||||
* includes Vue and other libraries. It is a great starting point when
|
|
||||||
* building robust, powerful web applications using Vue and Laravel.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
window.Vue = require('vue');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The following block of code may be used to automatically register your
|
|
||||||
* Vue components. It will recursively scan this directory for the Vue
|
|
||||||
* components and automatically register them with their "basename".
|
|
||||||
*
|
|
||||||
* Eg. ./components/ExampleComponent.vue -> <example-component></example-component>
|
|
||||||
*/
|
|
||||||
|
|
||||||
// const files = require.context('./', true, /\.vue$/i)
|
|
||||||
// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Next, we will create a fresh Vue application instance and attach it to
|
|
||||||
* the page. Then, you may begin adding components to this application
|
|
||||||
* or customize the JavaScript scaffolding to fit your unique needs.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
Vue.use(Vuetify, {
|
|
||||||
iconfont: 'fa',
|
|
||||||
rtl: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Vue.config.productionTip = false;
|
|
||||||
Vue.use(VueScrollReveal, {
|
|
||||||
class: 'v-scroll-reveal', // A CSS class applied to elements with the v-scroll-reveal directive; useful for animation overrides.
|
|
||||||
duration: 800,
|
|
||||||
scale: 1,
|
|
||||||
distance: '10px',
|
|
||||||
mobile: false
|
|
||||||
});
|
|
||||||
Vue.mixin(global);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const app = new Vue({
|
|
||||||
router,
|
|
||||||
store,
|
|
||||||
render: h => h(App),
|
|
||||||
}).$mount('#app');
|
|
@ -1,31 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-flex lg12 style="position:relative; padding: 0px 15px;">
|
|
||||||
<v-card-text class="Duplicate">
|
|
||||||
<v-layout row wrap pl-2>
|
|
||||||
<v-flex lg6>
|
|
||||||
<v-text-field label=" نام فارسی دپارتمان " color="cyan" prepend-icon="fas fa-bars"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex lg6>
|
|
||||||
<v-text-field label=" Department English Name " color="cyan" prepend-icon="fas fa-bars"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-btn fab color="cyan" fixed bottom left dark style="left:-15px; bottom:-30px; position:absolute"><v-icon dark>fas fa-plus</v-icon></v-btn>
|
|
||||||
<v-btn fab small color="red" fixed bottom left dark style="left:-5px; top:-20px; position:absolute"><v-icon dark>fas fa-times</v-icon></v-btn>
|
|
||||||
</v-layout>
|
|
||||||
<v-flex lg12 style="position:relative; padding: 0px 15px; margin: 0px 20px;">
|
|
||||||
<v-card-text class="Duplicate">
|
|
||||||
<v-layout row wrap pl-2>
|
|
||||||
<v-flex lg6>
|
|
||||||
<v-text-field label=" نام فارسی بخش " color="cyan" prepend-icon="fas fa-align-right"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex lg6>
|
|
||||||
<v-text-field label=" Section English Name " color="cyan" prepend-icon="fas fa-align-right"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-btn fab small color="cyan" fixed bottom left dark style="left:-5px; bottom:-25px; position:absolute"><v-icon dark>fas fa-plus</v-icon></v-btn>
|
|
||||||
<v-btn fab small color="red" fixed bottom left dark style="left:-5px; top:-20px; position:absolute"><v-icon dark>fas fa-times</v-icon></v-btn>
|
|
||||||
</v-layout>
|
|
||||||
</v-card-text>
|
|
||||||
</v-flex>
|
|
||||||
</v-card-text>
|
|
||||||
</v-flex>
|
|
||||||
|
|
||||||
</template>
|
|
@ -1,141 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-container>
|
|
||||||
<v-layout row wrap>
|
|
||||||
<v-flex xs12 lg12 mb-3>
|
|
||||||
<v-expansion-panel popout>
|
|
||||||
<v-expansion-panel-content v-for="(department,i) in departments" :key="i">
|
|
||||||
<template v-slot:header>
|
|
||||||
<v-flex lg4 pt-2 class="text-lg-right FA">
|
|
||||||
<span class="TitleNumber En">{{ parseInt(i+1) }}.</span>
|
|
||||||
{{ department.name_fa }}
|
|
||||||
</v-flex>
|
|
||||||
<v-flex lg4 pt-2 class="LTR EN">{{ department.name_en }}</v-flex>
|
|
||||||
<v-flex xl4 class="Buttons text-lg-center">
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small slot="activator" fab color="cyan" dark>
|
|
||||||
<v-icon dark>fas fa-pencil-alt</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<span> ویرایش </span>
|
|
||||||
</v-tooltip>
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small @click.native="$store.state.ConfigUserDepartmentAdd = true" slot="activator" fab color="orange" dark>
|
|
||||||
<v-icon dark>fas fa-plus</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<span> افزودن زیر مجمموعه </span>
|
|
||||||
</v-tooltip>
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small slot="activator" fab color="red" dark>
|
|
||||||
<v-icon dark>fas fa-trash-alt</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<span> حذف آیتم </span>
|
|
||||||
</v-tooltip>
|
|
||||||
</v-flex>
|
|
||||||
</template>
|
|
||||||
<v-card>
|
|
||||||
<v-card-text style="padding:5px 30px">
|
|
||||||
<div class="WM-Tile" v-for="(section,j) in department.sections" :key="j">
|
|
||||||
<v-layout row wrap class="Content">
|
|
||||||
<div class="Number En">{{ parseInt(j+1)+'-'+parseInt(i+1) }}</div>
|
|
||||||
<v-flex lg4 class="text-lg-right zIndex99" pt-3>{{ section.name_fa }}</v-flex>
|
|
||||||
<v-flex lg4 class="LTR" pt-3>{{ section.name_en }}</v-flex>
|
|
||||||
<v-flex xl4 class="Buttons text-lg-center">
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small slot="activator" fab color="cyan" dark>
|
|
||||||
<v-icon dark>fas fa-pencil-alt</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<span>ویرایش</span>
|
|
||||||
</v-tooltip>
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small slot="activator" fab color="red" dark>
|
|
||||||
<v-icon dark>fas fa-trash-alt</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<span>حذف آیتم</span>
|
|
||||||
</v-tooltip>
|
|
||||||
</v-flex>
|
|
||||||
</v-layout>
|
|
||||||
</div>
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-expansion-panel-content>
|
|
||||||
</v-expansion-panel>
|
|
||||||
</v-flex>
|
|
||||||
</v-layout>
|
|
||||||
<!-- --------------------------------------------------------------------
|
|
||||||
Modals :: BEGIN
|
|
||||||
-------------------------------------------------------------------- -->
|
|
||||||
<template>
|
|
||||||
<div class="text-xs-center">
|
|
||||||
<wm-user-departments-add></wm-user-departments-add>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<!-- --------------------------------------------------------------------
|
|
||||||
Modals :: END
|
|
||||||
-------------------------------------------------------------------- -->
|
|
||||||
</v-container>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import DepartmentAdd from "@User/components/Config/Department/Add.vue";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
"wm-user-departments-add": DepartmentAdd
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
departments: [
|
|
||||||
{
|
|
||||||
name_fa: " فنی ",
|
|
||||||
name_en: " Technical ",
|
|
||||||
sections: [
|
|
||||||
{ name_fa: " برنامه نویسی ", name_en: " Programming " },
|
|
||||||
{ name_fa: " گرافیک ", name_en: " Graphic " },
|
|
||||||
{ name_fa: " امور اپراتوری ", name_en: " Operating Matters " }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name_fa: " فروش ",
|
|
||||||
name_en: " Sale ",
|
|
||||||
sections: [
|
|
||||||
{ name_fa: " تحقیق و توسعه ", name_en: " Research & Developement " },
|
|
||||||
{ name_fa: " بازرایابی ", name_en: " Marketing " },
|
|
||||||
{ name_fa: " قراردادها ", name_en: " Contracts " }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name_fa: " مدیریت ",
|
|
||||||
name_en: " Management ",
|
|
||||||
sections: [
|
|
||||||
{ name_fa: " مدیریت اجرایی ", name_en: " Operaing Management " },
|
|
||||||
{ name_fa: " مدیریت منابع انسانی ", name_en: " Human Resource " }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss">
|
|
||||||
@import "@Global/scss/Tile.scss";
|
|
||||||
.WM-Tile {
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
.Content .Number {
|
|
||||||
width: auto;
|
|
||||||
right: 0px;
|
|
||||||
bottom: -6px;
|
|
||||||
}
|
|
||||||
.v-expansion-panel__container--active .v-expansion-panel__header .FA,
|
|
||||||
.v-expansion-panel__container--active .v-expansion-panel__header .EN {
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
.TitleNumber {
|
|
||||||
line-height: 40px;
|
|
||||||
width: 40px;
|
|
||||||
font-size: 40px;
|
|
||||||
color: rgb(0, 0, 0);
|
|
||||||
}
|
|
||||||
.v-expansion-panel--inset .v-expansion-panel__container--active,
|
|
||||||
.v-expansion-panel--popout .v-expansion-panel__container--active {
|
|
||||||
border: 1px solid #000 !important;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,45 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-layout row wrap class="Filters WM-Padding-10 WM-Border WM-Border-LightGray" style="border-right:2px solid #32c5d2;">
|
|
||||||
<v-flex xs12 sm4 md3>
|
|
||||||
<v-menu :close-on-content-click="false" v-model="DateFilterBefore" :nudge-right="40" lazy transition="slide-y-transition" offset-y full-width min-width="290px">
|
|
||||||
<v-text-field slot="activator" v-model="date" label=" تاریخ ثبت قبل از " prepend-icon="fas fa-calendar-alt" color="red darken-2" readonly></v-text-field>
|
|
||||||
<v-date-picker v-model="date" @input="DateFilterBefore = false" color="red darken-1" locale="fa-ir"></v-date-picker>
|
|
||||||
</v-menu>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex xs12 sm4 md3>
|
|
||||||
<v-menu :close-on-content-click="false" v-model="DateFilterAfter" :nudge-right="40" lazy transition="slide-y-transition" offset-y full-width min-width="290px">
|
|
||||||
<v-text-field slot="activator" v-model="date" label=" تاریخ ثبت بعد از " prepend-icon="fas fa-calendar-alt" color="red darken-2" readonly></v-text-field>
|
|
||||||
<v-date-picker v-model="date" @input="DateFilterAfter = false" color="red darken-1" locale="fa-ir"></v-date-picker>
|
|
||||||
</v-menu>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex xs12 sm4 md3>
|
|
||||||
<v-text-field label=" نام کاربر " color="red darken-2" prepend-icon="fas fa-search"></v-text-field>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex xs12 sm4 md3>
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn slot="activator" fab color="cyan" dark><v-icon dark>fas fa-filter</v-icon></v-btn>
|
|
||||||
<span> فیلتر سفارشات </span>
|
|
||||||
</v-tooltip>
|
|
||||||
</v-flex>
|
|
||||||
|
|
||||||
</v-layout>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
date: new Date().toISOString().substr(0, 10),
|
|
||||||
DateFilterAfter: false,
|
|
||||||
DateFilterBefore: false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.Filters {
|
|
||||||
margin: 20px 0px 10px 0px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,149 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-flex :class="TileClass" >
|
|
||||||
<div class="WM-Tile">
|
|
||||||
<v-layout row wrap class="Content">
|
|
||||||
<div class="Check">
|
|
||||||
<WM-Checkbox v-model="props.selected" ItemText="" :ItemID="'Check'+props.item.id"></WM-Checkbox>
|
|
||||||
</div>
|
|
||||||
<div class="Number En">12</div>
|
|
||||||
<v-flex xl3 @click="$store.state.ClientDetails = true" slot="activator">
|
|
||||||
<div class="Info">
|
|
||||||
<div class="TitleFa">
|
|
||||||
<v-badge color="red">
|
|
||||||
<span> {{ props.item.TitleFa }} </span>
|
|
||||||
</v-badge>
|
|
||||||
</div>
|
|
||||||
<div class="TitleEn Context"> {{ props.item.TitleEn }} </div>
|
|
||||||
</div>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex xl3 class="Tasks text-lg-center">
|
|
||||||
<v-chip color="grey lighten-3" text-color="black" @click="$store.state.TaskTimeline = true" slot="activator">
|
|
||||||
<v-avatar class="purple WM-Color-White"> 2 </v-avatar>
|
|
||||||
وظیفه انجام نشده
|
|
||||||
</v-chip>
|
|
||||||
<v-btn small outline fab color="purple" @click.native="$store.state.TaskAdd = true" slot="activator">
|
|
||||||
<v-icon>fas fa-plus</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
</v-flex>
|
|
||||||
|
|
||||||
<v-flex xl3 class="text-lg-center">
|
|
||||||
<v-chip color="grey lighten-3" text-color="black" @click="$store.state.UserRoles = true" slot="activator">
|
|
||||||
<v-avatar class="black WM-Color-White"> 2 </v-avatar>
|
|
||||||
دسترسی
|
|
||||||
</v-chip>
|
|
||||||
<v-btn small outline fab color="black" @click.native="$store.state.UserRoles = true" slot="activator">
|
|
||||||
<v-icon>fas fa-pencil-alt</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
</v-flex>
|
|
||||||
<v-flex xl3 class="Buttons text-lg-right">
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small slot="activator" fab color="grey lighten-4"><v-icon dark>fas fa-pencil-alt</v-icon></v-btn>
|
|
||||||
<span> ویرایش </span>
|
|
||||||
</v-tooltip>
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small @click.native="$store.state.UserDetails = true" slot="activator" fab color="cyan" dark><v-icon dark>fas fa-align-right</v-icon></v-btn>
|
|
||||||
<span> جزئیات مشتری </span>
|
|
||||||
</v-tooltip>
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small @click.native="$store.state.SendEmail = true" slot="activator" fab color="purple" dark><v-icon dark>fas fa-envelope</v-icon></v-btn>
|
|
||||||
<span> ارسال ایمیل </span>
|
|
||||||
</v-tooltip>
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small @click.native="$store.state.SendSMS = true" slot="activator" fab color="orange" dark><v-icon dark>fas fa-comment-alt</v-icon></v-btn>
|
|
||||||
<span> ارسال پیام کوتاه </span>
|
|
||||||
</v-tooltip>
|
|
||||||
<v-tooltip top color="black">
|
|
||||||
<v-btn small slot="activator" fab color="red" dark><v-icon dark>fas fa-trash-alt</v-icon></v-btn>
|
|
||||||
<span> حذف آیتم </span>
|
|
||||||
</v-tooltip>
|
|
||||||
</v-flex>
|
|
||||||
</v-layout>
|
|
||||||
</div>
|
|
||||||
</v-flex>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
TileClass: { default: "xl12" },
|
|
||||||
props: { default: "" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.WM-Tile {
|
|
||||||
width:100%;
|
|
||||||
padding:10px;
|
|
||||||
border: 1px solid #eeeeee;
|
|
||||||
transition: 0.4s;
|
|
||||||
border-radius: 5px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
.WM-Tile:hover {
|
|
||||||
border: 1px solid #000;
|
|
||||||
}
|
|
||||||
.WM-Tile.Shadowed {
|
|
||||||
box-shadow: 0 10px 30px 0 rgba(0,0,0,.5);
|
|
||||||
border-radius:5px;
|
|
||||||
}
|
|
||||||
.WM-Tile .Content {
|
|
||||||
background-color:#fff;
|
|
||||||
height:100%;
|
|
||||||
}
|
|
||||||
.WM-Tile .Image {
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
.Content {
|
|
||||||
padding:10px;
|
|
||||||
margin:0px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.Content .Info {
|
|
||||||
text-align:right;
|
|
||||||
margin-right: 30px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.Content .Check {
|
|
||||||
position: absolute;
|
|
||||||
right: 0px;
|
|
||||||
width: 40px;
|
|
||||||
}
|
|
||||||
.Content .Number {
|
|
||||||
position: absolute;
|
|
||||||
right: -14px;
|
|
||||||
bottom: -16px;
|
|
||||||
line-height: 40px;
|
|
||||||
width: 40px;
|
|
||||||
font-size: 40px;
|
|
||||||
color: rgb(224, 224, 224);
|
|
||||||
}
|
|
||||||
.Info .TitleEn {
|
|
||||||
font-size:13px;
|
|
||||||
}
|
|
||||||
//-----------------------------------Price
|
|
||||||
.Content .Price {
|
|
||||||
text-align:left;
|
|
||||||
}
|
|
||||||
.Content .Price .Unit {
|
|
||||||
font-size:12px;
|
|
||||||
}
|
|
||||||
.Price .NewPrice {
|
|
||||||
font-size:24px;
|
|
||||||
}
|
|
||||||
.Price .OldPrice {
|
|
||||||
font-size:14px;
|
|
||||||
margin-left: 20px;
|
|
||||||
text-decoration: line-through;
|
|
||||||
text-decoration-color: #ee3552;
|
|
||||||
color: #ee3552;
|
|
||||||
margin-top: -5px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------Buttons-------------------------------
|
|
||||||
|
|
||||||
.v-btn--floating.v-btn--outline.v-btn:hover {
|
|
||||||
background-color: inherit !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
|
@ -1,78 +0,0 @@
|
|||||||
/**
|
|
||||||
* Vue Router
|
|
||||||
*
|
|
||||||
* @library
|
|
||||||
*
|
|
||||||
* https://router.vuejs.org/en/
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Lib imports
|
|
||||||
import Vue from 'vue'
|
|
||||||
// import VueAnalytics from 'vue-analytics'
|
|
||||||
import Router from 'vue-router'
|
|
||||||
import Meta from 'vue-meta'
|
|
||||||
|
|
||||||
// Routes
|
|
||||||
import paths from './paths'
|
|
||||||
|
|
||||||
function route (options) {
|
|
||||||
let path = options.path;
|
|
||||||
let view = options.view;
|
|
||||||
let name = options.name;
|
|
||||||
let meta = (options.meta) ? options.meta : '';
|
|
||||||
return {
|
|
||||||
name: name || view,
|
|
||||||
path,
|
|
||||||
meta,
|
|
||||||
component: (resovle) => import(
|
|
||||||
`@User/views/${view}.vue`
|
|
||||||
).then(resovle)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.use(Router)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Create a new router
|
|
||||||
const router = new Router({
|
|
||||||
mode: 'history',
|
|
||||||
routes: paths.map(path => route(path)).concat([
|
|
||||||
{ path: '*', redirect: '/Home' }
|
|
||||||
]),
|
|
||||||
scrollBehavior (to, from, savedPosition) {
|
|
||||||
if (savedPosition) {
|
|
||||||
return savedPosition
|
|
||||||
}
|
|
||||||
if (to.hash) {
|
|
||||||
return { selector: to.hash }
|
|
||||||
}
|
|
||||||
return { x: 0, y: 0 }
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
Vue.use(Meta)
|
|
||||||
|
|
||||||
router.beforeEach((to, from, next) => {
|
|
||||||
// const isPublic = to.matched.some(record => record.meta.public);
|
|
||||||
// const onlyWhenLoggedOut = to.matched.some(record => record.meta.onlyWhenLoggedOut);
|
|
||||||
// const roles = (to.meta && to.meta.roles) ? to.meta.roles : null;
|
|
||||||
|
|
||||||
// if (!isPublic && !loggedIn) {
|
|
||||||
// return next({
|
|
||||||
// path:'/login',
|
|
||||||
// query: {redirect: to.fullPath} // Store the full path to redirect the user to after login
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Do not allow user to visit login page or register page if they are logged in
|
|
||||||
// if (loggedIn && onlyWhenLoggedOut && policy) {
|
|
||||||
// return next('/')
|
|
||||||
// }
|
|
||||||
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
|
|
||||||
export default router
|
|
@ -1,11 +0,0 @@
|
|||||||
export default [{
|
|
||||||
path: '/User/List',
|
|
||||||
name: 'UserList',
|
|
||||||
view: 'List'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '/User/Add',
|
|
||||||
name: 'AddUser',
|
|
||||||
view: 'Add'
|
|
||||||
},
|
|
||||||
];
|
|
@ -1,18 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import Vuex from 'vuex'
|
|
||||||
|
|
||||||
Vue.use(Vuex)
|
|
||||||
|
|
||||||
export default new Vuex.Store({
|
|
||||||
state: {
|
|
||||||
UserDetails: false,
|
|
||||||
UserRoles: false,
|
|
||||||
AddRole: false,
|
|
||||||
ConfigUserDepartments: false,
|
|
||||||
ConfigUserDepartmentAdd: false,
|
|
||||||
TaskAdd: false,
|
|
||||||
TaskTimeline: false,
|
|
||||||
SendEmail: false,
|
|
||||||
SendSMS: false
|
|
||||||
}
|
|
||||||
})
|
|
@ -1,87 +0,0 @@
|
|||||||
<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-PartTitle class="WM-Margin-T-20" TitleFa=" کاربران مجموعه ی من " TitleEn=" My Users " color="cyan"></WM-PartTitle>
|
|
||||||
<wm-user-filter></wm-user-filter>
|
|
||||||
<wm-user-items></wm-user-items>
|
|
||||||
<router-link :to="{name: 'AddUser'}">
|
|
||||||
<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>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- --------------------------------------------------------------------
|
|
||||||
Modals :: BEGIN
|
|
||||||
-------------------------------------------------------------------- -->
|
|
||||||
<template>
|
|
||||||
<div class="text-xs-center">
|
|
||||||
<wm-user-details></wm-user-details>
|
|
||||||
<wm-user-roles></wm-user-roles>
|
|
||||||
<wm-add-role></wm-add-role>
|
|
||||||
<wm-task-add></wm-task-add>
|
|
||||||
<wm-task-timeline></wm-task-timeline>
|
|
||||||
<wm-send-email></wm-send-email>
|
|
||||||
<wm-send-sms></wm-send-sms>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<!-- --------------------------------------------------------------------
|
|
||||||
Modals :: END
|
|
||||||
-------------------------------------------------------------------- -->
|
|
||||||
|
|
||||||
|
|
||||||
</v-container>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import UserItems from '@User/components/Items';
|
|
||||||
import UserFilters from '@User/components/Filters';
|
|
||||||
import UserDetails from "@User/components/Details.vue";
|
|
||||||
import UserRoles from "@User/components/Role/List.vue";
|
|
||||||
import AddRole from "@User/components/Role/Add.vue";
|
|
||||||
|
|
||||||
import TaskAdd from "@Common/components/Task/Add.vue";
|
|
||||||
import TaskTimeline from "@Common/components/Task/Timeline/Modal-Layout.vue";
|
|
||||||
import TaskTimelineItem from "@Common/components/Task/Timeline/Item.vue";
|
|
||||||
|
|
||||||
import SendEmailModal from "@Common/components/Contact/Email/Send.vue";
|
|
||||||
import SendSMSModal from "@Common/components/Contact/SMS/Send.vue";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
'wm-user-items' : UserItems,
|
|
||||||
'wm-user-filter' : UserFilters,
|
|
||||||
'wm-user-details' : UserDetails,
|
|
||||||
'wm-user-roles' : UserRoles,
|
|
||||||
'wm-add-role' : AddRole,
|
|
||||||
'wm-task-add' : TaskAdd,
|
|
||||||
'wm-task-timeline' : TaskTimeline,
|
|
||||||
'wm-send-email' : SendEmailModal,
|
|
||||||
'wm-send-sms' : SendSMSModal,
|
|
||||||
},
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
breadcrumbItems: [
|
|
||||||
// {
|
|
||||||
// text: '',
|
|
||||||
// disabled: false,
|
|
||||||
// href: '/CRM/Home',
|
|
||||||
// icon: 'home'
|
|
||||||
// },
|
|
||||||
{
|
|
||||||
text: ' کاربران من ',
|
|
||||||
disabled: true,
|
|
||||||
routeName: 'UserList'
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
</style>
|
|
@ -1,129 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" rel="stylesheet">
|
|
||||||
{{-- <link href="{{ asset('css/styles.css') }}" rel="stylesheet"> --}}
|
|
||||||
|
|
||||||
<title> New Design </title>
|
|
||||||
|
|
||||||
<!-- Styles -->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id='cursor'></div>
|
|
||||||
{{-- <div class="Loader">
|
|
||||||
<div class="W">W</div>
|
|
||||||
<div class="I">I</div>
|
|
||||||
<div class="L">L</div>
|
|
||||||
<div class="L">L</div>
|
|
||||||
<div class="A">A</div>
|
|
||||||
<div class="E">E</div>
|
|
||||||
<div class="N">N</div>
|
|
||||||
<div class="G">G</div>
|
|
||||||
<div class="I">I</div>
|
|
||||||
<div class="N">N</div>
|
|
||||||
<div class="E">E</div>
|
|
||||||
</div> --}}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="app"></div>
|
|
||||||
</body>
|
|
||||||
<style lang="scss">
|
|
||||||
#app {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
.backgrounds {
|
|
||||||
width: 100%;
|
|
||||||
height:100%;
|
|
||||||
}
|
|
||||||
.c-hamburger {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var w = window;
|
|
||||||
|
|
||||||
const b = document.getElementsByTagName("body")[0];
|
|
||||||
b.addEventListener("mousemove", mouseMove);
|
|
||||||
|
|
||||||
var cursor = document.getElementById('cursor');
|
|
||||||
b.addEventListener("mousedown", cursorClick);
|
|
||||||
b.addEventListener("mouseup", cursorUnclick);
|
|
||||||
|
|
||||||
|
|
||||||
var panel = document.querySelectorAll(".section.active");
|
|
||||||
var text = document.querySelectorAll(".section-tagline-wrapper");
|
|
||||||
var img = document.querySelectorAll(".section-img-wrapper");
|
|
||||||
var no = document.querySelectorAll(".section-no-wrapper");
|
|
||||||
|
|
||||||
var cImg = document.querySelectorAll('.pattern');
|
|
||||||
|
|
||||||
var patterns = document.querySelectorAll('.pattern');
|
|
||||||
|
|
||||||
|
|
||||||
function mouseMove(e) {
|
|
||||||
// Custom Cursor
|
|
||||||
cursor.style.left = e.clientX + 'px';
|
|
||||||
cursor.style.top = e.clientY + 'px';
|
|
||||||
|
|
||||||
// if (menu.classList.contains('active')) {
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
};
|
|
||||||
function clipMask(pattern, e) {
|
|
||||||
pattern.style.setProperty("--clip-position", e.clientX + 'px ' + e.clientY + 'px');
|
|
||||||
}
|
|
||||||
|
|
||||||
function cursorClick(e) {
|
|
||||||
cursor.classList.add("clicked")
|
|
||||||
}
|
|
||||||
|
|
||||||
function cursorUnclick(e) {
|
|
||||||
setTimeout(function () {
|
|
||||||
cursor.classList.remove("clicked")
|
|
||||||
}, 300);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function cursorHover(e) {
|
|
||||||
cursor.classList.add("hover")
|
|
||||||
}
|
|
||||||
|
|
||||||
function cursorUnhover(e) {
|
|
||||||
cursor.classList.remove("hover")
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var hovers = document.querySelectorAll(".hover-target");
|
|
||||||
|
|
||||||
for (var i = hovers.length - 1; i >= 0; i--) {
|
|
||||||
var hover = hovers[i];
|
|
||||||
hoverHandler(hover);
|
|
||||||
};
|
|
||||||
|
|
||||||
function hoverHandler(hover) {
|
|
||||||
hover.addEventListener("mouseover", cursorHover);
|
|
||||||
hover.addEventListener("mouseout", cursorUnhover);
|
|
||||||
}
|
|
||||||
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{{-- <script type="text/javascript" src="{{ asset('js/vendors.js') }}"></script>
|
|
||||||
<script type="text/javascript" src="{{ asset('js/scripts.js') }}"></script> --}}
|
|
||||||
|
|
||||||
<script src="{{ mix('js/vue/Authentication/app.js') }}"></script>
|
|
||||||
</html>
|
|
@ -1,17 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<title> Welcome </title>
|
|
||||||
|
|
||||||
<!-- Styles -->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="app"></div>
|
|
||||||
</body>
|
|
||||||
<script src="{{ mix('js/vue/User/app.js') }}"></script>
|
|
||||||
</html>
|
|
Loading…
Reference in new issue