소스 검색

Auto stash before merge of "master" and "origin/master"

User Fields and property changes
master
George Williams 5 년 전
부모
커밋
a44e5789d7

+ 0
- 1
src/components/admin/property/propertyTypeEdit.vue 파일 보기

@@ -36,7 +36,6 @@
36 36
                 >
37 37
                   <option value="0">Residential</option>
38 38
                   <option value="1">Commercial</option>
39
-                  <option value="2">Both</option>
40 39
                 </select>
41 40
               </div>
42 41
             </div>

+ 4
- 3
src/components/admin/property/propertyTypeList.vue 파일 보기

@@ -24,14 +24,14 @@
24 24
             <th>Description</th>
25 25
             <th>Property Type</th>
26 26
             <th></th>
27
+            <th></th>
27 28
           </tr>
28 29
         </thead>
29 30
         <tbody>
30 31
           <tr v-for="(item, i) in propertyTypes" :key="i">
31 32
             <td>{{ item.description }}</td>
32 33
             <td v-if="item.usageType === 0">Residential</td>
33
-            <td v-else-if="item.usageType === 1">Commercial</td>
34
-            <td v-else>Both</td>
34
+            <td v-else>Commercial</td>
35 35
             <td>
36 36
               <button
37 37
                 type="button"
@@ -39,7 +39,8 @@
39 39
                 class="btn btn-b-n"
40 40
                 style="width: 85px; height:40px;"
41 41
               >Edit</button>
42
-              |
42
+            </td>
43
+            <td>
43 44
               <button
44 45
                 type="button"
45 46
                 @click="Delete(item.id)"

src/components/admin/property/userDefinedFieldPage.vue → src/components/admin/property/userDefinedField.vue 파일 보기

@@ -66,21 +66,22 @@
66 66
 <script>
67 67
 export default {
68 68
   name: 'UserField',
69
+  props: {
70
+    field: {},
71
+  },
69 72
   data() {
70 73
     return {
71
-      userField: {
72
-        fieldName: '',
73
-        fieldType: '',
74
-        rank: 0,
75
-      },
74
+      userField: {},
76 75
     };
77 76
   },
78 77
   mounted() {
79
-    this.userField = this.$route.query.field;
78
+    if (this.field) {
79
+      this.userField = this.field;
80
+    }
80 81
   },
81 82
   methods: {
82 83
     SubmitData() {
83
-      //this.$emit();
84
+      this.$emit('UpdateUserField', this.userField);
84 85
     },
85 86
   },
86 87
 };

+ 210
- 136
src/components/admin/property/userDefinedGroupPage.vue 파일 보기

@@ -1,157 +1,190 @@
1 1
 <template>
2
+  <!-- eslint-disable max-len -->
2 3
   <div>
3
-    <section class="intro-single">
4
-      <div class="container">
5
-        <div class="row">
6
-          <div class="col-md-12 col-lg-8">
7
-            <div class="title-single-box">
8
-              <h2 class="title-single">User Defined Group</h2>
4
+    <div v-if="showField === false">
5
+      <section class="intro-single">
6
+        <div class="container">
7
+          <div class="row">
8
+            <div class="col-md-12 col-lg-8">
9
+              <div class="title-single-box">
10
+                <h2 class="title-single">User Defined Group</h2>
11
+              </div>
9 12
             </div>
10 13
           </div>
11 14
         </div>
12
-      </div>
13
-    </section>
14
-    <div class="container">
15
-      <div class="row mb-3">
16
-        <div class="col-md-12">
17
-          <form id="mainForm">
18
-            <div v-if="userDefinedGroup" class="form-group row">
19
-              <div class="col-md-4">
20
-                <label>Description</label>
21
-                <input
22
-                  class="form-control"
23
-                  type="text"
24
-                  name="description"
25
-                  id="description"
26
-                  v-model="userDefinedGroup.description"
27
-                />
28
-              </div>
29
-              <div class="col-md-4">
30
-                <label>Property Type</label>
31
-                <select
32
-                  class="form-control"
33
-                  name="UsageType"
34
-                  id="UsageType"
35
-                  v-model="userDefinedGroup.usageType"
36
-                >
37
-                  <option value="0">Residential</option>
38
-                  <option value="1">Commercial</option>
39
-                  <option value="2">Both</option>
40
-                </select>
41
-              </div>
42
-              <div class="col-md-4">
43
-                <label>Order</label>
44
-                <input
45
-                  class="form-control"
46
-                  type="number"
47
-                  name="rank"
48
-                  id="rank"
49
-                  v-model="userDefinedGroup.rank"
50
-                />
51
-              </div>
52
-            </div>
53
-            <div v-if="!userDefinedGroup" class="form-group row">
54
-              <div class="col-md-4">
55
-                <label>Description</label>
56
-                <input
57
-                  class="form-control"
58
-                  type="text"
59
-                  name="description"
60
-                  id="description"
61
-                  v-model="group.description"
62
-                />
63
-              </div>
64
-              <div class="col-md-4">
65
-                <label>Property Type</label>
66
-                <select
67
-                  class="form-control"
68
-                  name="UsageType"
69
-                  id="UsageType"
70
-                  v-model="group.usageType"
71
-                >
72
-                  <option value="0">Residential</option>
73
-                  <option value="1">Commercial</option>
74
-                  <option value="2">Both</option>
75
-                </select>
15
+      </section>
16
+      <div class="container">
17
+        <div class="row mb-3">
18
+          <div class="col-md-12">
19
+            <form id="mainForm">
20
+              <div v-if="userDefinedGroup" class="form-group row">
21
+                <div class="col-md-4">
22
+                  <label>Description</label>
23
+                  <input
24
+                    class="form-control"
25
+                    type="text"
26
+                    name="description"
27
+                    id="description"
28
+                    v-model="userDefinedGroup.description"
29
+                  />
30
+                </div>
31
+                <div class="col-md-4">
32
+                  <label>Property Type</label>
33
+                  <select
34
+                    class="form-control"
35
+                    name="UsageType"
36
+                    id="UsageType"
37
+                    v-model="userDefinedGroup.usageType"
38
+                  >
39
+                    <option value="0">Residential</option>
40
+                    <option value="1">Commercial</option>
41
+                    <option value="2">Both</option>
42
+                  </select>
43
+                </div>
44
+                <div class="col-md-4">
45
+                  <label>Order</label>
46
+                  <input
47
+                    class="form-control"
48
+                    type="number"
49
+                    name="rank"
50
+                    id="rank"
51
+                    v-model="userDefinedGroup.rank"
52
+                  />
53
+                </div>
76 54
               </div>
