index.vue 4.6 KB

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