泛微二开系列(十)建模查询

建模如何设置当前员工查看当前数据,某个员工查看所有

modedatacreater =$userid$ or $userid$ =1

一、建模查询页传参过滤数据

场景:建模查询页,通过URL增加参数来实现数据过滤。例如我现在开发了一个员工账号的列表。通过传入UserId来实现数据的过滤。最后添加在员工档案页签上。(建模过程忽略,直接附上数据过滤的方式)

打开建模的查询列表>>>>增加条件

泛微二开泛微二开系列(十)建模查询插图

然后在查询的预览页增加:/spa/cube/index.html#/main/cube/search?customid=162&employee=123

二、建模查询页传参过滤数据(优化版)

上次的设置方式会存在一个情况,如果不添加&employee=123会加载空白。原因很简单,因为执行的sql无数据。那如何实现,不添加&employee=123也能按页面的筛选条件过滤呢?

('PARM(employee)'='' AND 1=1)
OR
('PARM(employee)'!='' AND employee = 'PARM(employee)')

三、建模查询页传参过滤数据(权限版)

场景:虚拟表单的建模查询页,某个角色范围内可查看所有数据,角色范围外仅能查看当前登录人信息

(
  'PARM(employee)'='' 
   AND 1=1
)
OR

(
   'PARM(employee)'!='' 
   AND (
      ---当前员工可查阅
      (employee = '$UserId$'
       and not EXISTS (
           select rm.resourceid from hrmroles r
           left join hrmrolemembers rm on r.id=rm.roleid
          where r.rolesmark='员工系统用户管理员' and rolelevel=2
           and rm.resourceid='$UserId$'
          )

      )
     ---某个角色能查阅
      or (
           EXISTS (
           select rm.resourceid from hrmroles r
           left join hrmrolemembers rm on r.id=rm.roleid
          where r.rolesmark='员工系统用户管理员' and rolelevel=2
           and rm.resourceid='$UserId$'
          ) and employee = case when 'PARM(employee)' = '$UserId$' then '$UserId$'  else 'PARM(employee)' end 
     )
    )
)