index.vue 4.4 KB

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