Procházet zdrojové kódy

update styles and footer

ali před 3 roky
rodič
revize
7f9bd67431

binární
public/assets/images/web/digitalnamad.jpg


binární
public/assets/images/web/enamad.jpg


+ 7 - 0
public/assets/images/web/social/aparat.svg

@@ -0,0 +1,7 @@
+<svg id="aparat" xmlns="http://www.w3.org/2000/svg" width="27" height="27" viewBox="0 0 27 27">
+  <path id="Path_1925" data-name="Path 1925" d="M179.761,142.41l-2.429-.631a4.108,4.108,0,0,0-5.023,2.916l-.62,2.3A12.587,12.587,0,0,1,179.761,142.41Z" transform="translate(-168.335 -141.642)" fill="#aaa095"/>
+  <path id="Path_1926" data-name="Path 1926" d="M170.261,151.8l-.6,2.251a4.107,4.107,0,0,0,2.916,5.022l2.324.62A12.575,12.575,0,0,1,170.261,151.8Z" transform="translate(-169.525 -136.063)" fill="#aaa095"/>
+  <path id="Path_1927" data-name="Path 1927" d="M185.9,144.454l-2.617-.694a12.581,12.581,0,0,1,4.813,8.423l.719-2.717A4.107,4.107,0,0,0,185.9,144.454Z" transform="translate(-161.954 -140.479)" fill="#aaa095"/>
+  <path id="Path_1928" data-name="Path 1928" d="M179.521,160.28l2.5.675a4.105,4.105,0,0,0,5.023-2.916l.706-2.655A12.574,12.574,0,0,1,179.521,160.28Z" transform="translate(-164.022 -134.095)" fill="#aaa095"/>
+  <path id="Path_1930" data-name="Path 1930" d="M182.4,142.778a11.737,11.737,0,1,0,11.743,11.737A11.74,11.74,0,0,0,182.4,142.778Zm-6.65,5.857h0a3.352,3.352,0,1,1,.515,2.512,3.353,3.353,0,0,1-.515-2.512Zm4.878,10.136a3.352,3.352,0,1,1-.515-2.516,3.352,3.352,0,0,1,.515,2.516Zm1.423-2.713a1.489,1.489,0,1,1,1.121-.231,1.489,1.489,0,0,1-1.121.231Zm7,4.33a3.35,3.35,0,1,1-.515-2.514,3.353,3.353,0,0,1,.515,2.514Zm.294-6.722a3.342,3.342,0,1,1,1.411-2.13,3.346,3.346,0,0,1-1.411,2.13Z" transform="translate(-168.901 -141.018)" fill="#aaa095"/>
+</svg>

+ 5 - 0
public/assets/images/web/social/bale.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
+  <g id="bale" transform="translate(0.283 0.5)">
+    <path id="Subtraction_1" data-name="Subtraction 1" d="M13.5,27a13.6,13.6,0,0,1-2.721-.274,13.429,13.429,0,0,1-4.827-2.031,13.539,13.539,0,0,1-4.891-5.94,13.412,13.412,0,0,1-.787-2.534A13.585,13.585,0,0,1,0,13.5V1.536A1.482,1.482,0,0,1,.461.452,1.521,1.521,0,0,1,.943.142,1.483,1.483,0,0,1,2.357.3L5.605,2.548A13.438,13.438,0,0,1,13.5,0a13.594,13.594,0,0,1,2.721.274,13.418,13.418,0,0,1,4.827,2.031,13.537,13.537,0,0,1,4.891,5.94,13.436,13.436,0,0,1,.787,2.534,13.629,13.629,0,0,1,0,5.441,13.428,13.428,0,0,1-2.031,4.827,13.539,13.539,0,0,1-5.939,4.891,13.444,13.444,0,0,1-2.534.787A13.6,13.6,0,0,1,13.5,27ZM7.492,10.876a2.637,2.637,0,0,0-1.864,4.5L9.858,19.6a2.538,2.538,0,0,0,3.587,0l7.876-7.876a2.636,2.636,0,1,0-3.728-3.729l-5.945,5.945L9.356,11.648A2.618,2.618,0,0,0,7.492,10.876Z" transform="translate(0.217 0)" fill="#aaa095" stroke="rgba(0,0,0,0)" stroke-width="1"/>
+  </g>
+</svg>

