20260721223033
This commit is contained in:
1 parent
bab8e2972f
commit
e9f099f044
26 files changed
+1687
-349
No files matched your search
@@ -20,7 +20,7 @@
|
||||
### 核心原则:各自负责各自
|
||||
|
||||
1. **权限负责「有什么操作」**,只声明编码目录,不持有任何界面文案。
|
||||
2. **多语言负责「所有界面显示名」**,是唯一文案数据源;但**只覆盖菜单 / 模块 / 字段三类显示名,不覆盖权限项**(权限名是给管理员看的配置标签,不是给终端用户的按钮文案)。
|
||||
2. **多语言负责「所有界面文案」**,是菜单、模块、权限、字段、提示、按钮和校验信息的统一文案数据源。
|
||||
3. **字段定义驱动列表与表单**,自身不关心权限、不关心翻译落点。
|
||||
4. **菜单是功能树的可投影子集**,不单独存一份菜单数据。
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
| 项 | 说明 |
|
||||
| --- | --- |
|
||||
| 模块编码 `b_id` | 唯一主键,如 `M_BIZ`、`M_USER` |
|
||||
| 模块编码 `b_code` | 可修改的唯一小写编码,如 `m_biz`、`m_user` |
|
||||
| 模块名称 | 在「多语言」中以 `module.<编码>` 维护(见 §5) |
|
||||
| 查询对象 `view_name` | 只读裸对象名(视图),如 `v_bs_business` |
|
||||
| 保存对象 `save_name` | 可写裸表名,如 `b_business`;只读模块允许为空 |
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
### 2.2 操作目录(权限项来源,见 §6)
|
||||
|
||||
模块声明它拥有哪些操作:`actions: [{ code, name }, ...]`。例如 `M_BIZ` 声明 `1=新增 … 7=导出`。
|
||||
模块声明它拥有哪些操作:`actions: [{ code, name }, ...]`。例如 `m_biz` 声明 `1=新增 … 7=导出`。
|
||||
|
||||
### 2.3 与其它能力的关联
|
||||
|
||||
@@ -112,7 +112,7 @@ Module
|
||||
|
||||
### 4.3 关键场景:同模块、不同页面、不同权限
|
||||
|
||||
多个 `page` 节点可绑定**同一个模块**(如 `M_BIZ` 被 `海运业务单 / 业务单查询 / 业务单审核` 三个页面引用)。它们共享字段与操作目录,但:
|
||||
多个 `page` 节点可绑定**同一个模块**(如 `m_biz` 被 `海运业务单 / 业务单查询 / 业务单审核` 三个页面引用)。它们共享字段与操作目录,但:
|
||||
|
||||
- 可见性各自独立(`业务单审核` 设 `showInMenu=false`,不进菜单);
|
||||
- 权限各自独立(操作员在「海运业务单」可提交,在「业务单审核」仅可审核)——授权由角色赋权页另配(不在本页面)。
|
||||
@@ -124,22 +124,25 @@ Module
|
||||
|
||||
所有**界面显示名**唯一数据源,以稳定 `i18nKey` 为中心,多种语言并列。
|
||||
|
||||
### 5.1 覆盖范围(仅三类显示名)
|
||||
### 5.1 覆盖范围
|
||||
|
||||
| 命名空间 | i18nKey 规则 | 示例 |
|
||||
| --- | --- | --- |
|
||||
| 菜单/功能树 | `menu.<节点id>` | `menu.page_biz` |
|
||||
| 模块 | `module.<模块编码>` | `module.M_BIZ` |
|
||||
| 字段 | `field.<模块>.<字段code>` | `field.M_BIZ.b_ywno` |
|
||||
|
||||
> **权限项名称不在此列**(见 §6 说明)。
|
||||
| 模块 | `module.<模块编码>` | `module.m_biz` |
|
||||
| 字段 | `field.<模块>.<字段code>` | `field.m_biz.b_ywno` |
|
||||
| 权限 | `power.<模块>.<权限code>` | `power.m_biz.audit` |
|
||||
| 按钮 | `button.<模块>.<动作>` | `button.m_biz.approve` |
|
||||
| 占位提示 | `placeholder.<模块>.<字段>` | `placeholder.m_biz.customer` |
|
||||
| 校验提示 | `validation.<模块>.<规则>` | `validation.m_biz.customer_required` |
|
||||
| 通用文案 | `common.<名称>` | `common.save` |
|
||||
|
||||
### 5.2 数据结构
|
||||
|
||||
```js
|
||||
i18nData = {
|
||||
"menu.page_biz": { "zh-CN": "海运业务单", "en-US": "Sea Business Orders", "zh-TW": "海運業務單" },
|
||||
"field.M_BIZ.b_ywno": { "zh-CN": "业务单号", "en-US": "Order No.", "zh-TW": "業務單號" }
|
||||
"field.m_biz.b_ywno": { "zh-CN": "业务单号", "en-US": "Order No.", "zh-TW": "業務單號" }
|
||||
// ...
|
||||
}
|
||||
```
|
||||
@@ -150,7 +153,8 @@ i18nData = {
|
||||
|
||||
### 5.3 管理界面要求
|
||||
|
||||
- 按命名空间类型筛选(菜单 / 模块 / 字段)。
|
||||
- 「多语言管理」是主配置中心,模块下的多语言面板是按当前模块过滤后的快捷编辑入口;两处写入同一张多语言表。
|
||||
- 支持按命名空间、模块、语言和缺失翻译状态筛选。
|
||||
- 以「Key + 各语言列」并列编辑;某语言留空即回退简体。
|
||||
- **缺失翻译检测**:非默认语言留空时标红,并汇总「N 条缺失」,提示补录。
|
||||
|
||||
@@ -165,20 +169,21 @@ i18nData = {
|
||||
```js
|
||||
// 模块声明
|
||||
actions: [
|
||||
{ code: 1, name: "新增" },
|
||||
{ code: 5, name: "审核" },
|
||||
{ code: 7, name: "导出" }
|
||||
{ code: 1, name: "新增", i18nKey: "power.m_biz.create" },
|
||||
{ code: 5, name: "审核", i18nKey: "power.m_biz.audit" },
|
||||
{ code: 7, name: "导出", i18nKey: "power.m_biz.export" }
|
||||
]
|
||||
```
|
||||
|
||||
- `code`:稳定操作编码,前端与后端统一引用(如 `5` 永远代表「审核」)。**授权与校验只认 `code`,不认名字。**
|
||||
- `name`:管理员可读的默认标签,仅一份(简体)。它是「这个编码是干嘛的」的配置注释,**不是终端用户的按钮文案**。
|
||||
- `name`:管理员可读的默认中文回退标签。
|
||||
- `i18nKey`:权限显示名绑定的多语言键;终端按钮如果需要不同文案,使用独立的 `button.*` Key。
|
||||
|
||||
### 6.2 为什么不进多语言
|
||||
### 6.2 权限与按钮文案的边界
|
||||
|
||||
- 授权逻辑只认 `code`,名字不参与校验,因此没有翻译必要。
|
||||
- 界面上的按钮文案常与权限名不同(权限叫「审核」,按钮可能写「通过」),把权限名塞进 i18n 反而把「权限定义」与「按钮文案」错误耦合。
|
||||
- 结论:**权限定义自洽于 `{code, name}`,与多语言彻底解耦**;终端用户看到的按钮文案由各自页面/组件自行在多语言里维护。
|
||||
- 授权与校验始终只认 `code`,不依赖任何语言文本。
|
||||
- 权限名称和按钮文案都进入统一多语言资源,但使用不同 Key,避免把「审核」与「通过」错误耦合。
|
||||
- 权限定义保持 `{code, name, i18nKey}` 自洽;按钮、提示和校验信息按各自命名空间独立维护。
|
||||
|
||||
### 6.3 与授权层的关系(边界)
|
||||
|
||||
@@ -203,10 +208,9 @@ actions: [
|
||||
├─ 分组 ─────────────► 组织 Form
|
||||
└─ 操作目录(code) ────► 权限内核(角色赋权页另行消费)
|
||||
▲
|
||||
│ 各自只声明,不持有文案
|
||||
│ 各自只声明稳定编码并绑定 i18nKey
|
||||
│
|
||||
多语言 (i18nKey → 多语言值) ──► 菜单名 / 模块名 / 字段标题 的唯一文案源
|
||||
(权限名不在内)
|
||||
多语言 (i18nKey → 多语言值) ──► 菜单 / 模块 / 权限 / 字段 / 按钮 / 提示 / 校验的唯一文案源
|
||||
|
||||
菜单 = 功能树中 showInMenu=1 且角色有查看权限的节点投影
|
||||
```
|
||||
@@ -218,7 +222,7 @@ actions: [
|
||||
| 设计项 | 原型位置 | 备注 |
|
||||
| --- | --- | --- |
|
||||
| 功能树四类节点 | `functionTree` | 已是响应式可编辑 |
|
||||
| 模块基本信息/字段/分组 | `modules` | `M_MODULE/M_USER/M_BIZ/M_FEE` |
|
||||
| 模块基本信息/字段/分组 | `modules` | `m_module/m_user/m_biz/m_fee` |
|
||||
| 字段驱动列表/表单 | `字段配置` Tab | 列表/表单/必填开关 |
|
||||
| 菜单投影 | `菜单预览` Tab | 按角色 + 语言渲染 |
|
||||
| 多语言 | `多语言` Tab | Key + 三语,含缺失标红 |
|
||||
@@ -228,8 +232,8 @@ actions: [
|
||||
|
||||
原型已按本文设计落地:
|
||||
|
||||
- **多语言仅覆盖菜单 / 模块 / 字段三类显示名**;`action.*` 条目已从 `i18nData` 彻底移除,权限项名不再进多语言(符合 §6)。
|
||||
- **权限项仅含 `{code, name}`**,`name` 为管理员可读标签,不在多语言维护;新增权限项不再生成 i18nKey。
|
||||
- **多语言覆盖所有界面文案**;权限名称使用 `power.*`,终端按钮使用独立的 `button.*`,两者不耦合。
|
||||
- **权限项包含 `{code, name, i18nKey}`**;授权仍只认 `code`,`name` 作为默认中文回退。
|
||||
- **字段多语言可在字段配置处点击设置**:标题单元格带多语言按钮,点击打开该字段的简体/English/繁體编辑框(i18nKey 形如 `field.<模块>.<字段>`)。
|
||||
- **字段 `i18nKey` 统一为 `field.<模块>.<字段>`**,与模块/菜单 `<id>` 前缀、整体「命名空间.容器.标识」规则一致。
|
||||
- 授权 `roleNodePerm` 仍为写死 mock,仅用于菜单预览示意,符合 §6.3 边界(角色赋权在另一页面,不在模块管理内)。
|
||||
@@ -244,7 +248,7 @@ actions: [
|
||||
| `s_module_field` | 字段配置(编码、标题键、类型、列表/表单/必填、分组) |
|
||||
| `s_module_group` | 表单分组 |
|
||||
| `s_function_node` | 功能树(目录/页面/分组/模块定位) |
|
||||
| `s_i18n` | 多语言键值(key → 各语言值),覆盖菜单/模块/字段 |
|
||||
| `s_i18n` | 统一多语言键值(key → 各语言值),覆盖所有界面文案 |
|
||||
| 权限相关表 | 独立系统表,不属于 Table/Form 渲染配置 |
|
||||
|
||||
> 角色与权限内核使用独立系统表,不写入模块渲染配置;后端按 `module_id` + 操作 `code` 校验权限,不能只依赖前端隐藏。
|
||||
Reference in new issue
Block a user