77
-              <div class="col-md-4">
78
-                <label>Order</label>
79
-                <input
80
-                  class="form-control"
81
-                  type="number"
82
-                  name="rank"
83
-                  id="rank"
84
-                  v-model="group.rank"
85
-                />
55
+              <div v-if="!userDefinedGroup" class="form-group row">
56
+                <div class="col-md-4">
57
+                  <label>Description</label>
58
+                  <input
59
+                    class="form-control"
60
+                    type="text"
61
+                    name="description"
62
+                    id="description"
63
+                    v-model="group.description"
64
+                  />
65
+                </div>
66
+                <div class="col-md-4">
67
+                  <label>Property Type</label>
68
+                  <select
69
+                    class="form-control"
70
+                    name="UsageType"
71
+                    id="UsageType"
72
+                    v-model="group.usageType"
73
+                  >
74
+                    <option value="0">Residential</option>
75
+                    <option value="1">Commercial</option>
76
+                    <option value="2">Both</option>
77
+                  </select>
78
+                </div>
79
+                <div class="col-md-4">
80
+                  <label>Order</label>
81
+                  <input
82
+                    class="form-control"
83
+                    type="number"
84
+                    name="rank"
85
+                    id="rank"
86
+                    v-model="group.rank"
87
+                  />
88
+                </div>
86 89
               </div>
87
-            </div>
88
-          </form>
90
+            </form>
91
+          </div>
89 92
         </div>
90 93
       </div>
91
-    </div>
92
-    <div class="container">
94
+      <div class="container">
95
+        <button
96
+          type="button"
97
+          @click="newItem()"
98
+          class="btn btn-b-n"
99
+          style="width: 85px; height:40px;"
100
+        >New</button>
101
+        <br />
102
+        <table class="table table-bordered">
103
+          <thead>
104
+            <tr>
105
+              <th>Field Name</th>
106
+              <th>Field Type</th>
107
+              <th>Order</th>
108
+              <th></th>
109
+              <th></th>
110
+            </tr>
111
+          </thead>
112
+          <tbody>
113
+            <tr v-for="(item, i) in userFields" :key="i">
114
+              <td>{{item.fieldName}}</td>
115
+              <td v-if="item.fieldType === 'text'">Text</td>
116
+              <td v-else-if="item.fieldType === 'number'">Number</td>
117
+              <td v-else>Yes / No</td>
118
+              <td>{{item.rank}}</td>
119
+              <td>
120
+                <button
121
+                  type="button"
122
+                  @click="Edit(item)"
123
+                  class="btn btn-b-n"
124
+                  style="width: 85px; height:40px;"
125
+                >Edit</button>
126
+              </td>
127
+              <td>
128
+                <button
129
+                  type="button"
130
+                  @click="Delete(item)"
131
+                  class="btn btn-b-n"
132
+                  style="width: 85px; height:40px;"
133
+                >Delete</button>
134
+              </td>
135
+            </tr>
136
+          </tbody>
137
+        </table>
138
+      </div>
139
+      <button
140
+        type="button"
141
+        @click="SubmitData()"
142
+        class="btn btn-b-n"
143
+        style="width: 85px; height:40px;"
144
+      >Save</button>
93 145
       <button
94 146
         type="button"
95
-        @click="newItem()"
147
+        @click="Close()"
96 148
         class="btn btn-b-n"
97 149
         style="width: 85px; height:40px;"
98
-      >New</button>
99
-      <br />
100
-      <table class="table table-bordered">
101
-        <thead>
102
-          <tr>
103
-            <th>Field Name</th>
104
-            <th>Field Type</th>
105
-            <th>Order</th>
106
-            <th></th>
107
-          </tr>
108
-        </thead>
109
-        <tbody>
110
-          <tr v-for="(item, i) in userFields" :key="i">
111
-            <td>{{item.fieldName}}</td>
112
-            <td>{{item.fieldType}}</td>
113
-            <td>{{item.rank}}</td>
114
-            <td>
115
-              <router-link :to="{ name: 'UserDefinedField', query: { field: item }}">Edit</router-link>
116
-              <!-- <router-link :to="`/userField`">Edit</router-link>| Delete -->
117
-            </td>
118
-          </tr>
119
-        </tbody>
120
-      </table>
150
+      >Close</button>
151
+    </div>
152
+    <div v-else>
153
+      <userFields @UpdateUserField="UpdateUserField" :field="item" />
121 154
     </div>
122
-    <button
123
-      type="button"
124
-      @click="SubmitData()"
125
-      class="btn btn-b-n"
126
-      style="width: 85px; height:40px;"
127
-    >Save</button>
128 155
   </div>
129 156
 </template>
130 157
 
131 158
 <script>
132 159
 import { mapState, mapActions } from 'vuex';
