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

示例说明

通过报表宏,在报表中实现不同的用户登录显示不同的字段列。判断当前用户是否为"根组用户"或是使用"admin"角色。

  • 当前用户判断为"是"的时候,则隐藏"区域"列字段。

  • 当前用户判断为"否"的时候,则显示"区域"列字段。


设置方法

  1. 在资源定制中,创建一张灵活分析;
  2. 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
  3. 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为 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);

  • 无标签