George Williams 5年前
コミット
3258643b25
31個のファイルの変更407行の追加159行の削除
  1. 10
    0
      src/App.vue
  2. 9
    0
      src/assets/Log.js
  3. 4
    7
      src/components/about/aboutTimeshare.vue
  4. 9
    7
      src/components/about/aboutUsPage.vue
  5. 17
    8
      src/components/admin/property/propertyTypeList.vue
  6. 17
    8
      src/components/admin/property/userDefinedGroupsPage.vue
  7. 18
    8
      src/components/admin/status/changeLogPage.vue
  8. 16
    8
      src/components/admin/status/statusPage.vue
  9. 18
    8
      src/components/admin/status/tenderWeekAdminPage.vue
  10. 16
    8
      src/components/admin/status/timeshareAdminPage.vue
  11. 16
    8
      src/components/admin/status/userManagementPage.vue
  12. 16
    8
      src/components/admin/unitConfiguration/unitConfigurationPage.vue
  13. 24
    4
      src/components/home/testimonialSection.vue
  14. 3
    6
      src/components/misc/contactUs.vue
  15. 3
    6
      src/components/misc/privacyPolicyPage.vue
  16. 22
    9
      src/components/property/propertyList.vue
  17. 12
    13
      src/components/property/propertySearchPage.vue
  18. 3
    6
      src/components/property/propertyeditPage.vue
  19. 30
    2
      src/components/shared/navBar.vue
  20. 4
    7
      src/components/timeshare/buy/buyPage.vue
  21. 3
    6
      src/components/timeshare/faqPage.vue
  22. 3
    3
      src/components/timeshare/resort/resortPage.vue
  23. 3
    3
      src/components/timeshare/resort/unitPage.vue
  24. 3
    6
      src/components/timeshare/sell/sellPage.vue
  25. 19
    0
      src/components/user/logOut.vue
  26. 14
    10
      src/components/user/loginPage.vue
  27. 5
    0
      src/components/user/secure.vue
  28. 19
    0
      src/main.js
  29. 2
    0
      src/router/index.js
  30. 2
    0
      src/store/index.js
  31. 67
    0
      src/store/modules/user/authentication.js

+ 10
- 0
src/App.vue ファイルの表示

24
     NavBar,
24
     NavBar,
25
     FooterSection,
25
     FooterSection,
26
   },
26
   },