160
+import userFields from './userDefinedField.vue';
133 161
 
134 162
 export default {
135 163
   name: 'UserDefinedGroup',
164
+  components: {
165
+    userFields,
166
+  },
136 167
   data() {
137 168
     return {
138
-      group: {
139
-        description: '',
140
-        usageType: 0,
141
-        rank: 0,
142
-      },
169
+      item: {},
170
+      showField: false,
143 171
     };
144 172
   },
145 173
   mounted() {
174
+    this.clearUserFields();
175
+    this.clearUserGroup();
176
+
146 177
     if (this.$route.params.id > 0) {
147
-      this.getUserDefinedGroup(
148
-        Object.assign({}, { id: this.$route.params.id }),
149
-      );
150
-      this.getUserFields(Object.assign({}, { groupId: this.$route.params.id }));
178
+      this.getUserDefinedGroup(this.$route.params.id);
179
+      this.getUserFields(this.$route.params.id);
151 180
     }
152 181
   },
153 182
   computed: {
154
-    ...mapState('propertyAdmin', ['userDefinedGroup', 'userFields']),
183
+    ...mapState('propertyAdmin', [
184
+      'userDefinedGroup',
185
+      'userFields',
186
+      'userField',
187
+    ]),
155 188
   },
156 189
   methods: {
157 190
     ...mapActions('propertyAdmin', [
@@ -159,27 +192,68 @@ export default {
159 192
       'getUserFields',
160 193
       'saveUserDefinedGroup',
161 194
       'updateUserDefinedGroup',
195
+      'clearUserGroup',
196
+      'clearUserFields',
197
+      'clearUserField',
198
+      'saveUserField',
199
+      'updateUserField',
200
+      'deleteUserField',
162 201
     ]),
163 202
     SubmitData() {
203
+      this.userDefinedGroup.fields = [];
204
+      let reload = false;
164 205
       if (this.$route.params.id > 0) {
165
-        this.updateUserDefinedGroup(
166
-          Object.assign({}, { group: this.userDefinedGroup }),
167
-        );
206
+        this.updateUserDefinedGroup(this.userDefinedGroup);
207
+        this.userFields.forEach((fieldData) => {
208
+          if (fieldData.id === 0) {
209
+            fieldData.groupId = this.userDefinedGroup.id;
210
+            this.saveUserField(fieldData);
211
+          } else {
212
+            this.updateUserField(fieldData);
213
+          }
214
+        });
168 215
       } else {
169
-        this.saveUserDefinedGroup(Object.assign({}, { group: this.group }));
216
+        reload = true;
217
+        this.userFields.forEach((fieldData) => {
218
+          this.userDefinedGroup.fields.push({
219
+            fieldName: fieldData.fieldName,
220
+            fieldType: fieldData.fieldType,
221
+            rank: fieldData.rank,
222
+          });
223
+        });
224
+        this.saveUserDefinedGroup(this.userDefinedGroup);
170 225
       }
171 226
       this.$router.push('/userDefinedGroups/list');
227
+      // this.$router.push({
228
+      //   path: '/userDefinedGroups/list',
229
+      //   query: { reload },
230
+      // });
172 231
     },
173 232
     newItem() {
174
-      const newField = {
175
-        fieldName: '',
176
-        fieldType: 'Text',
177
-        rank: 0,
178
-      };
179
-      this.$router.push({
180
-        path: '/userField',
181
-        query: { field: newField },
182
-      });
233
+      this.clearUserField();
234
+      this.item = this.userField;
235
+      this.item.groupId = this.userDefinedGroup.id;
236
+      this.showField = true;
237
+    },
238
+    Edit(item) {
239
+      this.item = item;
240
+      this.showField = true;
241
+    },
242
+    Close() {
243
+      this.$router.push('/userDefinedGroups/list');
244
+    },
245
+    UpdateUserField(item) {
246
+      if (item.id === 0) {
247
+        this.userFields.push(item);
248
+      }
249
+      this.showField = false;
250
+    },
251
+    Delete(item) {
252
+      if (item.id === 0) {
253
+        this.userFields.pop(this.userFields.find(p => p.id === item.id));
254
+      } else {
255
+        this.deleteUserField(item.id);
256
+      }
183 257
     },
184 258
   },
185 259
 };

+ 31
- 7
src/components/admin/property/userDefinedGroupsPage.vue 파일 보기

@@ -1,4 +1,5 @@
1 1
 <template>
2
+  <!-- eslint-disable max-len -->
2 3
   <div>
3 4
     <section class="intro-single">
4 5
       <div class="container">
@@ -12,7 +13,7 @@
12 13
       </div>
13 14
     </section>
14 15
     <div class="container">
15
-      <router-link :to="`/userDefinedGroups/userDefinedGroup`">New</router-link>
16
+      <button type="button" @click="New()" class="btn btn-b-n" style="width: 85px; height:40px;">New</button>
16 17
       <table class="table table-bordered">
17 18
         <thead>
18 19
           <tr>
@@ -31,10 +32,20 @@
31 32
             <td v-else>Both</td>
32 33
             <td>{{item.rank}}</td>
33 34
             <td>
34
-              <router-link :to="`/userDefinedGroups/userDefinedGroup/${item.id}`">Edit</router-link>
35
+              <button
36
+                type="button"
37
+                @click="Edit(item.id)"
38
+                class="btn btn-b-n"
39
+                style="width: 85px; height:40px;"
40
+              >Edit</button>
35 41
             </td>
36 42
             <td>
37
-              <button>Delete</button>
43
+              <button
44
+                type="button"
45
+                @click="Delete(item)"
46
+                class="btn btn-b-n"
47
+                style="width: 85px; height:40px;"
48
+              >Delete</button>
38 49
             </td>
39 50
           </tr>
40 51
         </tbody>
@@ -47,16 +58,29 @@ import { mapState, mapActions } from 'vuex';
47 58
 
48 59
 export default {
49 60
   name: 'UserDefinedGroup',
50
-  created() {
61
+  mounted() {
51 62
     this.getUserDefinedGroups();
52 63
   },
53 64
   computed: {
54 65
     ...mapState('propertyAdmin', ['userDefinedGroups']),
55 66
   },
56 67
   methods: {
57
-    ...mapActions('propertyAdmin', ['getUserDefinedGroups']),
68
+    ...mapActions('propertyAdmin', [
69
+      'getUserDefinedGroups',
70
+      'deleteUserDefinedGroup',
71
+    ]),
72
+    New() {
73
+      this.$router.push('/userDefinedGroups/userDefinedGroup');
74
+    },
75
+    Edit(id) {
76
+      this.$router.push(`/userDefinedGroups/userDefinedGroup/${id}`);
77
+    },
78
+    Delete(item) {
79
+      if (item.id === 0) {
80
+        this.userDefinedGroups.pop(item);
81
+      }
82
+      this.deleteUserDefinedGroup(item.id);
83
+    },
58 84
   },
59 85
 };
60 86
 </script>
61
-<style>
62
-</style>

+ 12
- 1
src/components/property/propertyImage.vue 파일 보기

@@ -16,6 +16,8 @@
16 16
     <br />
17 17
     <div class="form-group row">
18 18
       <div v-for="(img, i) in image" class="col-md-2" :key="i">
19
+        <input type="checkbox" id="checkbox" v-model="imagesDefault[i]" @change="updateList(i)" />
20
+        <label for="checkbox" style="margin: 10px;">Main Image</label>
19 21
         <img :src="img" style="height:200px; width:150px; object-fit: cover;" />
20 22
         <br />
21 23
         <a class="fa fa-times del" @click="removeImage(key)" />
@@ -35,6 +37,7 @@ export default {
35 37
     return {
36 38
       images: {},
37 39
       image: [],
40
+      imagesDefault: [],
38 41
     };
39 42
   },
40 43
   mounted() {
@@ -61,7 +64,6 @@ export default {
61 64
 
62 65
         reader.onload = (e) => {
63 66
           vm.image.push(e.target.result);
64
-          console.log(vm.image);
65 67
         };
66 68
         reader.readAsDataURL(file[i]);
67 69
       }
@@ -75,6 +77,15 @@ export default {
75 77
         this.$refs.im.value = '';
76 78
       }
77 79
     },
80
+
81
+    updateList(index) {
82
+      for (let i = 0; i < this.imagesDefault.length; i++) {
83
+        if (i !== index) {
84
+          this.imagesDefault[i] = false;
85
+        }
86
+      }
87
+      this.$emit('DefaultImage', index);
88
+    },
78 89
   },
79 90
 };
