Browse Source

修复bug

wayne 6 years ago
parent
commit
9fb30d94b0
3 changed files with 270 additions and 233 deletions
  1. 202 206
      pages/salary/_id.vue
  2. 67 26
      pages/salary/index.vue
  3. 1 1
      plugins/nuxtAxios.js

+ 202 - 206
pages/salary/_id.vue

@@ -108,224 +108,220 @@
 </template>
 
 <script>
-  import axios from 'axios'
-  import qs from 'qs'
-  export default {
-    head() {
-      return {
-        title: `${this.city}${this.job}月薪工资待遇查询,${this.city}企业招聘${this.city}费用查询-程序员客栈`,
-        meta: [
-          {
-              name: "keywords",
-              content: `${this.city}${this.job}工资,${this.city}${this.job}兼职工资,${this.city}企业${this.job}招聘费用`
-          },
-          {
-              name: "descrption",
-              content: `程序员客栈提供${this.city}${this.job}工资查询,让${this.city}${this.job}程序员能了解自身兼职价值,帮助${this.city}有${this.job}招聘需求的企业利用合理的费用找到合适的人才!`
-          }
-        ]
+export default {
+  head() {
+    return {
+      title: `${this.city}${this.job}月薪工资待遇查询,${this.city}企业招聘${this.job}费用查询-程序员客栈`,
+      meta: [
+        {
+          name: "keywords",
+          content: `${this.city}${this.job}工资,${this.city}${this.job}兼职工资,${this.city}企业${this.job}招聘费用`
+        },
+        {
+          name: "descrption",
+          content: `程序员客栈提供${this.city}${this.job}工资查询,让${this.city}${this.job}程序员能了解自身兼职价值,帮助${this.city}有${this.job}招聘需求的企业利用合理的费用找到合适的人才!`
+        }
+      ]
+    };
+  },
+  async asyncData ({ $axios, req, res }) {
+    // 请检查您是否在服务器端
+    // 使用 req 和 res
+    console.log(req)
+    if (process.server) {
+      const path = req.url
+      const cityJob = path.split('/')[2]
+      const city = cityJob.split('-')[0]
+      const job = cityJob.split('-')[1]
+      let params = {
+        job: job,
+        city: city
       };
-    },
-      async asyncData ({ $axios, req, res }) {
-          // 请检查您是否在服务器端
-          // 使用 req 和 res
-          console.log(req)
-          if (process.server) {
-              const path = req.url
-              const cityJob = path.split('/')[2]
-              const city = cityJob.split('-')[0]
-              const job = cityJob.split('-')[1]
-              let params = {
-                  job: job,
-                  city: city
-              };
-              let res = await $axios.$post("/api/salary/search_info", params);
+      let res = await $axios.$post("/api/salary/search_info", params);
 
-              const jobList = res.data.jobSort || [];
-              const experience = res.data.experience || [];
+      const jobList = res.data.jobSort || [];
+      const experience = res.data.experience || [];
 
 
-              for (let i = 0; i < jobList.length; i++) {
-                  jobList[i].salary = parseInt(jobList[i].salary);
-              }
-              for (let i = 0; i < experience.length; i++) {
-                  experience[i].salary = parseInt(experience[i].salary);
-              }
-              return {
-                  host: req.headers.host,
-                  job: res.data.info.job,
-                  city: res.data.info.city,
-                  avg_salary: res.data.info.avg_salary,
-                  max_salary: res.data.info.max_salary,
-                  min_salary: res.data.info.min_salary,
-                  jobList: jobList,
-                  experience: experience,
-                  allCitySalary: res.data.allCitySalary || [],
-                  salaryRange: res.data.salaryRange || [],
-                  screenWidth: 1366,
-              }
-          }
-
-          return {}
-      },
-    data() {
+      for (let i = 0; i < jobList.length; i++) {
+        jobList[i].salary = parseInt(jobList[i].salary);
+      }
+      for (let i = 0; i < experience.length; i++) {
+        experience[i].salary = parseInt(experience[i].salary);
+      }
       return {
-        screenWidth: 0,
-        job: "",
-        city: "",
-        avg_salary: 0,
-        max_salary: 0,
-        min_salary: 0,
-        jobList: [],
-        experience: [],
-        allCitySalary: [],
-        salaryRange: []
-      };
-    },
-    mounted() {
-      this.screenWidth = window.screen.width;
-      this.$nextTick(() => {
-        this.getData();
-        // this.getRangeChart();
-        // this.getIndustryChart();
-        // this.getExperienceChart();
-        // this.getEducationChart()
-        // this.getCityChart()
-      });
-    },
-    methods: {
-      async getData() {
-        const path = window.location.pathname
-        const cityJob = path.split('/')[2]
-        this.city = cityJob.split('-')[0]
-        this.job = cityJob.split('-')[1]
-        let params = {
-          job: this.job,
-          city: this.city
-        };
-        let res = await this.$axios.$post("/api/salary/search_info", params);
-        this.job = res.data.info.job;
-        this.city = res.data.info.city;
-        this.avg_salary = res.data.info.avg_salary;
-        this.max_salary = res.data.info.max_salary;
-        this.min_salary = res.data.info.min_salary;
-        this.jobList = res.data.jobSort || [];
-        this.experience = res.data.experience || [];
-        this.allCitySalary = res.data.allCitySalary || [];
-        this.salaryRange = res.data.salaryRange || [];
+        job: res.data.info.job,
+        city: res.data.info.city,
+        avg_salary: res.data.info.avg_salary,
+        max_salary: res.data.info.max_salary,
+        min_salary: res.data.info.min_salary,
+        jobList: jobList,
+        experience: experience,
+        allCitySalary: res.data.allCitySalary || [],
+        salaryRange: res.data.salaryRange || [],
+      }
+    }
 
-        for (let i = 0; i < this.jobList.length; i++) {
-          this.jobList[i].salary = parseInt(this.jobList[i].salary);
-        }
-        for (let i = 0; i < this.experience.length; i++) {
-          this.experience[i].salary = parseInt(this.experience[i].salary);
+    return {}
+  },
+  data() {
+    return {
+      screenWidth: 0,
+      job: "",
+      city: "",
+      avg_salary: 0,
+      max_salary: 0,
+      min_salary: 0,
+      jobList: [],
+      experience: [],
+      allCitySalary: [],
+      salaryRange: []
+    };
+  },
+  mounted() {
+    this.screenWidth = window.screen.width;
+    this.$nextTick(() => {
+      this.getData();
+      // this.getRangeChart();
+      // this.getIndustryChart();
+      // this.getExperienceChart();
+      // this.getEducationChart()
+      // this.getCityChart()
+    });
+  },
+  methods: {
+    async getData() {
+      // const path = window.location.pathname
+      // const cityJob = path.split('/')[2]
+      // this.city = cityJob.split('-')[0]
+      // this.job = cityJob.split('-')[1]
+      // let params = {
+      //   job: this.job,
+      //   city: this.city
+      // };
+      // let res = await this.$axios.$post("/api/salary/search_info", params);
+      // this.job = res.data.info.job;
+      // this.city = res.data.info.city;
+      // this.avg_salary = res.data.info.avg_salary;
+      // this.max_salary = res.data.info.max_salary;
+      // this.min_salary = res.data.info.min_salary;
+      // this.jobList = res.data.jobSort || [];
+      // this.experience = res.data.experience || [];
+      // this.allCitySalary = res.data.allCitySalary || [];
+      // this.salaryRange = res.data.salaryRange || [];
+
+      // for (let i = 0; i < this.jobList.length; i++) {
+      //   this.jobList[i].salary = parseInt(this.jobList[i].salary);
+      // }
+      // for (let i = 0; i < this.experience.length; i++) {
+      //   this.experience[i].salary = parseInt(this.experience[i].salary);
+      // }
+      const sortJob = this.jobList;
+      const sortExperience = this.experience;
+      const allSalaryRange = this.salaryRange;
+      const chart = new G2.Chart({
+        container: "range-chart",
+        forceFit: true,
+        height: 300
+      });
+      chart.source(allSalaryRange, {
+        percent: {
+          formatter: function formatter(val) {
+            val = val * 100 + "%";
+            return val;
+          }
         }
-        const sortJob = this.jobList;
-        const sortExperience = this.experience;
-        const allSalaryRange = this.salaryRange;
-        const chart = new G2.Chart({
-          container: "range-chart",
-          forceFit: true,
-          height: 300
-        });
-        chart.source(allSalaryRange, {
-          percent: {
-            formatter: function formatter(val) {
-              val = val * 100 + "%";
-              return val;
+      });
+      chart.coord("theta", {
+          radius: 0.75
+      });
+      chart.tooltip({
+        showTitle: false,
+        itemTpl:
+            '<li><span style="background-color:{color};" class="g2-tooltip-marker"></span>{name}: {value}</li>'
+      });
+      chart
+        .intervalStack()
+        .position("percent")
+        .color("item")
+        .label("percent", {
+            formatter: function formatter(val, item) {
+                return item.point.item + ": " + val;
             }
-          }
-        });
-        chart.coord("theta", {
-            radius: 0.75
+        })
+        .tooltip("item*percent", function(item, percent) {
+            percent = percent * 100 + "%";
+            return {
+                name: item,
+                value: percent
+            };
+        })
+        .style({
+            lineWidth: 1,
+            stroke: "#fff"
         });
-        chart.tooltip({
-          showTitle: false,
-          itemTpl:
-              '<li><span style="background-color:{color};" class="g2-tooltip-marker"></span>{name}: {value}</li>'
-        });
-        chart
-          .intervalStack()
-          .position("percent")
-          .color("item")
-          .label("percent", {
-              formatter: function formatter(val, item) {
-                  return item.point.item + ": " + val;
-              }
-          })
-          .tooltip("item*percent", function(item, percent) {
-              percent = percent * 100 + "%";
-              return {
-                  name: item,
-                  value: percent
-              };
-          })
-          .style({
-              lineWidth: 1,
-              stroke: "#fff"
-          });
-        chart.render();
+      chart.render();
 
-        // const chart1 = new G2.Chart({
-        //   container: "industry-chart",
-        //   forceFit: true,
-        //   height: 300
-        // });
-        // chart1.source(sortJob);
-        // chart1.scale("salary", {
-        //   min: 0
-        // });
-        // chart1.scale("job", {
-        //   range: [0, 1]
-        // });
-        // chart1.tooltip({
-        //   crosshairs: {
-        //     type: "line"
-        //   }
-        // });
-        // chart1.line().position("job*salary");
-        // chart1
-        //   .point()
-        //   .position("job*salary")
-        //   .size(4)
-        //   .shape("circle")
-        //   .style({
-        //     stroke: "#fff",
-        //     lineWidth: 1
-        //   });
-        // chart1.render();
+      // const chart1 = new G2.Chart({
+      //   container: "industry-chart",
+      //   forceFit: true,
+      //   height: 300
+      // });
+      // chart1.source(sortJob);
+      // chart1.scale("salary", {
+      //   min: 0
+      // });
+      // chart1.scale("job", {
+      //   range: [0, 1]
+      // });
+      // chart1.tooltip({
+      //   crosshairs: {
+      //     type: "line"
+      //   }
+      // });
+      // chart1.line().position("job*salary");
+      // chart1
+      //   .point()
+      //   .position("job*salary")
+      //   .size(4)
+      //   .shape("circle")
+      //   .style({
+      //     stroke: "#fff",
+      //     lineWidth: 1
+      //   });
+      // chart1.render();
 
-        // const chart2 = new G2.Chart({
-        //   container: "experience-chart",
-        //   forceFit: true,
-        //   height: 300
-        // });
-        // chart2.source(sortExperience);
-        // chart2.scale("salary", {
-        //   min: 0
-        // });
-        // chart2.scale("experience", {
-        //   range: [0, 1]
-        // });
-        // chart2.tooltip({
-        //   crosshairs: {
-        //     type: "line"
-        //   }
-        // });
-        // chart2.line().position("experience*salary");
-        // chart2
-        //   .point()
-        //   .position("experience*salary")
-        //   .size(4)
-        //   .shape("circle")
-        //   .style({
-        //     stroke: "#fff",
-        //     lineWidth: 1
-        //   });
-        // chart2.render();
-      }
+      // const chart2 = new G2.Chart({
+      //   container: "experience-chart",
+      //   forceFit: true,
+      //   height: 300
+      // });
+      // chart2.source(sortExperience);
+      // chart2.scale("salary", {
+      //   min: 0
+      // });
+      // chart2.scale("experience", {
+      //   range: [0, 1]
+      // });
+      // chart2.tooltip({
+      //   crosshairs: {
+      //     type: "line"
+      //   }
+      // });
+      // chart2.line().position("experience*salary");
+      // chart2
+      //   .point()
+      //   .position("experience*salary")
+      //   .size(4)
+      //   .shape("circle")
+      //   .style({
+      //     stroke: "#fff",
+      //     lineWidth: 1
+      //   });
+      // chart2.render();
     }
-  };
+  }
+};
 </script>
 
 <style lang="scss" scoped>

+ 67 - 26
pages/salary/index.vue

@@ -147,6 +147,49 @@ export default {
       searchCity: ""
     };
   },
+  async asyncData ({ $axios, req, res }) {
+    // 请检查您是否在服务器端
+    // 使用 req 和 res
+    console.log(req)
+    if (process.server) {
+      let res = await $axios.$post("/api/salary/index_info");
+      const cityChart = res.data.sortOfCity;
+      const jobChart = res.data.sortOfJob;
+      const jobList = res.data.allJobType;
+      const city = res.data.sortOfCity[0].city;
+      const citySalary = res.data.sortOfCity[0].salary;
+      const job = res.data.sortOfJob[0].job;
+      const jobSalary = res.data.sortOfJob[0].salary;
+      const cityTick = res.data.cityTick;
+      const jobTick = res.data.jobTick;
+      const cityList = res.data.cityList;
+      const searchJob = res.data.allJobType[0].job_slug;
+      const searchCity = res.data.cityList[0].city_slug;
+
+      for (let i = 0; i < cityChart.length; i++) {
+        cityChart[i].salary = parseInt(cityChart[i].salary);
+      }
+      for (let i = 0; i < jobChart.length; i++) {
+        jobChart[i].salary = parseInt(jobChart[i].salary);
+      }
+      return {
+        cityChart,
+        jobChart,
+        jobList,
+        city,
+        citySalary,
+        cityList,
+        job,
+        jobSalary,
+        cityTick,
+        jobTick,
+        searchJob,
+        searchCity
+      }
+    }
+
+    return {}
+  },
   mounted() {
     this.screenWidth = window.screen.width;
     this.$nextTick(() => {
@@ -155,29 +198,29 @@ export default {
   },
   methods: {
     async getData() {
-      let res = await this.$axios.$post("/api/salary/index_info");
-
-      this.cityChart = res.data.sortOfCity;
-      this.jobChart = res.data.sortOfJob;
-      this.jobList = res.data.allJobType;
-      this.city = res.data.sortOfCity[0].city;
-      this.citySalary = res.data.sortOfCity[0].salary;
-      this.job = res.data.sortOfJob[0].job;
-      this.jobSalary = res.data.sortOfJob[0].salary;
-      this.cityTick = res.data.cityTick;
-      this.jobTick = res.data.jobTick;
-      this.cityList = res.data.cityList;
-      this.searchJob = res.data.allJobType[0].job_slug;
-      this.searchCity = res.data.cityList[0].city_slug;
-
-      console.log(this.cityList);
-
-      for (let i = 0; i < this.cityChart.length; i++) {
-        this.cityChart[i].salary = parseInt(this.cityChart[i].salary);
-      }
-      for (let i = 0; i < this.jobChart.length; i++) {
-        this.jobChart[i].salary = parseInt(this.jobChart[i].salary);
-      }
+      // let res = await this.$axios.$post("/api/salary/index_info");
+
+      // this.cityChart = res.data.sortOfCity;
+      // this.jobChart = res.data.sortOfJob;
+      // this.jobList = res.data.allJobType;
+      // this.city = res.data.sortOfCity[0].city;
+      // this.citySalary = res.data.sortOfCity[0].salary;
+      // this.job = res.data.sortOfJob[0].job;
+      // this.jobSalary = res.data.sortOfJob[0].salary;
+      // this.cityTick = res.data.cityTick;
+      // this.jobTick = res.data.jobTick;
+      // this.cityList = res.data.cityList;
+      // this.searchJob = res.data.allJobType[0].job_slug;
+      // this.searchCity = res.data.cityList[0].city_slug;
+
+      // console.log(this.cityList);
+
+      // for (let i = 0; i < this.cityChart.length; i++) {
+      //   this.cityChart[i].salary = parseInt(this.cityChart[i].salary);
+      // }
+      // for (let i = 0; i < this.jobChart.length; i++) {
+      //   this.jobChart[i].salary = parseInt(this.jobChart[i].salary);
+      // }
 
       //开发者薪资排行城市TOP10
       const chart1 = new G2.Chart({
@@ -225,9 +268,7 @@ export default {
       // this.$router.push(
       //   "/salary/detail?job=" + this.searchJob + "&city=" + this.searchCity
       // );
-      this.$router.push(
-        `/salary/${this.searchCity}-${this.searchJob}/`
-      );
+      window.location.href = `/salary/${this.searchCity}-${this.searchJob}/`.replace(/c%23/, "c#").replace(/c%24/, "c++");
     },
     inVal(val) {
       this.searchJob = val;

+ 1 - 1
plugins/nuxtAxios.js

@@ -9,7 +9,7 @@ export default function({ $axios, redirect, req, ...args }) {
 			config.headers['Content-Type'] = 'application/x-www-form-urlencoded';
 		}
 		console.log('Before, making request to ', config.url, config.baseURL);
-		const referer = req.headers.host || (config.headers.common && config.headers.common.referer);
+		const referer = (req && req.headers && req.headers.host) || (config.headers.common && config.headers.common.referer);
 		const baseUrl = /https?/.test(referer) ? referer : 'https://' + referer;
 		const url = config.url;
 		// if (referer && !(/https?/.test(url))) {