27
+  // created() {
28
+  //   this.$http.interceptors.response.use(undefined, (err) => {
29
+  //     return new Promise(function(resolve, reject) {
30
+  //       if (err.status === 401 && err.config && !err.config.__isRetryRequest) {
31
+  //         this.$store.dispatch(logout);
32
+  //       }
33
+  //       throw err;
34
+  //     });
35
+  //   });
36
+  // },
27
   methods: {
37
   methods: {
28
     routerGoTo(goTo) {
38
     routerGoTo(goTo) {
29
       this.$router.push(goTo);
39
       this.$router.push(goTo);

+ 9
- 0
src/assets/Log.js ファイルの表示

1
+const items = {
2
+  isLoggedIn() {
3
+    return localStorage.getItem('token') !== undefined;
4
+  },
5
+  getUser() {
6
+    return localStorage.getItem('User');
7
+  },
8
+};
9
+export default items;

+ 4
- 7
src/components/about/aboutTimeshare.vue ファイルの表示

9
               src="img/timeshare2.jpg"
9
               src="img/timeshare2.jpg"
10
               alt="About Timeshare"
10
               alt="About Timeshare"
11
               class="img-fluid"
11
               class="img-fluid"
12
-              style="width:800px;height:400px;"
12
+              style="width:800px;height:400px; border-radius:10px"
13
             />
13
             />
14
           </div>
14
           </div>
15
-          <div class="sinse-box">
16
-            <h3 class="sinse-title">
17
-              Timeshare Resales
18
-              <span></span>
19
-            </h3>
15
+          <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
16
+            <h3 class="sinse-title">Timeshare Resales</h3>
20
           </div>
17
           </div>
21
         </div>
18
         </div>
22
         <div class="col-md-12 section-t8">
19
         <div class="col-md-12 section-t8">
65
                   src="img/timeshare.jpg"
62
                   src="img/timeshare.jpg"
66
                   alt
63
                   alt
67
                   class="img-fluid"
64
                   class="img-fluid"
68
-                  style="width:500px;height:330px;"
65
+                  style="width:500px;height:330px; border-radius:10px"
69
                 />
66
                 />
70
               </p>
67
               </p>
71
             </div>
68
             </div>

+ 9
- 7
src/components/about/aboutUsPage.vue ファイルの表示

9
               src="img/slide-about-1.jpg"
9
               src="img/slide-about-1.jpg"
10
               alt
10
               alt
11
               class="img-fluid"
11
               class="img-fluid"
12
-              style="width:800px;height:400px;"
12
+              style="width:800px;height:400px; border-radius:10px"
13
             />
13
             />
14
           </div>
14
           </div>
15
-          <div class="sinse-box">
16
-            <h3 class="sinse-title">
17
-              About Us
18
-              <span></span>
19
-            </h3>
15
+          <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
16
+            <h3 class="sinse-title">About Us</h3>
20
           </div>
17
           </div>
21
         </div>
18
         </div>
22
         <div class="col-md-12 section-t8">
19
         <div class="col-md-12 section-t8">
69
                 <strong>Uni-Vate is able to assist you.</strong>
66
                 <strong>Uni-Vate is able to assist you.</strong>
70
               </p>
67
               </p>
71
               <p>
68
               <p>
72
-                <img src="img/plan2.jpg" alt class="img-fluid" style="width:450px;height:200px;" />
69
+                <img
70
+                  src="img/plan2.jpg"
71
+                  alt
72
+                  class="img-fluid"
73
+                  style="width:450px;height:200px; border-radius:10px"
74
+                />
73
               </p>
75
               </p>
74
             </div>
76
             </div>
75
           </div>
77
           </div>

+ 17
- 8
src/components/admin/property/propertyTypeList.vue ファイルの表示

2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
   <div>
3
   <div>
4
     <div class="container">
4
     <div class="container">
5
-      <section class="intro-single">
6
-        <div class="container">
7
-          <div class="row">
8
-            <div class="col-md-12 col-lg-8">
9
-              <div class="title-single-box">
10
-                <h1 class="title-single">Property Types</h1>
11
-              </div>
5
+      <!-- <section class="intro-single"> -->
6
+      <div class="container">
7
+        <br />
8
+        <br />
9
+        <br />
10
+        <br />
11
+        <div class="row">
12
+          <div class="col-md-12 col-lg-8">
13
+            <!-- <div class="title-single-box"> -->
14
+            <!-- <h1 class="title-single">Property Types</h1> -->
15
+            <!-- </div> -->
16
+            <div class="title-box-d">
17
+              <h1 class="title-d" style="text-align:left; font-size: 250%">Property Types</h1>
12
             </div>
18
             </div>
19
+            <br />
13
           </div>
20
           </div>
14
         </div>
21
         </div>
15
-      </section>
22
+      </div>
23
+      <!-- </section> -->
16
     </div>
24
     </div>
17
     <div class="container">
25
     <div class="container">
18
       <button type="button" @click="New()" class="btn btn-b-n" style="width: 85px; height:40px;">New</button>
26
       <button type="button" @click="New()" class="btn btn-b-n" style="width: 85px; height:40px;">New</button>
52
         </tbody>
60
         </tbody>
53
       </table>
61
       </table>
54
     </div>
62
     </div>
63
+    <br />
55
   </div>
64
   </div>
56
 </template>
65
 </template>
57
 
66
 

+ 17
- 8
src/components/admin/property/userDefinedGroupsPage.vue ファイルの表示

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
   <div>
3
   <div>
4
-    <section class="intro-single">
5
-      <div class="container">
6
-        <div class="row">
7
-          <div class="col-md-12 col-lg-8">
8
-            <div class="title-single-box">
9
-              <h2 class="title-single">User Defined Groups List</h2>
10
-            </div>
4
+    <!-- <section class="intro-single"> -->
5
+    <div class="container">
6
+      <br />
7
+      <br />
8
+      <br />
9
+      <br />
10
+      <div class="row">
11
+        <div class="col-md-12 col-lg-8">
12
+          <!-- <div class="title-single-box"> -->
13
+          <!-- <h2 class="title-single">User Defined Groups List</h2> -->
14
+          <!-- </div> -->
15
+          <div class="title-box-d">
16
+            <h1 class="title-d" style="text-align:left; font-size: 250%">User Defined Groups List</h1>
11
           </div>
17
           </div>
18
+          <br />
12
         </div>
19
         </div>
13
       </div>
20
       </div>
14
-    </section>
21
+    </div>
22
+    <!-- </section> -->
15
     <div class="container">
23
     <div class="container">
16
       <button type="button" @click="New()" class="btn btn-b-n" style="width: 85px; height:40px;">New</button>
24
       <button type="button" @click="New()" class="btn btn-b-n" style="width: 85px; height:40px;">New</button>
17
       <table class="table table-bordered">
25
       <table class="table table-bordered">
51
         </tbody>
59
         </tbody>
52
       </table>
60
       </table>
53
     </div>
61
     </div>
62
+    <br />
54
   </div>
63
   </div>
55
 </template>
64
 </template>
56
 <script>
65
 <script>

+ 18
- 8
src/components/admin/status/changeLogPage.vue ファイルの表示

1
 <template>
1
 <template>
2
-  <section class="intro-single">
3
-    <div class="container">
4
-      <div class="row">
5
-        <div class="col-md-12 col-lg-8">
6
-          <div class="title-single-box">
7
-            <h1 class="title-single" style="text-align:left;">Change Log</h1>
8
-          </div>
2
+  <!-- <section class="intro-single"> -->
3
+  <div class="container">
4
+    <br />
5
+    <br />
6
+    <br />
7
+    <br />
8
+    <div class="row">
9
+      <div class="col-md-12 col-lg-8">
10
+        <!-- <div class="title-single-box"> -->
11
+        <!-- <h1 class="title-single" style="text-align:left;">Change Log</h1> -->
12
+        <!-- </div> -->
13
+        <div class="title-box-d">
14
+          <h1 class="title-d" style="text-align:left; font-size: 250%">Change Log</h1>
9
         </div>
15
         </div>
16
+        <br />
10
       </div>
17
       </div>
11
     </div>
18
     </div>
12
     <div id="table" class="col-xs-12 table-responsive">
19
     <div id="table" class="col-xs-12 table-responsive">
13
       <datatable :columns="columns" :data="rows"></datatable>
20
       <datatable :columns="columns" :data="rows"></datatable>
14
     </div>
21
     </div>
15
-  </section>
22
+    <br />
23
+  </div>
24
+
25
+  <!-- </section> -->
16
 </template>
26
 </template>
17
 <script>
27
 <script>
18
 import { mapState, mapActions } from 'vuex';
28
 import { mapState, mapActions } from 'vuex';

+ 16
- 8
src/components/admin/status/statusPage.vue ファイルの表示

1
 <template>
1
 <template>
2
   <div>
2
   <div>
3
-    <section class="intro-single">
4
-      <div class="container">
5
-        <div class="row">
6
-          <div class="col-md-12 col-lg-8">
7
-            <div class="title-single-box">
8
-              <h2 class="title-single">Status List</h2>
9
-            </div>
3
+    <!-- <section class="intro-single"> -->
4
+    <div class="container">
5
+      <br />
6
+      <br />
7
+      <br />
8
+      <br />
9
+      <div class="row">
10
+        <div class="col-md-12 col-lg-8">
11
+          <!-- <div class="title-single-box"> -->
12
+          <!-- <h2 class="title-single">Status List</h2> -->
13
+          <!-- </div> -->
14
+          <div class="title-box-d">
15
+            <h1 class="title-d" style="text-align:left; font-size: 250%">Status List</h1>
10
           </div>
16
           </div>
17
+          <br />
11
         </div>
18
         </div>
12
       </div>
19
       </div>
13
-    </section>
20
+    </div>
21
+    <!-- </section> -->
14
     <div class="container">
22
     <div class="container">
15
       <table class="table table-bordered">
23
       <table class="table table-bordered">
16
         <thead>
24
         <thead>

+ 18
- 8
src/components/admin/status/tenderWeekAdminPage.vue ファイルの表示

1
 <template>
1
 <template>
2
-  <section class="intro-single">
3
-    <div class="container">
4
-      <div class="row">
5
-        <div class="col-md-12 col-lg-8">
6
-          <div class="title-single-box">
7
-            <h1 class="title-single" style="text-align:left;">Tender Week Admin</h1>
8
-          </div>
2
+  <!-- <section class="intro-single"> -->
3
+  <div class="container">
4
+    <br />
5
+    <br />
6
+    <br />
7
+    <br />
8
+    <div class="row">
9
+      <div class="col-md-12 col-lg-8">
10
+        <!-- <div class="title-single-box"> -->
11
+        <!-- <h1 class="title-single" style="text-align:left;">Tender Week Admin</h1> -->
12
+        <!-- </div> -->
13
+        <div class="title-box-d">
14
+          <h1 class="title-d" style="text-align:left; font-size: 250%">Tender Week Admin</h1>
9
         </div>
15
         </div>
16
+        <br />
10
       </div>
17
       </div>
11
     </div>
18
     </div>
12
     <div id="table" class="col-xs-12 table-responsive">
19
     <div id="table" class="col-xs-12 table-responsive">
13
       <datatable :columns="columns" :data="rows"></datatable>
20
       <datatable :columns="columns" :data="rows"></datatable>
14
     </div>
21
     </div>
15
-  </section>
22
+    <br />
23
+  </div>
24
+
25
+  <!-- </section> -->
16
 </template>
26
 </template>
17
 <script>
27
 <script>
18
 import { mapState, mapActions } from 'vuex';
28
 import { mapState, mapActions } from 'vuex';

+ 16
- 8
src/components/admin/status/timeshareAdminPage.vue ファイルの表示

1
 <template>
1
 <template>
2
-  <section class="intro-single">
3
-    <div class="container">
4
-      <div class="row">
5
-        <div class="col-md-12 col-lg-8">
6
-          <div class="title-single-box">
7
-            <h1 class="title-single" style="text-align:left;">Timeshare Admin</h1>
8
-          </div>
2
+  <!-- <section class="intro-single"> -->
3
+  <div class="container">
4
+    <br />
5
+    <br />
6
+    <br />
7
+    <br />
8
+    <div class="row">
9
+      <div class="col-md-12 col-lg-8">
10
+        <!-- <div class="title-single-box"> -->
11
+        <!-- <h1 class="title-single" style="text-align:left;">Timeshare Admin</h1> -->
12
+        <!-- </div> -->
13
+        <div class="title-box-d">
14
+          <h1 class="title-d" style="text-align:left; font-size: 250%">Timeshare Admin</h1>
9
         </div>
15
         </div>
16
+        <br />
10
       </div>
17
       </div>
11
     </div>
18
     </div>
12
     <div id="table" class="col-xs-12 table-responsive">
19
     <div id="table" class="col-xs-12 table-responsive">
13
       <datatable :columns="columns" :data="rows"></datatable>
20
       <datatable :columns="columns" :data="rows"></datatable>
14
     </div>
21
     </div>
15
-  </section>
22
+  </div>
23
+  <!-- </section> -->
16
 </template>
24
 </template>
17
 <script>
25
 <script>
18
 import { mapState, mapActions } from 'vuex';
26
 import { mapState, mapActions } from 'vuex';

+ 16
- 8
src/components/admin/status/userManagementPage.vue ファイルの表示

1
 <template>
1
 <template>
2
-  <section class="intro-single">
3
-    <div class="container">
4
-      <div class="row">
5
-        <div class="col-md-12 col-lg-8">
6
-          <div class="title-single-box">
7
-            <h1 class="title-single" style="text-align:left;">User Management</h1>
8
-          </div>
2
+  <!-- <section class="intro-single"> -->
3
+  <div class="container">
4
+    <br />
5
+    <br />
6
+    <br />
7
+    <br />
8
+    <div class="row">
9
+      <div class="col-md-12 col-lg-8">
10
+        <!-- <div class="title-single-box"> -->
11
+        <!-- <h1 class="title-single" style="text-align:left;">User Management</h1> -->
12
+        <!-- </div> -->
13
+        <div class="title-box-d">
14
+          <h1 class="title-d" style="text-align:left; font-size: 250%">User Management</h1>
9
         </div>
15
         </div>
16
+        <br />
10
       </div>
17
       </div>
11
     </div>
18
     </div>
12
     <div id="table" class="col-xs-12 table-responsive">
19
     <div id="table" class="col-xs-12 table-responsive">
13
       <datatable :columns="columns" :data="rows"></datatable>
20
       <datatable :columns="columns" :data="rows"></datatable>
14
     </div>
21
     </div>
15
-  </section>
22
+  </div>
23
+  <!-- </section> -->
16
 </template>
24
 </template>
17
 <script>
25
 <script>
18
 import { mapState, mapActions } from 'vuex';
26
 import { mapState, mapActions } from 'vuex';

+ 16
- 8
src/components/admin/unitConfiguration/unitConfigurationPage.vue ファイルの表示

1
 <template>
1
 <template>
2
   <div>
2
   <div>
3
-    <section class="intro-single">
4
-      <div class="container">
5
-        <div class="row">
6
-          <div class="col-md-12 col-lg-8">
7
-            <div class="title-single-box">
8
-              <h2 class="title-single">Unit Configuration List</h2>
9
-            </div>
3
+    <!-- <section class="intro-single"> -->
4
+    <div class="container">
5
+      <br />
6
+      <br />
7
+      <br />
8
+      <br />
9
+      <div class="row">
10
+        <div class="col-md-12 col-lg-8">
11
+          <!-- <div class="title-single-box"> -->
12
+          <!-- <h2 class="title-single">Unit Configuration List</h2> -->
13
+          <!-- </div> -->
14
+          <div class="title-box-d">
15
+            <h1 class="title-d" style="text-align:left; font-size: 250%">Unit Configuration List</h1>
10
           </div>
16
           </div>
17
+          <br />
11
         </div>
18
         </div>
12
       </div>
19
       </div>
13
-    </section>
20
+    </div>
21
+    <!-- </section> -->
14
     <div class="container">
22
     <div class="container">
15
       <table class="table table-bordered">
23
       <table class="table table-bordered">
16
         <thead>
24
         <thead>

+ 24
- 4
src/components/home/testimonialSection.vue ファイルの表示

19
                 <div class="col-sm-12 col-md-6">
19
                 <div class="col-sm-12 col-md-6">
20
                   <div class="testimonial-img">
20
                   <div class="testimonial-img">
21
                     <router-link to="/resort/csp">
21
                     <router-link to="/resort/csp">
22
-                      <img src="img/testimonial-1.png" alt class="CrystalSprings" />
22
+                      <img
23
+                        src="img/testimonial-1.png"
24
+                        alt
25
+                        class="CrystalSprings"
26
+                        style="border-radius:10px"
27
+                      />
23
                     </router-link>
28
                     </router-link>
24
                   </div>
29
                   </div>
25
                 </div>
30
                 </div>
51
                 <div class="col-sm-12 col-md-6">
56
                 <div class="col-sm-12 col-md-6">
52
                   <div class="testimonial-img">
57
                   <div class="testimonial-img">
53
                     <router-link to="/resort/nl">
58
                     <router-link to="/resort/nl">
54
-                      <img src="img/testimonial-2.png" alt class="Ngwenya Lodge" />
59
+                      <img
60
+                        src="img/testimonial-2.png"
61
+                        alt
62
+                        class="Ngwenya Lodge"
63
+                        style="border-radius:10px"
64
+                      />
55
                     </router-link>
65
                     </router-link>
56
                   </div>
66
                   </div>
57
                 </div>
67
                 </div>
81
                 <div class="col-sm-12 col-md-6">
91
                 <div class="col-sm-12 col-md-6">
82
                   <div class="testimonial-img">
92
                   <div class="testimonial-img">
83
                     <router-link to="/resort/mnr">
93
                     <router-link to="/resort/mnr">
84
-                      <img src="img/testimonial-3.2.jpg" alt class="Mabalingwe Nature Reserve" />
94
+                      <img
95
+                        src="img/testimonial-3.2.jpg"
96
+                        alt
97
+                        class="Mabalingwe Nature Reserve"
98
+                        style="border-radius:10px"
99
+                      />
85
                     </router-link>
100
                     </router-link>
86
                   </div>
101
                   </div>
87
                 </div>
102
                 </div>
111
                 <div class="col-sm-12 col-md-6">
126
                 <div class="col-sm-12 col-md-6">
112
                   <div class="testimonial-img">
127
                   <div class="testimonial-img">
113
                     <router-link to="/resort/le">
128
                     <router-link to="/resort/le">
114
-                      <img src="img/testimonial-4.png" alt class="Little Eden" />
129
+                      <img
130
+                        src="img/testimonial-4.png"
131
+                        alt
132
+                        class="Little Eden"
133
+                        style="border-radius:10px"
134
+                      />
115
                     </router-link>
135
                     </router-link>
116
                   </div>
136
                   </div>
117
                 </div>
137
                 </div>

+ 3
- 6
src/components/misc/contactUs.vue ファイルの表示

8
             src="img/contact-us.jpg"
8
             src="img/contact-us.jpg"
9
             alt="Frequently Asked Questions"
9
             alt="Frequently Asked Questions"
10
             class="img-fluid"
10
             class="img-fluid"
11
-            style="width:800px;height:400px;"
11
+            style="width:800px;height:400px; border-radius:10px"
12
           />
12
           />
13
         </div>
13
         </div>
14
-        <div class="sinse-box">
15
-          <h3 class="sinse-title">
16
-            Contact Us
17
-            <span></span>
18
-          </h3>
14
+        <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
15
+          <h3 class="sinse-title">Contact Us</h3>
19
         </div>
16
         </div>
20
       </div>
17
       </div>
21
       <div class="container col-md-10">
18
       <div class="container col-md-10">

+ 3
- 6
src/components/misc/privacyPolicyPage.vue ファイルの表示

8
             src="img/privacy.jpg"
8
             src="img/privacy.jpg"
9
             alt="Privacy Policy"
9
             alt="Privacy Policy"
10
             class="img-fluid"
10
             class="img-fluid"
11
-            style="width:800px;height:400px;"
11
+            style="width:800px;height:400px; border-radius:10px"
12
           />
12
           />
13
         </div>
13
         </div>
14
-        <div class="sinse-box">
15
-          <h3 class="sinse-title">
16
-            Privacy Policy
17
-            <span></span>
18
-          </h3>
14
+        <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
15
+          <h3 class="sinse-title">Privacy Policy</h3>
19
         </div>
16
         </div>
20
       </div>
17
       </div>
21
       <div class="col-md-12 text-left">
18
       <div class="col-md-12 text-left">

+ 22
- 9
src/components/property/propertyList.vue ファイルの表示

2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
   <div>
3
   <div>
4
     <div class="container">
4
     <div class="container">
5
-      <section class="intro-single">
6
-        <div class="container">
7
-          <div class="row">
8
-            <div class="col-md-12 col-lg-8">
9
-              <div class="title-single-box">
10
-                <h1 v-if="user !== 'All'" class="title-single">My {{ propertyType }} Properties</h1>
11
-                <h1 v-else class="title-single">All {{ propertyType }} Properties</h1>
12
-              </div>
5
+      <!-- <section class="intro-single"> -->
6
+      <div class="container">
7
+        <br />
8
+        <br />
9
+        <br />
10
+        <br />
11
+        <div class="row">
12
+          <div class="col-md-12 col-lg-8">
13
+            <div class="title-box-d">
14
+              <h1
15
+                v-if="user !== 'All'"
16
+                class="title-d"
17
+                style="text-align:left; font-size: 250%"
18
+              >My {{ propertyType }} Properties</h1>
19
+              <h1
20
+                v-else
21
+                class="title-d"
22
+                style="text-align:left; font-size: 250%"
23
+              >All {{ propertyType }} Properties</h1>
13
             </div>
24
             </div>
14
           </div>
25
           </div>
15
         </div>
26
         </div>
16
-      </section>
27
+      </div>
28
+      <!-- </section> -->
17
     </div>
29
     </div>
18
     <div class="container">
30
     <div class="container">
19
       <table class="table table-bordered">
31
       <table class="table table-bordered">
54
         </tbody>
66
         </tbody>
55
       </table>
67
       </table>
56
     </div>
68
     </div>
69
+    <br />
57
   </div>
70
   </div>
58
 </template>
71
 </template>
59
 
72
 

+ 12
- 13
src/components/property/propertySearchPage.vue ファイルの表示

8
             src="img/Pretoria-South-Africa.jpg"
8
             src="img/Pretoria-South-Africa.jpg"
9
             alt="Property Listing"
9
             alt="Property Listing"
10
             class="img-fluid"
10
             class="img-fluid"
11
-            style="width:800px;height:400px;"
11
+            style="width:800px;height:400px; border-radius:10px"
12
           />
12
           />
13
         </div>
13
         </div>
14
-        <div class="sinse-box">
15
-          <h3 class="sinse-title">
16
-            Property Listing
17
-            <span></span>
18
-          </h3>
14
+        <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
15
+          <h3 class="sinse-title">Property Listing</h3>
19
         </div>
16
         </div>
20
       </div>
17
       </div>
21
       <br />
18
       <br />
73
             src="img/Johannesburg-south-africa-1.jpg"
70
             src="img/Johannesburg-south-africa-1.jpg"
74
             alt="Property Listing"
71
             alt="Property Listing"
75
             class="img-fluid"
72
             class="img-fluid"
76
-            style="width:800px;height:400px;"
73
+            style="width:800px;height:400px; border-radius:10px"
77
           />
74
           />
78
         </div>
75
         </div>
79
-        <div class="sinse-box">
80
-          <h3 class="sinse-title">
81
-            Property Listing
82
-            <span></span>
83
-          </h3>
76
+        <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
77
+          <h3 class="sinse-title">Property Listing</h3>
84
         </div>
78
         </div>
85
       </div>
79
       </div>
86
       <br />
80
       <br />
113
         </div>
107
         </div>
114
         <div class="col-md-4">
108
         <div class="col-md-4">
115
           <p>
109
           <p>
116
-            <img class="img-fluid" src="./../../../public/img/commercial.jpg" alt="About Resale" />
110
+            <img
111
+              class="img-fluid"
112
+              src="./../../../public/img/commercial.jpg"
113
+              alt="About Resale"
114
+              style="border-radius:10px"
115
+            />
117
           </p>
116
           </p>
118
         </div>
117
         </div>
119
       </div>
118
       </div>

+ 3
- 6
src/components/property/propertyeditPage.vue ファイルの表示

8
             src="img/Listings2.jpg"
8
             src="img/Listings2.jpg"
9
             alt="Timeshare To Buy"
9
             alt="Timeshare To Buy"
10
             class="img-fluid"
10
             class="img-fluid"
11
-            style="width:800px;height:400px;"
11
+            style="width:800px;height:400px; border-radius:10px"
12
           />
12
           />
13
         </div>
13
         </div>
14
-        <div class="sinse-box">
15
-          <h3 class="sinse-title">
16
-            List {{ propertyType }} {{ salesType }} Property
17
-            <span></span>
18
-          </h3>
14
+        <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
15
+          <h3 class="sinse-title">List {{ propertyType }} {{ salesType }} Property</h3>
19
         </div>
16
         </div>
20
       </div>
17
       </div>
21
       <br />
18
       <br />

+ 30
- 2
src/components/shared/navBar.vue ファイルの表示

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
   <nav class="navbar navbar-default navbar-trans navbar-expand-lg fixed-top">
3
   <nav class="navbar navbar-default navbar-trans navbar-expand-lg fixed-top">
4
-    <div class="container">
4
+    <div class="container-fluid">
5
       <button
5
       <button
6
         class="navbar-toggler collapsed"
6
         class="navbar-toggler collapsed"
7
         type="button"
7
         type="button"
16
         <span></span>
16
         <span></span>
17
       </button>
17
       </button>
18
       <a class="navbar-brand text-brand" @click="routerGoTo('/')">
18
       <a class="navbar-brand text-brand" @click="routerGoTo('/')">
19
+        <img
20
+          class="img-fluid"
21
+          src="/img/logos/UVProp.png"
22
+          alt="UVProp logo"
23
+          style="width:110px;height:60px;"
24
+        />
19
         Uni-Vate
25
         Uni-Vate
20
         <span class="color-b">Properties</span>
26
         <span class="color-b">Properties</span>
21
       </a>
27
       </a>
194
             >Login</a>
200
             >Login</a>
195
             <div class="dropdown-menu" aria-labelledby="navbarDropdown">
201
             <div class="dropdown-menu" aria-labelledby="navbarDropdown">
196
               <a class="dropdown-item cursor-pointer" @click="routerGoTo('/user/login')">Login</a>
202
               <a class="dropdown-item cursor-pointer" @click="routerGoTo('/user/login')">Login</a>
197
-              <a class="dropdown-item cursor-pointer" @click="routerGoTo('/user/login')">Logout</a>
203
+              <a class="dropdown-item cursor-pointer" @click="routerGoTo('/user/logout')">Logout</a>
198
               <a class="dropdown-item cursor-pointer" @click="routerGoTo('/user/register')">Register</a>
204
               <a class="dropdown-item cursor-pointer" @click="routerGoTo('/user/register')">Register</a>
199
               <a
205
               <a
200
                 class="dropdown-item cursor-pointer"
206
                 class="dropdown-item cursor-pointer"
214
         <span class="fa fa-search" aria-hidden="true"></span>
220
         <span class="fa fa-search" aria-hidden="true"></span>
215
       </button>
221
       </button>
216
     </div>
222
     </div>
223
+    <span v-if="showLogout">
224
+      <a @click="logout()">Logout</a>
225
+    </span>
226
+    <span v-else></span>
217
   </nav>
227
   </nav>
218
 </template>
228
 </template>
229
+
219
 <script>
230
 <script>
231
+import { mapGetters, mapActions } from 'vuex';
232
+
220
 export default {
233
 export default {
234
+  data() {
235
+    return {};
236
+  },
237
+  computed: {
238
+    showLogout() {
239
+      return this.$store.state.authentication.status === 'success';
240
+    },
241
+    Logout() {
242
+      return this.$store.state.authentication.methods.logout;
243
+    },
244
+  },
245
+
221
   methods: {
246
   methods: {
247
+    ...mapGetters('authentication', ['isLoggedIn']),
248
+    ...mapActions('authentication', ['logout']),
249
+
222
     routerGoTo(goTo) {
250
     routerGoTo(goTo) {
223
       console.log(goTo);
251
       console.log(goTo);
224
       this.$emit('routerGoTo', goTo);
252
       this.$emit('routerGoTo', goTo);

+ 4
- 7
src/components/timeshare/buy/buyPage.vue ファイルの表示

9
               src="img/buy.jpg"
9
               src="img/buy.jpg"
10
               alt="Timeshare To Buy"
10
               alt="Timeshare To Buy"
11
               class="img-fluid"
11
               class="img-fluid"
12
-              style="width:800px;height:400px;"
12
+              style="width:800px;height:400px; border-radius:10px"
13
             />
13
             />
14
           </div>
14
           </div>
15
-          <div class="sinse-box">
16
-            <h3 class="sinse-title">
17
-              Timeshare To Buy
18
-              <span></span>
19
-            </h3>
15
+          <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
16
+            <h3 class="sinse-title">Timeshare To Buy</h3>
20
           </div>
17
           </div>
21
         </div>
18
         </div>
22
 
19
 
95
                     width="100%"
92
                     width="100%"
96
                     height="450"
93
                     height="450"
97
                     frameborder="0"
94
                     frameborder="0"
98
-                    style="border:0"
95
+                    style="border-radius:10px"
99
                     allowfullscreen
96
                     allowfullscreen
100
                   ></iframe>
97
                   ></iframe>
101
                   <br />
98
                   <br />

+ 3
- 6
src/components/timeshare/faqPage.vue ファイルの表示

9
               src="img/questions.jpg"
9
               src="img/questions.jpg"
10
               alt="Frequently Asked Questions"
10
               alt="Frequently Asked Questions"
11
               class="img-fluid"
11
               class="img-fluid"
12
-              style="width:800px;height:400px;"
12
+              style="width:800px;height:400px; border-radius:10px"
13
             />
13
             />
14
           </div>
14
           </div>
15
-          <div class="sinse-box">
16
-            <h3 class="sinse-title">
17
-              Frequently Asked Questions
18
-              <span></span>
19
-            </h3>
15
+          <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
16
+            <h3 class="sinse-title">Frequently Asked Questions</h3>
20
           </div>
17
           </div>
21
         </div>
18
         </div>
22
         <div class="container col-md-10">
19
         <div class="container col-md-10">

+ 3
- 3
src/components/timeshare/resort/resortPage.vue ファイルの表示

15
         </div>
15
         </div>
16
         <div class="row mb-4">
16
         <div class="row mb-4">
17
           <div class="col-md-4">
17
           <div class="col-md-4">
18
-            <img class="img-fluid" :src="image1" alt="Resort Image" />
18
+            <img class="img-fluid" :src="image1" alt="Resort Image" style="border-radius:10px" />
19
           </div>
19
           </div>
20
           <div class="col-md-4">
20
           <div class="col-md-4">
21
-            <img class="img-fluid" :src="image2" alt="Resort Image" />
21
+            <img class="img-fluid" :src="image2" alt="Resort Image" style="border-radius:10px" />
22
           </div>
22
           </div>
23
           <div class="col-md-4">
23
           <div class="col-md-4">
24
-            <img class="img-fluid" :src="image3" alt="Resort Image" />
24
+            <img class="img-fluid" :src="image3" alt="Resort Image" style="border-radius:10px" />
25
           </div>
25
           </div>
26
         </div>
26
         </div>
27
       </div>
27
       </div>

+ 3
- 3
src/components/timeshare/resort/unitPage.vue ファイルの表示

14
       </div>
14
       </div>
15
       <div class="row mb-4">
15
       <div class="row mb-4">
16
         <div class="col-md-4">
16
         <div class="col-md-4">
17
-          <img class="img-fluid" :src="image1" alt="Resort Image" />
17
+          <img class="img-fluid" :src="image1" alt="Resort Image" style="border-radius:10px" />
18
         </div>
18
         </div>
19
         <div class="col-md-4">
19
         <div class="col-md-4">
20
-          <img class="img-fluid" :src="image2" alt="Resort Image" />
20
+          <img class="img-fluid" :src="image2" alt="Resort Image" style="border-radius:10px" />
21
         </div>
21
         </div>
22
         <div class="col-md-4">
22
         <div class="col-md-4">
23
-          <img class="img-fluid" :src="image3" alt="Resort Image" />
23
+          <img class="img-fluid" :src="image3" alt="Resort Image" style="border-radius:10px" />
24
         </div>
24
         </div>
25
       </div>
25
       </div>
26
     </div>
26
     </div>

+ 3
- 6
src/components/timeshare/sell/sellPage.vue ファイルの表示

9
               src="img/sell2.jpg"
9
               src="img/sell2.jpg"
10
               alt="Timeshare To Sell"
10
               alt="Timeshare To Sell"
11
               class="img-fluid"
11
               class="img-fluid"
12
-              style="width:800px;height:400px;"
12
+              style="width:800px;height:400px; border-radius:10px"
13
             />
13
             />
14
           </div>
14
           </div>
15
-          <div class="sinse-box">
16
-            <h3 class="sinse-title">
17
-              Timeshare To Sell
18
-              <span></span>
19
-            </h3>
15
+          <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
16
+            <h3 class="sinse-title">Timeshare To Sell</h3>
20
           </div>
17
           </div>
21
         </div>
18
         </div>
22
         <br />
19
         <br />

+ 19
- 0
src/components/user/logOut.vue ファイルの表示

1
+<script>
2
+import { mapActions } from 'vuex';
3
+
4
+export default {
5
+  computed: {
6
+    isLoggedIn() {
7
+      return this.$store.getters.isLoggedIn;
8
+    },
9
+  },
10
+  methods: {
11
+    ...mapActions('authentication', ['logout']),
12
+    Logout() {
13
+      this.logout('logout').then(() => {
14
+        this.$router.push('/users/login');
15
+      });
16
+    },
17
+  },
18
+};
19
+</script>

+ 14
- 10
src/components/user/loginPage.vue ファイルの表示

6
         <div class="form">
6
         <div class="form">
7
           <div>
7
           <div>
8
             <h4>Login</h4>
8
             <h4>Login</h4>
9
+            <br />
9
           </div>
10
           </div>
10
           <div class="row">
11
           <div class="row">
11
             <div class="col-md-11" style="margin-bottom: 1em">
12
             <div class="col-md-11" style="margin-bottom: 1em">
19
                     type="text"
20
                     type="text"
20
                     name="username"
21
                     name="username"
21
                     placeholder="Username"
22
                     placeholder="Username"
23
+                    v-model="username"
22
                     value
24
                     value
23
                   />
25
                   />
24
                 </div>
26
                 </div>
57
           <p v-if="user !== null">{{ user }}</p>
59
           <p v-if="user !== null">{{ user }}</p>
58
         </div>
60
         </div>
59
       </form>
61
       </form>
60
-
61
       <form id="forgot">
62
       <form id="forgot">
62
         <div class="form">
63
         <div class="form">
63
           <h5>Trouble signing in?</h5>
64
           <h5>Trouble signing in?</h5>
82
 </template>
83
 </template>
83
 
84
 
84
 <script>
85
 <script>
85
-const axios = require('axios');
86
+import { mapActions, mapState } from 'vuex';
87
+// import axios from 'axios';
88
+// import User from '../../assets/Log';
86
 
89
 
87
 export default {
90
 export default {
88
   name: 'Login',
91
   name: 'Login',
98
       text: '',
101
       text: '',
99
       showPassword: false,
102
       showPassword: false,
100
       password: '',
103
       password: '',
104
+      email: '',
101
     };
105
     };
102
   },
106
   },
107
+  computed: {
108
+    ...mapState('authentication', ['token', 'status']),
109
+  },
103
   methods: {
110
   methods: {
111
+    ...mapActions('authentication', ['login']),
104
     Login() {
112
     Login() {
105
-      axios
106
-        .post('/api/register/authenticate', {
107
-          username: this.username,
108
-          password: this.password,
109
-        })
110
-        .then(response => console.log(response.data))
111
-        .catch(error => console.log(error.push));
112
-      this.$router.push('/');
113
+      this.login({ username: this.username, password: this.password })
114
+        .then(() => this.router.push('/'))
115
+        .catch(err => console.log(err));
116
+      this.$router.push('/about/us');
113
     },
117
     },
114
     togglePassword() {
118
     togglePassword() {
115
       this.showPassword = true;
119
       this.showPassword = true;

+ 5
- 0
src/components/user/secure.vue ファイルの表示

1
+<template>
2
+  <div>
3
+    <h1>This page is protected by auth</h1>
4
+  </div>
5
+</template>

+ 19
- 0
src/main.js ファイルの表示

1
 import Vue from 'vue';
1
 import Vue from 'vue';
2
 import EvaIcons from 'vue-eva-icons';
2
 import EvaIcons from 'vue-eva-icons';
3
+import axios from 'axios';
3
 import App from './App.vue';
4
 import App from './App.vue';
4
 import router from './router';
5
 import router from './router';
5
 import store from './store';
6
 import store from './store';
8
 
9
 
9
 Vue.config.productionTip = false;
10
 Vue.config.productionTip = false;
10
 
11
 
12
+Vue.prototype.$http = axios;
13
+const token = localStorage.getItem('token');
14
+if (token) {
15
+  Vue.prototype.$http.defaults.headers.common.Authorization = token;
16
+}
17
+
18
+router.beforeEach((to, from, next) => {
19
+  if (to.matched.some(record => record.meta.requiresAuth)) {
20
+    if (store.getters.isLoggedIn) {
21
+      next();
22
+      return;
23
+    }
24
+    next('/users/login');
25
+  } else {
26
+    next();
27
+  }
28
+});
29
+
11
 Vue.filter('toCurrency', (value) => {
30
 Vue.filter('toCurrency', (value) => {
12
   if (typeof value !== 'number') {
31
   if (typeof value !== 'number') {
13
     return value;
32
     return value;

+ 2
- 0
src/router/index.js ファイルの表示

1
+/* eslint-disable import/prefer-default-export */
1
 import Vue from 'vue';
2
 import Vue from 'vue';
2
 import Router from 'vue-router';
3
 import Router from 'vue-router';
3
 
4
 
39
 
40
 
40
 import MakeOffer from '../components/processFlow/makeOffer.vue';
41
 import MakeOffer from '../components/processFlow/makeOffer.vue';
41
 import Offer from '../components/processFlow/offers.vue';
42
 import Offer from '../components/processFlow/offers.vue';
43
+// import store from '../store';
42
 
44
 
43
 Vue.use(Router);
45
 Vue.use(Router);
44
 
46
 

+ 2
- 0
src/store/index.js ファイルの表示

16
 import Register from './modules/user/register';
16
 import Register from './modules/user/register';
17
 import WeekList from './modules/timeshare/weekList';
17
 import WeekList from './modules/timeshare/weekList';
18
 import Bid from './modules/processFlow/bid';
18
 import Bid from './modules/processFlow/bid';
19
+import Authentication from './modules/user/authentication';
19
 
20
 
20
 Vue.use(Vuex);
21
 Vue.use(Vuex);
21
 /* eslint no-param-reassign: ["error", { "props": false }] */
22
 /* eslint no-param-reassign: ["error", { "props": false }] */
37
     registerAgency: Register,
38
     registerAgency: Register,
38
     weekList: WeekList,
39
     weekList: WeekList,
39
     bid: Bid,
40
     bid: Bid,
41
+    authentication: Authentication,
40
   },
42
   },
41
 });
43
 });

+ 67
- 0
src/store/modules/user/authentication.js ファイルの表示

1
+import Vue from 'vue';
2
+import Vuex from 'vuex';
3
+import axios from 'axios';
4
+
5
+Vue.use(Vuex);
6
+export default {
7
+  namespaced: true,
8
+  state: {
9
+    status: '',
10
+    token: localStorage.getItem('token') || '',
11
+    user: {},
12
+  },
13
+  mutations: {
14
+    auth_request(state) {
15
+      state.status = 'loading';
16
+    },
17
+    auth_success(state, token, user) {
18
+      state.status = 'success';
19
+      state.token = token;
20
+      state.user = user;
21
+    },
22
+    auth_error(state) {
23
+      state.status = 'error';
24
+    },
25
+    logout(state) {
26
+      state.status = '';
27
+      state.token = '';
28
+    },
29
+  },
30
+  getters: {
31
+    isLoggedIn: state => !!state.token,
32
+    authStatus: state => state.status,
33
+  },
34
+  actions: {
35
+    login({
36
+      commit,
37
+    }, user) {
38
+      return new Promise((reject) => {
39
+        commit('auth_request');
40
+        axios({
41
+          url: '/api/register/authenticate',
42
+          data: user,
43
+          method: 'POST',
44
+        })
45
+          .then((resp) => {
46
+            console.log(resp.data);
47
+            localStorage.setItem('token', resp.data.token);
48
+            commit('auth_success', resp.data.token, resp.data);
49
+          })
50
+          .catch((err) => {
51
+            commit('auth_error');
52
+            localStorage.removeItem('token');
53
+            reject(err);
54
+          });
55
+      });
56
+    },
57
+    logout({
58
+      commit,
59
+    }) {
60
+      return new Promise(() => {
61
+        commit('logout');
62
+        localStorage.removeItem('token');
63
+        delete axios.defaults.headers.common.Authorization;
64
+      });
65
+    },
66
+  },
67
+};

読み込み中…
キャンセル
保存