20260913231607

This commit is contained in:
oneao committed 2026-09-13 23:16:08 +08:00
1 parent f3ad727f1c
commit c31329d387
179 files changed
+10846 -2684

No files matched your search

+31 -31
View File
@@ -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. 自动编码