選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

sellPage.vue 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
  1. <template>
  2. <!-- eslint-disable max-len -->
  3. <div class="container">
  4. <div class="row">
  5. <div class="col-md-12">
  6. <div class="col-sm-12">
  7. <div class="about-img-box">
  8. <img src="img/sell3.jpg" alt="Timeshare To Sell" class="img-fluid title-img" />
  9. </div>
  10. <div class="sinse-box title-title">
  11. <h3 class="sinse-title">Timeshare To Sell</h3>
  12. </div>
  13. </div>
  14. <div>
  15. <div class="container col-md-10">
  16. <div style="float: right;" class="btn btn-link color-b"></div>
  17. </div>
  18. <br />
  19. <br />
  20. <p>* You need to be logged in to submit your listing. Please register and log in if you have not done so already.</p>
  21. <hr />
  22. <div class="form-group row">
  23. <div class="col-md-4">
  24. <div class="form-group">
  25. <label>Were you referred by an agent?</label>
  26. <div class="custom-control custom-switch">
  27. <input
  28. type="checkbox"
  29. class="custom-control-input"
  30. id="customSwitch1"
  31. :checked="refAgent"
  32. @change="changeRef"
  33. />
  34. <label
  35. class="custom-control-label"
  36. for="customSwitch1"
  37. >{{refAgent ? 'Yes' : 'No'}}</label>
  38. </div>
  39. </div>
  40. </div>
  41. <div class="col-md-4" v-if="refAgent">
  42. <label for="Name of Agency">Agency</label>
  43. <select class="form-control" id="Agency" name="agency" v-model="sellItem.agencyId">
  44. <option v-for="(item, i) in agencies" :key="i" :value="item.id">{{item.agencyName}}</option>
  45. </select>
  46. </div>
  47. <div class="col-md-4" v-if="refAgent">
  48. <label for="Name of Agent">Agent</label>
  49. <select class="form-control" id="agent" name="agent" v-model="sellItem.agentId">
  50. <option
  51. v-for="(item, i) in agents"
  52. :key="i"
  53. :value="item.id"
  54. >{{item.name + ' ' + item.surname}}</option>
  55. </select>
  56. </div>
  57. </div>
  58. <hr />
  59. <div class="container col-md-10">
  60. <div class="myWell">
  61. <h4>Week Information</h4>
  62. </div>
  63. <!-- <div style="float: right;" class="btn btn-link color-b">
  64. <router-link to="LinkToBeSelected">
  65. Bulk Weeks Upload
  66. <span class="ion-ios-arrow-forward" style="color:#60CBEB"></span>
  67. </router-link>
  68. </div>-->
  69. </div>
  70. <br />
  71. <br />
  72. </div>
  73. </div>
  74. </div>
  75. <div class="row mb-4">
  76. <div class="container col-md-10">
  77. <form
  78. id="mainForm"
  79. method="POST"
  80. action="/to-sell"
  81. accept-charset="UTF-8"
  82. enctype="multipart/form-data"
  83. >
  84. <div class="container">
  85. <div class="col-md-12" style="text-align:left">
  86. <div class="form-group row">
  87. <div class="col-md-6">
  88. <label>Region *</label>
  89. <div class="input-group mb-3">
  90. <div class="input-group-prepend">
  91. <span class="input-group-text" style="color: #60CBEB">
  92. <b>R</b>
  93. </span>
  94. </div>
  95. <select class="form-control" v-model="sellItem.region" @change="regionChange()">
  96. <option
  97. v-for="(region, r) in regions"
  98. :key="r"
  99. :value="region"
  100. >{{region.regionName}}</option>
  101. </select>
  102. </div>
  103. </div>
  104. <div class="col-md-6">
  105. <label for="Resort Name">Resort Name *</label>
  106. <div class="input-group mb-3">
  107. <div class="input-group-prepend">
  108. <span class="input-group-text" style="color: #60CBEB">
  109. <b>RN</b>
  110. </span>
  111. </div>
  112. <select
  113. class="form-control"
  114. id="resort"
  115. name="resort"
  116. v-model="sellItem.resort"
  117. @change="resortChange()"
  118. >
  119. <option value="Other">Other</option>
  120. <option
  121. v-for="(resort, r) in resorts"
  122. :key="r"
  123. :value="resort"
  124. >{{resort.resortName}}</option>
  125. </select>
  126. </div>
  127. </div>
  128. <div class="col-md-6">
  129. <label for="* If other" v-if="sellItem.otherResort">Name of resort</label>
  130. <div class="input-group mb-3">
  131. <div class="input-group-prepend">
  132. <span
  133. class="input-group-text"
  134. style="color: #60CBEB"
  135. v-if="sellItem.otherResort"
  136. >
  137. <b>RN</b>
  138. </span>
  139. </div>
  140. <input
  141. class="form-control"
  142. v-if="sellItem.otherResort"
  143. placeholder="* If other"
  144. type="text"
  145. name="other"
  146. v-model="sellItem.otherResortName"
  147. />
  148. </div>
  149. <label for="Region" v-if="sellItem.otherResort">Province</label>
  150. <div class="input-group mb-3">
  151. <div class="input-group-prepend">
  152. <span
  153. class="input-group-text"
  154. style="color: #60CBEB"
  155. v-if="sellItem.otherResort"
  156. >
  157. <b>P</b>
  158. </span>
  159. </div>
  160. <select
  161. class="form-control"
  162. v-if="sellItem.otherResort"
  163. name="region"
  164. id="region"
  165. v-model="sellItem.region"
  166. >
  167. <option v-for="(region, r) in regions" :key="r">{{region.regionName}}</option>
  168. </select>
  169. </div>
  170. </div>
  171. </div>
  172. <div class="form-group row">
  173. <div class="col-md-6">
  174. <label for="Unit number">Unit Number *</label>
  175. <div class="input-group mb-3">
  176. <div class="input-group-prepend">
  177. <span class="input-group-text" style="color: #60CBEB">
  178. <b>U#</b>
  179. </span>
  180. </div>
  181. <input
  182. class="form-control"
  183. type="text"
  184. name="unit"
  185. v-model="sellItem.unitNumber"
  186. />
  187. </div>
  188. </div>
  189. <div class="col-md-6">
  190. <label for="Module">Module / Week Number *</label>
  191. <div class="input-group mb-3">
  192. <div class="input-group-prepend">
  193. <span class="input-group-text" style="color: #60CBEB">
  194. <b>M</b>
  195. </span>
  196. </div>
  197. <input class="form-control" type="text" name="module" v-model="sellItem.module" />
  198. </div>
  199. </div>
  200. </div>
  201. <div class="form-group row">
  202. <div class="col-md-6">
  203. <label for="Season">Season</label>
  204. <div class="input-group mb-3">
  205. <div class="input-group-prepend">
  206. <span class="input-group-text" style="color: #60CBEB">
  207. <b>S</b>
  208. </span>
  209. </div>
  210. <select class="form-control" name="season" v-model="sellItem.season">
  211. <option v-for="(season, r) in seasons" :key="r">{{season.name}}</option>
  212. </select>
  213. </div>
  214. </div>
  215. <div class="col-md-6">
  216. <label for="Bedrooms">Bedrooms</label>
  217. <div class="input-group mb-3">
  218. <div class="input-group-prepend">
  219. <span class="input-group-text" style="color: #60CBEB">
  220. <b>Bed</b>
  221. </span>
  222. </div>
  223. <select class="form-control" name="bedrooms" v-model="sellItem.bedrooms">
  224. <option v-for="(item, i) in resortBedrooms" :key="i">{{item}}</option>
  225. </select>
  226. </div>
  227. </div>
  228. <div class="col-md-6">
  229. <label for="Sleeps maximum">Sleep max</label>
  230. <div class="input-group mb-3">
  231. <div class="input-group-prepend">
  232. <span class="input-group-text" style="color: #60CBEB">
  233. <b>Max</b>
  234. </span>
  235. </div>
  236. <select class="form-control" name="sleeps" v-model="sellItem.maxSleep">
  237. <option v-for="(item, i) in maxSleep" :key="i">{{item}}</option>
  238. </select>
  239. </div>
  240. </div>
  241. <div class="col-md-6">
  242. <label for="Levy">Levy Amount *</label>
  243. <div class="input-group mb-3">
  244. <div class="input-group-prepend">
  245. <span class="input-group-text" style="color: #60CBEB">
  246. <b>R</b>
  247. </span>
  248. </div>
  249. <input
  250. class="form-control"
  251. type="number"
  252. step="any"
  253. name="levy"
  254. v-model="sellItem.levyAmount"
  255. />
  256. </div>
  257. </div>
  258. </div>
  259. <div class="form-group row">
  260. <div class="col-md-6">
  261. <p>Has your week been spacebanked for the current year?</p>
  262. <div class="custom-control custom-switch">
  263. <input
  264. type="checkbox"
  265. class="custom-control-input"
  266. id="customSwitch2"
  267. :checked="sellItem.currentYearBanked"
  268. @change="changeCurrentBanked"
  269. />
  270. <label
  271. class="custom-control-label"
  272. for="customSwitch2"
  273. >{{sellItem.currentYearBanked ? 'Yes' : 'No'}}</label>
  274. </div>
  275. </div>
  276. <div class="col-md-6">
  277. <label
  278. for="If yes, please confirm with whom"
  279. v-if="sellItem.currentYearBanked"
  280. >Please confirm with whom</label>
  281. <select
  282. class="form-control"
  283. name="spacebankOwner"
  284. v-if="sellItem.currentYearBanked"
  285. v-model="sellItem.bankedWith"
  286. >
  287. <option v-for="(item, i) in bankedEntities" :key="i">{{item}}</option>
  288. </select>
  289. </div>
  290. </div>
  291. </div>
  292. <DetailIndividual :owner="sellItem.owner" />
  293. <hr />
  294. <Address :address="sellItem.owner.address" />
  295. <hr />
  296. <BankDetails :bankingDetails="sellItem.owner.bankingDetails" />
  297. <hr />
  298. </div>
  299. <br />
  300. <div class="myWell">
  301. <h4>Share transfer information</h4>
  302. </div>
  303. <br />
  304. <tr>
  305. <td>1. With respect to my timeshare module/week, I confirm that:</td>
  306. </tr>
  307. <div class="form-group row" style="text-align:left">
  308. <label
  309. for="name"
  310. class="col-form-label col-md-8"
  311. >1.1 All levy amounts for the current cycle have been paid in full</label>
  312. <div class="col-md-4">
  313. <div class="custom-control custom-switch">
  314. <input
  315. type="checkbox"
  316. class="custom-control-input"
  317. id="customSwitch3"
  318. :checked="sellItem.leviesPaidInFull"
  319. @change="changeLeviesPaidInFull"
  320. />
  321. <label
  322. class="custom-control-label"
  323. for="customSwitch3"
  324. >{{sellItem.leviesPaidInFull ? 'Yes' : 'No'}}</label>
  325. </div>
  326. </div>
  327. </div>
  328. <hr />
  329. <div class="form-group row" style="text-align:left">
  330. <label
  331. for="name"
  332. class="col-form-label col-md-8"
  333. >1.2 My week is placed for rental this year</label>
  334. <div class="col-md-4">
  335. <div class="custom-control custom-switch">
  336. <input
  337. type="checkbox"
  338. class="custom-control-input"
  339. id="customSwitch4"
  340. :checked="sellItem.weekPlacedForRental"
  341. @change="changeWeekPlacedForRental"
  342. />
  343. <label
  344. class="custom-control-label"
  345. for="customSwitch4"
  346. >{{sellItem.weekPlacedForRental ? 'Yes' : 'No'}}</label>
  347. </div>
  348. </div>
  349. </div>
  350. <hr />
  351. <div class="form-group row" style="text-align:left">
  352. <label
  353. for="name"
  354. class="col-form-label col-md-8"
  355. >1.3 I/We bought the timeshare module/week on the following date:</label>
  356. <div class="col-md-4">
  357. <input
  358. type="date"
  359. class="form-control"
  360. name="date"
  361. v-model="sellItem.originalPurchaseDate"
  362. />
  363. </div>
  364. </div>
  365. <hr />
  366. <div class="form-group row" style="text-align:left">
  367. <label
  368. for="name"
  369. class="col-form-label col-md-8"
  370. >1.4 The purchase price for which I/we bought timeshare module/week was:</label>
  371. <div class="col-md-4">
  372. <div class="input-group mb-3">
  373. <div class="input-group-prepend">
  374. <span class="input-group-text" style="color: #60CBEB">
  375. <b>R</b>
  376. </span>
  377. </div>
  378. <input
  379. class="form-control"
  380. type="number"
  381. step="any"
  382. name="purchasePrice"
  383. v-model="sellItem.originalPurchasePrice"
  384. />
  385. </div>
  386. </div>
  387. </div>
  388. <hr />
  389. <div class="form-group row" style="text-align:left">
  390. <label
  391. for="name"
  392. class="col-form-label col-md-8"
  393. >1.5 I/We bought the timeshare module/week for the following dates for the current year:</label>
  394. <div class="col-md-4">
  395. Arrival Date :
  396. <input
  397. type="date"
  398. class="form-control"
  399. name="occupationDate1"
  400. v-model="sellItem.arrivalDate"
  401. />
  402. Departure Date :
  403. <input
  404. type="date"
  405. class="form-control"
  406. name="occupationDate2"
  407. v-model="sellItem.departureDate"
  408. />
  409. </div>
  410. </div>
  411. <hr />
  412. <div class="form-group row" style="text-align:left">
  413. <label
  414. for="name"
  415. class="col-form-label col-md-8"
  416. >1.6 The selling price for the timeshare module/week for which I/we want to sell is: (Including Vat)</label>
  417. <div class="col-md-4">
  418. <div class="input-group mb-3">
  419. <div class="input-group-prepend">
  420. <span class="input-group-text" style="color: #60CBEB">
  421. <b>R</b>
  422. </span>
  423. </div>
  424. <input
  425. class="form-control"
  426. type="number"
  427. step="any"
  428. name="sellingPrice"
  429. v-model="sellItem.sellPrice"
  430. />
  431. </div>
  432. </div>
  433. </div>
  434. <hr />
  435. <div class="form-group row" style="text-align:left">
  436. <label
  437. for="name"
  438. class="col-form-label col-md-8"
  439. >1.7 Estate agent’s commission agreed to (state Rand value)</label>
  440. <div class="col-md-4">
  441. <div class="input-group mb-3">
  442. <div class="input-group-prepend">
  443. <span class="input-group-text" style="color: #60CBEB">
  444. <b>R</b>
  445. </span>
  446. </div>
  447. <input
  448. class="form-control"
  449. type="number"
  450. step="any"
  451. name="commission"
  452. v-model="sellItem.agentCommission"
  453. />
  454. </div>
  455. </div>
  456. </div>
  457. <hr />
  458. <div class="form-group row" style="text-align:left">
  459. <label for="name" class="col-form-label col-md-8">1.8 Mandate to sell timeshare</label>
  460. <div class="col-md-4">
  461. <input class="btn btn-b-n" type="file" name="mandate" />
  462. </div>
  463. </div>
  464. <div class="btn btn-b-n btn-lg" @click="submitSale()">Submit</div>
  465. <hr />
  466. <h1>{{result}}</h1>
  467. <hr />
  468. <p>* A listing fee of R380 including VAT is payable to list your timeshare week/module on the Uni-Vate website</p>
  469. <br />
  470. <br />
  471. <p style="text-align:center;">
  472. <strong>
  473. To rent your week out
  474. <a
  475. href="https://www.tradeunipoint.com/"
  476. target="_blank"
  477. >click here</a>
  478. </strong>
  479. </p>
  480. </form>
  481. </div>
  482. </div>
  483. </div>
  484. </template>
  485. <script>
  486. import { mapState, mapActions } from 'vuex';
  487. import DetailIndividual from '../../user/timeshareIndividual.vue';
  488. import BankDetails from '../../shared/bankAccount.vue';
  489. import Address from '../../misc/address.vue';
  490. export default {
  491. name: 'TimeshareToSell',
  492. components: { DetailIndividual, BankDetails, Address },
  493. created() {
  494. this.initTimeshare();
  495. },
  496. computed: {
  497. ...mapState('timeshare', [
  498. 'resorts',
  499. 'regions',
  500. 'detailedRegion',
  501. 'seasons',
  502. 'result',
  503. 'resortBedrooms',
  504. 'maxSleep',
  505. 'bankedEntities',
  506. 'sellItem',
  507. 'agencies',
  508. 'agents',
  509. ]),
  510. refAgent() {
  511. return this.sellItem && this.sellItem.referedByAgent;
  512. },
  513. },
  514. methods: {
  515. submitSale() {
  516. this.saveWeek(this.sellItem);
  517. },
  518. previewFiles(event) {
  519. console.log(event.target.files);
  520. },
  521. changeRef() {
  522. this.sellItem.agent = undefined;
  523. this.sellItem.agency = undefined;
  524. this.sellItem.referedByAgent = !this.sellItem.referedByAgent;
  525. },
  526. changeLeviesPaidInFull() {
  527. this.sellItem.leviesPaidInFull = !this.sellItem.leviesPaidInFull;
  528. },
  529. changeWeekPlacedForRental() {
  530. this.sellItem.weekPlacedForRental = !this.sellItem.weekPlacedForRental;
  531. },
  532. changeCurrentBanked() {
  533. this.sellItem.bankedWith = undefined;
  534. this.sellItem.currentYearBanked = !this.sellItem.currentYearBanked;
  535. },
  536. resortChange() {
  537. this.onResortChange({
  538. resortName: this.sellItem.resort.resortName,
  539. resortCode: this.sellItem.resort.resortCode,
  540. });
  541. if (this.sellItem && this.sellItem.resort === 'Other') {
  542. this.sellItem.otherResortName = undefined;
  543. this.sellItem.otherResort = true;
  544. } else {
  545. this.sellItem.otherResortName = undefined;
  546. this.sellItem.otherResort = false;
  547. }
  548. },
  549. regionChange() {
  550. this.sellItem.regionId = this.sellItem.region
  551. ? this.sellItem.region.id
  552. : 1;
  553. },
  554. ...mapActions('timeshare', ['initTimeshare', 'onResortChange', 'saveWeek']),
  555. },
  556. };
  557. </script>
  558. <style>
  559. .myWell {
  560. width: 100%;
  561. background-color: #60cbeb;
  562. border-radius: 6px;
  563. padding: 5px;
  564. margin: 3px;
  565. }
  566. </style>