Przeglądaj źródła

Merge files

master
Kobus 5 lat temu
rodzic
commit
ca362da419

+ 5
- 0
package-lock.json Wyświetl plik

7793
         }
7793
         }
7794
       }
7794
       }
7795
     },
7795
     },
7796
+    "moment": {
7797
+      "version": "2.24.0",
7798
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
7799
+      "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
7800
+    },
7796
     "move-concurrently": {
7801
     "move-concurrently": {
7797
       "version": "1.0.1",
7802
       "version": "1.0.1",
7798
       "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
7803
       "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",

+ 1
- 0
package.json Wyświetl plik

17
     "jquery": "^3.4.1",
17
     "jquery": "^3.4.1",
18
     "lodash": "^4.17.15",
18
     "lodash": "^4.17.15",
19
     "material-design-icons-iconfont": "^3.0.3",
19
     "material-design-icons-iconfont": "^3.0.3",
20
+    "moment": "^2.24.0",
20
     "node-sass": "^4.12.0",
21
     "node-sass": "^4.12.0",
21
     "roboto-fontface": "*",
22
     "roboto-fontface": "*",
22
     "sass-loader": "^7.3.1",
23
     "sass-loader": "^7.3.1",

BIN
public/img/Article.jpg Wyświetl plik


BIN
public/img/Poll.png Wyświetl plik


BIN
public/img/Purchasing.jpg Wyświetl plik


BIN
public/img/Tenant.jpg Wyświetl plik


BIN
public/img/TopTip.png Wyświetl plik


+ 87
- 0
src/components/admin/logs/SearchLogs.vue Wyświetl plik

1
+<template>
2
+  <!-- eslint-disable max-len -->
3
+  <div>
4
+    <div class="container">
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 class="title-d" style="text-align:left; font-size: 250%">Search Log</h1>
15
+            </div>
16
+          </div>
17
+        </div>
18
+      </div>
19
+      <!-- </section> -->
20
+    </div>
21
+    <div class="container">
22
+      <table class="table table-bordered">
23
+        <thead>
24
+          <tr>
25
+            <th>Date</th>
26
+            <th>Time</th>
27
+            <th>User</th>
28
+            <th>Keyword</th>
29
+            <th>Sales Type</th>
30
+            <th>Property Usage Type</th>
31
+            <th>Property Type</th>
32
+            <th>Province</th>
33
+            <th>City</th>
34
+            <th>Suburb</th>
35
+          </tr>
36
+        </thead>
37
+        <tbody>
38
+          <tr v-for="(item, i) in propertySearch" :key="i">
39
+            <td>{{ formatDate(item.date) }}</td>
40
+            <td>{{ formatTime(item.date) }}</td>
41
+            <td v-if="item.user">{{ item.user }}</td>
42
+            <td v-else>No User</td>
43
+            <td>{{ item.keyword === 'All' ? '' : item.keyword }}</td>
44
+            <td>{{ item.salesType === 'All' ? '' : item.salesType }}</td>
45
+            <td>{{ item.propertyUsageType === 'All' ? '' : item.propertyUsageType }}</td>
46
+            <td>{{ item.propertyType === 'All' ? '' : item.propertyType }}</td>
47
+            <td>{{ item.province === 'All' ? '' : item.province }}</td>
48
+            <td>{{ item.city === 'All' ? '' : item.city }}</td>
49
+            <td>{{ item.suburb === 'All' ? '' : item.suburb }}</td>
50
+          </tr>
51
+        </tbody>
52
+      </table>
53
+    </div>
54
+    <br />
55
+  </div>
56
+</template>
57
+
58
+<script>
59
+import { mapState, mapActions } from 'vuex';
60
+import moment from 'moment';
61
+import Vue from 'vue';
62
+import excel from 'vue-excel-export';
63
+
64
+Vue.use(excel);
65
+
66
+export default {
67
+  name: 'searchLog',
68
+  data() {
69
+    return {};
70
+  },
71
+  methods: {
72
+    ...mapActions('searchLog', ['getPropertySearchLogs']),
73
+    formatDate(value) {
74
+      return moment(String(value)).format('YYYY/MM/DD');
75
+    },
76
+    formatTime(value) {
77
+      return moment(String(value)).format('hh:mm');
78
+    },
79
+  },
80
+  mounted() {
81
+    this.getPropertySearchLogs();
82
+  },
83
+  computed: {
84
+    ...mapState('searchLog', ['propertySearch']),
85
+  },
86
+};
87
+</script>

+ 95
- 13
src/components/admin/status/userManagementPage.vue Wyświetl plik

1
 <template>
1
 <template>
2
-  <!-- <section class="intro-single"> -->
2
+  <!-- eslint-disable max-len -->
3
   <div class="container">
3
   <div class="container">
4
     <br />
4
     <br />
5
     <br />
5
     <br />
7
     <br />
7
     <br />
8
     <div class="row">
8
     <div class="row">
9
       <div class="col-md-12 col-lg-8">
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">
10
         <div class="title-box-d">
14
           <h1 class="title-d" style="text-align:left; font-size: 250%">User Management</h1>
11
           <h1 class="title-d" style="text-align:left; font-size: 250%">User Management</h1>
15
         </div>
12
         </div>
16
         <br />
13
         <br />
17
       </div>
14
       </div>
18
     </div>
15
     </div>
19
-    <div id="table" class="col-xs-12 table-responsive">
20
-      <datatable :columns="columns" :data="rows"></datatable>
16
+    <button @click="addNewAgent" type="button" class="btn btn-b-n">Add New Agent</button>
17
+    <br />
18
+    <br />
19
+    <div class="container">
20
+      <table class="table table-bordered">
21
+        <thead>
22
+          <tr>
23
+            <th>ID</th>
24
+            <th>Name</th>
25
+            <th>Surname</th>
26
+            <th>Cell Number</th>
27
+            <th>Telephone Number</th>
28
+            <th>Email</th>
29
+            <th>Role</th>
30
+            <th>Reset Password</th>
31
+            <th></th>
32
+            <th></th>
33
+          </tr>
34
+        </thead>
35
+        <tbody>
36
+          <tr>
37
+            <td colspan="10">
38
+              <h5>Private Users</h5>
39
+            </td>
40
+          </tr>
41
+          <tr v-for="(item, i) in individuals" :key="i">
42
+            <td>{{ item.id }}</td>
43
+            <td>{{ item.name }}</td>
44
+            <td>{{ item.surname }}</td>
45
+            <td>{{ item.cellNumber }}</td>
46
+            <td>{{ item.telephone }}</td>
47
+            <td>{{ item.email }}</td>
48
+            <td v-if="item.user">{{ item.user.role }}</td>
49
+            <td v-else></td>
50
+            <td></td>
51
+            <td>
52
+              <button
53
+                type="button"
54
+                @click="Edit(item)"
55
+                class="btn btn-b-n"
56
+                style="width: 85px; height:40px;"
57
+              >Edit</button>
58
+            </td>
59
+            <td>
60
+              <button type="button" class="btn btn-b-n" style="width: 85px; height:40px">Delete</button>
61
+            </td>
62
+          </tr>
63
+          <tr>
64
+            <td colspan="10">
65
+              <h5>Agents</h5>
66
+            </td>
67
+          </tr>
68
+          <tr v-for="(item, i) in agents" :key="i">
69
+            <td>{{ item.id }}</td>
70
+            <td>{{ item.name }}</td>
71
+            <td>{{ item.surname }}</td>
72
+            <td>{{ item.cellNumber }}</td>
73
+            <td>{{ item.telephone }}</td>
74
+            <td>{{ item.email }}</td>
75
+            <td v-if="item.user">{{ item.user.role }}</td>
76
+            <td v-else></td>
77
+            <td></td>
78
+            <td>
79
+              <button
80
+                type="button"
81
+                @click="Edit(item)"
82
+                class="btn btn-b-n"
83
+                style="width: 85px; height:40px;"
84
+              >Edit</button>
85
+            </td>
86
+            <td>
87
+              <button type="button" class="btn btn-b-n" style="width: 85px; height:40px">Delete</button>
88
+            </td>
89
+          </tr>
90
+        </tbody>
91
+      </table>
21
     </div>
92
     </div>
93
+    <br />
22
   </div>
94
   </div>
23
-  <!-- </section> -->
24
 </template>
95
 </template>
25
 <script>
96
 <script>
26
 import { mapState, mapActions } from 'vuex';
97
 import { mapState, mapActions } from 'vuex';
98
+import axios from 'axios';
27
 
99
 
28
 export default {
100
 export default {
29
   name: 'userManagementPage',
101
   name: 'userManagementPage',
30
-  created() {
31
-    this.getuserManagementPage();
32
-  },
33
-  computed: {
34
-    ...mapState('status', ['userManagementPage']),
102
+  data() {
103
+    return {};
35
   },
104
   },
36
   methods: {
105
   methods: {
37
-    ...mapActions('status', ['getuserManagementPage']),
106
+    ...mapActions('registerIndividual', ['getIndividuals', 'getAgents']),
107
+    addNewAgent({ commit }) {
108
+      axios
109
+        .post('/api/agent')
110
+        .then(result => commit('saveAgent', result.data))
111
+        .catch(console.error);
112
+    },
113
+  },
114
+  mounted() {
115
+    this.getIndividuals();
116
+    this.getAgents();
117
+  },
118
+  computed: {
119
+    ...mapState('registerIndividual', ['individuals', 'agents']),
38
   },
120
   },
39
 };
121
 };
40
 </script>
122
 </script>

+ 20
- 20
src/components/home/newsSection.vue Wyświetl plik

21
           <div class="carousel-item-c">
21
           <div class="carousel-item-c">
22
             <div class="card-box-b card-shadow news-box">
22
             <div class="card-box-b card-shadow news-box">
23
               <div class="img-box-b">
23
               <div class="img-box-b">
24
-                <img src="img/post-2.jpg" alt class="img-b img-fluid" />
24
+                <img src="img/Tenant.jpg" alt class="img-b img-fluid" />
25
               </div>
25
               </div>
26
               <div class="card-overlay">
26
               <div class="card-overlay">
27
                 <div class="card-header-b">
27
                 <div class="card-header-b">
28
                   <div class="card-category-b">
28
                   <div class="card-category-b">
29
-                    <a href="#" class="category-b">House</a>
29
+                    <a href="#" class="category-b">Article</a>
30
                   </div>
30
                   </div>
31
                   <div class="card-title-b">
31
                   <div class="card-title-b">
32
                     <h2 class="title-2">
32
                     <h2 class="title-2">
33
                       <a href="blog-single.html">
33
                       <a href="blog-single.html">
34
-                        House is comming
35
-                        <br />new
34
+                        Landlords, here’s how to spot a ‘bad’ tenant
35
+                        <br />
36
                       </a>
36
                       </a>
37
                     </h2>
37
                     </h2>
38
                   </div>
38
                   </div>
39
                   <div class="card-date">
39
                   <div class="card-date">
40
-                    <span class="date-b">18 Sep. 2017</span>
40
+                    <span class="date-b">31 Aug. 2019</span>
41
                   </div>
41
                   </div>
42
                 </div>
42
                 </div>
43
               </div>
43
               </div>
46
           <div class="carousel-item-c">
46
           <div class="carousel-item-c">
47
             <div class="card-box-b card-shadow news-box">
47
             <div class="card-box-b card-shadow news-box">
48
               <div class="img-box-b">
48
               <div class="img-box-b">
49
-                <img src="img/post-5.jpg" alt class="img-b img-fluid" />
49
+                <img src="img/Poll.png" alt class="img-b img-fluid" />
50
               </div>
50
               </div>
51
               <div class="card-overlay">
51
               <div class="card-overlay">
52
                 <div class="card-header-b">
52
                 <div class="card-header-b">
53
                   <div class="card-category-b">
53
                   <div class="card-category-b">
54
-                    <a href="#" class="category-b">Travel</a>
54
+                    <a href="#" class="category-b">Poll</a>
55
                   </div>
55
                   </div>
56
                   <div class="card-title-b">
56
                   <div class="card-title-b">
57
                     <h2 class="title-2">
57
                     <h2 class="title-2">
58
                       <a href="blog-single.html">
58
                       <a href="blog-single.html">
59
-                        Travel is comming
60
-                        <br />new
59
+                        Which would you rather?
60
+                        <br />
61
                       </a>
61
                       </a>
62
                     </h2>
62
                     </h2>
63
                   </div>
63
                   </div>
64
                   <div class="card-date">
64
                   <div class="card-date">
65
-                    <span class="date-b">18 Sep. 2017</span>
65
+                    <span class="date-b">23 Aug. 2019</span>
66
                   </div>
66
                   </div>
67
                 </div>
67
                 </div>
68
               </div>
68
               </div>
71
           <div class="carousel-item-c">
71
           <div class="carousel-item-c">
72
             <div class="card-box-b card-shadow news-box">
72
             <div class="card-box-b card-shadow news-box">
73
               <div class="img-box-b">
73
               <div class="img-box-b">
74
-                <img src="img/post-7.jpg" alt class="img-b img-fluid" />
74
+                <img src="img/Purchasing.jpg" alt class="img-b img-fluid" />
75
               </div>
75
               </div>
76
               <div class="card-overlay">
76
               <div class="card-overlay">
77
                 <div class="card-header-b">
77
                 <div class="card-header-b">
78
                   <div class="card-category-b">
78
                   <div class="card-category-b">
79
-                    <a href="#" class="category-b">Park</a>
79
+                    <a href="#" class="category-b">Article</a>
80
                   </div>
80
                   </div>
81
                   <div class="card-title-b">
81
                   <div class="card-title-b">
82
                     <h2 class="title-2">
82
                     <h2 class="title-2">
83
                       <a href="blog-single.html">
83
                       <a href="blog-single.html">
84
-                        Park is comming
85
-                        <br />new
84
+                        Six questions before purchasing
85
+                        <br />
86
                       </a>
86
                       </a>
87
                     </h2>
87
                     </h2>
88
                   </div>
88
                   </div>
89
                   <div class="card-date">
89
                   <div class="card-date">
90
-                    <span class="date-b">18 Sep. 2017</span>
90
+                    <span class="date-b">19 Aug. 2019</span>
91
                   </div>
91
                   </div>
92
                 </div>
92
                 </div>
93
               </div>
93
               </div>
96
           <div class="carousel-item-c">
96
           <div class="carousel-item-c">
97
             <div class="card-box-b card-shadow news-box">
97
             <div class="card-box-b card-shadow news-box">
98
               <div class="img-box-b">
98
               <div class="img-box-b">
99
-                <img src="img/post-3.jpg" alt class="img-b img-fluid" />
99
+                <img src="img/Article.jpg" alt class="img-b img-fluid" />
100
               </div>
100
               </div>
101
               <div class="card-overlay">
101
               <div class="card-overlay">
102
                 <div class="card-header-b">
102
                 <div class="card-header-b">
103
                   <div class="card-category-b">
103
                   <div class="card-category-b">
104
-                    <a href="#" class="category-b">Travel</a>
104
+                    <a href="#" class="category-b">Poll</a>
105
                   </div>
105
                   </div>
106
                   <div class="card-title-b">
106
                   <div class="card-title-b">
107
                     <h2 class="title-2">
107
                     <h2 class="title-2">
108
                       <a href="#">
108
                       <a href="#">
109
-                        Travel is comming
110
-                        <br />new
109
+                        December holidays; a perfect family escape.
110
+                        <br />
111
                       </a>
111
                       </a>
112
                     </h2>
112
                     </h2>
113
                   </div>
113
                   </div>
114
                   <div class="card-date">
114
                   <div class="card-date">
115
-                    <span class="date-b">18 Sep. 2017</span>
115
+                    <span class="date-b">23 Aug. 2019</span>
116
                   </div>
116
                   </div>
117
                 </div>
117
                 </div>
118
               </div>
118
               </div>

+ 83
- 12
src/components/misc/address.vue Wyświetl plik

9
       <div class="form-group row"></div>
9
       <div class="form-group row"></div>
10
       <div class="row" style="text-align:left">
10
       <div class="row" style="text-align:left">
11
         <div class="col-md-6" style="margin-bottom: 1em">
11
         <div class="col-md-6" style="margin-bottom: 1em">
12
-          <label>Street Number</label>
12
+          <label>Street Number *</label>
13
           <div class="input-group-prepend">
13
           <div class="input-group-prepend">
14
             <span class="input-group-text">
14
             <span class="input-group-text">
15
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
15
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
23
           </div>
23
           </div>
24
         </div>
24
         </div>
25
         <div class="col-md-6" style="margin-bottom: 1em">
25
         <div class="col-md-6" style="margin-bottom: 1em">
26
-          <label>Street Name</label>
26
+          <label>Street Name *</label>
27
           <div class="input-group-prepend">
27
           <div class="input-group-prepend">
28
             <span class="input-group-text">
28
             <span class="input-group-text">
29
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
29
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
32
           </div>
32
           </div>
33
         </div>
33
         </div>
34
         <div class="col-md-6" style="margin-bottom: 1em">
34
         <div class="col-md-6" style="margin-bottom: 1em">
35
-          <label>Suburb</label>
35
+          <label>Province *</label>
36
           <div class="input-group-prepend">
36
           <div class="input-group-prepend">
37
             <span class="input-group-text">
37
             <span class="input-group-text">
38
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
38
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
39
             </span>
39
             </span>
40
-            <input class="form-control" type="text" name="suburb" v-model="address.suburb" />
40
+            <select
41
+              class="form-control"
42
+              name="propertyType"
43
+              id="propertyType"
44
+              @change="ProvinceSelected"
45
+              v-model="address.provinceId"
46
+            >
47
+              <option value="0">Please select province</option>
48
+              <option
49
+                v-for="province in provinces"
50
+                :value="province.id"
51
+                :key="province.id"
52
+              >{{ province.description }}</option>
53
+            </select>
41
           </div>
54
           </div>
42
         </div>
55
         </div>
56
+
43
         <div class="col-md-6" style="margin-bottom: 1em">
57
         <div class="col-md-6" style="margin-bottom: 1em">
44
-          <label>City</label>
58
+          <label>City *</label>
45
           <div class="input-group-prepend">
59
           <div class="input-group-prepend">
46
             <span class="input-group-text">
60
             <span class="input-group-text">
47
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
61
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
48
             </span>
62
             </span>
49
-            <input class="form-control" type="text" name="city" v-model="address.city" />
63
+            <select
64
+              class="form-control"
65
+              name="propertyType"
66
+              id="propertyType"
67
+              @change="CitySelected"
68
+              v-model="address.cityId"
69
+            >
70
+              <option value="0">Please select city</option>
71
+              <option v-for="city in cities" :value="city.id" :key="city.id">{{ city.description }}</option>
72
+            </select>
50
           </div>
73
           </div>
51
         </div>
74
         </div>
52
         <div class="col-md-6" style="margin-bottom: 1em">
75
         <div class="col-md-6" style="margin-bottom: 1em">
53
-          <label>Province</label>
76
+          <label>Suburb *</label>
54
           <div class="input-group-prepend">
77
           <div class="input-group-prepend">
55
             <span class="input-group-text">
78
             <span class="input-group-text">
56
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
79
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
57
             </span>
80
             </span>
58
-            <select class="form-control" name="region" id="region" v-model="address.province">
59
-              <option v-for="(region, r) in regions" :key="r">{{region.regionName}}</option>
81
+            <select
82
+              class="form-control"
83
+              name="propertyType"
84
+              id="suburbselector"
85
+              v-model="address.suburbId"
86
+              @change="getPostalCode"
87
+            >
88
+              <option value="0">Please select suburb</option>
89
+              <option
90
+                v-for="suburb in suburbs"
91
+                :value="suburb.id"
92
+                :key="suburb.id"
93
+              >{{ suburb.description }}</option>
60
             </select>
94
             </select>
61
           </div>
95
           </div>
62
         </div>
96
         </div>
63
         <div class="col-md-6" style="margin-bottom: 1em">
97
         <div class="col-md-6" style="margin-bottom: 1em">
64
-          <label>Postal Code</label>
98
+          <label>Postal Code *</label>
65
           <div class="input-group-prepend">
99
           <div class="input-group-prepend">
66
             <span class="input-group-text">
100
             <span class="input-group-text">
67
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
101
               <eva-icon name="home-outline" fill="#60CBEB"></eva-icon>
75
 </template>
109
 </template>
76
 
110
 
77
 <script>
111
 <script>
78
-import { mapState } from 'vuex';
112
+import { mapState, mapActions } from 'vuex';
79
 
113
 
80
 export default {
114
 export default {
115
+  data() {
116
+    return {
117
+      propertyType: 'Residential',
118
+    };
119
+  },
81
   props: {
120
   props: {
82
     address: {},
121
     address: {},
83
   },
122
   },
84
   computed: {
123
   computed: {
85
-    ...mapState('timeshare', ['regions']),
124
+    ...mapState('searchTab', ['provinces', 'cities', 'suburbs']),
125
+  },
126
+  methods: {
127
+    ...mapActions('searchTab', ['getProvince', 'getCities', 'getSuburbs']),
128
+    ProvinceSelected(item) {
129
+      if (item.target.options.selectedIndex > 0) {
130
+        this.selectedProvince = this.provinces[
131
+          item.target.options.selectedIndex - 1
132
+        ].description;
133
+        this.getCities(Object.assign({}, { province: this.selectedProvince }));
134
+      }
135
+    },
136
+    CitySelected(item) {
137
+      if (item.target.options.selectedIndex > 0) {
138
+        this.selectedCity = this.cities[
139
+          item.target.options.selectedIndex - 1
140
+        ].description;
141
+        this.getSuburbs(
142
+          Object.assign(
143
+            {},
144
+            { province: this.selectedProvince, city: this.selectedCity },
145
+          ),
146
+        );
147
+      }
148
+    },
149
+    getPostalCode(item) {
150
+      this.address.postalCode = this.suburbs[
151
+        item.target.options.selectedIndex - 1
152
+      ].postalCode;
153
+    },
154
+  },
155
+  mounted() {
156
+    this.getProvince();
86
   },
157
   },
87
 };
158
 };
88
 </script>
159
 </script>

+ 9
- 2
src/components/property/propertyList.vue Wyświetl plik

49
             <td v-html="item.size" />
49
             <td v-html="item.size" />
50
             <td>{{ item.price }}</td>
50
             <td>{{ item.price }}</td>
51
             <td>{{ item.type }}</td>
51
             <td>{{ item.type }}</td>
52
-            <td>{{ item.publish }}</td>
52
+            <!-- <td>{{ item.publish }}</td> -->
53
+            <td></td>
53
             <td>{{ item.status }}</td>
54
             <td>{{ item.status }}</td>
54
             <td>
55
             <td>
55
               <button
56
               <button
57
                 @click="Edit(item)"
58
                 @click="Edit(item)"
58
                 class="btn btn-b-n"
59
                 class="btn btn-b-n"
59
                 style="width: 85px; height:40px;"
60
                 style="width: 85px; height:40px;"
61
+                disabled
60
               >Edit</button>
62
               >Edit</button>
61
             </td>
63
             </td>
62
             <td>
64
             <td>
63
-              <button type="button" class="btn btn-b-n" style="width: 85px; height:40px;">Delete</button>
65
+              <button
66
+                type="button"
67
+                class="btn btn-b-n"
68
+                style="width: 85px; height:40px;"
69
+                disabled
70
+              >Delete</button>
64
             </td>
71
             </td>
65
           </tr>
72
           </tr>
66
         </tbody>
73
         </tbody>

+ 1
- 64
src/components/property/propertyPage.vue Wyświetl plik

142
                       </div>
142
                       </div>
143
                     </div>
143
                     </div>
144
                   </div>
144
                   </div>
145
-                  <div class="row">
146
-                    <div class="col-md-12">
147
-                      <img src="img/agent-4.jpg" alt class="img-fluid" />
148
-                    </div>
149
-                  </div>
150
-                  <div class="row">
151
-                    <div class="col-md-12">
152
-                      <div class="property-agent">
153
-                        <h4 class="title-agent">Anabella Geller</h4>
154
-                        <p class="color-text-a">
155
-                          Nulla porttitor accumsan tincidunt. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet
156
-                          dui. Quisque velit nisi,
157
-                          pretium ut lacinia in, elementum id enim.
158
-                        </p>
159
-                        <ul class="list-unstyled">
160
-                          <li class="d-flex justify-content-between">
161
-                            <strong>Phone:</strong>
162
-                            <span class="color-text-a">(222) 4568932</span>
163
-                          </li>
164
-                          <li class="d-flex justify-content-between">
165
-                            <strong>Mobile:</strong>
166
-                            <span class="color-text-a">777 287 378 737</span>
167
-                          </li>
168
-                          <li class="d-flex justify-content-between">
169
-                            <strong>Email:</strong>
170
-                            <span class="color-text-a">annabella@example.com</span>
171
-                          </li>
172
-                          <li class="d-flex justify-content-between">
173
-                            <strong>Skype:</strong>
174
-                            <span class="color-text-a">Annabela.ge</span>
175
-                          </li>
176
-                        </ul>
177
-                        <div class="socials-a">
178
-                          <ul class="list-inline">
179
-                            <li class="list-inline-item">
180
-                              <a href="#">
181
-                                <i class="fa fa-facebook" aria-hidden="true"></i>
182
-                              </a>
183
-                            </li>
184
-                            <li class="list-inline-item">
185
-                              <a href="#">
186
-                                <i class="fa fa-twitter" aria-hidden="true"></i>
187
-                              </a>
188
-                            </li>
189
-                            <li class="list-inline-item">
190
-                              <a href="#">
191
-                                <i class="fa fa-instagram" aria-hidden="true"></i>
192
-                              </a>
193
-                            </li>
194
-                            <li class="list-inline-item">
195
-                              <a href="#">
196
-                                <i class="fa fa-pinterest-p" aria-hidden="true"></i>
197
-                              </a>
198
-                            </li>
199
-                            <li class="list-inline-item">
200
-                              <a href="#">
201
-                                <i class="fa fa-dribbble" aria-hidden="true"></i>
202
-                              </a>
203
-                            </li>
204
-                          </ul>
205
-                        </div>
206
-                      </div>
207
-                    </div>
208
-                  </div>
145
+
209
                   <div class="row">
146
                   <div class="row">
210
                     <div class="col-md-12">
147
                     <div class="col-md-12">
211
                       <div class="property-contact">
148
                       <div class="property-contact">

+ 29
- 56
src/components/property/propertySearchPage.vue Wyświetl plik

47
         </div>
47
         </div>
48
         <div class="col-md-4">
48
         <div class="col-md-4">
49
           <p>
49
           <p>
50
-            <img class="img-fluid" src="./../../../public/img/residential.jpg" alt="About Resale" style="border-radius:10px"/>
50
+            <img
51
+              class="img-fluid"
52
+              src="./../../../public/img/residential.jpg"
53
+              alt="About Resale"
54
+              style="border-radius:10px"
55
+            />
51
           </p>
56
           </p>
52
         </div>
57
         </div>
53
       </div>
58
       </div>
130
   </div>
135
   </div>
131
 </template>
136
 </template>
132
 <script>
137
 <script>
133
-import { mkdir } from 'fs';
134
 import { mapState, mapActions } from 'vuex';
138
 import { mapState, mapActions } from 'vuex';
135
 import propertyCard from './propertyCard.vue';
139
 import propertyCard from './propertyCard.vue';
136
 
140
 
179
         suburb: 'All',
183
         suburb: 'All',
180
       };
184
       };
