# 协同待办列表按钮扩展机制

# 适用版本

V9.0SP1 BuildID是2024年9月之后的版本

# 解决方案

目的:待办列表toolbar按钮提供二次开发能力

步骤仅需两部:1.按需动态注入js 2.js逻辑注册按钮schema信息

  1. 按需加载js代码

首先创建资源负载类并继承抽象接口AbstractCollaborationPlugin,通过实现方法loadPluginResource(PluginResourceLocation locationParam);完成js/css的按需加载。 AbstractCollaborationPlugin:

public interface CollaborationPlugin {

    
    /**
     * 加载资源文件
     * 
     * @param locationParam 对应页面参数{@link com.seeyon.ctp.plugins.resources.PluginResourceScope}
     * 
     * 
     * @author : muj
     * 
     * @date : 2019年6月6日
     *
     * @since: A8-V5 7.1SP1
     */
    public List<PluginResource> loadPluginResource(PluginResourceLocation locationParam);
    
    
}

PluginResourceLocation对象属性介绍:

属性 类型 解释
location PluginResourceScopes 页面标记:
COLL_PC_LIST_PENDING - 协同待办列表

PluginResource返回值对象,有两个实现类介绍: JavascriptResource - js资源类型 CssResource - css资源类型

属性 类型 解释
path String 资源的加载路径例如:/extend/action/example.js,前端会统一将路径替换为真实服务器路径,如/seeyon/extend/action/example.js
getType PluginResourceType 若是js资源则用PluginResourceType,css资源用CssResource
  1. 按需加载js代码逻辑编写

通过调用挂载在window上的registerComp注册按钮信息,调用一次待办注册一个按钮,如下:

(function (){
  //注册组件  extend-pending-toolbar 扩展按钮
  window.registerComp('extend-pending-toolbar',{
    eventId:'handleExtend',
    icon:'vportal vp-videoconferencing',//使用的图标
    subject:'高拍仪/高扫仪',// 名称
    click:function (selectData){
      if(window.confirm('执行了客开方法')){
        alert("选择了"+selectData.length+"条数据")
      }
      
    },
  })
})();

参数说明:

属性 作用
registerComp 注册二次开发组件方法,第一个参数是注册组件id其中extend-pending-toolbar代表待办列表的toolbar扩展
第二个参为注册是schema信息,指明按钮的具体名称、点击函数等
eventId 按钮的id,多次注册需要保证唯一性
icon 按钮图标(未实现)
subject 按钮的名称
click 按钮点击后回调执行方法,selectData为列表页面选择的数据列
创建人:het