有这么一个场景,普通用户看1,管理员看1和2,2不给普通用户看(包括文字和数值),如下图所示
实现思路:
一、 1与2各写好SQL逻辑的数据集
(1)1处SQL直接传入用户id参数,即能实现各看各数;
(2)2处SQL通过不同用户角色判断再传入用户id参数,即能控制不同用户角色所能看到的数据权限范围
二、将需要权限控制的文字设置一个字段名“系列名”,且将文字写入“系列名”字段。注意:此逻辑一定要在用户角色权限表的最里层设置,通过传入的用户id不仅能控制数值,还能控制此文字能否可见
数据层(SQL)逻辑如下:
- select
- count(distinct DocCode) 数值
- , 系列名
- , 标签
- from
- (
- select
- 用户id
- ,权限等级
- ,部门id
- ,'总客户新增数' 系列名
- ,'客户' 标签
- from 用户权限表
- where 权限等级 in ('本部门','全公司') and userCode={{@userCode:type=text,default=''}}
- )t1
- cross join 业务数据表
- where
- (权限等级='本人' and 用户id={{@userCode:type=text,default=''}})
- or (权限等级='本部门' and t1.部门id=t2.部门id)
- or (权限等级='全公司' )
复制代码
表现层(仪表板)设置:
1.添加仪表板参数
2.将系列名添加进去,选择第一个值即可
|