Selaa lähdekoodia

Merge branch 'master' of http://git.cc-lotus.info/service-platform/web-website

guhongwei 5 vuotta sitten
vanhempi
commit
70236a56f7

+ 143 - 0
src/components/personnel/personnelexpert.vue

@@ -0,0 +1,143 @@
+<template>
+  <div id="policy">
+    <el-row>
+      <el-col :span="24" class="top">
+        <top></top>
+      </el-col>
+      <el-col :span="24" class="logo">
+        <div class="w_1200">
+          <logo :info="info"></logo>
+        </div>
+      </el-col>
+      <el-col :span="24" class="menu">
+        <div class="w_1200">
+          <menuInfo></menuInfo>
+        </div>
+      </el-col>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="5" class="fenlei">
+            <el-col :span="24" class="leftTop">
+              <mainMenu :liebiaoList="liebiaoList" v-on="$listeners"></mainMenu>
+            </el-col>
+            <el-col :span="24" class="leftDiao">
+              <examine></examine>
+            </el-col>
+          </el-col>
+          <el-col :span="19" class="rightcont">
+            <rightcontzj :policyInfo="policyInfo"></rightcontzj>
+          </el-col>
+        </div>
+      </el-col>
+      <el-col :span="24" class="foot">
+        <div class="w_1200">
+          <foot :info="info"></foot>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/index/top.vue';
+import logo from '@/layout/index/logo.vue';
+import menuInfo from '@/layout/index/menuInfo.vue';
+import foot from '@/layout/index/foot.vue';
+import mainMenu from '@/layout/personnel/mainMenu.vue';
+import rightcontzj from '@/layout/personnel/rightcontzj.vue';
+import examine from '@/layout/personCenter/question.vue';
+export default {
+  name: 'policy',
+  props: {
+    info: null, //站点信息
+    liebiaoList: null,
+    columnName: null, //栏目标题
+    contentList: null, //内容
+    total: null,
+    display: { type: String, default: 'list' },
+    columnTitle: null, //信息详情头部栏目标题
+    policyInfo: null, //信息详情
+  },
+  components: {
+    top, //头部
+    logo, //logo
+    menuInfo, //导航
+    foot, //底部
+    mainMenu, //左边分类
+
+    rightcontzj,
+    examine,
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    clickList({ id }) {
+      console.log(id);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.top {
+  height: 40px;
+  overflow: hidden;
+  background-color: rgba(11, 58, 125, 0.8);
+}
+.logo {
+  height: 200px;
+  overflow: hidden;
+}
+.menu {
+  height: 70px;
+  overflow: hidden;
+}
+.main {
+  min-height: 420px;
+  overflow: hidden;
+  margin: 10px 0;
+}
+.leftDiao {
+  background: #fff;
+  height: 370px;
+  overflow: hidden;
+}
+.leftTop {
+  background: #fff;
+  height: 360;
+  overflow: hidden;
+  margin: 0 0 10px 0;
+}
+.main .fenlei {
+  float: left;
+  width: 240px;
+  min-height: 720px;
+  margin: 0 10px 0 0;
+  overflow: hidden;
+}
+.main .rightcont {
+  float: left;
+  width: 950px;
+  min-height: 740px;
+  overflow: hidden;
+  background-color: #fff;
+}
+.main .link {
+  float: left;
+  width: 100%;
+  height: 100px;
+  overflow: hidden;
+  background-color: #fff;
+}
+.foot {
+  float: left;
+  width: 100%;
+  height: 120px;
+  overflow: hidden;
+}
+</style>

+ 16 - 6
src/layout/personnel/mainInfo.vue

@@ -48,20 +48,26 @@
           </el-tab-pane>
           <el-tab-pane label="找专家" name="third">
             <el-table :data="zhuanjiaData" stripe style="width: 100%">
-              <el-table-column prop="name" label="姓名" align="center"> </el-table-column>
+              <el-table-column label="姓名" align="center">
+                <template slot-scope="scoped">
+                  <el-tooltip effect="dark" content="点击显示详情" placement="left">
+                    <el-col :span="24" @click.native="clickDetailzj(scoped.row)">{{ scoped.row.name }}</el-col>
+                  </el-tooltip>
+                </template>
+              </el-table-column>
               <el-table-column prop="gender" label="性别" align="center"> </el-table-column>
-              <el-table-column prop="birth" label="年龄" align="center"> </el-table-column>
-              <el-table-column prop="technical_actual" label="职称" align="center"> </el-table-column>
+              <el-table-column prop="nation" label="民族" align="center"> </el-table-column>
+              <el-table-column prop="birth" label="出生年月" align="center"> </el-table-column>
+              <el-table-column prop="eduback" label="学历" align="center"> </el-table-column>
+              <el-table-column prop="school" label="毕业院校" align="center"> </el-table-column>
               <el-table-column prop="position" label="职务" align="center"> </el-table-column>
-              <el-table-column prop="field" label="可咨询领域" align="center"> </el-table-column>
             </el-table>
           </el-tab-pane>
           <el-tab-pane label="找参谋" name="fourth">
             <el-table :data="canmoData" stripe style="width: 100%">
               <el-table-column prop="name" label="名称" align="center"> </el-table-column>
-              <el-table-column prop="state" label="信息类型" align="center"> </el-table-column>
+              <el-table-column prop="infotype" label="信息类型" align="center"> </el-table-column>
               <el-table-column prop="user_name" label="发布人" align="center"> </el-table-column>
-              <el-table-column prop="date" label="发布时间" align="center"> </el-table-column>
             </el-table>
           </el-tab-pane>
           <el-tab-pane label="找合作" name="fifth">找合作</el-tab-pane>
@@ -98,6 +104,10 @@ export default {
     clickDetailgz(row) {
       this.$emit('detailgz', { data: row });
     },
+
+    clickDetailzj(row) {
+      this.$emit('detailzj', { data: row });
+    },
   },
 };
 </script>

+ 165 - 0
src/layout/personnel/rightcontzj.vue

@@ -0,0 +1,165 @@
+<template>
+  <div id="rightcont">
+    <el-col class="zhengce">
+      <el-col class="tittop">
+        <el-col class="tittxt">专家详情</el-col>
+      </el-col>
+      <el-col class="titleimage">
+        <el-col :span="24">
+          <el-col :span="8" class="bgcolor">
+            <el-col class="images" :span="12">
+              <el-image style="width:117px;height:117px" :src="policyInfo.imgpath"></el-image>
+            </el-col>
+            <el-col :span="12" class="bgcolorWenzi">
+              <p class="zjname">{{ policyInfo.name }}</p>
+              <p>性别:{{ policyInfo.gender }}</p>
+              <p>民族:{{ policyInfo.nation }}</p>
+              <p>职称:{{ policyInfo.technical_actual }}</p>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+
+      <el-row class="info">
+        <el-col :span="24" class="xingqu">
+          <el-col :span="24" class="infoTop"> </el-col>
+          <el-col :span="24">
+            <el-col :span="24" class="context">
+              <p>出生日期:{{ policyInfo.birth }}</p>
+              <p>证件类型:{{ policyInfo.cardtype }}</p>
+              <p>身份证号:{{ policyInfo.cardnumber }}</p>
+              <p>初级职称:{{ policyInfo.technical }}</p>
+              <p>职务:{{ policyInfo.position }}</p>
+              <p>毕业院校:{{ policyInfo.school }}</p>
+              <p>学历:{{ policyInfo.eduback }}</p>
+              <p>所学专业:{{ policyInfo.major_studied }}</p>
+
+              <p>邮箱:{{ policyInfo.email }}</p>
+              <p>办公电话:{{ policyInfo.tel }}</p>
+              <p>从事专业:{{ policyInfo.professional }}</p>
+              <p>手机号:{{ policyInfo.phone }}</p>
+              <p>业务工作简介:{{ policyInfo.job_profile }}</p>
+              <p>主持或参与项目情况:{{ policyInfo.project_profile }}</p>
+              <p>主要学术成就及获奖情况:{{ policyInfo.achievement }}</p>
+              <p>论文论著:{{ policyInfo.paper }}</p>
+              <p>备注:{{ policyInfo.remark }}</p>
+              <p>领域拼音:{{ policyInfo.field_py }}</p>
+              <p>主要学术成就及获奖情况:{{ policyInfo.achievement }}</p>
+              <p>主要学术成就及获奖情况:{{ policyInfo.achievement }}</p>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-row>
+    </el-col>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'rightcont',
+  props: { policyInfo: null },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.tittop {
+  width: 1200px;
+  height: 60px;
+  line-height: 60px;
+  border-bottom: 1px solid #215299;
+}
+.tittxt {
+  width: 135px;
+  height: 60px;
+  line-height: 60px;
+  background: #215299;
+  text-align: center;
+  color: #fff;
+  font-size: 16px;
+  font-family: 'Microsoft Yahei';
+}
+.titleimage {
+  margin: 20px 20px 0 20px;
+  width: 1160px;
+  height: 200px;
+}
+.bgcolor {
+  width: 380px;
+  height: 200px;
+}
+.images {
+  text-align: center;
+  padding: 28px 0;
+}
+.bgcolorWenzi {
+  height: 150px;
+  padding: 30px 0;
+}
+.bgcolorWenzi p {
+  padding: 5px 0;
+}
+.titletop1 {
+  height: 150px;
+
+  text-align: center;
+}
+.titletop1 .title {
+  font-weight: bold;
+
+  height: 60px;
+  line-height: 60px;
+  color: #215299;
+  font-size: 24px;
+}
+.zjname {
+  font-size: 30px;
+  color: #215299;
+}
+.titletop1 .name {
+  height: 50px;
+  line-height: 50px;
+  color: #215299;
+  font-size: 24px;
+}
+.titletop1 .profession {
+  height: 65px;
+  line-height: 65px;
+  text-align: center;
+  color: #215299;
+  font-size: 18px;
+}
+.date {
+  height: 50px;
+  line-height: 50px;
+  text-align: right;
+  padding: 0 50px 0 0;
+}
+.info {
+  padding: 0 30px;
+}
+.xiangxi {
+  height: 210px;
+}
+.jianjie {
+  height: 280px;
+}
+.infoTop {
+  border-bottom: 1px solid #666666;
+}
+.context {
+  height: 300px;
+  padding: 30px 0;
+  font-size: 16px;
+  color: #666666;
+  line-height: 30px;
+}
+</style>

+ 5 - 0
src/router/index.js

@@ -162,6 +162,11 @@ const routes = [
     name: 'personnelwork',
     component: () => import('../views/personnel/personnelwork.vue'),
   },
+  //科技人才找专家详情
+  {
+    path: '/personnel/personnelexpert',
+    component: () => import('../views/personnel/personnelexpert.vue'),
+  },
   //科技人才-招聘信息
   {
     path: '/personnel/recruit',

+ 3 - 0
src/store/index.js

@@ -14,6 +14,8 @@ import policiesColumn from './policiesColumn';
 import policiesNew from './policiesNew';
 import policiesxinxi from './policiesxinxi';
 import policieszhuanjia from './policieszhuanjia';
+import policiesjbxx from './policiesjbxx';
+
 Vue.use(Vuex);
 
 export default new Vuex.Store({
@@ -32,6 +34,7 @@ export default new Vuex.Store({
     policiesNew,
     policiesxinxi,
     policieszhuanjia,
+    policiesjbxx,
   },
   state: {},
   mutations: {},

+ 38 - 0
src/store/policiesjbxx.js

@@ -0,0 +1,38 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  columnInfo: `/api/talent/information`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.columnInfo}`, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.columnInfo}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.columnInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.columnInfo}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.columnInfo}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 38 - 0
src/store/policieszhuanjia.js

@@ -0,0 +1,38 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  columnInfo: `api/talent/experts`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.columnInfo}`, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.columnInfo}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.columnInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.columnInfo}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.columnInfo}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 28 - 2
src/views/personnel/personnel.vue

@@ -11,6 +11,7 @@
       :liebiaoList="liebiaoList"
       @detail="clickDetail"
       @detailgz="clickDetailgz"
+      @detailzj="clickDetailzj"
     ></personnel-detail>
   </div>
 </template>
@@ -22,6 +23,9 @@ const { mapActions: mapSite } = createNamespacedHelpers('site');
 const { mapActions: mapColumn } = createNamespacedHelpers('policiesColumn');
 const { mapActions: mapNews } = createNamespacedHelpers('policiesNew');
 const { mapActions: mapxinxi } = createNamespacedHelpers('policiesxinxi');
+const { mapActions: mapzhuanjia } = createNamespacedHelpers('policieszhuanjia');
+const { mapActions: mapcanmou } = createNamespacedHelpers('policiesjbxx');
+
 export default {
   name: 'personnel',
   props: {},
@@ -67,7 +71,10 @@ export default {
     this.searchSite();
     this.searchColumn();
     this.searchInfo();
-    this.searchInfos();
+    this.searchInfojobs();
+    this.searchInfozhuanjia();
+    this.searchInfomapcanmou();
+
     // this.searchRencaiShow();
   },
   computed: {},
@@ -76,6 +83,8 @@ export default {
     ...mapColumn({ columnList: 'query', columnInfo: 'fetch' }),
     ...mapNews({ newsList: 'query', newsInfo: 'fetch' }),
     ...mapxinxi({ xinxiList: 'query', xinxiInfo: 'fetch' }),
+    ...mapzhuanjia({ zhuanjiaList: 'query', zhuanjiaInfo: 'fetch' }),
+    ...mapcanmou({ canmouList: 'query', canmouInfo: 'fetch' }),
 
     // 查询站点信息
     async searchSite() {
@@ -101,12 +110,24 @@ export default {
       }
     },
 
-    async searchInfos({ skip = 0, limit = 10, ...info } = {}) {
+    async searchInfojobs({ skip = 0, limit = 10, ...info } = {}) {
       const res = await this.xinxiList({ skip, limit, ...info });
       if (this.$checkRes(res)) {
         this.$set(this, `jobsData`, res.data);
       }
     },
+    async searchInfozhuanjia({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.zhuanjiaList({ skip, limit, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `zhuanjiaData`, res.data);
+      }
+    },
+    async searchInfomapcanmou({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.canmouList({ skip, limit, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `canmoData`, res.data);
+      }
+    },
     clickDetail({ data }) {
       // 点击这个方法,跳转页面,并把id传过去,并用id查询详情
       this.$router.push({ path: '/personnel/rencai', query: { id: data.id } });
@@ -115,6 +136,11 @@ export default {
       // 点击这个方法,跳转页面,并把id传过去,并用id查询详情
       this.$router.push({ path: '/personnel/personnelwork', query: { id: data.id } });
     },
+
+    clickDetailzj({ data }) {
+      // 点击这个方法,跳转页面,并把id传过去,并用id查询详情
+      this.$router.push({ path: '/personnel/personnelexpert', query: { id: data.id } });
+    },
   },
 };
 </script>

+ 59 - 0
src/views/personnel/personnelexpert.vue

@@ -0,0 +1,59 @@
+<template>
+  <div id="personnel">
+    <personnelexpert-detail :info="info" :policyInfo="policyInfo" :liebiaoList="liebiaoList"></personnelexpert-detail>
+  </div>
+</template>
+
+<script>
+import personnelexpertDetail from '@/components/personnel/personnelexpert.vue';
+import { createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapSite } = createNamespacedHelpers('site');
+const { mapActions: mapNews } = createNamespacedHelpers('policieszhuanjia');
+const { mapActions: mapColumn } = createNamespacedHelpers('policiesColumn');
+
+export default {
+  name: 'personnel',
+  props: {},
+  components: {
+    personnelexpertDetail,
+  },
+  data: () => ({
+    policyInfo: {},
+    info: {},
+    liebiaoList: [],
+  }),
+  async created() {
+    this.searchSite();
+    this.searchInfo();
+    this.searchColumn();
+  },
+  computed: {},
+  methods: {
+    ...mapSite(['showInfo']),
+    ...mapNews({ newsList: 'query', newsInfo: 'fetch' }),
+    ...mapColumn({ columnList: 'query', columnInfo: 'fetch' }),
+    // 查询站点信息
+    async searchSite() {
+      let res = await this.showInfo();
+      let object = JSON.parse(JSON.stringify(res.data));
+      if (object) {
+        this.$set(this, `info`, res.data);
+      } else {
+        this.$message.error(res.errmsg ? res.errmsg : 'error');
+      }
+    },
+    async searchColumn({ ...info } = {}) {
+      const res = await this.columnList({ ...info });
+      this.$set(this, `liebiaoList`, res.data);
+    },
+    async searchInfo() {
+      let detailId = this.$route.query.id;
+      const res = await this.newsInfo(detailId);
+      this.$set(this, `policyInfo`, res.data);
+      console.log(res.data);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>