2级sidebar

This commit is contained in:
2025-12-13 15:56:12 +08:00
parent 3442f96214
commit b57a002de8
46 changed files with 1529 additions and 203 deletions

View File

@@ -149,33 +149,60 @@
// 用户信息
.user-section {
padding: 16px 20px;
padding: 16px;
border-top: 1px solid rgba(0, 0, 0, 0.08);
cursor: pointer;
transition: background 0.2s;
&:hover {
background: rgba(124, 58, 237, 0.05);
}
.user-info-wrapper {
display: flex;
align-items: center;
gap: 12px;
}
display: flex;
align-items: center;
gap: 12px;
.user-avatar {
width: 36px;
height: 36px;
cursor: pointer;
transition: transform 0.2s;
flex-shrink: 0;
&:hover {
transform: scale(1.1);
}
:deep(.el-avatar) {
width: 100%;
height: 100%;
}
}
.user-name {
flex: 1;
font-size: 14px;
font-weight: 500;
color: #333;
color: #303133;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.back-icon {
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 6px;
cursor: pointer;
color: #606266;
transition: all 0.2s;
flex-shrink: 0;
&:hover {
color: #7c3aed;
background: rgba(124, 58, 237, 0.1);
}
.el-icon {
font-size: 18px;
}
}
}
// ==================== 主内容区 ====================

View File

@@ -143,13 +143,12 @@ function loadMenuFromStorage(): MenuItem[] {
const userViews = loginDomain.userViews || []
// SidebarLayout parentId platform admin
// AdminIframeSidebarLayout 3 iframe
const sidebarViews = userViews.filter((view: any) =>
view.layout === 'SidebarLayout' &&
!view.parentId &&
view.layout === 'AdminIframeSidebarLayout' && // AdminIframeSidebarLayout
view.viewType === 'iframe' && // iframe
view.type === 1 && // type 1
view.service === 'platform' && // platform
view.url?.startsWith('/admin') // admin AdminSidebar
view.service === 'platform' // platform
)
// orderNum
@@ -288,5 +287,5 @@ watch(
</script>
<style lang="scss" scoped>
@import url("./SidebarLayout.scss");
@import url("./AdminIframeSidebarLayout.scss");
</style>

View File

@@ -165,7 +165,7 @@ function loadMenuFromStorage(): MenuItem[] {
!view.url?.startsWith('/admin') // 排除 admin 路由(由 AdminSidebar 管理)
)
hasAdmin.value = userViews.filter((view: any) =>
view.layout === 'SidebarLayout' &&
view.layout === 'AdminIframeSidebarLayout' &&
!view.parentId &&
view.type === 1 && // type 1 是侧边栏菜单
view.service === 'platform' && // 只显示 platform 服务的视图
@@ -266,7 +266,7 @@ const handleUserCommand = (command: string) => {
const loginDomain = JSON.parse(loginDomainStr)
const userViews = loginDomain.userViews || []
const adminViews = userViews.filter((view: any) =>
view.service === 'platform' && view.url?.startsWith('/admin')
view.service === 'platform' && view.url?.startsWith('/admin') && view.viewType === 'iframe'
)
if (adminViews.length > 0) {
// 按 orderNum 排序,跳转到第一个

View File

@@ -1,3 +1,4 @@
export { default as SidebarLayout } from "./SidebarLayout/SidebarLayout.vue";
export { default as AdminIframeSidebarLayout } from "./AdminIframeSidebarLayout/AdminIframeSidebarLayout.vue";
// BlankLayout从shared导入
export { BlankLayout } from 'shared/layouts';
export { BlankLayout, AdminSidebarLayout } from 'shared/layouts';