Parcourir la source

党员之家首页更新

guhongwei il y a 5 ans
Parent
commit
dcf4db3a45

+ 6 - 5
src/components/member.vue

@@ -5,13 +5,13 @@
         <top :info="info"></top>
       </el-col>
       <el-col :sapn="24" class="menu">
-        <menuInfos></menuInfos>
+        <menuInfos :menuList="menuList" :backColor="backColor"></menuInfos>
       </el-col>
       <el-col :span="24" class="main">
         <div class="w_1270">
-          <el-col :span="24" class="main_1">
+          <!-- <el-col :span="24" class="main_1">
             <meesage :messageInfo="messageInfo"></meesage>
-          </el-col>
+          </el-col> -->
           <el-col :span="24" class="main_2">
             <gaoceng :carouselList="carouselList" :newsList="newsList"></gaoceng>
           </el-col>
@@ -36,7 +36,7 @@
 <script>
 import top from '@/layout/member/top.vue';
 import menuInfos from '@/layout/index/menuInfos.vue';
-import meesage from '@/layout/member/meesage.vue';
+// import meesage from '@/layout/member/meesage.vue';
 import gaoceng from '@/layout/member/gaoceng.vue';
 import dangjian from '@/layout/member/dangjian.vue';
 import xuexi from '@/layout/member/xuexi.vue';
