index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <template>
  2. <div class="client-newsInfor-page">
  3. <!-- 新闻资讯banner栏 -->
  4. <div class="newsInfor-banner"></div>
  5. <!-- 新闻资讯 -->
  6. <ul class="newsInfor-menu-ul">
  7. <li style="cursor: pointer"
  8. :class="{'active':activeIndex===index}"
  9. @click="btnClick(item,index)"
  10. :key="index"
  11. v-for="(item,index) in newsClassifyData">
  12. {{item.name}}
  13. </li>
  14. </ul>
  15. <div class="client-container newsInfor-content-box">
  16. <ul class="newsInfor-content-ul">
  17. <new-list
  18. v-for="(item,index) in newsList"
  19. :newsData="item"
  20. :key="index"></new-list>
  21. </ul>
  22. <div class="client-el-pagination">
  23. <el-pagination
  24. background
  25. layout="prev, pager, next"
  26. @current-change="handleCurrentChange"
  27. :current-page.sync="currentPage"
  28. :page-size="pageSize"
  29. :total="totalLists">
  30. </el-pagination>
  31. </div>
  32. </div>
  33. </div>
  34. </template>
  35. <script>
  36. import NewList from '~/components/news/NewsList';
  37. const defaultNewsClassifyId = 0;
  38. export default {
  39. name: 'news',
  40. layout: 'templateB',
  41. components: {
  42. NewList,
  43. },
  44. async asyncData({ $axios, store }) {
  45. // 设置选中菜单
  46. store.commit('setActiveNav', '/news');
  47. try {
  48. const url = '/home/news/classify/list';
  49. const res = await $axios.post(url);
  50. const { data: { data } } = res;
  51. const url2 = '/home/news/list';
  52. const opt = {
  53. page: 1,
  54. size: 10,
  55. newsClassifyId: data[0].newsClassifyId || defaultNewsClassifyId,
  56. };
  57. const res2 = await $axios.post(url2, opt);
  58. const { data: { data: data2 } } = res2;
  59. return {
  60. newsList: data2.data || [],
  61. totalLists: data2.total || defaultNewsClassifyId,
  62. newsClassifyData: data || [],
  63. curNewsClassifyId: data[0].newsClassifyId || defaultNewsClassifyId,
  64. };
  65. } catch (e) {
  66. return {
  67. newsList: [],
  68. totalLists: 0,
  69. newsClassifyData: [],
  70. curNewsClassifyId: defaultNewsClassifyId,
  71. };
  72. }
  73. },
  74. data() {
  75. return {
  76. clicked: 0,
  77. newsClassifyId: null,
  78. homeNewsClassify: [],
  79. totalLists: 0,
  80. currentPage: 1,
  81. pageSize: 5,
  82. // 新闻分类数据
  83. // newsClassifyData: [],
  84. // 新闻数据
  85. newsList: [],
  86. activeIndex: 0,
  87. };
  88. },
  89. methods: {
  90. handleCurrentChange(val) {
  91. this.currentPage = val;
  92. this.getMessage();
  93. },
  94. async getMessage() {
  95. let opt = {
  96. newsClassifyId: this.curNewsClassifyId,
  97. page: this.currentPage,
  98. size: this.pageSize,
  99. };
  100. const url2 = '/home/news/list';
  101. const res2 = await this.$axios.post(url2, opt);
  102. this.newsList = res2.data.data.data;
  103. this.totalLists = res2.data.data.total || defaultNewsClassifyId;
  104. },
  105. btnClick(data, index) {
  106. this.activeIndex = index;
  107. console.log(data);
  108. this.curNewsClassifyId = data.newsClassifyId;
  109. this.currentPage = 1;
  110. this.getMessage();
  111. },
  112. },
  113. mounted() {
  114. }
  115. };
  116. </script>
  117. <style>
  118. </style>