181
 
185
 
182
-      if (typeof this.$route.params.propertyType === 'undefined') {
183
-        // eslint-disable-next-line vue/no-side-effects-in-computed-properties
184
-        this.propertySearch = this.$route.query;
185
-      } else {
186
+      if (Object.keys(this.$route.params).length > 0) {
187
+        if (this.$route.params.propertyUsageType) {
188
+          // eslint-disable-next-line vue/no-side-effects-in-computed-properties
189
+          this.propertySearch.propertyUsageType = this.$route.params.propertyUsageType;
190
+        }
191
+      }
192
+      if (Object.keys(this.$route.query).length > 0) {
193
+        if (Object.keys(this.$route.query).length > 2) {
194
+          // eslint-disable-next-line vue/no-side-effects-in-computed-properties
195
+          this.propertySearch = this.$route.query;
196
+        } else {
197
+          if (this.$route.query.salesType) {
198
+            // eslint-disable-next-line vue/no-side-effects-in-computed-properties
199
+            this.propertySearch.salesType = this.$route.query.salesType;
200
+          }
201
+          if (this.$route.query.propertyUsageType) {
202
+            // eslint-disable-next-line vue/no-side-effects-in-computed-properties
203
+            this.propertySearch.propertyUsageType = this.$route.query.propertyUsageType;
204
+          }
205
+        }
206
+      }
207
+      if (this.propertySearch.keyword === '') {
186
         // eslint-disable-next-line vue/no-side-effects-in-computed-properties
208
         // eslint-disable-next-line vue/no-side-effects-in-computed-properties
187
-        this.propertySearch.propertyUsageType = this.$route.params.propertyType;
209
+        this.propertySearch.keyword = 'All';
188
       }
210
       }
