Skip to content

表单设计常用方法

1 表单属性脚本事件

onLoad 表单加载时触发

名称参数说明
formData-表单数据
示例:
//从formData对象中读取COUNTRY属性的值,并将其存储到变量a中
let a = formData.COUNTRY
setFormData (prop,value,rowIndex,isText)prop:字段属性名(必选)
value:要赋给指定字段的值(必选)
rowIndex:行索引(可选)
isText:是否为显示字段(可选)
设置表单某个组件数据
示例:
//为LONGITUDE赋值1
setFormData("LONGITUDE", 1)
setShowOrHide (prop,value,type)prop:字段属性名(必选)
value:true显示,false隐藏(必选)
type:不传参数默认为组件,button-按钮,column-表格列(可选)
设置显示或隐藏
示例:
//隐藏标识符为 "DETAIL.btn_top_y38i4O2" 的按钮。
setShowOrHide("DETAIL.btn_top_y38i4O2",false,"button");
setRequired(prop,value)prop:字段属性名(必选)
value:true必填,false不必填(必选)
设置必填项
示例:
//设置COUNTRY字段必填
setRequired("COUNTRY",true)
setDisabled (prop,value,index,type)prop:字段属性名,传入"elForm",设置范围为整个表单(必选)
value:true禁用;false不禁用(必选)
index:行索引(禁用按钮时需传入空值)
type:"button"-按钮(禁用子表中的按钮时才填button),"column"-表格列
设置禁用项
示例:
//禁用当前整个表单的所有可交互元素
setDisabled("elForm", true)
request(url,method,data)url:请求的资源路径(必选)
method:如GET,POST(必选)
data:请求发送的数据对象(仅非 GET 请求使用),默认null(可选)
向指定URL发送不同方法请求,并可携带数据
示例:
//获取用户列表
request('https://api.example.com/users', 'GET') .then(users => console.log('用户列表:', users))
getFieldOptions(prop)prop:字段属性名(必选)获取选项,返回Array<object>
示例:
//获取CITY字段的选项数组
getFieldOptions("CITY");
setFieldOptions (prop,value)prop:字段属性名(必选)
value:数组(必选)
设置选项
示例:
//将PROVINCE这个字段下拉值设置为北京
setFieldOptions("PROVINCE", [{ enCode: "beijing", fullName: "北京市" }]);
userState-当前用户信息
//获得用户信息的公司id
userState.userInfo.companyID
除此之外,还有以下常用字段
companyName(公司名称)
organizeId(组织id)
organizeName(组织名称)
roleIds(角色ID集合)
roleName(角色名称)<br>userName(用户名)
belongOrganizeId(所属组织id)
belongOrganizeName(所属组织名称)
flowTaskInfo-当前流程信息
//获取当前流程步骤编号
flowTaskInfo.thisStepCode

beforeSubmit 提交前置触发

与onLoad 表单加载时触发对比,多出一个eventType字段

名称参数说明
eventType-事件类型示例:
//判断当前操作类型不是保存操作且项目名称为空
if (eventType != "save" && !formData.PROJECT)
//除此之外,还有以下类型
submit(提交)
audit(审核)
reject(驳回)
rejectDirect(退回直送)
transfer(转办)
addSignApprove(加签批准)
addSign(加签)
reviewed(已阅)

2 表单组件脚本事件

名称参数说明
paramData-参数传递的数据对象
示例:
//获取当前业务模块的唯一编码并赋值给变量a
let a = paramData.enCode
rowData-表示当前选中行的完整数据,包含当前行所有字段和值的键值对
示例:
//获取用户名
const username = rowData.name
data-当前组件的选中数据,多选框组件等多选为数组,单选为对象
示例:
//拿到某行数据的信息后修改name字段
let data = { ...rowData },data.name = "研发中心"
openWindow<br>(url,title,showHeader,refresh,data)url:指定要加载的组件路径(views/basic/dynamicModel/list/Form表单页面
views/workFlow/components/FlowBox流程表单页面
views/basic/dynamicModel/list/index列表页面
views/infra/word/wordPBSTemplate/index自定义页面)(必选)
title:设置打开的窗口标题(可选)
showHeader:控制窗口是否显示标题栏,true显示,false不显示(可选)
refresh:控制是否刷新数据,true显示,false不显示(可选)
popupType:弹窗类型(可选)
openTabsOnBrowser:是否在浏览器新tab页中打开(true:在新tab页打开,false:不在新tab页中打开)
width,height:弹窗宽度和高度
isDetail:是否为详情页

