设置方法
1、首先在电子表格设计器(Microsoft Office Excel)中,创建电子表格报表,源报表和目标报表。
2、在浏览器的“分析展现”节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面。
3、在报表宏界面新建跳转规则向导。设置向导,让其自动生成服务端模块和客户端模块代码,然后手动修改其生成的“客户端模块”代码,参考如下的示例代码,修改其中的 main 方法。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | spreadsheetReport | onLinkClick |
宏代码
function paramToString(v) { return v == null ? null: v.toString(); }; function main(spreadsheetReport, ruleName, params) { //debugger; if (ruleName != "跳转") return; // 判断当前用户所属角色,跳转到不同的报表 if (currentUserHasRole("角色1")) { jump_role1(spreadsheetReport, ruleName, params); } else if (currentUserHasRole("角色2")) { jump_role2(spreadsheetReport, ruleName, params); } else { alert("当前用户不能跳转到任何报表!"); } }; // 如果当前用户拥有角色1,则跳转到报表1 function jump_role1(spreadsheetReport, ruleName, params) { var paramsInfo = []; paramsInfo.push({ name: "五级分类", value: paramToString(params[0]), displayValue: paramToString(params[0]) }); if (window.bof_offline_xhr) { var command = spreadsheetReport.command; command.close(); command.execute('OPENWITHNOREFRESH', 'I8a8af0a6017297949794e7480172984b844c0c28'); var report = command.spreadsheetReport; if (paramsInfo.length > 0) report.setParamsInfo(paramsInfo); report.doRefresh(); } else { var topWinJsLoader = window.jsloader; try { if (window.top.jsloader) { topWinJsLoader = window.top.jsloader; } } catch (e) {} var openner = domutils.isMobile() ? window.jsloader.resolve("bof.macro.views.Openner") : topWinJsLoader.resolve("bof.macro.views.Openner"); openner.openInTab("I8a8af0a6017297949794e7480172984b844c0c28", paramsInfo); } }; // 如果当前用户拥有角色2,则跳转到报表2 function jump_role2(spreadsheetReport, ruleName, params) { var paramsInfo = []; paramsInfo.push({ name: "五级分类", value: paramToString(params[0]), displayValue: paramToString(params[0]) }); if (window.bof_offline_xhr) { var command = spreadsheetReport.command; command.close(); command.execute('OPENWITHNOREFRESH', 'I8a8af0a6017297949794e7480172984bb8870c34'); var report = command.spreadsheetReport; if (paramsInfo.length > 0) report.setParamsInfo(paramsInfo); report.doRefresh(); } else { var topWinJsLoader = window.jsloader; try { if (window.top.jsloader) { topWinJsLoader = window.top.jsloader; } } catch (e) {} var openner = domutils.isMobile() ? window.jsloader.resolve("bof.macro.views.Openner") : topWinJsLoader.resolve("bof.macro.views.Openner"); openner.openInTab("I8a8af0a6017297949794e7480172984bb8870c34", paramsInfo); } }; //判断当前用户是否拥有某角色 function currentUserHasRole(roleName) { //debugger; var UserService = imports("bof.usermanager.UserService").getInstance(); var userId = UserService.getCurrentUser().id; if (UserService.isAdmin(userId)) { // 如果是管理员则不判断角色 return true; } // 获取角色ID值 var role = UserService.getRoleByName(roleName); if (!role || !role.id) { return false; } var retVal = UserService.hasRoleByUserId(userId, role.id); return retVal; };
关键对象总结
- 判断当前用户是否拥有某角色:function currentUserHasRole(roleName)。
- 跳转到目标报表:function jump_role2(spreadsheetReport, ruleName, params)。
资源下载
资源:migrate.xml