+ 5 - 0
public/assets/images/web/social/eta.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="28.001" height="28" viewBox="0 0 28.001 28">
+  <g id="eta" transform="translate(0.783 0.5)">
+    <path id="Subtraction_2" data-name="Subtraction 2" d="M20,27H7a7.008,7.008,0,0,1-7-7V7A7.008,7.008,0,0,1,7,0H20a7.008,7.008,0,0,1,7,7v4.742a40.112,40.112,0,0,0-5.081,4.586c-.837.83-1.5,1.485-1.811,1.746a8.362,8.362,0,0,1-4.516,1.892,3.052,3.052,0,0,1-2.081-.752.018.018,0,0,0-.012,0,.021.021,0,0,0-.013,0,3.819,3.819,0,0,0-1.2,3.24.008.008,0,0,1-.007.009c-1.9-.711-3.816-2.543-3.539-4.885a.038.038,0,0,0-.021-.039,3.387,3.387,0,0,1-1.77-2.774c-.144-1.718.908-3.448,2.962-4.872a10.866,10.866,0,0,1,5.949-2.147,5.256,5.256,0,0,1,3.723,1.422,1.466,1.466,0,0,1,.581,1.025,1.286,1.286,0,0,1-.54.91,6.752,6.752,0,0,1-4.64,1.775,8.806,8.806,0,0,1-2.01-.244,1.454,1.454,0,0,1-.988-.769,2.466,2.466,0,0,1-.135-1.811.034.034,0,0,0,0-.031.036.036,0,0,0-.029-.016l-.014,0a3.844,3.844,0,0,0-2.228,2.433,3.006,3.006,0,0,0,.858,2.65,4.8,4.8,0,0,0-.828,3.872,3.659,3.659,0,0,0,1.83,2.411h0s.006,0,.007,0c.285-2.123,3.052-5.109,6.567-6s4.83-4.3,4.554-7.093c-.271-2.757-1.652-6.044-6.69-6.044-2.223,0-4.712,1.208-7.007,3.4a16.327,16.327,0,0,0-4.2,6.271c-1.1,3.483-2.607,8.253,2.579,11.929a8.908,8.908,0,0,0,5.224,1.727A11.52,11.52,0,0,0,21.2,20.9c.98-1.264,1.788-2.351,2.5-3.311A20.907,20.907,0,0,1,27,13.666V20A7.008,7.008,0,0,1,20,27Z" transform="translate(-0.283 0)" fill="#aaa095" stroke="rgba(0,0,0,0)" stroke-width="1"/>
+  </g>
+</svg>

+ 6 - 0
public/assets/images/web/social/telegram.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="31.014" height="26.909" viewBox="0 0 31.014 26.909">
+  <g id="telegram" transform="translate(-0.001 -0.001)">
+    <path id="Path_29094" data-name="Path 29094" d="M28.173,34.08a3.323,3.323,0,0,1,.844-.213,1.876,1.876,0,0,1,1.593.708,1.933,1.933,0,0,1,.4,1.075v.193a6.569,6.569,0,0,1-.153.757Q28.193,47.946,25.524,59.29a1.911,1.911,0,0,1-1.266,1.394,1.884,1.884,0,0,1-1.775-.354q-2.917-2.379-5.827-4.765-2.474,1.849-4.946,3.7,1.011-3.671,2.03-7.34c.041-.165.19-.264.3-.385l9.445-9.876a1.588,1.588,0,0,0,.578-.89.906.906,0,0,0-.8-.988,1.551,1.551,0,0,0-.926.312Q14.467,44.466,6.6,48.833q-2.736-1.2-5.472-2.4A1.918,1.918,0,0,1,0,44.907v-.285a1.9,1.9,0,0,1,1.322-1.689Q14.747,38.5,28.173,34.08Z" transform="translate(0.001 -33.862)" fill="#aaa095"/>
+    <path id="Path_29095" data-name="Path 29095" d="M132.44,213.606q5.155-2.872,10.32-5.726-3,3.143-6.007,6.283a1.083,1.083,0,0,0-.282.507c-.714,2.568-1.417,5.14-2.136,7.707Q133.387,217.991,132.44,213.606Z" transform="translate(-124.417 -197.338)" fill="#aaa095"/>
+  </g>
+</svg>

+ 5 - 0
public/assets/images/web/social/youtube.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="28" height="20" viewBox="0 0 28 20">
+  <g id="youtube" transform="translate(0)">
+    <path id="Path_29099" data-name="Path 29099" d="M3.251,76.273a17.789,17.789,0,0,1,4.517-.436H18.539c1.478.008,2.96-.036,4.433.115a7.961,7.961,0,0,1,2.873.754,3.557,3.557,0,0,1,1.723,2.077A14.819,14.819,0,0,1,28,83.045v5.464a15.7,15.7,0,0,1-.34,3.354,5.067,5.067,0,0,1-1.138,2.3,4.8,4.8,0,0,1-2.554,1.361,18.33,18.33,0,0,1-4.011.312H9.9a29.753,29.753,0,0,1-5.308-.248A6.184,6.184,0,0,1,2,94.514,4.291,4.291,0,0,1,.628,92.686,11.569,11.569,0,0,1,0,88.568V82.98a21.514,21.514,0,0,1,.176-3.272,4.281,4.281,0,0,1,1.059-2.332,4.541,4.541,0,0,1,2.016-1.1m8.138,5.472a.923.923,0,0,0-.606.866c-.007,2,0,4,0,6a1.29,1.29,0,0,0,.1.615.906.906,0,0,0,1.254.386q2.787-1.473,5.57-2.952a1.488,1.488,0,0,0,.582-.425.929.929,0,0,0,.017-1.042,1.067,1.067,0,0,0-.423-.355q-2.862-1.507-5.722-3.015A.94.94,0,0,0,11.389,81.745Z" transform="translate(0 -75.836)" fill="#aaa095"/>
+  </g>
+</svg>

