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.

168 lines
3.5 KiB

  1. <template>
  2. <div class="book-list">
  3. <div v-for="book in books" :key="book.id" class="book-item">
  4. <img :src="book.cover">
  5. <!-- <img :src="book.cover" :alt="book.title"> -->
  6. <div class="book-info" >
  7. <h3>{{ book.title }}</h3>
  8. <p>{{ book.description }}</p>
  9. <p>阅读次数{{ book.viewCount }}</p>
  10. </div>
  11. <button @click="handleReadBook(book.title)">立即阅读</button>
  12. </div>
  13. </div>
  14. </template>
  15. <!-- <script>
  16. import { ref } from 'vue';
  17. export default {
  18. name: 'Book',
  19. setup() {
  20. const books = ref([
  21. {
  22. title: "发财线秘籍",
  23. description: "发财线经济(阅读时间截止为2024年6月30日)",
  24. reads: 2490,
  25. cover: "./src/assets/发财线.png"
  26. },
  27. {
  28. title: "解套宝典",
  29. description: "解套宝典(阅读截止时间为2024年12月31日)",
  30. reads: 1057,
  31. cover: "src/assets/解套.png"
  32. },
  33. {
  34. title: "十年200倍——上册",
  35. description: "十年200倍——上册(阅读截止时间为2024年12月31日)",
  36. reads: 1073,
  37. cover: "src/assets/十年上.png"
  38. },
  39. {
  40. title: "十年200倍——下册",
  41. description: "十年200倍——下册(阅读截止时间为2024年12月31日)",
  42. reads: 1018,
  43. cover: "src/assets/十年下.png"
  44. }
  45. ]);
  46. const handleReadBook = (title) => {
  47. alert(`您点击了《${title}`);
  48. };
  49. return {
  50. books,
  51. handleReadBook
  52. };
  53. }
  54. };
  55. </script> -->
  56. <script setup>
  57. import bookApi from '@/api/bookApi';
  58. import { ref } from 'vue';
  59. const books = ref([]);
  60. //向后端发送请求
  61. function getBooks() {
  62. bookApi.getBookList().then(resp => {
  63. books.value = resp.data.list;
  64. console.log(books.value);
  65. } );
  66. }
  67. getBooks();
  68. // const books = ref([
  69. // {
  70. // title: "发财线秘籍",
  71. // description: "发财线经济(阅读时间截止为2024年6月30日)",
  72. // reads: 2490,
  73. // cover: "src/assets/发财线.png"
  74. // },
  75. // {
  76. // title: "解套宝典",
  77. // description: "解套宝典(阅读截止时间为2024年12月31日)",
  78. // reads: 1057,
  79. // cover: "src/assets/解套.png"
  80. // },
  81. // {
  82. // title: "十年200倍——上册",
  83. // description: "十年200倍——上册(阅读截止时间为2024年12月31日)",
  84. // reads: 1073,
  85. // cover: "src/assets/十年上.png"
  86. // },
  87. // {
  88. // title: "十年200倍——下册",
  89. // description: "十年200倍——下册(阅读截止时间为2024年12月31日)",
  90. // reads: 1018,
  91. // cover: "src/assets/十年下.png"
  92. // }
  93. // ]);
  94. const handleReadBook = (title) => {
  95. alert(`您点击了《${title}`);
  96. };
  97. </script>
  98. <style>
  99. .book-item:hover{
  100. transform: scale(1.01);
  101. }
  102. body {
  103. font-family: Arial, sans-serif;
  104. background-color: #f4f4f4;
  105. margin: 0;
  106. padding: 20px;
  107. }
  108. .book-list {
  109. display: flex;
  110. flex-direction: column;
  111. }
  112. .book-item {
  113. background-color: white;
  114. border: 1px solid #ddd;
  115. border-radius: 5px;
  116. padding: 15px;
  117. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  118. display: flex;
  119. align-items: center;
  120. }
  121. .book-item img {
  122. width: 100px;
  123. height: 150px;
  124. margin-right: 20px;
  125. }
  126. .book-info {
  127. flex-grow: 1;
  128. }
  129. .book-info h3 {
  130. margin: 0 0 10px 0;
  131. font-size: 18px;
  132. text-align: left;
  133. }
  134. .book-info p {
  135. margin: 5px 0;
  136. color: #555;
  137. text-align: left;
  138. }
  139. button {
  140. background-color: #ff6f61;
  141. color: white;
  142. border: none;
  143. padding: 10px 20px;
  144. border-radius: 5px;
  145. cursor: pointer;
  146. font-size: 16px;
  147. }
  148. button:hover {
  149. background-color: #ff5252;
  150. }
  151. </style>