index.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <div class="second-pane">
  3. <img class="logo" src="@/assets/images/logo@2x-min.png" />
  4. <search-input
  5. v-model="keyword"
  6. @search="$router.push({ name: 'search', query: { keyword } })"
  7. />
  8. <rank-pane
  9. class="second-pane-recommend"
  10. :list="recommendList"
  11. :loading="recommendLoading"
  12. >
  13. <template #title-prepend>
  14. <img
  15. class="second-pane__title-prepend"
  16. src="../../images/text_recommend@2x-min.png"
  17. />
  18. </template>
  19. </rank-pane>
  20. <rank-pane class="second-pane-read" :list="readList" :loading="readLoading">
  21. <template #title-prepend>
  22. <img
  23. class="second-pane__title-prepend"
  24. src="../../images/text_readomg@2x-min.png"
  25. />
  26. </template>
  27. </rank-pane>
  28. <div class="second-pane-news">
  29. <div class="second-pane-news-header">
  30. <img
  31. class="second-pane__title-prepend"
  32. src="../../images/text_news@2x-min.png"
  33. />
  34. <span>排行榜</span>
  35. </div>
  36. <news-list />
  37. </div>
  38. </div>
  39. </template>
  40. <script setup>
  41. import { ref, onMounted } from "vue";
  42. import { getReadListApi, getRecommendListApi } from "@/api";
  43. import SearchInput from "../../../../components/SearchInput.vue";
  44. import RankPane from "../RankPane.vue";
  45. import NewsList from "../NewsList.vue";
  46. const keyword = ref("");
  47. const recommendLoading = ref(false);
  48. const recommendList = ref([]);
  49. const readLoading = ref(false);
  50. const readList = ref([]);
  51. onMounted(() => {
  52. getRecommendList();
  53. getReadList();
  54. });
  55. const getReadList = async () => {
  56. try {
  57. readLoading.value = true;
  58. const data = await getReadListApi();
  59. readList.value = data;
  60. } finally {
  61. readLoading.value = false;
  62. }
  63. };
  64. const getRecommendList = async () => {
  65. try {
  66. recommendLoading.value = true;
  67. const data = await getRecommendListApi({
  68. pageNum: 1,
  69. pageSize: 10,
  70. type: "rank",
  71. });
  72. recommendList.value = data;
  73. } finally {
  74. recommendLoading.value = false;
  75. }
  76. };
  77. </script>
  78. <style lang="scss" scoped>
  79. @import "./index.scss";
  80. </style>