189
 
211
 
190
-      console.log(`PropertySearch = ${JSON.stringify(this.propertySearch)}`);
191
-
192
       this.searchProperties(this.propertySearch);
212
       this.searchProperties(this.propertySearch);
193
-      // this.type = this.$route.query.type;
194
-      // this.propertyType = this.$route.query.propertyType;
195
-      // this.province = this.$route.query.province;
196
-      // this.city = this.$route.query.city;
197
-      // this.suburb = this.$route.query.suburb;
198
-      // this.proptype = this.$route.query.propType;
199
-      // this.keyword = this.$route.query.keyword;
200
-      // if (typeof this.propertyType === 'undefined') {
201
-      //   this.propertyType = this.propertyTypeparam;
202
-      // }
203
-      // if (this.type === '') {
204
-      //   this.type = 'undefined';
205
-      // }
206
-      // if (this.propertyType === '') {
207
-      //   this.propertyType = 'undefined';
208
-      // }
209
-      // if (this.province === '') {
210
-      //   this.province = 'undefined';
211
-      // }
212
-      // if (this.city === '') {
213
-      //   this.city = 'undefined';
214
-      // }
215
-      // if (this.suburb === '') {
216
-      //   this.suburb = 'undefined';
217
-      // }
218
-      // if (this.proptype === '') {
219
-      //   this.propType = 'undefined';
220
-      // }
221
-      // if (typeof this.keyword === 'undefined' || this.keyword === '') {
222
-      //   this.searchPropertiesParams(
223
-      //     Object.assign(
224
-      //       {},
225
-      //       {
226
-      //         type: this.type,
227
-      //         propertyType: this.propertyType,
228
-      //         province: this.province,
229
-      //         city: this.city,
230
-      //         suburb: this.suburb,
231
-      //         propType: this.proptype,
232
-      //       },
233
-      //     ),
234
-      //   );
235
-      // } else {
236
-      //   this.searchPropertiesKeyword(
237
-      //     Object.assign({}, { keyword: this.keyword }),
238
-      //   );
239
-      // }
240
       return null;
