123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- <template>
- <div class="container">
- <form
- id="mainForm"
- method="POST"
- action="/filter"
- accept-charset="UTF-8"
- enctype="multipart/form-data"
- >
- <div class="form-group text-left" v-if="!hideTop">
- <label>Province</label>
- <div class="input-group mb-3">
- <div class="input-group-prepend">
- <span class="input-group-text" style="color: #60CBEB">
- <b>P</b>
- </span>
- </div>
- <select class="form-control" name="region" id="region" v-model="filter.region">
- <option v-for="(item, i) in regions" :key="i" :value="item">{{item.regionName}}</option>
- </select>
- <div class="input-group-append" @click="clearFilter('region')">
- <span class="input-group-text cursor-pointer" style="color: #60CBEB">
- <b>X</b>
- </span>
- </div>
- </div>
- </div>
- <div class="form-group text-left" v-if="!hideTop">
- <label>Resort Name</label>
- <div class="input-group mb-3">
- <div class="input-group-prepend">
- <span class="input-group-text" style="color: #60CBEB">
- <b>RN</b>
- </span>
- </div>
- <select class="form-control" name="resort" id="resort" v-model="filter.resort">
- <option v-for="(item, i) in filteredResorts" :key="i" :value="item">{{item.resortName}}</option>
- </select>
- <div class="input-group-append" @click="clearFilter('resort')">
- <span class="input-group-text cursor-pointer" style="color: #60CBEB">
- <b>X</b>
- </span>
- </div>
- </div>
- </div>
- <div class="form-group text-left">
- <label>Bedrooms</label>
- <div class="input-group mb-3">
- <div class="input-group-prepend">
- <span class="input-group-text" style="color: #60CBEB">
- <b>Bed</b>
- </span>
- </div>
- <select class="form-control" name="bedrooms" v-model="filter.bedrooms">
- <option v-for="(item, i) in resortBedrooms" :key="i">{{item}}</option>
- </select>
- <div class="input-group-append" @click="clearFilter('bedrooms')">
- <span class="input-group-text cursor-pointer" style="color: #60CBEB">
- <b>X</b>
- </span>
- </div>
- </div>
- </div>
- <hr />
- <div class="form-group text-left">
- <label>Date</label>
- <div class="input-group mb-3">
- <div class="input-group-prepend">
- <span class="input-group-text" style="color: #60CBEB">
- <b>D</b>
- </span>
- </div>
- <input type="date" class="form-control" name="arrivaldate" v-model="filter.date" />
- <div class="input-group-append" @click="clearFilter('date')">
- <span class="input-group-text cursor-pointer" style="color: #60CBEB">
- <b>X</b>
- </span>
- </div>
- </div>
- </div>
- <hr />
- <div class="form-group">
- <div class="row">
- <div class="col-md-6 text-left">
- <label>Minimum Price</label>
- <div class="input-group mb-3">
- <div class="input-group-prepend">
- <span class="input-group-text" style="color: #60CBEB">
- <b>R</b>
- </span>
- </div>
- <input
- class="form-control"
- type="number"
- step="any"
- id="minPrice"
- name="minPrice"
- placeholder="Minimum Price"
- v-model="filter.minPrice"
- />
- <div class="input-group-append" @click="clearFilter('minPrice')">
- <span class="input-group-text cursor-pointer" style="color: #60CBEB">
- <b>X</b>
- </span>
- </div>
- </div>
- </div>
- <div class="col-md-6 text-left">
- <label>Maximum Price</label>
- <div class="input-group mb-3">
- <div class="input-group-prepend">
- <span class="input-group-text" style="color: #60CBEB">
- <b>R</b>
- </span>
- </div>
- <input
- class="form-control"
- type="number"
- step="any"
- id="maxPrice"
- name="maxPrice"
- placeholder="Maximum Price"
- v-model="filter.maxPrice"
- />
- <div class="input-group-append" @click="clearFilter('maxPrice')">
- <span class="input-group-text cursor-pointer" style="color: #60CBEB">
- <b>X</b>
- </span>
- </div>
- </div>
- </div>
- </div>
- </div>
- </form>
- </div>
- </template>
-
- <script>
- import { mapState, mapActions } from 'vuex';
- import _ from 'lodash';
-
- export default {
- props: {
- hideTop: undefined,
- },
- created() {
- this.initTimeshare();
- },
- computed: {
- ...mapState('timeshare', [
- 'resorts',
- 'regions',
- 'detailedRegion',
- 'resortBedrooms',
- 'maxSleep',
- ]),
- ...mapState('weekList', ['filter']),
- filteredResorts() {
- if (this.selectedRegion) {
- const list = _.find(
- this.detailedRegion,
- i => i.region.regionName === this.selectedRegion,
- ).children;
- return _.sortBy(list, r => r.resortName);
- }
- return this.resorts;
- },
- },
- methods: {
- ...mapActions('timeshare', ['initTimeshare']),
- ...mapActions('weekList', ['clearFilter']),
- },
- };
- </script>
-
- <style scoped>
- </style>
|