FineReport填报列权限控制

近期换东家啦,又回归使用帆软啦,对于填报报表列权限的控制我这边顺带记录一下
首先讲解下场景:填报报表需要不同角色决定对不同列是否有填写或者查看权限

填写权限为例,首先考虑用到的是 帆软自带的权限编辑,其次考虑的是 JS控制单元格权限

帆软自带的权限编辑

入口:模板->权限编辑->进入权限编辑
在这里插入图片描述

设置初始权限

首先设置某单元格控件为不可用(为什么设置不可用呢,因为需要特定权限才可用,所以默认是不可用)

在这里插入图片描述

进入权限编辑添加角色权限

进入到权限编辑界面可以看到左下角是有多个角色的,注意每次只能添加一个角色的权限,但可对多个单元格进行同时操作,那问题来了,怎么操作呢?

操作如下:
首先勾选对应角色,然后选中单元格,这时可以看到该角色对应单元格权限的权限,勾选对应所需权限后保存即可

在这里插入图片描述
角色的添加需要进入帆软自带的数据决策系统进行设置

JS控制单元格权限

设置用户变量存储

通过条件文本框存储当前用户信息,$fine_username是帆软自带的当前用户的用户名

在这里插入图片描述

编写控件事件

编写控件的编辑前事件

在这里插入图片描述

js代码如下:

var currentUser = _g().parameterEl.getWidgetByName('cuser').getValue(); 
var val = this.getValue();
//可编辑用户
var arr = ['root'];
// 无值时首次可录入(自己定,无值不给输入也行),有值后设置成仅特定人员可编辑
if(val.length>0 && arr.indexOf(currentUser)<0){
alert('您暂无权限编辑此列');
this.setEnable(false);
}

当然也可以优化下,设置成初始化修改编辑权限且通过权限或者填写的字段进行控制

//role是通过帆软的角色定义的参数
var role = _g().parameterEl.getWidgetByName('role').getValue();
var currentUser = _g().parameterEl.getWidgetByName('cuser').getValue(); 
var location = this.options.location;  //获取当前控件的位置
var cr = FR.cellStr2ColumnRow(location);
var col = cr.col;  //列号
var row = cr.row;  //行号
//获取责任人,行数由于隐藏了1行
var fzr = _g().getCellValue("X"+(row+1));
var val = this.getValue();
// 只能负责人经办或者CQE角色的人进行修改
if((null != fzr && fzr.length>0 && fzr == currentUser) || (null != role && role.length > 0 && role.indexOf("CQE")>-1)){
	this.setEnable(true);
}
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谦风(Java)

一起学习,一起进步(✪ω✪)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值