Jelajahi Sumber

新闻中心初始化

kindring 2 tahun lalu
induk
melakukan
10bb230ac4
5 mengubah file dengan 199 tambahan dan 26 penghapusan
  1. 2 2
      components/header/lucencyHeader.vue
  2. 174 0
      pages/news/index.vue
  3. 0 24
      pages/sort/_sign.vue
  4. 18 0
      phpAPi/web.config
  5. 5 0
      until/handle.js

+ 2 - 2
components/header/lucencyHeader.vue

@@ -132,8 +132,8 @@ export default {
           showSub: false
         },
         {
-          key: "new",
-          path: "/new",
+          key: "news",
+          path: "/news",
           text: "新闻中心"
         },
         {

+ 174 - 0
pages/news/index.vue

@@ -0,0 +1,174 @@
+<template>
+  <div class="content">
+    <lucency-header :lang="lang" page-key="news" />
+    <item-banner :lang="lang" :title="`新闻中心`" :sub-title="`行业资讯,高新技术一应俱全`"/>
+    <solution-types :lang="lang" :type="type"></solution-types>
+    <solution-list :lang="lang" :solution-list="news"></solution-list>
+    <page-select :page="page" :count="nowCount" :total="nowTotal"></page-select>
+
+    <default-footer :lang="lang"/>
+  </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('changeNewType',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>

+ 0 - 24
pages/sort/_sign.vue

@@ -1,24 +0,0 @@
-<template>
-  <div class="w-full">
-      {{sign}}
-  </div>
-</template>
-
-<script>
-export default {
-  data(){
-    return {
-      sign:''
-    }
-  },
-  mounted(){
-    let b = this.$route.params.sign
-    console.log(b);
-    this.sign = b;
-  }
-}
-</script>
-
-<style>
-
-</style>

+ 18 - 0
phpAPi/web.config

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <system.webServer>
+        <httpErrors errorMode="Detailed" />
+        <rewrite>
+            <rules>
+                <rule name="已导入的规则 1" stopProcessing="true">
+                    <match url="^(.*)$" ignoreCase="false" />
+                    <conditions logicalGrouping="MatchAll">
+                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
+                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
+                    </conditions>
+                    <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
+                </rule>
+            </rules>
+        </rewrite>
+    </system.webServer>
+</configuration>

+ 5 - 0
until/handle.js

@@ -1,3 +1,8 @@
+/**
+ * 用于处理异步函数的错误
+ * @param promise {Promise} 异步函数
+ * @returns {Promise<Array>} [err, val]
+ */
 function handle (promise){
   return new Promise(resolve => {
     try{