Members Club Ready

pull/1/head
Alireza Hassani 6 years ago
parent fbd95463f5
commit 92544a0f7e

6
package-lock.json generated

@ -771,6 +771,12 @@
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.6.3.tgz",
"integrity": "sha512-s5PLdI9NYgjBvfrv6rhirPHlAHWx+Sfo/IjsAeiXYfmemC/GSjwsyz1wLnGPazbLPXWfk62ks980o9AmsxYUEQ=="
},
"@mdi/font": {
"version": "3.3.92",
"resolved": "https://registry.npmjs.org/@mdi/font/-/font-3.3.92.tgz",
"integrity": "sha512-Ux6iPfRjT9gHtejfss7aHBjgedLx8OrnX7Q+DuqgGYVkr9Amhi7cWFd745znrj7Y74pnjrs+uAbpohPK3ue5Ew==",
"dev": true
},
"@mrmlnc/readdir-enhanced": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",

@ -27,13 +27,14 @@
"vuetify": "^1.4.0"
},
"devDependencies": {
"@mdi/font": "^3.3.92",
"axios": "^0.18",
"bootstrap": "^4.0.0",
"cross-env": "^5.1",
"material-design-icons-iconfont": "^4.0.3",
"jquery": "^3.2",
"laravel-mix": "^4.0.7",
"lodash": "^4.17.5",
"material-design-icons-iconfont": "^4.0.3",
"node-sass": "^4.10.0",
"popper.js": "^1.12",
"pug": "^2.0.3",

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 3.6 MiB

158360
public/js/app.js vendored

File diff suppressed because one or more lines are too long

@ -10,13 +10,25 @@ import 'bootstrap-v4-rtl'
import 'bootstrap-v4-rtl/scss/bootstrap-rtl.scss'
import 'bootstrap-select'
import 'bootstrap-select/dist/css/bootstrap-select.css'
import 'material-design-icons-iconfont/dist/material-design-icons.css'
// import 'material-design-icons-iconfont/dist/material-design-icons.css'
// import '@mdi/font/css/materialdesignicons.css'
// import 'font-awesome/css/font-awesome.min.css'
import 'vuetify/dist/vuetify.min.css' // Ensure you are using css-loader
import './assets/Font-Icons/css/fontello.css'
import "./scss/style.scss";
// components
import PartTitle from "./components/Dividers/PartTitle.vue";
import PageTitle from "./components/Dividers/PageTitle.vue";
import Checkbox from "./components/Inputs/Checkbox.vue";
import ButtonShodowed from "./components/Inputs/ButtonShodowed.vue";
Vue.component('PartTitle', PartTitle)
Vue.component('PageTitle', PageTitle)
Vue.component('Checkbox', Checkbox)
Vue.component('ButtonShodowed', ButtonShodowed)
/**
* First we will load all of this project's JavaScript dependencies which
* includes Vue and other libraries. It is a great starting point when
@ -45,7 +57,8 @@ window.Vue = require('vue');
Vue.use(Vuetify, {
iconfont: 'fa' || 'mdi'
iconfont: 'fa',
rtl: true,
});
// Vue.config.productionTip = false;

@ -10,5 +10,6 @@
.header {
height: 7em;
background: url(../../../assets/bg.jpg) repeat-x;
margin-bottom: 20px;
}
</style>

@ -3,11 +3,12 @@
<ul class="WM-Nav d-flex WM-Float-R">
<li> <NavIcon Icon="WMi-Real-Estate" ThemeColor="Black" Route="Summery"></NavIcon> </li>
<!-- <li> <NavItem TitleFa=" صفحه ی اصلی " TitleEn=" Home " ThemeColor="Black"></NavItem> </li> -->
<li> <NavItem TitleFa=" مجموعه ی من " TitleEn=" My Business " ThemeColor="Cyan" Route="MyBusiness"></NavItem> </li>
<li> <NavItem TitleFa=" مجموعه ی من " TitleEn=" My Business " ThemeColor="Black" Route="MyBusiness"></NavItem> </li>
<li> <NavItem TitleFa=" محصولات و خدمات " TitleEn=" Products & Services " ThemeColor="Red"></NavItem> </li>
<li> <NavItem TitleFa=" سفارشات " TitleEn=" Orders " ThemeColor="Orange" Route="OrderManagement"></NavItem> </li>
<li> <NavItem TitleFa=" نمونه کار ها " TitleEn=" Portfolios " ThemeColor="Purple"></NavItem> </li>
<li> <NavItem TitleFa=" اخبار " TitleEn=" Blog " ThemeColor="Orange"></NavItem> </li>
<li> <NavItem TitleFa=" مدیریت سایت " TitleEn=" Website Management " ThemeColor="Green" Route="WebsiteManagment"></NavItem> </li>
<li> <NavItem TitleFa=" مدیریت سایت " TitleEn=" Website Management " ThemeColor="Green" Route="WebsiteManagement"></NavItem> </li>
<li> <NavIcon Icon="WMi-search" ThemeColor="Black"></NavIcon> </li>
<li> <NavIcon Icon="WMi-message-reply-text" ThemeColor="Cyan" Quantity="12"></NavIcon> </li>
<li> <NavIcon Icon="WMi-bell-alt" ThemeColor="Red" Quantity="4"></NavIcon> </li>

@ -1,5 +1,5 @@
<template>
<router-link :to="Route" class="WM-Link WM-Align-C WM-PageNav" :class="HoverClass">
<router-link :to="{ name: Route }" class="WM-Link WM-Align-C WM-PageNav" :class="HoverClass">
<div class="WM-Font-18"> {{ TitleFa }} </div>
<div class="WM-Font-14"> {{ TitleEn }} </div>
</router-link>

@ -0,0 +1,35 @@
<script>
import { Doughnut } from "vue-chartjs";
export default {
extends: Doughnut,
mounted() {
this.renderChart({
labels: ["محصولات", "نمونه کارها", "اخبار", "سفارشات", "اعضا"],
datasets: [{
labels: [
'Red',
'Yellow',
'Blue'
],
data: [16,12,24,8,40],
backgroundColor: [
'rgba(238, 53, 82, 0.2)',
'rgba(255, 107, 87, 0.2)',
'rgba(172, 55, 115, 0.2)',
'rgba(50, 197, 210, 0.2)',
'rgba(0, 0, 0, 0.2)',
],
borderColor: [
'#ee3552',
'#FF6B57',
'#ac3773',
'#32c5d2',
'#000',
],
borderWidth: 1,
}]
});
}
};
</script>

@ -14,7 +14,7 @@ export default {
props: {
TitleFa: { default: "عنوان بخش" },
TitleEn: { default: "Part Title" },
ThemeColor: { default: "Red" },
Color: { default: "Red" },
TitleFaClass: { default: "WM-Color-White" }
},
data() {
@ -22,9 +22,6 @@ export default {
Color,
}
},
created : function ( ) {
this.Color = 'WM-BG-' + this.ThemeColor;
}
};
</script>

@ -2,18 +2,12 @@
<div class="SectionTitle WM-Width-100">
<h4 class="TitleFa WM-Align-R" v-text="TitleFa"></h4>
<div class="TitleEn WM-Flex">
<span :class="Color" v-text="TitleEn"></span>
<span :class="[Color,TextColor]" v-text="TitleEn"></span>
<div class="Line">
<div class="inner" :class="Color"></div>
</div>
</div>
</div>
<!-- .SectionTitle
h4.TitleFa(v-text="TitleFa")
div.TitleEn.d-flex
span(v-text="TitleEn" :class="Color")
.Line
.inner(:class="Color") -->
</template>
<script>
@ -21,22 +15,11 @@ export default {
props: {
TitleFa: { default: "عنوان بخش" },
TitleEn: { default: "Part Title" },
ThemeColor: { default: "Red" }
Color: { default: "black" },
TextColor: { default: "white--text" }
},
data: function () {
return {
Color: 'WM-BG-' + this.ThemeColor,
}
return {}
},
//
// data() {
// return {
// Color,
// }
// },
// created : function ( ) {
// this.Color = 'WM-BG-' + this.ThemeColor;
// }
};
</script>

@ -0,0 +1,26 @@
<template>
<div class="WM-Checkbox c-toggle-hide RTL WM-Align-R">
<input type="checkbox" :id="ItemID" class="c-check">
<label :for="ItemID">
<span class="inc"></span>
<span class="check"></span>
<span class="box"></span> {{ ItemText }}
</label>
</div>
</template>
<script>
export default {
props: {
ItemID: { default: "Checkbox" },
ItemText: { default: " مقدار پیش فرض " },
Color: { default: "Red" },
},
data: function () {
return {
IconClass: 'WMi-' + this.Icon,
}
},
};
</script>

@ -1,4 +1,4 @@
<template lang="pug">
<template>
<a class="WM-Block WM-Border WM-Align-C WM-Border-LightGray WM-QuickLink" :class="HoverClass">
<div class="WM-Font-36" v-if="Counter>0"> {{ Counter }} </div>
<div class="WM-Font-24"> {{ TitleFa }} </div>
@ -20,16 +20,5 @@ export default {
h4Class: 'WM-BG-' + this.ThemeColor,
}
},
// data() {
// return {
// Color,HoverClass
// }
// },
//
// created : function ( ) {
// this.Color = 'WM-BG-' + this.ThemeColor;
// this.HoverClass = 'WM-Hover-' + this.ThemeColor;
// }
};
</script>

@ -1,8 +1,12 @@
<template>
<li class="nav-item">
<a class="nav-link" :class="[aClass, (Status == 'Active' ? 'active' : '')]" data-toggle="tab" :href="TabHref">
<a class="nav-link WM-Flex" :class="[aClass, (Status == 'Active' ? 'active' : '')]" data-toggle="tab" :href="TabHref">
<div class="WM-Notification" v-if="Quantity>0"> {{ Quantity }} </div>
<div>
<div class="WM-Font-18"> {{ TitleFa }} </div> {{ TitleEn }}
</div>
</a>
</li>
</template>
@ -14,6 +18,7 @@ export default {
Color: { default: "Black" },
TabContent: { default: '' },
Status: { default: '' },
Quantity: { default: 0 },
},
data: function () {
return {

@ -0,0 +1,40 @@
<template>
<v-dialog v-model="$store.state.SendEmail" width="60%" transition="slide-x-transition">
<v-card class="RTL">
<v-card-title class=" grey lighten-3" primary-title>
<PartTitle class="WM-Margin-T-20" TitleFa=" ارسال ایمیل " TitleEn=" Sending an Email " Color="pink darken-4"></PartTitle>
</v-card-title>
<v-card-text>
<v-layout row wrap class="WM-Padding-RL-20">
<v-flex md8>
<v-text-field label=" لطفا عنوان پیام را بنویسید " hint="حداکثر 50 کاراکتر " color="pink darken-4" width="60%" prepend-icon="fas fa-info"></v-text-field>
</v-flex>
<v-flex md12>
<v-textarea name="input-7-1" label="لطفا پیام خود را بنویسید" value="" hint="حداکثر 2500 کاراکتر " color="pink darken-4" prepend-icon="fas fa-envelope"></v-textarea>
</v-flex>
</v-layout>
</v-card-text>
<v-divider></v-divider>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="pink darken-4" depressed dark @click="$store.state.SendEmail = false">
<v-icon dark right>fas fa-envelope</v-icon> ارسال ایمیل
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
props: {
Color: { default: 'grey darken-4' },
},
};
</script>

@ -0,0 +1,35 @@
<template>
<v-dialog v-model="$store.state.SendSMS" width="60%" transition="slide-x-transition">
<v-card class="RTL">
<v-card-title class="grey lighten-3" primary-title>
<PartTitle class="WM-Margin-T-20" TitleFa=" ارسال پیام کوتاه " TitleEn=" Sending a Text Message " Color="orange darken-3"></PartTitle>
</v-card-title>
<v-card-text>
<v-layout row wrap class="WM-Padding-RL-20">
<v-flex md12>
<v-textarea name="input-7-1" label="لطفا پیام خود را بنویسید" value="" hint=" هر پیام 53 کاراکتر " color="orange darken-3" append-icon="fas fa-comment-alt"></v-textarea> </div>
</v-flex>
</v-layout>
</v-card-text>
<v-divider></v-divider>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="orange darken-3" depressed dark @click="$store.state.SendSMS = false">
<v-icon dark right>fa fa-angle-left</v-icon> ارسال پیام
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
props: {
Color: { default: 'grey darken-4' },
},
};
</script>

@ -0,0 +1,47 @@
<template>
<v-dialog v-model="$store.state.UserDetail" width="90%" transition="slide-x-transition">
<v-card class="RTL">
<v-card-title class=" grey lighten-3" primary-title>
<PartTitle class="WM-Margin-T-20" TitleFa=" اطلاعات کاربر " TitleEn=" Member's Info " Color="cyan"></PartTitle>
</v-card-title>
<v-card-text>
<div class="row">
<div class="col-md-3 WM-Align-R">
<div class="WM-Font-14 WM-Color-Gray"><i class="WMi-user"></i> نام و نام خانوادگی </div>
<div class="WM-Font-20"> علیرضا حسنی </div>
</div>
<div class="col-md-3 WM-Align-R">
<div class="WM-Font-14 WM-Color-Gray"><i class="WMi-mail-alt"></i> آدرس آیمیل </div>
<div class="WM-Font-20"> Alireza-Hassani@outlook.com </div>
</div>
<div class="col-md-3 WM-Align-R">
<div class="WM-Font-14 WM-Color-Gray"><i class="WMi-phone"></i> شماره ی همراه </div>
<div class="WM-Font-20"> 09127004945 </div>
</div>
</div>
</v-card-text>
<v-divider></v-divider>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="cyan" depressed dark @click="$store.state.UserDetail = false">
<v-icon dark right>fas fa-check</v-icon> بسیار خب، ممنونم
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
import PartTitle from "../Dividers/PartTitle.vue";
import { mapGetters } from 'Vuex';
export default {
components: {
PartTitle,
}
};
</script>

@ -0,0 +1,101 @@
<template>
<v-dialog v-model="$store.state.UserRoles" width="60%" transition="slide-x-transition">
<v-card class="RTL">
<v-card-title class=" grey lighten-3" primary-title>
<PartTitle class="WM-Margin-T-20" TitleFa=" دسترسی های این کاربر " TitleEn=" Member's Roles "></PartTitle>
</v-card-title>
<v-card-text>
<table class="table table-striped WM-Margin-T-20 WM-Align-R RTL">
<thead>
<tr>
<th style="width:25%"></th>
<th style="width:25%" class="WM-Color-Cyan"><i class="WMi-plus"></i> قابلیت ثبت </th>
<th style="width:25%" class="WM-Color-Orange"><i class="WMi-edit"></i> قابلیت ویرایش </th>
<th style="width:25%" class="WM-Color-Red"><i class="WMi-trash"></i> قابلیت حذف </th>
</tr>
</thead>
<tbody>
<tr v-for="(Permission, index) in Permissions">
<td class="WM-Align-C">
<i class="WM-Font-36 WM-Float-R" :class="[Permission.Icon]"></i>
<!-- <div style="margin-top:-15px;"> {{ Permission.Name }} </div> -->
<div class="WM-Float-R WM-Margin-R-10">
<h4 class="WM-Font-16"> {{ Permission.Name }} </h4>
<h4 class="WM-Font-14"> {{ index }} </h4>
</div>
</td>
<td>
<Checkbox ItemText=" امکان افزودن آیتم " :ItemID="index+'Add'"></Checkbox>
</td>
<td class="WM-Align-L">
<Checkbox ItemText=" امکان ویرایش آیتم های متعلق به خود " :ItemID="index+'EditSelfOwned'"></Checkbox>
<Checkbox ItemText=" امکان ویرایش همه ی آیتم ها " :ItemID="index+'EditAll'"></Checkbox>
</td>
<td>
<Checkbox ItemText=" امکان ویرایش آیتم های متعلق به خود " :ItemID="index+'DeleteSelfOwned'"></Checkbox>
<Checkbox ItemText=" امکان ویرایش همه ی آیتم ها " :ItemID="index+'DeleteAll'"></Checkbox>
</td>
</tr>
<tr>
<td class="WM-Align-C">
<i class="WM-Font-36 WM-Float-R WMi-shop"></i>
<div class="WM-Float-R WM-Margin-R-10">
<h4 class="WM-Font-16"> سفارشات </h4>
<h4 class="WM-Font-14"> Orders </h4>
</div>
</td>
<td></td>
<td class="WM-Align-L">
<Checkbox ItemText=" مدیریت سفارشات " ItemID="OrdersManagement"></Checkbox>
</td>
<td></td>
</tr>
<tr>
<td class="WM-Align-C">
<i class="WM-Font-36 WM-Float-R WMi-globe"></i>
<div class="WM-Float-R WM-Margin-R-10">
<h4 class="WM-Font-16"> وبسایت </h4>
<h4 class="WM-Font-14"> Website </h4>
</div>
</td>
<td></td>
<td class="WM-Align-L">
<Checkbox ItemText=" ویرایش وبسایت " ItemID="WebsiteEdit"></Checkbox>
</td>
<td></td>
</tr>
</tbody>
</table>
</v-card-text>
<v-divider></v-divider>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="black" depressed dark @click="$store.state.UserRoles = false">
<v-icon dark right>fas fa-check</v-icon> ذخیره ی دسترسی ها
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
props: {
Color: { default: 'grey darken-4' },
},
data: function () {
return {
Permissions: {
'BusinessItem': { Name: ' کالاها و خدمات ', Icon: 'WMi-dropbox', Color: 'WM-Color-Red' },
'News': { Name: ' اخبار ', Icon: 'WMi-rss', Color: 'WM-Color-Orange' },
'Portfolio': { Name: ' نمونه کار ها ', Icon: 'WMi-picture', Color: 'WM-Color-Purple' },
}
}
},
};
</script>

@ -2,7 +2,8 @@ import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'
import Summery from './views/Summery.vue'
import WebsiteManagment from './views/WebsiteManagment.vue'
import WebsiteManagement from './views/Website/Management.vue'
import OrderManagement from './views/Order/Management.vue'
import PMs from './views/PMs.vue'
import UserInfo from './views/UserInfo.vue'
import CreateBusiness from './views/CreateBusiness.vue'
@ -25,8 +26,8 @@ const router = new Router({
},
{
path: '/',
name: 'home',
component: Home
name: 'Summery',
component: Summery
},
{
path: '/Summery',
@ -34,9 +35,14 @@ const router = new Router({
component: Summery
},
{
path: '/WebsiteManagment',
name: 'WebsiteManagment',
component: WebsiteManagment
path: 'WebsiteManagement',
name: 'WebsiteManagement',
component: WebsiteManagement
},
{
path: 'OrderManagement',
name: 'OrderManagement',
component: OrderManagement
},
{
path: '/pms',

@ -134,6 +134,260 @@
}
.WM-Checkbox {
position: relative;
/* handling click events */
/* when checkbox is checked */
}
.WM-Checkbox.WM-Checkbox-inline {
display: inline-block;
}
.form-inline .WM-Checkbox.WM-Checkbox-inline {
margin-left: 20px;
top: 3px;
}
.WM-Checkbox input[type=checkbox] {
visibility: hidden;
position: absolute;
}
.WM-Checkbox label {
cursor: pointer;
padding-right: 30px;
}
.WM-Checkbox label > span {
display: block;
position: absolute;
right: 0;
-webkit-transition-duration: 0.3s;
-moz-transition-duration: 0.3s;
transition-duration: 0.3s;
}
.WM-Checkbox label > span.inc {
background: #fff;
right: -10px;
top: -10px;
height: 40px;
width: 40px;
opacity: 0;
border-radius: 50% !important;
-moz-border-radius: 50% !important;
-webkit-border-radius: 50% !important;
}
.WM-Checkbox label > .box {
top: 1px;
border: 2px solid #d0d7de;
height: 20px;
width: 20px;
z-index: 5;
-webkit-transition-delay: 0.2s;
-moz-transition-delay: 0.2s;
transition-delay: 0.2s;
}
.ie .WM-Checkbox label > .box {
top: 2px;
}
.WM-Checkbox label > .check {
top: 2px;
left: 6px;
width: 20px;
height: 10px;
border: 2px solid #ee3552;
border-top: none;
border-right: none;
opacity: 0;
z-index: 5;
-webkit-transform: rotate(-180deg);
-moz-transform: rotate(-180deg);
transform: rotate(-180deg);
-webkit-transition-delay: 0.3s;
-moz-transition-delay: 0.3s;
transition-delay: 0.3s;
}
.WM-Checkbox label > span.inc {
-webkit-animation: growCircle 0.3s ease;
-moz-animation: growCircle 0.3s ease;
animation: growCircle 0.3s ease;
}
.WM-Checkbox input[type=checkbox]:checked ~ label > .box {
opacity: 0;
-webkit-transform: scale(0) rotate(180deg);
-moz-transform: scale(0) rotate(180deg);
transform: scale(0) rotate(180deg);
}
.WM-Checkbox input[type=checkbox]:checked ~ label > .check {
opacity: 1;
-webkit-transform: scale(1) rotate(-45deg);
-moz-transform: scale(1) rotate(-45deg);
transform: scale(1) rotate(-45deg);
}
.WM-Checkbox input[type=checkbox]:disabled ~ label,
.WM-Checkbox input[type=checkbox][disabled] ~ label {
cursor: not-allowed;
opacity: 0.7;
filter: alpha(opacity=70);
}
.WM-Checkbox input[type=checkbox]:disabled ~ label > .box,
.WM-Checkbox input[type=checkbox][disabled] ~ label > .box {
cursor: not-allowed;
opacity: 0.7;
filter: alpha(opacity=70);
}
.WM-Checkbox input[type=checkbox]:disabled:checked ~ label > .check,
.WM-Checkbox input[type=checkbox][disabled]:checked ~ label > .check {
cursor: not-allowed;
opacity: 0.7;
filter: alpha(opacity=70);
}
.WM-Checkbox.has-error label {
color: #e7505a;
}
.WM-Checkbox.has-error label > .box {
border-color: #e7505a;
}
.WM-Checkbox.has-error label > .check {
border-color: #e7505a;
}
.WM-Checkbox.has-info label {
color: #4eabe6;
}
.WM-Checkbox.has-info label > .box {
border-color: #4eabe6;
}
.WM-Checkbox.has-info label > .check {
border-color: #4eabe6;
}
.WM-Checkbox.has-success label {
color: #5dc09c;
}
.WM-Checkbox.has-success label > .box {
border-color: #5dc09c;
}
.WM-Checkbox.has-success label > .check {
border-color: #5dc09c;
}
.WM-Checkbox.has-warning label {
color: #c8d046;
}
.WM-Checkbox.has-warning label > .box {
border-color: #c8d046;
}
.WM-Checkbox.has-warning label > .check {
border-color: #c8d046;
}
.c-form-checkboxes.has-error > label {
color: #e7505a;
}
.c-form-checkboxes.has-info > label {
color: #4eabe6;
}
.c-form-checkboxes.has-success > label {
color: #5dc09c;
}
.c-form-checkboxes.has-warning > label {
color: #c8d046;
}
.WM-Checkbox-list {
margin: 10px 0;
}
.form-horizontal .WM-Checkbox-list {
margin-top: 0px;
}
.WM-Checkbox-list .WM-Checkbox {
display: block;
margin-bottom: 10px;
}
.WM-Checkbox-inline {
margin: 10px 0;
}
.form-horizontal .WM-Checkbox-inline {
margin-top: 8px;
}
.WM-Checkbox-inline .WM-Checkbox {
display: inline-block;
margin-left: 20px;
}
.WM-Checkbox-inline .WM-Checkbox:last-child {
margin-left: 0;
}
/* bubble animation */
@-webkit-keyframes growCircle {
0%,
100% {
-webkit-transform: scale(0);
opacity: 1;
}
70% {
background: #eee;
-webkit-transform: scale(1.25);
}
}
@-moz-keyframes growCircle {
0%,
100% {
-moz-transform: scale(0);
opacity: 1;
}
70% {
background: #eee;
-moz-transform: scale(1.25);
}
}
@keyframes growCircle {
0%,
100% {
transform: scale(0);
opacity: 1;
}
70% {
background: #eee;
transform: scale(1.25);
}
}
/* --------------------------------------------------------
Buttons :: Begin
-------------------------------------------------------- */

