This commit is contained in:
wuzilong committed 2026-10-05 12:57:51 +08:00
1 parent 59fafb92d5
commit 6abfb6e251
1512 files changed
+1565614 -275592

No files matched your search

@@ -237,26 +237,17 @@ Web 管理端弹窗 SHALL 遵循规范:表单 `label-position="top"`;遮罩
### Requirement: 侧边栏菜单图标层级规则
`web-admin` 左侧菜单区域的图标展示 SHALL 遵循以下层级规则:
1. **一级菜单**(顶层菜单项)SHALL 在菜单名称前展示图标(`meta.icon`)。
2. **二级及以下菜单**(子菜单项)SHALL NOT 展示图标,仅展示文字名称。
3. 双列菜单模式(`DualMenu`)左侧一级图标栏 SHALL 为每个一级菜单项渲染图标,与侧边栏一级规则一致。
4. 水平菜单(`HorizontalMenu`)和混合菜单(`MixedMenu`)如使用图标,SHALL 与侧边栏保持相同的层级规则。
`web-admin` 左侧树形菜单每一项(含一级与所有子级)SHALL 在名称前展示图标。图标解析顺序为 `meta.icon` → 路由 `name` / `menuCode` 映射(`resolveSidebarMenuIcon`)→ 目录缺省 `ri:folder-2-line` / 叶子缺省 `ri:file-list-2-line`。
#### Scenario: 侧边栏一级菜单图标
#### Scenario: 侧边栏各级菜单均有图标
- **WHEN** 用户打开 `web-admin` 主页,查看左侧菜单区域的一级菜单项
- **THEN** 每个一级菜单项 SHALL 在文字名称左侧展示其 `meta.icon` 对应的图标
#### Scenario: 侧边栏二级菜单无图标
- **WHEN** 用户展开某个一级菜单,查看其下的二级(及更深层级)菜单项
- **THEN** 二级及以下菜单项 SHALL NOT 展示任何图标,仅显示菜单文字名称
- **WHEN** 用户查看左侧菜单树(含展开后的二级「基础配置」等最后一层非叶子)
- **THEN** 每一项名称左侧 SHALL 展示图标,SHALL NOT 仅一级有图标、子级纯文字
#### Scenario: Code review 菜单图标
- **WHEN** PR 修改了 `SidebarSubmenu.vue` 或其他菜单组件中图标渲染逻辑
- **THEN** 审查者 SHALL 确认 `level === 0` 条件判断保持不变,仅一级菜单渲染图标
- **THEN** 审查者 SHALL 确认各级菜单项均渲染 `menu-icon`,SHALL NOT 用 `level === 0` 隐藏子级图标
### Requirement: 标签页(WorkTab)不展示图标
@@ -272,6 +263,30 @@ Web 管理端弹窗 SHALL 遵循规范:表单 `label-position="top"`;遮罩
- **WHEN** PR 修改了 `art-work-tab/index.vue` 或 `utils/navigation/worktab.ts`
- **THEN** 审查者 SHALL 确认标签页组件不渲染图标,且 `setWorktab` 不向 `openTab` 传递 `icon` 字段
### Requirement: 侧栏非叶子与组叶子 Tab
`web-admin` 业务导航 SHALL 在侧栏仅展示非叶子节点。点击最后一层非叶子(可见子节点均为叶子)或混合节点(同时有目录与叶子)时:若该组「有权限且未隐藏」的叶子多于 1 个,内容区 SHALL 展示这些叶子为固定 Tab(不可单个关闭);若仅 1 个可见叶子(如 CRM 产品管理、客户管理),SHALL NOT 渲染组 Tab 条,直接展示该叶子页。默认仅挂载当前路由对应页面;切换到其它 Tab 后再挂载该页;同组已访问叶子 SHALL 保持缓存直至组切换。隐藏路由(`isHide`)SHALL NOT 出现在 Tab 条上,SHALL 通过 `meta.activePath` 或最长叶子路径前缀使父叶子保持选中。SHALL NOT 将组 Tab 实现为可关闭的 WorkTab。
#### Scenario: 报销基础配置
- **WHEN** 用户点击报销管理下的「基础配置」
- **THEN** 内容区 Tab 为费用项目管理、工作流配置(备用金)、工作流配置(报销单),并默认打开第一项(或当前 URL 已指向的项)
#### Scenario: 切换备用金整组替换
- **WHEN** 用户接着点击「备用金」
- **THEN** 上一组 Tab 全部消失,换成备用金申请、审批、发放,并卸载上一组已缓存页面
#### Scenario: 隐藏表单
- **WHEN** 用户从报价单管理进入报价单表单
- **THEN** Tab 条仍为该组可见叶子(报价单管理、报价单审批),「报价单管理」保持选中,内容为表单页
#### Scenario: 单叶子组不显示 Tab
- **WHEN** 用户点击 CRM「产品管理」或「客户管理」(该组仅 1 个可见叶子)
- **THEN** 内容区 SHALL NOT 显示组 Tab 条,直接打开对应列表页
### Requirement: 表单字段注释格式
`web-admin` 中弹窗表单(`el-form-item`)如需对某字段添加辅助说明文字(如"数值越小越靠前"),该注释 SHALL 以小字形式直接显示在 label 文字后方,SHALL NOT 放置在输入控件旁边或下方。实现方式为使用 `el-form-item` 的 `#label` 插槽,在 label 文字后追加 `<span class="form-label-tip">注释内容</span>`。样式类 `form-label-tip` 定义在全局 `app.scss` 中(字号 12px、`font-weight: 400`、使用 `--mint-text-muted` 颜色)。
@@ -1640,7 +1655,7 @@ import { protocolStatusLabel, protocolStatusTagType } from '@/utils/status-tag-r
- **WHEN** 在 `src/router/modules/` 或 `backend/app/api/menu.py` 为一级菜单设置 `meta.icon`
- **THEN** 图标名 SHALL 已在 `web-admin/src/utils/ui/ep-icon-map.ts` 注册
- **THEN** 刷新后侧边栏一级项 SHALL 显示图标(`SidebarSubmenu` 仅 `level === 0` 渲染图标)
- **THEN** 刷新后侧边栏该项 SHALL 显示图标
#### Scenario: EC-UI-002 Code review