|
@@ -1,10 +1,11 @@
|
|
|
<template>
|
|
|
<div id="newsList">
|
|
|
- <list-detail :info="info" :backColor="backColor" :Color="Color" :newsList="newsList"></list-detail>
|
|
|
+ <list-detail :menuList="menu" :info="info" :backColor="backColor" :Color="Color" :newsList="newsList"></list-detail>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { mapActions, mapState } from 'vuex';
|
|
|
import listDetail from '@/components/newsList.vue';
|
|
|
export default {
|
|
|
name: 'newsList',
|
|
@@ -112,10 +113,61 @@ export default {
|
|
|
content: '我省成功举办“创业有我•就在吉林我省成功举办“创业有我•就在吉林',
|
|
|
},
|
|
|
],
|
|
|
+ menu: [],
|
|
|
}),
|
|
|
- created() {},
|
|
|
+ created() {
|
|
|
+ this.loadMenu(); //获取菜单信息
|
|
|
+ },
|
|
|
computed: {},
|
|
|
- methods: {},
|
|
|
+ methods: {
|
|
|
+ ...mapActions(['getMenu', 'getColumn']),
|
|
|
+ //菜单
|
|
|
+ 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 = `/info/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 = `/info/detail?id=${col.content_id}`;
|
|
|
+ } else if (col.type !== 'url') {
|
|
|
+ col.path = `/info/list/${col.id}`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return columns;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
|