数据权限使用手册
概述
数据权限是智富ERP中控制不同角色/部门/用户能查看哪些业务数据的精细化权限机制。它与菜单权限不同:菜单权限控制"能看到什么页面",数据权限控制"在页面里能看到哪些数据"。
数据权限分为两大类:
| 权限类型 | 说明 | 影响范围 |
|---|---|---|
| 商品数据权限 | 限制可查看的商品范围 | 商品列表、库存查询、采购/销售单据中的商品选择器等 |
| 单据数据权限 | 限制可查看的单据范围 | 销售单、采购单、出入库单、盘点单、结算单等各类业务单据 |
进入数据权限设置
- 登录系统后,进入 系统管理 → 角色管理(或部门管理、用户管理)
- 在列表中找到需要设置数据权限的角色(或部门、用户)
- 点击操作列的 "数据权限" 按钮
- 弹出"数据权限"弹窗,包含两个配置项:
- 商品数据权限 — 点击"点此设置"配置
- 单据数据权限 — 点击"点此设置"配置
也可勾选多条记录后,点击工具栏的 "批量数据权限" 为多个角色/部门/用户统一设置。
权限规则编辑器使用说明
点击"点此设置"后,会打开规则编辑器。编辑器分为左右两个面板:
左侧面板 — 节点工具箱
- 运算节点:提供"并且"(AND)和"或者"(OR)两种逻辑连接符,用于组合多个条件
- 条件节点:列出当前权限类型可用的所有筛选条件,点击即可添加到规则树中
右侧面板 — 规则树配置区
规则的根节点必须是运算节点(AND 或 OR)。每个运算节点下可以包含:
- 子运算节点(嵌套逻辑)
- 条件节点(具体的筛选条件)
条件类型
条件节点支持以下比较方式:
| 条件类型 | 说明 | 示例 |
|---|---|---|
| 等于 | 精确匹配 | 品类编号 = "电子" |
| 大于 | 数值/日期大于 | 创建时间 > 2026-01-01 |
| 大于或等于 | 数值/日期大于等于 | 价格 >= 100 |
| 小于 | 数值/日期小于 | 价格 < 500 |
| 小于或等于 | 数值/日期小于等于 | 创建时间 <= 2026-06-30 |
| 不等于 | 排除特定值 | 编号 ≠ "TEST001" |
| 在列表中 | 匹配多个值 | 品类编号 IN ["电子", "食品"] |
| 不在列表中 | 排除多个值 | 品牌编号 NOT IN ["品牌A"] |
| 结尾 | 模糊匹配 — 以指定字符串结尾 | 名称以"手机"结尾 |
| 开头 | 模糊匹配 — 以指定字符串开头 | 编号以"SKU"开头 |
| 包含 | 模糊匹配 — 包含指定字符串 | 名称包含"苹果" |
一、商品数据权限(商品权限)
可用的筛选条件
商品数据权限提供了 13 个条件字段,涵盖商品基本信息和关联数据:
商品基本字段
| 条件名称 | 对应字段 | 输入方式 | 说明 |
|---|---|---|---|
| 编号 | product.code | 文本输入 | 商品的唯一编码 |
| 名称 | product.name | 文本输入 | 商品名称,支持模糊匹配(等于/开头/结尾/包含) |
| 简称 | product.short_name | 文本输入 | 商品简称/别名 |
| SKU | product.sku_code | 文本输入 | SKU 编码 |
| 简码 | product.external_code | 文本输入 | 外部编码/助记码 |
| 规格 | product.spec | 文本输入 | 商品规格型号 |
| 单位 | product.unit | 文本输入 | 计量单位(个/箱/件等) |
| 状态 | product.available | 选择框 | 启用/禁用的商品 |
| 创建时间 | product.create_time | 日期/时间选择 | 商品的创建时间范围 |
关联分类与品牌字段
| 条件名称 | 对应字段 | 说明 |
|---|---|---|
| 品类编号 | category.code | 商品所属品类的编号 |
| 品类名称 | category.name | 商品所属品类的名称 |
| 品牌编号 | brand.code | 商品品牌的编号 |
| 品牌名称 | brand.name | 商品品牌的名称 |
配置示例
示例 1:限定角色只能查看特定品类
场景:某采购员角色只能查看"电子"和"食品"品类的商品。
配置步骤:
- 进入该角色的数据权限 → 商品数据权限 → 点此设置
- 默认已有 AND 根节点
- 点击"品类编号"条件节点
- 选择条件类型为"在列表中"
- 输入品类编号值:
电子、食品 - 点击确定
效果:分配此角色的用户登录后,在商品列表、库存查询、单据中选择商品时,只能看到属于"电子"或"食品"品类的商品。
示例 2:限定角色只能查看启用的特定品牌商品
场景:某销售人员只能查看"品牌A"的启用状态商品。
配置步骤:
- 进入数据权限 → 商品数据权限 → 点此设置
- 根节点保持 AND
- 添加"品牌名称"条件 → 条件类型"等于" → 值输入
品牌A - 添加"状态"条件 → 条件类型"等于" → 选择"启用"
- 确定保存
效果:同时满足"品牌=品牌A"且"状态=启用"的商品才会显示。
示例 3:复杂组合条件
场景:限定角色可以查看"电子"品类下的所有商品,以及"食品"品类下最近一年创建的商品。
配置步骤:
- 根节点设为 AND
- 添加子运算节点 OR,包含:
- 条件"品类名称 = 电子"
- 子运算节点 AND,包含:
- 条件"品类名称 = 食品"
- 条件"创建时间 >= 2025-08-01"
- 确定保存
效果:最终权限SQL为 (category.name = '电子' OR (category.name = '食品' AND product.create_time >= '2025-08-01'))
二、单据数据权限(单据权限)
可用的筛选条件
单据数据权限目前提供 4 个条件字段,主要围绕单据创建人的部门关系:
| 条件名称 | 说明 | 输入方式 |
|---|---|---|
| 创建时间 | 单据的创建时间范围 | 日期/时间选择 |
| 创建人部门与本人相同 | 只查看创建人部门与当前用户部门相同的单据 | SQL型,无需输入值 |
| 创建人部门是本人的上级部门 | 只查看创建人部门是当前用户部门上级的单据 | SQL型,无需输入值 |
| 创建人部门是本人的下级部门 | 只查看创建人部门是当前用户部门下级(含自身)的单据 | SQL型,无需输入值 |
配置示例
示例 1:限定角色只能查看本部门的单据
场景:某部门主管只能查看和操作本部门人员创建的单据。
配置步骤:
- 进入该角色的数据权限 → 单据数据权限 → 点此设置
- 根节点保持 AND
- 添加"创建人部门与本人相同"条件
- 确定保存
效果:分配此角色的用户登录后,在销售单、采购单、出入库单等所有业务单据列表中,只能看到创建人所属部门与自己相同的人员创建的单据。
示例 2:限定角色查看本部门及下级部门的单据
场景:区域经理需要查看本部门和所有下级部门的业务单据。
配置步骤:
- 进入数据权限 → 单据数据权限 → 点此设置
- 根节点保持 AND
- 添加"创建人部门是本人的下级部门"条件
- 确定保存
效果:用户可以看到创建人部门是自己部门或其下级部门的所有单据。"下级部门"包含本部门自身。
示例 3:限定角色查看本部门在特定时间范围内的单据
场景:财务人员只能查看本部门当年创建的单据。
配置步骤:
- 进入数据权限 → 单据数据权限 → 点此设置
- 根节点保持 AND
- 添加"创建人部门与本人相同"条件
- 添加"创建时间"条件 → 条件类型"大于或等于" → 选择
2026-01-01 - 确定保存
效果:两个条件同时满足(AND),仅显示本部门且2026年以后创建的单据。
权限生效机制
优先级与叠加规则
数据权限可以在三个层级设置:
| 层级 | 设置位置 | 说明 |
|---|---|---|
| 角色级 | 角色管理 → 数据权限 | 该角色下所有用户都受此限制 |
| 部门级 | 部门管理 → 数据权限 | 该部门下所有用户都受此限制 |
| 用户级 | 用户管理 → 数据权限 | 仅对指定用户生效 |
叠加规则:所有层级的权限取交集(AND)。
例如:用户张三属于"采购员"角色(商品权限=只能看电子品类),同时所在部门设置了商品权限(只能看品牌A),用户个人未设置。则张三最终看到的数据同时满足"品类=电子 AND 品牌=品牌A"。
管理员豁免
permission = "admin"的角色不能被设置数据权限(系统会拦截并提示"不允许对管理员角色设置数据权限")- 拥有 admin 角色的用户登录后也不受数据权限限制,可以查看全部数据
生效时机
数据权限在用户登录时加载并存入服务端Session。如果修改了数据权限配置,相关用户需要重新登录才能生效。
注意事项
规则不能为空逻辑:如果最外层节点是运算节点但没有子节点,保存时会校验失败。至少需要添加一个条件。
条件值必填:除 SQL 类型的条件(如单据权限中的部门关系条件)外,所有条件节点必须填写比较值。
单据权限基于创建人部门:单据权限的核心判断依据是单据创建人所属的部门,因此需要确保用户和部门信息维护准确。
SQL预览功能:在规则编辑器中,点击左下角的"预览SQL"按钮可以查看当前规则树生成的SQL WHERE 片段,便于验证配置是否正确。
系统管理员不受限:系统管理员的角色具有
admin权限标识,不受任何数据权限限制。不要为系统管理员角色设置数据权限。跨模块影响:商品数据权限不仅影响"商品管理"页面,还会影响采购单、销售单、出入库单等所有涉及商品选择的地方。单据数据权限影响所有业务单据列表和报表。