Преглед на файлове

Merge remote-tracking branch 'origin/master'

master
Bruce Lywood преди 5 години
родител
ревизия
da1ffc444a

+ 0
- 1
src/components/shared/searchTab.vue Целия файл

@@ -85,7 +85,6 @@
85 85
               </div>
86 86
             </div>
87 87
           </div>
88
-          <!-- {{selectedPropertyType}} -->
89 88
           <div class="col-md-12">
90 89
             <button type="submit" class="btn btn-b-n" @click="Search">Search</button>
91 90
           </div>

+ 0
- 8
src/components/timeshare/buy/buyPage.vue Целия файл

@@ -105,14 +105,6 @@
105 105
                     >See map bigger</a>
106 106
                   </small>
107 107
                 </div>
108
-                <div
109
-                  class="tab-pane fade"
110
-                  id="resort-layout"
111
-                  role="tabpanel"
112
-                  aria-labelledby="resort-layout-tab"
113
-                >
114
-                  <img class="img-fluid" :src="layout" alt="Resort Layout" />
115
-                </div>
116 108
               </div>
117 109
             </div>
118 110
           </div>

+ 70
- 48
src/components/timeshare/buy/weekListComponent.vue Целия файл

@@ -1,56 +1,72 @@
1 1
 <template>
2 2
   <div>
3
-    <table class="table table-bordered">
4
-      <thead>
5
-        <tr>
6
-          <th>Resort</th>
7
-          <th>Unit Number</th>
8
-          <th>Week Number</th>
9
-          <th>Bedrooms</th>
10
-          <th>Price</th>
11
-          <th>Status</th>
12
-          <th>Interested</th>
13
-        </tr>
14
-      </thead>
15
-      <tbody>
16
-        <tr v-for="(item, i) in filteredWeeks" :key="i">
17
-          <td>{{item.resort.resortName}}</td>
18
-          <td>{{item.unitNumber}}</td>
19
-          <td>{{item.weekNumber}}</td>
20
-          <td>{{item.bedrooms}}</td>
21
-          <td>{{item.sellPrice | toCurrency}}</td>
22
-          <td>{{item.status ? item.status.description : ''}}</td>
23
-          <td>
24
-            <div class="col-md-12">
25
-              <button
26
-                type="button"
27
-                class="btn btn-b-n"
28
-                data-toggle="modal"
29
-                data-target="#myModal"
30
-              >Make an Offer</button>
31
-              <div id="myModal" class="modal fade" role="dialog">
32
-                <div class="modal-dialog modal-lg">
33
-                  <!-- Modal content-->
34
-                  <div class="modal-content">
35
-                    <div class="modal-header">
36
-                      <button type="button" class="close" data-dismiss="modal">&times;</button>
37
-                    </div>
38
-                    <div padding-left="20px">
39
-                      <makeOffer
40
-                        name="MakeOffer"
41
-                        :isMakeOffer="true"
42
-                        :isProperty="false"
43
-                        :item="item"
44
-                      />
3
+    <div v-if="filteredWeeks.length > 0">
4
+      <table class="table table-bordered">
5
+        <thead>
6
+          <tr>
7
+            <th>Region</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>
13
+            <th>Bedrooms</th>
14
+            <th>Price</th>
15
+            <th>Status</th>
16
+            <th>Interested</th>
17
+          </tr>
18
+        </thead>
19
+        <tbody>
20
+          <tr v-for="(item, i) in filteredWeeks" :key="i">
21
+            <td>{{item.region ? item.region.regionName : ''}}</td>
22
+            <td>{{item.resort ? item.resort.resortName : ''}}</td>
23
+            <td>{{item.unitNumber}}</td>
24
+            <td>{{item.weekNumber}}</td>
25
+            <td>{{item.arrivalDate | toDate}}</td>
26
+            <td>{{item.departureDate | toDate}}</td>
27
+            <td>{{item.bedrooms}}</td>
28
+            <td>{{item.sellPrice | toCurrency}}</td>
29
+            <td>{{item.status ? item.status.description : ''}}</td>
30
+            <td>
31
+              <div class="col-md-12">
32
+                <button
33
+                  type="button"
34
+                  class="btn btn-b-n"
35
+                  data-toggle="modal"
36
+                  data-target="#myModal"
37
+                >Make an Offer</button>
38
+                <div id="myModal" class="modal fade" role="dialog">
39
+                  <div class="modal-dialog modal-lg">
40
+                    <!-- Modal content-->
41
+                    <div class="modal-content">
42
+                      <div class="modal-header">
43
+                        <button type="button" class="close" data-dismiss="modal">&times;</button>
44
+                      </div>
45
+                      <div padding-left="20px">
46
+                        <makeOffer
47
+                          name="MakeOffer"
48
+                          :isMakeOffer="true"
49
+                          :isProperty="false"
50
+                          :item="item"
51
+                        />
52
+                      </div>
45 53
                     </div>
46 54
                   </div>
47 55
                 </div>
48 56
               </div>
