index.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <main class="listingPage">
  3. <div class="container-fluid">
  4. <div class="row">
  5. <div class="col-xl-2 col-lg-3 md-4 col-sm-4">
  6. <!--SideBar -->
  7. </div>
  8. <!-- main content -->
  9. <div class="col-xl-10 col-lg-9 md-8 col-sm-8">
  10. <FeatureProduct />
  11. <div class="mainResuts">
  12. <div class="s-result-list">
  13. <div v-for="product in products" :key="product._id" class="s-result-item celwidget">
  14. <div class="s-item-container">
  15. <div class="a-spacing-micro">
  16. <div class="bestSeller">
  17. <a href="#">Best seller</a>
  18. </div>
  19. </div>
  20. <div>
  21. <div class="row">
  22. <!--image-->
  23. <div class="col-sm-3 text-center">
  24. <a href="">
  25. <img :src="product.photo" alt="" class="img-fluid" style="width: 150px">
  26. </a>
  27. </div>
  28. <div class="col-sm-9">
  29. <div class="a-row a-spacing-small">
  30. <!-- Title and date -->
  31. <nuxt-link :to="`/products/${product._id}`" class="a-link-normal">
  32. <h2 class="a-size-medium">
  33. {{ product.title }}
  34. <span class="a-letter-space"></span>
  35. <span class="a-letter-space"></span>
  36. <span class="a-size-small a-color-secondary">Sep 3, 2019</span>
  37. </h2>
  38. </nuxt-link>
  39. </div>
  40. <!--Author name -->
  41. <div class="a-row a-spacing-small">
  42. <span class="a-size-small a-color-secondary">by</span>
  43. <span class="a-size-small a-color-secondary">
  44. <a href="#" class="a-link-normal a-text-normal">{{ product.owner.name }}</a>
  45. </span>
  46. </div>
  47. <!--Author name -->
  48. <div class="a-row">
  49. <span class="a-size-small">Ships to USA</span>
  50. </div>
  51. <div class="row">
  52. <div class="col-sm-7">
  53. <div class="a-row a-spacing-none">
  54. <a href="#" class="a-link-normal a-text-normal">Hardcover</a>
  55. </div>
  56. <!-- price-->
  57. <div class="a-row a-spacing-none">
  58. <a href="" class="a-link-normal a-text-normal">
  59. <span class="a-offscreen">{{ product.price }}</span>
  60. <span class="a-color-base sx-zero-spacing">
  61. <span class="sx-price sx-price-large">
  62. <sup class="sx-price-currency">$</sup>
  63. <span class="sx-price-wholsup">{{ product.price }}</span>
  64. <sup class="sx-price-fractional">00</sup>
  65. </span>
  66. </span>
  67. </a>
  68. <span class="a-letter-space"></span>
  69. <span class="a-size-base-plug a-color-secondary a-text-strike">$28.00</span>
  70. </div>
  71. <!-- Audible Trial -->
  72. <div class="a-row a-spacing-none">
  73. <span class="a-size-small a-color-secondary">Free wuith trial </span>
  74. </div>
  75. <hr/>
  76. <!-- Other Format -->
  77. <span class="a-size-small a-color-secondray">
  78. other form
  79. <span class="a-letter-space"></span>
  80. <a href="" class="a-size-small a-linkl-normal a-text-normal">Audio CD</a>
  81. </span>
  82. <!-- Ratiings -->
  83. <div class="col-sm-5">
  84. <div class="a-row a-spacing-mini">
  85. <!-- star rating -->
  86. <no-ssr>
  87. <star-rating
  88. :rating="product.averageRating"
  89. :show-rating="false"
  90. :glow="1"
  91. :border-width="1"
  92. :rounded-corners="true"
  93. :read-only="true"
  94. :star-size="18"
  95. :star-points="[23,2,14,17,0,19,10,34,7,50,23,43,38,50,36,34,46,19,31,17]"
  96. ></star-rating>
  97. </no-ssr>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. </main>
  113. </template>
  114. <script>
  115. import StarRating from 'vue-star-rating'
  116. import FeatureProduct from '~/components/FeatureProduct'
  117. export default {
  118. components: {
  119. StarRating,
  120. FeatureProduct
  121. },
  122. async asyncData ({ $axios }) {
  123. try {
  124. let response = await $axios.$get('/api/products')
  125. console.log(response)
  126. return {
  127. products: response.products
  128. }
  129. } catch (err) {
  130. console.log(err)
  131. }
  132. }
  133. }
  134. </script>