From f5b569f17022ed9940ee5e8df92d39995cd3b513 Mon Sep 17 00:00:00 2001 From: chenghx Date: Thu, 2 Aug 2018 17:59:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E8=B7=AF=E7=94=B1=E8=87=AA=E5=8A=A8=E5=B1=95?= =?UTF-8?q?=E5=BC=80=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/list/ApplicationList.vue | 19 +++++++++++ src/components/list/ArticleList.vue | 2 +- src/components/list/ProjectList.vue | 19 +++++++++++ src/components/list/SearchLayout.vue | 43 +++++++++++++++++++++++-- src/components/menu/menu.js | 22 +++++++++++-- src/router/index.js | 14 ++++++++ 6 files changed, 114 insertions(+), 5 deletions(-) create mode 100644 src/components/list/ApplicationList.vue create mode 100644 src/components/list/ProjectList.vue 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' } ] }