@@ -47,6 +47,7 @@ export default {
   props: {
     backColor: null, //背景颜色
     info: null, //站点信息
+    menuList: null, //菜单
     messageInfo: null, //最新消息
     carouselList: null, //轮播图
     newsList: null, //轮播图右侧新闻列表
@@ -61,7 +62,7 @@ export default {
   components: {
     top, //头部信息
     menuInfos, //菜单
-    meesage, //最新消息
+    // meesage, //最新消息
     gaoceng, //高层声音
     dangjian, //基层党建
     xuexi, //学习园地

+ 3 - 3
src/layout/index/menuInfos.vue

@@ -1,18 +1,19 @@
 <template>
   <div id="menuInfo">
-    <el-row>
+    <el-row :style="`background-color:${backColor}`">
       <el-col :span="24" :style="`background-color:${backColor}`">
         <div class="w_1200">
           <el-menu
             :default-active="activeIndex1"
             class="el-menu-demo"
             mode="horizontal"
-            background-color="#0457c7"
+            background-color="#be0101"
             text-color="#fff"
             active-text-color="#fff"
             :router="true"
           >
             <el-menu-item index="/">网站首页</el-menu-item>
+            <el-menu-item index="/member">党员之家</el-menu-item>
             <template>
               <el-submenu index="/jobs">
                 <template slot="title">
@@ -34,7 +35,6 @@
               <el-menu-item v-else-if="item.type === 'content'" :index="item.path" :key="index">{{ item.title }}</el-menu-item>
               <el-menu-item v-else :index="``" :key="index" @click="turnTo(item.url)">{{ item.title }}</el-menu-item>
             </template>
-            <el-menu-item index="/member">党员之家</el-menu-item>
           </el-menu>
         </div>
       </el-col>

+ 70 - 16
src/layout/member/dangjian.vue

@@ -13,37 +13,41 @@
         </el-col>
       </el-col>
       <el-col :span="24" class="info">
-        <el-col :span="8" class="infoLeft">
+        <el-col :span="8" class="infoLeft" v-loading="loading">
           <el-col :span="24" class="infoLeftTop">
             <el-col :span="18" class="leftTopTitle">
-              <span>{{ leftTopTitle }}</span>
+              <span>{{ rencaiList.title }}</span>
             </el-col>
             <el-col :span="6" class="leftTopMore">
-              <el-link :underline="false">更多<i class="el-icon-plus"></i></el-link>
+              <el-link :underline="false" @click="$router.push({ path: rencaiList.path, query: { title: rencaiList.title } })"
+                >更多<i class="el-icon-plus"></i
+              ></el-link>
             </el-col>
           </el-col>
           <el-col :span="24" class="infoLeftList">
-            <el-col :span="24" class="rencaiList" v-for="(item, index) in rencaiList" :key="index">
+            <el-col :span="24" class="rencaiList" v-for="(item, index) in infoList" :key="index">
               <el-col :span="16" class="title">
                 <p class="textOver"><i class="el-icon-s-flag icon"></i>{{ item.title }}</p>
               </el-col>
-              <el-col :span="8" class="date"> [{{ item.date }}] </el-col>
+              <el-col :span="8" class="date"> [{{ item.meta | getDate }}] </el-col>
             </el-col>
           </el-col>
         </el-col>
-        <el-col :span="8" class="infoLeft">
+        <el-col :span="8" class="infoLeft" v-loading="loading">
           <el-col :span="24" class="infoLeftTop">
             <el-col :span="18" class="leftTopTitle">
-              <span>{{ centerTopTitle }}</span>
+              <span>{{ dangjianList.title }}</span>
             </el-col>
             <el-col :span="6" class="leftTopMore">
-              <el-link :underline="false">更多<i class="el-icon-plus"></i></el-link>
+              <el-link :underline="false" @click="$router.push({ path: dangjianList.path, query: { title: dangjianList.title } })"
+                >更多<i class="el-icon-plus"></i
+              ></el-link>
             </el-col>
           </el-col>
           <el-col :span="24" class="infoCenterList">
-            <el-col :span="12" class="dangjianList" v-for="(item, index) in dangjianList" :key="index">
+            <el-col :span="12" class="dangjianList" v-for="(item, index) in infosList" :key="index">
               <el-col :span="24" class="imageTit">
-                <el-image style="width:180px;height:120px;" :src="item.url"></el-image>
+                <el-image style="width:180px;height:120px;" :src="item.pic"></el-image>
               </el-col>
               <el-col :span="24" class="title">
                 <p>{{ item.title }}</p>
@@ -51,21 +55,23 @@
             </el-col>
           </el-col>
         </el-col>
-        <el-col :span="8" class="infoLeft">
+        <el-col :span="8" class="infoLeft" v-loading="loading">
           <el-col :span="24" class="infoLeftTop">
             <el-col :span="18" class="leftTopTitle">
-              <span>{{ rightTopTitle }}</span>
+              <span>{{ yaowenList.title }}</span>
             </el-col>
             <el-col :span="6" class="leftTopMore">
-              <el-link :underline="false">更多<i class="el-icon-plus"></i></el-link>
+              <el-link :underline="false" @click="$router.push({ path: yaowenList.path, query: { title: yaowenList.title } })"
+                >更多<i class="el-icon-plus"></i
+              ></el-link>
             </el-col>
           </el-col>
           <el-col :span="24" class="infoLeftList">
-            <el-col :span="24" class="rencaiList" v-for="(item, index) in yaowenList" :key="index">
+            <el-col :span="24" class="rencaiList" v-for="(item, index) in infossList" :key="index">
               <el-col :span="16" class="title">
                 <p class="textOver"><i class="el-icon-s-flag icon"></i>{{ item.title }}</p>
               </el-col>
-              <el-col :span="8" class="date"> [{{ item.date }}] </el-col>
+              <el-col :span="8" class="date"> [{{ item.meta | getDate }}]</el-col>
             </el-col>
           </el-col>
         </el-col>
@@ -75,6 +81,7 @@
 </template>
 
 <script>
+import _ from 'lodash';
 export default {
   name: 'dangjian',
   props: {
@@ -90,10 +97,57 @@ export default {
     rightTopTitle: '党建要闻',
     left: require('@/assets/messageLeft.jpg'),
     right: require('@/assets/messageRight.jpg'),
+    infoList: [],
+    infosList: [],
+    infossList: [],
+    loading: true,
   }),
+  watch: {
+    rencaiList: {
+      handler(val) {
+        if (val) this.assignData(val);
+      },
+    },
+    dangjianList: {
+      handler(val) {
+        if (val) this.assignDatas(val);
+      },
+    },
+    yaowenList: {
+      handler(val) {
+        if (val) this.assignDatass(val);
+      },
+    },
+  },
   created() {},
   computed: {},
-  methods: {},
+  methods: {
+    assignData(data) {
+      let infoList = _.get(data, 'children');
+      this.$set(this, `infoList`, infoList);
+      this.loading = false;
+    },
+    assignDatas(data) {
+      let infosList = _.get(data, 'children');
+      this.$set(this, `infosList`, infosList);
+      this.loading = false;
+    },
+    assignDatass(data) {
+      let infossList = _.get(data, 'children');
+      this.$set(this, `infossList`, infossList);
+      this.loading = false;
+    },
+  },
+  filters: {
+    getDate(meta) {
+      let createdAt = _.get(meta, `createdAt`);
+      let date = new Date(createdAt)
+        .toLocaleDateString()
+        .replace('/', '-')
+        .replace('/', '-');
+      return date;
+    },
+  },
 };
 </script>
 

+ 44 - 7
src/layout/member/gaoceng.vue

@@ -13,23 +13,23 @@
         </el-col>
       </el-col>
       <el-col :span="24" class="info">
-        <el-col :span="12" class="carousel">
+        <el-col :span="12" class="carousel" v-loading="loading">
           <el-carousel height="400">
-            <el-carousel-item v-for="(item, index) in carouselList" :key="index">
-              <el-image style="width:100%;height:400px;" :src="item.url"></el-image>
+            <el-carousel-item v-for="(item, index) in infoList" :key="index">
+              <el-image style="width:100%;height:400px;" :src="item.pic"></el-image>
               <span class="textOver">{{ item.title }}</span>
             </el-carousel-item>
           </el-carousel>
         </el-col>
-        <el-col :span="12">
-          <el-col :span="24" class="newsList" v-for="(item, index) in newsList" :key="index">
+        <el-col :span="12" style="height:400px;" v-loading="loading">
+          <el-col :span="24" class="newsList" v-for="(item, index) in infosList" :key="index">
             <el-col :span="20" class="title">
               <p class="textOver">
                 <i class="el-icon-s-flag icon"></i><span>{{ item.title }}</span>
               </p>
             </el-col>
             <el-col :span="4" class="date">
-              {{ item.date }}
+              {{ item.meta | getDate }}
             </el-col>
           </el-col>
         </el-col>
@@ -39,6 +39,7 @@
 </template>
 
 <script>
+import _ from 'lodash';
 export default {
   name: 'gaoceng',
   props: {
@@ -50,10 +51,46 @@ export default {
     title: '高层声音',
     left: require('@/assets/messageLeft.jpg'),
     right: require('@/assets/messageRight.jpg'),
+    infoList: [],
+    infosList: [],
+    loading: true,
   }),
+  watch: {
+    carouselList: {
+      handler(val) {
+        if (val) this.assignData(val);
+      },
+    },
+    newsList: {
+      handler(val) {
+        if (val) this.assignDatas(val);
+      },
+    },
+  },
   created() {},
   computed: {},
-  methods: {},
+  methods: {
+    assignData(data) {
+      let columns = _.get(data, 'children');
+      this.$set(this, `infoList`, columns);
+      this.loading = false;
+    },
+    assignDatas(data) {
+      let columns = _.get(data, 'children');
+      this.$set(this, `infosList`, columns);
+      this.loading = false;
+    },
+  },
+  filters: {
+    getDate(meta) {
+      let createdAt = _.get(meta, `createdAt`);
+      let date = new Date(createdAt)
+        .toLocaleDateString()
+        .replace('/', '-')
+        .replace('/', '-');
+      return date;
+    },
+  },
 };
 </script>
 

+ 20 - 4
src/layout/member/photo.vue

@@ -13,10 +13,10 @@
         </el-col>
       </el-col>
       <el-col :span="24" class="info">
-        <el-col :span="24" class="list">
-          <el-col :span="6" class="tujiList" v-for="(item, index) in tujiList" :key="index">
+        <el-col :span="24" class="list" v-loading="loading">
+          <el-col :span="6" class="tujiList" v-for="(item, index) in infoList" :key="index">
             <el-col :span="24" class="image">
-              <el-image style="width:270px;height:180px;" :src="item.url"></el-image>
+              <el-image style="width:270px;height:180px;" :src="item.pic"></el-image>
             </el-col>
             <el-col :span="24" class="title">
               <p class="textOver">{{ item.title }}</p>
@@ -43,6 +43,7 @@
 </template>
 
 <script>
+import _ from 'lodash';
 export default {
   name: 'photo',
   props: {
@@ -57,10 +58,25 @@ export default {
     link2: require('@/assets/tuji6.jpg'),
     link3: require('@/assets/tuji7.jpg'),
     link4: require('@/assets/tuji8.jpg'),
+    infoList: [],
+    loading: true,
   }),
+  watch: {
+    tujiList: {
+      handler(val) {
+        if (val) this.assignData(val);
+      },
+    },
+  },
   created() {},
   computed: {},
-  methods: {},
+  methods: {
+    assignData(data) {
+      let infoList = _.get(data, 'children');
+      this.$set(this, `infoList`, infoList);
+      this.loading = false;
+    },
+  },
 };
 </script>
 

+ 4 - 3
src/layout/member/top.vue

@@ -3,11 +3,11 @@
     <el-row>
       <el-col :span="24">
         <el-col :span="24">
-          <el-image style="width:100%;height:500px;" :src="info.banner"></el-image>
+          <el-image style="width:100%;height:500px;" :src="banner"></el-image>
         </el-col>
         <div class="w_1270">
           <el-col :span="24" class="info">
-            <span>{{ info.title }}-{{ title }}</span>
+            <span>{{ info.name }}-{{ title }}</span>
           </el-col>
         </div>
       </el-col>
@@ -24,6 +24,7 @@ export default {
   components: {},
   data: () => ({
     title: '党员之家',
+    banner: require('@/assets/memberBg.jpg'),
   }),
   created() {},
   computed: {},
@@ -40,7 +41,7 @@ export default {
   position: absolute;
   top: 32%;
   left: 25%;
-  width: 50%;
+  width: 75%;
 }
 .info span {
   font-size: 35px;

+ 82 - 20
src/layout/member/xuexi.vue

@@ -13,51 +13,57 @@
         </el-col>
       </el-col>
       <el-col :span="24" class="info">
-        <el-col :span="8" class="infoLeft">
+        <el-col :span="8" class="infoLeft" v-loading="loading">
           <el-col :span="24" class="infoLeftTop">
             <el-col :span="18" class="leftTopTitle">
-              <span>{{ leftTopTitle }}</span>
+              <span>{{ dangguiList.title }}</span>
             </el-col>
             <el-col :span="6" class="leftTopMore">
-              <el-link :underline="false">更多<i class="el-icon-plus"></i></el-link>
+              <el-link :underline="false" @click="$router.push({ path: dangguiList.path, query: { title: dangguiList.title } })"
+                >更多<i class="el-icon-plus"></i
+              ></el-link>
             </el-col>
           </el-col>
           <el-col :span="24" class="infoLeftList">
-            <el-col :span="24" class="rencaiList" v-for="(item, index) in dangguiList" :key="index">
+            <el-col :span="24" class="rencaiList" v-for="(item, index) in infoList" :key="index">
               <el-col :span="24" class="title">
                 <p class="textOver"><i class="el-icon-s-flag icon"></i>{{ item.title }}</p>
               </el-col>
             </el-col>
           </el-col>
         </el-col>
-        <el-col :span="8" class="infoLeft">
+        <el-col :span="8" class="infoLeft" v-loading="loading">
           <el-col :span="24" class="infoLeftTop">
             <el-col :span="18" class="leftTopTitle">
-              <span>{{ centerTopTitle }}</span>
+              <span>{{ zhishiList.title }}</span>
             </el-col>
             <el-col :span="6" class="leftTopMore">
-              <el-link :underline="false">更多<i class="el-icon-plus"></i></el-link>
+              <el-link :underline="false" @click="$router.push({ path: zhishiList.path, query: { title: zhishiList.title } })"
+                >更多<i class="el-icon-plus"></i
+              ></el-link>
             </el-col>
           </el-col>
           <el-col :span="24" class="infoLeftList">
-            <el-col :span="24" class="zhishiList" v-for="(item, index) in zhishiList" :key="index">
-              <el-col :span="24" class="title">
-                <p class="textOver color">问:{{ item.title }}</p>
-              </el-col>
-              <el-col :span="24" class="title">
-                <p class="textOver">答:{{ item.content }}</p>
+            <el-col :span="24" class="zhishiList" v-for="(item, index) in infosList" :key="index">
+              <el-col :span="16" class="title">
+                <p class="textOver"><i class="el-icon-s-flag icon"></i>{{ item.title }}</p>
               </el-col>
+              <el-col :span="8" class="date"> [{{ item.meta | getDate }}] </el-col>
             </el-col>
           </el-col>
         </el-col>
-        <el-col :span="8" class="infoLeft">
+        <el-col :span="8" class="infoLeft" v-loading="loading">
           <el-col :span="24" class="infoLeftTop">
             <el-col :span="24" class="leftTopTitle">
-              <span>{{ rightTopTitle }}</span>
+              <span>{{ zhunti.title }}</span>
             </el-col>
           </el-col>
           <el-col :span="24" class="infoRightList">
-            <el-image style="width:400px;height:267px;" :src="zhunti.url"></el-image>
+            <el-col :span="24" v-for="(item, index) in infossList" :key="index">
+              <el-col :span="24">
+                <el-image style="width:400px;height:280px;" :src="item.pic"></el-image>
+              </el-col>
+            </el-col>
           </el-col>
         </el-col>
       </el-col>
@@ -66,6 +72,7 @@
 </template>
 
 <script>
+import _ from 'lodash';
 export default {
   name: 'xuexi',
   props: {
@@ -76,15 +83,59 @@ export default {
   components: {},
   data: () => ({
     title: '学习园地',
-    leftTopTitle: '党规党章',
-    centerTopTitle: '知识问答',
-    rightTopTitle: '专题学习',
     left: require('@/assets/messageLeft.jpg'),
     right: require('@/assets/messageRight.jpg'),
+    infoList: [],
+    infosList: [],
+    infossList: [],
+    loading: true,
   }),
+  watch: {
+    dangguiList: {
+      handler(val) {
+        if (val) this.assignData(val);
+      },
+    },
+    zhishiList: {
+      handler(val) {
+        if (val) this.assignDatas(val);
+      },
+    },
+    zhunti: {
+      handler(val) {
+        if (val) this.assignDatass(val);
+      },
+    },
+  },
   created() {},
   computed: {},
-  methods: {},
+  methods: {
+    assignData(data) {
+      let infoList = _.get(data, 'children');
+      this.$set(this, `infoList`, infoList);
+      this.loading = false;
+    },
+    assignDatas(data) {
+      let infosList = _.get(data, 'children');
+      this.$set(this, `infosList`, infosList);
+      this.loading = false;
+    },
+    assignDatass(data) {
+      let infossList = _.get(data, 'children');
+      this.$set(this, `infossList`, infossList);
+      this.loading = false;
+    },
+  },
+  filters: {
+    getDate(meta) {
+      let createdAt = _.get(meta, `createdAt`);
+      let date = new Date(createdAt)
+        .toLocaleDateString()
+        .replace('/', '-')
+        .replace('/', '-');
+      return date;
+    },
+  },
 };
 </script>
 
@@ -181,9 +232,20 @@ p {
 .zhishiList .title .color {
   color: #bd000b;
 }
+.zhishiList .date {
+  font-size: 16px;
+  color: #333;
+  text-align: right;
+}
 .zhishiList:hover {
   cursor: pointer;
 }
+.zhishiList:hover .title p {
+  color: #bd000b;
+}
+.zhishiList:hover .date {
+  color: #bd000b;
+}
 .infoRightList {
   padding: 15px 0;
 }

+ 1 - 1
src/router/index.js

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

+ 175 - 77
src/views/member.vue

@@ -2,24 +2,32 @@
   <div id="member">
     <member-detail
       :backColor="backColor"
-      :info="info"
+      :info="site"
+      :menuList="menu"
       :messageInfo="messageInfo"
-      :carouselList="carouselList"
+      :carouselList="tupianList"
       :newsList="newsList"
       :rencaiList="rencaiList"
       :dangjianList="dangjianList"
       :yaowenList="yaowenList"
       :dangguiList="dangguiList"
       :zhishiList="zhishiList"
-      :zhunti="zhunti"
-      :tujiList="tujiList"
+      :zhunti="zhuantiList"
+      :tujiList="huodongList"
     ></member-detail>
   </div>
 </template>
 
 <script>
 import memberDetail from '@/components/member.vue';
+import { mapActions, mapState } from 'vuex';
+import _ from 'lodash';
 export default {
+  metaInfo() {
+    return {
+      title: this.siteTitle ? this.siteTitle : '就业信息网',
+    };
+  },
   name: 'member',
   props: {},
   components: {
@@ -42,81 +50,171 @@ export default {
         title: '吉林省高等学校毕业生就业信息网',
       },
     ],
-    newsList: [
-      {
-        title: '市委常委会召开“不忘初心、牢记使命“专题民主生活会',
-        date: '2019-12-11',
-      },
-    ],
-    rencaiList: [
-      {
-        title: '市委常委会召开“不忘初心、牢记使命“专题民主生活会',
-        date: '2019-12-11',
-      },
-      {
-        title: '七条数据',
-        date: '2019-12-11',
-      },
-    ],
-    dangjianList: [
-      {
-        url: require('@/assets/news.jpg'),
-        title: '标题',
-      },
-    ],
-    yaowenList: [
-      {
-        title: '党建要闻',
-        date: '2019-12-11',
-      },
-      {
-        title: '七条数据',
-        date: '2019-12-11',
-      },
-    ],
-    dangguiList: [
-      {
-        title: '党规党章',
-      },
-      {
-        title: '八条数据',
-      },
-    ],
-    zhishiList: [
-      {
-        title: '知识问答',
-        content: '知识问答答案',
-      },
-      {
-        title: '四条',
-        content: '知识问答答案',
-      },
-    ],
-    zhunti: {
-      url: require('@/assets/news.jpg'),
-    },
-    tujiList: [
-      {
-        url: require('@/assets/tuji1.jpg'),
-        title: '标题',
-      },
-      {
-        url: require('@/assets/tuji2.jpg'),
-        title: '标题',
-      },
-      {
-        url: require('@/assets/tuji3.jpg'),
-        title: '标题',
-      },
-      {
-        url: require('@/assets/tuji4.jpg'),
-        title: '标题',
-      },
-    ],
+    tupianList: [], //高层声音中左侧图片新闻
+    newsList: [], //高层声音中右侧文字新闻列表
+    rencaiList: [], //人才建设
+    dangjianList: [], //党建综合
+    yaowenList: [], //党建要闻
+    dangguiList: [], //党规党章
+    zhishiList: [], //知识问答
+    zhuantiList: [], //专题学习
+    huodongList: [], //活动图集
+    site: {}, //站点信息
+    siteTitle: {}, //站点标题
+    menu: [], //菜单
+    modules: [], //模块
   }),
-  created() {},
+  async created() {
+    await this.toGetSite(); //获取主站信息
+    this.loadMenu(); //获取菜单信息
+    this.toGetModule(); //获取模块信息
+  },
   computed: {},
-  methods: {},
+  methods: {
+    ...mapActions(['getSite', `getMenu`, 'getColumn', 'getModule', 'getNews', 'getJobInfo', 'getPosts', 'getLink']),
+    //站点信息
+    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));
+        this.finishedMenu();
+        return;
+      } 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?id=${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;
+      }
+    },
+    //模块
+    async loadModule() {
+      let modules = sessionStorage.getItem('modules');
+      for (const item of modules) {
+        if (item.category === 'member') {
+          this.$set(this, `modules`, JSON.parse(modules));
+          return;
+        }
+      }
+      this.toGetMenu();
+    },
+    async toGetModule() {
+      let result = await this.getModule({ type: `list` });
+      if (result.errcode === 0) {
+        sessionStorage.setItem('modules', JSON.stringify(result.data));
+        this.$set(this, `modules`, result.data);
+        this.finishedModule();
+      }
+    },
+    async finishedModule() {
+      let modules = JSON.parse(JSON.stringify(this.modules));
+      let object = {};
+      for (const item of modules) {
+        if (item.category === 'member') {
+          if (`${item.is_use}` === `0`) {
+            let res = await this.completeModules(item);
+            item.children = res;
+            object = item;
+          }
+        }
+      }
+      for (const item of object.children) {
+        console.log(item);
+        this.$set(this, `${item.category}List`, item);
+      }
+    },
+    async completeModules(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 === `bugList`) {
+            col.path = `/memberList/module/${col.content_id}`;
+            col.children = await this.completeColumn(col);
+          } else if (col.type === `column`) {
+            col.path = `/memberList/module/${col.id}`;
+            col.children = await this.completeColumn(col);
+          } else if (col.type === `content`) {
+            col.path = `/detail/${col.content_id}`;
+          }
+        }
+        return columns;
+      }
+    },
+    async completeColumn(item) {
+      let data = { skip: 0, limit: 8 };
+      if (item.type === `bugList`) {
+        data.news_type = `0`;
+        data.parent_id = item.content_id;
+      } else {
+        data.news_type = `1`;
+        data.parent_id = item.id;
+      }
+      let result = await this.getNews({ type: 'bugList', data: data });
+      if (result.errcode === 0) {
+        return result.data;
+      }
+    },
+  },
 };
 </script>