FVS中如何根据登陆人的不同,显示或隐藏组件呢?

如题,如何判断,不同的登陆人,看到不同的组件呢?

问题点:如何获取当前登陆人呢?

if ($fine_username == '张三') {

duchamp.getWidgetByName("营业收入分类背景").setVisible(true); }

这段代码报错

image.png

FineReport Henry.99 发布于 2025-6-11 09:45 (编辑于 2025-6-11 10:18)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
1
snrtuemcLv8专家互助
发布于2025-6-11 09:47(编辑于 2025-6-11 10:09)

参考

JS实现FVS组件的隐藏或显示 https://help.fanruan.com/finereport/doc-view-4943.html

根据登录人,做if判断,隐藏显示组件

=========

具体写法参考https://bbs.fanruan.com/wenda/question/122442.html

========

"use document";

setTimeout(function() {

var a='${=$fine_username}'; 

if (a == '张三') {

duchamp.getWidgetByName("营业收入分类背景").setVisible(true); }

},500)

image.png

  • Henry.99 Henry.99(提问者) 如何获取当前登陆人呢?
    if ($fine_username == '张三') {
    duchamp.getWidgetByName("营业收入分类背景").setVisible(true); }
    这段代码报错
    2025-06-11 10:05 
  • snrtuemc snrtuemc 回复 Henry.99(提问者) $fine_username需要换个方式获取,还有这个需要登录决策系统才可以生效,参考修改答案
    2025-06-11 10:09 
  • Henry.99 Henry.99(提问者) 回复 snrtuemc 不生效呀,写了没反应,也没报错,也不生效
    2025-06-11 10:18 
  • snrtuemc snrtuemc 回复 Henry.99(提问者) 那就先var a='${=$fine_username}'; 后,alert(a);看看取到什么值,记得,需要在决策系统才可以,直接预览不行的,还有alert(a);取到值后,可以试试,最后500加大下,可能延迟不够,还有var a='${=$fine_username}'; 也可以换成a='${=fine_username}';或者var a=FR.remoteEvaluate('=$fine_username'); 或者var a=FR.remoteEvaluate('=fine_username'); 试试
    2025-06-11 10:21 
  • Henry.99 Henry.99(提问者) 回复 snrtuemc 感谢,解决了,应该是获取登陆人有问题了,我修改后是这样的
    "use document";

    setTimeout(function() {

    var a = FR.remoteEvaluate('fine_username');

    if (a == 'admin') {

    duchamp.getWidgetByName('标题2_页面1').setVisible(false); }

    },50)
    2025-06-11 10:29 
最佳回答
1
ID1208Lv6高级互助
发布于2025-6-11 09:47(编辑于 2025-6-11 10:09)

JS实现FVS组件的隐藏或显示--https://help.fanruan.com/finereport/doc-view-4943.html

if判断当前登录人,然后JS设置隐藏和显示

-----

image.png

  • Henry.99 Henry.99(提问者) 有问题呀,为什么是点击呢?应该是页面加载结束后就要自动判断,不是点击触发
    2025-06-11 09:58 
  • ID1208 ID1208 回复 Henry.99(提问者) 思路参照上面链接,事件可以放在页面加载结束事件里面
    2025-06-11 10:06 
  • Henry.99 Henry.99(提问者) 回复 ID1208 主要的问题就是没法根据登陆人判断,不是显示或者隐藏组件
    if ($fine_username == '张三') {

    duchamp.getWidgetByName("营业收入分类背景").setVisible(true); }
    这段代码报错,就是获取不到当前登陆人
    2025-06-11 10:07 
  • ID1208 ID1208 回复 Henry.99(提问者) 代码如果不生效,在外层加个延时setTimeout
    2025-06-11 10:08 
  • Henry.99 Henry.99(提问者) 回复 ID1208 额,是报错,就是if里面的代码不对
    2025-06-11 10:10 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2025-6-11 09:47

https://help.fanruan.com/finereport/doc-view-4943.html 加载结束事件里面参考文档写JS

  • Henry.99 Henry.99(提问者) 如何获取当前登陆人呢?
    if ($fine_username == '张三') {
    duchamp.getWidgetByName("营业收入分类背景").setVisible(true); }
    这段代码报错
    2025-06-11 10:05 
最佳回答
0
华莉星宸Lv7资深互助
发布于2025-6-11 10:10

你的“张三”是用户登录名  还是用户的中文名?

$fine_username 是用户登录名

要获取中文名

mid($fine_display_name,1,find("(",$fine_display_name)-1)

或是

left($fine_display_name,find("(",$fine_display_name)-1)//取姓名

  • Henry.99 Henry.99(提问者) 是登录系统时候,输入的用户名
    2025-06-11 10:22 
  • 华莉星宸 华莉星宸 回复 Henry.99(提问者) 登录决策系统就会自动获取到$fine_username 的
    你的报错是什么呢
    2025-06-11 10:27 
最佳回答
0
东云川Lv4见习互助
发布于2025-6-11 10:30

试一下 alert(a),看看 能不能获取到用户名

  • 5关注人数
  • 86浏览人数
  • 最后回答于:2025-6-11 10:30
    请选择关闭问题的原因
    确定 取消
    返回顶部