20260913231607
This commit is contained in:
1 parent
f3ad727f1c
commit
c31329d387
179 files changed
+10846
-2684
No files matched your search
+31
-31
@@ -116,7 +116,7 @@ s_module
|
||||
| 表单布局 | JSON | 支持分组、栅格、选项卡和条件显示 |
|
||||
| 查询配置 | JSON | 支持同字段多条件、条件组和嵌套逻辑 |
|
||||
| 字段分组 | 布局 JSON 节点 | 不再建立独立字段分组表 |
|
||||
| 用户偏好 | JSON 偏离量 | 只保存用户相对默认配置的修改 |
|
||||
| 用户偏好 | JSON 偏离量 | 只保存用户相对系统默认的修改 |
|
||||
| 多语言 | 关系表 | 支持按语言查询、导入、导出和回退 |
|
||||
| 用户与部门 | 关系表 | 用户归属部门,部门支持层级树 |
|
||||
| 权限 | 关系表 | 见第 14 节,不与界面布局混合 |
|
||||
@@ -341,6 +341,21 @@ query
|
||||
|
||||
当前阶段不维护同一类型的多套命名配置。若未来确实需要多套列表、表单或查询方案,再增加配置编码字段,或在 JSON 内增加方案节点。
|
||||
|
||||
### 6.0 配置两层继承(系统默认 → 个人)
|
||||
|
||||
模块 UI 配置采用两层继承,由两张字符结构一致的表(`s_module_schema` 系统默认 + `s_user_module_pref` 个人覆盖)表达。配置层级由**表本身**体现,不在 JSON 内部用 `default`、`system`、`user` 等节点表示层级。
|
||||
|
||||
```text
|
||||
系统默认(s_module_schema) 产品/开发者提供的标准 Schema
|
||||
↓ 覆盖
|
||||
个人配置(s_user_module_pref) 用户在系统默认之上的个人调整
|
||||
```
|
||||
|
||||
- `view`、`edit`、`query` 是三种一致的 `b_schema_type`,两层共用同一命名,不拆成独立表,也不引入部门/角色/租户配置层。
|
||||
- 优先级:个人 > 系统默认。个人层无记录时即系统默认。
|
||||
- **保存为通用**:把当前查询布局回写为新的系统默认——直接更新 `s_module_schema.query` 的 quick 顺序并标记隐藏字段,同时清空该用户的个人覆盖,所有用户默认即在改后配置。
|
||||
- 覆盖方式:`s_module_schema` 保存完整默认 Schema;`s_user_module_pref` 只保存相对系统默认的**增量覆盖**,不全量复制,因此系统默认修改后能自然继承。
|
||||
|
||||
### 6.1 列表配置示例
|
||||
|
||||
```json
|
||||
@@ -427,57 +442,42 @@ query
|
||||
}
|
||||
```
|
||||
|
||||
## 7. 用户个性化
|
||||
## 7. 用户个性化(个人层)
|
||||
|
||||
原有列表字段偏好和查询字段偏好合并为一张表。用户偏好只保存相对模块默认配置的偏离量,不复制完整模块配置。
|
||||
个人配置是两层继承的最上层,只保存相对系统默认(`s_module_schema`)的偏离量,不复制完整模块配置。与 `s_module_schema` 统一使用 `b_schema_type` + `b_schema_json`,按 schema 类型分别存一条。
|
||||
|
||||
```sql
|
||||
-- 用户模块偏好表
|
||||
-- 用户模块偏好表(个人层)
|
||||
create table dbo.s_user_module_pref (
|
||||
b_user_id varchar(50) not null, -- 用户编码
|
||||
b_user_id varchar(50) not null, -- 用户编码(关联 b_user.b_id)
|
||||
b_module_id varchar(50) not null, -- 模块编码
|
||||
b_pref_json nvarchar(max) not null, -- 用户偏离配置 JSON
|
||||
b_schema_type varchar(20) not null, -- view / edit / query
|
||||
b_schema_json nvarchar(max) not null, -- 个人覆盖 JSON(相对系统默认)
|
||||
b_updated_by varchar(50) null, -- 最后修改人
|
||||
b_updated_at datetime2 null, -- 最后修改时间
|
||||
primary key (b_user_id, b_module_id)
|
||||
primary key (b_user_id, b_module_id, b_schema_type)
|
||||
);
|
||||
|
||||
create index ix_s_user_module_pref_module
|
||||
on dbo.s_user_module_pref (b_module_id, b_user_id);
|
||||
```
|
||||
|
||||
偏好示例:
|
||||
查询布局偏好示例(平铺、增量,不使用 `view.default` / `query.default` 节点):
|
||||
|
||||
```json
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"view": {
|
||||
"default": {
|
||||
"hidden": ["b_bz"],
|
||||
"order": ["b_no", "b_name", "b_status"],
|
||||
"width": {
|
||||
"b_no": 160,
|
||||
"b_name": 240
|
||||
}
|
||||
}
|
||||
},
|
||||
"query": {
|
||||
"default": {
|
||||
"quick": ["b_no", "b_status"]
|
||||
}
|
||||
}
|
||||
"area": { "b_no": "quick", "b_bz": "hidden" },
|
||||
"order": { "b_no": 10, "b_name": 20 }
|
||||
}
|
||||
```
|
||||
|
||||
偏好 JSON 中的 `view.default`、`query.default` 是当前唯一方案的占位,与第 6 节“当前阶段不维护同一类型的多套命名配置”一致;将来出现多套方案时才用该层级区分。
|
||||
合并规则(两层依次应用):
|
||||
|
||||
合并规则:
|
||||
|
||||
1. 读取 `s_module_schema` 中的模块默认配置;
|
||||
2. 读取当前用户的 `s_user_module_pref.b_pref_json`;
|
||||
3. 按配置类型应用偏离量;
|
||||
4. 已停用、已删除或无权限的字段不得因用户偏好重新出现;
|
||||
5. 恢复默认时删除当前模块偏好记录,或删除 JSON 中对应配置片段。
|
||||
1. 读取 `s_module_schema` 系统默认(query 布局由 `quick` 列表 + 条件推导);
|
||||
2. 读取当前用户的 `s_user_module_pref.b_schema_json`,按 schema 类型叠加个人偏离量,得到最终配置;
|
||||
3. 已停用、已删除或无权限的字段(`s_user_field_power`)不得因配置重新出现;权限过滤在配置合并之后执行,永远优先于配置;
|
||||
4. 恢复默认(恢复通用)= 删除 `s_user_module_pref` 对应行,回落到系统默认;「恢复默认」是删除覆盖,不是新增配置层。
|
||||
|
||||
## 8. 自动编码
|
||||
|
||||
|
||||
Reference in new issue
Block a user