大数据展示系统-前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.4 KiB

3 years ago
3 years ago
3 years ago
3 years ago
  1. <template>
  2. <div id="bookshelf">
  3. <!-- <HeaderTop /> -->
  4. <!-- <div class="top-bg" /> -->
  5. <div class="bookshelf-header" style="height:120px">
  6. <router-link to="/">
  7. <span class="icon iconfont icon-l">&#xe631;</span>
  8. </router-link>
  9. <h2>新书推荐</h2>
  10. </div>
  11. <BookList :bookdata="bookData" />
  12. </div>
  13. </template>
  14. <script>
  15. // import HeaderTop from '@/views/module/headerTop.vue'
  16. import BookList from '@/views/module/bookList.vue'
  17. import { FetchNewBookRecommend, FetchCoverByISBN } from '@/api/bookshelf'
  18. export default {
  19. name: 'NewBook',
  20. components: { BookList },
  21. data() {
  22. return {
  23. bookData: []
  24. }
  25. },
  26. created() {
  27. this.getBookData()
  28. },
  29. methods: {
  30. async getBookData() {
  31. const res = await FetchNewBookRecommend().then(res => {
  32. console.log(res, 'res')
  33. return res
  34. }).catch(() => {
  35. this.$message.error('接口错误')
  36. })
  37. await res.forEach(item => {
  38. this.getCoverByISBN(item.isbn.replace(/\-/g, ''), item)
  39. })
  40. },
  41. getCoverByISBN(isbn, item) {
  42. const params = {
  43. isbn: isbn
  44. }
  45. FetchCoverByISBN(params).then((res) => {
  46. item.cover = window.URL.createObjectURL(res)
  47. console.log(res, 'res')
  48. this.bookData.push(item)
  49. })
  50. }
  51. }
  52. }
  53. </script>
  54. <style lang="scss" scoped>
  55. @import "~@/assets/styles/index.scss";
  56. </style>