213
       return null;
241
     },
214
     },
242
   },
215
   },

+ 3
- 3
src/components/shared/bankAccount.vue Wyświetl plik

9
       <div class="form-group row"></div>
9
       <div class="form-group row"></div>
10
       <div class="row" style="text-align:left">
10
       <div class="row" style="text-align:left">
11
         <div class="col-md-6" style="margin-bottom: 1em">
11
         <div class="col-md-6" style="margin-bottom: 1em">
12
-          <label>Bank</label>
12
+          <label>Bank *</label>
13
           <div class="input-group-prepend">
13
           <div class="input-group-prepend">
14
             <span class="input-group-text">
14
             <span class="input-group-text">
15
               <eva-icon name="behance-outline" fill="#60CBEB"></eva-icon>
15
               <eva-icon name="behance-outline" fill="#60CBEB"></eva-icon>
18
           </div>
18
           </div>
19
         </div>
19
         </div>
20
         <div class="col-md-6" style="margin-bottom: 1em">
20
         <div class="col-md-6" style="margin-bottom: 1em">
21
-          <label>Account Number</label>
21
+          <label>Account Number *</label>
22
           <div class="input-group-prepend">
22
           <div class="input-group-prepend">
23
             <span class="input-group-text">
23
             <span class="input-group-text">
24
               <eva-icon name="navigation-outline" fill="#60CBEB"></eva-icon>
24
               <eva-icon name="navigation-outline" fill="#60CBEB"></eva-icon>
32
           </div>
32
           </div>
33
         </div>
33
         </div>
34
         <div class="col-md-6" style="margin-bottom: 1em">
34
         <div class="col-md-6" style="margin-bottom: 1em">
35
-          <label>Account Holder</label>
35
+          <label>Account Holder *</label>
36
           <div class="input-group-prepend">
36
           <div class="input-group-prepend">
37
             <span class="input-group-text">
37
             <span class="input-group-text">
38
               <eva-icon name="person-done-outline" fill="#60CBEB"></eva-icon>
38
               <eva-icon name="person-done-outline" fill="#60CBEB"></eva-icon>

+ 6
- 1
src/components/shared/navBar.vue Wyświetl plik

134
               </div>
134
               </div>
135
             </li>
135
             </li>
136
 
136
 
137
-            <li class="nav-item dropdown">
137
+            <li v-if="showLogout" class="nav-item dropdown">
138
               <a
138
               <a
139
                 class="nav-link dropdown-toggle"
139
                 class="nav-link dropdown-toggle"
140
                 href="#"
140
                 href="#"
174
                   class="dropdown-item cursor-pointer"
174
                   class="dropdown-item cursor-pointer"
175
                   @click="routerGoTo('/propertyTypes/list')"
175
                   @click="routerGoTo('/propertyTypes/list')"
176
                 >Property Types</a>
176
                 >Property Types</a>
177
+                <a
178
+                  class="dropdown-item cursor-pointer"
179
+                  @click="routerGoTo('/searchLog')"
180
+                >Search Logs</a>
181
+                <a class="dropdown-item cursor-pointer" @click="routerGoTo('/Offers')">Offers</a>
177
               </div>
182
               </div>
178
             </li>
183
             </li>
179
             <li class="nav-item dropdown">
184
             <li class="nav-item dropdown">

+ 8
- 8
src/components/timeshare/buy/weekListComponent.vue Wyświetl plik

4
       <table class="table table-bordered">
4
       <table class="table table-bordered">
5
         <thead>
5
         <thead>
6
           <tr>
6
           <tr>
7
-            <th>Region</th>
7
+            <th>Province</th>
8
             <th>Resort</th>
8
             <th>Resort</th>
9
-            <th>Unit Number</th>
10
-            <th>Week Number</th>
11
-            <th>Arrival Date</th>
12
-            <th>Departure Date</th>
9
+            <th>Unit</th>
10
+            <th>Week</th>
11
+            <th>Arrival</th>
12
+            <th>Departure</th>
13
             <th>Bedrooms</th>
13
             <th>Bedrooms</th>
14
-            <th>Price</th>
15
-            <th>Status</th>
14
+            <th style="width:15%">Price</th>
15
+            <!-- <th>Status</th> -->
16
             <th>Interested</th>
16
             <th>Interested</th>
17
           </tr>
17
           </tr>
18
         </thead>
18
         </thead>
26
             <td>{{item.departureDate | toDate}}</td>
26
             <td>{{item.departureDate | toDate}}</td>
27
             <td>{{item.bedrooms}}</td>
27
             <td>{{item.bedrooms}}</td>
28
             <td>{{item.sellPrice | toCurrency}}</td>
28
             <td>{{item.sellPrice | toCurrency}}</td>
29
-            <td>{{item.status ? item.status.description : ''}}</td>
29
+            <!-- <td>{{item.status ? item.status.description : ''}}</td> -->
30
             <td>
30
             <td>
31
               <div class="col-md-12">
31
               <div class="col-md-12">
32
                 <button
32
                 <button

+ 308
- 331
src/components/timeshare/faqPage.vue Wyświetl plik

19
         <div class="container col-md-10">
19
         <div class="container col-md-10">
20
           <br />
20
           <br />
21
           <div id="accordion">
21
           <div id="accordion">
22
-            <div class="card">
23
-              <div class="card-header" id="heading1" style="text-align:left">
24
-                <h5 class="mb-0 color-text-a">
25
-                  <button
26
-                    class="btn btn-link font-weight-bold color-b"
27
-                    data-toggle="collapse"
28
-                    data-target="#collapse1"
29
-                    aria-expanded="true"
30
-                    aria-controls="collapse1"
31
-                  >What is timeshare vacation ownership?</button>
32
-                </h5>
33
-              </div>
34
-              <div
35
-                id="collapse1"
36
-                class="collapse show color-text-a"
37
-                aria-labelledby="heading1"
38
-                data-parent="#accordion"
39
-              >
40
-                <div class="card-body" style="text-align:left">
41
-                  Owning a timeshare means you own a portion of time in a specific unit in a resort. Most commonly the
42
-                  increments are sold per week and usually this means Friday to Friday depending on the specific resorts
43
-                  calendar. In specific resorts it could also mean midweek or weekend modules.
44
-                </div>
45
-              </div>
22
+            <!-- <div class="card"> -->
23
+            <div class="card" id="heading1">
24
+              <!-- <h5 class="mb-0 color-text-a"> -->
25
+              <button
26
+                class="btn btn-link font-weight-bold color-b text-left"
27
+                data-toggle="collapse"
28
+                data-target="#collapse1"
29
+                aria-expanded="true"
30
+                aria-controls="collapse1"
31
+              >What is timeshare vacation ownership?</button>
32
+              <!-- </h5> -->
46
             </div>
33
             </div>
47
-            <div class="card">
48
-              <div class="card-header" id="heading2" style="text-align:left">
49
-                <h5 class="mb-0">
50
-                  <button
51
-                    class="btn btn-link font-weight-bold color-b"
52
-                    data-toggle="collapse"
53
-                    data-target="#collapse2"
54
-                    aria-expanded="false"
55
-                    aria-controls="collapse2"
56
-                  >What is included in my timeshare?</button>
57
-                </h5>
58
-              </div>
59
-              <div
60
-                id="collapse2"
61
-                class="collapse"
62
-                aria-labelledby="heading2"
63
-                data-parent="#accordion"
64
-              >
65
-                <div class="card-body" style="text-align:left">
66
-                  Most timeshare resorts are self-catering which means you have a ‘home away from home” holiday. You will
67
-                  not be required to pay for your accommodation week other than a maintenance levy which is charged by the
68
-                  resort. Some resorts do charge a key or breakage deposit but these are usually refundable.
69
-                </div>
34
+            <div
35
+              id="collapse1"
36
+              class="collapse show color-text-a"
37
+              aria-labelledby="heading1"
38
+              data-parent="#accordion"
39
+            >
40
+              <div class="card-body" style="text-align:left">
41
+                Owning a timeshare means you own a portion of time in a specific unit in a resort. Most commonly the
42
+                increments are sold per week and usually this means Friday to Friday depending on the specific resorts
43
+                calendar. In specific resorts it could also mean midweek or weekend modules.
70
               </div>
44
               </div>
71
             </div>
45
             </div>
