This commit is contained in:
oneao committed 2026-10-13 22:32:50 +08:00
1 parent f3936cec61
commit 15e0ae5b67
115 files changed
+11399 -2741

No files matched your search

+38
View File
@@ -20,6 +20,8 @@
| 4 | `20_registration/10_fms_workflow_module.sql` | 4 个只读视图 + `s_module` / `s_field` / `s_module_schema` / `s_menu_module` 注册 | 是(先删后建) |
| 5 | `20_registration/11_fms_workflow_menu.sql` | 流程管理 / 审批中心菜单 + `s_i18n` | 是 |
| 6 | `20_registration/12_fms_workflow_power.sql` | 菜单权限点 + 动作权限点 + 授予 `g3soft` | 是 |
| 6.5 | `20_registration/13_table_test_menu.sql` | 表格测试根菜单(`/table-test`)+ `s_i18n` | 是 |
| 6.6 | `20_registration/14_dashboard_menu.sql` | 首页根菜单(`/dashboard`)+ `s_i18n` | 是 |
| 7 | `30_patches/01_fms_workflow_index_patch.sql` | 补充索引(见下) | 是 |
| 8 | `90_mock/01_fms_workflow_mock.sql` | **示例**流程定义 `expense_approval`(14 节点 / 17 连线 / 13 审批人规则) | 否 |
| 9 | `90_mock/02_fms_workflow_runtime_mock.sql` | **示例**运行数据:演示机构/用户 + 6 个实例 | 否 |
@@ -71,6 +73,42 @@ select distinct b_module_id from dbo.wf_binding where b_canuse = 1
- **审计探写**:`WorkflowAuditWriter` 每事务探测 `s_log_audit` 是否存在;不存在时写一条
`wf_outbox(audit.skipped)` 并继续。**库里没有审计表不算故障**,不会阻断审批。
## 菜单现在是动态的(第 6.5 步的背景)
前端侧栏菜单已改为**动态**:读 `s_menu` 表构建菜单树(对照 fms-vue 的 `stores/menus.js`
+ `AppSidebar`),不再使用前端常量菜单。因此**新增页面必须两步都做**:
1. 在前端加一条静态路由(`web/src/router/index.ts`,数据库存不了 Vue 组件);
2. 在 `s_menu` 里录一条菜单(决定是否出现在侧栏、叫什么、排第几)。
`13_table_test_menu.sql` 就是第 2 步的示例:把「表格测试」页挂成**根菜单**,路由 `/table-test`。
**权限是白名单语义**:`s_power` 里没有 `menu.{菜单编码}`、或用户未被授权,侧栏就**不显示**该菜单、
路由守卫也会拦到 `/403`。`g3soft` 超管前后端都提权、不受此限,调试时先用它登录最省事;
要给普通账号开放,用该脚本末尾注释掉的「可选:给普通账号授权」那段。
### ⚠️ 菜单与路由必须成对,否则点进去是 404
**`s_menu` 里有 `b_route` 的每一条页面菜单,前端都必须有一条 path 完全相同的静态路由。**
少一条,点击该菜单就会落到 router 末尾的 `/:pathMatch(.*)*` 通配路由 → 显示 404 缺省页。
实测过的坑:只给已实现的页面建路由、其余菜单不建,会表现为「**菜单点进去全是 404**」——
而 Vite dev server 对任意路径都返回 HTTP 200(SPA fallback),所以浏览器网络面板里
**看不到 404 状态码**,容易误判成后端或代理问题。真正的判据是**路由是否匹配**,不是 HTTP 状态。
当前 `s_menu` 的 13 条页面菜单与前端路由已逐条对齐:
| s_menu `b_route` | 页面 | 状态 |
|---|---|---|
| `/dashboard` | 首页 | 占位(`views/dashboard/index.vue`) |
| `/table-test` | 表格测试 | **已实现**(G3Table 完整范例) |
| `/approval/todo`、`/initiated`、`/done`、`/cc` | 审批中心 | 占位 |
| `/base/othercompany`、`/contact`、`/otherdata` | 基础资料 | 占位 |
| `/system/user`、`/system/workflow`、`/system/log/login`、`/system/log/audit` | 系统管理 | 占位 |
占位页统一复用 `web/src/components/PlaceholderPage.vue`:把真实页面写进对应视图文件即可,
**路由与菜单都不用再改**。
## 补充索引说明(第 7 步)
| 索引 | 解决什么 |