<template>
  <div class="content">
    <lucency-header :lang="lang" page-key="news" />
    <item-banner :lang="lang" :title="`新闻中心`" :sub-title="`行业资讯,高新技术一应俱全`"/>
    <news-types :lang="lang" :type="type"></news-types>
    <solution-list :lang="lang" :solution-list="news" :parent-type="'news'"></solution-list>
    <page-select :page="page" :count="nowCount" :total="nowTotal"></page-select>

    <default-footer :lang="lang"/>

    <site-bar wechat-src="/image/wechat.jpg"></site-bar>
  </div>
</template>

<script>
import axios from "axios";
import qs from "qs";

import langMap from "@/map/langMap";
import handle from "@/until/handle";

const pageLimit = 5;
export default {
  name: "newIndex",
  props:['uLang','pType','pKey','pNews'],
  async asyncData(ctx){
    // ctx.searchProduct();
    const queryData = {};
    // console.log(ctx)
    queryData['key']=ctx.key;
    queryData['type']=ctx.type;
    queryData['page']=1;
    queryData['limit']=pageLimit;
    // 获取数据
    let url = 'http://szhfy.com.cn/api/searchNews.php';
    let [err,res] = await handle(axios.post(
      url,
      qs.stringify(queryData)
    ));
    if(err){
      console.log(err);
      return {};
    }
    let result = res.data;
    if(result.rcode === 1){
      return {news:result.data}
    }else{
      console.error(result.msg);
      console.log(result);
      return {news:[]}
    }
  },
  data(){
    return {
      lang: this.uLang?this.uLang:langMap.lang.cn,
      type: this.pType?this.pType:'all',
      key: this.pKey?this.pKey:'',
      page: 1,
      nowCount: 199,
      nowTotal: 2,
      limit:pageLimit,
      news: this.pNews?this.pNews:[],
      pageSave: {

      }
    }
  },
  mounted() {
    this.$root.$on('changeLang',this.switchLang);
    this.$root.$on('changeNewsType',this.selectType);
    this.$root.$on('changePage',this.changePageHandle);
    // this.$root.$on('changeProductType',this.selectType);
    const queryData = {};
    // console.log(ctx)
    queryData['key']=this.key;
    queryData['type']=this.type;
    queryData['page']=this.page;
    queryData['limit']=this.limit;
    let data = qs.stringify(queryData);
    this.loadPageData(data);
  },
  methods: {
    switchLang(nextLang) {
      if (nextLang) {
        this.lang = nextLang;
      } else {
        if (this.lang === langMap.lang.cn) {
          this.lang = langMap.lang.en
        } else {
          this.lang = langMap.lang.cn
        }
      }
    },
    selectType(nextType) {
      console.log(nextType)
      this.type = nextType;
      this.page = 1;
      this.searchNews();
    },
    changePageHandle(nextPage){
      this.page = nextPage;
      this.searchNews();
    },
    async searchNews(){
      const queryData = {};
      // console.log(ctx)
      queryData['key']=this.key;
      queryData['type']=this.type;
      queryData['page']=this.page;
      queryData['limit']=this.limit;
      // 获取数据
      let url = '/api/searchNews.php';
      let data = qs.stringify(queryData);
      let [err,res] = await handle(this.$axios.post(
        url,
        data
      ));
      if(err){
        console.log(err);
        return null;
      }
      let result = res.data;
      console.log(result)
      if(result.rcode === 1){
        this.news = result.data?result.data:[];
        await this.loadPageData(data);
      }else{
        console.error(result.msg);
        console.log(result);
      }
    },
    async loadPageData(queryData){
      let url = '/api/getNewsPage.php';
      // let
      let err,res;
      let pageData = null;
      if(this.pageSave[this.type] && this.pageSave[this.type][this.key]){
        pageData = this.pageSave[this.type][this.key]
      }else{
        [err,res] = await handle(this.$axios.post(
          url,
          queryData
        ));
        if(err){
          console.error(err);
        }else{
          let result = res.data;
          if(result.rcode === 1){
            pageData = result.data?result.data:{};
          }else{
            console.error(result.msg);
            console.log(result);
          }
        }
      }
      if (pageData){
        this.nowTotal = Math.ceil(pageData.count / pageData.limit);
        this.nowCount = pageData.count;
        if(!this.pageSave[this.type]){
          this.pageSave[this.type] = {}
        }
        if(!this.pageSave[this.type][this.key]){
          this.pageSave[this.type][this.key] = pageData;
        }
      }else{
        this.nowTotal = 1;
        this.nowCount = 1;
      }
    }
  }
}
</script>

<style scoped>

</style>
