diff --git a/src/components/list/ApplicationList.vue b/src/components/list/ApplicationList.vue new file mode 100644 index 0000000..e9c6ce0 --- /dev/null +++ b/src/components/list/ApplicationList.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/src/components/list/ArticleList.vue b/src/components/list/ArticleList.vue index c144e40..72d4411 100644 --- a/src/components/list/ArticleList.vue +++ b/src/components/list/ArticleList.vue @@ -1,7 +1,7 @@ diff --git a/src/components/list/ProjectList.vue b/src/components/list/ProjectList.vue new file mode 100644 index 0000000..0f46f2a --- /dev/null +++ b/src/components/list/ProjectList.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/src/components/list/SearchLayout.vue b/src/components/list/SearchLayout.vue index 821b0a2..64fd6eb 100644 --- a/src/components/list/SearchLayout.vue +++ b/src/components/list/SearchLayout.vue @@ -5,7 +5,7 @@
- + @@ -29,7 +29,46 @@ const ATabPane = ATabs.TabPane export default { name: 'SearchLayout', - components: {ATabPane, ATabs, AInputSearch, AButton, AInputGroup, AInput} + components: {ATabPane, ATabs, AInputSearch, AButton, AInputGroup, AInput}, + data () { + return { + activeKey: '' + } + }, + watch: { + '$route': (val) => { + switch (val.path) { + case '/list/search/article': + this.activeKey = '1' + break + case '/list/search/application': + this.activeKey = '2' + break + case '/list/search/project': + this.activeKey = '3' + break + default: + this.activeKey = '1' + } + } + }, + methods: { + navigate (key) { + switch (key) { + case '1': + this.$router.push('/list/search/article') + break + case '2': + this.$router.push('/list/search/application') + break + case '3': + this.$router.push('/list/search/project') + break + default: + this.$router.push('/workplace') + } + } + } } diff --git a/src/components/menu/menu.js b/src/components/menu/menu.js index 8633292..19b516e 100644 --- a/src/components/menu/menu.js +++ b/src/components/menu/menu.js @@ -53,9 +53,13 @@ export default { return { rootSubmenuKeys: ['/form', '/list', '/detail', '/exception', '/result'], openKeys: [], + selectedKeys: [], cachedOpenKeys: [] } }, + created () { + this.updateMenu() + }, watch: { collapsed (val) { if (val) { @@ -64,6 +68,9 @@ export default { } else { this.openKeys = this.cachedOpenKeys } + }, + '$route': function () { + this.updateMenu() } }, methods: { @@ -133,6 +140,15 @@ export default { } else { this.openKeys = latestOpenKey ? [latestOpenKey] : [] } + }, + updateMenu () { + let routes = this.$route.matched.concat() + this.selectedKeys = [routes.pop().path] + let openKeys = [] + routes.forEach((item) => { + openKeys.push(item.path) + }) + this.openKeys = openKeys } }, render (h) { @@ -143,10 +159,12 @@ export default { theme: this.$props.theme, mode: this.$props.mode, inlineCollapsed: false, - openKeys: this.openKeys + openKeys: this.openKeys, + selectedKeys: this.selectedKeys }, on: { - openChange: this.onOpenChange + openChange: this.onOpenChange, + select: (obj) => { this.selectedKeys = obj.selectedKeys } } }, this.renderMenu(h, this.menuData) ) diff --git a/src/router/index.js b/src/router/index.js index d561455..867a40e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -17,6 +17,8 @@ import StandardList from '@/components/list/StandardList' import CardList from '@/components/list/CardList' import SearchLayout from '@/components/list/SearchLayout' import ArticleList from '@/components/list/ArticleList' +import ApplicationList from '@/components/list/ApplicationList' +import ProjectList from '@/components/list/ProjectList' import WorkPlace from '@/components/dashboard/WorkPlace' Vue.use(Router) @@ -105,6 +107,18 @@ export default new Router({ name: '文章', component: ArticleList, icon: 'none' + }, + { + path: '/list/search/application', + name: '应用', + component: ApplicationList, + icon: 'none' + }, + { + path: '/list/search/project', + name: '项目', + component: ProjectList, + icon: 'none' } ] }