72
-            <div class="card">
73
-              <div class="card-header" id="heading3" style="text-align:left">
74
-                <h5 class="mb-0">
75
-                  <button
76
-                    class="btn btn-link font-weight-bold color-b"
77
-                    data-toggle="collapse"
78
-                    data-target="#collapse3"
79
-                    aria-expanded="false"
80
-                    aria-controls="collapse3"
81
-                  >What is timeshare resale?</button>
82
-                </h5>
83
-              </div>
84
-              <div
85
-                id="collapse3"
86
-                class="collapse"
87
-                aria-labelledby="heading3"
88
-                data-parent="#accordion"
89
-              >
90
-                <div class="card-body" style="text-align:left">
91
-                  Should the needs or lifestyle change for the timeshare owner, he may decide to sell his week. As a proud
92
-                  member of VOASA, Uni-Vate Properties are accredited agents who facilitate this process for the seller and
93
-                  prospective buyer, ensuring sound and ethical business practice for all transactions.
94
-                </div>
95
-              </div>
46
+
47
+            <!-- <div class="card"> -->
48
+            <div class="card" id="heading2">
49
+              <!-- <h5 class="mb-0"> -->
50
+              <button
51
+                class="btn btn-link font-weight-bold color-b text-left"
52
+                data-toggle="collapse"
53
+                data-target="#collapse2"
54
+                aria-expanded="false"
55
+                aria-controls="collapse2"
56
+              >What is included in my timeshare?</button>
57
+              <!-- </h5> -->
96
             </div>
58
             </div>
97
-            <div class="card">
98
-              <div class="card-header" id="heading4" style="text-align:left">
99
-                <h5 class="mb-0">
100
-                  <button
101
-                    class="btn btn-link font-weight-bold color-b"
102
-                    data-toggle="collapse"
103
-                    data-target="#collapse4"
104
-                    aria-expanded="false"
105
-                    aria-controls="collapse4"
106
-                  >Can Uni-Vate Properties sell my points?</button>
107
-                </h5>
108
-              </div>
109
-              <div
110
-                id="collapse4"
111
-                class="collapse"
112
-                aria-labelledby="heading4"
113
-                data-parent="#accordion"
114
-              >
115
-                <div class="card-body" style="text-align:left">
116
-                  Uni-Vate Properties specialise in fixed weeks or flexi week timeshare but are qualified to sell and/or
117
-                  advise on points sales.
118
-                </div>
59
+            <div
60
+              id="collapse2"
61
+              class="collapse"
62
+              aria-labelledby="heading2"
63
+              data-parent="#accordion"
64
+            >
65
+              <div class="card-body" style="text-align:left">
66
+                Most timeshare resorts are self-catering which means you have a ‘home away from home” holiday. You will
67
+                not be required to pay for your accommodation week other than a maintenance levy which is charged by the
68
+                resort. Some resorts do charge a key or breakage deposit but these are usually refundable.
119
               </div>
69
               </div>
120
             </div>
70
             </div>
121
-            <div class="card">
122
-              <div class="card-header" id="heading5" style="text-align:left">
123
-                <h5 class="mb-0">
124
-                  <button
125
-                    class="btn btn-link font-weight-bold color-b"
126
-                    data-toggle="collapse"
127
-                    data-target="#collapse5"
128
-                    aria-expanded="false"
129
-                    aria-controls="collapse5"
130
-                  >How do I list my week with Uni-Vate Properties?</button>
131
-                </h5>
132
-              </div>
133
-              <div
134
-                id="collapse5"
135
-                class="collapse"
136
-                aria-labelledby="heading5"
137
-                data-parent="#accordion"
138
-              >
139
-                <div class="card-body" style="text-align:left">
140
-                  You can complete the on-line details which you will find under the “To Sell” tab. There will be a listing
141
-                  fee payable of R380 including VAT. The details submitted will go through a verification process. Subject
142
-                  to there being no complications, the listing will be processed and published.
143
-                </div>
144
-              </div>
71
+            <!-- </div> -->
72
+            <div class="card" id="heading3">
73
+              <!-- <h5 class="mb-0"> -->
74
+              <button
75
+                class="btn btn-link font-weight-bold color-b text-left"
76
+                data-toggle="collapse"
77
+                data-target="#collapse3"
78
+                aria-expanded="false"
79
+                aria-controls="collapse3"
80
+              >What is timeshare resale?</button>
81
+              <!-- </h5> -->
145
             </div>
82
             </div>
146
-            <div class="card">
147
-              <div class="card-header" id="heading6" style="text-align:left">
148
-                <h5 class="mb-0">
149
-                  <button
150
-                    class="btn btn-link font-weight-bold color-b"
151
-                    data-toggle="collapse"
152
-                    data-target="#collapse6"
153
-                    aria-expanded="false"
154
-                    aria-controls="collapse6"
155
-                  >Is timeshare an investment?</button>
156
-                </h5>
157
-              </div>
158
-              <div
159
-                id="collapse6"
160
-                class="collapse"
161
-                aria-labelledby="heading6"
162
-                data-parent="#accordion"
163
-              >
164
-                <div class="card-body" style="text-align:left">
165
-                  Timeshare is not an appreciating property investment but it is an investment into your vacation lifestyle.
166
-                  It will improve your lifestyle and the quality and variety of your family holidays both locally and
167
-                  internationally while saving you money. The memories gained and the time spent with loved ones is
168
-                  priceless.
169
-                </div>
83
+            <div
84
+              id="collapse3"
85
+              class="collapse"
86
+              aria-labelledby="heading3"
87
+              data-parent="#accordion"
88
+            >
89
+              <div class="card-body" style="text-align:left">
90
+                Should the needs or lifestyle change for the timeshare owner, he may decide to sell his week. As a proud
91
+                member of VOASA, Uni-Vate Properties are accredited agents who facilitate this process for the seller and
92
+                prospective buyer, ensuring sound and ethical business practice for all transactions.
170
               </div>
93
               </div>
171
             </div>
94
             </div>
172
-            <div class="card">
173
-              <div class="card-header" id="heading7" style="text-align:left">
174
-                <h5 class="mb-0">
175
-                  <button
176
-                    class="btn btn-link font-weight-bold color-b"
177
-                    data-toggle="collapse"
178
-                    data-target="#collapse7"
179
-                    aria-expanded="false"
180
-                    aria-controls="collapse7"
181
-                  >How is my week sold?</button>
182
-                </h5>
183
-              </div>
184
-              <div
185
-                id="collapse7"
186
-                class="collapse"
187
-                aria-labelledby="heading7"
188
-                data-parent="#accordion"
189
-              >
190
-                <div class="card-body" style="text-align:left">
191
-                  Through Uni-Vate Properties your week will be marketed extensively to all of their available channels.
192
-                  Uni-Vate will only charge a listing Fee of R380 including VAT which is due when listing.
193
-                </div>
194
-              </div>
95
+            <div class="card" id="heading4">
96
+              <!-- <h5 class="mb-0"> -->
97
+              <button
98
+                class="btn btn-link font-weight-bold color-b text-left"
99
+                data-toggle="collapse"
100
+                data-target="#collapse4"
101
+                aria-expanded="false"
102
+                aria-controls="collapse4"
103
+              >Can Uni-Vate Properties sell my points?</button>
104
+              <!-- </h5> -->
195
             </div>
105
             </div>
196
-            <div class="card">
197
-              <div class="card-header" id="heading8" style="text-align:left">
198
-                <h5 class="mb-0">
199
-                  <button
200
-                    class="btn btn-link font-weight-bold color-b"
201
-                    data-toggle="collapse"
202
-                    data-target="#collapse8"
203
-                    aria-expanded="false"
204
-                    aria-controls="collapse8"
205
-                  >How do I buy a week?</button>
206
-                </h5>
207
-              </div>
208
-              <div
209
-                id="collapse8"
210
-                class="collapse"
211
-                aria-labelledby="heading8"
212
-                data-parent="#accordion"
213
-              >
214
-                <div class="card-body" style="text-align:left">
215
-                  All available and verified weeks will be listed on the website for prospective buyers. Once you identify a
216
-                  week that suits your holiday need and price, click on “Enquire Now” and complete your details to conclude
217
-                  the initiation of the transaction.
218
-                </div>
106
+            <div
107
+              id="collapse4"
108
+              class="collapse"
109
+              aria-labelledby="heading4"
110
+              data-parent="#accordion"
111
+            >
112
+              <div class="card-body" style="text-align:left">
113
+                Uni-Vate Properties specialise in fixed weeks or flexi week timeshare but are qualified to sell and/or
114
+                advise on points sales.
219
               </div>
115
               </div>
220
             </div>
116
             </div>
221
-            <div class="card">
222
-              <div class="card-header" id="heading9" style="text-align:left">
223
-                <h5 class="mb-0">
224
-                  <button
225
-                    class="btn btn-link font-weight-bold color-b"
226
-                    data-toggle="collapse"
227
-                    data-target="#collapse9"
228
-                    aria-expanded="false"
229
-                    aria-controls="collapse9"
230
-                  >Is my money safe?</button>
231
-                </h5>
232
-              </div>
233
-              <div
234
-                id="collapse9"
235
-                class="collapse"
236
-                aria-labelledby="heading9"
237
-                data-parent="#accordion"
238
-              >
239
-                <div class="card-body" style="text-align:left">
240
-                  By law, your money will be held in a trust account while the transfer is being processed. This trust
241
-                  account is a specification of any company registered as an estate agency with the EAAB.
242
-                </div>
243
-              </div>
117
+            <div class="card" id="heading5">
118
+              <!-- <h5 class="mb-0"> -->
119
+              <button
120
+                class="btn btn-link font-weight-bold color-b text-left"
121
+                data-toggle="collapse"
122
+                data-target="#collapse5"
123
+                aria-expanded="false"
124
+                aria-controls="collapse5"
125
+              >How do I list my week with Uni-Vate Properties?</button>
126
+              <!-- </h5> -->
244
             </div>
127
             </div>
