lrf402788946 5 vuotta sitten
vanhempi
commit
7be85cece2

+ 2 - 1
src/components/corp.vue

@@ -7,7 +7,7 @@
         </div>
       </el-col>
       <el-col :span="24" class="menu">
-        <menuInfo :backColor="backColor"></menuInfo>
+        <menuInfo :menuList="menuList" :backColor="backColor"></menuInfo>
       </el-col>
       <el-col :span="24" class="main">
         <div class="w_1200">
@@ -34,6 +34,7 @@ export default {
     backColor: null, //导航菜单背景颜色
     corpDetails: null, //详情企业
     jobslist: null,
+    menuList: null,
   },
   components: {
     top, //头部

+ 2 - 1
src/components/jobinfo.vue

@@ -7,7 +7,7 @@
         </div>
       </el-col>
       <el-col :span="24" class="menu">
-        <menuInfo :backColor="backColor"></menuInfo>
+        <menuInfo :menuList="menuList" :backColor="backColor"></menuInfo>
       </el-col>
       <el-col :span="24" class="main">
         <div class="w_1200">
@@ -34,6 +34,7 @@ export default {
     backColor: null, //导航菜单背景颜色
     jobinfoInfo: null,
     jobslist: null,
+    menuList: null,
   },
   components: {
     top, //头部

+ 3 - 2
src/components/jobs.vue

@@ -7,12 +7,12 @@
         </div>
       </el-col>
       <el-col :span="24" class="menu">
-        <menuInfo :backColor="backColor"></menuInfo>
+        <menuInfo :menuList="menuList" :backColor="backColor"></menuInfo>
       </el-col>
       <el-col :span="24" class="main">
         <div class="w_1200">
           <el-col :span="18">
-            <jobsInfo :jobInfo="jobInfo"></jobsInfo>
+            <jobsInfo :jobInfo="jobInfo" :corpsInfo="corpsInfo"></jobsInfo>
           </el-col>
           <el-col :span="6">
             <corpInfo :corpsInfo="corpsInfo"></corpInfo>
@@ -41,6 +41,7 @@ export default {
     backColor: null, //导航菜单背景颜色
     jobInfo: null, //职位详情
     corpsInfo: null, //企业详情
+    menuList: null,
   },
   components: {
     top, //头部

+ 11 - 0
src/layout/index/menuInfos.vue

@@ -13,6 +13,14 @@
             :router="true"
           >
             <el-menu-item index="/">首页</el-menu-item>
+            <template>
+              <el-submenu index="/jobs">
+                <template slot="title">
+                  {{ jobsMenu.title }}
+                </template>
+                <el-menu-item v-for="(sub, subIndex) in jobsMenu.children" :key="subIndex" :index="sub.path">{{ sub.title }}</el-menu-item>
+              </el-submenu>
+            </template>
             <template v-for="(item, index) in menuList">
               <el-submenu :index="`${index}`" :key="index" v-if="item.type !== 'url' && item.type !== 'content'">
                 <template slot="title">
@@ -34,6 +42,8 @@
 </template>
 
 <script>
+import { masterMenu } from '@/config/jobs-menu';
+
 export default {
   name: 'menuInfos',
   props: {
@@ -43,6 +53,7 @@ export default {
   components: {},
   data: () => ({
     activeIndex1: '1',
+    jobsMenu: masterMenu,
   }),
   created() {},
   computed: {},

+ 10 - 2
src/layout/recuit/corpDetail.vue

@@ -53,7 +53,7 @@
             <el-col class="money" :span="4">
               {{ item.salary ? item.salary.text : '' }}
             </el-col>
-            <el-col :span="4" style="text-align:center;"> 招聘人数:{{ item.job_number | jobNum }} </el-col>
+            <el-col :span="4" style="text-align:center;"> 招聘人数:{{ item.job_number }} </el-col>
             <el-col :span="16"> 招聘专业 : {{ item.zy_req ? item.zy_req : '' }} </el-col>
             <el-col :span="8"> {{ item.xl_req ? item.xl_req : '' }} | {{ item.city ? item.city : '' }} </el-col>
           </el-row>
@@ -74,7 +74,15 @@ export default {
   data: () => ({}),
   created() {},
   computed: {},
-  methods: {},
+  methods: {
+    turnToJobs(id) {
+      let query = {};
+      if (this.origin) query.origin = this.origin;
+      if (this.type) query.type = this.type;
+      query.id = id;
+      this.$router.push({ path: '/jobsDetail', query: query });
+    },
+  },
 };
 </script>
 

+ 2 - 2
src/layout/recuit/jobfairInfo.vue

@@ -56,7 +56,7 @@
                   <el-col class="money" :span="4">
                     {{ item.salary ? item.salary.text : '' }}
                   </el-col>
-                  <el-col :span="4" style="text-align:center;"> 招聘人数:{{ item.job_number | jobNum }} </el-col>
+                  <el-col :span="4" style="text-align:center;"> 招聘人数:{{ item.job_number }} </el-col>
                   <el-col :span="16"> 招聘专业 : {{ item.zy_req ? item.zy_req : '' }} </el-col>
                   <el-col :span="8"> {{ item.xl_req ? item.xl_req : '' }} | {{ item.city ? item.city : '' }} </el-col>
                 </el-row>
@@ -89,7 +89,7 @@ export default {
       if (this.origin) query.origin = this.origin;
       if (this.type) query.type = this.type;
       query.id = id;
-      this.$router.push({ path: '/jobs', query: query });
+      this.$router.push({ path: '/jobsDetail', query: query });
     },
   },
 };

+ 22 - 5
src/layout/recuit/jobinfoInfo.vue

@@ -13,9 +13,9 @@
       <el-col :span="24" class="title">
         <p>{{ jobinfoInfo.title }}</p>
       </el-col>
-      <el-col :span="24" class="date"> 发布时间:{{ jobinfoInfo.date }} </el-col>
+      <el-col :span="24" class="date"> 发布时间:{{ jobinfoInfo | getDate }} </el-col>
       <el-col :span="24" class="content">
-        <p>{{ jobinfoInfo.content }}</p>
+        <p v-html="jobinfoInfo.content"></p>
       </el-col>
       <el-col :span="24" class="zhiwei">
         <h3 style="border-left:5px solid #0457c7;padding:0 10px;">招聘职位</h3>
@@ -29,7 +29,7 @@
             <el-col class="money" :span="4">
               {{ item.salary ? item.salary.text : '' }}
             </el-col>
-            <el-col :span="4" style="text-align:center;"> 招聘人数:{{ item.job_number | jobNum }} </el-col>
+            <el-col :span="4" style="text-align:center;"> 招聘人数:{{ item.job_number }} </el-col>
             <el-col :span="16"> 招聘专业 : {{ item.zy_req ? item.zy_req : '' }} </el-col>
             <el-col :span="8"> {{ item.xl_req ? item.xl_req : '' }} | {{ item.city ? item.city : '' }} </el-col>
           </el-row>
@@ -40,6 +40,7 @@
 </template>
 
 <script>
+import _ from 'lodash';
 export default {
   name: 'jobinfoInfo',
   props: {
@@ -50,7 +51,23 @@ export default {
   data: () => ({}),
   created() {},
   computed: {},
-  methods: {},
+  methods: {
+    turnToJobs(id) {
+      let query = {};
+      if (this.origin) query.origin = this.origin;
+      if (this.type) query.type = this.type;
+      query.id = id;
+      this.$router.push({ path: '/jobsDetail', query: query });
+    },
+  },
+  filters: {
+    getDate(data) {
+      let date = _.get(data, `meta.createdAt`);
+      if (date) date = new Date(date).toLocaleDateString();
+      else date = '';
+      return date;
+    },
+  },
 };
 </script>
 
@@ -73,7 +90,7 @@ p {
 .content {
   padding: 10px 0;
 }
-.content p {
+/deep/.content p p {
   font-size: 16px;
   text-indent: 2rem;
 }

+ 10 - 3
src/layout/recuit/jobsInfo.vue

@@ -23,7 +23,7 @@
             <span style="color:#f40;font-size:18px;">
               <i class="el-icon-coin"></i>
               <!-- {{ jobInfo.salary.text }} -->
-              {{ jobInfo.text }}
+              {{ jobInfo | getSalary }}
             </span>
             <span class="row_icon">
               <i class="el-icon-location"></i>
@@ -44,13 +44,13 @@
         <el-col :span="24" class="miaoshu">
           <h3 style="border-left:5px solid #0457c7;padding:0 10px;">职位描述</h3>
           <el-col :span="24">
-            <p>{{ jobInfo.content }}</p>
+            <p>{{ jobInfo.job_desc }}</p>
           </el-col>
         </el-col>
         <el-col :span="24" class="jieshao">
           <h3 style="border-left:5px solid #0457c7;padding:0 10px;">单位介绍</h3>
           <el-col>
-            <p>{{ jobInfo.intro }}</p>
+            <p>{{ corpsInfo.intro }}</p>
           </el-col>
         </el-col>
         <!-- </span> -->
@@ -60,16 +60,23 @@
 </template>
 
 <script>
+import _ from 'lodash';
 export default {
   name: 'jobInfo',
   props: {
     jobInfo: null,
+    corpsInfo: null,
   },
   components: {},
   data: () => ({}),
   created() {},
   computed: {},
   methods: {},
+  filters: {
+    getSalary(data) {
+      return _.get(data, `salary.text`);
+    },
+  },
 };
 </script>
 

+ 2 - 2
src/layout/recuit/talkInfo.vue

@@ -51,7 +51,7 @@
             <el-col class="money" :span="4">
               {{ item.salary ? item.salary.text : '' }}
             </el-col>
-            <el-col :span="4" style="text-align:center;"> 招聘人数:{{ item.job_number | jobNum }} </el-col>
+            <el-col :span="4" style="text-align:center;"> 招聘人数:{{ item.job_number }} </el-col>
             <el-col :span="16"> 招聘专业 : {{ item.zy_req ? item.zy_req : '' }} </el-col>
             <el-col :span="8"> {{ item.xl_req ? item.xl_req : '' }} | {{ item.city ? item.city : '' }} </el-col>
           </el-row>
@@ -84,7 +84,7 @@ export default {
       if (this.origin) query.origin = this.origin;
       if (this.type) query.type = this.type;
       query.id = id;
-      this.$router.push({ path: '/jobs', query: query });
+      this.$router.push({ path: '/jobsDetail', query: query });
     },
   },
 };

+ 31 - 0
src/store/corp.js

@@ -0,0 +1,31 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  corpBase: corpid => `/api/corp/corps/${corpid}`,
+  corpInfo: corpid => `/api/corp/corps/${corpid}/info`,
+  corpIdentity: corpid => `/api/corp/corps/${corpid}/identity`,
+};
+export const state = () => ({});
+export const mutations = {};
+export const actions = {
+  async getCorp({ state }, { type, data }) {
+    let result;
+    if (type === 'search') {
+      let { corpid } = data;
+      result = await this.$axios.$get(api.corpInfo(corpid));
+    }
+    if (type === 'component') {
+      let { corpid } = data;
+      let base = await this.$axios.$get(api.corpBase(corpid));
+      let info = await this.$axios.$get(api.corpInfo(corpid));
+      let identity = await this.$axios.$get(api.corpIdentity(corpid));
+      result = {
+        data: { ...info.data, ...identity.data, ...base.data },
+        errcode: `${info.errcode}` === '0' && `${identity.errcode}` === '0' && `${base.errcode}` === '0' ? '0' : '1',
+      };
+    }
+    return result;
+  },
+};

+ 2 - 0
src/store/index.js

@@ -10,6 +10,7 @@ import * as posts from './posts';
 import * as linkCor from './link-cor';
 import * as jobfair from './jobfair';
 import * as talk from './talk';
+import * as corp from './corp';
 
 Vue.use(Vuex);
 
@@ -28,5 +29,6 @@ export default new Vuex.Store({
     linkCor: linkCor,
     jobfair: jobfair,
     talk: talk,
+    corp: corp,
   },
 });

+ 107 - 46
src/views/recruit/corp.vue

@@ -1,68 +1,129 @@
 <template>
   <div id="jobs">
-    <corp-detail :info="info" :backColor="backColor" :Color="Color" :corpDetails="corpDetails" :jobslist="jobslist"></corp-detail>
+    <corp-detail :info="site" :menuList="menu" :backColor="backColor" :Color="Color" :corpDetails="corpInfo" :jobslist="jobList"></corp-detail>
   </div>
 </template>
 
 <script>
 import corpDetail from '@/components/corp.vue';
 import { mapActions, mapState } from 'vuex';
+import _ from 'lodash';
 export default {
+  metaInfo() {
+    return {
+      title: this.siteTitle ? this.siteTitle : '就业信息网',
+    };
+  },
   name: 'corp',
   props: {},
   components: {
     corpDetail,
   },
   data: () => ({
-    info: {
-      src: require('@/assets/logo.png'),
-      phone: '0431-12345678',
-      banner: require('@/assets/banner.png'),
-      address: '办公地址:长春市经济技术开发区金川街151号吉林省高等学校毕业生就业指导中心2楼一站式办公大厅',
-      email: '邮编:130012',
-      gongjiao: '公交线路:乘坐120路、227路、20路、260路、80路、130路、281路、154路、190路、125路公交北方市场下车,北方市场南门南行200米。',
-      mobile: '业务咨询电话:0431-84657570 0431-84657571;',
-      date: '办公时间:周一至周五,法定假日不对外办公。',
-      copyright: '吉ICP备09006292号-1 Copyright 2013 版权所有 吉林省高等学校毕业生就业指导中心 All Rights Reserved',
-    },
-    corpDetails: {
-      logo_url: require('@/assets/news.png'),
-      corpname: '不知道',
-      industry: '不知道',
-      scale: '不知道',
-      province: '不知道',
-      city: '不知道',
-      address: '不知道',
-      job_tel: '不知道',
-      job_email: '不知道',
-      reg_capital: '不知道',
-      item: '不知道',
-      intro: '不知道',
-    },
-    jobslist: [
-      {
-        job_name: '测试测试测试',
-        salary: '测试测试测试',
-        job_number: '2',
-        zy_req: '计算机专业',
-        xl_req: '本科及以上',
-        city: '长春市',
-      },
-      {
-        job_name: '测试测试测试',
-        salary: '测试测试测试',
-        job_number: '2',
-        zy_req: '计算机专业',
-        xl_req: '本科及以上',
-        city: '长春市',
-      },
-    ],
+    corpInfo: {},
+    jobList: [],
     backColor: '#0457c7',
     Color: '#0457c7',
+    menu: [],
+    site: {},
+    siteTitle: '',
   }),
-  created() {},
+  async created() {
+    await this.toGetSite(); //获取主站信息
+    await this.loadMenu(); //获取菜单信息
+    this.search();
+  },
   computed: {},
-  methods: {},
+  methods: {
+    ...mapActions(['getSite', 'getMenu', 'getColumn', 'getPosts', 'getCorp']),
+    async search() {
+      if (!this.$route.query.id) return;
+      let result = await this.getCorp({ type: 'component', data: { corpid: this.$route.query.id } });
+      if (`${result.errcode}` === '0') {
+        this.$set(this, 'corpInfo', result.data);
+        this.$set(this.corpInfo, `id`, this.$route.query.id);
+        this.searchJobs();
+      } else {
+        this.$message.error(result.errmsg ? result.errmsg : 'error');
+      }
+    },
+    async searchJobs(query) {
+      let result = await this.getPosts({ type: 'list', data: { corpid: this.$route.query.id, ...query } });
+      if (`${result.errcode}` === '0') {
+        this.$set(this, `jobList`, result.data);
+      }
+    },
+    //站点信息
+    async toGetSite() {
+      let site = sessionStorage.getItem('site');
+      if (!site) {
+        let result = await this.getSite({ type: 'search' });
+        if (result.errcode === 0) {
+          sessionStorage.setItem('site', JSON.stringify(result.data));
+          if (_.get(result.data, `custom`)) {
+            let item = result.custom;
+          }
+          this.$set(this, `site`, result.data);
+          this.$set(this, `siteTitle`, this.site.name);
+        }
+      } else {
+        this.$set(this, `site`, JSON.parse(site));
+        this.$set(this, `siteTitle`, this.site.name);
+        let arr = this.site;
+        if (arr.custom) {
+          let item = arr.custom;
+        }
+      }
+    },
+    //菜单
+    async loadMenu() {
+      let menu = sessionStorage.getItem('menu');
+      if (menu) {
+        this.$set(this, `menu`, JSON.parse(menu));
+        await this.finishedMenu();
+      } else this.toGetMenu();
+    },
+    async toGetMenu() {
+      let result = await this.getMenu({ type: `list` });
+      if (result.errcode === 0) {
+        sessionStorage.setItem('menu', JSON.stringify(result.data));
+        this.$set(this, `menu`, result.data);
+        this.finishedMenu();
+      }
+    },
+    async finishedMenu() {
+      let menus = JSON.parse(JSON.stringify(this.menu));
+      for (const item of menus) {
+        if (item.type === 'content') {
+          item.path = `/detail/${item.content_id}`;
+        } else if (item.type !== 'url') {
+          let res = await this.completeMenu(item);
+          item.children = res;
+        }
+      }
+      this.$set(this, `menu`, menus);
+    },
+    async completeMenu(item) {
+      let result = await this.getColumn({
+        type: `list`,
+        data: { parent_id: item.id },
+      });
+      if (result.errcode === 0) {
+        let columns = result.data;
+        for (const col of columns) {
+          if (col.type === 'content') {
+            col.path = `/detail/${col.content_id}`;
+          } else if (col.type !== 'url') {
+            col.path = `/newsList/menu/${col.id}?title=${col.title}`;
+            if (col.parent.includes('党员')) {
+              col.path = `/memberList/menu/${col.id}?title=${col.title}`;
+            }
+          }
+        }
+        return columns;
+      }
+    },
+  },
 };
 </script>
 

+ 113 - 37
src/views/recruit/jobinfo.vue

@@ -1,59 +1,135 @@
 <template>
   <div id="jobinfo">
-    <jobinfo-detail :info="info" :backColor="backColor" :Color="Color" :jobinfoInfo="jobinfoInfo" :jobslist="jobslist"></jobinfo-detail>
+    <jobinfo-detail :info="site" :menuList="menu" :backColor="backColor" :Color="Color" :jobinfoInfo="jobInfo" :jobslist="jobList"></jobinfo-detail>
   </div>
 </template>
 
 <script>
 import jobinfoDetail from '@/components/jobinfo.vue';
 import { mapActions, mapState } from 'vuex';
+import _ from 'lodash';
 export default {
+  metaInfo() {
+    return {
+      title: this.siteTitle ? this.siteTitle : '就业信息网',
+    };
+  },
   name: 'jobinfo',
   props: {},
   components: {
     jobinfoDetail,
   },
   data: () => ({
-    info: {
-      src: require('@/assets/logo.png'),
-      phone: '0431-12345678',
-      banner: require('@/assets/banner.png'),
-      address: '办公地址:长春市经济技术开发区金川街151号吉林省高等学校毕业生就业指导中心2楼一站式办公大厅',
-      email: '邮编:130012',
-      gongjiao: '公交线路:乘坐120路、227路、20路、260路、80路、130路、281路、154路、190路、125路公交北方市场下车,北方市场南门南行200米。',
-      mobile: '业务咨询电话:0431-84657570 0431-84657571;',
-      date: '办公时间:周一至周五,法定假日不对外办公。',
-      copyright: '吉ICP备09006292号-1 Copyright 2013 版权所有 吉林省高等学校毕业生就业指导中心 All Rights Reserved',
-    },
-    jobinfoInfo: {
-      title: '标题',
-      date: '2019-12-04',
-      content: '介绍',
-    },
-    jobslist: [
-      {
-        job_name: '测试测试测试',
-        salary: '测试测试测试',
-        job_number: '2',
-        zy_req: '计算机专业',
-        xl_req: '本科及以上',
-        city: '长春市',
-      },
-      {
-        job_name: '测试测试测试',
-        salary: '测试测试测试',
-        job_number: '2',
-        zy_req: '计算机专业',
-        xl_req: '本科及以上',
-        city: '长春市',
-      },
-    ],
     backColor: '#0457c7',
     Color: '#0457c7',
+    jobInfo: {},
+    jobList: [],
+    menu: [],
+    site: {},
+    siteTitle: '',
   }),
-  created() {},
+  async created() {
+    await this.toGetSite(); //获取主站信息
+    await this.loadMenu(); //获取菜单信息
+    this.search();
+  },
   computed: {},
-  methods: {},
+  methods: {
+    ...mapActions(['getSite', 'getMenu', 'getColumn', 'getPosts', 'getJobInfo']),
+    async search() {
+      //1直接拿着参数发送请求
+      let result = await this.getJobInfo({ type: 'search', data: { id: this.$route.query.id } });
+      if (`${result.errcode}` === '0') {
+        //给this=>vue的实例下在中的list属性,赋予result.data的值
+        this.$set(this, `jobInfo`, result.data);
+        this.searchJobs();
+      } else {
+        this.$message.error(result.errmsg ? result.errmsg : 'error');
+      }
+    },
+    async searchJobs() {
+      let result;
+      let jobIds = this.jobInfo.jobs.length > 0 ? this.jobInfo.jobs : [];
+      let jobList = [];
+      for (const item of jobIds) {
+        result = await this.postOperation({ type: 'search', data: { id: item } });
+        if (`${result.errcode}` === '0') {
+          jobList.push(result.data);
+        }
+      }
+      this.$set(this, `jobList`, jobList);
+    },
+    //站点信息
+    async toGetSite() {
+      let site = sessionStorage.getItem('site');
+      if (!site) {
+        let result = await this.getSite({ type: 'search' });
+        if (result.errcode === 0) {
+          sessionStorage.setItem('site', JSON.stringify(result.data));
+          if (_.get(result.data, `custom`)) {
+            let item = result.custom;
+          }
+          this.$set(this, `site`, result.data);
+          this.$set(this, `siteTitle`, this.site.name);
+        }
+      } else {
+        this.$set(this, `site`, JSON.parse(site));
+        this.$set(this, `siteTitle`, this.site.name);
+        let arr = this.site;
+        if (arr.custom) {
+          let item = arr.custom;
+        }
+      }
+    },
+    //菜单
+    async loadMenu() {
+      let menu = sessionStorage.getItem('menu');
+      if (menu) {
+        this.$set(this, `menu`, JSON.parse(menu));
+        await this.finishedMenu();
+      } else this.toGetMenu();
+    },
+    async toGetMenu() {
+      let result = await this.getMenu({ type: `list` });
+      if (result.errcode === 0) {
+        sessionStorage.setItem('menu', JSON.stringify(result.data));
+        this.$set(this, `menu`, result.data);
+        this.finishedMenu();
+      }
+    },
+    async finishedMenu() {
+      let menus = JSON.parse(JSON.stringify(this.menu));
+      for (const item of menus) {
+        if (item.type === 'content') {
+          item.path = `/detail/${item.content_id}`;
+        } else if (item.type !== 'url') {
+          let res = await this.completeMenu(item);
+          item.children = res;
+        }
+      }
+      this.$set(this, `menu`, menus);
+    },
+    async completeMenu(item) {
+      let result = await this.getColumn({
+        type: `list`,
+        data: { parent_id: item.id },
+      });
+      if (result.errcode === 0) {
+        let columns = result.data;
+        for (const col of columns) {
+          if (col.type === 'content') {
+            col.path = `/detail/${col.content_id}`;
+          } else if (col.type !== 'url') {
+            col.path = `/newsList/menu/${col.id}?title=${col.title}`;
+            if (col.parent.includes('党员')) {
+              col.path = `/memberList/menu/${col.id}?title=${col.title}`;
+            }
+          }
+        }
+        return columns;
+      }
+    },
+  },
 };
 </script>
 

+ 110 - 14
src/views/recruit/jobs.vue

@@ -1,13 +1,19 @@
 <template>
   <div id="jobs">
-    <jobs-detail :info="info" :backColor="backColor" :Color="Color" :jobInfo="jobInfo" :corpsInfo="corpsInfo"></jobs-detail>
+    <jobs-detail :info="site" :menuList="menu" :backColor="backColor" :Color="Color" :jobInfo="jobInfo" :corpsInfo="corpInfo"></jobs-detail>
   </div>
 </template>
 
 <script>
 import jobsDetail from '@/components/jobs.vue';
 import { mapActions, mapState } from 'vuex';
+import _ from 'lodash';
 export default {
+  metaInfo() {
+    return {
+      title: this.siteTitle ? this.siteTitle : '就业信息网',
+    };
+  },
   name: 'jobs',
   props: {},
   components: {
@@ -25,17 +31,7 @@ export default {
       date: '办公时间:周一至周五,法定假日不对外办公。',
       copyright: '吉ICP备09006292号-1 Copyright 2013 版权所有 吉林省高等学校毕业生就业指导中心 All Rights Reserved',
     },
-    jobInfo: {
-      job_name: 'web',
-      text: '1-2k/月',
-      city: '不知道',
-      xl_req: '不知道',
-      job_tag: '不知道',
-      welfare: '不知道',
-      end_date: '不知道',
-      content: '不知道',
-      intro: '不知道',
-    },
+    jobInfo: {},
     corpsInfo: {
       logo_url: require('@/assets/banner.png'),
       corpname: '不知道',
@@ -43,12 +39,112 @@ export default {
       address: '不知道',
       tel: '不知道',
     },
+    corpInfo: {},
     backColor: '#0457c7',
     Color: '#0457c7',
+    menu: [],
+    site: {},
+    siteTitle: '',
   }),
-  created() {},
+  async created() {
+    await this.toGetSite(); //获取主站信息
+    await this.loadMenu(); //获取菜单信息
+    this.search();
+  },
   computed: {},
-  methods: {},
+  methods: {
+    ...mapActions(['getSite', 'getMenu', 'getColumn', 'getPosts', 'getCorp']),
+    async search() {
+      let result = await this.getPosts({ type: 'fetch', data: { id: this.$route.query.id } });
+      if (`${result.errcode}` === '0') {
+        //给this=>vue的实例下在中的list属性,赋予result.data的值
+        this.$set(this, `jobInfo`, result.data);
+        this.searchCorpInfo(this.jobInfo.corpid);
+      } else {
+        this.$message.error(result.errmsg ? result.errmsg : 'error');
+      }
+    },
+    async searchCorpInfo(corpid) {
+      let result = await this.getCorp({ type: 'component', data: { corpid: corpid } });
+      if (`${result.errcode}` === '0') {
+        this.$set(this, 'corpInfo', result.data);
+        // this.$set(this.corpInfo, `id`, this.info.corpid);
+        // this.$set(this.corpInfo, `corpname`, this.info.corpname);
+      } else {
+        this.$message.error(result.errmsg ? result.errmsg : 'error');
+      }
+    },
+    //站点信息
+    async toGetSite() {
+      let site = sessionStorage.getItem('site');
+      if (!site) {
+        let result = await this.getSite({ type: 'search' });
+        if (result.errcode === 0) {
+          sessionStorage.setItem('site', JSON.stringify(result.data));
+          if (_.get(result.data, `custom`)) {
+            let item = result.custom;
+          }
+          this.$set(this, `site`, result.data);
+          this.$set(this, `siteTitle`, this.site.name);
+        }
+      } else {
+        this.$set(this, `site`, JSON.parse(site));
+        this.$set(this, `siteTitle`, this.site.name);
+        let arr = this.site;
+        if (arr.custom) {
+          let item = arr.custom;
+        }
+      }
+    },
+    //菜单
+    async loadMenu() {
+      let menu = sessionStorage.getItem('menu');
+      if (menu) {
+        this.$set(this, `menu`, JSON.parse(menu));
+        await this.finishedMenu();
+      } else this.toGetMenu();
+    },
+    async toGetMenu() {
+      let result = await this.getMenu({ type: `list` });
+      if (result.errcode === 0) {
+        sessionStorage.setItem('menu', JSON.stringify(result.data));
+        this.$set(this, `menu`, result.data);
+        this.finishedMenu();
+      }
+    },
+    async finishedMenu() {
+      let menus = JSON.parse(JSON.stringify(this.menu));
+      for (const item of menus) {
+        if (item.type === 'content') {
+          item.path = `/detail/${item.content_id}`;
+        } else if (item.type !== 'url') {
+          let res = await this.completeMenu(item);
+          item.children = res;
+        }
+      }
+      this.$set(this, `menu`, menus);
+    },
+    async completeMenu(item) {
+      let result = await this.getColumn({
+        type: `list`,
+        data: { parent_id: item.id },
+      });
+      if (result.errcode === 0) {
+        let columns = result.data;
+        for (const col of columns) {
+          if (col.type === 'content') {
+            col.path = `/detail/${col.content_id}`;
+          } else if (col.type !== 'url') {
+            col.path = `/newsList/menu/${col.id}?title=${col.title}`;
+            if (col.parent.includes('党员')) {
+              col.path = `/memberList/menu/${col.id}?title=${col.title}`;
+            }
+          }
+        }
+        return columns;
+      }
+    },
+  },
 };
 </script>