示例说明
通过报表宏,在报表中实现不同的用户登录显示不同的字段列。判断当前用户是否为"根组用户"或是使用"admin"角色。
- 当前用户判断为"是"的时候,则隐藏"区域"列字段。
- 当前用户判断为"否"的时候,则显示"区域"列字段。
设置方法
- 在资源定制中,创建一张灵活分析;
- 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为 simpleReport;事件为onRenderTable;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | simpleReport | onRenderTable |
宏代码
function main(simpleReport, simpleReportContext) { var field = simpleReport.grid.getFieldByColNum(0); //用户相关信息 var UserService = imports("bof.usermanager.UserService"); var currentUser = UserService.getInstance().getCurrentUser(); var currentUserId = currentUser == null ? "": currentUser.id; //获取用户所属组 var groupsOfCurrentUser = UserService.getInstance().getAllDepartmentsOfUser(currentUserId); if (groupsOfCurrentUser) for (var i = 0; i < groupsOfCurrentUser.length; i++) { var groupId = groupsOfCurrentUser[i].id; //当是根组时,隐藏列 if (groupId == "DEPARTMENT") { simpleReport.setFieldVisible(field.id, false); break; } } //获取用户的角色 var rolesOfCurrentUser = UserService.getInstance().getAllRolesOfUser(currentUserId); if (rolesOfCurrentUser) { for (var i = 0; i < rolesOfCurrentUser.length; i++) { var roleId = rolesOfCurrentUser[i].id; if (roleId == "ADMINS") { //判断用户所属角色是否为ADMINS simpleReport.setFieldVisible(field.id, false); break; } } } }
关键对象总结
- 获取用户所属组:UserService.getInstance().getAllDepartmentsOfUser(currentUserId);
- 获取用户的角色:UserService.getInstance().getAllRolesOfUser(currentUserId);
- 显示/隐藏列:simpleReport.setFieldVisible(field.id, false);