245
-            <div class="card">
246
-              <div class="card-header" id="heading10" style="text-align:left">
247
-                <h5 class="mb-0">
248
-                  <button
249
-                    class="btn btn-link font-weight-bold color-b"
250
-                    data-toggle="collapse"
251
-                    data-target="#collapse10"
252
-                    aria-expanded="false"
253
-                    aria-controls="collapse10"
254
-                  >Can I exchange my timeshare for other destinations?</button>
255
-                </h5>
128
+            <div
129
+              id="collapse5"
130
+              class="collapse"
131
+              aria-labelledby="heading5"
132
+              data-parent="#accordion"
133
+            >
134
+              <div class="card-body" style="text-align:left">
135
+                You can complete the on-line details which you will find under the “To Sell” tab. There will be a listing
136
+                fee payable of R380 including VAT. The details submitted will go through a verification process. Subject
137
+                to there being no complications, the listing will be processed and published.
256
               </div>
138
               </div>
257
-              <div
258
-                id="collapse10"
259
-                class="collapse"
260
-                aria-labelledby="heading10"
261
-                data-parent="#accordion"
262
-              >
263
-                <div class="card-body" style="text-align:left">
264
-                  Most definitely! Once the week has been transferred to you, you have a choice of membership with RCI
265
-                  and/or DAE, two of the worlds largest exchange companies that will gladly exchange your week for you
266
-                  anywhere in the world with friendly and professional service. We will gladly put you in touch with them
267
-                  and the entire world will be available to you for holidays.
268
-                </div>
139
+            </div>
140
+            <div class="card" id="heading6">
141
+              <!-- <h5 class="mb-0"> -->
142
+              <button
143
+                class="btn btn-link font-weight-bold color-b text-left"
144
+                data-toggle="collapse"
145
+                data-target="#collapse6"
146
+                aria-expanded="false"
147
+                aria-controls="collapse6"
148
+              >Is timeshare an investment?</button>
149
+              <!-- </h5> -->
150
+            </div>
151
+            <div
152
+              id="collapse6"
153
+              class="collapse"
154
+              aria-labelledby="heading6"
155
+              data-parent="#accordion"
156
+            >
157
+              <div class="card-body" style="text-align:left">
158
+                Timeshare is not an appreciating property investment but it is an investment into your vacation lifestyle.
159
+                It will improve your lifestyle and the quality and variety of your family holidays both locally and
160
+                internationally while saving you money. The memories gained and the time spent with loved ones is
161
+                priceless.
269
               </div>
162
               </div>
270
             </div>
163
             </div>
271
-            <div class="card">
272
-              <div class="card-header" id="heading11" style="text-align:left">
273
-                <h5 class="mb-0">
274
-                  <button
275
-                    class="btn btn-link font-weight-bold color-b"
276
-                    data-toggle="collapse"
277
-                    data-target="#collapse11"
278
-                    aria-expanded="false"
279
-                    aria-controls="collapse11"
280
-                  >There are so many agents and scam artists out there. Why Uni-Vate Properties?</button>
281
-                </h5>
164
+            <div class="card" id="heading7">
165
+              <!-- <h5 class="mb-0"> -->
166
+              <button
167
+                class="btn btn-link font-weight-bold color-b text-left"
168
+                data-toggle="collapse"
169
+                data-target="#collapse7"
170
+                aria-expanded="false"
171
+                aria-controls="collapse7"
172
+              >How is my week sold?</button>
173
+              <!-- </h5> -->
174
+            </div>
175
+            <div
176
+              id="collapse7"
177
+              class="collapse"
178
+              aria-labelledby="heading7"
179
+              data-parent="#accordion"
180
+            >
181
+              <div class="card-body" style="text-align:left">
182
+                Through Uni-Vate Properties your week will be marketed extensively to all of their available channels.
183
+                Uni-Vate will only charge a listing Fee of R380 including VAT which is due when listing.
282
               </div>
184
               </div>
283
-              <div
284
-                id="collapse11"
285
-                class="collapse"
286
-                aria-labelledby="heading"
287
-                data-parent="#accordion"
288
-              >
289
-                <div class="card-body" style="text-align:left">
290
-                  Uni-Vate Properties (Pty) Ltd is affiliated to the Estate Agents Board (EAAB) as well as the Institute of
291
-                  Estate Agents South Africa (IEASA) and are obliged to comply with the Estate Agents Code of Conduct. We
292
-                  are also proud members of Vacation Ownership Association South Africa (VOASA) and are obliged to comply
293
-                  with their code too. This assures our clients of professional, ethical and fair service at all times. We
294
-                  also have 25 years’ experience in the Timeshare industry in SA and to date the team have processed many
295
-                  sales in the residential, share block and commercial arenas within South Africa and are currently involved
296
-                  in the rental and management of 40 commercial and 15 residential properties. The Uni-Vate resale support
297
-                  team consists of three highly qualified and experienced staff, who have thirteen years’ joint experience
298
-                  in the timeshare resales industry.
299
-                </div>
185
+            </div>
186
+            <div class="card" id="heading8">
187
+              <!-- <h5 class="mb-0"> -->
188
+              <button
189
+                class="btn btn-link font-weight-bold color-b text-left"
190
+                data-toggle="collapse"
191
+                data-target="#collapse8"
192
+                aria-expanded="false"
193
+                aria-controls="collapse8"
194
+              >How do I buy a week?</button>
195
+              <!-- </h5> -->
196
+            </div>
197
+            <div
198
+              id="collapse8"
199
+              class="collapse"
200
+              aria-labelledby="heading8"
201
+              data-parent="#accordion"
202
+            >
203
+              <div class="card-body" style="text-align:left">
204
+                All available and verified weeks will be listed on the website for prospective buyers. Once you identify a
205
+                week that suits your holiday need and price, click on “Enquire Now” and complete your details to conclude
206
+                the initiation of the transaction.
300
               </div>
207
               </div>
301
             </div>
208
             </div>
302
-            <div class="card">
303
-              <div class="card-header" id="heading12" style="text-align:left">
304
-                <h5 class="mb-0">
305
-                  <button
306
-                    class="btn btn-link font-weight-bold color-b"
307
-                    data-toggle="collapse"
308
-                    data-target="#collapse12"
309
-                    aria-expanded="false"
310
-                    aria-controls="collapse12"
311
-                  >Why would I buy a resale week rather than a new week?</button>
312
-                </h5>
209
+            <div class="card" id="heading9">
210
+              <!-- <h5 class="mb-0"> -->
211
+              <button
212
+                class="btn btn-link font-weight-bold color-b text-left"
213
+                data-toggle="collapse"
214
+                data-target="#collapse9"
215
+                aria-expanded="false"
216
+                aria-controls="collapse9"
217
+              >Is my money safe?</button>
218
+              <!-- </h5> -->
219
+            </div>
220
+            <div
221
+              id="collapse9"
222
+              class="collapse"
223
+              aria-labelledby="heading9"
224
+              data-parent="#accordion"
225
+            >
226
+              <div class="card-body" style="text-align:left">
227
+                By law, your money will be held in a trust account while the transfer is being processed. This trust
228
+                account is a specification of any company registered as an estate agency with the EAAB.
313
               </div>
229
               </div>
314
-              <div
315
-                id="collapse12"
316
-                class="collapse"
317
-                aria-labelledby="heading12"
318
-                data-parent="#accordion"
319
-              >
320
-                <div class="card-body" style="text-align:left">
321
-                  Both are equally viable. The difference is either the seller is the developer of a resort marketing
322
-                  directly to the public and offering finance options on the purchase, or an individual who wants to sell
323
-                  their week for a variety of reasons. Often when purchasing from an individual the price can be negotiated
324
-                  as it is a cash sale with no financing options.
325
-                  Its all about finding the resort and time of your choice that fits your pocket so that you can have many
326
-                  years of happy holidays. Uni-Vate Properties are highly qualified in offering sound advice and assisting
327
-                  you in what can be a tricky decision.
328
-                </div>
230
+            </div>
231
+            <div class="card" id="heading10">
232
+              <!-- <h5 class="mb-0"> -->
233
+              <button
234
+                class="btn btn-link font-weight-bold color-b text-left"
235
+                data-toggle="collapse"
236
+                data-target="#collapse10"
237
+                aria-expanded="false"
238
+                aria-controls="collapse10"
239
+              >Can I exchange my timeshare for other destinations?</button>
240
+              <!-- </h5> -->
241
+            </div>
242
+            <div
243
+              id="collapse10"
244
+              class="collapse"
245
+              aria-labelledby="heading10"
246
+              data-parent="#accordion"
247
+            >
248
+              <div class="card-body" style="text-align:left">
249
+                Most definitely! Once the week has been transferred to you, you have a choice of membership with RCI
250
+                and/or DAE, two of the worlds largest exchange companies that will gladly exchange your week for you
251
+                anywhere in the world with friendly and professional service. We will gladly put you in touch with them
252
+                and the entire world will be available to you for holidays.
329
               </div>
253
               </div>
330
             </div>
254
             </div>
331
-            <div class="card">
332
-              <div class="card-header" id="heading13" style="text-align:left">
333
-                <h5 class="mb-0">
334
-                  <button
335
-                    class="btn btn-link font-weight-bold color-b"
336
-                    data-toggle="collapse"
337
-                    data-target="#collapse13"
338
-                    aria-expanded="false"
339
-                    aria-controls="collapse13"
340
-                  >How is the price of the week determined?</button>
341
-                </h5>
255
+            <div class="card" id="heading11">
256
+              <!-- <h5 class="mb-0"> -->
257
+              <button
258
+                class="btn btn-link font-weight-bold color-b text-left"
259
+                data-toggle="collapse"
260
+                data-target="#collapse11"
261
+                aria-expanded="false"
262
+                aria-controls="collapse11"
263
+              >There are so many agents and scam artists out there. Why Uni-Vate Properties?</button>
264
+              <!-- </h5> -->
265
+            </div>
266
+            <div
267
+              id="collapse11"
268
+              class="collapse"
269
+              aria-labelledby="heading"
270
+              data-parent="#accordion"
271
+            >
272
+              <div class="card-body" style="text-align:left">
273
+                Uni-Vate Properties (Pty) Ltd is affiliated to the Estate Agents Board (EAAB) as well as the Institute of
274
+                Estate Agents South Africa (IEASA) and are obliged to comply with the Estate Agents Code of Conduct. We
275
+                are also proud members of Vacation Ownership Association South Africa (VOASA) and are obliged to comply
276
+                with their code too. This assures our clients of professional, ethical and fair service at all times. We
277
+                also have 25 years’ experience in the Timeshare industry in SA and to date the team have processed many
278
+                sales in the residential, share block and commercial arenas within South Africa and are currently involved
279
+                in the rental and management of 40 commercial and 15 residential properties. The Uni-Vate resale support
280
+                team consists of three highly qualified and experienced staff, who have thirteen years’ joint experience
281
+                in the timeshare resales industry.
342
               </div>