@ -1,3 +1,7 @@
#app {
padding: 0em 0;
}
/* --------------------------------------------------------
Navigation :: Bootstrap Tabs
-------------------------------------------------------- */
@ -15,11 +19,19 @@
.nav-tabs .nav-link {
color: #000;
}
.nav-tabs .nav-link .WM-Notification {
background-color: #000;
margin: 12px 10px;
transition: 0.2s;
}
@each $Color, $Value in $Colors {
.nav-tabs .nav-link.WM-#{$Color}.active, .nav-tabs .nav-link.WM-#{$Color}:hover, .nav-tabs .nav-link.WM-#{$Color}:focus {
border-bottom: 1px solid $Value;
color: $Value;
}
.nav-tabs .nav-link.WM-#{$Color}.active .WM-Notification, .nav-tabs .nav-link.WM-#{$Color}:hover .WM-Notification, .nav-tabs .nav-link.WM-#{$Color}:focus .WM-Notification {
background-color: $Value;
}
}
@ -29,3 +41,11 @@
.v-card__title--primary {
padding-top: 10px;
}
.theme--light.v-text-field>.v-input__control>.v-input__slot:before {
border-color: rgba(0,0,0,.22);
}
.theme--light.v-icon {
font-size: 16px;
}

@ -93,6 +93,10 @@
.WM-Padding-10 {
padding: 10px;
}
.WM-Padding-RL-20 {
padding-right: 20px;
padding-left: 20px;
}
/* --------------------------------------------------------
Fonts :: Begin

@ -95,3 +95,4 @@ a:hover {
@import 'Inputs.scss';
@import 'SizeAndPositioning.scss';
@import 'Colors.scss';
@import 'Modify.scss';

@ -1,16 +1,13 @@
import Vue from 'vue'
import Vuex from 'vuex'
import Vuex from 'Vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
UserDetail: false,
UserRoles: false,
SendEmail: false,
SendSMS: false
}
})

@ -0,0 +1,85 @@
<template>
<div class="container_fluid">
<PageTitle TitleFa=" مدیریت سفارشات " TitleEn=" Orders Management " Color="orange darken-3" TitleFaClass="WM-Color-Black"></PageTitle>
<v-alert :value="true" color="grey lighten-2" dismissible outline>
<PartTitle class="WM-Margin-T-20" TitleFa=" خلاصه ای از آمار " TitleEn=" Statistics Summery " ThemeColor="Orange"></PartTitle>
<v-layout row wrap class="WM-Margin-T-20">
<v-flex xs12 sm6 md4> <DoughnutChart :height="280"></DoughnutChart> </v-flex>
</v-layout>
</v-alert>
<ul class="nav nav-tabs WM-Margin-T-20" id="WMTabs">
<template v-for="(Tab, index) in Tabs">
<component :is="Tab.Type" :TitleFa="Tab.NameFa" :TitleEn="Tab.NameEn" :Status="Tab.Status" :Quantity="Tab.Quantity" :SubItems="Tab.SubItems" :TabContent="index" Color="Orange"></component>
</template>
</ul>
<div class="tab-content">
<div class="tab-pane container-fluid active" id="OngoingOrders">
<PartTitle class="WM-Margin-T-20" TitleFa=" سفارشات در حال انجام " TitleEn=" Ongoing Orders " ThemeColor="Orange"></PartTitle>
<v-layout row wrap class="WM-Margin-T-20">
<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="orange darken-3" readonly></v-text-field>
<v-date-picker v-model="date" @input="DateFilterBefore = false" color="orange darken-3" 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="orange darken-3" readonly></v-text-field>
<v-date-picker v-model="date" @input="DateFilterAfter = false" color="orange darken-3" locale="fa-ir"></v-date-picker>
</v-menu>
</v-flex>
</v-layout>
</div>
<div class="tab-pane container fade" id="CompletedOrders"> </div>
</div>
</div>
</template>
<script>
import QuickLink from "../../components/Misc/QuickLink.vue";
import TabItem from "../../components/Misc/TabItem.vue";
import TabDropdownItem from "../../components/Misc/TabDropdownItem.vue";
import DoughnutChart from '../../components/Charts/DoughnutChart.vue';
export default {
components: {
QuickLink,
TabItem,
TabDropdownItem,
DoughnutChart
},
data: function () {
return {
date: new Date().toISOString().substr(0, 10),
DateFilterAfter: false,
DateFilterBefore: false,
Tabs: {
OngoingOrders: {
Type: 'TabItem',
NameFa: ' سفارشات در حال انجام ',
NameEn: ' Ongoing Orders ',
Status: 'Active',
Quantity: 5
},
CompletedOrders: {
Type: 'TabItem',
NameFa: ' سفارشات انجام شده ',
NameEn: ' Completed Orders ',
Quantity: 42
},
},
}
},
};
</script>

@ -1,6 +1,6 @@
<template>
<div class="wrapper" >
<div v-scroll-reveal="{ delay: 0, duration: 1000 }"><PartTitle TitleFa=" دسترسی سریع " TitleEn=" Quick Links " ThemeColor="LightGray"></PartTitle></div>
<div v-scroll-reveal="{ delay: 0, duration: 1000 }"><PartTitle TitleFa=" دسترسی سریع " TitleEn=" Quick Links " Color="grey lighten-2" TextColor="black--text"></PartTitle></div>
<div class="row row-eq-height mt-4 mb-4" v-scroll-reveal="{ delay: 300, duration: 1000 }">
<div class="col-sm-2">
<QuickLink Counter="65" TitleFa=" محصولات و خدمات " TitleEn=" My Products Services " ThemeColor="Red"></QuickLink>
@ -13,7 +13,7 @@
</div>
</div>
<div class="WM-Margin-T-55" v-scroll-reveal="{ delay: 600, duration: 1000 }">
<PartTitle TitleFa=" خلاصه ای از آمار " TitleEn=" Summery of Statistics " ThemeColor="Black"></PartTitle>
<PartTitle TitleFa=" خلاصه ای از آمار " TitleEn=" Summery of Statistics " Color="grey lighten-2" TextColor="black--text"></PartTitle>
</div>
<div class="row" v-scroll-reveal="{ delay: 900, duration: 1000 }">
@ -24,16 +24,12 @@
</template>
<script>
import PartTitle from "../components/Dividers/PartTitle.vue";
import QuickLink from "../components/Misc/QuickLink.vue";
import BarChart from '../components/Charts/BarChart.vue';
import LineChart from '../components/Charts/LineChart.vue';
export default {
components: {
PartTitle,
QuickLink,
BarChart,
LineChart

@ -0,0 +1,143 @@
<template>
<div class="container_fluid">
<PageTitle TitleFa=" مدیریت وبسایت " TitleEn=" Website Management " Color="green darken-3" TitleFaClass="WM-Color-Black"></PageTitle>
<!-- Nav tabs -->
<ul class="nav nav-tabs WM-Margin-T-20" id="WMTabs">
<template v-for="(Tab, index) in Tabs">
<component :is="Tab.Type" :TitleFa="Tab.NameFa" :TitleEn="Tab.NameEn" :Status="Tab.Status" :SubItems="Tab.SubItems" :TabContent="index" Color="Green"></component>
</template>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane container-fluid active" id="MembersClub">
<PartTitle class="WM-Margin-T-20" TitleFa=" باشگاه مشتریان " TitleEn=" Members Club " Color="green darken-3"></PartTitle>
<div class="row WM-Margin-T-20">
<v-flex xs12 sm4 md3>
<v-text-field label=" نام کاربر " color="green darken-3" prepend-icon="fas fa-user"></v-text-field>
</v-flex>
<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="green darken-3" readonly></v-text-field>
<v-date-picker v-model="date" @input="DateFilterBefore = false" color="green darken-3" 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="green darken-3" readonly></v-text-field>
<v-date-picker v-model="date" @input="DateFilterAfter = false" color="green darken-3" locale="fa-ir"></v-date-picker>
</v-menu>
</v-flex>
<v-flex xs12 sm4 md3>
<ButtonShodowed BtnClass="WM-Btn-Green" Icon="filter" Text=" فیلتر "></ButtonShodowed>
</v-flex>
</div>
<table class="table table-striped WM-Margin-T-20 WM-Align-R RTL">
<thead>
<tr>
<th style="width:5%">#</th>
<th style="width:20%"> نام و نام خانوادگی </th>
<th style="width:20%"> شماره تماس / ایمیل </th>
<th style="width:55%" class="WM-Align-C"> ابزارها </th>
</tr>
</thead>
<tbody>
<tr v-for="(User, index) in Users">
<td> {{ index }} </td>
<td> {{ User.Name }} </td>
<td class="WM-Align-L">
<div v-if="User.Email"> {{ User.Email }} </div>
<div v-if="User.CellNumber"> {{ User.CellNumber }} </div>
</td>
<td class="WM-Align-C">
<ButtonShodowed @click.native="$store.state.UserDetail = true" BtnClass="WM-Btn-Cyan WM-Btn-SM" Icon="info"></ButtonShodowed>
<ButtonShodowed @click.native="$store.state.UserRoles = true" BtnClass="WM-Btn-Black WM-Btn-SM" Icon="sliders"></ButtonShodowed>
<ButtonShodowed @click.native="$store.state.SendEmail = true" BtnClass="WM-Btn-Purple WM-Btn-SM" Icon="mail"></ButtonShodowed>
<ButtonShodowed @click.native="$store.state.SendSMS = true" BtnClass="WM-Btn-Orange WM-Btn-SM" Icon="message-text-outline"></ButtonShodowed>
<ButtonShodowed BtnClass="WM-Btn-Red WM-Btn-SM" Icon="trash"></ButtonShodowed>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tab-pane container fade" id="SpecialForms">...</div>
<div class="tab-pane container fade" id="Reservation">...</div>
</div>
<template>
<div class="text-xs-center ">
<UserDetailsModal></UserDetailsModal>
<UserRolesModal></UserRolesModal>
<SendEmailModal></SendEmailModal>
<SendSMSModal></SendSMSModal>
</div>
</template>
</div>
</template>
<script>
import TabItem from "../../components/Misc/TabItem.vue";
import TabDropdownItem from "../../components/Misc/TabDropdownItem.vue";
import UserDetailsModal from "../../components/Modals/UserDetailsModal.vue";
import UserRolesModal from "../../components/Modals/UserRolesModal.vue";
import SendEmailModal from "../../components/Modals/SendEmailModal.vue";
import SendSMSModal from "../../components/Modals/SendSMSModal.vue";
export default {
components: {
TabItem,
TabDropdownItem,
UserDetailsModal,
UserRolesModal,
SendEmailModal,
SendSMSModal
},
data: function () {
return {
date: new Date().toISOString().substr(0, 10),
DateFilterAfter: false,
DateFilterBefore: false,
Tabs: {
MembersClub: {
Type: 'TabItem',
NameFa: ' باشگاه مشتریان ',
NameEn: 'Members Club',
Status: 'Active',
},
SpecialForms: {
Type: 'TabDropdownItem',
NameFa: ' فرم های خاص من ',
NameEn: 'My Special Forms',
SubItems: {
Item1: { NameFa: ' فرم تماس با ما ', NameEn: 'Contact Us' },
Item2: { NameFa: ' فرم پیش ثبت نام من ', NameEn: 'My Pre SignUp Form' }
}
},
Reservation: {
Type: 'TabItem',
NameFa: ' رزرو وقت ',
NameEn: 'Reservation',
},
},
Users: {
1: { Name: ' علیرضا حسنی ', Email: 'Alireza-Hassani@outlook.com', CellNumber: '09127004945' },
4: { Name: ' فرید ساروی ', CellNumber: '09127476990' },
27:{ Name: ' سعید خاکبازان ', CellNumber: '09336541236' },
},
}
}
};
</script>

@ -1,183 +0,0 @@
<template>
<div class="container_fluid">
<PageTitle TitleFa=" مدیریت وبسایت " TitleEn=" Website Management " ThemeColor="Green" TitleFaClass="WM-Color-Black"></PageTitle>
<!-- Nav tabs -->
<ul class="nav nav-tabs WM-Margin-T-20" id="WMTabs">
<template v-for="(Tab, index) in Tabs">
<component :is="Tab.Type" :TitleFa="Tab.NameFa" :TitleEn="Tab.NameEn" :Status="Tab.Status" :SubItems="Tab.SubItems" :TabContent="index" Color="Green"></component>
</template>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane container-fluid active" id="MembersClub">
<PartTitle class="WM-Margin-T-20" TitleFa=" باشگاه مشتریان " TitleEn=" Members Club " ThemeColor="Green"></PartTitle>
<table class="table table-striped WM-Margin-T-20 WM-Align-R RTL">
<thead>
<tr>
<th style="width:5%">#</th>
<th style="width:20%"> نام و نام خانوادگی </th>
<th style="width:20%"> شماره تماس / ایمیل </th>
<th style="width:55%" class="WM-Align-C"> ابزارها </th>
</tr>
</thead>
<tbody>
<tr v-for="(User, index) in Users">
<td> {{ index }} </td>
<td> {{ User.Name }} </td>
<td class="WM-Align-L">
<div v-if="User.Email"> {{ User.Email }} </div>
<div v-if="User.CellNumber"> {{ User.CellNumber }} </div>
</td>
<td class="WM-Align-C">
<ButtonShodowed @click.native="UserDetails = true" BtnClass="WM-Btn-Cyan WM-Btn-SM" Icon="info"></ButtonShodowed>
<ButtonShodowed @click.native="UserRoles = true" BtnClass="WM-Btn-Black WM-Btn-SM" Icon="sliders"></ButtonShodowed>
<ButtonShodowed BtnClass="WM-Btn-Purple WM-Btn-SM" Icon="mail"></ButtonShodowed>
<ButtonShodowed BtnClass="WM-Btn-Orange WM-Btn-SM" Icon="message-text-outline"></ButtonShodowed>
<ButtonShodowed BtnClass="WM-Btn-Red WM-Btn-SM" Icon="trash"></ButtonShodowed>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tab-pane container fade" id="SpecialForms">...</div>
<div class="tab-pane container fade" id="Reservation">...</div>
</div>
<template>
<div class="text-xs-center">
<v-dialog v-model="UserDetails" width="90%" transition="slide-x-transition">
<v-card>
<v-card-title class=" grey lighten-3" primary-title>
<PartTitle class="WM-Margin-T-20" TitleFa=" اطلاعات کاربر " TitleEn=" Member's Info " ThemeColor="Cyan"></PartTitle>
</v-card-title>
<v-card-text>
<div class="row">
<div class="col-md-3 WM-Align-R">
<div class="WM-Font-14 WM-Color-Gray"><i class="WMi-user"></i> نام و نام خانوادگی </div>
<div class="WM-Font-20"> علیرضا حسنی </div>
</div>
<div class="col-md-3 WM-Align-R">
<div class="WM-Font-14 WM-Color-Gray"><i class="WMi-mail-alt"></i> آدرس آیمیل </div>
<div class="WM-Font-20"> Alireza-Hassani@outlook.com </div>
</div>
<div class="col-md-3 WM-Align-R">
<div class="WM-Font-14 WM-Color-Gray"><i class="WMi-phone"></i> شماره ی همراه </div>
<div class="WM-Font-20"> 09127004945 </div>
</div>
</div>
</v-card-text>
<v-divider></v-divider>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="cyan" depressed dark @click="UserDetails = false">
<v-icon dark right>check</v-icon> بسیار خب، ممنونم
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</div>
</template>
<template>
<div class="text-xs-center">
<v-dialog v-model="UserRoles" width="60%" transition="slide-x-transition">
<v-card>
<v-card-title class=" grey lighten-3" primary-title>
<PartTitle class="WM-Margin-T-20" TitleFa=" دسترسی های این کاربر " TitleEn=" Member's Roles " ThemeColor="Black"></PartTitle>
</v-card-title>
<v-card-text>
<div class="row">
<div class="col-md-1">
<i class="WMi-rss WM-Font-36"></i>
<div style="margin-top:-15px;"> اخبار </div>
</div>
</div>
</v-card-text>
<v-divider></v-divider>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="black" depressed dark @click="UserRoles = false">
<v-icon dark right>check</v-icon> ذخیره ی دسترسی ها
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</div>
</template>
</div>
</template>
<script>
import PartTitle from "../components/Dividers/PartTitle.vue";
import PageTitle from "../components/Dividers/PageTitle.vue";
import QuickLink from "../components/Misc/QuickLink.vue";
import TabItem from "../components/Misc/TabItem.vue";
import TabDropdownItem from "../components/Misc/TabDropdownItem.vue";
import ButtonShodowed from "../components/Inputs/ButtonShodowed.vue";
export default {
components: {
PartTitle,
PageTitle,
QuickLink,
TabItem,
TabDropdownItem,
ButtonShodowed
},
data: function () {
return {
UserDetails: false,
UserRoles: false,
Tabs: {
MembersClub: {
Type: 'TabItem',
NameFa: ' باشگاه مشتریان ',
NameEn: 'Members Club',
Status: 'Active',
},
SpecialForms: {
Type: 'TabDropdownItem',
NameFa: ' فرم های خاص من ',
NameEn: 'My Special Forms',
SubItems: {
Item1: { NameFa: ' فرم تماس با ما ', NameEn: 'Contact Us' },
Item2: { NameFa: ' فرم پیش ثبت نام من ', NameEn: 'My Pre SignUp Form' }
}
},
Reservation: {
Type: 'TabItem',
NameFa: ' رزرو وقت ',
NameEn: 'Reservation',
},
},
Users: {
1: { Name: ' علیرضا حسنی ', Email: 'Alireza-Hassani@outlook.com', CellNumber: '09127004945' },
4: { Name: ' فرید ساروی ', CellNumber: '09127476990' },
27:{ Name: ' سعید خاکبازان ', CellNumber: '09336541236' },
},
UserDetails: { Name: ' علیرضا حسنی ', Email: 'Alireza-Hassani@outlook.com', CellNumber: '09127004945' }
}
},
};
</script>

@ -3,8 +3,9 @@
<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>Laravel</title>
<title>WillaMall</title>
<!-- Styles -->

@ -11,6 +11,6 @@
|
*/
Route::get('/', function () {
Route::get('/{any?}', function () {
return view('welcome');
});

Loading…
Cancel
Save