index.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <template>
  2. <div class="client-newsInfor-page">
  3. <!-- 新闻资讯banner栏 -->
  4. <div class="newsInfor-banner">
  5. <img @click="clickBanner(bannerList[0].url)" :src="bannerList[0].pic" alt="新闻资讯">
  6. </div>
  7. <!-- 新闻资讯 -->
  8. <ul class="newsInfor-menu-ul">
  9. <li style="cursor: pointer"
  10. :class="{'active':activeIndex===index}"
  11. @click="btnClick(item,index)"
  12. :key="index"
  13. v-for="(item,index) in newsClassifyData">
  14. {{item.name}}
  15. </li>
  16. </ul>
  17. <div class="client-container newsInfor-content-box">
  18. <ul class="newsInfor-content-ul">
  19. <new-list
  20. v-for="(item,index) in newsList"
  21. :newsData="item"
  22. :key="index"></new-list>
  23. </ul>
  24. <div class="client-el-pagination">
  25. <el-pagination
  26. background
  27. layout="prev, pager, next"
  28. @current-change="handleCurrentChange"
  29. :current-page.sync="currentPage"
  30. :page-size="pageSize"
  31. :total="totalLists">
  32. </el-pagination>
  33. </div>
  34. </div>
  35. </div>
  36. </template>
  37. <script>
  38. import NewList from '~/components/news/NewsList';
  39. const defaultNewsClassifyId = 0;
  40. export default {
  41. name: 'news',
  42. layout: 'templateB',
  43. components: {
  44. NewList,
  45. },
  46. async asyncData({ $axios, store }) {
  47. // 设置选中菜单
  48. store.commit('setActiveNav', '/news');
  49. try {
  50. const url = '/home/news/classify/list';
  51. const res = await $axios.post(url);
  52. const { data: { data } } = res;
  53. const url2 = '/home/news/list';
  54. const opt = {
  55. page: 1,
  56. size: 10,
  57. newsClassifyId: data[0].newsClassifyId || defaultNewsClassifyId,
  58. };
  59. const res2 = await $axios.post(url2, opt);
  60. const { data: { data: data2 } } = res2;
  61. let [res1] = await Promise.all([
  62. await $axios.$post(`/home/banner/list`, { 'code': 5 }).then(res => {
  63. return res;
  64. }),
  65. ]);
  66. return {
  67. bannerList: res1.data.data||[],
  68. newsList: data2.data || [],
  69. totalLists: data2.total || defaultNewsClassifyId,
  70. newsClassifyData: data || [],
  71. curNewsClassifyId: data[0].newsClassifyId || defaultNewsClassifyId,
  72. };
  73. } catch (e) {
  74. return {
  75. newsList: [],
  76. totalLists: 0,
  77. newsClassifyData: [],
  78. curNewsClassifyId: defaultNewsClassifyId,
  79. };
  80. }
  81. },
  82. data() {
  83. return {
  84. clicked: 0,
  85. newsClassifyId: null,
  86. homeNewsClassify: [],
  87. totalLists: 0,
  88. currentPage: 1,
  89. pageSize: 5,
  90. // 新闻分类数据
  91. // newsClassifyData: [],
  92. // 新闻数据
  93. newsList: [],
  94. activeIndex: 0,
  95. // banner图
  96. newsInforBannerImg: require(`~/static/images/client/newsInfor/newsInfor-banner-img.png`),
  97. };
  98. },
  99. head(){
  100. return {
  101. title: '新闻中心',
  102. meta: [
  103. {
  104. name: 'keywords',
  105. content: '考试系统,培训系统,在线答题系统,在线学习系统,无纸化考试系统,在线培训考试系统'
  106. },
  107. {
  108. name:'description',
  109. content:'在线考试系统和在线培训系统是栋科提供的最有竞争力的考试系统和培训系统,栋科软件十年专注于在线考试系统和在线培训系统。'
  110. }
  111. ],
  112. }
  113. },
  114. methods: {
  115. clickBanner(data){
  116. if(data){
  117. window.open(data)
  118. }
  119. },
  120. handleCurrentChange(val) {
  121. this.currentPage = val;
  122. this.getMessage();
  123. },
  124. async getMessage() {
  125. let opt = {
  126. newsClassifyId: this.curNewsClassifyId,
  127. page: this.currentPage,
  128. size: this.pageSize,
  129. };
  130. const url2 = '/home/news/list';
  131. const res2 = await this.$axios.post(url2, opt);
  132. this.newsList = res2.data.data.data;
  133. this.totalLists = res2.data.data.total || defaultNewsClassifyId;
  134. },
  135. btnClick(data, index) {
  136. this.activeIndex = index;
  137. console.log(data);
  138. this.curNewsClassifyId = data.newsClassifyId;
  139. this.currentPage = 1;
  140. this.getMessage();
  141. },
  142. },
  143. mounted() {
  144. }
  145. };
  146. </script>
  147. <style>
  148. </style>