282
               </div>
343
-              <div
344
-                id="collapse13"
345
-                class="collapse"
346
-                aria-labelledby="heading13"
347
-                data-parent="#accordion"
348
-              >
349
-                <div class="card-body" style="text-align:left">
350
-                  The selling price is always market related determined by five factors. Resort quality, season, sleeper
351
-                  size of the unit, location of the resort and lastly, supply and demand.
352
-                  Uni-Vate Properties offer transparent advice on all pricing ensuring that both buyer and seller receive
353
-                  the best value for their money.
354
-                </div>
283
+            </div>
284
+            <div class="card" id="heading12">
285
+              <!-- <h5 class="mb-0"> -->
286
+              <button
287
+                class="btn btn-link font-weight-bold color-b text-left"
288
+                data-toggle="collapse"
289
+                data-target="#collapse12"
290
+                aria-expanded="false"
291
+                aria-controls="collapse12"
292
+              >Why would I buy a resale week rather than a new week?</button>
293
+              <!-- </h5> -->
294
+            </div>
295
+            <div
296
+              id="collapse12"
297
+              class="collapse"
298
+              aria-labelledby="heading12"
299
+              data-parent="#accordion"
300
+            >
301
+              <div class="card-body" style="text-align:left">
302
+                Both are equally viable. The difference is either the seller is the developer of a resort marketing
303
+                directly to the public and offering finance options on the purchase, or an individual who wants to sell
304
+                their week for a variety of reasons. Often when purchasing from an individual the price can be negotiated
305
+                as it is a cash sale with no financing options.
306
+                Its all about finding the resort and time of your choice that fits your pocket so that you can have many
307
+                years of happy holidays. Uni-Vate Properties are highly qualified in offering sound advice and assisting
308
+                you in what can be a tricky decision.
355
               </div>
309
               </div>
356
             </div>
310
             </div>
357
-            <div class="card">
358
-              <div class="card-header" id="heading14" style="text-align:left">
359
-                <h5 class="mb-0">
360
-                  <button
361
-                    class="btn btn-link font-weight-bold color-b"
362
-                    data-toggle="collapse"
363
-                    data-target="#collapse14"
364
-                    aria-expanded="false"
365
-                    aria-controls="collapse14"
366
-                  >How are levies determined?</button>
367
-                </h5>
311
+            <div class="card" id="heading13">
312
+              <!-- <h5 class="mb-0"> -->
313
+              <button
314
+                class="btn btn-link font-weight-bold color-b text-left"
315
+                data-toggle="collapse"
316
+                data-target="#collapse13"
317
+                aria-expanded="false"
318
+                aria-controls="collapse13"
319
+              >How is the price of the week determined?</button>
320
+              <!-- </h5> -->
321
+            </div>
322
+            <div
323
+              id="collapse13"
324
+              class="collapse"
325
+              aria-labelledby="heading13"
326
+              data-parent="#accordion"
327
+            >
328
+              <div class="card-body" style="text-align:left">
329
+                The selling price is always market related determined by five factors. Resort quality, season, sleeper
330
+                size of the unit, location of the resort and lastly, supply and demand.
331
+                Uni-Vate Properties offer transparent advice on all pricing ensuring that both buyer and seller receive
332
+                the best value for their money.
368
               </div>
333
               </div>
369
-              <div
370
-                id="collapse14"
371
-                class="collapse"
372
-                aria-labelledby="heading14"
373
-                data-parent="#accordion"
374
-              >
375
-                <div class="card-body" style="text-align:left">
376
-                  Levies are determined by the share block Board of Directors who are accountable to the shareholders. The
377
-                  managing agents of the resort are always available to assist with any queries that owners may have.
378
-                </div>
334
+            </div>
335
+            <div class="card" id="heading14">
336
+              <!-- <h5 class="mb-0"> -->
337
+              <button
338
+                class="btn btn-link font-weight-bold color-b text-left"
339
+                data-toggle="collapse"
340
+                data-target="#collapse14"
341
+                aria-expanded="false"
342
+                aria-controls="collapse14"
343
+              >How are levies determined?</button>
344
+              <!-- </h5> -->
345
+            </div>
346
+            <div
347
+              id="collapse14"
348
+              class="collapse"
349
+              aria-labelledby="heading14"
350
+              data-parent="#accordion"
351
+            >
352
+              <div class="card-body" style="text-align:left">
353
+                Levies are determined by the share block Board of Directors who are accountable to the shareholders. The
354
+                managing agents of the resort are always available to assist with any queries that owners may have.
379
               </div>
355
               </div>
380
             </div>
356
             </div>
357
+            <!-- </div> -->
381
           </div>
358
           </div>
382
         </div>
359
         </div>
383
       </div>
360
       </div>

+ 1
- 4
src/components/timeshare/searchTimeshare.vue Wyświetl plik

34
             </span>
34
             </span>
35
           </div>
35
           </div>
36
           <select class="form-control" name="resort" id="resort" v-model="filter.resort">
36
           <select class="form-control" name="resort" id="resort" v-model="filter.resort">
37
-            <option v-for="(item, i) in filteredResorts" :key="i" :value="item">
38
-              {
39
-              {item.resortName}}
40
-            </option>
37
+            <option v-for="(item, i) in filteredResorts" :key="i" :value="item">{{item.resortName}}</option>
41
           </select>
38
           </select>
42
           <div class="input-group-append" @click="clearFilter('resort')">
39
           <div class="input-group-append" @click="clearFilter('resort')">
43
             <span class="input-group-text cursor-pointer" style="color: #60CBEB">
40
             <span class="input-group-text cursor-pointer" style="color: #60CBEB">

+ 8
- 8
src/components/user/timeshareIndividual.vue Wyświetl plik

10
       <div class="form-group row"></div>
10
       <div class="form-group row"></div>
11
       <div class="row" style="text-align:left">
11
       <div class="row" style="text-align:left">
12
         <div class="col-md-6">
12
         <div class="col-md-6">
13
-          <label>Name</label>
13
+          <label>Name *</label>
14
           <div class="input-group-prepend">
14
           <div class="input-group-prepend">
15
             <span class="input-group-text">
15
             <span class="input-group-text">
16
               <eva-icon name="person-outline" fill="#60CBEB"></eva-icon>
16
               <eva-icon name="person-outline" fill="#60CBEB"></eva-icon>
19
           </div>
19
           </div>
20
         </div>
20
         </div>
21
         <div class="col-md-6" style="margin-bottom: 1em">
21
         <div class="col-md-6" style="margin-bottom: 1em">
22
-          <label>Surname</label>
22
+          <label>Surname *</label>
23
           <div class="input-group-prepend">
23
           <div class="input-group-prepend">
24
             <span class="input-group-text">
24
             <span class="input-group-text">
25
               <eva-icon name="book-outline" fill="#60CBEB"></eva-icon>
25
               <eva-icon name="book-outline" fill="#60CBEB"></eva-icon>
28
           </div>
28
           </div>
29
         </div>
29
         </div>
30
         <div class="col-md-6" style="margin-bottom: 1em">
30
         <div class="col-md-6" style="margin-bottom: 1em">
31
-          <label>ID Number</label>
31
+          <label>ID Number *</label>
32
           <div class="input-group-prepend">
32
           <div class="input-group-prepend">
33
             <span class="input-group-text">
33
             <span class="input-group-text">
34
               <eva-icon name="archive" fill="#60CBEB"></eva-icon>
34
               <eva-icon name="archive" fill="#60CBEB"></eva-icon>
37
           </div>
37
           </div>
38
         </div>
38
         </div>
39
         <div class="col-md-6" style="margin-bottom: 1em">
39
         <div class="col-md-6" style="margin-bottom: 1em">
40
-          <label>Company Reg Number</label>
40
+          <label>Company Reg Number *</label>
41
           <div class="input-group-prepend">
41
           <div class="input-group-prepend">
42
             <span class="input-group-text">
42
             <span class="input-group-text">
43
               <eva-icon name="npm-outline" fill="#60CBEB"></eva-icon>
43
               <eva-icon name="npm-outline" fill="#60CBEB"></eva-icon>
51
           </div>
51
           </div>
52
         </div>
52
         </div>
53
         <div class="col-md-6" style="margin-bottom: 1em">
53
         <div class="col-md-6" style="margin-bottom: 1em">
54
-          <label>Marital Status</label>
54
+          <label>Marital Status *</label>
55
           <div class="input-group-prepend">
55
           <div class="input-group-prepend">
56
             <span class="input-group-text">
56
             <span class="input-group-text">
57
               <eva-icon name="people-outline" fill="#60CBEB"></eva-icon>
57
               <eva-icon name="people-outline" fill="#60CBEB"></eva-icon>
62
           </div>
62
           </div>
63
         </div>
63
         </div>
64
         <div class="col-md-6" style="margin-bottom: 1em">
64
         <div class="col-md-6" style="margin-bottom: 1em">
65
-          <label>Email Address</label>
65
+          <label>Email Address *</label>
66
           <div class="input-group-prepend">
66
           <div class="input-group-prepend">
67
             <span class="input-group-text">
67
             <span class="input-group-text">
68
               <eva-icon name="email-outline" fill="#60CBEB"></eva-icon>
68
               <eva-icon name="email-outline" fill="#60CBEB"></eva-icon>
71
           </div>
71
           </div>
72
         </div>
72
         </div>
73
         <div class="col-md-6" style="margin-bottom: 1em">
73
         <div class="col-md-6" style="margin-bottom: 1em">
