请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

红烧兔头
金牌服务用户   /  发表于:2021-9-26 14:56  /   查看:1891  /  回复:1
10金币
本帖最后由 红烧兔头 于 2021-9-26 14:57 编辑

场景:现在有一个考勤管理系统,需要使用活字格的报表模块来实现对员工的考勤统计:




需求:
1、员工分属不同的部门,我希望可以让每个部门只能看到自己部门的考勤数据;
2、管理员账户的角色是admin,我希望这个角色的账户可以看到所有部门的数据,并且可以在报表中使用报表参数自由选择部门。

目前已经做的内容:
1、数据表已经建好;



2、角色和用户已经配置好;



3、报表页面可以直接打开一个报表,但是没有通过部门进行筛选。



注:因为数据表中涉及大量真实用户资料,就不在论坛上传工程文件了。
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您好,这个其实可以通过数据表本身的行权限,结合报表的报表参数来实现。具体实现方法如下: 1、由于数据表中每一条数据都有部门信息,所以我们可以在行权限中进行配置,让登录用户只能看到自己部门的数据: 2、由于admin角色可以超出部门的限制浏览数据,所以我们需要再添加一条行权限规则,让角色为admin的用户可以浏览所有数据: 因为报表的数据源完全由数据表传递,所以我们在数据表中进行的权限配置也是可以 ...

1 个回复

倒序浏览
最佳答案
最佳答案
Timothy.Xu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-9-26 14:56:24
来自 2#
您好,这个其实可以通过数据表本身的行权限,结合报表的报表参数来实现。具体实现方法如下:

1、由于数据表中每一条数据都有部门信息,所以我们可以在行权限中进行配置,让登录用户只能看到自己部门的数据:



2、由于admin角色可以超出部门的限制浏览数据,所以我们需要再添加一条行权限规则,让角色为admin的用户可以浏览所有数据:



因为报表的数据源完全由数据表传递,所以我们在数据表中进行的权限配置也是可以应用到报表模块里的。
此时已经能够实现楼主的第一个需求。

3、楼主还希望admin可以使用报表参数进行部门选择,那么我们就需要在报表中添加一个报表参数:



然后使用这个报表参数对报表中的矩表进行查询:



4、此时会存在一个问题:我们当然希望用户使用组合框在报表中选择部门,而不是手动输入部门。但是现在的逻辑,对于非admin用户,也是可以在报表中进行部门选择的,而且选择非自己部门后,肯定是查不出来任何数据了。我们该如何限制普通用户就是直接看到自己部门的数据,并且没有权限去使用这个组合框选择部门呢?



这里就需要另一张辅助表了,我们需要把所有的部门都存到一个部门字典表里,然后对这张表去设置同样的行权限:



5、然后将这张表也添加为报表数据源,并用这个数据源去作为报表参数-部门的数据来源(这里的逻辑就类似于活字格页面的组合框-从数据库生成项目):



6、在打开报表时,使用关键字%CurrentUser.部门%,把当前登录用户的部门传递到报表参数里:



7、这样的话,作为普通用户,报表参数的组合框就只有一个选择,就是自己的部门:



而管理员仍然可以自由选择部门:



到此楼主需求的功能就全部实现了~

注:
1、楼主说到:
因为数据表中涉及大量真实用户资料,就不在论坛上传工程文件了。

其实可以在下次提问的时候,先将数据进行脱敏处理,比如删掉敏感信息,或是替换为A/B/C,张三李四,001/002这样的安全数据,这样发布的话就不担心数据泄露了,我们也可以结合实际工程在论坛讨论~
2、本贴是代为楼主发贴,楼主下次遇到了问题也可以尝试亲自按照这种方式发贴提问,这样在论坛中,我们可以很清晰地在一个页面展示问题的需求、思路、解法等,同时也可以文字、截图、代码混排,这样查看问题也会更清晰一些。论坛的贴子留存下来,无论是楼主作为知识库,还是其他遇到类似的问题的用户查阅,都是十分方便的~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部