Ver código fonte

Login Fix & Various Fixes

master
30117125 4 anos atrás
pai
commit
16a9ddcadc
27 arquivos alterados com 428 adições e 298 exclusões
  1. 27
    0
      public/css/newStyle.css
  2. 51
    40
      src/components/financial/paygate/paygateProcess.vue
  3. 1
    1
      src/components/home/homePage.vue
  4. 5
    5
      src/components/home/propertySection.vue
  5. 51
    0
      src/components/misc/privacyPolicy/carouselSection.vue
  6. 99
    0
      src/components/misc/privacyPolicy/contentSection.vue
  7. 22
    0
      src/components/misc/privacyPolicy/privacyPolicyPage.vue
  8. 0
    121
      src/components/misc/privacyPolicyPage.vue
  9. 2
    2
      src/components/property/commercial/commercialPage.vue
  10. 4
    4
      src/components/property/commercial/latestListings.vue
  11. 18
    16
      src/components/property/residential/latestListings.vue
  12. 2
    2
      src/components/property/residential/residentialPage.vue
  13. 1
    1
      src/components/propertyManagement/ourServicesSection.vue
  14. 2
    2
      src/components/propertyManagement/propertyManagement.vue
  15. 1
    1
      src/components/propertyManagement/testimonialSection.vue
  16. 18
    5
      src/components/shared/footerSection.vue
  17. 2
    0
      src/components/shared/navBar.vue
  18. 32
    18
      src/components/timeshare/buy/searchSection.vue
  19. 0
    1
      src/components/timeshare/resort/contentSection.vue
  20. 3
    13
      src/components/timeshare/resort/unit/directions.vue
  21. 8
    2
      src/components/timeshare/resort/unit/tabSection.vue
  22. 26
    19
      src/components/timeshare/sell/contentSection.vue
  23. 37
    38
      src/components/user/loginPage.vue
  24. 2
    2
      src/main.js
  25. 10
    1
      src/router/index.js
  26. 3
    3
      src/store/modules/financial/payment.js
  27. 1
    1
      src/store/modules/user/authentication.js

+ 27
- 0
public/css/newStyle.css Ver arquivo

@@ -14,6 +14,33 @@
14 14
 
15 15
 @import url("https://fonts.googleapis.com/css?family=Muli&display=swap");
16 16
 