74
-          <label>Cell Number</label>
74
+          <label>Cell Number *</label>
75
           <div class="input-group-prepend">
75
           <div class="input-group-prepend">
76
             <span class="input-group-text">
76
             <span class="input-group-text">
77
               <eva-icon name="smartphone-outline" fill="#60CBEB"></eva-icon>
77
               <eva-icon name="smartphone-outline" fill="#60CBEB"></eva-icon>
80
           </div>
80
           </div>
81
         </div>
81
         </div>
82
         <div class="col-md-6" style="margin-bottom: 1em">
82
         <div class="col-md-6" style="margin-bottom: 1em">
83
-          <label>Landline Number</label>
83
+          <label>Landline Number *</label>
84
           <div class="input-group-prepend">
84
           <div class="input-group-prepend">
85
             <span class="input-group-text">
85
             <span class="input-group-text">
86
               <eva-icon name="phone-outline" fill="#60CBEB"></eva-icon>
86
               <eva-icon name="phone-outline" fill="#60CBEB"></eva-icon>

+ 11
- 2
src/router/index.js Wyświetl plik

40
 
40
 
41
 import MakeOffer from '../components/processFlow/makeOffer.vue';
41
 import MakeOffer from '../components/processFlow/makeOffer.vue';
42
 import Offer from '../components/processFlow/offers.vue';
42
 import Offer from '../components/processFlow/offers.vue';
43
+import searchLog from '../components/admin/logs/SearchLogs.vue';
43
 // import store from '../store';
44
 // import store from '../store';
44
 
45
 
45
 Vue.use(Router);
46
 Vue.use(Router);
46
 
47
 
47
 export default new Router({
48
 export default new Router({
48
   scrollBehavior(to, from, savedPosition) {
49
   scrollBehavior(to, from, savedPosition) {
49
-    return { x: 0, y: 0 };
50
+    return {
51
+      x: 0,
52
+      y: 0,
53
+    };
50
   },
54
   },
51
   routes: [{
55
   routes: [{
52
     path: '/',
56
     path: '/',
99
     component: PropertyPage,
103
     component: PropertyPage,
100
   },
104
   },
101
   {
105
   {
102
-    path: '/property/:propertyType/search',
106
+    path: '/property/:propertyUsageType/search',
103
     name: 'PropertySearch',
107
     name: 'PropertySearch',
104
     component: PropertySearch,
108
     component: PropertySearch,
105
   },
109
   },
220
     name: 'TimeshareSearch',
224
     name: 'TimeshareSearch',
221
     component: TimeshareSearch,
225
     component: TimeshareSearch,
222
   },
226
   },
227
+  {
228
+    path: '/searchLog',
229
+    name: 'SearchLog',
230
+    component: searchLog,
231
+  },
223
   ],
232
   ],
224
 });
233
 });

+ 2
- 0
src/store/index.js Wyświetl plik

18
 import Bid from './modules/processFlow/bid';
18
 import Bid from './modules/processFlow/bid';
19
 import Authentication from './modules/user/authentication';
19
 import Authentication from './modules/user/authentication';
20
 import PropertySearch from './modules/property/propertySearch';
20
 import PropertySearch from './modules/property/propertySearch';
21
+import SearchLog from './modules/logs/searchLog';
21
 
22
 
22
 Vue.use(Vuex);
23
 Vue.use(Vuex);
23
 /* eslint no-param-reassign: ["error", { "props": false }] */
24
 /* eslint no-param-reassign: ["error", { "props": false }] */
41
     bid: Bid,
42
     bid: Bid,
42
     authentication: Authentication,
43
     authentication: Authentication,
43
     propertySearch: PropertySearch,
44
     propertySearch: PropertySearch,
45
+    searchLog: SearchLog,
44
   },
46
   },
45
 });
47
 });

+ 24
- 0
src/store/modules/logs/searchLog.js Wyświetl plik

1
+// api/searchLog/property
2
+import axios from 'axios';
3
+
4
+export default {
5
+  namespaced: true,
6
+  state: {
7
+    propertySearch: {},
8
+  },
9
+  mutations: {
10
+    updateSearch(state, data) {
11
+      state.propertySearch = [];
12
+      state.propertySearch = data;
13
+    },
14
+  },
15
+  getters: {},
16
+  actions: {
17
+    getPropertySearchLogs({ commit }) {
18
+      axios
19
+        .get('/api/searchLog/property')
20
+        .then(result => commit('updateSearch', result.data))
21
+        .catch(console.error);
22
+    },
23
+  },
24
+};

+ 3
- 1
src/store/modules/property/property.js Wyświetl plik

55
       state.propertyFields = fields;
55
       state.propertyFields = fields;
56
     },
56
     },
57
     updateCurrentProperty(state, property) {
57
     updateCurrentProperty(state, property) {
58
-      state.properties.push(property);
58
+      if (state.properties) {
59
+        state.properties.push(property);
60
+      }
59
     },
61
     },
60
     clearProperty(state) {
62
     clearProperty(state) {
61
       state.property = {
63
       state.property = {

+ 1
- 1
src/store/modules/property/propertyLists.js Wyświetl plik

14
   actions: {
14
   actions: {
15
     getProperties({ commit }, item) {
15
     getProperties({ commit }, item) {
16
       axios
16
       axios
17
-        .get(`/api/property/${item.propertyType}/${item.user}`)
17
+        .get(`/api/property/${item.propertyType}/All`) // .get(`/api/property/${item.propertyType}/${item.user}`)
18
         .then(result => commit('setProperties', result.data))
18
         .then(result => commit('setProperties', result.data))
19
         .catch(console.error);
19
         .catch(console.error);
20
     },
20
     },

+ 7
- 2
src/store/modules/property/propertySearch.js Wyświetl plik

39
     getPropertySearchObject({ commit }) {
39
     getPropertySearchObject({ commit }) {
40
       const search = {
40
       const search = {
41
         userID: 0,
41
         userID: 0,
42
-        keyword: '',
42
+        keyword: 'All',
43
         salesType: 'Sale',
43
         salesType: 'Sale',
44
         propertyUsageType: 'All',
44
         propertyUsageType: 'All',
45
         propertyType: 'All',
45
         propertyType: 'All',
50
       commit('setPropertySearch', search);
50
       commit('setPropertySearch', search);
51
     },
51
     },
52
     searchProperties({ commit }, item) {
52
     searchProperties({ commit }, item) {
53
+      if (item.keyword === '') {
54
+        item.keyword = 'All';
55
+      }
53
       axios
56
       axios
54
-        .post('/api/Property/Search', item)
57
+        .get(
58
+          `/api/Property/Search/${item.userID}/${item.keyword}/${item.salesType}/${item.propertyUsageType}/${item.propertyType}/${item.province}/${item.city}/${item.suburb}`,
59
+        )
55
         .then(result => commit('updateSearch', result.data))
60
         .then(result => commit('updateSearch', result.data))
56
         .catch(console.error);
61
         .catch(console.error);
57
     },
62
     },

+ 35
- 8
src/store/modules/user/register.js Wyświetl plik

3
 export default {
3
 export default {
4
   namespaced: true,
4
   namespaced: true,
5
   state: {
5
   state: {
6
+    individuals: [],
7
+    agents: [],
6
     registerIndividual: {
8
     registerIndividual: {
7
       name: '',
9
       name: '',
8
       surname: '',
10
       surname: '',
29
     setIndividual(state, type) {
31
     setIndividual(state, type) {
30
       state.registerIndividual = type;
32
       state.registerIndividual = type;
31
     },
33
     },
34
+    setIndividuals(state, type) {
35
+      state.individuals = type;
36
+    },
37
+    setAgents(state, type) {
38
+      state.agents = type;
39
+    },
32
     setAgency(state, type) {
40
     setAgency(state, type) {
33
       state.registerAgency = type;
41
       state.registerAgency = type;
34
     },
42
     },
38
     addAgency(state, type) {
46
     addAgency(state, type) {
39
       state.registerAgency = type;
47
       state.registerAgency = type;
40
     },
48
     },
49
+    addAgent(state, type) {
50
+      state.registerIndividual = type;
51
+    },
41
     updateIndividual(state, type) {
52
     updateIndividual(state, type) {
42
       state.registerIndividual.find(item => item.id === type.id).username = type.username;
53
       state.registerIndividual.find(item => item.id === type.id).username = type.username;
43
       state.registerIndividual.find(item => item.id === type.id).password = type.password;
54
       state.registerIndividual.find(item => item.id === type.id).password = type.password;
82
   },
93
   },
83
   getters: {},
94
   getters: {},
84
   actions: {
95
   actions: {
85
-    // getIndividual({
86
-    //   commit,
87
-    // }, id) {
88
-    //   axios
89
-    //     .get(`/api/user/${id}`)
90
-    //     .then(result => commit('setIndividual', result.data))
91
-    //     .catch(console.error);
92
-    // },
96
+    getIndividuals({
97
+      commit,
98
+    }) {
99
+      axios
100
+        .get('/api/individual')
101
+        .then(result => commit('setIndividuals', result.data))
102
+        .catch(console.error);
103
+    },
104
+    getAgents({
105
+      commit,
106
+    }) {
107
+      axios
108
+        .get('/api/agent')
109
+        .then(result => commit('setAgents', result.data))
110
+        .catch(console.error);
111
+    },
93
     // getAgency({
112
     // getAgency({
94
     //   commit,
113
     //   commit,
95
     // }, id) {
114
     // }, id) {
115
         .then(result => commit('addAgency', result.data))
134
         .then(result => commit('addAgency', result.data))
116
         .catch(console.error);
135
         .catch(console.error);
117
     },
136
     },
137
+    saveAgent({
138
+      commit,
139
+    }, item) {
140
+      axios
141
+        .post('/api/agent', item)
142
+        .then(result => commit('addAgent', result.data))
143
+        .catch(console.error);
144
+    },
118
     // updateIndividual({
145
     // updateIndividual({
119
     //   commit,
146
     //   commit,
120
     // }, item) {
147
     // }, item) {

Ładowanie…
Anuluj
Zapisz