From 349e08b0a876489b8900897ebbcdc99562baf588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=80=9D=E7=BB=B4=E7=A9=BA=E9=97=B4?= Date: Thu, 23 Apr 2020 11:00:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BE=A7=E8=BE=B9=E6=A0=8F?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=8A=98=E5=8F=A0=E5=8A=A8=E7=94=BB=E6=95=88?= =?UTF-8?q?=E6=9E=9C=E5=88=87=E6=8D=A2=E4=B8=8E=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/style/theme/theme-base.scss | 8 +++- .../components/menu-side/index.js | 5 +- src/layout/header-aside/layout.vue | 18 +++++-- src/setting.js | 5 +- src/store/modules/d2admin/modules/account.js | 4 +- src/store/modules/d2admin/modules/menu.js | 48 ++++++++++++++++--- .../demo/playground/store/menu/index.vue | 9 +++- 7 files changed, 78 insertions(+), 19 deletions(-) diff --git a/src/assets/style/theme/theme-base.scss b/src/assets/style/theme/theme-base.scss index b9f3262f..4d420b90 100644 --- a/src/assets/style/theme/theme-base.scss +++ b/src/assets/style/theme/theme-base.scss @@ -74,13 +74,15 @@ } .d2-theme-container { .d2-theme-container-aside { - transition: width .3s; position: relative; .d2-layout-header-aside-menu-side { @extend %full; overflow: hidden; } } + .d2-theme-container-transition { + transition: width .3s; + } .d2-theme-container-main { padding: 0px; position: relative; @@ -116,13 +118,15 @@ .d2-theme-header { // logo区域 .logo-group { - transition: width .3s; float: left; text-align: center; img { height: 60px; } } + .logo-transition { + transition: width .3s; + } // 折叠侧边栏切换按钮 .toggle-aside-btn { float: left; diff --git a/src/layout/header-aside/components/menu-side/index.js b/src/layout/header-aside/components/menu-side/index.js index cbf12522..f1bf980c 100644 --- a/src/layout/header-aside/components/menu-side/index.js +++ b/src/layout/header-aside/components/menu-side/index.js @@ -11,7 +11,7 @@ export default { render (h) { return h('div', { attrs: { class: 'd2-layout-header-aside-menu-side' } }, [ h('el-menu', { - props: { collapse: this.asideCollapse, uniqueOpened: true, defaultActive: this.$route.fullPath }, + props: { collapse: this.asideCollapse, collapseTransition: this.asideTransition, uniqueOpened: true, defaultActive: this.$route.fullPath }, ref: 'menu', on: { select: this.handleMenuSelect } }, this.aside.map(menu => (menu.children === undefined ? elMenuItem : elSubmenu).call(this, h, menu))), @@ -32,7 +32,8 @@ export default { computed: { ...mapState('d2admin/menu', [ 'aside', - 'asideCollapse' + 'asideCollapse', + 'asideTransition' ]) }, watch: { diff --git a/src/layout/header-aside/layout.vue b/src/layout/header-aside/layout.vue index b8318766..839e4433 100644 --- a/src/layout/header-aside/layout.vue +++ b/src/layout/header-aside/layout.vue @@ -6,7 +6,11 @@
- + @@ -30,7 +34,14 @@
-
+
@@ -109,7 +120,8 @@ export default { keepAlive: state => state.page.keepAlive, grayActive: state => state.gray.active, transitionActive: state => state.transition.active, - asideCollapse: state => state.menu.asideCollapse + asideCollapse: state => state.menu.asideCollapse, + asideTransition: state => state.menu.asideTransition }), ...mapGetters('d2admin', { themeActiveSetting: 'theme/activeSetting' diff --git a/src/setting.js b/src/setting.js index 3d159379..01161f0d 100644 --- a/src/setting.js +++ b/src/setting.js @@ -7,9 +7,10 @@ export default { close: 'esc' } }, - // 侧边栏默认折叠状态 + // 侧边栏默认配置 menu: { - asideCollapse: false + asideCollapse: false, + asideTransition: true }, // 在读取持久化数据失败时默认页面 page: { diff --git a/src/store/modules/d2admin/modules/account.js b/src/store/modules/d2admin/modules/account.js index 4e5d3e59..cbd960d0 100644 --- a/src/store/modules/d2admin/modules/account.js +++ b/src/store/modules/d2admin/modules/account.js @@ -77,8 +77,8 @@ export default { await dispatch('d2admin/transition/load', null, { root: true }) // 持久化数据加载上次退出时的多页列表 await dispatch('d2admin/page/openedLoad', null, { root: true }) - // 持久化数据加载侧边栏折叠状态 - await dispatch('d2admin/menu/asideCollapseLoad', null, { root: true }) + // 持久化数据加载侧边栏配置 + await dispatch('d2admin/menu/asideLoad', null, { root: true }) // 持久化数据加载全局尺寸 await dispatch('d2admin/size/load', null, { root: true }) // 持久化数据加载颜色设置 diff --git a/src/store/modules/d2admin/modules/menu.js b/src/store/modules/d2admin/modules/menu.js index d2337080..18338759 100644 --- a/src/store/modules/d2admin/modules/menu.js +++ b/src/store/modules/d2admin/modules/menu.js @@ -9,7 +9,9 @@ export default { // 侧栏菜单 aside: [], // 侧边栏收缩 - asideCollapse: setting.menu.asideCollapse + asideCollapse: setting.menu.asideCollapse, + // 侧边栏折叠动画 + asideTransition: setting.menu.asideTransition }, actions: { /** @@ -44,17 +46,51 @@ export default { }, { root: true }) }, /** - * 从持久化数据读取侧边栏展开或者收缩 + * 设置侧边栏折叠动画 * @param {Object} context + * @param {Boolean} transition is transition */ - async asideCollapseLoad ({ state, dispatch }) { + async asideTransitionSet ({ state, dispatch }, transition) { // store 赋值 - state.asideCollapse = await dispatch('d2admin/db/get', { + state.asideTransition = transition + // 持久化 + await dispatch('d2admin/db/set', { dbName: 'sys', - path: 'menu.asideCollapse', - defaultValue: setting.menu.asideCollapse, + path: 'menu.asideTransition', + value: state.asideTransition, user: true }, { root: true }) + }, + /** + * 切换侧边栏折叠动画 + * @param {Object} context + */ + async asideTransitionToggle ({ state, dispatch }) { + // store 赋值 + state.asideTransition = !state.asideTransition + // 持久化 + await dispatch('d2admin/db/set', { + dbName: 'sys', + path: 'menu.asideTransition', + value: state.asideTransition, + user: true + }, { root: true }) + }, + /** + * 持久化数据加载侧边栏设置 + * @param {Object} context + */ + async asideLoad ({ state, dispatch }) { + // store 赋值 + const menu = await dispatch('d2admin/db/get', { + dbName: 'sys', + path: 'menu', + defaultValue: setting.menu, + user: true + }, { root: true }) + + state.asideCollapse = menu.asideCollapse + state.asideTransition = menu.asideTransition } }, mutations: { diff --git a/src/views/demo/playground/store/menu/index.vue b/src/views/demo/playground/store/menu/index.vue index 56cee0e7..c447dd28 100644 --- a/src/views/demo/playground/store/menu/index.vue +++ b/src/views/demo/playground/store/menu/index.vue @@ -12,6 +12,7 @@ 设置侧栏空菜单 恢复侧栏菜单 + {{`${asideTransition ? '关闭' : '开启'}侧栏动画效果`}} @@ -21,7 +22,7 @@