data:用于传递给目标界面的数据(必选),包括:
TmplCode:打开配置页面必不可缺的参数,它是配置页面的结构数据id,功能设计id
flowId:对于打开高开的流程表单使用这个参数,他是流程设计的id(TmplCode和flowId只需要一个)
id:打开页面的真实数据ID,通常情况下会根据此id在被打开页面的init方法中使用
formType: 表单类型,是开发模式=1,配置模式=2,如果要打开流程页面时,是必须的
opType:流程状态,待审,已审,抄送,发起等
defVal:自定义数据集,用作生成默认值,或传递数据 id
taskId:流程任务id(可选)
taskNodeId:流程任务节点id(可选)

onDestroy:回调函数(必选),包括confirm:确认后调用(data:弹窗数据-表单数据,selectedData:弹窗数据-选择数据)
componentClose:回调关闭后调用(close:关闭弹窗)
打开新窗口
示例:
//​​打开一个自定义页面
openWindow({<br>url: "views/infra/word/wordPBSTemplate/index",<br>height: "800px",<br>width: "800px",<br>title: "选择数据",<br>showHeader: true,<br>showFooter: true,<br>refresh: true,<br>popupType: "general",<br>isDetail: false,<br>data: {<br>TmplCode: "547062297219039429",<br>id: "585007185948316677",<br>taskNodeId: "585007187017864198",<br>taskId: "585025915570885637",<br>opType: "1",<br>},<br>onDestroy: {<br>confirm: ({ data, selectedData }) => {<br>console.log(data, selectedData, "confirm======data=======");<br>this.close();<br>},<br>componentClose: () => {<br>console.log("componentClose==========");<br>this.close();<br>},<br>},<br>});
addSelector(initSearchInfo: SelectorObject)initSearchInfo:初始化查询条件
SelectorObject:是一个键值对对象
key:其中key的结构为($操作符$字段名),操作符为查询条件操作符,字段名是要查询的数据库字段名称
value:查询条件的匹配值
添加查询条件选择器
示例:
//添加一个初始查询条件:筛选出合同信息(CONTRACTINFO)为空的数据记录
addSelector(initSearchInfo:{$EQ$CONTRACTINFO:""})
$EQ$ = 等于(Equal)操作符
rowIndex-表示数据行在表格中的索引位置
示例:
//通过索引获取数据
const selectedRow = dataList[rowIndex];
downloadFile(url,name)url:要下载的文件的完整网络地址(必选)
name:下载后保存在本地的文件名,加后缀(必选)
文件的下载操作
示例:
//下载该路径下的文件
downloadFile("https://server.com/files/report.pdf","2023年8月销售报告.pdf" );
downloadFiles(value)value:JSON字符串或JSON数组字符串(必选)
例如:
[{xxx},{xxx}]
文件的批量下载操作(当传入单个文件时,直接下载该文件.当传入多个文件时,打包为ZIP文件下载)
示例:
//下载名称为客户信息管理的文件
downloadFile([{xxx},{xxx}]);
downloadWord(code, type, id, name)code:文档生成模板的唯一标识
type:word或者pdf(要导出文档的格式)
id:当前选中行的id
name:下载后保存在本地的文件名
导出word模板
示例:
//导出销售合同
downloadWord("SALES_CONTRACT_T01", "word", "CT20230721001", "销售合同");
callback(value)value:true(表示上传成功),false(中断上传并通知失败)控制文件上传
示例:
//用户点击取消按钮
cancelButton.onclick =()=> {callback(false);};