Browse Source

tenderWeeks admin

master
Kobus Botha 5 years ago
parent
commit
1632661b72

+ 3
- 0
src/App.vue View File

@@ -33,6 +33,9 @@ export default {
33 33
 </script>
34 34
 
35 35
 <style>
36
+button:hover {
37
+  cursor: pointer;
38
+},
36 39
 hr {
37 40
   background-color: #60cbeb;
38 41
 }

+ 8
- 4
src/components/admin/status/tenderWeekAdminPage.vue View File

@@ -17,7 +17,7 @@
17 17
       </div>
18 18
     </div>
19 19
     <div id="table" class="col-xs-12 table-responsive">
20
-      <datatable :columns="columns" :data="rows"></datatable>
20
+      <ListView :items="items" :showNew="false"></listView>
21 21
     </div>
22 22
     <br />
23 23
   </div>
@@ -26,17 +26,21 @@
26 26
 </template>
27 27
 <script>
28 28
 import { mapState, mapActions } from 'vuex';
29
+import ListView from '../../shared/listView.vue';
29 30
 
30 31
 export default {
31 32
   name: 'TenderWeekAdmin',
32 33
   created() {
33
-    this.gettenderWeekdmin();
34
+    this.getItems();
35
+  },
36
+  components: {
37
+    ListView
34 38
   },
35 39
   computed: {
36
-    ...mapState('status', ['tenderWeekAdmin']),
40
+    ...mapState('tenderWeek', ['items']),
37 41
   },
38 42
   methods: {
39
-    ...mapActions('status', ['gettenderWeekAdmin']),
43
+    ...mapActions('tenderWeek', ['getItems']),
40 44
   },
41 45
 };
42 46
 </script>

+ 2
- 2
src/components/shared/listView.vue View File

@@ -14,12 +14,12 @@
14 14
         <div class="d-flex flex-row">
15 15
           <div class="p2" v-if="selectedItems.length > 0">
16 16
             <div
17
-              class="btn btn-primary myBackground btn-width"
17
+              class="btn btn-primary myBackground btn-width cursor-pointer"
18 18
               @click="onClearSelected()"
19 19
             >Clear Selected</div>
20 20
           </div>
21 21
           <div class="p2" v-if="showNew">
22
-            <div class="btn btn-primary myBackground btn-width" @click="onNew()">New</div>
22
+            <div class="btn btn-primary myBackground btn-width cursor-pointer" @click="onNew()">New</div>
23 23
           </div>
24 24
         </div>
25 25
       </div>

+ 9
- 2
src/components/timeshare/buy/buyPage.vue View File

@@ -35,8 +35,8 @@
35 35
           </div>
36 36
           <hr />
37 37
           <div class="row mb-4">
38
-            <div class="container col-md-4">
39
-              <div class="accordion" id="accordionExample">
38
+            <div class="container col-md-4" v-if="availRegion">
39
+              <div class="accordion" id="accordionExample" v-if="availRegion.length > 0">
40 40
                 <div class="card darker-border" v-for="(region, r) in availRegion" :key="r">
41 41
                   <a
42 42
                     class="mb-0 color-text-a"
@@ -77,6 +77,9 @@
77 77
                     </div>
78 78
                   </div>
79 79
                 </div>
80
+                  </div>
81
+                  <div v-else>
82
+                    <Alert :text="'No items found...'" :type="'INFO'" />
80 83
               </div>
81 84
             </div>
82 85
             <div class="col-md-8">
@@ -110,9 +113,13 @@
110 113
 </template>
111 114
 <script>
112 115
 import { mapState, mapActions } from 'vuex';
116
+import Alert from '../../shared/alert.vue';
113 117
 
114 118
 export default {
115 119
   name: 'TimeshareToBuy',
120
+  components:{
121
+    Alert
122
+  },
116 123
   data() {
117 124
     return {
118 125
       myMap: 'SouthAfrica',

+ 38
- 11
src/components/timeshare/myWeeksPage.vue View File

@@ -1,17 +1,24 @@
1 1
 <template>
2
-  <div>
3
-    <br />
4
-    <br />
5
-    <br />
6
-    <br />
7
-    <br />
8
-    
9
-    <div class="row">
10
-      <div class="offset-1 col-md-10">
11
-        <ListView :items="items" :editable="true" @onEdit="onEdit" />
12
-      </div>
2
+<div>
3
+  <br />
4
+  <div class="row">
5
+    <div class="offset-1 col-md-3">
6
+      {{items[selectedItems]}}
7
+      <button 
8
+        type="button"
9
+        :class="{'form-control btn btn-primary ': (1===1), 'my-disable': (!(selectedItems.length == 1) || !items[selectedItems] || items[selectedItems].status.code !== 'A2')}"
10
+        value="Publish Week"
11
+        :disabled="!(items.length == 1)"
12
+      >
13
+        Publish selected week
14
+      </button>
15
+    </div>
16
+    <div class="offset-1 col-md-10">
17
+      <ListView :items="items" :editable="true" @onNew="onNew" @onRowClick="onRowClick"
18
+          @onClearSelected="onClearSelected"  />
13 19
     </div>
14 20
   </div>
21
+</div>
15 22
 </template>
16 23
 <script>
17 24
 import { mapState, mapActions } from 'vuex';
@@ -25,6 +32,7 @@ export default {
25 32
   data() {
26 33
     return {
27 34
       user: Log.getUser(),
35
+      selectedItems: [],
28 36
     };
29 37
   },
30 38
   mounted() {
@@ -39,6 +47,25 @@ export default {
39 47
     onEdit(item) {
40 48
       this.$router.push(`/timeshare/${item.id}`);
41 49
     },
50
+    onNew() {
51
+      this.$router.push('/timeshare/sell');
52
+    },
53
+    onRowClick(items) {
54
+      this.selectedItems = items;
55
+    },
56
+    onClearSelected() {
57
+      this.selectedItems = [];
58
+    },
42 59
   },
43 60
 };
44 61
 </script>
62
+<style scoped>
63
+.my-disable {
64
+  background-color: silver;
65
+  border-color: silver;
66
+}
67
+.my-disable:hover {
68
+  background-color: lightgray;
69
+  border-color: lightgray;
70
+}
71
+</style>

+ 2
- 0
src/store/index.js View File

@@ -26,6 +26,7 @@ import PropertyEdit from './modules/property/propertyEdit';
26 26
 import Carousel from './modules/misc/carousel';
27 27
 import Individual from './modules/user/individual';
28 28
 import Alert from './modules/misc/alert';
29
+import TenderWeek from './modules/timeshare/tenderWeeks';
29 30
 
30 31
 Vue.use(Vuex);
31 32
 /* eslint no-param-reassign: ["error", { "props": false }] */
@@ -56,5 +57,6 @@ export default new Vuex.Store({
56 57
     carousel: Carousel,
57 58
     individual: Individual,
58 59
     alert: Alert,
60
+    tenderWeek: TenderWeek
59 61
   },
60 62
 });

+ 3
- 0
src/store/modules/timeshare/myWeeks.js View File

@@ -35,6 +35,9 @@ export default {
35 35
         console.log(err);
36 36
       }
37 37
     },
38
+    publishWeek(id) {
39
+      axios.post(`/api/timeshareweek/publishweek/${id}`).catch(console.error);
40
+    }
38 41
 
39 42
   },
40 43
 };

+ 22
- 0
src/store/modules/timeshare/tenderWeeks.js View File

@@ -0,0 +1,22 @@
1
+import axios from 'axios';
2
+
3
+export default {
4
+  namespaced: true,
5
+  state: {
6
+    items: [],
7
+  },
8
+  mutations: {
9
+    setItems(state, list) {
10
+      state.items = list;
11
+    },
12
+  },
13
+  getters: {},
14
+  actions: {
15
+    getItems({ commit }) {
16
+      axios
17
+        .get('/api/timeshareweek/getTenderWeeks')
18
+        .then(result => commit('setItems', result.data))
19
+        .catch(console.error);
20
+    },
21
+  },
22
+};

Loading…
Cancel
Save