index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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="platform-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. small
  28. class="mta-hidden-sm"
  29. layout="prev, pager, next"
  30. @current-change="handleCurrentChange"
  31. :current-page.sync="currentPage"
  32. :page-size="pageSize"
  33. :total="totalLists">
  34. </el-pagination>
  35. <el-pagination
  36. background
  37. class="mta-hidden-xs"
  38. layout="prev, pager, next"
  39. @current-change="handleCurrentChange"
  40. :current-page.sync="currentPage"
  41. :page-size="pageSize"
  42. :total="totalLists">
  43. </el-pagination>
  44. </div>
  45. </div>
  46. <!-- 立即咨询 -->
  47. <div class="client-zixun-code">
  48. <h4>立即扫码资讯,领取您的专属解决方案</h4>
  49. <img src="#" alt="">
  50. <p>扫码添加客服微信</p>
  51. </div>
  52. </div>
  53. </template>
  54. <script>
  55. import NewList from '~/components/news/NewsList';
  56. const defaultNewsClassifyId = 0;
  57. export default {
  58. name: 'news',
  59. layout: 'templateB',
  60. components: {
  61. NewList,
  62. },
  63. async asyncData({ $axios, store }) {
  64. // 设置选中菜单
  65. store.commit('setActiveNav', '/news');
  66. try {
  67. const url = '/home/news/classify/list';
  68. const res = await $axios.post(url);
  69. const { data: { data } } = res;
  70. const url2 = '/home/news/list';
  71. const opt = {
  72. page: 1,
  73. size: 5,
  74. newsClassifyId: data[1].newsClassifyId || defaultNewsClassifyId,
  75. };
  76. const res2 = await $axios.post(url2, opt);
  77. const { data: { data: data2 } } = res2;
  78. let [res1] = await Promise.all([
  79. await $axios.$post(`/home/banner/list`, { 'code': 5 }).then(res => {
  80. return res;
  81. }),
  82. ]);
  83. return {
  84. bannerList: res1.data.data||[],
  85. newsList: data2.data || [],
  86. totalLists: data2.total || defaultNewsClassifyId,
  87. newsClassifyData: data || [],
  88. curNewsClassifyId: data[1].newsClassifyId || defaultNewsClassifyId,
  89. };
  90. } catch (e) {
  91. return {
  92. newsList: [],
  93. totalLists: 0,
  94. newsClassifyData: [],
  95. curNewsClassifyId: defaultNewsClassifyId,
  96. };
  97. }
  98. },
  99. data() {
  100. return {
  101. clicked: 0,
  102. newsClassifyId: null,
  103. homeNewsClassify: [],
  104. totalLists: 0,
  105. currentPage: 1,
  106. pageSize: 5,
  107. // 新闻分类数据
  108. // newsClassifyData: [],
  109. // 新闻数据
  110. newsList: [],
  111. activeIndex: 1,
  112. // banner图
  113. newsInforBannerImg: require(`~/static/images/client/newsInfor/newsInfor-banner-img.png`),
  114. };
  115. },
  116. head(){
  117. return {
  118. title: '考试系统案例_培训系统案例',
  119. meta: [
  120. {
  121. name: 'keywords',
  122. content: '麦塔案例'
  123. },
  124. {
  125. name:'description',
  126. content:'麦塔品牌诞生于2009年,公司创始团队多年来一直深耕在线教育领域,积累了丰富的行业经验。研发团队集结了来自互联网、科技、教育等多个领域专家级研发工程师,率先实现了移动化、平台化、知识化、智能化的学习管理模式。'
  127. }
  128. ],
  129. }
  130. },
  131. methods: {
  132. clickBanner(data){
  133. if(data){
  134. window.open(data)
  135. }
  136. },
  137. handleCurrentChange(val) {
  138. this.currentPage = val;
  139. this.getMessage();
  140. },
  141. async getMessage() {
  142. let opt = {
  143. newsClassifyId: this.curNewsClassifyId,
  144. page: this.currentPage,
  145. size: this.pageSize,
  146. };
  147. const url2 = '/home/news/list';
  148. const res2 = await this.$axios.post(url2, opt);
  149. this.newsList = res2.data.data.data;
  150. this.totalLists = res2.data.data.total || defaultNewsClassifyId;
  151. },
  152. btnClick(data, index) {
  153. this.activeIndex = index;
  154. console.log(data);
  155. this.curNewsClassifyId = data.newsClassifyId;
  156. this.currentPage = 1;
  157. this.getMessage();
  158. },
  159. },
  160. mounted() {
  161. }
  162. };
  163. </script>
  164. <style>
  165. </style>