index.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <template>
  2. <div class="client-newsInfor-page">
  3. <!-- 新闻资讯banner栏 -->
  4. <div class="newsInfor-banner" @click="clickBanner(bannerList[0].url)"
  5. :style="{backgroundImage: `url(${bannerList[0].pic||require(`~/static/images/client/course/course-banner-background.jpg`)})`}">
  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" style="width:100%">
  19. <template v-if="activeIndex!=2" >
  20. <new-list
  21. v-for="(item,index) in newsList"
  22. :newsData="item"
  23. :key="index"></new-list>
  24. </template>
  25. <template v-else>
  26. <NewsListRiZhi v-for="(item,index) in newsList"
  27. :newsData="item"
  28. :key="index"></NewsListRiZhi>
  29. </template>
  30. </ul>
  31. <div class="client-el-pagination">
  32. <el-pagination
  33. background
  34. small
  35. class="mta-hidden-sm"
  36. layout="prev, pager, next"
  37. @current-change="handleCurrentChange"
  38. :current-page.sync="currentPage"
  39. :page-size="pageSize"
  40. :total="totalLists">
  41. </el-pagination>
  42. <el-pagination
  43. background
  44. class="mta-hidden-xs"
  45. layout="prev, pager, next"
  46. @current-change="handleCurrentChange"
  47. :current-page.sync="currentPage"
  48. :page-size="pageSize"
  49. :total="totalLists">
  50. </el-pagination>
  51. </div>
  52. </div>
  53. </div>
  54. </template>
  55. <script>
  56. import NewList from '~/components/news/NewsList';
  57. import NewsListRiZhi from '~/components/news/NewsListRiZhi';
  58. const defaultNewsClassifyId = 0;
  59. export default {
  60. name: 'news',
  61. layout: 'templateB',
  62. components: {
  63. NewList,NewsListRiZhi
  64. },
  65. async asyncData({ $axios, store }) {
  66. // 设置选中菜单
  67. store.commit('setActiveNav', '/news');
  68. try {
  69. const url = '/home/news/classify/list';
  70. const res = await $axios.post(url);
  71. const { data: { data } } = res;
  72. const url2 = '/home/news/list';
  73. const opt = {
  74. page: 1,
  75. size: 5,
  76. newsClassifyId: data[1].newsClassifyId || defaultNewsClassifyId,
  77. };
  78. const res2 = await $axios.post(url2, opt);
  79. const { data: { data: data2 } } = res2;
  80. let [res1] = await Promise.all([
  81. await $axios.$post(`/home/banner/list`, { 'code': 5 }).then(res => {
  82. return res;
  83. }),
  84. ]);
  85. return {
  86. bannerList: res1.data.data||[],
  87. newsList: data2.data || [],
  88. totalLists: data2.total || defaultNewsClassifyId,
  89. newsClassifyData: data || [],
  90. curNewsClassifyId: data[1].newsClassifyId || defaultNewsClassifyId,
  91. };
  92. } catch (e) {
  93. return {
  94. newsList: [],
  95. totalLists: 0,
  96. newsClassifyData: [],
  97. curNewsClassifyId: defaultNewsClassifyId,
  98. };
  99. }
  100. },
  101. data() {
  102. return {
  103. clicked: 0,
  104. newsClassifyId: null,
  105. homeNewsClassify: [],
  106. totalLists: 0,
  107. currentPage: 1,
  108. pageSize: 5,
  109. // 新闻分类数据
  110. // newsClassifyData: [],
  111. // 新闻数据
  112. newsList: [],
  113. activeIndex: 1,
  114. // banner图
  115. newsInforBannerImg: require(`~/static/images/client/newsInfor/newsInfor-banner-img.png`),
  116. };
  117. },
  118. head(){
  119. return {
  120. title: '麦塔考试系统案例_麦塔培训系统案例',
  121. meta: [
  122. {
  123. name: 'keywords',
  124. content: '麦塔考试系统案例_麦塔培训系统案例'
  125. },
  126. {
  127. name:'description',
  128. content:'麦塔致力于为客户提供专业的在线教育方案,打造企业核心竞争力。麦塔品牌诞生于2009年,公司创始团队多年来一直深耕在线教育领域,积累了丰富的行业经验。'
  129. }
  130. ],
  131. }
  132. },
  133. methods: {
  134. clickBanner(data){
  135. if(data){
  136. window.open(data)
  137. }
  138. },
  139. handleCurrentChange(val) {
  140. this.currentPage = val;
  141. this.getMessage();
  142. },
  143. async getMessage() {
  144. let opt = {
  145. newsClassifyId: this.curNewsClassifyId,
  146. page: this.currentPage,
  147. size: this.pageSize,
  148. };
  149. const url2 = '/home/news/list';
  150. const res2 = await this.$axios.post(url2, opt);
  151. this.newsList = res2.data.data.data;
  152. this.totalLists = res2.data.data.total || defaultNewsClassifyId;
  153. },
  154. btnClick(data, index) {
  155. this.activeIndex = index;
  156. console.log(data);
  157. this.curNewsClassifyId = data.newsClassifyId;
  158. this.currentPage = 1;
  159. this.getMessage();
  160. },
  161. },
  162. mounted() {
  163. }
  164. };
  165. </script>
  166. <style>
  167. </style>