Files
erp/plans/cheeky-shimmying-jellyfish.md
iven 841766b168
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
fix(用户管理): 修复用户列表页面加载失败问题
修复用户列表页面加载失败导致测试超时的问题,确保页面元素正确渲染
2026-04-19 08:46:28 +08:00

2.0 KiB
Raw Blame History

插件侧边栏三级菜单重构

Context

当前插件菜单是扁平结构,所有插件的页面(客户管理、联系人、沟通记录等)都平铺在"插件"分组下。随着更多插件接入,菜单会变得杂乱无章。需要改为三级结构:

插件(分组标题)
  └ CRM插件名称可折叠
      ├ 客户管理
      ├ 联系人
      ├ 沟通记录
      ├ 标签管理
      └ 客户关系
  └ 未来插件名称(可折叠)
      ├ 页面1
      └ 页面2

改动范围

仅涉及前端两个文件,无需后端改动(PluginMenuItem.pluginId 字段已存在)。

1. apps/web/src/stores/plugin.ts

改动: 新增 PluginMenuGroup 类型和 pluginMenuGroups getter。

export interface PluginMenuGroup {
  pluginId: string;
  pluginName: string;   // 从 cachedPlugins 取 metadata.name
  items: PluginMenuItem[];
}

在 store 中添加一个 pluginMenuGroups 计算属性Zustand getterpluginId 分组,取插件名称从 plugins 数组中查找。

2. apps/web/src/layouts/MainLayout.tsx

改动:

  • 新增 SidebarSubMenu 组件:显示插件名称作为可折叠子标题,渲染其下级 SidebarMenuItem
  • 子标题使用 expand-icon (右箭头) 指示可折叠,点击切换展开/收起
  • 子标题样式:略深背景 + 左侧有缩进指示线
  • 子菜单项有额外左缩进12px表示层级
  • 折叠侧边栏时,子菜单标题只显示插件图标,悬浮弹出子项

渲染逻辑:

"插件" 标签
  for each group in pluginMenuGroups:
    <SidebarSubMenu title=group.pluginName items=group.items />

验证

  1. 启动前端 pnpm dev,访问侧边栏
  2. 确认 CRM 插件下所有 5 个菜单项嵌套在 "CRM" 子标题下
  3. 点击 "CRM" 子标题可展开/收起
  4. 折叠侧边栏后CRM 子项通过 tooltip 或悬浮展示
  5. 点击各子项,路由正确跳转
  6. 页面标题(面包屑)正确显示