index.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <template>
  2. <div class="content">
  3. <lucency-header :lang="lang" page-key="news" />
  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. const pageLimit = 5;
  18. export default {
  19. name: "newIndex",
  20. props:['uLang','pType','pKey','pNews'],
  21. async asyncData(ctx){
  22. // ctx.searchProduct();
  23. const queryData = {};
  24. // console.log(ctx)
  25. queryData['key']=ctx.key;
  26. queryData['type']=ctx.type;
  27. queryData['page']=1;
  28. queryData['limit']=pageLimit;
  29. // 获取数据
  30. let url = 'http://szhfy.com.cn/api/searchNews.php';
  31. let [err,res] = await handle(axios.post(
  32. url,
  33. qs.stringify(queryData)
  34. ));
  35. if(err){
  36. console.log(err);
  37. return {};
  38. }
  39. let result = res.data;
  40. if(result.rcode === 1){
  41. return {news:result.data}
  42. }else{
  43. console.error(result.msg);
  44. console.log(result);
  45. return {news:[]}
  46. }
  47. },
  48. data(){
  49. return {
  50. lang: this.uLang?this.uLang:langMap.lang.cn,
  51. type: this.pType?this.pType:'all',
  52. key: this.pKey?this.pKey:'',
  53. page: 1,
  54. nowCount: 199,
  55. nowTotal: 2,
  56. limit:pageLimit,
  57. news: this.pNews?this.pNews:[],
  58. pageSave: {
  59. }
  60. }
  61. },
  62. mounted() {
  63. this.$root.$on('changeLang',this.switchLang);
  64. this.$root.$on('changeNewsType',this.selectType);
  65. this.$root.$on('changePage',this.changePageHandle);
  66. // this.$root.$on('changeProductType',this.selectType);
  67. const queryData = {};
  68. // console.log(ctx)
  69. queryData['key']=this.key;
  70. queryData['type']=this.type;
  71. queryData['page']=this.page;
  72. queryData['limit']=this.limit;
  73. let data = qs.stringify(queryData);
  74. this.loadPageData(data);
  75. },
  76. methods: {
  77. switchLang(nextLang) {
  78. if (nextLang) {
  79. this.lang = nextLang;
  80. } else {
  81. if (this.lang === langMap.lang.cn) {
  82. this.lang = langMap.lang.en
  83. } else {
  84. this.lang = langMap.lang.cn
  85. }
  86. }
  87. },
  88. selectType(nextType) {
  89. console.log(nextType)
  90. this.type = nextType;
  91. this.page = 1;
  92. this.searchNews();
  93. },
  94. changePageHandle(nextPage){
  95. this.page = nextPage;
  96. this.searchNews();
  97. },
  98. async searchNews(){
  99. const queryData = {};
  100. // console.log(ctx)
  101. queryData['key']=this.key;
  102. queryData['type']=this.type;
  103. queryData['page']=this.page;
  104. queryData['limit']=this.limit;
  105. // 获取数据
  106. let url = '/api/searchNews.php';
  107. let data = qs.stringify(queryData);
  108. let [err,res] = await handle(this.$axios.post(
  109. url,
  110. data
  111. ));
  112. if(err){
  113. console.log(err);
  114. return null;
  115. }
  116. let result = res.data;
  117. console.log(result)
  118. if(result.rcode === 1){
  119. this.news = result.data?result.data:[];
  120. await this.loadPageData(data);
  121. }else{
  122. console.error(result.msg);
  123. console.log(result);
  124. }
  125. },
  126. async loadPageData(queryData){
  127. let url = '/api/getNewsPage.php';
  128. // let
  129. let err,res;
  130. let pageData = null;
  131. if(this.pageSave[this.type] && this.pageSave[this.type][this.key]){
  132. pageData = this.pageSave[this.type][this.key]
  133. }else{
  134. [err,res] = await handle(this.$axios.post(
  135. url,
  136. queryData
  137. ));
  138. if(err){
  139. console.error(err);
  140. }else{
  141. let result = res.data;
  142. if(result.rcode === 1){
  143. pageData = result.data?result.data:{};
  144. }else{
  145. console.error(result.msg);
  146. console.log(result);
  147. }
  148. }
  149. }
  150. if (pageData){
  151. this.nowTotal = Math.ceil(pageData.count / pageData.limit);
  152. this.nowCount = pageData.count;
  153. if(!this.pageSave[this.type]){
  154. this.pageSave[this.type] = {}
  155. }
  156. if(!this.pageSave[this.type][this.key]){
  157. this.pageSave[this.type][this.key] = pageData;
  158. }
  159. }else{
  160. this.nowTotal = 1;
  161. this.nowCount = 1;
  162. }
  163. }
  164. }
  165. }
  166. </script>
  167. <style scoped>
  168. </style>