index.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <template>
  2. <div class="content">
  3. <lucency-header :lang="lang" page-key="news" :is-phone="isPhone"/>
  4. <item-banner :lang="lang" :title="`新闻中心`" :sub-title="`行业资讯,高新技术一应俱全`"/>
  5. <news-types :lang="lang" :type="type"></news-types>
  6. <solution-list :lang="lang" :solution-list="news" :parent-type="'news'"></solution-list>
  7. <page-select :page="page" :count="nowCount" :total="nowTotal"></page-select>
  8. <default-footer :lang="lang"/>
  9. <site-bar wechat-src="/image/wechat.jpg"></site-bar>
  10. </div>
  11. </template>
  12. <script>
  13. import axios from "axios";
  14. import qs from "qs";
  15. import langMap from "@/map/langMap";
  16. import {handle} from "@/until/handle";
  17. import {isMediaView} from "@/until/mediaView";
  18. import LucencyHeader from "~/components/header/lucencyHeader.vue";
  19. import ItemBanner from "~/components/banner/itemBanner.vue";
  20. import DefaultFooter from "~/components/footer/defaultFooter.vue";
  21. import {apiMap, baseUrl} from "~/map/apiMap";
  22. const pageLimit = 5;
  23. export default {
  24. name: "newIndex",
  25. components: {DefaultFooter, ItemBanner, LucencyHeader},
  26. props:['uLang','pType','pKey','pNews','pPageData'],
  27. async asyncData(ctx){
  28. let url = baseUrl + apiMap.searchNews.path;
  29. url += `?type=all&p=1`
  30. let [err,res] = await handle(axios.get( url));
  31. if(err){
  32. console.log(err);
  33. return {};
  34. }
  35. let result = res.data;
  36. if(result.code === 1){
  37. let pageData = {
  38. limit: result.limit,
  39. page: result.page,
  40. total: result.total,
  41. count: result.count,
  42. }
  43. return {
  44. news: result.data,
  45. basePageData: pageData,
  46. }
  47. }else{
  48. console.error(result.msg);
  49. console.log(result);
  50. return {news:[]}
  51. }
  52. },
  53. data(){
  54. return {
  55. lang: this.uLang?this.uLang:langMap.lang.cn,
  56. type: this.pType?this.pType:'all',
  57. key: this.pKey?this.pKey:'',
  58. page: 1,
  59. nowCount: 199,
  60. nowTotal: 2,
  61. limit:pageLimit,
  62. news: this.pNews?this.pNews:[],
  63. basePageData: {},
  64. pageSave: {
  65. },
  66. isPhone: false
  67. }
  68. },
  69. beforeMount() {
  70. let pageData;
  71. if (this.pPageData){
  72. this.basePageData = this.pPageData
  73. }
  74. pageData = this.basePageData;
  75. this.updatePageData(pageData);
  76. },
  77. mounted() {
  78. this.isPhone = isMediaView(0,1024);
  79. this.$root.$on('changeLang',this.switchLang);
  80. this.$root.$on('changeNewsType',this.selectType);
  81. this.$root.$on('changePage',this.changePageHandle);
  82. // this.$root.$on('changeProductType',this.selectType);
  83. },
  84. methods: {
  85. switchLang(nextLang) {
  86. if (nextLang) {
  87. this.lang = nextLang;
  88. } else {
  89. if (this.lang === langMap.lang.cn) {
  90. this.lang = langMap.lang.en
  91. } else {
  92. this.lang = langMap.lang.cn
  93. }
  94. }
  95. },
  96. selectType(nextType) {
  97. console.log(nextType)
  98. this.type = nextType;
  99. this.page = 1;
  100. this.searchNews();
  101. },
  102. changePageHandle(nextPage){
  103. this.page = nextPage;
  104. this.searchNews();
  105. },
  106. async searchNews(){
  107. // 获取数据
  108. let url = apiMap.searchNews.path;
  109. url += `?key=${this.key}&type=${this.type}&p=${this.page}`
  110. let [err,res] = await handle(axios.get(url));
  111. if(err){ console.log(err); return null; }
  112. let result = res.data;
  113. if(result.code === 1){
  114. this.news = result.data;
  115. let pageData;
  116. if(result.total){
  117. // 更新页面信息
  118. pageData = {
  119. limit: result.limit,
  120. page: result.page,
  121. total: result.total,
  122. count: result.count,
  123. }
  124. }else if(this.pageSave[this.type] && this.pageSave[this.type][this.key]){
  125. pageData = this.pageSave[this.type][this.key]
  126. }
  127. this.updatePageData(pageData);
  128. }else{
  129. console.error(result.msg);
  130. console.log(result);
  131. }
  132. },
  133. updatePageData(pageData){
  134. if(!this.pageSave[this.type]){
  135. this.pageSave[this.type] = {}
  136. }
  137. if(!this.pageSave[this.type][this.key]){
  138. this.pageSave[this.type][this.key] = pageData;
  139. }
  140. let nowTotal = Math.ceil(pageData.total / pageData.limit);
  141. let nowCount = pageData.total;
  142. this.nowTotal = nowTotal;
  143. this.nowCount = nowCount;
  144. }
  145. }
  146. }
  147. </script>
  148. <style scoped>
  149. </style>