Title: 左树选中节点与后代筛选 Canonical: https://microi.net/doc/system-engine/left-tree-descendants.html Page-Modified: 2026-11-12T13:02:58.000Z Source: published HTML document body; page revision is not a capability verification date. # 左树选中节点与后代筛选 9.0.5 候选在 diy_LeftJoinRightView 增加“右侧加载子级数据” RightLoadDescendants,默认 0。字段缺失、NULL 或 false 保持原单节点路径,不产生额外范围请求。官方系统账号和系统角色的组织树可开启,其它左右结构保持原值。 ## 开关与查询范围 配置状态 | 右侧查询范围 | RightLoadDescendants=0、字段缺失、NULL 或 false | 保持原单节点路径,不新增范围请求 | 开启“右侧加载子级数据” | 加载所选节点及有权读取的后代,仍受原右表权限约束 | 点击“全部” | 清除节点筛选,按原权限查询 | 开启时,点击节点调用固定登录 Managed 入口 platform-left-tree-scope,只提交当前右侧菜单 Id 与选中节点 Id。服务端从真实当前租户、用户与主库唯一左右配置派生左侧菜单、树表、父键及关联键,不接受客户端树快照、owner、tenant 或 SQL。配置链末级必须精确匹配菜单,不能用子串命中授权。 ## 授权快照与稳定排序 左树快照逐页通过原 Client FormEngine 读取,每页 100 条,仍校验左菜单、角色、字段和数据权限;最多 10,000 节点。总数变化、缺页、重复、超限或未授权节点均失败关闭。遍历按 Sort、Id 稳定排序,不跨越不可读中间节点查找后代,孤儿不混入其它节点。右表最终查询继续走其原菜单、角色、租户与行数据权限,范围筛选不会授予额外权限。 官方组织树初始化按 Sort ASC 查询,既有父子字段和菜单身份不变。系统账号筛选保留主部门 DeptId 与兼职部门 DeptIds 的同组 OR;系统角色保留 DeptIds 的 JSON 值包含关系,不把 Id 直接拼入 SQL。 ## 自定义事件与失败恢复 自定义 ShujieDDJSJ 必须读取 V8.TreeScope.Values,返回 {TreeScopeApplied:true, PropsWhere:[...]}。未适配的旧事件不得静默丢掉后代范围;更新时须完整读取并合并原业务事件,官方升级不能直接覆盖客户定制。搜索关键词只影响左树可见呈现,后代范围来自左菜单的完整有界授权集合,不把当前页当完整组织树。 范围请求失败时隐藏旧右表并显示重试说明,不用空条件显示“全部”。快速切节点时旧响应和旧事件失败不覆盖当前选择;“全部”继续清除节点筛选并按原权限查询。现有右侧新增父关联、左右面板偏好和手机抽屉保持。 ## 升级与验收 - 先升级后端和 PC。 - 通过责任官方应用追加字段、Managed 与精确配置行。 - 配套资源齐备前保持默认关闭。 验收包含普通用户/管理员的权限交集、循环/孤儿/重复/深树、分页变化、Sort、全部/单节点切换、快速点击、错误恢复、右侧新增和手机抽屉。实际源码编译或 VM 测试不等于真实页面、角色或手机验收。