大数据展示系统-前端
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.

120 lines
3.2 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. <template>
  2. <div id="bookshelf">
  3. <div class="bookshelf-header">
  4. <h2>RFID智慧书架</h2>
  5. <span class="shelf-num">01</span>
  6. </div>
  7. <!-- 本架分类 -->
  8. <div class="book-category">
  9. <p>近代文学类</p>
  10. <p>古代文学类</p>
  11. </div>
  12. <!-- 智慧书架导航 -->
  13. <ul class="book-nav">
  14. <li>
  15. <img src="~@/assets/images/home/nav1.png">
  16. <p>图书检索</p>
  17. </li>
  18. <li @click="toPath('/HotBook')">
  19. <img src="~@/assets/images/home/nav2.png">
  20. <p>热门图书</p>
  21. </li>
  22. <li @click="toPath('/AuthorRecommend')">
  23. <img src="~@/assets/images/home/nav3.png">
  24. <p>作者推荐</p>
  25. </li>
  26. <li @click="toPath('/DigitalResource')">
  27. <img src="~@/assets/images/home/nav4.png">
  28. <p>数字资源</p>
  29. </li>
  30. <li>
  31. <img src="~@/assets/images/home/nav5.png">
  32. <p>场馆导航</p>
  33. </li>
  34. </ul>
  35. <!-- 本架图书 -->
  36. <div class="book-rack">
  37. <div class="list-top">
  38. <div class="list-top-title">
  39. <svg class="icon" aria-hidden="true">
  40. <use xlink:href="#icon-benjiatushu" />
  41. </svg>
  42. <p>本架图书</p>
  43. </div>
  44. <span class="more" @click="toPath('/CurrentRackBook')">更多<i class="iconfont icon-zuo rotate" /></span>
  45. </div>
  46. <div class="rack-list">
  47. <BookListItem class="list-big" :list-data.sync="rackList" />
  48. <BookListItem class="list-middle" :list-data.sync="otherList" :is-other-book="true" />
  49. </div>
  50. </div>
  51. <!-- 新书推荐 -->
  52. <div class="book-rack new-recommend">
  53. <div class="list-top">
  54. <div class="list-top-title">
  55. <p>新书推荐</p>
  56. </div>
  57. <span class="more" @click="toPath('/NewBook')">更多<i class="iconfont icon-zuo rotate" /></span>
  58. </div>
  59. <BookListItem class="list-small" :list-data="newList" :is-new-book="true" />
  60. </div>
  61. </div>
  62. </template>
  63. <script>
  64. import data from './data'
  65. import BookListItem from '@/views/module/bookListItem.vue'
  66. import { FetchNewBookRecommend, FetchCoverByISBN } from '@/api/bookshelf'
  67. export default {
  68. name: 'Home',
  69. components: {
  70. BookListItem
  71. },
  72. data() {
  73. return {
  74. rackList: [], // 本架图书排行第一
  75. otherList: [], // 本架图书排行后两本
  76. newList: [] // 新书推荐
  77. }
  78. },
  79. created() {
  80. this.getBookList()
  81. this.rackList = data.bookList.splice(0, 1)
  82. this.otherList = data.bookList.splice(-2)
  83. // this.newList = data.newList
  84. },
  85. mounted() {
  86. },
  87. methods: {
  88. toPath(path) {
  89. this.$router.push(path)
  90. },
  91. getBookList() {
  92. FetchNewBookRecommend().then(res => {
  93. let data = []
  94. data = res
  95. data.forEach(item => {
  96. this.getCoverByISBN(item.isbn.replace(/\-/g, ''), item)
  97. })
  98. }).catch(() => {
  99. this.$message.error('接口错误')
  100. })
  101. },
  102. getCoverByISBN(isbn, item) {
  103. const params = {
  104. isbn: isbn
  105. }
  106. FetchCoverByISBN(params).then((res) => {
  107. item.cover = window.URL.createObjectURL(res)
  108. this.newList.push(item)
  109. // this.newList.slice(0, 4)
  110. })
  111. }
  112. }
  113. }
  114. </script>
  115. <style lang="scss">
  116. @import "~@/assets/styles/index.scss";
  117. </style>