Browse Source

党员之家

lrf402788946 5 years ago
parent
commit
85e1b9f90b

+ 1 - 1
package.json

@@ -10,7 +10,7 @@
   "dependencies": {
     "axios": "^0.19.0",
     "core-js": "^3.3.2",
-    "element-ui": "^2.12.0",
+    "element-ui": "^2.13.0",
     "ginkgo-map": "^1.0.2",
     "lodash": "^4.17.15",
     "naf-core": "^0.1.2",

+ 6 - 3
src/components/memberDetail.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="banner">
         <banner></banner>
@@ -15,10 +15,10 @@
       <el-col :span="24" class="main">
         <div class="w_1200">
           <el-col :span="5" class="mainNav">
-            <listLeft :Color="Color"></listLeft>
+            <listLeft :sideMenu="sideMenu" :Color="Color"></listLeft>
           </el-col>
           <el-col :span="18" class="mainList">
-            <detailInfo :detailInfo="detailInfo" :Color="Color"></detailInfo>
+            <detailInfo :detailInfo="detailInfo" :Color="Color" :title="title"></detailInfo>
           </el-col>
         </div>
       </el-col>
@@ -44,6 +44,9 @@ export default {
     Color: null, //头部电话字体颜色
     backColor: null, //导航菜单背景颜色
     detailInfo: null, //详情信息
+    menuList: null, //菜单
+    sideMenu: null, //侧菜单
+    title: null,
   },
   components: {
     top, //头部

+ 9 - 5
src/components/memberList.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="banner">
         <banner></banner>
@@ -15,10 +15,10 @@
       <el-col :span="24" class="main">
         <div class="w_1200">
           <el-col :span="5" class="mainNav">
-            <listLeft :Color="Color"></listLeft>
+            <listLeft :sideMenu="sideMenu" :Color="Color"></listLeft>
           </el-col>
           <el-col :span="18" class="mainList">
-            <listRight :rightList="rightList" :Color="Color"></listRight>
+            <listRight :title="title" :newsList="newsList" :Color="Color" v-on="$listeners" v-bind="$attrs"></listRight>
           </el-col>
         </div>
       </el-col>
@@ -34,7 +34,7 @@ import top from '@/layout/index/top.vue';
 import menuInfo from '@/layout/index/menuInfos.vue';
 import banner from '@/layout/member/banner.vue';
 import listLeft from '@/layout/list/listLeft.vue';
-import listRight from '@/layout/list/listRight.vue';
+import listRight from '@/layout/list/newsInfo.vue';
 import foot from '@/layout/index/foot.vue';
 export default {
   name: 'memberList',
@@ -42,7 +42,11 @@ export default {
     info: null, //头部信息
     Color: null, //头部电话字体颜色
     backColor: null, //导航菜单背景颜色
-    rightList: null, //列表信息
+    newsList: null, //列表信息
+    menuList: null, //菜单
+    sideMenu: null, //侧菜单
+    title: null, //标题
+    listSpan: { type: Number, default: 18 }, //全屏还是左右
   },
   components: {
     top, //頭部

+ 2 - 3
src/layout/detail/detail.vue

@@ -40,11 +40,10 @@ export default {
   props: {
     detailInfo: null,
     Color: null,
+    title: { type: String, default: '就业动态' },
   },
   components: {},
-  data: () => ({
-    title: '就业动态',
-  }),
+  data: () => ({}),
   created() {},
   computed: {},
   methods: {},

+ 1 - 1
src/layout/jobs-list/jobfair.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="jobfair">
-    <el-col :span="24">
+    <el-col :span="24" @click.native="$router.push({ path: '/jobfairDetail', query: { id: data.id } })">
       <el-col :span="20" class="title">
         <p class="textOver"><span class="dian"></span>{{ data.title }}</p>
         <p class="textOver"><span class="dian"></span>地址:{{ data.city }}{{ data.address }}</p>

+ 1 - 1
src/layout/jobs-list/jobinfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="jobinfo">
-    <el-col :span="24">
+    <el-col :span="24" @click.native="$router.push({ path: '/jobinfoDetail', query: { id: data.id } })">
       <el-col :span="20" class="title">
         <p class="textOver"><span class="dian"></span>{{ data.title }}</p>
         <p class="textOver"><span class="dian"></span>发布方:{{ data.corpname }}</p>

+ 1 - 1
src/layout/jobs-list/post.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="post">
-    <el-col :span="24">
+    <el-col :span="24" @click.native="$router.push({ path: '/jobsDetail', query: { id: data.id } })">
       <el-col :span="20" class="title">
         <p class="textOver"><span class="dian"></span>{{ data.job_name }}</p>
         <p class="textOver"><span class="dian"></span>需求人数:{{ data.job_number }}</p>

+ 1 - 1
src/layout/jobs-list/talk.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="talk">
-    <el-col :span="24">
+    <el-col :span="24" @click.native="$router.push({ path: '/jobsDetail', query: { id: data.id } })">
       <el-col :span="20" class="title">
         <p class="textOver"><span class="dian"></span>{{ data.title }}</p>
         <p class="textOver"><span class="dian"></span>地址:{{ data.address }}</p>

+ 1 - 1
src/layout/list/listLeft.vue

@@ -58,6 +58,6 @@ export default {
 /deep/.el-menu-item.is-active {
   color: #415285;
   background: #b9c1d7;
-  border-left: 5px solid #0457c7;
+  border-left: 5px solid;
 }
 </style>

+ 7 - 2
src/layout/list/newsInfo.vue

@@ -20,7 +20,7 @@
             </el-col>
             <el-col :span="19">
               <el-col :span="24">
-                <el-col :span="20" class="title" @click.native="$router.push({ path: `/detail?id=${item.id}` })">
+                <el-col :span="20" class="title" @click.native="turnTo(item)">
                   <p class="textOver">{{ item.title }}</p>
                 </el-col>
                 <el-col :span="4" class="date">
@@ -46,7 +46,7 @@ export default {
   props: {
     newsList: null,
     Color: null,
-    title: { type: String, default: '就业动态' },
+    title: { type: String, default: '党员之家' },
     total: { type: Number, defaultl: 0 },
   },
   components: {},
@@ -61,6 +61,11 @@ export default {
       let skip = (page - 1) * this.pageSize;
       this.$emit('search', { skip: skip, limit: this.pageSize });
     },
+    turnTo(item) {
+      let route = this.$route.path;
+      if (route.includes('member')) this.$router.push({ path: '/memberDetail', query: { id: item.id } });
+      else this.$router.push({ path: `/detail?id=${item.id}` });
+    },
   },
 };
 </script>

+ 1 - 1
src/router/index.js

@@ -28,7 +28,7 @@ export default new Router({
       component: () => import('../views/detail.vue'),
     },
     {
-      path: '/memberList',
+      path: '/memberList/:type/:id',
       name: 'memberList',
       component: () => import('../views/memberList.vue'),
     },

+ 3 - 0
src/views/detail.vue

@@ -118,6 +118,9 @@ export default {
             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;

+ 5 - 2
src/views/index.vue

@@ -100,7 +100,7 @@ export default {
     async toGetMenu() {
       let result = await this.getMenu({ type: `list` });
       if (result.errcode === 0) {
-        sessionStorage.setItem('menu', JSON.stringify(result.data));
+        // sessionStorage.setItem('menu', JSON.stringify(result.data));
         this.$set(this, `menu`, result.data);
         this.finishedMenu();
       }
@@ -109,7 +109,7 @@ export default {
       let menus = JSON.parse(JSON.stringify(this.menu));
       for (const item of menus) {
         if (item.type === 'content') {
-          item.path = `/info/detail?id=${item.content_id}`;
+          item.path = `/detail?id=${item.content_id}`;
         } else if (item.type !== 'url') {
           let res = await this.completeMenu(item);
           item.children = res;
@@ -129,6 +129,9 @@ export default {
             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;

+ 3 - 0
src/views/list.vue

@@ -139,6 +139,9 @@ export default {
             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;

File diff suppressed because it is too large
+ 118 - 10
src/views/memberDetail.vue


+ 152 - 4
src/views/memberList.vue

@@ -1,12 +1,30 @@
 <template>
   <div id="memberList">
-    <member-detail :info="info" :Color="Color" :backColor="backColor" :rightList="rightList"></member-detail>
+    <member-detail
+      :info="site"
+      :menuList="menu"
+      :sideMenu="sideMenu"
+      @search="toGetNews"
+      :Color="Color"
+      :backColor="backColor"
+      :newsList="newsList"
+      :total="total"
+      :title="title"
+      :listSpan="listSpan"
+    ></member-detail>
   </div>
 </template>
 
 <script>
 import memberDetail from '@/components/memberList.vue';
+import { mapActions, mapState } from 'vuex';
+import _ from 'lodash';
 export default {
+  metaInfo() {
+    return {
+      title: this.siteTitle ? this.siteTitle : '就业信息网',
+    };
+  },
   name: 'memberList',
   props: {},
   components: {
@@ -27,10 +45,140 @@ export default {
         content: '我省成功举办“创业有我•就在吉林我省成功举办“创业有我•就在吉林',
       },
     ],
+    newsList: [],
+    total: 0,
+    menu: [],
+    sideMenu: [],
+    site: {},
+    siteTitle: '',
   }),
-  created() {},
-  computed: {},
-  methods: {},
+  async created() {
+    await this.toGetSite(); //获取主站信息
+    await this.loadMenu(); //获取菜单信息
+    this.toGetNews(); //获取数据
+  },
+  computed: {
+    type() {
+      return this.$route.params.type;
+    },
+    id() {
+      return this.$route.params.id;
+    },
+    title() {
+      return this.$route.query.title;
+    },
+    listSpan() {
+      return this.type === 'menu' ? 18 : 24;
+    },
+  },
+  watch: {
+    type: 'getSubMenu',
+    id: 'toGetNews',
+    title: 'getSubMenu',
+  },
+  methods: {
+    ...mapActions(['getSite', 'getMenu', 'getColumn', 'getNews']),
+    //站点信息
+    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();
+      this.getSubMenu();
+    },
+    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;
+      }
+    },
+    //侧菜单
+    getSubMenu() {
+      let data;
+      if (this.type === `module`) {
+        data = sessionStorage.getItem(`modules`);
+        this.$set(this, `sideMenu`, []);
+      } else {
+        let res = this.menu.filter(fil => {
+          if (fil.children) {
+            let res = fil.children.filter(filc => filc.id === this.id);
+            return res.length > 0;
+          } else return false;
+        });
+        this.$set(this, `sideMenu`, res.length > 0 ? res[0].children : []);
+      }
+    },
+    //请求数据
+    async toGetNews({ skip = 0, limit = 8 } = {}) {
+      let result = await this.getNews({ type: 'list', data: { parent_id: this.id, skip: skip, limit: limit } });
+      if (result.errcode === 0) {
+        let data = result.data;
+        for (const item of data) {
+          let info = await this.getNews({ type: 'fetch', data: { id: item.id } });
+          if (info.errcode === 0) item.content = info.data.content;
+          this.$set(this, `total`, result.total);
+        }
+        this.$set(this, `newsList`, result.data);
+      }
+    },
+  },
 };
 </script>
 

+ 3 - 0
src/views/newsList.vue

@@ -140,6 +140,9 @@ export default {
             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;