自定义水印内容小妙招 之 水印插件

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

自定义水印内容小妙招 之 水印插件

用户希望能够灵活自定义设置水印内容,比如打开某单据页面时展示【用户名】+【组织名】的水印内容;且希望通过在上级节点配置,达到作用于当前节点下的所有子节点的效果。例如,在【系统服务云】→【基础服务】目录下设置水印,那【基础服务】节点下级【人员】、【组织】等所有单据打开都显示【用户名】+【组织名】的水印内容,如下图所示:


基础服务人员列表效果示例


想要实现上述效果并不难,跟着小编往下看~




1 解决方案


通过二次开发,可以实现自定义的水印插件,且绑定自定义插件后,系统将动态获取自定义插件里设定的内容,无需进行任何配置。在插件中传入自定义的水印内容(如:用户名+组织名),在水印配置页面配置相应节点后,效果将作用于该节点下面的所有节点。例如,在基础服务节点配置水印插件,基础服务上的所有的页面都应用插件定义的水印。具体可以分为以下三步:


第一步,自定义的水印插件需实现IWaterMarkPlugin接口,代码示例如下:


public interface IWaterMarkPlugin {   
  //打开表单前修改水印内容    
  default void setWaterMarkInfo(LoadWaterMarkInfoEventArgs e){};
}


第二步,通过自定义水印插件实现水印为用户名+组织名。在插件中实现IWaterMarkPlugin接口,重写setWaterMarkInfo()方法设置水印,代码示例如下:


public class WaterMarkerCustomPluginTest extends AbstractFormPlugin implements IWaterMarkPlugin{
  @Override
  public void setWaterMarkInfo(LoadWaterMarkInfoEventArgs e) {
  long userId = RequestContext.get().getCurrUserId();
  DynamicObject user=BusinessDataServiceHelper.loadSingle(userId, "bos_user");
  String orgName = getOrgName(user);
  WaterMark waterMark = new WaterMark();
  //设置水印类型为文本,具体类型可在设计器上查看到
  waterMark.setType("1");
  //设置文字内容为用户名+组织
  waterMark.setText(user.get("name")+"_"+orgName);
  //设置字号,12
  waterMark.setFontSize("12");
  //设置水印颜色为黑色
  waterMark.setColor("#333");
  //设置水印不透明度为50%
  waterMark.setGlobalAlpha(50);
  e.setWaterMark(waterMark);
  }
  //获取当前用户组织名方法
  private String getOrgName(DynamicObject user) {
  }
}


第三步,配置水印插件中自定义参数(进入水印配置后  在左树选择水印生效的节点范围),进入路径为:【配置工具】→左侧菜单【水印配置】→页面中部【水印类型】→【注册插件】如下图所示:


基础服务配置-水印自定义插件


以上就是自定义水印插件的实现方法,快去试试吧~




2 划重点


通过IWaterMarkPlugin接口重写setWaterMarkInfo()方法实现水印插件,并在插件中传入自定义的水印内容(如:用户名+组织名),在水印配置页面相应节点配置后,效果将作用于该节点下面的所有节点




#往期推荐#


一文带你了解预警监控方案

# 高效易用的“单据体引入”



更多精彩内容,“码”上了解!↓


自定义水印内容小妙招 之 水印插件

用户希望能够灵活自定义设置水印内容,比如打开某单据页面时展示【用户名】+【组织名】的水印内容;且希望通过在上级节点配置,达到作用于...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息