帆软report原样导出按钮指定人可见,应该怎么实现?

大佬们,想要“原样导出”按钮只有指定人员可以看见,下面这段js代码应该怎么修改?谢谢!!!

if (T == 'Anna') { //隐藏工具栏 $('.x-toolbar').css('display''none'); $('.reportPane ').css('top''0');else { $('.x-toolbar').css('display''block'); $('.reportPane ').css('top''28px');}

image.png

FineReport yzm475374 发布于 昨天 09:22
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
yzm475374Lv2见习互助
发布于昨天 10:34

用这个方法可以:

// 假设T是当前登录用户的变量

var hasPermission = (T == '张三' || T == '李四' || T == '王五' );

// 等待页面完全加载

setTimeout(function() {

    try {

        // 使用contentPane获取工具栏

        if (typeof contentPane !== 'undefined' && contentPane.toolbar) {

            var toolbar = contentPane.toolbar;

            var exportButton = toolbar.getWidgetByName("ExcelO");

            if (exportButton) {

                exportButton.setVisible(hasPermission);

                exportButton.setEnable(hasPermission);

            }

        }

        

    } catch (e) {

        console.error('Error:', e);

    }

}, 1000); // 延迟1秒确保完全加载

最佳回答
1
用户k6280494Lv6专家互助
发布于昨天 09:24(编辑于 昨天 09:24
  1. 获取工具栏按钮对象:首先,需要获取到你想要控制的工具栏按钮对象。

  2. 设置按钮的可见性:使用 isVisible() 方法来判断按钮是否可见,使用 visible() 方法来设置按钮为可见。

  3. 示例代码:


    // 获取工具栏按钮对象

    var button = _g().getToolbar().getWidgetByName("yourButtonName");



    // 判断按钮是否可见

    if (!button.isVisible()) {

    // 设置按钮为可见

    button.visible();

    }
  4. 应用场景:在某些情况下,例如填报成功后,可以根据条件来显示或隐藏按钮。可以在填报成功事件中添加相应的 JavaScript 代码。

  5. 模板下载:如果需要更详细的示例,可以参考下载模板:工具栏按钮可见.cpt

https://help.fanruan.com/finereport/doc-view-2135.html 

最佳回答
1
华莉星宸Lv7专家互助
发布于昨天 09:24

参考这个改

写到初始化事件里面

工具栏接口汇总 https://help.fanruan.com/finereport/doc-view-5102.html

最佳回答
1
ScyalcireLv7高级互助
发布于昨天 09:25(编辑于 昨天 09:46
// 获取工具栏对象(帆软10版本新方式)
var toolbar = _g().getTemplate().getToolbar();
var buttons = toolbar.getCustomToolbarButtons();

// 遍历按钮并设置可见性
for (var i = 0; i < buttons.length; i++) {
    var btn = buttons[i];
    // 判断是否为"原样导出"按钮(注意按钮ID可能变化)
    if (btn.getText() === "原样导出" || btn.getButtonValue() === "exportReportToExcel('simple')") {
        // 仅对指定人员显示
        btn.setVisible(T === 'Anna');
    } else {
        // 其他按钮保持显示
        btn.setVisible(true);
    }
}

// 调整报表面板位置(保持原逻辑)
if (T === 'Anna') {
    $(".reportPane").css("top", "28px");
} else {
    $(".reportPane").css("top", "28px");
}

  • yzm475374 yzm475374(提问者) 我这边是帆软report10.0,好像没有 _g().getToolbar()这个方法,报错了
    2025-09-10 09:44 
  • Scyalcire Scyalcire 回复 yzm475374(提问者) 更新了,再试试
    2025-09-10 09:46 
  • yzm475374 yzm475374(提问者) 回复 Scyalcire 非常感谢大佬!但是还是有下面的报错: 严重:09:51:35 http-nio-8075-exec-133 ERROR [standard] 错误代码:11201000 JS抛错
    具体错误:_g(...).getTemplate is not a function
    错误堆栈:TypeError: _g(...).getTemplate is not a function
    at sb.eval (eval at (http://dmpbi.sutpc.com:8075/webroot/decision/v10/entry/access/de86e66e-620c-4e07-876b-1137816836b0?width=1514&height=670:7:51), :2:20)
    at sb. (http://dmpbi.sutpc.com:8075/webroot/decision/view/report?op=emb&resource=finereport.js&inter=zh_CN&__fr_locale__=&jsVersion=1756688222853:492:151)
    at eval (eval at (http://dmpbi.sutpc.com:8075/webroot/decision/v10/entry/access/de86e66e-620c-4e07-876b-1137816836b0?width=1514&height=670:7:51), :24:199)
    at sb. (http://dmpbi.sutpc.com:8075/webroot/decision/v10/entry/access/de86e66e-620c-4e07-876b-1137816836b0?width=1514&height=670:59:51)
    at Object.tc (http://dmpbi.sutpc.com:8075/webroot/decision/view/report?op=emb&resource=finereport.js&inter=zh_CN&__fr_locale__=&jsVersion=1756688222853:512:223)
    at sb.action (http://dmpbi.sutpc.com:8075/webroot/decision/v10/entry/access/de86e66e-620c-4e07-876b-1137816836b0?width=1514&height=670:59:29)
    at sb. (http://dmpbi.sutpc.com:8075/webroot/decision/view/report?op=emb&resource=finereport.js&inter=zh_CN&__fr_locale__=&jsVersion=1756688222853:492:151)
    at sb.fireEvent (http://dmpbi.sutpc.com:8075/webroot/decision/view/report?op=emb&resource=finereport.js&inter=zh_CN&__fr_locale__=&jsVersion=1756688222853:580:183)
    at sb. (http://dmpbi.sutpc.com:8075/webroot/decision/v10/entry/access/de86e66e-620c-4e07-876b-1137816836b0?width=1514&height=670:226:138)
    at HTMLDivElement. (http://dmpbi.sutpc.com:8075/webroot/decision/view/report?op=emb&resource=finereport.js&inter=zh_CN&__fr_locale__=&jsVersion=1756688222853:492:151)

    2025-09-10 09:52 
  • Scyalcire Scyalcire 回复 yzm475374(提问者) // 获取工具栏对象(适配帆软10版本)
    var toolbar = _g().getView().getToolbar();
    var buttons = toolbar.getButtons(); // 获取所有按钮

    // 遍历按钮并设置可见性
    for (var i = 0; i < buttons.length; i++) {
    var btn = buttons[i];
    // 判断是否为"原样导出"按钮(根据实际按钮属性调整)
    if (btn.getText() === "原样导出" || btn.getButtonValue() === "exportReportToExcel('simple')") {
    // 仅对指定人员显示
    btn.setVisible(T === 'Anna');
    } else {
    // 其他按钮保持显示
    btn.setVisible(true);
    }
    }

    // 调整报表面板位置(保持原逻辑)
    if (T === 'Anna') {
    $(".reportPane").css("top", "28px");
    } else {
    $(".reportPane").css("top", "28px");
    }
    2025-09-10 09:55 
  • 3关注人数
  • 42浏览人数
  • 最后回答于:昨天 10:34
    请选择关闭问题的原因
    确定 取消
    返回顶部