index.vue 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <main>
  3. <div class="a-spacing-large"></div>
  4. <div class="container-fluid browsing-history">
  5. <div class="row">
  6. <div class="col-sm-8 col-8">
  7. <h1 class="a-size-large a-zpacing-none a-text-normal">All products</h1>
  8. <div class="a-spacing-large"></div>
  9. <!-- Burron -->
  10. <nuxt-link to="/products" class="a-button-buy-again">Add a new product</nuxt-link>
  11. <nuxt-link to="/category" class="a-button-history margin-right-10">Add a new category</nuxt-link>
  12. <nuxt-link to="/owner" class="a-button-history margin-right-10">Add a new owner</nuxt-link>
  13. </div>
  14. </div>
  15. </div>
  16. <div class="a-spacing-large"></div>
  17. <!-- Listing Page -->
  18. <div class="container-fluid browsing-history">
  19. <div class="row">
  20. <div v-for="(product, index) in products" :key="product._id" class="col-xl-2 col-lg-2 col-md3 col-sm-6 col-6 br bb">
  21. <div class="history-box">
  22. <!-- Product Image -->
  23. <a href="" class="a-link-normal">
  24. <img :src="product.photo" alt="" class="img-fluid" />
  25. </a>
  26. <div class="a-spacing-top-base asin-title">
  27. <span class="a-text-normal">
  28. <div class="p13n-sc-truncated">{{ product.title }}</div>
  29. </span>
  30. </div>
  31. <div class="a-row">
  32. <a href="">
  33. <i class="fas fa-star"></i>
  34. <i class="fas fa-star"></i>
  35. <i class="fas fa-star"></i>
  36. <i class="fas fa-star"></i>
  37. <i class="fas fa-star"></i>
  38. </a>
  39. <span class="a-letter-space"></span>
  40. <span class="a-color-tertiary a-size-small asin-reviews">(1732)</span>
  41. </div>
  42. <!-- Product price -->
  43. <div class="a-row">
  44. <span class="a-size-base a-color-price">
  45. <span class="p13n-sc-price">{{ product.price }}</span>
  46. </span>
  47. </div>
  48. <!-- Product Buttons -->
  49. <div class="a-row">
  50. <nuxt-link :to="`/products/${product._id}`" class="a-button-history margin-right-10">Update</nuxt-link>
  51. <a href="#" @click="onDeleteProduct(product._id, index)" class="a-button-history margin-right-10">Delete</a>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. </main>
  58. </template>
  59. <script>
  60. export default {
  61. async asyncData ({ $axios }) {
  62. try {
  63. let response = await $axios.$get('http://localhost:3000/api/products')
  64. console.log(response)
  65. return {
  66. products: response.products
  67. }
  68. } catch (err) {
  69. }
  70. },
  71. methods: {
  72. async onDeleteProduct (id, index) {
  73. try {
  74. let response = await this.$axios.$delete(`http://localhost:3000/api/products/${id}`)
  75. this.products.splice(index, 1)
  76. } catch (err) {
  77. console.log(err)
  78. }
  79. }
  80. }
  81. }
  82. </script>
  83. <style>
  84. </style>