cart.vue 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <template>
  2. <!--MAIN-->
  3. <main>
  4. <!--SHOPPING CART-->
  5. <div class="shopping-cart mt-3">
  6. <div class="container-fluid c-section">
  7. <div class="row">
  8. <div class="col-lg-9 col-md-8 col-sm-7">
  9. <div class="c-section a-spacing-top-base">
  10. <div class="a-row sc-cart-header sc-compact-bottom">
  11. <h2>Shopping Cart</h2>
  12. </div>
  13. <form action="#" method="post">
  14. <div class="sc-list-head">
  15. <div class="text-right a-spacing-top-micro">
  16. <span class="a-color-secondary">Price</span>
  17. </div>
  18. </div>
  19. <!-- List of the item -->
  20. <div v-for="product in getCart" :key="product._id" class="sc-list-body">
  21. <div class="sc-list-item-border">
  22. <div class="a-row a-spacing-top-base a-spacing-base">
  23. <div class="row">
  24. <!-- Product's Image -->
  25. <div class="col-sm-2 col-2">
  26. <a href="#" class="a-link-normal">
  27. <img :src="product.photo" class="img-fluid w-100" />
  28. </a>
  29. </div>
  30. <div class="col-sm-8 col-8">
  31. <!-- Product's Title -->
  32. <div class="a-spacing-mini">
  33. <a
  34. href="#"
  35. class="a-link-normal a-size-medium a-text-bold"
  36. >{{ product.title }}</a>
  37. <!-- Product's Owner name -->
  38. <span class="a-size-base sc-product-creator">{{ product.owner.name }}</span>
  39. </div>
  40. <div>
  41. <span
  42. class="a-size-small a-color-secondary sc-product-binding"
  43. >Paperback</span>
  44. </div>
  45. <div>
  46. <span
  47. class="a-size-small a-color-success sc-product-availability"
  48. >In Stock</span>
  49. </div>
  50. <div class="a-checkbox a-align-top a-size-small a-spacing-top-micro">
  51. <label>
  52. <input type="checkbox" name value />
  53. <span class="a-checkbox-label">
  54. This is a gift
  55. <span class="a-size-small">
  56. <a href="#">
  57. <span class="a-size-small">Learn More</span>
  58. </a>
  59. </span>
  60. </span>
  61. </label>
  62. </div>
  63. <div class="sc-action-links">
  64. <select @change="onChangeQuantity($event, product)">
  65. <option v-for=" i in 10"
  66. :key="i"
  67. :value="i"
  68. :selected="checkQty(product.quantity, i)">Qty: &nbsp; {{ i }}</option>
  69. </select>
  70. &nbsp;&nbsp;
  71. <span>|</span>
  72. &nbsp;
  73. <!-- Delete button -->
  74. <span class="a-size-small">
  75. <a @click="$store.commit('removeProduct', product)" href="#">Delete</a>
  76. </span>
  77. &nbsp;
  78. &nbsp;
  79. </div>
  80. </div>
  81. <div class="col-sm-2 col-2 tr sm-txt-r">
  82. <!-- Product's Price -->
  83. <p class="a-spacing-small">
  84. <span
  85. class="a-size-medium a-color-price sc-price sc-white-space-nowrap sc-product-price sc-price-sign a-text-bold"
  86. >${{ product.price * product.quantity }}</span>
  87. </p>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. </div>
  93. <!-- List of the item -->
  94. <div class="text-right">
  95. <!-- Cart Subtotal -->
  96. <p class="a-spacing-none a-spacing-top-mini">
  97. <span class="a-size-medium">Subtotal ({{ getCartLength }} item)</span>
  98. <span class="a-color-price a-text-bold">
  99. <!-- Cart Total Price -->
  100. <span class="a-size-medium a-color-price">${{ getCartTotalPrice }}</span>
  101. </span>
  102. </p>
  103. </div>
  104. </form>
  105. </div>
  106. </div>
  107. <div class="col-lg-3 col-md-4 col-sm-5">
  108. <div class="a-box-group" style="margin-bottom: 14px;">
  109. <div class="a-box a-color-alternate-background">
  110. <div class="a-box-inner">
  111. <div class="a-spacing-mini">
  112. <p class="a-spacing-none a-spacing-top-none">
  113. <!-- Cart Subtotal -->
  114. <span class="a-size-medium">
  115. <span>Subtotal ({{ getCartLength }} item):</span>
  116. <span class="a-color-price a-text-bold">
  117. <!-- Cart Total Price -->
  118. <span class="a-size-medium a-color-price">${{ getCartTotalPrice }}</span>
  119. </span>
  120. </span>
  121. </p>
  122. </div>
  123. <div class="a-spacing-base mt-1">
  124. <input type="checkbox" name="checkbox" />
  125. <span class="a-label a-checkbox-label">This order contains a gift</span>
  126. </div>
  127. <div>
  128. <span class="a-spacing-small a-button-primary a-button-icon">
  129. <span class="a-button-inner">
  130. <a href="#" class="a-button-text">Proceed to checkout</a>
  131. </span>
  132. </span>
  133. </div>
  134. </div>
  135. </div>
  136. </div>
  137. <!-- Recently Viewed -->
  138. <div class="a-spacing-large">
  139. <div class="a-box">
  140. <div class="a-box-inner">
  141. <h5 class="a-spacing-base">Your recently viewed items</h5>
  142. <div class="a-spacing-micro">
  143. <ul class="a-unordered-list recently-viewed">
  144. <li class="a-spacing-medium" v-for="i in 4" :key="i">
  145. <span class="a-list-item">
  146. <div class="row">
  147. <div class="col-md-4 col-sm-3 col-3 pl-0">
  148. <a href="#">
  149. <img src="img/cartRecent4.png" class />
  150. </a>
  151. </div>
  152. <div class="col-md-8 col-sm-9 col-9">
  153. <a href="#" class="a-link-normal">The Everything Store:…</a>
  154. <div class="a-size-small">
  155. <a href="#" class="a-size-small a-link-child">Brad Stone</a>
  156. </div>
  157. <div class="a-icon-row a-spacing-none">
  158. <a href="#">
  159. <i class="fas fa-star"></i>
  160. <i class="fas fa-star"></i>
  161. <i class="fas fa-star"></i>
  162. <i class="fas fa-star"></i>
  163. <i class="fas fa-star-half-alt"></i>
  164. </a>
  165. <a href="#">155</a>
  166. </div>
  167. <div class="a-size-small">
  168. <span class="a-size-small a-color-secondary">Kindle Edition</span>
  169. </div>
  170. <div class="a-spacing-top-micro">
  171. <span
  172. class="a-button-inspired a-spacing-top-none a-button-base a-button-small"
  173. >
  174. <span class="a-button-inner">
  175. <a href="#" class="a-button-text">See all buying options</a>
  176. </span>
  177. </span>
  178. </div>
  179. </div>
  180. </div>
  181. </span>
  182. </li>
  183. </ul>
  184. </div>
  185. </div>
  186. </div>
  187. </div>
  188. </div>
  189. </div>
  190. </div>
  191. </div>
  192. <!--/SHOPPING CART-->
  193. </main>
  194. <!--/MAIN-->
  195. </template>
  196. <script>
  197. import { mapGetters } from 'vuex'
  198. export default {
  199. computed: {
  200. ...mapGetters(['getCart', 'getCartTotalPrice', 'getCartLength'])
  201. },
  202. methods: {
  203. onChangeQuantity (event, product) {
  204. let qty = event.target.value * 1
  205. this.$store.commit('changeQty', { product, qty })
  206. },
  207. checkQty (prodQty, qty) {
  208. if (prodQty * 1 === qty * 1) {
  209. return true
  210. } else {
  211. return false
  212. }
  213. }
  214. }
  215. }
  216. </script>