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