17
+.uniSelect {
18
+  border-color: rgb(27, 117, 187);
19
+  border-width: 2px;
20
+  font-family: "Muli";
21
+  color: rgb(118, 118, 118);
22
+  padding-left: 10px;
23
+  text-transform: uppercase;
24
+  font-size: 15px;
25
+  font-weight: 400;
26
+}
27
+
28
+.uniSelect option {
29
+  color: rgb(118, 118, 118);
30
+  font-family: "Muli";
31
+  text-transform: uppercase;
32
+}
33
+
34
+.uniSelectLabel {
35
+  position: absolute;
36
+  z-index: 2;
37
+  margin-left: 15px;
38
+  margin-top: 7px;
39
+  font-family: "muli";
40
+  font-size: 15px;
41
+  color: rgb(118, 118, 118);
42
+}
43
+
17 44
 body {
18 45
   color: #444;
19 46
   font-family: "Muli";

+ 51
- 40
src/components/financial/paygate/paygateProcess.vue Ver arquivo

@@ -1,48 +1,61 @@
1 1
 <template>
2
-  <div></div>
2
+  <div class="container mt-3 headerAdjustment">
3
+    <div class="row" v-if="loaded">
4
+      <div class="col"></div>
5
+      <div class="col-sm-6" sm="6">
6
+        <div class="card cardShadow">
7
+          <div class="container">
8
+            <div class="row" align="center">
9
+              <div class="row" align-v="center" style="width:100%">
10
+                <div class="col">
11
+                  <img width="150px" height="70" src="/img/logos/UVProp.png" />
12
+                </div>
13
+              </div>
14
+            </div>
15
+            <hr />
16
+            <div class="row">
17
+              <iframe
18
+                style="min-height:750px;"
19
+                name="payment_frame"
20
+                width="100%"
21
+                height="100%"
22
+                frameborder="0"
23
+              ></iframe>
24
+              <form
25
+                ref="form"
26
+                target="payment_frame"
27
+                action="https://secure.paygate.co.za/payweb3/process.trans"
28
+                method="POST"
29
+              >
30
+                <input type="hidden" name="PAY_REQUEST_ID" v-model="paymentReqId" />
31
+                <input type="hidden" name="CHECKSUM" v-model="checksum" />
32
+              </form>
33
+            </div>
34
+          </div>
35
+        </div>
36
+      </div>
37
+      <div class="col"></div>
38
+    </div>
39
+  </div>
3 40
 </template>
4 41
 
5 42
 <script>
6 43
 /* eslint-disable */
7
-import { mapGetters, mapState, mapActions } from "vuex";
8
-
44
+import { mapGetters, mapActions } from "vuex";
9 45
 export default {
46
+  data() {
47
+    return {
48
+      loaded: false
49
+    };
50
+  },
51
+  props: ["checksum", "paymentReqId"],
52
+  created() {
53
+    this.populateData();
54
+  },
10 55
   methods: {
11
-    ...mapActions(["payment", ["addPayment"]]),
12
-    sethtmlData(id, check) {
13
-      this.reqId = id;
14
-      this.checksum = check;
15
-    },
16
-    async placeOrder() {
17
-      await this.addOrder(this.price).then(async response => {
18
-        var respObj = {};
19
-
20
-        await response.split("&").forEach(element => {
21
-          var name = "";
22
-          var value = "";
23
-          name = element.split("=")[0];
24
-          value = element.split("=")[1];
25
-          if (name === "PAYGATE_ID") {
26
-            respObj.PAYGATE_ID = value;
27
-          } else if (name === "PAY_REQUEST_ID") {
28
-            respObj.PAY_REQUEST_ID = value;
29
-          } else if (name === "REFERENCE") {
30
-            respObj.REFERENCE = value;
31
-          } else if (name === "CHECKSUM") {
32
-            respObj.CHECKSUM = value;
33
-          }
34
-        });
35
-
36
-        await this.sethtmlData(respObj.PAY_REQUEST_ID, respObj.CHECKSUM);
37
-      });
38
-
39
-      this.$router.push({
40
-        name: "PaymentGateway",
41
-        params: {
42
-          paymentReqId: this.reqId,
43
-          checksum: this.checksum
44
-        }
45
-      });
56
+    async populateData() {
57
+      setTimeout(() => (this.loaded = true), 100);
58
+      setTimeout(() => this.$refs.form.submit(), 100);
46 59
     }
47 60
   }
48 61
 };
@@ -53,5 +66,3 @@ export default {
53 66
   box-shadow: 0 8px 8px 0 rgba(0, 0, 0, 0.281), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
54 67
 }
55 68
 </style>
56
-
57
-<style lang="scss" scoped></style>

+ 1
- 1
src/components/home/homePage.vue Ver arquivo

@@ -3,7 +3,7 @@
3 3
     <CarouselSection />
4 4
     <PropertySection
5 5
       data-aos="fade-up"
6
-      data-aos-anchor-placement="center-bottom"
6
+      data-aos-anchor-placement="top-bottom"
7 7
       data-aos-delay="150"
8 8
     />
9 9
   </div>

+ 5
- 5
src/components/home/propertySection.vue Ver arquivo

@@ -1,6 +1,6 @@
1 1
 <template>
2
-  <main id="main">
3
-    <section id="portfolio" class="wow fadeInUp">
2
+  <section id="portfolio">
3
+    <div style="margin-top:-60px">
4 4
       <div class="container">
5 5
         <div class="row">
6 6
           <div class="col-lg-12">
@@ -20,9 +20,9 @@
20 20
           </div>
21 21
         </div>
22 22
       </div>
23
-    </section>
24
-    <!-- #listings -->
25
-  </main>
23
+    </div>
24
+  </section>
25
+  <!-- #listings -->
26 26
 </template>
27 27
 
28 28
 <script>

+ 51
- 0
src/components/misc/privacyPolicy/carouselSection.vue Ver arquivo

@@ -0,0 +1,51 @@
1
+<template>
2
+  <section id="intro">
3
+    <div class="container">
4
+      <div class="row">
5
+        <div align="left" class="col-sm-12 col-md-8">
6
+          <div class="intro-content box">
7
+            <h2>Privacy Policy</h2>
8
+            <p>
9
+              We respect your privacy. This Privacy Policy governs the manner in which we will treat
10
+              your personal information collected when using our website and when we otherwise
11
+              engage with each after you visiting our website.
12
+            </p>
13
+          </div>
14
+        </div>
15
+      </div>
16
+    </div>
17
+
18
+    <carousel
19
+      :nav="false"
20
+      :dots="false"
21
+      :items="1"
22
+      :autoplay="true"
23
+      :loop="true"
24
+      id="intro-carousel"
25
+      style="margin-top:-50px"
26
+      :responsive="{ 0: { items: 1, nav: false }, 600: { items: 1, nav: false } }"
27
+    >
28
+      <img class="item" src="/img/intro-carousel/home-1.jpg" alt="" />
29
+      <img class="item" src="/img/intro-carousel/home-2.jpg" alt="" />
30
+      <img class="item" src="/img/intro-carousel/home-3.jpg" alt="" />
31
+      <img class="item" src="/img/intro-carousel/home-4.jpg" alt="" />
32
+      <img class="item" src="/img/intro-carousel/home-5.jpg" alt="" />
33
+      <img class="item" src="/img/intro-carousel/home-6.jpg" alt="" />
34
+    </carousel>
35
+
36
+    <div id="intro-carousel" class="owl-carousel"></div>
37
+  </section>
38
+</template>
39
+
40
+<script>
41
+/* eslint-disable */
42
+
43
+import carousel from "vue-owl-carousel";
44
+export default {
45
+  components: {
46
+    carousel
47
+  }
48
+};
49
+</script>
50
+
51
+<style lang="scss" scoped></style>

+ 99
- 0
src/components/misc/privacyPolicy/contentSection.vue Ver arquivo

@@ -0,0 +1,99 @@
1
+<template>
2
+  <div class="container pt-5">
3
+    <div class="row mb-3">
4
+      <div class="col-sm-12 col-md-6">
5
+        <h2>How do we collect your personal indormation?</h2>
6
+        <p style="text-align:left">
7
+          Your personal information may be collected while using this website, when you contact us,
8
+          when you complete an application form, when you check in at your destination or when you
9
+          make use of the services of one of our affiliated business partners. Personal information
10
+          includes any information by which you can be identified and which relates to you as an
11
+          identifiable individual, such as your name, physical and postal addresses, email address,
12
+          sex, age and internet address from the domain from which you are visiting.
13
+        </p>
14
+      </div>
15
+      <div class="col-sm-12 col-md-6">
16
+        <h2>Use of your personal information</h2>
17
+        <p style="text-align:left">
18
+          We need to process your personal information when you make use of our service. We use your
19
+          personal information in the ordinary course of our business and to send you marketing
20
+          material relating to our service offering. You can unsubscribe at any time and we will
21
+          thereafter no longer use your personal information. We will not disclose your personal
22
+          information to third parties unless justifiable in terms of agreement between us.
23
+        </p>
24
+      </div>
25
+    </div>
26
+    <div class="row mb-3">
27
+      <div class=" col-sm-12 col-md-6">
28
+        <h2>Access to and correction of personal information</h2>
29
+        <p style="text-align:left">
30
+          You may access your personal information that we hold by sending an email to
31
+          <a href="mailto:info@univateproperties.co.za">info@univateproperties.co.za</a>
32
+        </p>
33
+        <p style="text-align:left">
34
+          In the event that you want to update or correct your personal information held by us, you
35
+          can send an email to
36
+          <a href="mailto:info@univateproperties.co.za">info@univateproperties.co.za</a>
37
+        </p>
38
+      </div>
39
+      <div class="col-sm-12 col-md-6">
40
+        <h2>Protection of your personal information</h2>
41
+        <p style="text-align:left">
42
+          We take reasonable steps and measures to keep your information secure from loss, misuse or
43
+          unauthorised alteration. Our database has built-in safeguards to ensure the privacy and
44
+          confidentiality of your information. We do not have control over the websites of
45
+          affiliated parties or sites linked into from this site and you must therefore refer to the
46
+          privacy policies of any such parties to see how they protect your personal information.
47
+        </p>
48
+      </div>
49
+    </div>
50
+    <div class="row mb-3">
51
+      <div class="col-sm-12 col-md-6">
52
+        <h2>Cookies</h2>
53
+        <p style="text-align:left">
54
+          We may use cookies. Cookies are programs that we transfer to your computer’s hard drive to
55
+          personalise your experience on this website. In this way, the next time you visit, we will
56
+          know who you are and that you have visited this website before. This will enable us to
57
+          enhance your browsing experience. You can set your browser to notify you if cookies are to
58
+          be transferred or to reject cookies but this may prevent your use of some of the web
59
+          pages.
60
+        </p>
61
+      </div>
62
+      <div class="col-sm-12 col-md-6">
63
+        <h2>Email Monitoring</h2>
64
+        <p style="text-align:left">
65
+          We provide email addresses on the website which enable you to contact us. Forms that you
66
+          complete via this website will also be transmitted via email. In order to check for
67
+          viruses and to monitor service we reserve the right to monitor and inspect all material
68
+          and information transmitted over our system.
69
+        </p>
70
+      </div>
71
+    </div>
72
+    <div class="row mb-3">
73
+      <div class="col-sm-12 col-md-6">
74
+        <h2>Changes to this privacy policy</h2>
75
+        <p style="text-align:left">
76
+          We reserve the right, in our sole discretion, to amend this Privacy Policy from time to
77
+          time. You agree to review the Privacy Policy whenever you visit this website for any such
78
+          amendments. The amended version of the Privacy Policy shall supersede and replace all
79
+          previous versions thereof.
80
+        </p>
81
+      </div>
82
+      <div class="col-sm-12 col-md-6">
83
+        <h2>Which laws apply to your dealings with us?</h2>
84
+        <p style="text-align:left">
85
+          This policy will be governed and interpreted in accordance with the laws of South Africa.
86
+          To the extent that a court has jurisdiction over any dispute which may arise out of or in
87
+          connection with this Privacy Policy, we both submit to the jurisdiction of the South
88
+          African Courts.
89
+        </p>
90
+      </div>
91
+    </div>
92
+  </div>
93
+</template>
94
+
95
+<script>
96
+export default {};
97
+</script>
98
+
99
+<style lang="scss" scoped></style>

+ 22
- 0
src/components/misc/privacyPolicy/privacyPolicyPage.vue Ver arquivo

@@ -0,0 +1,22 @@
1
+<template>
2
+  <div>
3
+    <carouselSection />
4
+    <main id="main" style="margin-top:-20px;padding-bottom:50px">
5
+      <contentSection />
6
+    </main>
7
+  </div>
8
+</template>
9
+
10
+<script>
11
+/* eslint-disable */
12
+import carouselSection from "./carouselSection";
13
+import contentSection from "./contentSection";
14
+export default {
15
+  components: {
16
+    carouselSection,
17
+    contentSection
18
+  }
19
+};
20
+</script>
21
+
22
+<style lang="scss" scoped></style>

+ 0
- 121
src/components/misc/privacyPolicyPage.vue Ver arquivo

@@ -1,121 +0,0 @@
1
-<template>
2
-  <main id="main" style="margin-top:-20px;padding-bottom:50px">
3
-    <div class="container">
4
-      <div class="row mb-5">
5
-        <div class="col">
6
-          <div class="section-header">
7
-            <h2>Privacy Policy</h2>
8
-          </div>
9
-        </div>
10
-      </div>
11
-      <div class="row mb-3">
12
-        <div class="col-sm-12 col-md-6">
13
-          <h2>Privacy</h2>
14
-          <p style="text-align:left">
15
-            We respect your privacy. This Privacy Policy governs the manner in which we will treat
16
-            your personal information collected when using our website and when we otherwise engage
17
-            with each after you visiting our website.
18
-          </p>
19
-        </div>
20
-        <div class="col-sm-12 col-md-6">
21
-          <h2>How do we collect your personal indormation?</h2>
22
-          <p style="text-align:left">
23
-            Your personal information may be collected while using this website, when you contact
24
-            us, when you complete an application form, when you check in at your destination or when
25
-            you make use of the services of one of our affiliated business partners. Personal
26
-            information includes any information by which you can be identified and which relates to
27
-            you as an identifiable individual, such as your name, physical and postal addresses,
28
-            email address, sex, age and internet address from the domain from which you are
29
-            visiting.
30
-          </p>
31
-        </div>
32
-      </div>
33
-      <div class="row mb-3">
34
-        <div class=" col-sm-12 col-md-6">
35
-          <h2>Use of your personal information</h2>
36
-          <p style="text-align:left">
37
-            We need to process your personal information when you make use of our service. We use
38
-            your personal information in the ordinary course of our business and to send you
39
-            marketing material relating to our service offering. You can unsubscribe at any time and
40
-            we will thereafter no longer use your personal information. We will not disclose your
41
-            personal information to third parties unless justifiable in terms of agreement between
42
-            us.
43
-          </p>
44
-        </div>
45
-        <div class="col-sm-12 col-md-6">
46
-          <h2>Access to and correction of personal information</h2>
47
-          <p style="text-align:left">
48
-            You may access your personal information that we hold by sending an email to
49
-            <a href="mailto:info@univateproperties.co.za">info@univateproperties.co.za</a>
50
-          </p>
51
-          <p style="text-align:left">
52
-            In the event that you want to update or correct your personal information held by us,
53
-            you can send an email to
54
-            <a href="mailto:info@univateproperties.co.za">info@univateproperties.co.za</a>
55
-          </p>
56
-        </div>
57
-      </div>
58
-      <div class="row mb-3">
59
-        <div class="col-sm-12 col-md-6">
60
-          <h2>Protection of your personal information</h2>
61
-          <p style="text-align:left">
62
-            We take reasonable steps and measures to keep your information secure from loss, misuse
63
-            or unauthorised alteration. Our database has built-in safeguards to ensure the privacy
64
-            and confidentiality of your information. We do not have control over the websites of
65
-            affiliated parties or sites linked into from this site and you must therefore refer to
66
-            the privacy policies of any such parties to see how they protect your personal
67
-            information.
68
-          </p>
69
-        </div>
70
-        <div class="col-sm-12 col-md-6">
71
-          <h2>Cookies</h2>
72
-          <p style="text-align:left">
73
-            We may use cookies. Cookies are programs that we transfer to your computer’s hard drive
74
-            to personalise your experience on this website. In this way, the next time you visit, we
75
-            will know who you are and that you have visited this website before. This will enable us
76
-            to enhance your browsing experience. You can set your browser to notify you if cookies
77
-            are to be transferred or to reject cookies but this may prevent your use of some of the
78
-            web pages.
79
-          </p>
80
-        </div>
81
-      </div>
82
-      <div class="row mb-3">
83
-        <div class="col-sm-12 col-md-6">
84
-          <h2>Email Monitoring</h2>
85
-          <p style="text-align:left">
86
-            We provide email addresses on the website which enable you to contact us. Forms that you
87
-            complete via this website will also be transmitted via email. In order to check for
88
-            viruses and to monitor service we reserve the right to monitor and inspect all material
89
-            and information transmitted over our system.
90
-          </p>
91
-        </div>
92
-        <div class="col-sm-12 col-md-6">
93
-          <h2>Changes to this privacy policy</h2>
94
-          <p style="text-align:left">
95
-            We reserve the right, in our sole discretion, to amend this Privacy Policy from time to
96
-            time. You agree to review the Privacy Policy whenever you visit this website for any
97
-            such amendments. The amended version of the Privacy Policy shall supersede and replace
98
-            all previous versions thereof.
99
-          </p>
100
-        </div>
101
-      </div>
102
-      <div class="row mb-3">
103
-        <div class="col-md-12">
104
-          <h2>Which laws apply to your dealings with us?</h2>
105
-          <p style="text-align:left">
106
-            This policy will be governed and interpreted in accordance with the laws of South
107
-            Africa. To the extent that a court has jurisdiction over any dispute which may arise out
108
-            of or in connection with this Privacy Policy, we both submit to the jurisdiction of the
109
-            South African Courts.
110
-          </p>
111
-        </div>
112
-      </div>
113
-    </div>
114
-  </main>
115
-</template>
116
-
117
-<script>
118
-export default {};
119
-</script>
120
-
121
-<style lang="scss" scoped></style>

+ 2
- 2
src/components/property/commercial/commercialPage.vue Ver arquivo

@@ -2,10 +2,10 @@
2 2
   <div>
3 3
     <carouselSection />
4 4
     <main id="main">
5
-      <contentSection data-aos="fade-left" />
5
+      <contentSection data-aos="fade-left" data-aos-anchor-placement="top-bottom" />
6 6
       <latestListings
7 7
         data-aos="fade-up"
8
-        data-aos-anchor-placement="center-bottom"
8
+        data-aos-anchor-placement="top-bottom"
9 9
         data-aos-delay="150"
10 10
       />
11 11
     </main>

+ 4
- 4
src/components/property/commercial/latestListings.vue Ver arquivo

@@ -1,6 +1,6 @@
1 1
 <template>
2
-  <main id="main">
3
-    <section id="portfolio">
2
+  <section id="portfolio">
3
+    <div style="margin-top:-60px">
4 4
       <div class="container">
5 5
         <div class="row">
6 6
           <div class="col-lg-12">
@@ -20,8 +20,8 @@
20 20
           </div>
21 21
         </div>
22 22
       </div>
23
-    </section>
24
-  </main>
23
+    </div>
24
+  </section>
25 25
 </template>
26 26
 
27 27
 <script>

+ 18
- 16
src/components/property/residential/latestListings.vue Ver arquivo

@@ -1,27 +1,29 @@
1 1
 <template>
2
-  <main id="main">
2
+  <div>
3 3
     <section id="portfolio">
4
-      <div class="container">
5
-        <div class="row">
6
-          <div class="col-lg-12">
7
-            <h2>Latest Listings</h2>
4
+      <div style="margin-top:-60px">
5
+        <div class="container">
6
+          <div class="row">
7
+            <div class="col-lg-12">
8
+              <h2>Latest Listings</h2>
9
+            </div>
8 10
           </div>
9 11
         </div>
10
-      </div>
11
-      <div class="contianer">
12
-        <div class="row">
13
-          <div class="col">
14
-            <propertyCard
15
-              v-if="properties.length > 0"
16
-              name="propertyholder"
17
-              :properties="properties"
18
-              :showSort="false"
19
-            />
12
+        <div class="contianer">
13
+          <div class="row">
14
+            <div class="col">
15
+              <propertyCard
16
+                v-if="properties.length > 0"
17
+                name="propertyholder"
18
+                :properties="properties"
19
+                :showSort="false"
20
+              />
21
+            </div>
20 22
           </div>
21 23
         </div>
22 24
       </div>
23 25
     </section>
24
-  </main>
26
+  </div>
25 27
 </template>
26 28
 
27 29
 <script>

+ 2
- 2
src/components/property/residential/residentialPage.vue Ver arquivo

@@ -2,10 +2,10 @@
2 2
   <div>
3 3
     <carouselSection />
4 4
     <main id="main">
5
-      <contentSection data-aos="fade-left" />
5
+      <contentSection data-aos="fade-left" data-aos-anchor-placement="top-bottom" />
6 6
       <latestListings
7 7
         data-aos="fade-up"
8
-        data-aos-anchor-placement="center-bottom"
8
+        data-aos-anchor-placement="top-bottom"
9 9
         data-aos-delay="150"
10 10
       />
11 11
     </main>

+ 1
- 1
src/components/propertyManagement/ourServicesSection.vue Ver arquivo

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <section id="services">
3
-    <div class="container">
3
+    <div class="container" style="margin-top:-15px">
4 4
       <div class="row">
5 5
         <div align="left" class="col-lg-4">
6 6
           <p>Our Services:</p>

+ 2
- 2
src/components/propertyManagement/propertyManagement.vue Ver arquivo

@@ -2,10 +2,10 @@
2 2
   <div>
3 3
     <CarouselSection />
4 4
     <main id="main">
5
-      <ServicesSection data-aos="fade-down" />
5
+      <ServicesSection data-aos="fade-down" data-aos-anchor-placement="top-bottom" />
6 6
       <TestimonialSection
7 7
         data-aos="fade-up"
8
-        data-aos-anchor-placement="center-bottom"
8
+        data-aos-anchor-placement="top-bottom"
9 9
         data-aos-delay="150"
10 10
       />
11 11
     </main>

+ 1
- 1
src/components/propertyManagement/testimonialSection.vue Ver arquivo

@@ -13,7 +13,7 @@
13 13
         :loop="true"
14 14
         id="intro-carousel"
15 15
         style="margin-top:-50px"
16
-        :responsive="{ 0: { items: 2, nav: false }, 600: { items: 2, nav: false } }"
16
+        :responsive="{ 0: { items: 1, nav: false }, 600: { items: 2, nav: false } }"
17 17
         class="mt-3"
18 18
       >
19 19
         <div class="content">

+ 18
- 5
src/components/shared/footerSection.vue Ver arquivo

@@ -51,7 +51,12 @@
51 51
                 <div class="form">
52 52
                   <div id="sendmessage">Your message has been sent. Thank you!</div>
53 53
                   <div id="errormessage"></div>
54
-                  <form action="" method="post" role="form" class="contactForm">
54
+                  <form
55
+                    action="mailto:jlouw365@gmail.com"
56
+                    method="post"
57
+                    role="form"
58
+                    class="contactForm"
59
+                  >
55 60
                     <div class="form-row">
56 61
                       <div class="form-group col-md-6">
57 62
                         <input
@@ -131,16 +136,24 @@
131 136
         </div>
132 137
         <div class="row justify-content-center">
133 138
           <div class="col-lg-2 p-4">
134
-            <a href="#"><img src="../../../public/img/logos/daeNew.png"/></a>
139
+            <a href="https://www.daelive.com/" target="_blank"
140
+              ><img src="../../../public/img/logos/daeNew.png"
141
+            /></a>
135 142
           </div>
136 143
           <div class="col-lg-2 p-4">
137
-            <a href="#"><img src="../../../public/img/logos/rciNew.png"/></a>
144
+            <a href="https://www.rci.co.za/Home/Default.aspx?id=10001" target="_blank"
145
+              ><img src="../../../public/img/logos/rciNew.png"
146
+            /></a>
138 147
           </div>
139 148
           <div class="col-lg-2 p-4">
140
-            <a href="#"><img src="../../../public/img/logos/gomeloNew.png"/></a>
149
+            <a href="https://www.gomelo.co.za/" target="_blank"
150
+              ><img src="../../../public/img/logos/gomeloNew.png"
151
+            /></a>
141 152
           </div>
142 153
           <div class="col-lg-2 p-4">
143
-            <a href="#"><img src="../../../public/img/logos/voasaNew.png"/></a>
154
+            <a href="https://voasa.co.za/" target="_blank"
155
+              ><img src="../../../public/img/logos/voasaNew.png"
156
+            /></a>
144 157
           </div>
145 158
         </div>
146 159
         <div class="row">

+ 2
- 0
src/components/shared/navBar.vue Ver arquivo

@@ -277,6 +277,8 @@ export default {
277 277
     ...mapState("authentication", ["user", "flag", "status", "person", "token"]),
278 278
     isLoggedIn() {
279 279
       console.log(Log.isLoggedIn());
280
+      console.log(this.user);
281
+
280 282
       return Log.isLoggedIn();
281 283
     },
282 284
     NAME() {

+ 32
- 18
src/components/timeshare/buy/searchSection.vue Ver arquivo

@@ -8,7 +8,7 @@
8 8
           <div class="input-group">
9 9
             <label v-if="selectedRegion === null" class="uniSelectLabel" for="region">Region</label>
10 10
             <select
11
-              class="custom-select"
11
+              class="form-control uniSelect"
12 12
               name="region"
13 13
               id="region"
14 14
               v-model="selectedRegion"
@@ -20,10 +20,10 @@
20 20
             </select>
21 21
           </div>
22 22
 
23
-          <div v-if="selectedRegion !== null" class="input-group mt-2">
23
+          <div v-if="selectedRegion !== null" class="input-group my-1">
24 24
             <label v-if="selectedResort === null" class="uniSelectLabel" for="resort">Resort</label>
25 25
             <select
26
-              class="custom-select"
26
+              class="form-control uniSelect"
27 27
               name="resort"
28 28
               id="resort"
29 29
               v-model="selectedResort"
@@ -34,22 +34,28 @@
34 34
               </option>
35 35
             </select>
36 36
           </div>
37
-          <div v-else class="input-group mt-2">
37
+          <div v-else class="input-group my-1">
38 38
             <label v-if="selectedResort === null" class="uniSelectLabel" for="resort">Resort</label>
39
-            <select class="custom-select" name="resort" id="resort">
39
+            <select class="form-control uniSelect" name="resort" id="resort">
40 40
               <option disabled>
41 41
                 Please Select a Region First
42 42
               </option>
43 43
             </select>
44 44
           </div>
45
-          <div class="input-group mt-2">
45
+          <div class="input-group my-1">
46 46
             <label v-if="selectedSeason === null" class="uniSelectLabel" for="season">Season</label>
47
-            <select class="custom-select" name="season" id="season" v-model="selectedSeason">
47
+            <select
48
+              class="form-control uniSelect"
49
+              name="season"
50
+              id="season"
51
+              v-model="selectedSeason"
52
+            >
48 53
               <option v-for="season in seasons" :key="season.id" :value="season">
49 54
                 {{ season.name }}
50 55
               </option>
51 56
             </select>
52 57
           </div>
58
+
53 59
           <input
54 60
             type="number"
55 61
             name="bedrooms"
@@ -57,7 +63,9 @@
57 63
             id="bedrooms"
58 64
             placeholder="Bedrooms"
59 65
             v-model="bedrooms"
66
+            @input="checkValueBedrooms()"
60 67
           />
68
+
61 69
           <input
62 70
             type="number"
63 71
             name="max-price"
@@ -65,6 +73,7 @@
65 73
             id="max-price"
66 74
             placeholder="Maximum Price"
67 75
             v-model="maxPrice"
76
+            @input="checkValuePrice()"
68 77
           />
69 78
 
70 79
           <p>
@@ -137,8 +146,8 @@ export default {
137 146
       selectedRegion: null,
138 147
       selectedResort: null,
139 148
       selectedSeason: null,
140
-      bedrooms: 0,
141
-      maxPrice: 0,
149
+      bedrooms: null,
150
+      maxPrice: null,
142 151
       dateFrom: "",
143 152
       dateTo: ""
144 153
     };
@@ -177,6 +186,16 @@ export default {
177 186
     updateMapProvince(province) {
178 187
       this.myMap = province.replace(/\s/g, "");
179 188
       this.myZoom = 7;
189
+    },
190
+    checkValueBedrooms() {
191
+      if (this.bedrooms === "0") {
192
+        this.bedrooms = null;
193
+      }
194
+    },
195
+    checkValuePrice() {
196
+      if (this.maxPrice === "0") {
197
+        this.maxPrice = null;
198
+      }
180 199
     }
181 200
   }
182 201
 };
@@ -199,17 +218,12 @@ export default {
199 218
   border-color: #a5a5a5;
200 219
 }
201 220
 
202
-.custom-select {
203
-  border-width: 1px;
204
-  border-radius: 3.425px;
205
-  border-color: rgba(0, 0, 0, 0.1);
206
-  font-family: "Muli";
207
-  font-size: 14.5px;
208
-  font-weight: 400;
221
+.uniSelect {
222
+  text-transform: none;
209 223
 }
210 224
 
211
-.custom-select option p {
212
-  color: #495057 !important;
225
+.uniSelect option {
226
+  text-transform: none;
213 227
 }
214 228
 
215 229
 .uniSelectLabel {

+ 0
- 1
src/components/timeshare/resort/contentSection.vue Ver arquivo

@@ -71,7 +71,6 @@
71 71
             <br />
72 72
             {{ resort.prDirections }}
73 73
           </p>
74
-
75 74
           <div class="d-flex mt-3">
76 75
             <iframe
77 76
               width="100%"

+ 3
- 13
src/components/timeshare/resort/unit/directions.vue Ver arquivo

@@ -3,9 +3,9 @@
3 3
     <div class="row">
4 4
       <div class="col">
5 5
         <label v-if="startAddress === null" class="uniSelectLabel" for="weekInfoRegionSelect"
6
-          >Select</label
6
+          >SELECT</label
7 7
         >
8
-        <select v-model="startAddress" class="form-control mb-3" @change="calcRoute()">
8
+        <select v-model="startAddress" class="uniSelect form-control mb-3" @change="calcRoute()">
9 9
           <optgroup label="Cities">
10 10
             <option value="-29.087217,26.154898">Bloemfontein</option>
11 11
             <option value="-33.918861, 18.423300">Cape Town</option>
@@ -127,14 +127,4 @@ export default {
127 127
 };
128 128
 </script>
129 129
 
130
-<style lang="scss" scoped>
131
-.uniSelectLabel {
132
-  position: absolute;
133
-  z-index: 2;
134
-  margin-left: 15px;
135
-  margin-top: 7px;
136
-  font-family: "muli";
137
-  font-size: 15px;
138
-  color: rgb(118, 118, 118);
139
-}
140
-</style>
130
+<style lang="scss" scoped></style>

+ 8
- 2
src/components/timeshare/resort/unit/tabSection.vue Ver arquivo

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div>
3
-    <ul class="nav nav-tabs" id="myTab" role="tablist">
3
+    <ul class="nav nav-tabs nav-justified" id="myTab" role="tablist">
4 4
       <li class="nav-item">
5 5
         <a
6 6
           class="nav-link active"
@@ -62,7 +62,7 @@
62 62
       <div class="tab-pane fade" id="directions" role="tabpanel" aria-labelledby="profile-tab">
63 63
         <directions :resortCoords="resortCoords" />
64 64
       </div>
65
-      <div class="tab-pane fade" id="layout" role="tabpanel" aria-labelledby="contact-tab">
65
+      <div class="tab-pane fade mt-3" id="layout" role="tabpanel" aria-labelledby="contact-tab">
66 66
         <img :src="layoutImages[0]" @click="index = 0" style="width:100%" />
67 67
         <gallery :images="layoutImages" :index="index" @close="index = null"></gallery>
68 68
       </div>
@@ -78,12 +78,18 @@
78 78
 import facilities from "./facilities";
79 79
 import directions from "./directions";
80 80
 import gallery from "../../../shared/gallerySlideShow";
81
+import AOS from "aos";
82
+import "aos/dist/aos.css";
83
+
81 84
 export default {
82 85
   components: {
83 86
     facilities,
84 87
     directions,
85 88
     gallery
86 89
   },
90
+  created() {
91
+    AOS.init();
92
+  },
87 93
   data() {
88 94
     return {
89 95
       index: null

+ 26
- 19
src/components/timeshare/sell/contentSection.vue Ver arquivo

@@ -278,7 +278,7 @@
278 278
             <div id="sendmessage">Your details has been sent. Thank you!</div>
279 279
             <div id="errormessage"></div>
280 280
 
281
-            <form action="" method="post" role="form" class="contactForm">
281
+            <form role="form" class="contactForm">
282 282
               <div class="form-row">
283 283
                 <div
284 284
                   class="form-group col-md-12"
@@ -446,6 +446,7 @@
446 446
                 <button class="btn-solid-blue" @click="submitSale()">SUBMIT</button>
447 447
               </div>
448 448
             </form>
449
+            <button class="btn-solid-blue" @click="paygateTest()">PayGate</button>
449 450
             <br /><br />
450 451
           </div>
451 452
         </div>
@@ -534,11 +535,33 @@ export default {
534 535
   },
535 536
   methods: {
536 537
     ...mapActions("individual", ["getIndividual"]),
538
+    ...mapActions("timeshare", ["initTimeshare", "onResortChange", "saveWeek"]),
539
+    ...mapActions("payment", ["addPayment"]),
537 540
     submitSale() {
538 541
       if (this.isLoggedIn) {
539
-        this.saveWeek(this.sellItem);
542
+        //this.saveWeek(this.sellItem);
540 543
       } else this.$router.push("/user/login");
541 544
     },
545
+    paygateTest() {
546
+      var paymentObj = {
547
+        timeshareWeekId: 1,
548
+        propertyId: 0,
549
+        creatydById: 3,
550
+        amount: 380.0,
551
+        paymentStatus: "",
552
+        paymentToken: ""
553
+      };
554
+
555
+      this.addPayment(paymentObj).then(res => {
556
+        this.$router.push({
557
+          name: "PaymentGateway",
558
+          params: {
559
+            paymentReqId: res.PAY_REQUEST_ID,
560
+            checksum: res.CHECKSUM
561
+          }
562
+        });
563
+      });
564
+    },
542 565
     previewFiles(event) {
543 566
       console.log(event.target.files);
544 567
     },
@@ -573,8 +596,7 @@ export default {
573 596
     },
574 597
     regionChange() {
575 598
       this.sellItem.regionId = this.sellItem.region ? this.sellItem.region.id : 1;
576
-    },
577
-    ...mapActions("timeshare", ["initTimeshare", "onResortChange", "saveWeek"])
599
+    }
578 600
   }
579 601
 };
580 602
 </script>
@@ -600,21 +622,6 @@ export default {
600 622
   height: 150px;
601 623
 }
602 624
 
603
-.uniSelect {
604
-  border-color: rgb(27, 117, 187);
605
-  border-width: 2px;
606
-}
607
-
608
-.uniSelectLabel {
609
-  position: absolute;
610
-  z-index: 2;
611
-  margin-left: 15px;
612
-  margin-top: 7px;
613
-  font-family: "muli";
614
-  font-size: 15px;
615
-  color: rgb(118, 118, 118);
616
-}
617
-
618 625
 .custom-file-label {
619 626
   border-width: 2px;
620 627
   border-color: rgb(27, 117, 187);

+ 37
- 38
src/components/user/loginPage.vue Ver arquivo

@@ -9,44 +9,43 @@
9 9
                 <div class="card card-signin my-5">
10 10
                   <div class="card-body">
11 11
                     <h3 class="card-title text-center">Login</h3>
12
-                    <form class="form-signin">
13
-                      <div v-if="error">
14
-                        <alert
15
-                          :text="'User doesn\'t exist or Username and Password is incorrect'"
16
-                          :type="'ERROR'"
17
-                        />
18
-                      </div>
19
-                      <div class="form-label-group">
20
-                        <input
21
-                          type="text"
22
-                          id="inputEmail"
23
-                          v-model="username"
24
-                          class="form-control"
25
-                          placeholder="Username"
26
-                          required
27
-                          autofocus
28
-                        />
29
-                      </div>
30
-                      <div class="form-label-group">
31
-                        <input
32
-                          type="password"
33
-                          placeholder="Password"
34
-                          v-model="password"
35
-                          id="inputPassword"
36
-                          class="form-control"
37
-                          required
38
-                        />
39
-                      </div>
40
-                      <div class="custom-control custom-checkbox mb-3">
41
-                        <input type="checkbox" class="custom-control-input" id="customCheck1" />
42
-                        <label class="custom-control-label" for="customCheck1"
43
-                          >Remember password?</label
44
-                        >
45
-                      </div>
46
-                      <button v-on:click="Login()" class="btn-solid-blue" type="submit">
47
-                        LOGIN
48
-                      </button>
49
-                    </form>
12
+
13
+                    <div v-if="error">
14
+                      <alert
15
+                        :text="'User doesn\'t exist or Username and Password is incorrect'"
16
+                        :type="'ERROR'"
17
+                      />
18
+                    </div>
19
+                    <div class="form-label-group">
20
+                      <input
21
+                        type="text"
22
+                        id="inputEmail"
23
+                        v-model="username"
24
+                        class="form-control"
25
+                        placeholder="Username"
26
+                        required
27
+                        autofocus
28
+                      />
29
+                    </div>
30
+                    <div class="form-label-group">
31
+                      <input
32
+                        type="password"
33
+                        placeholder="Password"
34
+                        v-model="password"
35
+                        id="inputPassword"
36
+                        class="form-control"
37
+                        required
38
+                      />
39
+                    </div>
40
+                    <div class="custom-control custom-checkbox mb-3">
41
+                      <input type="checkbox" class="custom-control-input" id="customCheck1" />
42
+                      <label class="custom-control-label" for="customCheck1"
43
+                        >Remember password?</label
44
+                      >
45
+                    </div>
46
+                    <button v-on:click="Login()" class="btn-solid-blue" type="submit">
47
+                      LOGIN
48
+                    </button>
50 49
                   </div>
51 50
                 </div>
52 51
               </div>

+ 2
- 2
src/main.js Ver arquivo

@@ -23,8 +23,8 @@ Vue.use(VueGoogleMaps, {
23 23
 });
24 24
 Vue.config.productionTip = false;
25 25
 //axios.defaults.baseURL = "http://localhost:57260";
26
-//axios.defaults.baseURL = "http://training.provision-sa.com:82";
27
-axios.defaults.baseURL = "http://localhost:8080/";
26
+axios.defaults.baseURL = "http://training.provision-sa.com:82";
27
+//axios.defaults.baseURL = "http://localhost:8080/";
28 28
 
29 29
 Vue.prototype.$axios = axios;
30 30
 

+ 10
- 1
src/router/index.js Ver arquivo

@@ -47,7 +47,7 @@ import ResortPage from "../components/timeshare/resort/resortPage.vue";
47 47
 import UnitPage from "../components/timeshare/resort/unit/unitPage.vue";
48 48
 
49 49
 import ContactUs from "../components/misc/contactUs.vue";
50
-import PrivacyPolicy from "../components/misc/privacyPolicyPage.vue";
50
+import PrivacyPolicy from "../components/misc//privacyPolicy/privacyPolicyPage.vue";
51 51
 import WebsiteDisclaimer from "../components/misc/WebsiteDisclaimer.vue";
52 52
 
53 53
 import MakeOffer from "../components/processFlow/makeOffer.vue";
@@ -64,6 +64,7 @@ import PropertySearchResults from "../components/property/propertySearchResults.
64 64
 import CommercialSearchResults from "../components/property/commercial/commercialSearchResults.vue";
65 65
 import ResidentialSearchResults from "../components/property/residential/residentialSearchResults.vue";
66 66
 
67
+import PaymentGateway from "../components/financial/paygate/paygateProcess.vue";
67 68
 import Payments from "../components/financial/payments.vue";
68 69
 import LandingPages from "../components/marketing/landingPages.vue";
69 70
 import LandingPage from "../components/marketing/landingPage.vue";
@@ -355,6 +356,14 @@ export default new Router({
355 356
       name: "PropertySearchResults",
356 357
       component: PropertySearchResults
357 358
     },
359
+    {
360
+      path: "/payments/paymentGateway",
361
+      name: "PaymentGateway",
362
+      props: route => ({
363
+        ...route.params
364
+      }),
365
+      component: PaymentGateway
366
+    },
358 367
     {
359 368
       path: "/payments",
360 369
       name: "Payments",

+ 3
- 3
src/store/modules/financial/payment.js Ver arquivo

@@ -2,7 +2,7 @@
2 2
 import axios from "axios";
3 3
 
4 4
 export default {
5
-  amespaced: true,
5
+  namespaced: true,
6 6
   state: {
7 7
     payments: [],
8 8
     payment: {}
@@ -29,8 +29,8 @@ export default {
29 29
         .then(result => commit("setPayments", result.data))
30 30
         .catch(console.error);
31 31
     },
32
-    async addPayment(payment) {
33
-      const response = await axios.post("/api/payment/", payment);
32
+    async addPayment({ commit }, payment) {
33
+      const response = await axios.post("/api/payment", payment);
34 34
       if (response.status === 200) {
35 35
         var respObj = {};
36 36
         response.data.split("&").forEach(element => {

+ 1
- 1
src/store/modules/user/authentication.js Ver arquivo

@@ -79,12 +79,12 @@ export default {
79 79
         log.clearValues();
80 80
         log.setValues(response.data);
81 81
         commit("auth_success", response.data);
82
-        console.log(JSON.stringify(response.data));
83 82
         return Promise.resolve();
84 83
       } else {
85 84
         commit("auth_error");
86 85
         log.clearValues();
87 86
         commit("auth_error", "error occurred");
87
+        return Promise.reject();
88 88
       }
89 89
     },
90 90
     logout({ commit }) {

Carregando…
Cancelar
Salvar