add calculation module and fix many bugs

This commit is contained in:
Amir Mohamadi
2021-01-27 18:51:06 +03:30
parent 9433eb84ac
commit 08a17401aa
70 changed files with 7133 additions and 5528 deletions
+42 -47
View File
@@ -1,53 +1,48 @@
<template>
<footer class="footer">
<div class="container">
<div class="row">
<div class="col-12 col-md-8 mb-3 mb-md-0 links">
<logo/>
<div class="box">
<p><b>{{staticData.t1}}</b> <span>{{staticData.address}}</span></p>
<!-- <hr>-->
<p class="red">
<b>{{staticData.t2}}</b> <a :href="'tel:' + staticData.fax">{{staticData.tell}}</a>
&nbsp &nbsp - &nbsp &nbsp
<b>{{staticData.t3}}</b> <a :href="'tel:' + staticData.fax">{{staticData.fax}}</a>
</p>
</div>
</div>
<div class="col-12 col-md-4 social">
<ul class="social-links">
<li>
<a href="" target="_blank">
<em class="fab fa-facebook-f"></em>
</a>
</li>
<li>
<a href="" target="_blank">
<em class="fab fa-twitter"></em>
</a>
</li>
<li>
<a href="" target="_blank">
<em class="fab fa-telegram-plane"></em>
</a>
</li>
</ul>
<p>{{staticData.t5}}</p>
<p class="blue"><b>{{staticData.t4}}</b> <a :href="'mailto:' + staticData.email">{{staticData.email}}</a></p>
</div>
</div>
</div>
<div class="footer-bar"></div>
</footer>
<footer class="footer">
<div class="container">
<div class="row">
<div class="col-12 col-md-8 mb-3 mb-md-0 links">
<logo/>
<div class="box">
<p><b>{{ staticData.t1 }}</b> <span>{{ $store.state.global.address[$route.params.lang] }}</span></p>
<!-- <hr>-->
<p class="red">
<b>{{ staticData.t2 }}</b> <a :href="'tel:' + $store.state.global.tell">{{ $store.state.global.tell_view }}</a>
&nbsp &nbsp - &nbsp &nbsp
<b>{{ staticData.t3 }}</b> <a :href="'tel:' + $store.state.global.fax">{{ $store.state.global.fax_view }}</a>
</p>
</div>
</div>
<div class="col-12 col-md-4 social">
<ul class="social-links">
<li>
<a :href="$store.state.global.instagram_url" target="_blank">
<i class="fab fa-instagram"></i>
</a>
</li>
<li>
<a :href="$store.state.global.linkedin_url" target="_blank">
<i class="fab fa-linkedin-in"></i>
</a>
</li>
</ul>
<p>{{ staticData.t5 }}</p>
<p class="blue"><b>{{ staticData.t4 }}</b> <a :href="'mailto:' + $store.state.global.email">{{ $store.state.global.email }}</a></p>
</div>
</div>
</div>
<div class="footer-bar"></div>
</footer>
</template>
<script>
export default {
computed: {
staticData() {
return this.$store.state.staticData.footer[this.$route.params.lang]
}
}
}
export default {
computed: {
staticData() {
return this.$store.state.staticData.footer[this.$route.params.lang]
}
}
}
</script>
+43 -48
View File
@@ -1,53 +1,48 @@
<template>
<footer class="footer footer--home">
<div class="container">
<div class="row">
<div class="xol-12 col-md-8 mb-5 mb-md-0 links">
<div class="logo">
<logo/>
<span>{{staticData.t6}}</span>
</div>
<div class="box">
<p><b>{{staticData.t1}}</b> <span>{{staticData.address}}</span></p>
<hr>
<p class="red"><b>{{staticData.t2}}</b> <a :href="'tel:' + staticData.fax">{{staticData.tell}}</a></p>
<p class="red"><b>{{staticData.t3}}</b> <a :href="'tel:' + staticData.fax">{{staticData.fax}}</a></p>
<ul class="social-links red">
<li>
<a href="" target="_blank">
<em class="fab fa-facebook-f"></em>
</a>
</li>
<li>
<a href="" target="_blank">
<em class="fab fa-twitter"></em>
</a>
</li>
<li>
<a href="" target="_blank">
<em class="fab fa-telegram-plane"></em>
</a>
</li>
</ul>
<p class="blue"><b>{{staticData.t4}}</b> <a :href="'mailto:' + staticData.email">{{staticData.email}}</a></p>
</div>
</div>
<div class="xol-12 col-md-4 map">
<img src="~/assets/img/footer-map.jpg" alt="">
<p>{{staticData.t5}}</p>
</div>
</div>
</div>
<div class="footer-bar"></div>
</footer>
<footer class="footer footer--home">
<div class="container">
<div class="row">
<div class="xol-12 col-md-8 mb-5 mb-md-0 links">
<div class="logo">
<logo/>
<span>{{ staticData.t6 }}</span>
</div>
<div class="box">
<p><b>{{ staticData.t1 }}</b> <span>{{ $store.state.global.address[$route.params.lang] }}</span></p>
<hr>
<p class="red"><b>{{ staticData.t2 }}</b> <a :href="'tel:' + $store.state.global.tell">{{ $store.state.global.tell_view }}</a></p>
<p class="red"><b>{{ staticData.t3 }}</b> <a :href="'tel:' + $store.state.global.fax">{{ $store.state.global.fax_view }}</a></p>
<ul class="social-links red">
<li>
<a :href="$store.state.global.instagram_url" target="_blank">
<i class="fab fa-instagram"></i>
</a>
</li>
<li>
<a :href="$store.state.global.linkedin_url" target="_blank">
<i class="fab fa-linkedin-in"></i>
</a>
</li>
</ul>
<p class="blue"><b>{{ staticData.t4 }}</b> <a :href="'mailto:' + $store.state.global.email">{{ $store.state.global.email }}</a></p>
</div>
</div>
<div class="xol-12 col-md-4 map">
<img src="~/assets/img/footer-map.jpg" alt="">
<p>{{ staticData.t5 }}</p>
</div>
</div>
</div>
<div class="footer-bar"></div>
</footer>
</template>
<script>
export default {
computed: {
staticData() {
return this.$store.state.staticData.footer[this.$route.params.lang]
}
}
}
export default {
computed: {
staticData() {
return this.$store.state.staticData.footer[this.$route.params.lang]
}
}
}
</script>
+167 -167
View File
@@ -1,176 +1,176 @@
<template>
<header class="header">
<div class="lang-bar">
<a :href="catalog.file" target="_blank" class="catalog-download">
<span>{{staticData.catalog}}</span>
<span>&nbsp;</span>
<i class="fas fa-download"></i>
</a>
<div class="dropdown" @mouseenter="drop" @mouseleave="drop">
<div class="title">
<p class="current-lang">
<span>FA / EN</span>
<i class="fas fa-sort-down"></i>
</p>
</div>
<div class="dropMenu">
<div class="drop-item">
<nuxt-link :to="{to: this.$route.fullPath, params: {lang: 'fa'}}">FA</nuxt-link>
</div>
<div class="drop-item">
<nuxt-link :to="{to: this.$route.fullPath, params: {lang: 'en'}}">EN</nuxt-link>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<nav class="row align-items-center">
<!-- desktop -->
<div class="col-12 d-none d-md-block links">
<div class="container-fluid">
<ul class="row justify-content-start">
<nuxt-link :to="{name: 'lang',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a class="logo">
<Logo/>
</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{staticData.home}}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-about',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{staticData.about}}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-services',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{staticData.services}}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-products',params: {lang: $route.params.lang}}" tag="li" class="">
<a>{{staticData.products}}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-projects',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{staticData.projects}}</a>
</nuxt-link>
<li class="tech_info" @mouseenter="tech_info" @mouseleave="tech_info"
:class="$route.name === 'lang-tech-gDesign' ||
<header class="header">
<div class="lang-bar">
<a v-if="catalog && catalog.file" :href="catalog.file[$route.params.lang]" target="_blank" class="catalog-download">
<span>{{ staticData.catalog }}</span>
<span>&nbsp;</span>
<i class="fas fa-download"></i>
</a>
<div class="dropdown" @mouseenter="drop" @mouseleave="drop">
<div class="title">
<p class="current-lang">
<span>FA / EN</span>
<i class="fas fa-sort-down"></i>
</p>
</div>
<div class="dropMenu">
<div class="drop-item">
<nuxt-link :to="{to: this.$route.fullPath, params: {lang: 'fa'}}">FA</nuxt-link>
</div>
<div class="drop-item">
<nuxt-link :to="{to: this.$route.fullPath, params: {lang: 'en'}}">EN</nuxt-link>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<nav class="row align-items-center">
<!-- desktop -->
<div class="col-12 d-none d-md-block links">
<div class="container-fluid">
<ul class="row justify-content-start">
<nuxt-link :to="{name: 'lang',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a class="logo">
<Logo/>
</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{ staticData.home }}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-about',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{ staticData.about }}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-services',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{ staticData.services }}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-products',params: {lang: $route.params.lang}}" tag="li" class="">
<a>{{ staticData.products }}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-projects',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{ staticData.projects }}</a>
</nuxt-link>
<li class="tech_info" @mouseenter="tech_info" @mouseleave="tech_info"
:class="$route.name === 'lang-tech-gDesign' ||
$route.name === 'lang-tech-gStandard' ||
$route.name === 'lang-tech-gTech' ||
$route.name === 'lang-tech-gUsage' ? 'active' : null">
<a>{{staticData.tech_info}}</a>
<div class="drop-down">
<ul>
<li :class="$route.name === 'lang-tech-gTech' ? 'sub-menu-active' : null">
<nuxt-link :to="{name: 'lang-tech-gTech',params: {lang: $route.params.lang}}">{{staticData.ti_1}}</nuxt-link>
</li>
<li :class="$route.name === 'lang-tech-gStandard' ? 'sub-menu-active' : null">
<nuxt-link :to="{name: 'lang-tech-gStandard',params: {lang: $route.params.lang}}">{{staticData.ti_2}}</nuxt-link>
</li>
<li :class="$route.name === 'lang-tech-gDesign' ? 'sub-menu-active' : null">
<nuxt-link :to="{name: 'lang-tech-gDesign',params: {lang: $route.params.lang}}">{{staticData.ti_3}}</nuxt-link>
</li>
<li :class="$route.name === 'lang-tech-gUsage' ? 'sub-menu-active' : null">
<nuxt-link :to="{name: 'lang-tech-gUsage',params: {lang: $route.params.lang}}">{{staticData.ti_4}}</nuxt-link>
</li>
</ul>
</div>
</li>
<nuxt-link :to="{name: 'lang-blog',params: {lang: $route.params.lang}}" tag="li" class="">
<a>{{staticData.blog}}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-contact',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{staticData.contact}}</a>
</nuxt-link>
</ul>
</div>
</div>
<!-- mobile -->
<div class="col-12 d-md-none links mobile">
<div class="container-fluid">
<ul class="row">
<li class="col">
<nuxt-link :to="{name: 'lang',params: {lang: $route.params.lang}}" exact class="logo">
<Logo/>
</nuxt-link>
</li>
<li class="col menu">
<div id="menuBtn" @click="offCanvas">
<div class="bars b1"></div>
<div class="bars b2"></div>
<div class="bars b3"></div>
</div>
</li>
</ul>
</div>
</div>
</nav>
</div>
</header>
<a>{{ staticData.tech_info }}</a>
<div class="drop-down">
<ul>
<li :class="$route.name === 'lang-tech-gTech' ? 'sub-menu-active' : null">
<nuxt-link :to="{name: 'lang-tech-gTech',params: {lang: $route.params.lang}}">{{ staticData.ti_1 }}</nuxt-link>
</li>
<li :class="$route.name === 'lang-tech-gStandard' ? 'sub-menu-active' : null">
<nuxt-link :to="{name: 'lang-tech-gStandard',params: {lang: $route.params.lang}}">{{ staticData.ti_2 }}</nuxt-link>
</li>
<li :class="$route.name === 'lang-tech-gDesign' ? 'sub-menu-active' : null">
<nuxt-link :to="{name: 'lang-tech-gDesign',params: {lang: $route.params.lang}}">{{ staticData.ti_3 }}</nuxt-link>
</li>
<li :class="$route.name === 'lang-tech-gUsage' ? 'sub-menu-active' : null">
<nuxt-link :to="{name: 'lang-tech-gUsage',params: {lang: $route.params.lang}}">{{ staticData.ti_4 }}</nuxt-link>
</li>
</ul>
</div>
</li>
<nuxt-link :to="{name: 'lang-blog',params: {lang: $route.params.lang}}" tag="li" class="">
<a>{{ staticData.blog }}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-contact',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{ staticData.contact }}</a>
</nuxt-link>
</ul>
</div>
</div>
<!-- mobile -->
<div class="col-12 d-md-none links mobile">
<div class="container-fluid">
<ul class="row">
<li class="col">
<nuxt-link :to="{name: 'lang',params: {lang: $route.params.lang}}" exact class="logo">
<Logo/>
</nuxt-link>
</li>
<li class="col menu">
<div id="menuBtn" @click="offCanvas">
<div class="bars b1"></div>
<div class="bars b2"></div>
<div class="bars b3"></div>
</div>
</li>
</ul>
</div>
</div>
</nav>
</div>
</header>
</template>
<script>
export default {
data() {
return {
catalog: null
}
},
async fetch() {
let catalog = await this.$axios.get('/api/public/catalog')
this.catalog = catalog.data
},
computed: {
staticData() {
return this.$store.state.staticData.header[this.$route.params.lang]
},
offCanvasLiTL() {
if (process.server) return null
else return this.$gsap.timeline({delay: 0.3, paused: true})
.fromTo($('.offCanvas ul li'), {
x: this.$route.params.lang === 'fa' ? 10 : -10,
opacity: 0
}, {
x: 0,
opacity: 1,
duration: 0.4,
stagger: 0.03
})
}
},
methods: {
drop() {
$('.dropdown').toggleClass('dropdown-active')
},
tech_info() {
const el = $('.tech_info .drop-down')
if (el.height() === 0) {
el.css({height: $('.tech_info .drop-down ul').height()})
} else {
el.css({height: 0})
}
},
offCanvas() {
if ($('.offCanvas').hasClass('active')) this.offCanvasLiTL.reverse()
else this.offCanvasLiTL.play()
$('#menuBtn').toggleClass('close')
$('.offCanvas').toggleClass('active')
$('body').toggleClass('offCanvas-active')
}
},
mounted() {
/////////////////////////////////////////////////////////// small header
$(window).scroll(function (e) {
if ($(window).scrollTop() > 50) {
$('.header,.offCanvas').addClass('header-small')
} else {
$('.header,.offCanvas').removeClass('header-small')
}
})
/////////////////////////////////// offCanvas menu links
$('.offCanvas ul li').click(() => {
this.offCanvas()
})
$('.header .lang-bar a').click(() => {
if ($('.offCanvas').hasClass('active')) this.offCanvas()
})
export default {
data() {
return {
catalog: null
}
},
async fetch() {
let catalog = await this.$axios.get('/api/public/catalog')
this.catalog = catalog.data
},
computed: {
staticData() {
return this.$store.state.staticData.header[this.$route.params.lang]
},
offCanvasLiTL() {
if (process.server) return null
else return this.$gsap.timeline({delay: 0.3, paused: true})
.fromTo($('.offCanvas ul li'), {
x: this.$route.params.lang === 'fa' ? 10 : -10,
opacity: 0
}, {
x: 0,
opacity: 1,
duration: 0.4,
stagger: 0.03
})
}
},
methods: {
drop() {
$('.dropdown').toggleClass('dropdown-active')
},
tech_info() {
const el = $('.tech_info .drop-down')
if (el.height() === 0) {
el.css({height: $('.tech_info .drop-down ul').height()})
} else {
el.css({height: 0})
}
}
},
offCanvas() {
if ($('.offCanvas').hasClass('active')) this.offCanvasLiTL.reverse()
else this.offCanvasLiTL.play()
$('#menuBtn').toggleClass('close')
$('.offCanvas').toggleClass('active')
$('body').toggleClass('offCanvas-active')
}
},
mounted() {
/////////////////////////////////////////////////////////// small header
$(window).scroll(function (e) {
if ($(window).scrollTop() > 50) {
$('.header,.offCanvas').addClass('header-small')
} else {
$('.header,.offCanvas').removeClass('header-small')
}
})
/////////////////////////////////// offCanvas menu links
$('.offCanvas ul li').click(() => {
this.offCanvas()
})
$('.header .lang-bar a').click(() => {
if ($('.offCanvas').hasClass('active')) this.offCanvas()
})
}
}
</script>
+37 -37
View File
@@ -1,42 +1,42 @@
<template>
<ul>
<admin-aside-item icon="fas fa-home" :link="{name: 'admin'}" text="صفحه اصلی"/>
<admin-aside-item icon="fas fa-presentation" :link="{name: 'admin-slider'}" text="اسلایدر"/>
<admin-aside-item icon="fa fa-gift" text="محصولات" :hasChild="true">
<admin-aside-item :link="{name: 'admin-products'}" text="لیست محصولات"/>
<admin-aside-item :link="{name: 'admin-products-category'}" text="دسته بندی محصولات"/>
</admin-aside-item>
<admin-aside-item icon="fa fa-newspaper" text="بلاگ" :hasChild="true">
<admin-aside-item :link="{name: 'admin-blog'}" text="لیست بلاگ"/>
<admin-aside-item :link="{name: 'admin-blog-category'}" text="دسته بندی بلاگ"/>
</admin-aside-item>
<admin-aside-item icon="fas fa-bags-shopping" :link="{name: 'admin-projects'}" text="پروژه ها"/>
<admin-aside-item icon="fas fa-history" :link="{name: 'admin-history'}" text="تاریخچه"/>
<admin-aside-item icon="fas fa-envelope" :badge="$store.state.admin.unread" :link="{name: 'admin-messages'}" text="پیام های ارتباط با ما"/>
<admin-aside-item icon="fas fa-file-pdf" :link="{name: 'admin-catalog'}" text="آپلود فایل کاتالوگ"/>
</ul>
<ul>
<admin-aside-item icon="fas fa-home" :link="{name: 'admin'}" text="صفحه اصلی"/>
<admin-aside-item icon="fas fa-presentation" :link="{name: 'admin-slider'}" text="اسلایدر"/>
<admin-aside-item icon="fa fa-gift" text="محصولات" :hasChild="true">
<admin-aside-item :link="{name: 'admin-products'}" text="لیست محصولات"/>
<admin-aside-item :link="{name: 'admin-products-category'}" text="دسته بندی محصولات"/>
</admin-aside-item>
<admin-aside-item icon="fa fa-newspaper" text="بلاگ" :hasChild="true">
<admin-aside-item :link="{name: 'admin-blog'}" text="لیست بلاگ"/>
<admin-aside-item :link="{name: 'admin-blog-category'}" text="دسته بندی بلاگ"/>
</admin-aside-item>
<admin-aside-item icon="fas fa-bags-shopping" :link="{name: 'admin-projects'}" text="پروژه ها"/>
<admin-aside-item icon="fas fa-history" :link="{name: 'admin-history'}" text="تاریخچه"/>
<admin-aside-item icon="fas fa-envelope" :badge="$store.state.admin.unread" :link="{name: 'admin-messages'}" text="پیام های ارتباط با ما"/>
<admin-aside-item icon="fas fa-file-pdf" :link="{name: 'admin-catalog'}" text="آپلود فایل کاتالوگ"/>
</ul>
</template>
<script>
export default {
mounted() {
if (this.$auth.loggedIn) {
this.$axios.get('/api/private/contact')
.then(response => {
let unread = response.data.filter(item => {
return !item.read
})
this.$store.commit('admin/unreadCount', unread.length)
})
}
}
}
export default {
mounted() {
if (this.$auth.loggedIn) {
this.$axios.get('/api/private/contact')
.then(response => {
let unread = response.data.filter(item => {
return !item.read
})
this.$store.commit('admin/unreadCount', unread.length)
})
}
}
}
</script>