title: E9流程表单前端接口API source: https://e-cloudstore.com/doc.html?appId=98cb7a20fae34aa3a7e3a3381dd8764e
E9流程表单前端接口API
1. 说明
1.1 简介
所有接口统一封装在全局对象 window.WfForm 中。
部分接口存在使用范围,最低kb版本以及是否移动端/PC端独有。没有特殊注明情况下通用。
表单字段相关操作,不推荐使用jQuery,禁止原生JS直接操作DOM结构!
大家开发过程中,推荐都使用API接口操作,由产品统一运维;同时使用API才能完整的兼容移动终端。
1.2 移动端兼容
WfForm 对象下接口,兼容新版移动端 EM7。
由于API接口在PC端与移动端已经统一,为减少开发工作量以及后期维护成本;故EM7表单在移动终端不再引入 workflow_base 表 custompage4emoble 列作为自定义页面,直接引入 custompage 列(与PC模板一致)作为自定义页面。
前端(JS方法)区分终端:
可通过方法 WfForm.isMobile() 判断是否移动端。
后端请求(自定义页面等)区分终端:
boolean isMobile = "true".equals(request.getParameter("_ec_ismobile")); // true表示是eMobile、微信、钉钉等移动终端,false代表PC端
1.3 前端代码开发方式
- 方式1:模板上代码块,针对单个节点,在显示/打印/移动模板单独配置。
- 方式2:【路径管理】-打开具体路径-【基础设置】-【自定义页面】,针对此路径下所有节点所有模板生效。
- 方式3:【路径管理】-【应用设置】-【流程表单自定义页面设置】,针对系统所有非模板模式的场景(PC及移动)。注意此页面为全局custompage,应避免写ready、checkCustomize等全局函数,只定义些函数体。
特别注意:方式二、方式三禁止引入 init_wev8.js。
如遇配置不生效,请先将代码块/custompage仅写alert确认是否生效,再逐步排查错误原因。
1.4 PC端打开表单的方式
- 新建请求:传参路径id,会自动计算活动版本的路径id
- 查看请求:传参请求id,用户需本身具备此请求查看权限,主次账号需带入账号信息
账号信息
window.open("/workflow/request/ViewRequestForwardSPA.jsp?requestid=5963690"); ```### 1.5 移动端打开表单的方式 移动端表单链接: ```javascript // 新建链接,传参路径id var createUrl = "/spa/workflow/static4mobileform/index.html#/req?iscreate=1&workflowid=748"; // 查看链接,传参请求id var viewUrl = "/spa/workflow/static4mobileform/index.html#/req?requestid=4503066";
第一种方式(推荐):调用封装好的方法
如果是通过移动端脚手架打包的模块,可以直接调用。如果是自行开发的界面,需要引入 /spa/coms/openLink.js。
最低支持版本:KB900190601
url: 打开表单的链接
- callbackFun: 仅限EM客户端,返回时的回调函数
- returnUrl: 非EM客户端,返回/提交后到指定链接
第二种方式:仅限于EM客户端,打开表单并可控制表单返回/提交后事件回调 使用EM-SDK,弹webview方式实现。
window.em.openLink({ url: viewUrl, openType: 2 });
window.em.ready(function(){
window.em.registerBroadcast({
name: "_closeWfFormCallBack",
action: function (argument) { alert("E-mobile打开表单链接,返回或提交后触发此回调函数"); }
});
});
2. 注册自定义事件
ction: function (argument) { alert("E-mobile打开表单链接,返回或提交后触发此回调函数"); } }); });
## 2. 注册自定义事件### 2.1 注册拦截事件,指定动作执行前触发,并可阻断/放行后续操作
支持多次注册,按注册顺序依次执行;支持异步ajax,避免请求卡住。
场景1:表单提交、保存、退回、转发、强制收回等操作执行前,执行自定义逻辑并阻断/放行后续操作。
场景2:明细添加行、删除行前,执行自定义逻辑并阻断/允许后续操作。
**接口名称及参数说明**
```javascript
registerCheckEvent:function(type,fun)
type: 动作类型(详见上表),多个逗号分隔
- fun: 自定义函数,此函数入参为callback,执行自定义逻辑完成或异步ajax的success函数体内,放行需调用callback,不调用代表阻断后续操作
样例
jQuery().ready(function(){
WfForm.registerCheckEvent(WfForm.OPER_SAVE, function(callback){
jQuery("#field27495").val("保存自动赋值");
callback(); // 继续提交需调用callback,不调用代表阻断
});
WfForm.registerCheckEvent(WfForm.OPER_SAVE+","+WfForm.OPER_SUBMIT,function(callback){
// ... 执行自定义逻辑
callback();
});
WfForm.registerCheckEvent(WfForm.OPER_ADDROW+"1", function(callback){
alert("添加明细1前执行逻辑,明细1则是OPER_ADDROW+1,依次类推")
callback(); // 允许继续添加行调用callback,不调用代表阻断添加
});
});
2.2 注册钩子事件,指定动作完成后触发
支持多次调用注册,按注册的先后顺序依次执行。
样例WfForm.registerAction(WfForm.ACTION_ADDROW+"1", function(index){
alert("添加行下标是"+index);
}); // 下标从1开始,明细1添加行触发事件,注册函数入参为新添加行下标
3. 字段基础操作接口
on(index){ alert("添加行下标是"+index); }); // 下标从1开始,明细1添加行触发事件,注册函数入参为新添加行下标
## 3. 字段基础操作接口### 3.1 将字段名称转换成字段id
灵活运用此方法,可实现多表单、多环境,代码块通用;解耦代码块中指定fieldid。
```javascript
convertFieldNameToId: function(fieldname,symbol,prefix)
var fieldid = WfForm.convertFieldNameToId("zs");
var fieldid = WfForm.convertFieldNameToId("zs_mx", "detail_1");
var fieldid = WfForm.convertFieldNameToId("zs_mx", "detail_1", false);
3.2 获取单个字段值
样例var fieldvalue1 = WfForm.getFieldValue("field110");
var fieldvalue2 = mobx.toJS(wfform.getFieldValueObj("field110").specialobj);
3.3 修改单个字段值(不支持附件类型)
此方法修改的字段如果涉及到触发联动、单元格格式化等,修改完值会自动触发联动/格式化。
样例WfForm.changeFieldValue("field123", {value:"1.234"});
WfForm.changeFieldValue("field11_2", {
value: "2,3",
specialobj:[
{id:"2",name:"张三"},
{id:"3",name:"李四"}
]
});
3.4 改变单个字段显示属性(只读/必填等)
-viewAttr: 1:只读,2:可编辑,3:必填,4:隐藏字段标签及内容,5:隐藏字段所在行
3.5 同时修改字段的值及显示属性
3.6 批量修改字段值或显示属性
3.7 触发指定字段涉及的所有联动(归档调用无效)
场景:触发子流程默认不执行字段联动,可在创建节点代码块触发,实现打开时刻执行字段联动。 avascript triggerFieldAllLinkage:function(fieldMark)场景:触发子流程默认不执行字段联动,可在创建节点代码块触发,实现打开时刻执行字段联动。### 3.8 根据字段ID获取字段信息
```javascript
getFieldInfo:function(fieldid)
htmltype, detailtype, fieldname, fieldlabel, viewattr 等。
3.9 获取字段当前的只读/必填属性
此方法为实时获取字段显示属性,包含显示属性联动、代码接口变更、已办、明细已有字段不可修改等可能的变更情况。4. 表单字段事件绑定、自定义渲染
4.1 表单字段值变化触发事件
特别注意: 如果字段绑定事件,事件内改变本字段的值,需要setTimeout 延时下。
4.2 明细字段值变化触发事件
4.3 字段区域绑定动作事件
推荐使用值变化事件实现开发。
类型包括onblur, onfocus, onclick, ondbclick, mouseover, mouseout。
4.4 自定义代理渲染单行文本框字段
最低版本要求:KB900190407。仅对单行文本框字段类型生效。4.5 自定义追加渲染表单字段
4.6 函数式自定义渲染表单字段
最低版本要求:KB900190701。以函数返回值方式自定义渲染表单字段,支持全部的字段类型。4.7 根据字段标识获取字段组件
最低版本要求:KB900190701。5. 明细表操作相关接口
5.1 添加明细行并设置初始值
5.2 删除明细表指定行/全部行
5.3 选中明细指定行/全部行
细指定行/全部行checkDetailRow: function(detailMark, rowIndexMark,needClearBeforeChecked)
```### 5.4 获取明细行所有行标示
```javascript
getDetailAllRowIndexStr: function(detailMark)
5.5 获取明细选中行下标
5.6 控制明细行check框是否禁用勾选
5.7 控制明细数据行的显示及隐藏
5.8 获取明细已有行的数据库主键
5.9 获取明细总行数
5.10 添加行、删除行前执行逻辑或阻断事件
采用注册函数机制,详见接口2.1。
5.11 添加行、删除行后触发事件
采用钩子机制,详见接口2.2。
5.12 移动端跳转至明细编辑行页面执行事件
最低版本要求:KB900190501。
5.13 添加明细时默认复制最后一行记录
5.14 根据明细行标识获取序号(第几行)
6. 常用全局接口
6.1 获取当前打开请求的基础信息
返回包含f_weaver_belongto_userid, formid, nodeid, requestid, workflowid 等。
6.2 可控制显示时间的message信息
6.3 系统样式的Confirm确认框
6.4 表单顶部按钮、右键菜单置灰
6.5 调用右键按钮事件
例如BTN_SUBMIT, BTN_WFSAVE, BTN_REJECTNAME 等。
例如 BTN_SUBMIT, BTN_WFSAVE, BTN_REJECTNAME 等。### 6.6 刷新表单页面
6.7 移动端打开链接方式
6.8 扩展提交操作发送给服务端的参数
最低版本要求:KB900190801。6.9 获取校验必填逻辑第一个未必填的字段
6.10 触发一次必填验证
7. 不同字段类型特定接口
7.1 扩展浏览按钮取数接口参数值
7.2 获取浏览按钮的显示值
7.3 移除选择框字段选项
7.4 控制选择框字段选项
7.5 获取选择框字段的显示值
7.6 文本字段可编辑状态提示信息
7.7 复写浏览按钮组件的props
7.8 控制日期浏览按钮的可选日期范围
7.9 控制Radio框字段打印是否仅显示选中项文字
8. 签字意见接口
8.1 获取签字意见内容
8.2 设置签字意见内容
8.2 设置签字意见内容
setSignRemark: function(text,isClear=true,isAfter=true,callback)
```### 8.3 扩展签字意见输入框底部按钮
```javascript
appendSignEditorBottomBar: function(comps=[])
9. 历史E8代码块的相关兼容
- 9.1 提交事件执行自定义函数 (建议使用2.1代替)
- 9.2 字段值变化触发事件bindPropertyChange (建议使用4.1代替)
- 9.3 明细新增行渲染后触发事件 (建议使用2.2代替)
- 9.4 明细删除行渲染后触发事件 (建议使用2.2代替)
- 9.5 修改浏览按钮字段值window._writeBackData (建议使用WfForm.changeFieldValue)
- 9.6 少用jQuery操作
- 9.7 禁止JS原生操作
10 常用配置文件修改方式
10.1 修改意见默认字体
/api/workflow/index/updateWfConfig?name=signinput_default_fontfamily&value=仿宋_GB2312
10.2 修改意见默认字体大小
/api/workflow/index/updateWfConfig?name=signinput_default_fontsize&value=36/36px
10.3 流程自定义浏览框缓存功能开关
/api/workflow/index/updateWfConfig?name=un_use_customize_browser_cache&value=0
10.4 非多行文本html字段类型支持html格式
执行SQL: update workflow_config set value=value||',field12345_1' where name='support_html_textarea_field'
10.5 PC端-流程表单显示底部耗时信息开关
/api/workflow/index/updateWfConfig?name=show_duration_log&value=1
10.6 明细开启横向滚动条情况下,首行固定
/api/workflow/index/updateWfConfig?name=detail_locked_button_row&value=1
10.7 明细字段合计给主字段赋零值或空值
/api/workflow/index/updateWfConfig?name=colRule_noRow_empty&value=1
10.8 pc端-手写签批按钮开关
/api/workflow/index/updateWfConfig?name=handwrittensign_switch&value=1
10.9 移动端-选择框单选框类型显示成radio效果开关
/api/workflow/index/updateWfConfig?name=mobile_show_radio&value=1
10.10 移动端-表单正文、附件签批功能开关
修改 MobileWFOfficeSign.properties。
11 常用CSS样式案例分享
11.1 实现明细添加删除按钮靠左显示
.detailButtonDiv{float:left}
eWFOfficeSign.properties`。
11 常用CSS样式案例分享
11.1 实现明细添加删除按钮靠左显示
.detailButtonDiv{float:left}### 11.2 实现单元格图片居中、自适应缩放
.imageCell_swap{background-position:center} 或 .imageCell_swap{background-size:100% 100%}
11.3 控制浏览按钮链接颜色
.browserColorCell a{color:red !important}
11.4 控制主表选择框字段最小宽度
.selectCell .wea-select{min-width:50px !important}
12 其它场景分享
12.1 移动端异构系统提交表单后,如何刷新流程列表
window.location.href = 当前ecology服务器地址+"/workflow/workflow/WfRefreshList.jsp"