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.

navBar.vue 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
  1. <template>
  2. <div>
  3. <!-- <button type="button" id="mobile-nav-toggle">
  4. <i class="fa fa-bars"></i>
  5. </button>-->
  6. <div>
  7. <header id="header" style="width: 100%; position: fixed; top:0px; z-index: 50;">
  8. <div class="container">
  9. <div class="row justify-content-center">
  10. <div id="logo" class="col-md-3 col-xs-4 pull-left">
  11. <a href="/">
  12. <img
  13. class="img-fluid"
  14. src="/img/logos/UVProp.png"
  15. alt="UVProp logo"
  16. style="height:100px;"
  17. />
  18. </a>
  19. </div>
  20. <div id="topbar" class="col-md-9">
  21. <div class="container clearFix">
  22. <div class="social-links">
  23. <a href="mailto:info@univateproperties.co.za">
  24. <i class="fa fa-envelope"></i>
  25. </a>
  26. <a href="https://www.facebook.com/univateproperties/" target="_blank">
  27. <i class="fa fa-facebook"></i>
  28. </a>
  29. <a href="#">
  30. <i class="fa fa-youtube"></i>
  31. </a>
  32. <a href="tel:012 941 8497">
  33. <i class="fa fa-phone"></i>
  34. <span class="phoneIconDetail">+27 (0)12 941 8497</span>
  35. </a>
  36. <a href="#" data-toggle="modal" data-target="#bondcal">
  37. <i class="fa fa-calculator" aria-hidden="true"></i>
  38. <span class="bondCalculatorDetail">Bond Calculator</span>
  39. </a>
  40. <router-link to="/property/list">
  41. <i class="fa fa-home"></i>
  42. <span class="listProp">List Property</span>
  43. </router-link>
  44. </div>
  45. </div>
  46. <nav id="nav-menu-container" class="mt-2">
  47. <ul class="nav-menu sf-js-enabled sf-arrows">
  48. <li style="margin-left:-20px">
  49. <router-link to="/property/commercial">Commercial</router-link>
  50. <!-- <div
  51. @mouseover="commercialClass = 'ts-display'"
  52. @mouseleave="commercialClass = 'no-display'"
  53. ></div>
  54. <a href="#" class="sf-with-ul">
  55. Commercial
  56. </a>
  57. <ul style="margin-top:-10px; text-align:left" :class="commercialClass">
  58. <li>
  59. </li>
  60. <hr />
  61. <li>
  62. <a href="#" @click="routerGoTo('/property/commercial/new/Sale')">To Sell</a>
  63. </li>
  64. <li>
  65. <a href="#" @click="routerGoTo('/property/commercial/new/Rental')"
  66. >To Rent</a
  67. >
  68. </li>
  69. </ul>-->
  70. </li>
  71. <li class="mx-1">
  72. <router-link to="/property/residential">Residential</router-link>
  73. <!-- <div
  74. @mouseover="residentialClass = 'ts-display'"
  75. @mouseleave="residentialClass = 'no-display'"
  76. ></div>
  77. <a href="#" class="sf-with-ul">
  78. Residential
  79. </a>
  80. <ul style="margin-top:-10px; text-align:left" :class="residentialClass">
  81. <li>
  82. <router-link to="/property/residential">To Buy / To Rent</router-link>
  83. </li>
  84. <hr />
  85. <li>
  86. <a href="#" @click="routerGoTo('/property/residential/new/Sale')"
  87. >To Sell</a
  88. >
  89. </li>
  90. <li>
  91. <a href="#" @click="routerGoTo('/property/residential/new/Rental')"
  92. >To Rent</a
  93. >
  94. </li>
  95. </ul>-->
  96. </li>
  97. <li class="menu-has-children mx-1">
  98. <div
  99. @mouseover="timeShareClass = 'ts-display'"
  100. @mouseleave="timeShareClass = 'no-display'"
  101. ></div>
  102. <a href="#" class="sf-with-ul">Timeshare</a>
  103. <ul style="margin-top:-10px;text-align:left" :class="timeShareClass">
  104. <li>
  105. <router-link to="/timeshare/buy">To Buy</router-link>
  106. </li>
  107. <li>
  108. <router-link to="/timeshare/sell">To Sell</router-link>
  109. </li>
  110. <li>
  111. <router-link to="/timeshare/faq">FAQ</router-link>
  112. </li>
  113. <li>
  114. <hr />
  115. <router-link to="/timeshare/myWeeks">My Timeshare Weeks</router-link>
  116. </li>
  117. </ul>
  118. </li>
  119. <!-- <li class="menu-has-children">
  120. <div
  121. @mouseover="propertiesClass = 'ts-display'"
  122. @mouseleave="propertiesClass = 'no-display'"
  123. ></div>
  124. <a href="#" class="sf-with-ul">
  125. Properties
  126. </a>
  127. <ul style="margin-top:-10px;text-align:left" :class="propertiesClass">
  128. <li>
  129. <router-link to="/property/Search">Search</router-link>
  130. </li>
  131. <li>
  132. <router-link to="/property/new/Sale">To Sell</router-link>
  133. </li>
  134. <li>
  135. <router-link to="/property/new/Rental">To Rent</router-link>
  136. </li>
  137. <li v-if="isLoggedIn">
  138. <hr />
  139. <router-link to="/properties">My Properties</router-link>
  140. </li>
  141. </ul>
  142. </li>-->
  143. <li class="menu-has-children mx-1">
  144. <div
  145. @mouseover="propManClass = 'ts-display'"
  146. @mouseleave="propManClass = 'no-display'"
  147. ></div>
  148. <a href="#" class="sf-with-ul">Property Management</a>
  149. <ul style="margin-top:-10px; text-align:left" :class="propManClass">
  150. <li>
  151. <router-link to="/propertyManagement"
  152. >Sectional Title and HOA Management</router-link
  153. >
  154. </li>
  155. <li>
  156. <router-link to="/rentalPropertyManagement"
  157. >Rental Property Portfolio Management</router-link
  158. >
  159. </li>
  160. </ul>
  161. </li>
  162. <li class="menu-has-children mx-1">
  163. <div
  164. @mouseover="aboutClass = 'ts-display'"
  165. @mouseleave="aboutClass = 'no-display'"
  166. ></div>
  167. <a href="#" class="sf-with-ul">About</a>
  168. <ul style="margin-top:-10px; text-align:left" :class="aboutClass">
  169. <li>
  170. <router-link to="/about/us">About Us</router-link>
  171. </li>
  172. <li>
  173. <router-link to="/about/timeshare">About Timeshare Resales</router-link>
  174. </li>
  175. </ul>
  176. </li>
  177. <li class="mx-1">
  178. <router-link to="/share/contact">Contact Us</router-link>
  179. </li>
  180. <li v-if="USER" class="menu-has-children mx-1">
  181. <div
  182. @mouseover="userClass = 'ts-display'"
  183. @mouseleave="userClass = 'no-display'"
  184. ></div>
  185. <a href="#" class="sf-with-ul">{{ NAME }}</a>
  186. <ul style="margin-top:-10px;text-align:left" :class="userClass">
  187. <!-- <li v-if="ROLE === 'Super Admin'">
  188. <router-link to="/property/list">List Property</router-link>
  189. </li>
  190. <li v-if="ROLE === 'Super Admin'">
  191. <router-link to="/status/list">Status</router-link>
  192. </li>-->
  193. <li class="menu-has-children">
  194. <div
  195. @mouseover="submenu1Class = 'ts-display'"
  196. @mouseleave="submenu1Class = 'no-display'"
  197. ></div>
  198. <a href="#" class="sf-with-ul">Property</a>
  199. <ul
  200. style="margin-top:-10px;text-align:left;width:250px"
  201. :class="submenu1Class"
  202. >
  203. <li>
  204. <router-link to="/property/list">List My Property</router-link>
  205. </li>
  206. <li>
  207. <router-link to="/PropertyAdmin">Property Admin</router-link>
  208. </li>
  209. </ul>
  210. </li>
  211. <li v-if="ROLE === 'Super Admin'" class="menu-has-children">
  212. <div
  213. @mouseover="submenu1Class = 'ts-display'"
  214. @mouseleave="submenu1Class = 'no-display'"
  215. ></div>
  216. <a href="#" class="sf-with-ul">TimeShare</a>
  217. <ul
  218. style="margin-top:-10px;text-align:left;width:250px"
  219. :class="submenu1Class"
  220. >
  221. <li v-if="ROLE === 'Super Admin'">
  222. <router-link to="/status/timeshareAdmin"
  223. >Timeshare Week Admin</router-link
  224. >
  225. </li>
  226. <li v-if="ROLE === 'Super Admin'">
  227. <router-link to="/status/tenderWeekAdmin"
  228. >Tender Week Management</router-link
  229. >
  230. </li>
  231. </ul>
  232. </li>
  233. <hr v-if="ROLE === 'Super Admin'" />
  234. <li v-if="ROLE === 'Super Admin'" class="menu-has-children">
  235. <div
  236. @mouseover="submenu1Class = 'ts-display'"
  237. @mouseleave="submenu1Class = 'no-display'"
  238. ></div>
  239. <a href="#" class="sf-with-ul">Website Setup</a>
  240. <ul
  241. style="margin-top:-10px;text-align:left;width:250px"
  242. :class="submenu1Class"
  243. >
  244. <li>
  245. <router-link to="/contactUsLog">Contact Us Log</router-link>
  246. </li>
  247. <li>
  248. <router-link to="/termsConditions">Edit Terms & Conditions</router-link>
  249. </li>
  250. <li>
  251. <router-link to="/emailTemplates">Email Templates</router-link>
  252. </li>
  253. <li>
  254. <router-link to="/emailRecipient">Email Recipients</router-link>
  255. </li>
  256. <li>
  257. <router-link to="/enquireNowLog">Enquire Now Log</router-link>
  258. </li>
  259. <li>
  260. <router-link to="/fees">Fees</router-link>
  261. </li>
  262. <li>
  263. <router-link to="/propertyTypes/list">Property Types</router-link>
  264. </li>
  265. <li>
  266. <router-link to="/userDefinedGroups/list"
  267. >Property User Defined Groups</router-link
  268. >
  269. </li>
  270. <li>
  271. <router-link to="/status/list">Status</router-link>
  272. </li>
  273. <li>
  274. <router-link to="/unitConfiguration/list"
  275. >Unit Configuration</router-link
  276. >
  277. </li>
  278. <li>
  279. <router-link to="/status/userManagementPage"
  280. >User Management & Access</router-link
  281. >
  282. </li>
  283. </ul>
  284. </li>
  285. <!-- <li v-if="ROLE === 'Super Admin'" class="menu-has-children">
  286. <div
  287. @mouseover="submenu1Class = 'ts-display'"
  288. @mouseleave="submenu1Class = 'no-display'"
  289. ></div>
  290. <a href="#" class="sf-with-ul">Logs</a>
  291. <ul
  292. style="margin-top:-10px;text-align:left;width:250px"
  293. :class="submenu1Class"
  294. >
  295. <li>
  296. <router-link to="/status/changeLogPage">Change Logs</router-link>
  297. </li>
  298. <li>
  299. <router-link to="/searchLog">Search Logs</router-link>
  300. </li>
  301. </ul>
  302. </li> -->
  303. <hr />
  304. <li v-if="ROLE === 'Super Admin'">
  305. <router-link to="/Offers">Offers</router-link>
  306. </li>
  307. <!-- <li v-if="ROLE === 'Super Admin'">
  308. <router-link to="/Carousel">Carousel</router-link>
  309. </li>-->
  310. <li>
  311. <router-link to="/user/updateProfileInfo">Update Info</router-link>
  312. </li>
  313. <li v-if="ROLE === 'Super Admin'">
  314. <router-link to="/payments">Payments</router-link>
  315. </li>
  316. <li v-if="ROLE === 'Super Admin'">
  317. <router-link to="/campaignUpload">Landing Pages / Campaignes</router-link>
  318. </li>
  319. <li v-if="ROLE === 'Super Admin'">
  320. <router-link to="/landingPages">Landing Pages * / Campaignes</router-link>
  321. </li>
  322. <li v-if="ROLE === 'Designer'">
  323. <router-link to="/campaignUpload">Landing Pages / Campaignes</router-link>
  324. </li>
  325. <li>
  326. <router-link class="btn-white-border p-2" to="/user/login"
  327. >Logout</router-link
  328. >
  329. </li>
  330. </ul>
  331. </li>
  332. <li v-if="!USER">
  333. <router-link class="btn-white-border p-2 ml-1 mr-1" to="/user/login"
  334. >Login</router-link
  335. >
  336. </li>
  337. <li v-if="!USER">
  338. <router-link class="btn-white-border p-2 ml-1 mr-1" to="/user/register"
  339. >Register</router-link
  340. >
  341. </li>
  342. <!-- <li v-if="!isLoggedIn" class="menu-has-children">
  343. <div
  344. @mouseover="registerClass = 'ts-display'"
  345. @mouseleave="registerClass = 'no-display'"
  346. ></div>
  347. <a href="#" class="sf-with-ul btn-solid-blue pt-2 pb-1" style="height:39px;">
  348. Register
  349. </a>
  350. <ul style="margin-top:-10px;" :class="registerClass">
  351. <li>
  352. <router-link to="/user/register">Register</router-link>
  353. </li>
  354. <li>
  355. <router-link to="/user/registeragency">Agency Registration</router-link>
  356. </li>
  357. </ul>
  358. </li>-->
  359. </ul>
  360. </nav>
  361. </div>
  362. </div>
  363. </div>
  364. </header>
  365. </div>
  366. <div
  367. class="modal fade"
  368. id="bondcal"
  369. tabindex="-1"
  370. role="dialog"
  371. aria-labelledby="modal-bondcal"
  372. >
  373. <div class="modal-dialog" role="document">
  374. <div class="modal-content pt-4">
  375. <div class="modal-header">
  376. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  377. <span aria-hidden="true">&times;</span>
  378. </button>
  379. </div>
  380. <div class="modal-body pt-3">
  381. <bondCalculator />
  382. </div>
  383. </div>
  384. <!-- modal-content -->
  385. </div>
  386. <!-- modal-dialog -->
  387. </div>
  388. <!-- modal -->
  389. </div>
  390. </template>
  391. <script>
  392. /* eslint-disable */
  393. import { mapState, mapActions } from "vuex";
  394. import Log from "../../assets/Log";
  395. import bondCalculator from "../misc/bondCaclculator";
  396. export default {
  397. components: {
  398. bondCalculator
  399. },
  400. data() {
  401. return {
  402. hover: false,
  403. timeShareClass: "no-display",
  404. propertiesClass: "no-display",
  405. aboutClass: "no-display",
  406. userClass: "no-display",
  407. registerClass: "no-display",
  408. commercialClass: "no-display",
  409. residentialClass: "no-display",
  410. propManClass: "no-display",
  411. submenu1Class: "no-display"
  412. };
  413. },
  414. methods: {
  415. ...mapActions("authentication", ["logout"]),
  416. ...mapActions("fees", ["retrieveListingFee"]),
  417. ...mapActions("myWeeks", ["getWeekCount"]),
  418. showDropDown() {
  419. if (!this.hover) {
  420. this.timeShareClass = "ts-display";
  421. }
  422. },
  423. routerGoTo(goTo) {
  424. this.$emit("routerGoTo", goTo);
  425. }
  426. },
  427. mounted() {
  428. this.retrieveListingFee();
  429. console.log(localStorage.getItem("user"));
  430. if (localStorage.getItem("user") !== null) {
  431. this.getWeekCount(JSON.parse(localStorage.getItem("user")).id);
  432. }
  433. },
  434. computed: {
  435. ...mapState("authentication", ["user", "flag", "status", "person", "token"]),
  436. ...mapState("myWeeks", ["weekCount"]),
  437. isLoggedIn() {
  438. return Log.isLoggedIn();
  439. },
  440. NAME() {
  441. return Log.getPerson().name;
  442. },
  443. USER() {
  444. var userObj = {};
  445. if (!this.user) {
  446. userObj = JSON.parse(localStorage.getItem("user"));
  447. } else {
  448. userObj = this.user;
  449. }
  450. return userObj;
  451. },
  452. ROLE() {
  453. var userObj = JSON.parse(localStorage.getItem("user"));
  454. return userObj.role;
  455. },
  456. // eslint-disable-next-line vue/return-in-computed-property
  457. Logout() {
  458. this.logout().then(res => {
  459. console.log("something");
  460. });
  461. //return this.logout();
  462. }
  463. }
  464. };
  465. </script>
  466. <style lang="scss" scoped>
  467. .subItem {
  468. background-color: white;
  469. margin-top: -10px;
  470. }
  471. .no-display {
  472. display: none;
  473. }
  474. .ts-display {
  475. display: block;
  476. }
  477. .phoneIconDetail {
  478. margin-left: 3px;
  479. }
  480. .bondCalculatorDetail {
  481. margin-left: 3px;
  482. }
  483. .listProp {
  484. margin-left: 3px;
  485. }
  486. /* Extra small devices (phones, 600px and down) */
  487. @media only screen and (max-width: 600px) {
  488. .phoneIconDetail {
  489. display: none;
  490. }
  491. .bondCalculatorDetail {
  492. display: none;
  493. }
  494. .listProp {
  495. display: none;
  496. }
  497. #header {
  498. min-height: 120px;
  499. }
  500. }
  501. /* Small devices (portrait tablets and large phones, 600px and up) */
  502. @media only screen and (min-width: 600px) {
  503. #header {
  504. min-height: 145px;
  505. }
  506. }
  507. /* Medium devices (landscape tablets, 768px and up) */
  508. @media only screen and (min-width: 768px) {
  509. #header {
  510. height: 170px;
  511. }
  512. }
  513. /* Large devices (laptops/desktops, 992px and up) */
  514. @media only screen and (min-width: 992px) {
  515. #header {
  516. height: 165px;
  517. }
  518. }
  519. /* Extra large devices (large laptops and desktops, 1200px and up) */
  520. @media only screen and (min-width: 1200px) {
  521. #header {
  522. height: 120px;
  523. }
  524. }
  525. </style>