页面树结构
转至元数据结尾
转至元数据起始

在业务系统中,经常需要通过用户的所属机构控制用户所能查看到的数据。下面我们演示如何实现数据权限,控制不同机构用户只能查看所属机构及其所有子机构的数据。机构架构如下

  • 当总部用户查看报表时,能够查看到所有机构的数据
  • 当华南业务员查看报表时,能够查看到"华南"机构及其所有下级机构的数据。

 

  • 当华北业务员查看报表时,能够查看到"华北"机构及其所有下级机构的数据。


前提


数据库中存在机构表,包含机构编号字段、机构名称字段和上级机构编号字段。如org表;其中c_id为机构编号,c_name为机构名称,c_parentid字段为上级机构编号。

实现步骤


使用下拉树参数和用户所属默认组名称相结合,控制用户登录之后,下拉树参数的根节点的值为用户所属机构的编号,则用户进行参数切换,只能够选择其所属机构或者下级机构,不能够选择上级机构或者其他机构。通过参数过滤数据实现用户只能查看其所属机构及下级机构的数据。

  1. 在用户管理中建立用户组,如下:包括总部、华北、华南三个用户组



  2. 设置"总部管理员"默认组为"总部","华南业务员"默认组为"华南"、"华北业务员"默认组为"华北"


  3. 进入【定制】-【公共设置】,新建参数,数据格式选择"字符串",控件类型选择下拉树


  4. 备选值、默认值和根节点设置如下。根节点和默认值中,使用系统函数CurrentUserDefaultDepartmentName与c_name字段进行过滤,则当用户选择参数时根节点为对应的机构编号。

    • 备选值:select c_id as c_id, c_name as c_name,c_parentid as c_parentid from org


    • 默认值:select c_id as c_id, c_name as c_name,c_parentid as c_parentid from org where c_name = CurrentUserDefaultDepartmentName()


    • 根节点:select c_id as c_id, c_name as c_name from org where c_name = CurrentUserDefaultDepartmentName()


  5. 在参数定义中勾选"允许多选"


  6. 参数真实值,实际值设置如下:


  7. 在数据集中使用上述步骤中建立的参数,如:


  8. 建立报表。使用不同用户组用户登录,效果如下:
  • 总部管理员:
  • 华南业务员:
  • 华北业务员:


  • 无标签