Files
workspace/code/fms/docs/refactor/功能树与模块配置重构计划.md
T
2026-08-04 22:31:52 +08:00

3.6 KiB

功能树与模块配置重构计划

1. 目标

本次重构解决两个问题:

  1. 技术人员能够按业务结构定位页面下的主模块、明细模块和隐藏模块,不再依赖扁平列表逐个搜索。
  2. 字段和表单分组在同一个工作区维护,常用配置直接编辑,高级配置按需展开。

功能树不生成页面或 Tab。页面布局和模块组合继续由手写 Vue 页面负责。

2. 数据边界

数据 责任
s_function_node 目录、页面、技术分组和模块管理位置;菜单由可见节点投影
s_module 查询对象、保存对象、业务主键和模块级状态
s_module_field 列表、查询和表单字段配置
s_module_group 表单字段分组

功能节点父子关系只表示管理位置,不定义保存事务或业务组合。页面节点可以绑定主模块,权限继续按菜单入口、模块和动作独立校验。

3. 实施阶段

阶段 A:功能树基础

  • 创建 s_function_node,页面菜单允许直接绑定模块。
  • 写入“系统管理 / 模块管理 / 模块定义”最小种子。
  • 模块管理加载完整功能树,未被功能节点引用的模块进入“未归档模块”。
  • 搜索匹配节点名称、模块编码、模块名称、查询对象和保存对象,并保留祖先节点。

阶段 B:模块配置工作区

  • 左侧用功能树代替分页模块表格。
  • 目录和页面节点只负责展开;模块节点打开右侧配置。
  • 保留模块启停快捷开关。
  • 提供“模块”和“菜单”两个显示开关,隐藏菜单层级时仍能直接定位模块。
  • 从当前树节点新建模块时自动带入归属位置,保存模块后同步创建树节点。
  • 右侧显示模块完整路径和模块编码。

阶段 C:字段设计器

  • 合并“字段配置”和“表单分组”为一个“字段设计”Tab。
  • 左侧显示“全部字段、未分组、已配置分组”。
  • 分组支持新增、编辑、删除和排序。
  • 右侧字段表格直接编辑标题、控件、分组、列表显示、表单显示、必填和启停。
  • 字段表格一次只允许一行进入编辑态,高级属性在当前行下方展开,不使用字段抽屉。
  • 字段表格占满字段设计工作区剩余高度。
  • 保存仍复用模块、字段、分组一次事务提交。

阶段 D:菜单投影

  • 完成现有静态菜单到功能树的迁移清单。
  • 侧边栏读取 b_show_in_menu = 1 的目录和页面,并按节点编码或页面路由与现有静态菜单合并。
  • 功能目录修改后刷新菜单投影;在迁移完成前保留未登记的静态菜单,避免功能入口丢失。
  • 所有菜单节点和路由核对完成后,再删除静态回退配置。

4. 验收标准

  • 可以从“海运业务 / 海运业务单 / 装箱”路径定位主表和明细模块。
  • 隐藏模块不出现在业务菜单,但可在模块管理中定位。
  • 同一个模块可以被多个功能节点引用。
  • 页面和 Tab 不由配置自动生成。
  • 未归档模块始终可搜索和打开。
  • 字段常用属性无需逐个打开弹窗即可修改。
  • 删除分组时仍阻止删除被字段引用的分组。
  • 功能树、模块配置和权限的职责没有混用。

5. 当前迁移策略

当前版本已经完成阶段 A、B、C,并以兼容合并方式启动阶段 D。功能树中的可见目录和页面会立即投影到侧边栏;尚未登记的旧菜单继续使用静态配置。待现有菜单和路由全部登记并核对后,侧边栏再切换为完全由功能树驱动。