80 91
 </script>

+ 8
- 1
src/components/property/propertyPage.vue 파일 보기

@@ -245,7 +245,11 @@ export default {
245 245
     ...mapState('property', ['property', 'propertyImages']),
246 246
   },
247 247
   methods: {
248
-    ...mapActions('property', ['getProperty', 'getPropertyImages']),
248
+    ...mapActions('property', [
249
+      'getProperty',
250
+      'getPropertyImages',
251
+      'clearPropertyImages',
252
+    ]),
249 253
     formatPrice(value) {
250 254
       const val = (value / 1).toFixed(2);
251 255
       return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
@@ -257,6 +261,9 @@ export default {
257 261
       return '';
258 262
     },
259 263
   },
264
+  beforeDestroy() {
265
+    this.clearPropertyImages();
266
+  },
260 267
 };
261 268
 </script>
262 269
 

+ 5
- 0
src/components/property/propertyUserField.vue 파일 보기

@@ -56,5 +56,10 @@ export default {
56 56
       this.$emit('UpdateUserDefinedFields', item);
57 57
     },
58 58
   },
59
+  // mounted() {
60
+  //   for (let i = 0; i < this.fields.length; i++) {
61
+  //     console.log(`${this.fields[i].name  } ${  this.fields[i].value}`);
62
+  //   }
63
+  // },
59 64
 };
60 65
 </script>

+ 47
- 23
src/components/property/propertyeditPage.vue 파일 보기

@@ -220,7 +220,11 @@
220 220
                 </div>
221 221
               </div>
222 222
             </div>
223
-            <ImageLoad :loadedImages="loadedImages" :savedImages="propertyImages" />
223
+            <ImageLoad
224
+              :loadedImages="loadedImages"
225
+              :savedImages="propertyImages"
226
+              @DefaultImage="UpdateDefaultImage"
227
+            />
224 228
             <button
225 229
               type="button"
226 230
               @click="SubmitData()"
@@ -255,6 +259,7 @@ export default {
255 259
       selectedCity: '',
256 260
       images: [],
257 261
       propertyFieldValues: [],
262
+      defaultImage: 0,
258 263
     };
259 264
   },
260 265
   methods: {
@@ -266,17 +271,23 @@ export default {
266 271
       'saveProperty',
267 272
       'getProperty',
268 273
       'getPropertyImages',
274
+      'clearProperty',
275
+      'clearPropertyImages',
276
+      'getPropertyEditDisplay',
277
+      'getPropertySavedOverviewFields',
278
+      'getPropertySavedFields',
269 279
     ]),
