您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

timeshareAdminPage.vue 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. /* eslint-disable no-restricted-syntax */ /* eslint-disable guard-for-in */
  2. <!-- eslint-disable max-len -->
  3. <template>
  4. <main id="main" style="margin-top:200px; padding-bottom:50px">
  5. <div class="container">
  6. <div class="row">
  7. <div class="col">
  8. <div class="section-header">
  9. <h2>All Timeshare Weeks</h2>
  10. </div>
  11. </div>
  12. </div>
  13. <div class="row">
  14. <div class="col-md-3">
  15. <float-label label="REGION">
  16. <select
  17. id="weekInfoRegionSelect"
  18. class="form-control uniSelect"
  19. @change="regionChange()"
  20. style="font-size: 15px"
  21. >
  22. <option v-for="(region, r) in regions" :key="r" :value="region">{{
  23. region.regionName
  24. }}</option>
  25. </select>
  26. </float-label>
  27. </div>
  28. <div class="col-md-3">
  29. <float-label label="RESORT NAME">
  30. <select
  31. id="weekInfoResortSelect"
  32. class="form-control uniSelect"
  33. @change="resortChange()"
  34. >
  35. <option value="Other">Other</option>
  36. <option v-for="(resort, r) in resorts" :key="r" :value="resort">{{
  37. resort.resortName
  38. }}</option>
  39. </select>
  40. </float-label>
  41. </div>
  42. <div class="col-md-3">
  43. <float-label label="SEASON">
  44. <select class="form-control uniSelect" name="region" id="region">
  45. <option v-for="(season, r) in seasons" :key="r">{{ season.name }}</option>
  46. </select>
  47. </float-label>
  48. </div>
  49. <div class="col-md-3">
  50. <float-label label="STATUS">
  51. <select class="form-control uniSelect" name="status"> </select>
  52. </float-label>
  53. </div>
  54. </div>
  55. <div class="row">
  56. <div class="col">
  57. <button style="float:right" class="btn-solid-blue" type="button">Filter</button>
  58. </div>
  59. </div>
  60. <div class="row">
  61. <div class="col-md-12">
  62. <ListView
  63. :items="getNeedsVerify"
  64. :editable="true"
  65. :deleteable="true"
  66. :showCustomAction="true"
  67. :CustomActionHeading="'Publish'"
  68. @onRowClick="onRowClick"
  69. @onClearSelected="onClearSelected"
  70. @onEdit="onEdit"
  71. :showNew="false"
  72. />
  73. </div>
  74. </div>
  75. <!-- <div class="offset-1 col-md-6">
  76. <button
  77. type="button"
  78. :class="{
  79. 'form-control btn btn-primary ': 1 === 1,
  80. 'my-disable': !selectedItems || selectedItems.length === 0
  81. }"
  82. value="Verify Week(s)"
  83. :disabled="!(selectedItems.length > 0)"
  84. @click="onVerify()"
  85. >
  86. {{ ButtonMessage }}
  87. </button>
  88. <div>{{ Message }}</div>
  89. </div> -->
  90. </div>
  91. </main>
  92. </template>
  93. <script>
  94. import { mapState, mapActions, mapGetters } from "vuex";
  95. import Log from "../../../assets/Log";
  96. import ListView from "../../shared/listView.vue";
  97. export default {
  98. name: "TimeshareAdmin",
  99. components: {
  100. ListView
  101. },
  102. data() {
  103. return {
  104. user: Log.getUser(),
  105. selectedItems: [],
  106. showMessage: false
  107. };
  108. },
  109. mounted() {
  110. this.getItems(this.user.id);
  111. this.initTimeshare(0);
  112. },
  113. computed: {
  114. ...mapState("timeshare", ["resorts", "regions", "seasons"]),
  115. ...mapState("individual", ["indiv"]),
  116. filteredResort() {
  117. let list = [];
  118. if (this.sellItem && this.sellItem.region && this.sellItem.region.regionCode) {
  119. const item = this.detailedRegion.find(
  120. region => region.region.regionCode === this.sellItem.region.regionCode
  121. );
  122. if (item) {
  123. list = item.children;
  124. }
  125. } else {
  126. list = this.resorts;
  127. }
  128. return _.sortBy(list, x => x.resortName);
  129. },
  130. SelectedItems() {
  131. const selectedArray = [];
  132. this.selectedItems.forEach(x => selectedArray.push(this.items[x]));
  133. return selectedArray;
  134. },
  135. ButtonMessage() {
  136. let msg = "";
  137. if (!(this.selectedItems.length > 0)) {
  138. msg = "No Items selected";
  139. } else {
  140. msg = "Verify item";
  141. if (this.selectedItems.length > 1) {
  142. msg += "s";
  143. }
  144. }
  145. return msg;
  146. },
  147. Message() {
  148. let msg = "";
  149. if (!(this.selectedItems.length > 0)) {
  150. msg = "Please select the item(s) to verify.";
  151. } else {
  152. msg = `${this.selectedItems.length}`;
  153. if (this.selectedItems.length === 1) {
  154. msg += " item ";
  155. } else msg += " items ";
  156. msg += "selected. Click to verify or select more...";
  157. }
  158. return msg;
  159. },
  160. ...mapState("myWeeks", ["items"]),
  161. ...mapGetters({ getNeedsVerify: "myWeeks/getNeedsVerify" })
  162. },
  163. methods: {
  164. ...mapActions("myWeeks", ["getItems", "verifyWeek"]),
  165. ...mapActions("alert", ["success"]),
  166. ...mapActions("timeshare", ["initTimeshare", "onResortChange", "saveWeek", "getBlankWeek"]),
  167. onVerify() {
  168. if (this.selectedItems.length > 0) {
  169. for (const i in this.selectedItems) {
  170. const selectedIndex = this.selectedItems[i];
  171. const item = this.items[selectedIndex];
  172. if (item) {
  173. this.verifyWeek(item.id);
  174. }
  175. }
  176. this.success("Week verified!");
  177. this.$router.push("/shared/alert");
  178. }
  179. },
  180. onRowClick(items) {
  181. this.selectedItems = items;
  182. },
  183. onEdit(item) {
  184. this.$router.push(`/editTimeShare/${item.id}`);
  185. },
  186. onClearSelected() {
  187. this.selectedItems = [];
  188. }
  189. // onDelete(item) {
  190. // this.deleteListing(item.id);
  191. // },
  192. }
  193. };
  194. </script>
  195. <style>
  196. .my-disable {
  197. background-color: silver;
  198. border-color: silver;
  199. }
  200. .my-disable:hover {
  201. background-color: lightgray;
  202. border-color: lightgray;
  203. }
  204. </style>