You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

contentSection.vue 8.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <template>
  2. <section>
  3. <div class="container">
  4. <div class="row" id="resort-profile">
  5. <div class="col-md-4">
  6. <div class="resPortfolioSection" style="margin-top:-5px">
  7. <iframe
  8. v-if="property.video !== null"
  9. width="100%"
  10. src="https://www.youtube.com/embed/watch_popup?v=qKgHJYzWtVA"
  11. frameborder="0"
  12. allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
  13. allowfullscreen
  14. style="margin-bottom:-6px"
  15. ></iframe>
  16. <div v-for="(image, i) in propertyImages" @click="index = i" :key="i">
  17. <div v-if="i < 3">
  18. <img
  19. v-if="i === 0"
  20. style="width:100%; height:201px;object-fit: cover"
  21. :src="image.image"
  22. />
  23. <div v-else-if="i !== 0">
  24. <img
  25. v-if="i % 2 === 0"
  26. style="width:50%; height:140px; float:right;"
  27. :src="image.image"
  28. />
  29. <img v-else style="width:50%; height:140px; float:left" :src="image.image" />
  30. </div>
  31. </div>
  32. </div>
  33. <gallery :images="Images" :index="index" @close="index = null"></gallery>
  34. </div>
  35. <div class="panel-left p-5" style="margin-top:140px;">
  36. <h2>Property Detial</h2>
  37. <p v-if="property.showAddress">{{ property.streetNumber }} {{ property.streetName }}</p>
  38. <p>{{ property.city }}, {{ property.suburb }}</p>
  39. <div v-if="property.displayData.length > 0">
  40. <div v-for="(data, i) in property.displayData" :key="i">
  41. <div v-for="field in data.values" :key="field.id">
  42. <p v-if="field.name === 'Floor Size'">{{ field.value }}</p>
  43. </div>
  44. </div>
  45. </div>
  46. <!-- <div v-for="field in property.displayData[0].values" :key="field.id">
  47. <p v-if="field.name === 'Floor Size'">{{ field.value }}M<sup>2</sup></p>
  48. <p v-if="field.name === 'Rates & Taxes'">
  49. Rates & Taxes: R{{ field.value | toCurrency }}
  50. </p>
  51. </div>-->
  52. <p>{{ property.shortDescription }}</p>
  53. <p>{{ property.price | toCurrency }}</p>
  54. </div>
  55. <div class="panel-left px-5 pb-5 text-center">
  56. <h4 class="text-white">Share this Property</h4>
  57. <a
  58. href="http://www.facebook.com/sharer.php?u=https://www.univateproperties.co.za/"
  59. target="_blank"
  60. >
  61. <img src="img/icon-facebook.svg" alt="Share on Facebook" class="col-3 p-1 mx-1" />
  62. </a>
  63. <a
  64. href="mailto:?Subject=Simple Share Buttons&amp;Body=I%20saw%20this%20and%20thought%20of%20you!%20 https://www.univateproperties.co.za/"
  65. >
  66. <img src="/img/icon-email.svg" alt="Share on email" class="col-3 p-1 mx-1" />
  67. </a>
  68. <a
  69. href="whatsapp://send?text=Have a look at this property: https://www.univateproperties.co.za"
  70. data-action="share/whatsapp/share"
  71. target="_blank"
  72. >
  73. <img src="img/icon-whatsapp.svg" alt="Share on whatsapp" class="col-3 p-1 mx-1" />
  74. </a>
  75. </div>
  76. </div>
  77. <div class="col-md-8 p-5 resort-profile">
  78. <h2 v-if="property.showAddress">
  79. <div style="display:inline" v-if="property.propertyName !== null">
  80. {{ property.propertyName }} /
  81. </div>
  82. {{ property.streetNumber }} {{ property.streetName }}
  83. </h2>
  84. <h2 v-else>{{ property.propertyName }}</h2>
  85. <p>{{ property.shortDescription }}</p>
  86. <h4>Property Features</h4>
  87. <div v-if="property.displayData.length > 0">
  88. <div v-for="(data, i) in property.displayData" :key="i" class="row my-3">
  89. <div v-for="(field, j) in data.values" :key="j" class="col-md-6">
  90. <div
  91. :style="field.value.toUpperCase() === 'FALSE' ? 'display:none' : 'display:show'"
  92. v-if="field.value.toUpperCase() != 'TRUE'"
  93. >
  94. <i class="fa fa-check-circle"></i>
  95. {{ field.value }} {{ field.name }}
  96. </div>
  97. <div v-else>
  98. <i class="fa fa-check-circle"></i>
  99. {{ field.name }}
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. <div class="mt-5" v-html="property.description"></div>
  105. <router-link
  106. style="float:right; white-space: nowrap;"
  107. class="btn-solid-blue mt-3"
  108. :to="{ name: 'EnquireNow', params: { id: $route.params.id } }"
  109. >ENQUIRE NOW</router-link
  110. >
  111. <h4 v-if="property.virtualTour !== null" style="margin-top:150px">Virtual Tour</h4>
  112. <iframe
  113. v-if="property.virtualTour !== null"
  114. width="100%"
  115. height="500px"
  116. :src="property.virtualTour"
  117. frameborder="0"
  118. allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
  119. allowfullscreen
  120. style="margin-bottom:-6px"
  121. class="mt-3"
  122. ></iframe>
  123. <h4 v-if="property.video !== null" class="mt-5">Video</h4>
  124. <iframe
  125. v-if="property.video !== null"
  126. width="100%"
  127. src="https://www.youtube.com/embed/watch_popup?v=qKgHJYzWtVA"
  128. frameborder="0"
  129. allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
  130. allowfullscreen
  131. style="margin-bottom:-6px"
  132. class="mt-3"
  133. ></iframe>
  134. <!-- <div>
  135. <table class="table table-striped">
  136. <thead>
  137. <tr>
  138. <th scope="col">Reference</th>
  139. <th scope="col">Unit</th>
  140. <th scope="col">Location</th>
  141. <th scope="col">Kitchen</th>
  142. <th scope="col">Extras</th>
  143. <th scope="col"></th>
  144. </tr>
  145. </thead>
  146. <tbody>
  147. <tr>
  148. <td>#{{ property.id }}</td>
  149. <td>#{{ property.unit }}</td>
  150. <td>Second Floor</td>
  151. <td>yes</td>
  152. <td v-if="property.displayData && property.displayData.length > 0">
  153. <div class="row" v-for="(feat, i) in property.displayData[0].values" :key="i">
  154. <div class="col" v-if="feat.value.toUpperCase() !== 'NO'">
  155. <div></div>
  156. {{ feat.name }} ({{ feat.value }})
  157. </div>
  158. </div>
  159. </td>
  160. <td>
  161. </td>
  162. </tr>
  163. </tbody>
  164. </table>
  165. </div>-->
  166. <!-- <div class="d-flex mt-3">
  167. <iframe
  168. width="100%"
  169. height="200"
  170. id="gmap_canvas"
  171. src=""
  172. frameborder="0"
  173. scrolling="no"
  174. marginheight="0"
  175. marginwidth="0"
  176. ></iframe>
  177. </div>-->
  178. </div>
  179. </div>
  180. </div>
  181. </section>
  182. </template>
  183. <script>
  184. /* eslint-disable */
  185. import gallery from "../../../shared/gallerySlideShow";
  186. export default {
  187. components: {
  188. gallery
  189. },
  190. props: {
  191. property: {},
  192. propertyImages: {}
  193. },
  194. mounted() {
  195. console.log(this.property);
  196. },
  197. data() {
  198. return {
  199. index: null,
  200. date: new Date()
  201. };
  202. },
  203. computed: {
  204. Images() {
  205. const list = [];
  206. for (let i = 0; i < this.propertyImages.length; i++) {
  207. list.push(this.propertyImages[i].image);
  208. }
  209. return list;
  210. }
  211. },
  212. created() {
  213. this.$emit("Loaded", true);
  214. }
  215. };
  216. </script>
  217. <style lang="scss" scoped>
  218. /* Extra small devices (phones, 600px and down) */
  219. @media only screen and (max-width: 575px) {
  220. .resPortfolioSection {
  221. margin-bottom: 100px;
  222. }
  223. }
  224. /* Small devices (portrait tablets and large phones, 600px and up) */
  225. @media only screen and (min-width: 576px) {
  226. .resPortfolioSection {
  227. margin-bottom: 140px;
  228. }
  229. }
  230. /* Medium devices (landscape tablets, 768px and up) */
  231. @media only screen and (min-width: 768px) {
  232. .resPortfolioSection {
  233. margin-bottom: 50px;
  234. }
  235. }
  236. /* Large devices (laptops/desktops, 992px and up) */
  237. @media only screen and (min-width: 992px) {
  238. .resPortfolioSection {
  239. margin-bottom: 60px;
  240. }
  241. }
  242. /* Extra large devices (large laptops and desktops, 1200px and up) */
  243. @media only screen and (min-width: 1200px) {
  244. .resPortfolioSection {
  245. margin-bottom: 80px;
  246. }
  247. }
  248. </style>