diff --git a/vue/src/asset/style/transition.scss b/vue/src/asset/style/transition.scss
index e187ba2..f05199c 100644
--- a/vue/src/asset/style/transition.scss
+++ b/vue/src/asset/style/transition.scss
@@ -209,19 +209,16 @@ $transition-easing: cubic-bezier(0.215, 0.61, 0.355, 1);
&-enter-to,
&-leave {
transform: perspective(400px) rotate3d(1, 1, 0, 0deg)
-
}
}
.flip-right {
&-enter {
transform: perspective(400px) rotate3d(0, 1, 0, -180deg)
-
}
&-leave-to {
transform: perspective(400px) rotate3d(0, 1, 0, 180deg)
-
}
}
diff --git a/vue/src/asset/style/variables.scss b/vue/src/asset/style/variables.scss
index 7265234..2f0bbc5 100644
--- a/vue/src/asset/style/variables.scss
+++ b/vue/src/asset/style/variables.scss
@@ -51,7 +51,7 @@ $--font-path: '~element-ui/lib/theme-chalk/fonts';
$menu-icon-text-gap: 10px;
//侧边菜单icon的大小
-$aside-icon-size: 14px;
+$aside-icon-size: 16px;
//侧边栏菜单的背景色
$aside-menu-background: #304156;
//侧边栏子菜单的背景色
diff --git a/vue/src/component/Icon/index.vue b/vue/src/component/Icon/index.vue
index cc074a7..4c42251 100644
--- a/vue/src/component/Icon/index.vue
+++ b/vue/src/component/Icon/index.vue
@@ -11,6 +11,8 @@ export default {
render(h, context) {
const {data, props: {icon}} = context
+ if (!icon) return
+
//渲染成svg
if (icon.startsWith(SVG_PREFIX)) {
return (
diff --git a/vue/src/component/menu/NavMenu/index.vue b/vue/src/component/menu/NavMenu/index.vue
index 694c6ee..240160b 100644
--- a/vue/src/component/menu/NavMenu/index.vue
+++ b/vue/src/component/menu/NavMenu/index.vue
@@ -11,11 +11,31 @@ export default {
mode: {type: String, default: 'vertical'},
collapse: Boolean,
showParentOnCollapse: Boolean,
- showIconMaxDepth: {type: Number, default: 1}
+ showIconMaxDepth: {type: Number, default: 1},
+ switchTransition: Boolean,
+ switchTransitionName: {type: String, default: 'sidebar'}
},
render(h, context) {
- const {data, props: {mode, menus, collapse, showParentOnCollapse, showIconMaxDepth}} = context
+ const {
+ data, children,
+ props: {
+ mode, menus, collapse, showParentOnCollapse,
+ showIconMaxDepth, switchTransition, switchTransitionName
+ }
+ } = context
+
+ let items = children || menus.map(m => (
+
+ ))
+ if (switchTransition) {
+ items = {items}
+ }
return (
- {menus.map(m => (
-
- ))}
+ {items}
)
}
}
+
+
diff --git a/vue/src/component/menu/NavMenu/item.vue b/vue/src/component/menu/NavMenu/item.vue
index b9feda5..9c92941 100644
--- a/vue/src/component/menu/NavMenu/item.vue
+++ b/vue/src/component/menu/NavMenu/item.vue
@@ -1,7 +1,5 @@
+
+
diff --git a/vue/src/layout/component/Aside/OnePart/index.vue b/vue/src/layout/component/Aside/OnePart/index.vue
new file mode 100644
index 0000000..267d4c0
--- /dev/null
+++ b/vue/src/layout/component/Aside/OnePart/index.vue
@@ -0,0 +1,222 @@
+
+
+
diff --git a/vue/src/layout/component/Aside/TwoPart/index.vue b/vue/src/layout/component/Aside/TwoPart/index.vue
index 21364fd..2a80b49 100644
--- a/vue/src/layout/component/Aside/TwoPart/index.vue
+++ b/vue/src/layout/component/Aside/TwoPart/index.vue
@@ -1,12 +1,84 @@
-
+
+
diff --git a/vue/src/layout/component/Aside/TwoPart/root.vue b/vue/src/layout/component/Aside/TwoPart/root.vue
index aa7553c..ae10ee3 100644
--- a/vue/src/layout/component/Aside/TwoPart/root.vue
+++ b/vue/src/layout/component/Aside/TwoPart/root.vue
@@ -1,6 +1,45 @@
diff --git a/vue/src/layout/component/Aside/TwoPart/sub.vue b/vue/src/layout/component/Aside/TwoPart/sub.vue
index 912014f..2130146 100644
--- a/vue/src/layout/component/Aside/TwoPart/sub.vue
+++ b/vue/src/layout/component/Aside/TwoPart/sub.vue
@@ -1,20 +1,97 @@
-
+
-
-
diff --git a/vue/src/layout/component/Aside/index.vue b/vue/src/layout/component/Aside/index.vue
index 52810e4..be50baf 100644
--- a/vue/src/layout/component/Aside/index.vue
+++ b/vue/src/layout/component/Aside/index.vue
@@ -1,208 +1,48 @@
- render() {
- if (this.menus.length <= 0) return
+
+/* 侧边栏切换动画结束 */
+
diff --git a/vue/src/layout/component/Header/component/Navbar/component/Bell.vue b/vue/src/layout/component/Header/Navbar/component/Bell.vue
similarity index 100%
rename from vue/src/layout/component/Header/component/Navbar/component/Bell.vue
rename to vue/src/layout/component/Header/Navbar/component/Bell.vue
diff --git a/vue/src/layout/component/Header/component/Navbar/component/Hamburger.vue b/vue/src/layout/component/Header/Navbar/component/Hamburger.vue
similarity index 100%
rename from vue/src/layout/component/Header/component/Navbar/component/Hamburger.vue
rename to vue/src/layout/component/Header/Navbar/component/Hamburger.vue
diff --git a/vue/src/layout/component/Header/component/Navbar/component/HeadMenu.vue b/vue/src/layout/component/Header/Navbar/component/HeadMenu.vue
similarity index 98%
rename from vue/src/layout/component/Header/component/Navbar/component/HeadMenu.vue
rename to vue/src/layout/component/Header/Navbar/component/HeadMenu.vue
index 827b953..7447641 100644
--- a/vue/src/layout/component/Header/component/Navbar/component/HeadMenu.vue
+++ b/vue/src/layout/component/Header/Navbar/component/HeadMenu.vue
@@ -5,6 +5,7 @@
*/
import menuMixin from "@/layout/mixin/menu"
import {getters as appGetters, mutations as appMutations} from "@/layout/store/app"
+import NavMenu from "@/component/menu/NavMenu"
import NavMenuItem from "@/component/menu/NavMenu/item"
import {getActiveMenuByRoute} from "@/layout/util"
@@ -13,7 +14,7 @@ export default {
mixins: [menuMixin],
- components: {NavMenuItem},
+ components: {NavMenu, NavMenuItem},
props: {
//是否在只有一个顶部菜单时仍然渲染
@@ -190,15 +191,14 @@ export default {
}
return (
-
{this.renderVisibleMenus(visibleMenus)}
{this.renderHiddenMenus(hiddenMenus, hiddenMenus.length === menus.length)}
-
+
)
}
}
diff --git a/vue/src/layout/component/Header/component/Navbar/index.vue b/vue/src/layout/component/Header/Navbar/index.vue
similarity index 76%
rename from vue/src/layout/component/Header/component/Navbar/index.vue
rename to vue/src/layout/component/Header/Navbar/index.vue
index 6a9d01a..f960e2e 100644
--- a/vue/src/layout/component/Header/component/Navbar/index.vue
+++ b/vue/src/layout/component/Header/Navbar/index.vue
@@ -42,13 +42,14 @@ export default {
//渲染折叠按钮的条件
//①侧边栏有菜单
//②移动端
- //③桌面端且是侧边栏导航或混合导航模式
- //④桌面端且未设置侧边栏自动隐藏
+ //③桌面端是双层侧边栏导航
+ //④桌面端且是侧边栏导航或混合导航时,未设置侧边栏自动隐藏
const hasSidebarMenus = getSidebarMenus().length > 0,
isMobile = appGetters.isMobile,
- correctMode = ['aside','mix'].includes(appGetters.navMode),
- notAutoHidden = !asideGetters.autoHide,
- renderHamburger = hasSidebarMenus && (isMobile || correctMode && notAutoHidden)
+ correctMode =
+ ['aside', 'mix'].includes(appGetters.navMode) && !asideGetters.autoHide
+ || appGetters.navMode === 'aside-two-part',
+ renderHamburger = hasSidebarMenus && (isMobile || correctMode)
if (renderHamburger) {
const active = isMobile ? asideGetters.show : !asideGetters.collapse
@@ -123,4 +124,53 @@ export default {
}
-
+
diff --git a/vue/src/layout/component/Header/component/TagsView/ScrollPanel.vue b/vue/src/layout/component/Header/TagsView/ScrollPanel.vue
similarity index 100%
rename from vue/src/layout/component/Header/component/TagsView/ScrollPanel.vue
rename to vue/src/layout/component/Header/TagsView/ScrollPanel.vue
diff --git a/vue/src/layout/component/Header/component/TagsView/index.vue b/vue/src/layout/component/Header/TagsView/index.vue
similarity index 100%
rename from vue/src/layout/component/Header/component/TagsView/index.vue
rename to vue/src/layout/component/Header/TagsView/index.vue
diff --git a/vue/src/layout/component/Header/component/TagsView/style.scss b/vue/src/layout/component/Header/TagsView/style.scss
similarity index 100%
rename from vue/src/layout/component/Header/component/TagsView/style.scss
rename to vue/src/layout/component/Header/TagsView/style.scss
diff --git a/vue/src/layout/component/Header/component/Navbar/style.scss b/vue/src/layout/component/Header/component/Navbar/style.scss
deleted file mode 100644
index 35c77ee..0000000
--- a/vue/src/layout/component/Header/component/Navbar/style.scss
+++ /dev/null
@@ -1,101 +0,0 @@
-@import "~@/asset/style/variables.scss";
-
-.navbar {
- display: flex;
- justify-content: space-between;
- align-items: center;
- flex-wrap: nowrap;
- height: $nav-height;
- padding: 0 12px;
- transition: height .3s ease-in-out;
- position: relative;
- z-index: 9;
- background-color: #ffffff;
- box-shadow: 0 1px 4px rgba(0, 21, 41, .08);
-
- > div {
- display: flex;
- flex-wrap: nowrap;
- height: 100%;
- }
-
- .navbar-icon {
- font-size: 18px;
- }
-
- .navbar-item {
- display: flex;
- align-items: center;
- padding: 0 8px;
- color: #5a5e66;
- transition: background .3s;
- cursor: pointer;
-
- &:hover {
- background: rgba(0, 0, 0, .025)
- }
- }
-
- .avatar-wrapper {
- display: flex;
- align-items: center;
-
- span {
- margin-right: 5px;
- font-size: 18px;
- }
- }
-}
-
-//顶部水平菜单
-.el-menu--horizontal .el-menu,
-.el-menu--horizontal.el-menu {
- font-size: 14px;
-
- .icon {
- font-size: 14px;
- }
-
- //图标和文字的间隔
- .icon + .menu-item-content {
- margin-left: $menu-icon-text-gap;
- }
-
- //菜单的文字以及hover颜色
- .el-menu-item,
- .el-submenu__title {
- color: $head-menu-item-color;
-
- &:hover {
- color: $head-menu-item-hover-color;
- }
-
- > span {
- max-width: 100px;
- }
- }
-
- //submenu的右侧箭头会稍微偏上,不懂为啥
- .el-submenu__icon-arrow {
- margin-top: -4px;
- }
-}
-
-//顶部菜单的顶级节点
-.el-menu--horizontal.el-menu {
- //不显示折叠展开按钮
- > .el-submenu > .el-submenu__title > .el-submenu__icon-arrow {
- display: none;
- }
-
- //顶级节点的高度以及hover颜色
- > .el-menu-item,
- > .el-submenu > .el-submenu__title {
- height: $nav-height;
- line-height: $nav-height;
-
- &:hover {
- border-bottom: 2px solid $head-menu-item-hover-color;
- }
- }
-}
diff --git a/vue/src/layout/component/Header/index.vue b/vue/src/layout/component/Header/index.vue
index ccdb126..5495b5f 100644
--- a/vue/src/layout/component/Header/index.vue
+++ b/vue/src/layout/component/Header/index.vue
@@ -1,7 +1,7 @@