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.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. <template>
  2. <!-- eslint-disable max-len -->
  3. <div style="padding-left:50px; padding-right:50px; padding-bottom:50px;">
  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="title-box-d">
  38. <h3 class="title-d">
  39. {{ item.resort.resortName ? item.resort.resortName : item.resort }}
  40. </h3>
  41. </div>
  42. </div>
  43. </div>
  44. <div class="form-group row">
  45. <div class="col-md-6">
  46. <label for="resortunit">Unit</label>
  47. <div class="input-group mb-3">
  48. <div class="input-group-prepend">
  49. <span class="input-group-text" style="color: #60CBEB">
  50. <b>U#</b>
  51. </span>
  52. </div>
  53. <input
  54. class="form-control"
  55. type="text"
  56. id="resort"
  57. name="resortunit"
  58. disabled
  59. v-model="item.unitNumber"
  60. />
  61. </div>
  62. </div>
  63. <div class="col-md-6">
  64. <label for="resortWeek">Module / Week Number</label>
  65. <div class="input-group mb-3">
  66. <div class="input-group-prepend">
  67. <span class="input-group-text" style="color: #60CBEB">
  68. <b>M</b>
  69. </span>
  70. </div>
  71. <input
  72. class="form-control"
  73. type="text"
  74. id="week"
  75. name="resortWeek"
  76. disabled
  77. v-model="item.weekNumber"
  78. />
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. <div class="form-group row">
  84. <div class="col-md-6">
  85. <label>Current Price</label>
  86. <div class="input-group mb-3">
  87. <div class="input-group-prepend">
  88. <span class="input-group-text" style="color: #60CBEB">
  89. <b>R</b>
  90. </span>
  91. </div>
  92. <input
  93. v-if="isProperty"
  94. class="form-control"
  95. type="number"
  96. v-model="item.price"
  97. disabled
  98. />
  99. <input v-else class="form-control" type="number" v-model="item.sellPrice" disabled />
  100. </div>
  101. </div>
  102. <div class="col-md-6">
  103. <label>Offer</label>
  104. <div class="input-group mb-3">
  105. <div class="input-group-prepend">
  106. <span class="input-group-text" style="color: #60CBEB">
  107. <b>R</b>
  108. </span>
  109. </div>
  110. <input
  111. class="form-control"
  112. type="number"
  113. step="any"
  114. id="minPrice"
  115. name="minPrice"
  116. v-model="item.offer"
  117. :disabled="!isMakeOffer"
  118. />
  119. </div>
  120. </div>
  121. </div>
  122. <div class="form-group row">
  123. <div class="col-md-12">
  124. <label>Comments</label>
  125. <textarea
  126. class="form-control editor form-control-lg form-control-a"
  127. name="description"
  128. v-model="item.comment"
  129. :disabled="!isMakeOffer"
  130. ></textarea>
  131. </div>
  132. </div>
  133. </div>
  134. <div v-if="!isSaved" class="container">
  135. <button
  136. v-if="isMakeOffer"
  137. type="button"
  138. @click="SendOffer()"
  139. class="btn btn-b-n"
  140. style="width: 150px; height:40px;"
  141. >
  142. Send Offer
  143. </button>
  144. <button
  145. v-if="!isMakeOffer && !isDecline && canEdit"
  146. type="submit"
  147. @click="Accept()"
  148. class="btn btn-b-n"
  149. style="width: 150px; height:40px;"
  150. >
  151. Accept
  152. </button>
  153. <button
  154. v-if="!isMakeOffer && !isDecline && canEdit"
  155. type="button"
  156. @click="Decline()"
  157. class="btn btn-b-n"
  158. style="width: 150px; height:40px;"
  159. >
  160. Decline
  161. </button>
  162. </div>
  163. <div v-if="isDecline || item.statusCode === 'E3'" class="form-group row">
  164. <div class="col-md-12">
  165. <br />
  166. <label>Decline Reason</label>
  167. <textarea
  168. class="form-control editor form-control-lg form-control-a"
  169. name="description"
  170. v-model="item.declineReason"
  171. :disabled="item.statusCode === 'E3'"
  172. ></textarea>
  173. </div>
  174. </div>
  175. <button
  176. v-if="isDecline"
  177. type="button"
  178. @click="Complete()"
  179. class="btn btn-b-n"
  180. style="width: 150px; height:40px;"
  181. >
  182. Complete
  183. </button>
  184. <div v-if="isSaved">
  185. <div class="form-group row">
  186. <br />
  187. <div class="container col-md-10">
  188. <p :class="[isInfo ? 'alert myInfo' : 'alert myWarning']">{{ message }}</p>
  189. </div>
  190. </div>
  191. <button
  192. v-if="isSaved"
  193. type="button"
  194. class="btn btn-b-n"
  195. style="width: 150px; height:40px;"
  196. data-dismiss="modal"
  197. >
  198. OK
  199. </button>
  200. </div>
  201. </div>
  202. </div>
  203. </template>
  204. <script>
  205. import { mapState, mapActions } from "vuex";
  206. import Log from "../../assets/Log";
  207. export default {
  208. name: "MakeOffer",
  209. props: {
  210. isMakeOffer: Boolean,
  211. isProperty: Boolean,
  212. canEdit: Boolean,
  213. item: Object,
  214. bidId: Number,
  215. updateItem: Function
  216. },
  217. data() {
  218. return {
  219. isDecline: false,
  220. isSaved: false,
  221. message: "",
  222. isInfo: true,
  223. isLoggedIn: Log.isLoggedIn()
  224. };
  225. },
  226. methods: {
  227. ...mapActions("bid", ["getBid", "saveBid", "acceptBid", "declineBid"]),
  228. SendOffer() {
  229. alert("Under Development");
  230. // this.getBid(0);
  231. // this.bidItem.id = 0;
  232. // this.bidItem.amount = this.item.offer;
  233. // this.bidItem.comment = this.item.comment;
  234. // if (this.isProperty) {
  235. // this.bidItem.propertyId = this.item.id;
  236. // } else {
  237. // this.bidItem.timeshareWeekId = this.item.id;
  238. // }
  239. // this.saveBid(this.bidItem);
  240. // this.item = [];
  241. // this.isSaved = true;
  242. // this.message = "Offer was submitted.";
  243. // this.isInfo = true;
  244. },
  245. Accept() {
  246. this.acceptBid(this.item.id);
  247. this.isSaved = true;
  248. this.message = "Offer Accepted.";
  249. this.isInfo = true;
  250. },
  251. Decline() {
  252. this.isDecline = true;
  253. },
  254. Complete() {
  255. this.isDecline = false;
  256. const decline = {
  257. id: this.item.id,
  258. comment: this.item.declineReason
  259. };
  260. this.declineBid(decline);
  261. this.isSaved = true;
  262. this.message = "Offer Declined.";
  263. this.isInfo = false;
  264. }
  265. },
  266. computed: {
  267. ...mapState("bid", ["bidIt,em"])
  268. },
  269. watch: {
  270. item() {
  271. this.isSaved = false;
  272. this.canEdit = this.item.statusCode === "E1";
  273. }
  274. }
  275. };
  276. </script>