You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.6 KiB
4.6 KiB
通用表单组件
将表单抽象为配置数据,再使用本组件进行还原
用例:\resource\components\testCase\mobile\common.formComponents.Form.js
可使用 /test/common.FormComponents.Form 路由在项目中查看
组件显示为三种样式
- common/formComonents/Form //在模态窗使用
- common/formComonents/FormInPage //在普通页面使用
- common/formComonents/FormInGrid //在回单页面使用
支持表单类型
- text
- password
- radio
- select
- checkbox
- textarea
- date
- datetime
- range
- tree
- scan
- photo
- locate
- custom
通用属性
- label 表单项显示名称
- value 表单项值
- valid 表单项验证规则
- show 表单项显示条件 text,password,date,datetime,tree 具有的属性 name,placeholder,maxlength,readonly,disabled
date,datetime允许设置一个valueTemplate属性来格式化日期
- 默认 date: yyyy-MM-dd
- 默认 dateTime : yyyy-MM-dd hh:mm:ss
select,radio,checkbox具有的属性
- options: Array
- value : String
- label : String
- selected : Boolean
如果组件本身具有value,则抛弃option的selected属性
- 支持异步获取options
- 当表单项本身没有配置options,且配置了config时触发异步加载options
{
"name":"ChangeOper",
"label":"改派人员",
"type":"select",
"valid":"required",
"config":{
"url":"/mop/xxxx/xxx?xxx=xxx",
"name":"UserName",
"value":"UserId"
}
}
tree具有的属性
- root : 根节点ID
- url : 树url
- idKey : 主键字段名
- pidKey : 父节点字段名 default:parentId
- valueKey : 供显示的名字 default:name
- isLeaf : 是否叶子节点判断 Function,入参节点数据,返回true false
- async : 是否异步树
- 如果是异步树,控件会自动将idKey指定的值作为参数查询下级节点,不需要拼在url上
- 如果确实需要默认查一个节点,请设置root属性的值
例:
{
"name":"ChangeOper",
"label":"转派人员",
"type":"tree",
"valid":"required",
//配置一个模板,提交的值为模板生成的数据.否则直接取idKey所表示的数据
//是一句js表达式,可使用item对象访问当前节点数据
"valueTemplate":"item.ParentOrgId+'#'+item.OrgId+'#'+item.OrgName",
"config":{
"url":"/url/urlxxxx?ccc=bbb&orgid=长沙",
"idKey":"OrgId",
"pidKey":"ParentOrgId",
"valueKey":"OrgName",
"async":true,
"isLeaf":"item.OrgType==='USER'"
}
}
表单的交互方法
可向表单组件广播以下事件
- getValue(callback) 返回表单数据,不验证
- validate(callback,errorCallback) 验证表单,Promise方法,全部验证通过则resolve表单数据,否则reject错误
- setAttr(name,attr,value)
name : 表单项name
attr : 表单项属性
value : 表单项属性的值
如
this.$broadcast("username","value","sa")
除非很清楚自己在干什么,否则不要使用
可监听表单组件冒泡的事件
- change(form)
当表单发生变化时冒泡该事件
- changeValue(name,oldValue,newValue)
当有表单项值发生改变时冒泡该事件。配合setAttr可实现表单项关联
自定义表单项 类型为custom
-
允许自行实现一个组件,作为表单项的选择窗口
-
组件可以配置一些props获得当前表单的一些上下文信息
-
getFormValues:Function 返回当前表单的值
-
getConfig 返回当前表单项配置
-
getDialog 返回当前模态窗实例
-
如果配置了按钮(默认有按钮),组件需要实现一个submit方法,返回一个promise,返回值是一个包含 name,value 字段的对象
-
如果没有配置按钮,组件需要调模态窗的close方法,将返回值传入。如:this.getDialog().close({name:"1",value:"2"})
{
"name" : "test",
"label" : "自定义表单项",
"type" : "custom",
"component" : "./../resource/components/testCase/mobile/ExampleFormMemberComponent"
},
{
"name" : "test1",
"label" : "选择地址",
"type" : "custom",
"component" : "./openBill/SelectResAddressForm",//自定义组件地址
"config" : {
"showBtn" : false,//弹出窗是否显示提交按钮
"btnText" : "确定选择",//弹出窗按钮文字
"selectText" : "选择地址"//选择按钮文字
},
"data" : {
"SpecialtyId" : "11111111"
}
}
表单验证属性规则:
- url
- base64
- ip
- numeric
- integer
- required
- regex(%5E((http%7Chttps%7Cftp%7Cvm)%3A%2F%2F)) //自定义正则 因正则特殊字符较多难以处理,需要先encodeURIComponent处理
- range(7,8)//长度在7-8
- async('/xxxx.do')//异步验证
支持管道式组合验证 如 valid:"required|url|range(7,8)|async('/xxxx.do')"