270 280
     SubmitData() {
271
-      let isDefault = true;
272
-      this.images.forEach((imagedata) => {
281
+      for (let i = 0; i < this.images.length; i++) {
282
+        let setAsDefault = false;
283
+        if (i === this.defaultImage) {
284
+          setAsDefault = true;
285
+        }
273 286
         this.property.propertyImages.push({
274
-          image: imagedata,
275
-          isDefault,
287
+          image: this.images[i],
288
+          isDefault: setAsDefault,
276 289
         });
277
-        isDefault = false;
278
-      });
279
-      this.property.propertyUserFields = this.propertyFieldValues;
290
+      }
280 291
 
281 292
       this.saveProperty(this.property);
282 293
 
@@ -321,8 +332,35 @@ export default {
321 332
         this.propertyFieldValues.push(item);
322 333
       }
323 334
     },
335
+    UpdateDefaultImage(item) {
336
+      this.defaultImage = item;
337
+    },
324 338
   },
325 339
   mounted() {
340
+    this.clearProperty();
341
+    this.clearPropertyImages();
342
+    this.images = [];
343
+    this.defaultImage = 0;
344
+    // if (this.$route.params.id) {
345
+    //   this.getPropertyEditDisplay(4); // (this.$route.params.id);
346
+    //   this.propertyType = 'Residential'; // this.propertyEditDisplay.propertyType;
347
+    //   this.salesType = 'Rental'; // this.propertyEditDisplay.saleType;
348
+
349
+    //   this.getProvince();
350
+    //   this.getPropertyTypes('Residential');
351
+    //   this.getPropertySavedOverviewFields(4);
352
+    //   this.getPropertySavedFields(
353
+    //     Object.assign(
354
+    //       {},
355
+    //       {
356
+    //         type: 'Residential',
357
+    //         id: 4,
358
+    //       },
359
+    //     ),
360
+    //   );
361
+
362
+    //   this.getProperty(this.$route.params.id);
363
+    // } else {
326 364
     this.propertyType = this.$route.params.propType;
327 365
     this.salesType = this.$route.params.saleType;
328 366
 
@@ -330,22 +368,7 @@ export default {
330 368
     this.getPropertyTypes(this.$route.params.propType);
331 369
     this.getPropertyOverviewFields();
332 370
     this.getPropertyFields(this.$route.params.propType);
333
-
334
-    // if (this.$route.params.id) {
335
-    //   this.getProperty(this.$route.params.id);
336
-    //   this.getPropertyImages(this.$route.params.id);
337 371
     // }
338
-    /*
339
-    if (this.$route.params.id) {
340
-      this.getProperty(this.$route.params.id);
341
-      this.getPropertyImages(this.$route.params.id);
342
-      if (this.property.propertyType.usageType === 0) {
343
-        this.propertyType = 'Residential';
344
-      } else {
345
-        this.propertyType = 'Commercial';
346
-      }
347
-      this.salesType = this.property.isSale ? 'Sale' : 'Rental';
348
-    } */
349 372
   },
350 373
   computed: {
351 374
     ...mapState('searchTab', ['provinces', 'cities', 'suburbs']),
@@ -355,6 +378,7 @@ export default {
355 378
       'propertyFields',
356 379
       'property',
357 380
       'propertyImages',
381
+      'propertyEditDisplay',
358 382
     ]),
359 383
     SalesTypeChanged() {
360 384
       // eslint-disable-next-line vue/no-side-effects-in-computed-properties

+ 0
- 206
src/router/index.js 파일 보기

@@ -1,206 +0,0 @@
1
-import Vue from 'vue';
2
-import Router from 'vue-router';
3
-
4
-import HomePage from '../components/home/homePage.vue';
5
-
6
-import TimeshareBuy from '../components/timeshare/buy/buyPage.vue';
7
-import TimeshareSell from '../components/timeshare/sell/sellPage.vue';
8
-import TimeshareFAQ from '../components/timeshare/faqPage.vue';
9
-
10
-import Login from '../components/user/loginPage.vue';
11
-import PrivateIndividual from '../components/user/registerPage.vue';
12
-import Agency from '../components/user/registerAgencySection.vue';
13
-
14
-import PropertySearch from '../components/property/propertySearchPage.vue';
15
-import PropertyPage from '../components/property/propertyPage.vue';
16
-import PropertyEdit from '../components/property/propertyeditPage.vue';
17
-import PropertyList from '../components/property/propertyList.vue';
18
-import PropertyTypeList from '../components/admin/property/propertyTypeList.vue';
19
-import PropertyType from '../components/admin/property/propertyTypeEdit.vue';
20
-import UserDefinedGroups from '../components/admin/property/userDefinedGroupsPage.vue';
21
-import UserDefinedGroup from '../components/admin/property/userDefinedGroupPage.vue';
22
-import UserField from '../components/admin/property/userDefinedFieldPage.vue';
23
-
24
-import AboutUs from '../components/about/aboutUsPage.vue';
25
-import AboutTimeshare from '../components/about/aboutTimeshare.vue';
26
-
27
-import Status from '../components/admin/status/statusPage.vue';
28
-import timeshareAdminPage from '../components/admin/status/timeshareAdminPage.vue';
29
-import tenderWeekAdminPage from '../components/admin/status/tenderWeekAdminPage.vue';
30
-import userManagementPage from '../components/admin/status/userManagementPage.vue';
31
-import changeLogPage from '../components/admin/status/changeLogPage.vue';
32
-import UnitConfiguration from '../components/admin/unitConfiguration/unitConfigurationPage.vue';
33
-
34
-import ResortPage from '../components/timeshare/resort/resortPage.vue';
35
-import UnitPage from '../components/timeshare/resort/unitPage.vue';
36
-
37
-import ContactUs from '../components/misc/contactUs.vue';
38
-import PrivacyPolicy from '../components/misc/privacyPolicyPage.vue';
39
-
40
-Vue.use(Router);
41
-
42
-export default new Router({
43
-  routes: [{
44
-    path: '/',
45
-    name: 'Home',
46
-    component: HomePage,
47
-  },
48
-  {
49
-    path: '/about/us',
50
-    name: 'aboutus',
51
-    component: AboutUs,
52
-  },
53
-  {
54
-    path: '/about/timeshare',
55
-    name: 'abouttimeshare',
56
-    component: AboutTimeshare,
57
-  },
58
-  {
59
-    path: '/timeshare/sell',
60
-    name: 'TimeshareSell',
61
-    component: TimeshareSell,
62
-  },
63
-  {
64
-    path: '/timeshare/buy',
65
-    name: 'TimeshareBuy',
66
-    component: TimeshareBuy,
67
-  },
68
-  {
69
-    path: '/timeshare/faq',
70
-    name: 'TimeshareFAQ',
71
-    component: TimeshareFAQ,
72
-  },
73
-  {
74
-    path: '/user/login',
75
-    name: 'Login',
76
-    component: Login,
77
-  },
78
-  {
79
-    path: '/user/register',
80
-    name: 'PrivateIndividual',
81
-    component: PrivateIndividual,
82
-  },
83
-  {
84
-    path: '/user/registeragency',
85
-    name: 'Agency',
86
-    component: Agency,
87
-  },
88
-  {
89
-    path: '/property/property/:id',
90
-    name: 'PropertyPage',
91
-    component: PropertyPage,
92
-  },
93
-  {
94
-    path: '/property/:propertyType/search',
95
-    name: 'PropertySearch',
96
-    component: PropertySearch,
97
-  },
98
-  {
99
-    path: '/property/search',
100
-    name: 'PropertySearchTab',
101
-    component: PropertySearch,
102
-  },
103
-  {
104
-    path: '/property/:propType/:saleType',
105
-    name: 'PropertyNew',
106
-    component: PropertyEdit,
107
-  },
108
-  {
109
-    path: '/property/:id',
110
-    name: 'PropertyEdit',
111
-    component: PropertyEdit,
112
-  },
113
-  {
114
-    path: '/property/list/:propertyType/:user',
115
-    name: 'PropertyList',
116
-    component: PropertyList,
117
-  },
118
-  {
119
-    path: '/propertyTypes/list',
120
-    name: 'PropertyTypeList',
121
-    component: PropertyTypeList,
122
-  },
123
-  {
124
-    path: '/propertyType/new',
125
-    name: 'PropertyTypeNew',
126
-    component: PropertyType,
127
-  },
128
-  {
129
-    path: '/propertyType/:id',
130
-    name: 'PropertyTypeEdit',
131
-    component: PropertyType,
132
-  },
133
-  {
134
-    path: '/userDefinedGroups/list',
135
-    name: 'UserDefinedGroupsList',
136
-    component: UserDefinedGroups,
137
-  },
138
-  {
139
-    path: '/userDefinedGroups/userDefinedGroup/:id',
140
-    name: 'UserDefinedGroupEdit',
141
-    component: UserDefinedGroup,
142
-  },
143
-  {
144
-    path: '/userDefinedGroups/userDefinedGroup',
145
-    name: 'UserDefinedGroupNew',
146
-    component: UserDefinedGroup,
147
-  },
148
-  {
149
-    path: '/userField',
150
-    name: 'UserDefinedField',
151
-    component: UserField,
152
-  },
153
-  {
154
-    path: '/status/list',
155
-    name: 'StatusList',
156
-    component: Status,
157
-  },
158
-  {
159
-    path: '/status/timeshareAdmin',
160
-    name: 'TimeshareAdmin',
161
-    component: timeshareAdminPage,
162
-  },
163
-  {
164
-    path: '/status/tenderWeekAdmin',
165
-    name: 'TenderWeekAdmin',
166
-    component: tenderWeekAdminPage,
167
-  },
168
-  {
169
-    path: '/status/userManagementPage',
170
-    name: 'userManagementPage',
171
-    component: userManagementPage,
172
-  },
173
-  {
174
-    path: '/status/changeLogPage',
175
-    name: 'changeLogPage',
176
-    component: changeLogPage,
177
-  },
178
-  {
179
-    path: '/unitConfiguration/list',
180
-    name: 'UnitConfiguration',
181
-    component: UnitConfiguration,
182
-  },
183
-  {
184
-    path: '/contactus',
185
-    name: 'ContactUs',
186
-    component: ContactUs,
187
-  },
188
-  {
189
-    path: '/privacypolicy',
190
-    name: 'PrivacyPolicy',
191
-    component: PrivacyPolicy,
192
-  },
193
-  {
194
-    path: '/resort/:resortCode',
195
-    name: 'ResortPage',
196
-    component: ResortPage,
197
-    props: true,
198
-  },
199
-  {
200
-    path: '/resort/:resortCode/:weekId',
201
-    name: 'UnitPage',
202
-    component: UnitPage,
203
-    props: true,
204
-  },
205
-  ],
206
-});

+ 109
- 6
src/store/modules/property/property.js 파일 보기

@@ -4,22 +4,45 @@ export default {
4 4
   namespaced: true,
5 5
   state: {
6 6
     property: {
7
-      id: 0,
7
+      createdBy: '',
8 8
       propertyTypeId: 0,
9 9
       propertyName: '',
10 10
       unit: '',
11
+      operationalCosts: 0.0,
12
+      price: 0,
13
+      pricePer: '',
14
+      isSale: false,
15
+      description: '',
16
+      shortDescription: '',
11 17
       addressLine1: '',
12 18
       addressLine2: '',
13 19
       addressLine3: '',
14 20
       suburbId: 0,
15 21
       cityId: 0,
16 22
       provinceId: 0,
17
-      price: '',
18
-      per: '',
19
-      description: '',
20
-      isSale: false,
23
+      published: false,
24
+      propertyType: {
25
+        description: '',
26
+        usageType: 0,
27
+        id: 2,
28
+      },
29
+      province: {
30
+        description: '',
31
+        code: '',
32
+        id: 0,
33
+      },
34
+      city: {
35
+        provinceId: 0,
36
+        description: '',
37
+        code: '',
38
+      },
39
+      suburb: {
40
+        cityId: 0,
41
+        description: '',
42
+      },
21 43
       propertyUserFields: [],
22 44
       propertyImages: [],
45
+      id: 0,
23 46
     },
24 47
     propertyImages: [],
25 48
     propertyTypes: [],
@@ -29,6 +52,10 @@ export default {
29 52
     propertyFields: [],
30 53
     properties: [],
31 54
     latestProperties: [],
55
+    propertyEditDisplay: {
56
+      propertyType: '',
57
+      saleType: '',
58
+    },
32 59
   },
33 60
   mutations: {
34 61
     setProperty(state, property) {
@@ -61,11 +88,59 @@ export default {
61 88
     setLatestProperties(state, properties) {
62 89
       state.latestProperties = properties;
63 90
     },
91
+    clearProperty(state) {
92
+      state.property = {
93
+        createdBy: '',
94
+        propertyTypeId: 0,
95
+        propertyName: '',
96
+        unit: '',
97
+        operationalCosts: 0.0,
98
+        price: 0,
99
+        pricePer: '',
100
+        isSale: false,
101
+        description: '',
102
+        shortDescription: '',
103
+        addressLine1: '',
104
+        addressLine2: '',
105
+        addressLine3: '',
106
+        suburbId: 0,
107
+        cityId: 0,
108
+        provinceId: 0,
109
+        published: false,
110
+        propertyType: {
111
+          description: '',
112
+          usageType: 0,
113
+          id: 2,
114
+        },
115
+        province: {
116
+          description: '',
117
+          code: '',
118
+          id: 0,
119
+        },
120
+        city: {
121
+          provinceId: 0,
122
+          description: '',
123
+          code: '',
124
+        },
125
+        suburb: {
126
+          cityId: 0,
127
+          description: '',
128
+        },
129
+        propertyUserFields: [],
130
+        propertyImages: [],
131
+        id: 0,
132
+      };
133
+    },
134
+    clearPropertyImages(state) {
135
+      state.propertyImages = [];
136
+    },
137
+    setPropertyEditDisplay(state, item) {
138
+      state.propertyEditDisplay = item;
139
+    },
64 140
   },
65 141
   getters: {},
66 142
   actions: {
67 143
     getProperty({ commit }, id) {
68
-      console.log(id);
69 144
       axios
70 145
         .get(`http://localhost:57260/Property/Property/${id}`)
71 146
         .then(result => commit('setProperty', result.data))
@@ -105,6 +180,22 @@ export default {
105 180
         .get(`http://localhost:57260/property/propertyfields/Propertytype/${propertyType}`)
106 181
         .then(response => commit('setPropertyFields', response.data));
107 182
     },
183
+    getPropertySavedOverviewFields({ commit }, id) {
184
+      axios
185
+        .get(
186
+          `http://localhost:57260/Property/PropertyFields/GetSavedValues/Residential/Property Overview/${id}`,
187
+        )
188
+        .then(response => commit('setPropertyOverviewFields', response.data))
189
+        .catch(console.error);
190
+    },
191
+    getPropertySavedFields({ commit }, item) {
192
+      axios
193
+        .get(
194
+          `http://localhost:57260/Property/PropertyFields/GetSavedValues/${item.type}/All/${item.id}`,
195
+        )
196
+        .then(response => commit('setPropertyFields', response.data))
197
+        .catch(console.error);
198
+    },
108 199
     saveProperty({ commit }, item) {
109 200
       axios
110 201
         .post('http://localhost:57260/Property/Property', item)
@@ -131,5 +222,17 @@ export default {
131 222
         .then(response => commit('setLatestProperties', response.data))
132 223
         .catch(console.error);
133 224
     },
225
+    clearProperty({ commit }) {
226
+      commit('clearProperty');
227
+    },
228
+    clearPropertyImages({ commit }) {
229
+      commit('clearPropertyImages');
230
+    },
231
+    getPropertyEditDisplay({ commit }, id) {
232
+      axios
233
+        .get(`http://localhost:57260/Property/Property/GetEditDisplay/${id}`)
234
+        .then(response => commit('setPropertyEditDisplay', response.data))
235
+        .catch(console.error);
236
+    },
134 237
   },
135 238
 };

+ 95
- 18
src/store/modules/property/propertyAdmin.js 파일 보기

@@ -4,9 +4,21 @@ export default {
4 4
   namespaced: true,
5 5
   state: {
6 6
     userDefinedGroups: [],
7
-    userDefinedGroup: null,
7
+    userDefinedGroup: {
8
+      id: 0,
9
+      description: '',
10
+      usageType: 0,
11
+      rank: 0,
12
+      fields: [],
13
+    },
8 14
     userFields: [],
9
-    userField: null,
15
+    userField: {
16
+      id: 0,
17
+      groupId: 0,
18
+      fieldName: '',
19
+      fieldType: '',
20
+      rank: 0,
21
+    },
10 22
   },
11 23
   mutations: {
12 24
     setUserDefinedGroups(state, groups) {
@@ -21,9 +33,47 @@ export default {
21 33
     setUserField(state, field) {
22 34
       state.userField = field;
23 35
     },
24
-    updateUserDefinedGroups(state, field) {
36
+    addUserDefinedGroups(state, field) {
25 37
       state.userDefinedGroups.push(field);
26 38
     },
39
+    updateUserDefinedGroups(state, field) {
40
+      state.userDefinedGroups.find(item => item.id === field.id).description = field.description;
41
+      state.userDefinedGroups.find(item => item.id === field.id).usageType = field.usageType;
42
+      state.userDefinedGroups.find(item => item.id === field.id).rank = field.rank;
43
+    },
44
+    addUserField(state, field) {
45
+      state.userFields.push(field);
46
+    },
47
+    updateUserFields(state, field) {
48
+      state.userFields.find(item => item.id === field.id).fieldName = field.fieldName;
49
+      state.userFields.find(item => item.id === field.id).fieldType = field.fieldType;
50
+      state.userFields.find(item => item.id === field.id).rank = field.rank;
51
+    },
52
+    removeUserDefinedGroup(state, id) {
53
+      state.userDefinedGroups.pop(state.userDefinedGroups.find(p => p.id === id));
54
+    },
55
+    removeUserField(state, id) {
56
+      state.userFields.pop(state.userFields.find(p => p.id === id));
57
+    },
58
+    clearUserGroup(state) {
59
+      state.userDefinedGroup = {
60
+        id: 0,
61
+        description: '',
62
+        usageType: 0,
63
+        rank: 0,
64
+      };
65
+    },
66
+    clearUserField(state) {
67
+      state.userField = {
68
+        id: 0,
69
+        fieldName: '',
70
+        fieldType: '',
71
+        rank: 0,
72
+      };
73
+    },
74
+    clearUserFields(state) {
75
+      state.userFields = [];
76
+    },
27 77
   },
28 78
   getters: {},
29 79
   actions: {
@@ -33,41 +83,68 @@ export default {
33 83
         .then(result => commit('setUserDefinedGroups', result.data))
34 84
         .catch(console.error);
35 85
     },
36
-    getUserDefinedGroup({ commit }, item) {
86
+    getUserDefinedGroup({ commit }, id) {
37 87
       axios
38
-        .get(`http://localhost:57260/Property/UserDefinedGroup/${item.id}`)
88
+        .get(`http://localhost:57260/Property/UserDefinedGroup/${id}`)
39 89
         .then(result => commit('setUserDefinedGroup', result.data))
40 90
         .catch(console.error);
41 91
     },
42
-    getUserFields({ commit }, item) {
92
+    getUserFields({ commit }, groupId) {
43 93
       axios
44
-        .get(`http://localhost:57260/Property/UserDefinedField/group/${item.groupId}`)
94
+        .get(`http://localhost:57260/Property/UserDefinedField/group/${groupId}`)
45 95
         .then(result => commit('setUserFields', result.data))
46 96
         .catch(console.error);
47 97
     },
48
-    getUserField({ commit }, item) {
98
+    getUserField({ commit }, id) {
49 99
       axios
50
-        .get(`http://localhost:57260/Property/UserDefinedField/${item.id}`)
100
+        .get(`http://localhost:57260/Property/UserDefinedField/${id}`)
51 101
         .then(result => commit('setUserField', result.data))
52 102
         .catch(console.error);
53 103
     },
54 104
     saveUserDefinedGroup({ commit }, item) {
55 105
       axios
56
-        .post('http://localhost:57260/Property/UserDefinedGroup', item.group)
57
-        .then(response => commit('updateUserDefinedGroups', response.data))
106
+        .post('http://localhost:57260/Property/UserDefinedGroup', item)
107
+        .then(response => commit('addUserDefinedGroups', response.data))
58 108
         .catch(console.error);
59 109
     },
60 110
     updateUserDefinedGroup({ commit }, item) {
61 111
       axios
62
-        .put('http://localhost:57260/Property/UserDefinedGroup', item.group)
112
+        .put('http://localhost:57260/Property/UserDefinedGroup', item)
63 113
         .then(response => commit('updateUserDefinedGroups', response.data))
64 114
         .catch(console.error);
65 115
     },
66
-    // deleteUserDefinedGroup(item) {
67
-    //   axios
68
-    //     .delete(`http://localhost:57260/Property/UserDefinedField/${item.id}`)
69
-    //     .then((response) => {})
70
-    //     .catch(console.error);
71
-    // },
116
+    saveUserField({ commit }, item) {
117
+      axios
118
+        .post('http://localhost:57260/Property/UserDefinedField', item)
119
+        .then(response => commit('addUserField', response.data))
120
+        .catch(console.error);
121
+    },
122
+    updateUserField({ commit }, item) {
123
+      axios
124
+        .put('http://localhost:57260/Property/UserDefinedField', item)
125
+        .then(response => commit('updateUserFields', response.data))
126
+        .catch(console.error);
127
+    },
128
+    deleteUserDefinedGroup({ commit }, id) {
129
+      axios
130
+        .delete(`http://localhost:57260/Property/UserDefinedGroup/${id}`)
131
+        .then(result => commit('removeUserDefinedGroup', id))
132
+        .catch(console.error);
133
+    },
134
+    deleteUserField({ commit }, id) {
135
+      axios
136
+        .delete(`http://localhost:57260/Property/UserDefinedField/${id}`)
137
+        .then(result => commit('removeUserField', id))
138
+        .catch(console.error);
139
+    },
140
+    clearUserGroup({ commit }) {
141
+      commit('clearUserGroup');
142
+    },
143
+    clearUserField({ commit }) {
144
+      commit('clearUserField');
145
+    },
146
+    clearUserFields({ commit }) {
147
+      commit('clearUserFields');
148
+    },
72 149
   },
73 150
 };

Loading…
취소
저장