FVS的JS判断跳转,不知道哪里有问题,点击不跳转不报错:

想实现的效果:通过系统登陆的角色进行判断,如果存在于这三个觉得的任意一个就可以直接跳转到FVS的指定分页中,否则跳出权限警告弹窗;setTimeout(function() {

    // 获取当前用户角色(自动获取系统参数)

    var roles = $fine_role; 

    // 定义允许访问的角色白名单

    var allowedRoles = ["经分会_超管", "经分会_总经办", "经分会_财务部"];

    

    // 角色匹配判断

    var hasPermission = allowedRoles.some(role => roles.includes(role));

    

    if(hasPermission) {

        // 跳转到指定分页

        _g().gotoPage("财务板块_管报");  // {{JS通过判断用户部门角色控制模板组件查看权限-3698.md}}

    } else {

        // 弹出权限警告弹窗

        FR.VISUALIZE.openDialog({

    title: '权限提示',

    url: 'http://172.24.103.170/decision/view/duchamp?viewlet=' + 

         encodeURIComponent('JFH/权限警告弹窗.fvs'),  // 编码处理中文路径

    width: 800,

    height: 600

});

    }

}, 1000);  // 延迟确保角色数据加载完成改之后的:image.pngimage.pngimage.png

FineReport AiC 发布于 2025-6-4 13:59 (编辑于 2025-6-4 15:02)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2025-6-4 14:38(编辑于 2025-6-4 14:43)

放一个控件用公式获取角色名称,然后再用js获取它的值,然后就按如下写就行了,测试是可以的!!

"use document";

setTimeout(function() {

 //放一个控制里面用公式获取角色,然后用js获取获取的值

 let roles=duchamp.getWidgetByName('roles').getValue();

    // 定义允许访问的角色白名单

    var allowedRoles = ["经分会_超管", "经分会_总经办", "经分会_财务部"];

  

    if(allowedRoles.includes(roles)==true) {

        // 跳转到指定分页

        duchamp.getPage(财务板块_管报).goto();  

// {{JS通过判断用户部门角色控制模板组件查看权限-3698.md}}

    }

else {

const iframe = document.createElement("iframe");

iframe.width = "100%";

iframe.height = "100%";

iframe.scrolling = "no";

iframe.style="border: none";

iframe.src = "/webroot/decision/view/duchamp?viewlet=JFH/权限警告弹窗.fvs&page_number=1";

duchamp.showDialog(

        {

                title:"弹窗",

                width: 700,

                height: 500,

                innerContent:iframe,

                dialogType:"center",

titleStyle:{background:"#00142E" },

                backgroundStyle: {background:"#00142E" }//修改背景颜色

        }

);

}

}, 1000); 

  • AiC AiC(提问者) 按照你的方案还是不行,控件也都是获取到了角色名;
    你可以刷新看一下问题;我更新了我的设置,有点离谱了;
    2025-06-04 14:54 
  • CD20160914 CD20160914 回复 AiC(提问者) 你现在控件roles 得到的结果是什么,我的语句是没有问题的,我电脑测试了的,你现在有问题是哪里。
    2025-06-04 14:55 
  • CD20160914 CD20160914 回复 AiC(提问者) 可以把最前面的第一句删除掉
    2025-06-04 14:56 
  • AiC AiC(提问者) 回复 CD20160914 得到的是经分会_财务部,我更新了问题
    2025-06-04 14:56 
  • AiC AiC(提问者) 回复 CD20160914 现在就是点击不跳转不报错
    2025-06-04 14:57 
最佳回答
0
snrtuemcLv8专家互助
发布于2025-6-4 14:00(编辑于 2025-6-4 14:01)

var roles = $fine_role; 

是获取不到值的

改成

var roles ='${=fine_role}'; 

=========

或者

var roles =FR.remoteEvaluate('=fine_role');

  • AiC AiC(提问者) 不行
    2025-06-04 14:15 
  • snrtuemc snrtuemc 回复 AiC(提问者) 先alert(roles) 看看取到什么值了,没匹配上,还有这个需要决策系统才有效,直接预览取不到值的
    2025-06-04 14:16 
  • AiC AiC(提问者) 取到了 经分会_财务部
    2025-06-04 14:19 
  • AiC AiC(提问者) setTimeout(function() {
    // 获取当前用户角色(自动获取系统参数)
    var roles =FR.remoteEvaluate('=fine_role');
    alert(roles)
    }, 1000); // 延迟确保角色数据加载完成


    取到了 经分会_财务部
    2025-06-04 14:20 
  • snrtuemc snrtuemc 回复 AiC(提问者) 你的弹窗语句有问题,参考全局接口-FR https://help.fanruan.com/finereport/doc-view-4316.html,格式是
    duchamp.doHyperlinkByPost({
    //报表路径
    "url":"/webroot/decision/view/report?viewlet=GettingStarted.cpt",
    //参数
    "para":{
    "地区":"华东"
    },
    "target":"_dialog", //对话框方式打开
    "feature":{
    "width":700,
    "height":500,
    "title":"销售报表"
    }
    })
    2025-06-04 14:27 
  • 3关注人数
  • 83浏览人数
  • 最后回答于:2025-6-4 15:02
    请选择关闭问题的原因
    确定 取消
    返回顶部