Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

userDefinedGroupPage.vue 6.5KB

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