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

提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

示例说明


对于灵活分析,实现"根据角色不同控制【导出】按钮显示与否"。

现有灵活分析报表1,报表ID为:I4028818a5866e9ec0152256f44f933b6;灵活分析报表2,报表ID为: I4028818a5866e9ec015225708b143407。


  • 当登录用户拥有"Admin"角色时,该角色拥有对“报表1”和”报表2“的映射,因此该用户打开此两个报表时都显示【导出】按钮。

报表1:

报表2:

  • 当登录用户拥有"demo"角色时,由于该角色只拥有对”报表2“的映射,因此该用户打开”报表1“时,不显示【导出】按钮;打开”报表2“时,显示【导出】按钮。
    报表1:


    报表2:



设置方法

  1. 公共设置中,创建一个资源包,并设置要起效的报表,报表包含”报表1“和”报表2“;

     
  2. 在资源包中,编写宏代码,根据角色不同控制【导出】按钮显示与否;
     

宏类型

类型

对象

事件

ClientSide

simpleReport

onRender

宏代码

//定义角色可以对那些报表使用导出按钮权限
var rolesToReports = {
    "Admins": ["I4028818a5866e9ec0152256f44f933b6", "I4028818a5866e9ec015225708b143407"],
    "demo": ["I4028818a5866e9ec015225708b143407"]
};
//获取当前用户的所有角色
function getAllRoles() {
    var roles = registry.get("allRolesOfUser");
    if (roles != null) return roles;
    var util = jsloader.resolve("freequery.common.util");
    var ret = util.remoteInvokeEx("UserService", "getMyAccountInfo", []);
    roles = new Array();
    if (ret && ret.result) {
        var rolesToGroupList = ret.result.allRolesOfUser;
        for (var i = 0; i < rolesToGroupList.length; i++) {
            var item = rolesToGroupList[i].rolesList;
            for (var j = 0; j < item.length; j++) {
                roles.push(item[j].role.name);
            }
        }
    }
    registry.put("allRolesOfUser", roles);
    return roles;
}
function main(simpleReport, simpleReportContext) {
    var roles = getAllRoles();
    var found = false;
    for (var i = 0; i < roles.length; i++) {
        var reps = rolesToReports[roles[i]];
        if (reps == null) continue;
        for (var j = 0; j < reps.length; j++) {
            if (simpleReport.queryId == reps[j]) {
                i = roles.length;
                j = reps.length;
                found = true;
            }
        }
    }
    var r = simpleReport;
    //根据结果设置导出按钮是否可见
    if (!found) {
        simpleReport.btnExport.parentNode.style.display = "none";
    } else {
        simpleReport.btnExport.parentNode.style.display = "";
    }
}

关键对象总结

  • 获取当前用户所有角色:registry.get("allRolesOfUser")


资源下载:migrate根据角色不同控制导出按钮.xml


  • 无标签