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.

makeOffer.vue 7.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <template>
  2. <!-- eslint-disable max-len -->
  3. <div style="padding-left: 30px; padding-right: 30px; padding-bottom: 30px;">
  4. <div v-if="!isLoggedIn">
  5. <div class="container col-md-10">
  6. <p class="alert myError">Please Login to add a property</p>
  7. </div>
  8. <button
  9. type="button"
  10. class="btn btn-b-n"
  11. style="width: 150px; height: 40px;"
  12. data-dismiss="modal"
  13. >
  14. OK
  15. </button>
  16. </div>
  17. <div v-else>
  18. <div v-if="!isSaved">
  19. <br />
  20. <div v-if="isProperty">
  21. <div class="form-group row">
  22. <div style="text-align: left;">
  23. <div class="title-box-d">
  24. <h3 class="title-d">{{ item.shortDescription }}</h3>
  25. </div>
  26. </div>
  27. </div>
  28. <div class="form-group row">
  29. <div class="col-md-12" style="text-align: left;">
  30. <div v-html="item.description"></div>
  31. </div>
  32. </div>
  33. </div>
  34. <div v-if="!isProperty">
  35. <div class="form-group row">
  36. <div style="text-align: left;">
  37. <div class="intro-content">
  38. <h2>
  39. {{
  40. item.resort.resortName
  41. ? item.resort.resortName
  42. : item.resort
  43. }}
  44. </h2>
  45. </div>
  46. </div>
  47. </div>
  48. <div class="form-group row">
  49. <div class="col-md-12">
  50. <label for="resortunit">Unit:</label>
  51. <h5>{{ item.unitNumber }}</h5>
  52. </div>
  53. <div class="col-md-12">
  54. <label for="resortWeek">Module / Week Number:</label>
  55. <h5>{{ item.weekNumber }}</h5>
  56. </div>
  57. </div>
  58. </div>
  59. <div class="form-group row">
  60. <div class="col-md-12">
  61. <label>Current Price:</label>
  62. <h4>{{ item.sellPrice | toCurrency }}</h4>
  63. </div>
  64. <div class="col-md-12">
  65. <label>Offer:</label>
  66. <input
  67. class="form-control"
  68. type="number"
  69. step="any"
  70. id="minPrice"
  71. name="minPrice"
  72. v-model="item.offer"
  73. :disabled="!isMakeOffer"
  74. />
  75. </div>
  76. </div>
  77. <div class="form-group row">
  78. <div class="col-md-12">
  79. <label>Comments</label>
  80. <textarea
  81. class="form-control editor form-control-lg form-control-a"
  82. name="description"
  83. v-model="item.comment"
  84. :disabled="!isMakeOffer"
  85. ></textarea>
  86. </div>
  87. </div>
  88. <div align="left" class="custom-control custom-switch mb-2">
  89. <div class="row">
  90. <div align="center" class="col">
  91. <label class="mr-5">
  92. I wish to receive future listings and special campaigns?
  93. </label>
  94. <input
  95. type="checkbox"
  96. class="custom-control-input"
  97. id="customSwitch1"
  98. :checked="item.consent"
  99. @change="changeConsent"
  100. />
  101. <label class="custom-control-label" for="customSwitch1">
  102. {{ item.consent ? 'Yes' : 'No' }}
  103. </label>
  104. </div>
  105. </div>
  106. </div>
  107. <div class="form-group row">
  108. <div class="col-md-12">
  109. <p>
  110. *Occupation for the current year is not guaranteed, Uni-Vate
  111. Properties will confirm upon reply.
  112. </p>
  113. </div>
  114. </div>
  115. </div>
  116. <div v-if="!isSaved" class="container">
  117. <div class="row">
  118. <div algin="center" class="col">
  119. <button
  120. v-if="isMakeOffer"
  121. type="button"
  122. @click="SendOffer()"
  123. class="btn-white-border"
  124. >
  125. Send Offer
  126. </button>
  127. <button
  128. v-if="!isMakeOffer && !isDecline && canEdit"
  129. type="submit"
  130. @click="Accept()"
  131. class="btn btn-b-n"
  132. style="width: 150px; height: 40px;"
  133. >
  134. Accept
  135. </button>
  136. <button
  137. v-if="!isMakeOffer && !isDecline && canEdit"
  138. type="button"
  139. @click="Decline()"
  140. class="btn btn-b-n"
  141. style="width: 150px; height: 40px;"
  142. >
  143. Decline
  144. </button>
  145. </div>
  146. </div>
  147. </div>
  148. <div v-if="isDecline || item.statusCode === 'E3'" class="form-group row">
  149. <div class="col-md-12">
  150. <br />
  151. <label>Decline Reason</label>
  152. <textarea
  153. class="form-control editor form-control-lg form-control-a"
  154. name="description"
  155. v-model="item.declineReason"
  156. :disabled="item.statusCode === 'E3'"
  157. ></textarea>
  158. </div>
  159. </div>
  160. <button
  161. v-if="isDecline"
  162. type="button"
  163. @click="Complete()"
  164. class="btn btn-b-n"
  165. style="width: 150px; height: 40px;"
  166. >
  167. Complete
  168. </button>
  169. <div v-if="isSaved">
  170. <div class="form-group row">
  171. <br />
  172. <div class="container col-md-10">
  173. <p :class="[isInfo ? 'alert myInfo' : 'alert myWarning']">
  174. {{ message }}
  175. </p>
  176. </div>
  177. </div>
  178. <button
  179. v-if="isSaved"
  180. type="button"
  181. class="btn btn-b-n"
  182. style="width: 150px; height: 40px;"
  183. data-dismiss="modal"
  184. >
  185. OK
  186. </button>
  187. </div>
  188. </div>
  189. </div>
  190. </template>
  191. <script>
  192. /* eslint-disable */
  193. import { mapState, mapActions } from 'vuex'
  194. import Log from '../../assets/Log'
  195. export default {
  196. name: 'MakeOffer',
  197. props: {
  198. isMakeOffer: Boolean,
  199. isProperty: Boolean,
  200. canEdit: Boolean,
  201. item: Object,
  202. bidId: Number,
  203. updateItem: Function,
  204. },
  205. data() {
  206. return {
  207. isDecline: false,
  208. isSaved: false,
  209. message: '',
  210. isInfo: true,
  211. isLoggedIn: Log.isLoggedIn(),
  212. }
  213. },
  214. methods: {
  215. ...mapActions('bid', ['getTemplate', 'saveBid', 'acceptBid', 'declineBid']),
  216. SendOffer() {
  217. //alert("Under Development");
  218. this.bidItem.id = 0
  219. this.bidItem.userId = this.item.userId
  220. this.bidItem.amount = this.item.offer
  221. this.bidItem.comment = this.item.comment
  222. this.bidItem.consent = this.item.consent
  223. if (this.isProperty) {
  224. this.bidItem.propertyId = this.item.id
  225. } else {
  226. this.bidItem.timeshareWeekId = this.item.id
  227. if (this.item.isTender) {
  228. this.bidItem.tenderWeek = this.item
  229. }
  230. }
  231. this.saveBid(this.bidItem)
  232. this.isSaved = true
  233. this.isInfo = true
  234. this.message = 'Offer was submitted.'
  235. },
  236. changeConsent() {
  237. this.item.consent = !this.item.consent
  238. },
  239. Accept() {
  240. this.acceptBid(this.item.id)
  241. this.isSaved = true
  242. this.message = 'Offer Accepted.'
  243. this.isInfo = true
  244. },
  245. Decline() {
  246. this.isDecline = true
  247. },
  248. Complete() {
  249. this.isDecline = false
  250. const decline = {
  251. id: this.item.id,
  252. comment: this.item.declineReason,
  253. }
  254. this.declineBid(decline)
  255. this.isSaved = true
  256. this.message = 'Offer Declined.'
  257. this.isInfo = false
  258. },
  259. },
  260. computed: {
  261. ...mapState('bid', ['bidItem']),
  262. },
  263. created() {
  264. this.item.consent = true
  265. },
  266. mounted() {
  267. this.getTemplate()
  268. },
  269. watch: {
  270. item() {
  271. this.isSaved = false
  272. this.canEdit = this.item.statusCode === 'E1'
  273. },
  274. },
  275. }
  276. </script>
  277. <style lang="scss" scoped></style>