placeorder.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. <template>
  2. <body>
  3. <!--SHIPPING ADDRESS-->
  4. <div class="container-fluid">
  5. <div class="shipping-address">
  6. <div class="navbarShipping a-spacing-large">
  7. <nuxt-link to="/">
  8. <img src="img/placeHeadernav.gif" class="img-fluid" />
  9. </nuxt-link>
  10. </div>
  11. <div class="a-row">
  12. <div class="a-size-large a-text-bold a-spacing-mini">Review your order</div>
  13. <div class="a-row a-spacing-small a-size-mini"></div>
  14. </div>
  15. <div class="row">
  16. <div class="col-xl-9 col-lg-8 col-md-9 col-sm-12">
  17. <div class="a-row a-spacing-large"></div>
  18. <div class="spc-top a-box a-spacing-small">
  19. <div class="a-box-inner">
  20. <div class="row">
  21. <div class="col-xl-4 col-lg-6 col-sm-6 col-6">
  22. <div class="a-spacing-base">
  23. <div class="a-row">
  24. <strong>
  25. Shipping address
  26. <small>
  27. <a href="#">Change</a>
  28. </small>
  29. </strong>
  30. </div>
  31. <div class="a-row">
  32. <div class="displayAddressDiv">
  33. <!-- User's address -->
  34. <ul class="displayAddressUL">
  35. <li>{{ $auth.$state.user.address.fullname }}</li>
  36. <li>{{ $auth.$state.user.address.streetAddress}}</li>
  37. <li>{{ $auth.$state.user.address.city }}</li>
  38. <li>{{ $auth.$state.user.address.country}}</li>
  39. <li>
  40. Phone:
  41. <span dir="ltr">{{ $auth.$state.user.address.phoneNumber}}</span>
  42. </li>
  43. </ul>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. <div class="col-xl-4 col-lg-6 col-sm-6 col-6">
  49. <div class="a-spacing-base">
  50. <div class="a-row">
  51. <strong>
  52. Payment Method
  53. <small>
  54. <a href="#">Change</a>
  55. </small>
  56. </strong>
  57. </div>
  58. <div class="a-row">
  59. <ul class="no-bullet-list">
  60. <li class="a-spacing-micro">
  61. <span class="a-list-item">
  62. <span>
  63. <img src="img/visa.gif" class="img-fluid" />
  64. </span>
  65. ending in
  66. <span>6397</span>
  67. </span>
  68. </li>
  69. </ul>
  70. </div>
  71. </div>
  72. <div class="a-row a-spacing-base">
  73. <div class="a-row">
  74. <strong>
  75. Billing Address
  76. <small>
  77. <a href="#">Change</a>
  78. </small>
  79. </strong>
  80. </div>
  81. <span>Same as shipping address</span>
  82. </div>
  83. </div>
  84. <div class="col-xl-4 col-lg-6 col-sm-12 col-12">
  85. <div class="a-spacing-base">
  86. <div class="a-spacing-mini">
  87. <span>
  88. <strong>Gift cards &amp; promotional codes</strong>
  89. </span>
  90. </div>
  91. <div class="row">
  92. <div class="col-xl-8 col-lg-7 col-md-7 col-sm-7 col-8 pr-0">
  93. <input
  94. type="text"
  95. autocomplete="off"
  96. class="a-input-text"
  97. placeholder="Enter Code"
  98. />
  99. </div>
  100. <div class="col-xl-4 col-lg-5 col-md-5 col-sm-5 col-4">
  101. <span class="a-buton-apply-code">
  102. <span class="a-button-inner">
  103. <span class="a-button-text">Apply</span>
  104. </span>
  105. </span>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. <div class="spc-orders a-box">
  114. <div class="a-box-inner">
  115. <div class="shipping-group">
  116. <!-- Estimated delivery -->
  117. <div
  118. class="a-row a-color-state a-text-bold a-size-medium a-spacing-small"
  119. >Estimated delivery: {{ estimatedDelivery }}</div>
  120. <div class="row">
  121. <!-- Cart -->
  122. <div class="col-xl-6 col-lg-7 col-sm-6 col-12">
  123. <div v-for="product in getCart" :key="product._id" class="a-row a-spacing-base">
  124. <div class="row">
  125. <!-- Product's photo -->
  126. <div class="col-sm-3 col-3">
  127. <img :src="product.photo" style="width: 100px;" />
  128. </div>
  129. <!-- Product's Title -->
  130. <div class="col-sm-9 col-9">
  131. <div class="a-row">
  132. <strong>{{ product.title }}</strong>
  133. </div>
  134. <!-- Product's owner name -->
  135. <div class="a-row a-size-small">{{ product.owner.name }}</div>
  136. <div class="a-row">
  137. <!-- Product's price -->
  138. <span class="a-color-price a-spacing-micro">
  139. <strong dir="ltr">${{ product.price * product.quantity }}</strong>
  140. </span>
  141. </div>
  142. <div class="a-row">
  143. <span class="availability a-color-success">In Stock.</span>
  144. </div>
  145. <div class="a-row">
  146. <!-- Product's quantity -->
  147. <strong>Quantity: {{ product.quantity }}</strong>
  148. </div>
  149. <div
  150. class="a-row a-color-secondary a-size-small"
  151. >Sold by:&nbsp;Amazon.com Services, Inc</div>
  152. <div class="a-row">
  153. <div class="a-row a-spacing-top-micro">
  154. <span class="a-button-small">
  155. <span class="a-button-inner">
  156. <i class="a-icon checkout-giftbox-icon"></i>
  157. <a
  158. href="#"
  159. class="a-button-text gift-popover-link"
  160. >Add a gift receipt</a>
  161. </span>
  162. </span>
  163. </div>
  164. <div class="a-row">
  165. <span class="a-color-secondary a-size-mini">and see other gift options</span>
  166. </div>
  167. </div>
  168. </div>
  169. </div>
  170. </div>
  171. </div>
  172. <div class="col-xl-6 col-lg-5 col-sm-6 col-12">
  173. <div class="a-row shipping-speeds">
  174. <fieldset>
  175. <span class="shipping-speeds-title a-size-medium">
  176. <b>Choose a delivery option:</b>
  177. </span>
  178. <!-- Delivery option -->
  179. <div class="a-spacing-mini wednesday">
  180. <!-- Shipping normal -->
  181. <input @change="onChooseShipping('normal')" checked="checked" type="radio" name="order0" />
  182. <span class="a-radio-label">
  183. <span class="a-color-success">
  184. <strong>Averages 7 business days</strong>
  185. </span>
  186. <br />
  187. <span
  188. class="a-color-secondary"
  189. >$13.98&nbsp;-&nbsp;Standard International Shipping - No Tracking</span>
  190. </span>
  191. </div>
  192. <br />
  193. <div class="a-spacing-mini tuesday">
  194. <!-- Shipping fast -->
  195. <input @change="onChooseShipping('fast')" type="radio" name="order0" />
  196. <span class="a-radio-label">
  197. <span class="a-color-success">
  198. <strong>Averages 3 business days</strong>
  199. </span>
  200. <br />
  201. <span class="a-color-secondary">$49.98&nbsp;-&nbsp;Shipping</span>
  202. </span>
  203. </div>
  204. </fieldset>
  205. </div>
  206. </div>
  207. </div>
  208. </div>
  209. </div>
  210. </div>
  211. </div>
  212. <div class="col-xl-3 col-lg-4 col-md-3 col-sm-12 pl-0">
  213. <div class="a-box-group">
  214. <div class="a-box a-first">
  215. <div class="a-box-inner">
  216. <div class="a-row a-spacing-micro">
  217. <nuxt-link to="/payment">
  218. <span class="a-button-place-order">Place your order in USD</span>
  219. </nuxt-link>
  220. </div>
  221. <div class="a-row a-spacing-small a-size-small a-text-center">
  222. By placing your order, you agree to Amazon's
  223. <a href="#">privacy notice</a>
  224. and
  225. <a href="#">conditions of use</a>.
  226. </div>
  227. <div class="a-row">
  228. <div id="tfx-header">
  229. <div class="a-box a-alert-info a-spacing-small">
  230. <div class="a-box-inner alert-info-no-icon">
  231. <strong>
  232. Amazon Currency Converter is Enabled. &nbsp;
  233. <a
  234. href="#"
  235. class="a-size-mini"
  236. >Learn More</a>
  237. </strong>
  238. </div>
  239. </div>
  240. </div>
  241. <h3 class="a-spacing-micro a-size-base">Order Summary</h3>
  242. <div class="order-summary" style="font-size: 12px;">
  243. <div class="row">
  244. <!-- Cart's total price -->
  245. <div class="col-sm-6">Items:</div>
  246. <div class="col-sm-6 text-right">USD ${{ getCartTotalPrice }}</div>
  247. </div>
  248. <div class="row">
  249. <!-- Shipping cost -->
  250. <div class="col-sm-6">Shipping & handling:</div>
  251. <div class="col-sm-6 text-right">USD {{ shippingPrice }}</div>
  252. </div>
  253. <div class="row mt-2">
  254. <div class="col-sm-6"></div>
  255. <div class="col-sm-6 text-right">
  256. <hr />
  257. </div>
  258. </div>
  259. <!-- Total Price with Shipping -->
  260. <div class="row">
  261. <div class="col-sm-6">Total Before Tax:</div>
  262. <div class="col-sm-6 text-right">USD {{ getCartTotalPriceWithShipping }}</div>
  263. </div>
  264. <div class="row">
  265. <div class="col-sm-6">Estimated tax to be collected:</div>
  266. <div class="col-sm-6 text-right">USD 0.00</div>
  267. </div>
  268. <hr />
  269. <div class="row">
  270. <div class="col-sm-6">
  271. <div class="a-color-price a-size-medium a-text-bold">Order total:</div>
  272. </div>
  273. <div class="col-sm-6 text-right">
  274. <!-- Total Price with Shipping -->
  275. <div class="a-color-price a-size-medium a-text-bold">USD {{ getCartTotalPriceWithShipping }}</div>
  276. </div>
  277. </div>
  278. </div>
  279. </div>
  280. </div>
  281. </div>
  282. <div class="a-box a-last a-color-alternate-background">
  283. <div class="a-box-inner">
  284. <div class="a-spacing-base">
  285. <div class="a-row">
  286. <span>
  287. <i class="fas fa-caret-down"></i>
  288. <a href="#">Selected payment currency</a>
  289. </span>
  290. <fieldset class="pl-3">
  291. <span style="margin-left: 1rem;">
  292. <input type="radio" class="no-js-hide" value="transactional" />
  293. <span class="a-radio-label">USD</span>
  294. </span>
  295. <div class="a-row">
  296. <span class="a-size-mini">
  297. <a href="#">(Change card currency)</a>
  298. </span>
  299. </div>
  300. </fieldset>
  301. </div>
  302. </div>
  303. <div class="a-size-mini">
  304. <div class="a-row a-spacing-mini mb-1">
  305. Please note that your country may charge import duties, taxes and fees that you may have to pay ahead of delivery.
  306. <a
  307. href="#"
  308. >Learn more</a>
  309. </div>
  310. <div class="a-row a-spacing-mini mb-1">
  311. <a href="#">How are shipping costs calculated?</a>
  312. </div>
  313. <div class="a-row a-spacing-mini">
  314. <a href="#">Why didn't I qualify for free shipping?</a>
  315. </div>
  316. </div>
  317. </div>
  318. </div>
  319. </div>
  320. </div>
  321. </div>
  322. <div class="a-row a-spacing-small a-spacing-top-small">
  323. <p class="a-color-secondary a-size-mini">
  324. Do you need help? Explore our
  325. <a href="#">Help pages</a> or
  326. <a href="#">contact us</a>
  327. </p>
  328. <p
  329. class="a-color-secondary a-size-mini"
  330. >For an item sold by Amazon.com: When you click the "Place your order" button, we'll send you an email message acknowledging receipt of your order. Your contract to purchase an item will not be complete until we send you an email notifying you that the item has been shipped.</p>
  331. <p id="state-sales-tax-info" class="a-color-secondary a-size-mini">
  332. Colorado, Oklahoma, South Dakota and Vermont Purchasers:
  333. <a
  334. href="#"
  335. >Important information regarding sales tax you may owe in your State</a>
  336. </p>
  337. <div class="a-color-secondary a-size-mini">
  338. <p class="a-color-secondary a-size-mini">
  339. Within 30 days of delivery, you may return new, unopened merchandise in its original condition. Exceptions and restrictions apply. See Amazon.com's
  340. <a
  341. href="#"
  342. >Returns Policy</a>
  343. <br />
  344. <br />Go to the
  345. <a href="#">Amazon.com homepage</a> without completing your order.
  346. </p>
  347. </div>
  348. </div>
  349. <hr />
  350. <p class="a-size-small a-text-center a-color-secondary" data-testid>
  351. <a href="#">Conditions of Use</a> |
  352. <a href="#">Privacy Notice</a> © 1996-2019, Amazon.com, Inc.
  353. </p>
  354. </div>
  355. </div>
  356. <!--/SHIPPING ADDRESS-->
  357. </body>
  358. </template>
  359. <script>
  360. import { mapGetters } from 'vuex'
  361. export default {
  362. layout: "none",
  363. async asyncData ({ $axios, store }) {
  364. try {
  365. let response = await $axios.$post('/api/shipment', { shipment: 'normal' })
  366. store.commit('setShipping', {
  367. price: response.shipment.price,
  368. estimatedDelivery: response.shipment.estimated
  369. })
  370. return {
  371. shippingPrice: response.shipment.price,
  372. estimatedDelivery: response.shipment.estimated
  373. }
  374. } catch (err) {
  375. }
  376. },
  377. computed: {
  378. ...mapGetters(['getCart', 'getCartTotalPrice', 'getCartTotalPriceWithShipping'])
  379. },
  380. methods: {
  381. async onChooseShipping (shipment) {
  382. try {
  383. let response = await this.$axios.$post('/api/shipment', { shipment })
  384. this.$store.commit('setShipping', {
  385. price: response.shipment.price,
  386. estimatedDelivery: response.shipment.estimated
  387. })
  388. this.shippingPrice = response.shipment.price,
  389. this.estimatedDelivery = response.shipment.estimated
  390. } catch (err) {
  391. }
  392. }
  393. }
  394. };
  395. </script>