49
-            </div>
50
-          </td>
51
-        </tr>
52
-      </tbody>
53
-    </table>
57
+            </td>
58
+          </tr>
59
+        </tbody>
60
+      </table>
61
+    </div>
62
+    <div v-else>
63
+      <div class="row">
64
+        <div class="col-md-12">
65
+          <hr />No Results Found
66
+          <hr />
67
+        </div>
68
+      </div>
69
+    </div>
54 70
   </div>
55 71
 </template>
56 72
 <script>
@@ -58,6 +74,9 @@ import { mapState, mapActions, mapGetters } from 'vuex';
58 74
 import makeOffer from '../../processFlow/makeOffer.vue';
59 75
 
60 76
 export default {
77
+  props: {
78
+    resortCode: undefined,
79
+  },
61 80
   components: {
62 81
     makeOffer,
63 82
   },
@@ -68,10 +87,13 @@ export default {
68 87
     }),
69 88
   },
70 89
   mounted() {
90
+    if (this.resortCode) {
91
+      this.applyResortFilter(this.resortCode);
92
+    }
71 93
     this.getWeeks();
72 94
   },
73 95
   methods: {
74
-    ...mapActions('weekList', ['getWeeks', 'addDummyWeek']),
96
+    ...mapActions('weekList', ['getWeeks', 'applyResortFilter']),
75 97
   },
76 98
 };
77 99
 </script>

+ 3
- 53
src/components/timeshare/resort/resortPage.vue Целия файл

@@ -30,59 +30,7 @@
30 30
       <div class="row">
31 31
         <div class="col-md-3">
32 32
           <h4>Filter Resort</h4>
33
-          <form
34
-            id="mainForm"
35
-            method="POST"
36
-            action="/filter"
37
-            accept-charset="UTF-8"
38
-            enctype="multipart/form-data"
39
-          >
40
-            <div class="form-group">
41
-              <select class="form-control" name="season">
42
-                <option value>
43
-                  <span style="color:white;">Season</span>
44
-                </option>
45
-              </select>
46
-            </div>
47
-            <div class="form-group">
48
-              <select class="form-control" name="bedrooms">
49
-                <option value>Bedrooms</option>
50
-              </select>
51
-            </div>
52
-
53
-            <div class="form-group">
54
-              <input
55
-                class="form-control"
56
-                type="number"
57
-                step="any"
58
-                id="minPrice"
59
-                name="minPrice"
60
-                placeholder="Minimum Price"
61
-              />
62
-            </div>
63
-            <div class="form-group">
64
-              <input
65
-                class="form-control"
66
-                type="number"
67
-                step="any"
68
-                id="maxPrice"
69
-                name="maxPrice"
70
-                placeholder="Maximum Price"
71
-              />
72
-            </div>
73
-            <div class="form-group">
74
-              <label>Filter Arrival Date From</label>
75
-              <input type="date" class="form-control" name="arrivaldate" value />
76
-            </div>
77
-            <div class="form-group">
78
-              <label>Filter Arrival Date To</label>
79
-              <input type="date" class="form-control" name="arrivaldate" value />
80
-            </div>
81
-
82
-            <br />
83
-
84
-            <button class="btn btn-b-n" type="submit">Search</button>
85
-          </form>
33
+          <FilterComponent :hideTop="true" />
86 34
         </div>
87 35
         <div class="col-md-9">
88 36
           <WeekList :resortCode="resortCode" />
@@ -163,6 +111,7 @@
163 111
 <script>
164 112
 import { mapState, mapActions } from 'vuex';
165 113
 import WeekList from '../buy/weekListComponent.vue';
114
+import FilterComponent from '../searchTimeshare.vue';
166 115
 
