报表应用 >> 报表典型应用>>报表按钮人员细粒度控制

我是社区第59718位番薯,欢迎点我头像关注我哦~
本帖最后由 加菲喵 于 2015-9-10 15:41 编辑


报表按钮人员细粒度控制


1. 问题描述


     对于某些用户来说,报表集成在客户系统中后,可能只能对用户的访问权限做控制,但是在报表界面的按钮的控制,却无法实现,本文档将介绍如何实现



2. 解决方案

2.1 新建模板参数

       userid 默认值为 $fr_username(此为决策系统平台当前登录人获取方式,便于与平台集成后的管理)

       此处演示模板userid 默认值为 1(方便获取到usierid等于1的用户对应的不可见的按钮的index数组)

       9776355e705d57a379.png

       在集成到其他系统后,访问报表时,通过参数传入userid

2.2 新建按钮表

         对要进行权限控制的所有模板及其模板下的所有工具栏按钮和参数界面按钮做数据库维护

         按照按钮描述,按钮index(为菜单栏的排列顺序,0 为第一个按钮的index),模板名做维护

          8748355e705e53f0d2.png


         如图,是对模板 id  1 7 8   对应的 上一页 邮件 导出按钮做维护 编号按照报表界面的顺序 0为第一个

          4438955cb01b1b9607.png


2.3 新建权限管理表


       5154855e705f46966a.png

      通过人员id控制人员可见的不同模板下的按钮

       userid  1 不可见 1 7 8 三个按钮

       userid  2 不可见 1 一个按钮

2.4 js代码


            在页面加载结束时间中,添加如下参数和代码             4231555ec007253596.png

  1. <div style="text-align: left;">for (var i = 0; i < userpri.length; i++) {</div><div style="text-align: left;">    var count = contentPane.toolbar.options.items.length;//获取工具栏所有按钮的总数</div><div style="text-align: left;">    if (Number(userpri[i]) < count) {//判断查询到的权限按钮index是否超出工具栏按钮最大索引,防止报错</div><div style="text-align: left;">        contentPane.toolbar.options.items[Number(userpri[i])].setVisible(false);//核心隐藏按钮代码</div><div style="text-align: left;">    }</div><div style="text-align: left;">}</div>
复制代码



如此 可达到极细的权限管理

2.4 同理,可控制参数界面的按钮

     只需把按钮id换成参数界面按钮的name,

     在参数界面的加载结束事件添加下述代码实现

  1. <div style="text-align: left;">$.each(this.options.form.name_widgets,function(i,item){     </div><div style="text-align: left;">    if (item.options.type !=='button') {item.invisible();}    </div><div style="text-align: left;">});;  </div>
复制代码

2.5 由于自带数据库没有可编辑表,所以采用自定义表,作为内置数据集导出到cpt模板中


  1. <div style="text-align: left;">create table 菜单表</div><div style="text-align: left;">(</div><div style="text-align: left;">  desscr  VARCHAR2(20),//工具栏按钮的中文描述,方便前台配置识别</div><div style="text-align: left;">  id      VARCHAR2(20),//工具栏按钮的唯一id,唯一识别</div><div style="text-align: left;">  cptname VARCHAR2(20)//模板名称,便于区别工具栏按钮所属于的模板</div><div style="text-align: left;">)</div><div style="text-align: left;">;</div><div style="text-align: left;">
  2. </div><div style="text-align: left;">prompt Creating 权限表...</div><div style="text-align: left;">create table 权限表</div><div style="text-align: left;">(</div><div style="text-align: left;">  userid VARCHAR2(20), //人员id</div><div style="text-align: left;">  desid  VARCHAR2(20)//按钮id,做关联后可以查询到一个唯一的模板下的按钮</div><div style="text-align: left;">)</div><div style="text-align: left;">;</div>
复制代码
2.6 效果    初始工具栏

      3607955e70271612f2.png    

   userid=1 时,点击查询后的工具栏

      8606955e70356e97b9.png

     隐藏了  上一页 输出 邮件三个按钮

   userid=2 时,点击查询后的工具栏

      5192855e70375ba00a.png

     隐藏了  上一页 按钮







编辑于 2019-3-2 17:34  

编辑于 2019-3-2 17:35  

编辑于 2019-3-2 17:35  
参与人数 +4 F豆 +15 F币 +375 理由
传说哥 + 375 赞一个!
yinanqi + 5 很给力!
kelly + 5
ylxxyy + 5 赞一个!

查看全部评分

发表于 2015-8-12 16:45:22
来顶
发表于 2015-8-12 17:07:31
  {:5_133:}{:5_133:}
发表于 2015-8-14 14:09:35
部署集成 >> 管理平台应用 >> 权限典型应用 >> 权限细粒度控制  这个好像跟这个有点类似,是否看下可以变为补充

难度30
详尽度25
通用度20
发表于 2015-8-15 10:51:17
虽然我很少用权限粒度,给楼主点个赞
难度35
详尽度25
通用度15
发表于 2015-8-25 19:46:41
本帖最后由 susie 于 2015-9-2 15:42 编辑

重新评分~
发表于 2015-9-2 15:39:13
本帖最后由 susie 于 2015-9-2 15:41 编辑

亲,把数据库的字段讲解一下含义,我们的FRDemo里有userinfo这张表,可以替换下你文中的用户那张表不?这样方便演示!还有代码注释一下,还有模板里貌似没有那两张数据库表 3508055e6a7887da0d.png
这两个事件是做什么的呀

发表于 2015-9-8 11:28:37
8509855ee55e35cecf.png
发表于 2015-9-8 11:57:28
牛逼。。。。。。
发表于 2017-12-5 09:30:53

牛逼。。。。。。
















您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

9回帖数 1关注人数 4811浏览人数
最后回复于:2017-12-5 09:30

返回顶部 返回列表