+ 1 - 1
src/boot/axios.js

@@ -95,7 +95,7 @@ const AxiosHooks = (function () {
 
   function deAuthorizeUser(router, store) {
     store.dispatch('Auth/logOut', { redirectTo: false, clearRedirectTo: false })
-    const loginRouteName = 'login'
+    const loginRouteName = 'Login'
     const currentRoute = (router?.currentRoute?._value) ? router.currentRoute._value : (router?.history?.current) ? router.history.current : null
     if (currentRoute && currentRoute.name === loginRouteName) {
       return

+ 9 - 9
src/components/Auth/LoginStep.vue

@@ -93,18 +93,18 @@ export default {
     },
 
     redirectTo () {
-      let redirectTo = window.localStorage.getItem('redirectTo')
-      if (!redirectTo) {
-        redirectTo = 'Admin.User.Index'
-      }
+      let redirectTo = this.$store.getters['Auth/redirectTo']
+      // if (!redirectTo) {
+      //   redirectTo = 'Admin.User.Index'
+      // }
 
-      if (this.user.canSeeAdminPanel()) {
-        redirectTo = 'Admin.User.Index'
-      } else {
-        redirectTo = 'Public.Home'
+      if (!redirectTo && this.user.canSeeAdminPanel()) {
+        redirectTo = { name: 'Admin.User.Index' }
+      } else if (!redirectTo) {
+        redirectTo = { name: 'Public.Home' }
       }
 
-      this.$router.push({ name: redirectTo })
+      this.$router.push(redirectTo)
     },
 
     login () {

+ 20 - 0
src/components/Template/Footer/FooterTemplate.vue

@@ -0,0 +1,20 @@
+<template>
+  <div v-if="type === 'main'"
+       class="FooterTemplate">
+    <main-footer />
+  </div>
+  <div v-else />
+</template>
+
+<script>
+import MainFooter from 'src/components/Template/Footer/MainFooter.vue'
+
+export default {
+  name: 'FooterTemplate',
+  components: { MainFooter },
+  props: {
+    type: [String, Boolean, null],
+    default: () => 'main'
+  }
+}
+</script>

+ 193 - 0
src/components/Template/Footer/MainFooter.vue

@@ -0,0 +1,193 @@
+<template>
+  <div class="MainFooter">
+    <div class="contents row">
+      <div class="column col-md-4 col-12">
+        <div class="col-title">تماس با ما</div>
+        <div class="col-content">
+          <div class="col-items">
+            <div class="col-item">
+              <q-icon name="isax:location" />
+              تهـران | خیـابان فلسطیـن | نبش بزرگمهـر سـاختمان 141 طبـقه 5 | واحـد 49
+            </div>
+            <div class="col-item">
+              <q-icon name="phone" />
+              021-66499793
+            </div>
+            <div class="col-item">
+              <q-icon name="mail" />
+              info@palizvani.com
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="column col-md-4 col-12">
+        <div class="col-title">راهنما</div>
+        <div class="col-content">
+          <div class="col-items">
+            <div class="col-item">
+              درباره ما
+            </div>
+            <div class="col-item">
+              قوانین و مقررات
+            </div>
+            <div class="col-item">
+              ثبت شکایات
+            </div>
+            <div class="col-item">
+              سوالات متداول
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="column col-md-4 col-12">
+        <div class="col-title">شبکه‌های اجتماعی</div>
+        <div class="col-content">
+          <div class="col-items social-row">
+            <div class="col-item social-row">
+              <div class="social-item">
+                <q-img src="/assets/images/web/social/eta.svg"
+                       width="27px"
+                       height="27px" />
+              </div>
+              <div class="social-item">
+                <q-img src="/assets/images/web/social/bale.svg"
+                       width="27px"
+                       height="27px" />
+              </div>
+              <div class="social-item">
+                <q-img src="/assets/images/web/social/telegram.svg"
+                       width="27px"
+                       height="27px" />
+              </div>
+              <div class="social-item">
+                <q-img src="/assets/images/web/social/aparat.svg"
+                       width="27px"
+                       height="27px" />
+              </div>
+              <div class="social-item">
+                <q-img src="/assets/images/web/social/youtube.svg"
+                       width="27px"
+                       height="27px" />
+              </div>
+              <div class="namad-row">
+                <div class="namad-item">
+                  <q-img src="/assets/images/web/digitalnamad.jpg"
+                         width="135px" />
+                </div>
+                <div class="namad-item">
+                  <q-img src="/assets/images/web/enamad.jpg"
+                         width="135px" />
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="copy-right">
+      کلیه حقوق مادی و معنوی این وب سایت نزد بنیاد شهید پالیزوانی محفوظ است
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'MainFooter'
+}
+</script>
+
+<style scoped lang="scss">
+.MainFooter {
+  background: #F6F6F6;
+  .contents {
+    max-width: 1200px;
+    width: 100%;
+    margin-left: auto;
+    margin-right: auto;
+    padding-top: 39px;
+    padding-bottom: 48px;
+    .column {
+      .col-title {
+        font-size: 16px;
+        font-weight: bold;
+        letter-spacing: 0;
+        color: #212121;
+        margin-bottom: 33px;
+      }
+      .col-content {
+        .col-items {
+          max-width: 280px;
+          &.social-row {
+            max-width: 380px;
+          }
+          .col-item {
+            margin-bottom: 33px;
+            font-size: 16px;
+            font-weight: normal;
+            letter-spacing: -0.4px;
+            color: #212121;
+            &.social-row {
+              display: flex;
+              flex-flow: row;
+              justify-content: flex-start;
+              flex-wrap: wrap;
+              .social-item {
+                width: 50px;
+                height: 45px;
+                background: #FFFFFF;
+                border-radius: 10px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                margin-right: 10px;
+                cursor: pointer;
+                .q-img {
+                  width: 27px;
+                  height: 27px;
+                }
+              }
+              .namad-row {
+                display: flex;
+                flex-flow: row;
+                justify-content: flex-start;
+                width: 100%;
+                margin-top: 33px;
+                .namad-item {
+                  width: 184px;
+                  height: 165px;
+                  background: #FFFFFF;
+                  border-radius: 10px;
+                  display: flex;
+                  align-items: center;
+                  justify-content: center;
+                  margin-right: 10px;
+                  cursor: pointer;
+                  .q-img {
+                    width: 135px;
+                  }
+                }
+              }
+            }
+            .q-icon {
+              color: #AAA095;
+              margin-right: 9px;
+            }
+          }
+        }
+      }
+    }
+  }
+  .copy-right {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    padding-top: 20px;
+    padding-bottom: 23px;
+    background: #FFFFFF;
+    text-align: center;
+    font: normal normal normal 16px/21px;
+    letter-spacing: 0;
+    color: #212121;
+  }
+}
+</style>

+ 1 - 1
src/components/Template/Header/AdminPanelHeader.vue

@@ -225,7 +225,7 @@ export default {
   }
 }
 </style>
-<style lang="scss">
+<style scoped lang="scss">
 .header-inside {
   height: 100%;
   .admin-top-menu {

+ 13 - 77
src/components/Template/Header/MainHeader.vue

@@ -1,78 +1,7 @@
 <template>
-  <div class="header-inside col">
-    <div v-if="isAdminPage || isProfilePage"
-         class="admin-top-menu">
-      <div class="logo">
-        <router-link :to="{name: 'Public.Home'}">
-          <q-img class="logo-image"
-                 src="/assets/images/admin/layout/admin-logo.png" />
-        </router-link>
-      </div>
-      <div class="top-menu-items">
-        <div class="right-side">
-          <q-btn flat
-                 :to="{name: 'Public.Home'}">
-            <svg xmlns="http://www.w3.org/2000/svg"
-                 width="20.5"
-                 height="21.505"
-                 viewBox="0 0 20.5 21.505">
-              <g id="Home"
-                 transform="translate(0 0)">
-                <path id="Fill_1"
-                      data-name="Fill 1"
-                      d="M16.277,21.506H14.353A1.973,1.973,0,0,1,12.4,19.536V16.46a.677.677,0,0,0-.684-.669H8.831a.675.675,0,0,0-.674.669v3.066a.742.742,0,0,1-.031.215,1.983,1.983,0,0,1-1.979,1.764H4.223A4.211,4.211,0,0,1,0,17.317V8.6A3.158,3.158,0,0,1,1.259,6.1L7.794.855a3.913,3.913,0,0,1,4.88,0L19.256,6.1A3.154,3.154,0,0,1,20.5,8.582v8.734A4.211,4.211,0,0,1,16.277,21.506ZM8.826,14.291h2.891A2.179,2.179,0,0,1,13.9,16.46v3.076a.472.472,0,0,0,.47.469h1.906A2.709,2.709,0,0,0,19,17.317V8.593a1.672,1.672,0,0,0-.667-1.309L11.74,2.026a2.416,2.416,0,0,0-3.01,0L2.181,7.282A1.684,1.684,0,0,0,1.5,8.61v8.707a2.709,2.709,0,0,0,2.723,2.688H6.147a.486.486,0,0,0,.491-.479.766.766,0,0,1,.019-.171v-2.9A2.182,2.182,0,0,1,8.826,14.291Z"
-                      transform="translate(0 0)"
-                      fill="#aaa095" />
-              </g>
-            </svg>
-            صفحه اصلی
-          </q-btn>
-        </div>
-        <div class="left-side">
-          <q-btn flat>
-            <svg id="_000000ff"
-                 data-name="#000000ff"
-                 xmlns="http://www.w3.org/2000/svg"
-                 width="30"
-                 height="30"
-                 viewBox="0 0 30 30">
-              <path id="Path_29101"
-                    data-name="Path 29101"
-                    d="M8.807,0H21.19a9.015,9.015,0,0,1,8.266,5.926A9.2,9.2,0,0,1,30,8.811V21.135a9.019,9.019,0,0,1-6.97,8.631A9.442,9.442,0,0,1,21.19,30H8.811A9.013,9.013,0,0,1,0,21.133V8.81A9.021,9.021,0,0,1,8.807,0M8.291,2.034A7.012,7.012,0,0,0,2,9.025q0,6.006,0,12.011A7.016,7.016,0,0,0,9.026,28q6,0,12.007,0A7.014,7.014,0,0,0,28,21.035Q28,15,28,8.961a7.012,7.012,0,0,0-5.962-6.885A12.06,12.06,0,0,0,20.154,2H9.434A10.63,10.63,0,0,0,8.291,2.034Z"
-                    fill="#aaa095" />
-              <path id="Path_29102"
-                    data-name="Path 29102"
-                    d="M159.237,85.32A6,6,0,1,1,155.26,87.2a6.006,6.006,0,0,1,3.977-1.876m-.343,2.06a4,4,0,1,0,2.664.429A4.011,4.011,0,0,0,158.895,87.38Z"
-                    transform="translate(-144.628 -80.308)"
-                    fill="#aaa095" />
-              <path id="Path_29103"
-                    data-name="Path 29103"
-                    d="M124.8,324.32c1.223-.023,2.446-.006,3.669-.01a8.967,8.967,0,0,1,6.065,2.409,1,1,0,0,1,.218,1.1.976.976,0,0,1-1.124.578,1.694,1.694,0,0,1-.749-.488,6.993,6.993,0,0,0-4.412-1.622q-1.64,0-3.281,0a6.992,6.992,0,0,0-4.654,1.845,1.041,1.041,0,0,1-.792.32,1,1,0,0,1-.685-1.682A8.994,8.994,0,0,1,124.8,324.32Z"
-                    transform="translate(-111.831 -305.305)"
-                    fill="#aaa095" />
-            </svg>
-            {{ user.fullname() }}
-            <q-menu>
-              <q-list style="min-width: 100px">
-                <q-item v-if="user.canSeeUserProfilePanel()"
-                        v-close-popup
-                        clickable
-                        :to="{name: 'UserPanel.Profile.UserInfo'}">
-                  <q-item-section>پروفایل</q-item-section>
-                </q-item>
-                <q-item v-close-popup
-                        clickable
-                        @click="logOut">
-                  <q-item-section>خروج</q-item-section>
-                </q-item>
-              </q-list>
-            </q-menu>
-          </q-btn>
-        </div>
-      </div>
-    </div>
-    <div v-else
-         class="user-top-menu"
+  <div class="header-inside col"
+       :class="{'isHomePage': isHomePage}">
+    <div class="user-top-menu"
          :class="{'isHomePage': isHomePage}">
       <div class="right-side">
         <q-toolbar>
@@ -81,7 +10,7 @@
                  dense
                  class="top-menu-item top-menu-logo"
                  :to="{name: 'Public.Home'}">
-            <q-img src="assets/images/web/user-top-menu-logo.png"
+            <q-img src="/assets/images/web/user-top-menu-logo.png"
                    width="53" />
           </q-btn>
           <q-btn stretch
@@ -338,8 +267,15 @@ export default {
   }
 }
 </style>
-<style lang="scss">
+<style scoped lang="scss">
 .header-inside {
+  height: 120px;
+  background-color: #FBF4EA;
+  color: #212121;
+  //border-bottom: solid 1px #DFE1EC;
+  &.isHomePage {
+    background: transparent;
+  }
   .admin-top-menu {
     display: flex;
     flex-flow: row;
@@ -383,7 +319,7 @@ export default {
     }
   }
   .user-top-menu {
-    margin-top: 30px;
+    padding-top: 30px;
     margin-right: 100px;
     margin-left: 100px;
     margin-bottom: 22px;

+ 53 - 53
src/components/Template/Header/UserPanelHeader.vue

@@ -173,60 +173,8 @@ export default {
 
 <style lang="scss" scoped>
 
-.drawer-btn {
-  display: none;
-  @media screen and (max-width: 1439px) {
-    display: block;
-  }
-  @media screen and (max-width: 599px) {
-    margin-bottom: 10px;
-  }
-}
-
-.right-side {
-  display: flex;
-  align-items: center;
-  @media screen and (max-width: 1439px) {
-    margin-left: 78px;
-  }
-  @media screen and (max-width: 1023px) {
-    margin-left: 42px;
-  }
-  @media screen and (max-width: 599px) {
-    margin-left: 0;
-  }
-
-  .breadcrumbs {
-    &:deep(> *) {
-      font-style: normal;
-      font-weight: bold;
-      font-size: 16px;
-      line-height: 31px;
-      text-align: right;
-      color: #23263B;
-
-      div:first-child {
-        font-size: 18px;
-      }
-    }
-  }
-}
-
-.left-side {
-  display: flex;
-  justify-content: flex-end;
-  @media screen and (max-width: 1439px) {
-    position: absolute;
-    right: 30px;
-  }
-  @media screen and (max-width: 599px) {
-    right: 16px;
-    margin-bottom: 10px;
-  }
-}
-</style>
-<style lang="scss">
 .header-inside {
+  height: 70px;
   .admin-top-menu {
     display: flex;
     flex-flow: row;
@@ -333,4 +281,56 @@ export default {
     }
   }
 }
+
+.drawer-btn {
+  display: none;
+  @media screen and (max-width: 1439px) {
+    display: block;
+  }
+  @media screen and (max-width: 599px) {
+    margin-bottom: 10px;
+  }
+}
+
+.right-side {
+  display: flex;
+  align-items: center;
+  @media screen and (max-width: 1439px) {
+    margin-left: 78px;
+  }
+  @media screen and (max-width: 1023px) {
+    margin-left: 42px;
+  }
+  @media screen and (max-width: 599px) {
+    margin-left: 0;
+  }
+
+  .breadcrumbs {
+    &:deep(> *) {
+      font-style: normal;
+      font-weight: bold;
+      font-size: 16px;
+      line-height: 31px;
+      text-align: right;
+      color: #23263B;
+
+      div:first-child {
+        font-size: 18px;
+      }
+    }
+  }
+}
+
+.left-side {
+  display: flex;
+  justify-content: flex-end;
+  @media screen and (max-width: 1439px) {
+    position: absolute;
+    right: 30px;
+  }
+  @media screen and (max-width: 599px) {
+    right: 16px;
+    margin-bottom: 10px;
+  }
+}
 </style>

+ 1 - 2
src/components/Template/SideBard/UserPanelSideBar.vue

@@ -16,8 +16,7 @@
           <q-icon name="search" />
         </template>
       </q-input>
-      <menu-item v-if="isProfilePage"
-                 :menu="userProfileMenuItems" />
+      <menu-item :menu="userProfileMenuItems" />
     </q-list>
     <div v-if="false"
          class="log-out"

+ 1 - 1
src/components/Widgets/Other/ClassroomCarousel/ClassroomCarousel.vue

@@ -210,7 +210,7 @@ export default {
     breakpoints: {
       // 1024 and up
       1024: {
-        itemsToShow: 4,
+        itemsToShow: 3,
         snapAlign: 'start'
       },
       // 700px and up

+ 23 - 13
src/components/Widgets/Other/Shop/ShopCompleteInfo/ShopCompleteInfo.vue

@@ -84,7 +84,8 @@
       تکمیل اطلاعات
     </q-banner>
     <q-card class="complete-info-form-card">
-      <entity-edit ref="entityEdit"
+      <entity-edit v-if="mounted"
+                   ref="entityEdit"
                    v-model:value="inputs"
                    title="اطلاعات کاربری"
                    :api="api"
@@ -95,7 +96,8 @@
                    :show-edit-button="false"
                    :show-expand-button="false"
                    :show-save-button="false"
-                   :show-reload-button="false" />
+                   :show-reload-button="false"
+                   :redirect-after-edit="false" />
     </q-card>
 
     <div class="flex justify-end section-edit-btn">
@@ -121,20 +123,22 @@
 <script>
 import { EntityEdit } from 'quasar-crud'
 import Enums from 'src/assets/Enums/Enums.js'
-import API_ADDRESS from 'src/api/Addresses.js'
 import ShamsiDate from 'src/assets/ShamsiDate.js'
+import { APIGateway } from 'src/api/APIGateway.js'
+import { Classroom } from 'src/models/Classroom.js'
 
 export default {
   name: 'ShopCompleteInfo',
   components: { EntityEdit },
   data: () => ({
+    mounted: false,
     step: false,
     rulesAccept: false,
     rulesDialog: false,
     loading: true,
-    classroom: null,
+    classroom: new Classroom(),
 
-    api: API_ADDRESS.user.current,
+    api: APIGateway.user.APIAdresses.current,
     entityIdKey: 'id',
     entityParamKey: 'id',
     showRouteName: 'UserPanel.ShopPaymentFromWallet',
@@ -144,8 +148,8 @@ export default {
       { type: 'input', name: 'on_call_mobile_number', label: 'تلفن همراه', responseKey: 'on_call_mobile_number', col: 'col-md-3' },
       { type: 'input', name: 'national_code', label: 'کدملی/کد اتباع غیر ایرانی', responseKey: 'national_code', col: 'col-md-3' },
       { type: 'separator', name: 'space', label: 'اطلاعات پروفایل', col: 'col-md-12' },
-      { type: 'file', name: 'avatar', label: 'عکس پروفایل', responseKey: 'data.avatar', col: 'col-md-3' },
-      { type: 'separator', name: 'space', size: 0, col: 'col-md-12' },
+      { type: 'file', name: 'picture', label: 'عکس پروفایل', responseKey: 'picture', col: 'col-md-3' },
+      { type: 'separator', name: 'space', size: '0', col: 'col-md-12' },
       { type: 'input', name: 'firstname', label: 'نام', responseKey: 'firstname', col: 'col-md-3' },
       { type: 'input', name: 'lastname', label: 'نام خانوادگی', responseKey: 'lastname', col: 'col-md-3' },
       {
@@ -197,14 +201,20 @@ export default {
       { type: 'input', name: 'living_abroad_province', label: 'استان محل زندگی فعلی', responseKey: 'living_province', col: 'col-md-4' },
       { type: 'input', name: 'living_abroad_city', label: 'شهر محل زندگی فعلی', responseKey: 'living_city', col: 'col-md-4' },
       { type: 'input', name: 'living_postal_code', label: 'کد پستی محل زندگی', responseKey: 'living_postal_code', col: 'col-md-3' },
-      { type: 'input', name: 'living_address', label: 'آدرس پستی محل زندگی', responseKey: 'living_address', col: 'col-md-6' }
+      { type: 'input', name: 'living_address', label: 'آدرس پستی محل زندگی', responseKey: 'living_address', col: 'col-md-9' },
+      { type: 'hidden', name: 'id', responseKey: 'id' }
     ]
   }),
-  created () {
+  mounted () {
+    this.mounted = true
   },
   methods: {
     editEntity () {
-      this.$refs.entityEdit.editEntity()
+      this.$refs.entityEdit.editEntity(false)
+        .then(() => {
+          this.$router.push({ name: 'UserPanel.ShopPaymentFromWallet' })
+        })
+        .catch(() => {})
     },
     openRulesDialog () {
       this.rulesDialog = true
@@ -234,9 +244,9 @@ export default {
     },
     getClassrooms () {
       this.loading = true
-      this.$axios.get(API_ADDRESS.classroom.base + '/' + this.$route.params.id)
-        .then(response => {
-          this.classroom = response.data
+      APIGateway.classroom.get(this.$route.params.id)
+        .then(classroom => {
+          this.classroom = new Classroom(classroom)
           this.loading = false
         })
         .catch(() => {

+ 1 - 2
src/components/Widgets/Other/ShowClassroomInfo/ShowClassroomInfo.vue

@@ -322,7 +322,7 @@ export default {
     loading: true,
     classroom: new Classroom()
   }),
-  created () {
+  mounted () {
     this.getClassrooms()
   },
   methods: {
@@ -362,7 +362,6 @@ export default {
     getClassrooms () {
       this.loading = true
       APIGateway.classroom.get(this.$route.params.id)
-      // this.$axios.get(API_ADDRESS.classroom.base + '/' + this.$route.params.id)
         .then(classroom => {
           this.classroom = new Classroom(classroom)
           this.loading = false

+ 7 - 7
src/css/Theme/header.scss

@@ -1,28 +1,28 @@
 .main-layout {
   .q-layout__section--marginal {
     background-color: white;
-    height: 70px;
+    //height: 70px;
     color: inherit;
     //border-bottom: solid 1px #DFE1EC;
   }
   &.isNotAdminPage:not(.isProfilePage) {
     .q-layout__section--marginal {
-      background-color: #FBF4EA;
-      height: 120px;
-      color: #212121;
-      border-bottom: solid 1px #DFE1EC;
+      //height: max-content;
+      //background-color: #FBF4EA;
+      //color: #212121;
+      //border-bottom: solid 1px #DFE1EC;
     }
   }
   &.isHomePage {
     .q-layout__section--marginal {
-      height: 120px;
+      height: max-content;
       background-color: transparent !important;
       border: none !important;
     }
   }
   &.isPublicPage {
     .q-layout__section--marginal {
-      height: 120px;
+      //height: 120px;
     }
   }
 }

+ 3 - 3
src/layouts/MainLayout.vue

@@ -48,7 +48,7 @@
         <floating-action-button v-if="canShowFloatingActionBtn" />
       </template>
       <template #footer>
-        <alaa-footer :type="getFooterType" />
+        <footer-template :type="getFooterType" />
       </template>
     </quasar-template-builder>
   </div>
@@ -58,7 +58,7 @@
 import { User } from 'src/models/User.js'
 import Router from 'src/router/Router.vue'
 import AuthLogin from 'src/components/Auth.vue'
-import AlaaFooter from 'src/components/Widgets/Footer/Footer.vue'
+import FooterTemplate from 'src/components/Template/Footer/FooterTemplate.vue'
 import KeepAliveComponents from 'src/assets/js/KeepAliveComponents.js'
 import templateHeader from 'src/components/Template/Header/TemplateHeader.vue'
 import TemplateSideBar from 'src/components/Template/SideBard/TemplateSideBar.vue'
@@ -69,7 +69,7 @@ export default {
   components: {
     AuthLogin,
     Router,
-    AlaaFooter,
+    FooterTemplate,
     templateHeader,
     TemplateSideBar,
     FloatingActionButton,

+ 3 - 2
src/router/middleware/Authenticated.js

@@ -4,8 +4,9 @@ export default function Authenticated ({ next, store, to }) {
 
   // if (!accessToken || !hasSessionToken) {
   if (!accessToken) {
-    store.commit('Auth/updateRedirectTo', { name: to.name, params: to.params })
-    return next({ name: 'login' })
+    store.commit('Auth/updateRedirectTo', { name: to.name, params: to.params, query: to.query })
+    return next({ name: 'Login' })
+    // return next({ name: 'Public.Home' })
   }
 
   return next()

+ 27 - 29
src/router/routes.js

@@ -1,4 +1,4 @@
-import { notLogedIn, Authenticated, canSeeAdminPanel, canSeeUserProfilePanel } from './middleware/middleware.js'
+import { /* notLogedIn, */Authenticated, canSeeAdminPanel, canSeeUserProfilePanel } from './middleware/middleware.js'
 
 const routes = [
   {
@@ -20,7 +20,7 @@ const routes = [
       layoutLeftDrawerWidth: 325,
       layoutLeftDrawerBehavior: 'default',
       layoutRightDrawer: false,
-      layoutFooter: false,
+      layoutFooter: true,
       showHamburgerBtn: true,
       layoutFooterVisible: true,
       layoutFooterType: 'main',
@@ -49,17 +49,17 @@ const routes = [
           {
             path: '/login/admin',
             name: 'AdminLogin',
-            meta: {
-              middlewares: [notLogedIn]
-            },
+            // meta: {
+            //   middlewares: [notLogedIn]
+            // },
             component: () => import('src/pages/Auth/Login.vue')
           },
           {
             path: '/login',
             name: 'Login',
-            meta: {
-              middlewares: [notLogedIn]
-            },
+            // meta: {
+            //   middlewares: [notLogedIn]
+            // },
             component: () => import('src/pages/Auth/Login.vue')
           }
         ]
@@ -67,25 +67,19 @@ const routes = [
       {
         path: '',
         name: 'Public',
-        layoutConfig: {
-          layoutView: 'lhh Lpr fff'
-        },
         component: () => import('layouts/bareLayout.vue'),
         meta: { middlewares: [canSeeUserProfilePanel] },
         children: [
-          // {
-          //   path: '',
-          //   name: 'Public.Home',
-          //   meta: {
-          //     hasDynamicSetting: true
-          //   },
-          //   component: () => import('src/pages/Public/Home.vue')
-          // },
-
-          { name: 'Public.Home', path: '', component: () => import('src/pages/Public/index.vue') },
+          {
+            name: 'Public.Home',
+            path: '',
+            layoutConfig: {
+              layoutView: 'lhh Lpr fff'
+            },
+            component: () => import('src/pages/Public/index.vue')
+          },
           { name: 'Public.AllClassrooms', path: 'all-classrooms', component: () => import('src/pages/Public/classrooms.vue') },
           { name: 'Public.ShowClassroomInfo', path: 'classroom/:id', component: () => import('src/pages/Public/ShowClassroomInfo.vue') }
-
         ]
       },
       {
@@ -93,11 +87,11 @@ const routes = [
         name: 'UserPanel',
         layoutConfig: {
           layoutView: 'hHh LpR fFf',
-          layoutHeaderType: 'admin',
+          layoutHeaderType: 'user-panel',
           layoutHeaderBordered: true,
           layoutLeftDrawer: true,
           layoutLeftDrawerVisible: true,
-          layoutLeftSideBarType: 'admin',
+          layoutLeftSideBarType: 'user-panel',
           layoutLeftDrawerBordered: true,
           layoutLeftDrawerWidth: 240,
           layoutFooter: false
@@ -110,21 +104,25 @@ const routes = [
             path: 'shop/completeInfo',
             layoutConfig: {
               layoutView: 'hHh LpR fFf',
-              layoutHeaderType: 'admin',
+              layoutHeaderType: 'main',
               layoutHeaderBordered: true,
               layoutLeftDrawer: false,
               layoutLeftDrawerVisible: false,
-              layoutLeftSideBarType: 'admin',
-              layoutLeftDrawerBordered: true,
-              layoutLeftDrawerWidth: 240,
               layoutFooter: false
             },
-            meta: { middlewares: [Authenticated] },
             component: () => import('src/pages/User/Shop/completeInfo.vue')
           },
           {
             name: 'UserPanel.ShopPaymentFromWallet',
             path: 'shop/payment-from-wallet',
+            layoutConfig: {
+              layoutView: 'hHh LpR fFf',
+              layoutHeaderType: 'main',
+              layoutHeaderBordered: true,
+              layoutLeftDrawer: false,
+              layoutLeftDrawerVisible: false,
+              layoutFooter: false
+            },
             meta: { middlewares: [Authenticated] },
             component: () => import('src/pages/User/Shop/paymentFromWallet.vue')
           },