167 116
 export default {
168 117
   props: {
@@ -170,6 +119,7 @@ export default {
170 119
   },
171 120
   components: {
172 121
     WeekList,
122
+    FilterComponent,
173 123
   },
174 124
   mounted() {
175 125
     this.initResort(this.resortCode);

+ 9
- 3
src/components/timeshare/searchTimeshare.vue Целия файл

@@ -7,7 +7,7 @@
7 7
       accept-charset="UTF-8"
8 8
       enctype="multipart/form-data"
9 9
     >
10
-      <div class="form-group text-left">
10
+      <div class="form-group text-left" v-if="!hideTop">
11 11
         <label>Province</label>
12 12
         <div class="input-group mb-3">
13 13
           <div class="input-group-prepend">
@@ -25,7 +25,7 @@
25 25
           </div>
26 26
         </div>
27 27
       </div>
28
-      <div class="form-group text-left">
28
+      <div class="form-group text-left" v-if="!hideTop">
29 29
         <label>Resort Name</label>
30 30
         <div class="input-group mb-3">
31 31
           <div class="input-group-prepend">
@@ -34,7 +34,10 @@
34 34
             </span>
35 35
           </div>
36 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">{{item.resortName}}</option>
37
+            <option v-for="(item, i) in filteredResorts" :key="i" :value="item">
38
+              {
39
+              {item.resortName}}
40
+            </option>
38 41
           </select>
39 42
           <div class="input-group-append" @click="clearFilter('resort')">
40 43
             <span class="input-group-text cursor-pointer" style="color: #60CBEB">
@@ -140,6 +143,9 @@ import { mapState, mapActions } from 'vuex';
140 143
 import _ from 'lodash';
141 144
 
142 145
 export default {
146
+  props: {
147
+    hideTop: undefined,
148
+  },
143 149
   created() {
144 150
     this.initTimeshare();
145 151
   },

+ 11
- 0
src/main.js Целия файл

@@ -1,3 +1,4 @@
1
+/* eslint-disable prefer-template */
1 2
 import Vue from 'vue';
2 3
 import EvaIcons from 'vue-eva-icons';
3 4
 import axios from 'axios';
@@ -37,6 +38,16 @@ Vue.filter('toCurrency', (value) => {
37 38
   return `R ${formatter.format(value)}`;
38 39
 });
39 40
 
41
+const myPad = function (value, pattern) {
42
+  const val = '' + value;
43
+  return pattern.substring(0, pattern.length - val.length) + val;
44
+};
45
+
46
+Vue.filter('toDate', (value) => {
47
+  const date = new Date(value);
48
+  return `${date.getFullYear()}/${myPad(date.getMonth(), '00')}/${myPad(date.getDay(), '00')}`;
49
+});
50
+
40 51
 new Vue({
41 52
   render: h => h(App),
42 53
   router,

+ 10
- 0
src/store/modules/timeshare/timeshare.js Целия файл

@@ -185,5 +185,15 @@ export default {
185 185
         }
186 186
       }
187 187
     },
188
+    saveWeek({
189
+      commit,
190
+    }, week) {
191
+      axios
192
+        .post('/api/timeshareweek', week)
193
+        .then(result => commit('addDetailedRegion', {
194
+          week,
195
+        }))
196
+        .catch(console.error);
197
+    },
188 198
   },
189 199
 };

+ 19
- 10
src/store/modules/timeshare/weekList.js Целия файл

@@ -1,3 +1,4 @@
1
+/* eslint-disable eqeqeq */
1 2
 /* eslint-disable no-restricted-syntax */
2 3
 /* eslint-disable guard-for-in */
3 4
 import axios from 'axios';
@@ -26,6 +27,9 @@ export default {
26 27
     addWeek(state, week) {
27 28
       state.weeks.push(week);
28 29
     },
30
+    applyResort(state, resort) {
31
+      state.filter.resort = resort;
32
+    },
29 33
   },
30 34
   getters: {
31 35
     filteredWeeks: (state) => {
@@ -33,19 +37,18 @@ export default {
33 37
       const {
34 38
         filter,
35 39
       } = state;
36
-      console.log(JSON.stringify(weekList));
40
+      // console.log(JSON.stringify(weekList));
37 41
       if (filter) {
38 42
         if (filter.region) {
39
-          weekList = _.filter(weekList, x => x.region
40
-            && x.region.regionCode === filter.region.regionCode);
43
+          weekList = _.filter(weekList, x => x.region && x.region.regionCode === filter.region
44
+            .regionCode);
41 45
         }
42 46
         if (filter.resort) {
43 47
           weekList = _.filter(weekList, x => x.resort.resortCode
44 48
             && x.resort.resortCode === filter.resort.resortCode);
45 49
         }
46 50
         if (filter.bedrooms) {
47
-          weekList = _.filter(weekList, x => x.bedrooms
48
-            && x.bedrooms === filter.bedrooms);
51
+          weekList = _.filter(weekList, x => x.bedrooms && x.bedrooms == filter.bedrooms);
49 52
         }
50 53
         if (filter.date) {
51 54
           const minDate = new Date(filter.date);
@@ -58,19 +61,25 @@ export default {
58 61
             && new Date(x.arrivalDate) <= maxDate);
59 62
         }
60 63
         if (filter.minPrice && filter.minPrice !== 0) {
61
-          weekList = _.filter(weekList, x => x.sellingPrice
62
-            && x.sellingPrice >= filter.minPrice);
64
+          weekList = _.filter(weekList, x => x.sellPrice
65
+            && x.sellPrice >= filter.minPrice);
63 66
         }
64 67
         if (filter.maxPrice && filter.maxPrice !== 0) {
65
-          weekList = _.filter(weekList, x => x.sellingPrice
66
-            && x.sellingPrice <= filter.maxPrice);
68
+          weekList = _.filter(weekList, x => x.sellPrice
69
+            && x.sellPrice <= filter.maxPrice);
67 70
         }
68 71
       }
69
-
70 72
       return weekList;
71 73
     },
72 74
   },
73 75
   actions: {
76
+    applyResortFilter({
77
+      commit,
78
+    }, resortCode) {
79
+      commit('applyResort', {
80
+        resortCode,
81
+      });
82
+    },
74 83
     getWeeks({
75 84
       commit,
76 85
     }) {

Loading…
Отказ
Запис