表单(Form)
一、视图特征
- 视图类型:表单(FORM)
- 数据类型:对象(Object)
- DSL 特征:具备布局功能。
- 数据结构通用行为:
- 查询行为:页面初始化、数据回填。
- 表单行为:
- 交互行为:数据填写、数据验证、数据提交等。
- 子表格查询行为:通过前端分页查询。
- 常用接口:(默认数据管理器函数)
- construct:页面初始化。(pk is null)
- queryOne:数据回填。(pk is not null)
- create:新增时创建。(pk is null)
- update:编辑时更新。(pk is not null)
二、DSL 结构
一个精简版视图可以是这样的:(“精简” 表示每个标签的属性数量少,而不是节点数量少。)
<view type="FORM" model="demo.DemoModel" name="demo_form_view">
<template slot="actions">
<action name="$$internal_GotoListTableRouter" label="返回" type="default"/>
<action name="create" validateForm="true" goBack="true"/>
<action name="update" validateForm="true" goBack="true"/>
</template>
<template slot="fields">
<field data="id" invisible="true"/>
<field data="code"/>
<field data="name"/>
</template>
</view>- 在这个
DSL中,围绕着模型demo.DemoModel定义了字段和动作,并通过布局提供的插槽将其放在对应的位置。 - 在插槽中的元素从上到下表示了其相对位置,改变先后顺序就可以改变其渲染在页面上的位置。
action标签使用validateForm属性开启表单提交验证功能,使用goBack属性在提交成功后自动返回上一页面。- 返回动作是一个客户端动作,它与模型无关,也没有任何元数据。
- 在
fields插槽中,你可以使用所有的Pack 组件实现栅格布局功能。
三、默认字段组件
在上面的 DSL 中,我们并没有指定 widget 属性,那么在这种情况下,Widget 框架将根据字段元数据属性获取对应的默认组件。下面列举了目前表单视图中用到的所有默认组件:
| 字段类型 | 是否多值 | 默认组件 | TypeScript Class |
|---|---|---|---|
| 文本(STRING) | 否 | 文本(Input) | FormStringInputFieldWidget |
| 是 | 标签(Tag) | FormStringMultiTagFieldWidget | |
| 多行文本(TEXT) | 否 | 多行文本(TextArea) | FormTextFieldWidget |
| 富文本(HTML) | 否 | 富文本(RichText) | FormHtmlRichTextFieldWidget |
| 手机(PHONE) | 否 | 手机(Phone) | FormPhoneFieldWidget |
| 邮箱(EMAIL) | 否 | 邮箱(Email) | FormEmailFieldWidget |
| 整数(INTEGER) | 否 | 整数(Integer) | FormIntegerFieldWidget |
| 是 | 标签(Tag) | FormIntegerMultiFieldWidget | |
| 浮点数(FLOAT) | 否 | 数字(Float) | FormFloatFieldWidget |
| 金额(MONEY) | 否 | 货币(Currency) | FormMoneyFieldWidget |
| 布尔(BOOLEAN) | 否 | 开关(Switch) | FormBooleanSwitchFieldWidget |
| 枚举(ENUM) | 否 | 下拉单选(Select) | FormEnumFieldWidget |
| 是 | 下拉多选(Select) | FormEnumMultiSelectFieldWidget | |
| 日期时间(DATETIME) | 否 | 日期时间(DateTimePicker) | FormDateTimeFieldWidget |
| 日期(DATE) | 否 | 日期(DatePicker) | FormDateFieldWidget |
| 时间(TIME) | 否 | 时间(TimePicker) | FormTimeFieldWidget |
| 年份(YEAR) | 否 | 年份(YearPicker) | FormYearFieldWidget |
| 键值对(MAP) | 否 | 键值对(Map) | FormMapFieldWidget |
| 多对一(M2O) | 否 | 下拉单选(Select) | FormM2OSelectFieldWidget |
| 一对多(O2M) | 是 | 下拉多选(Select) | FormO2MSelectFieldWidget |
| 多对多(M2M) | 是 | 下拉多选(Select) | FormM2MFieldSelectWidget |
四、可选字段组件
针对每一种字段类型,除了上述对应的默认组件外,还有一些组件是通过指定 widget 属性进行使用的。下面列举了目前表单视图中现有的字段组件:
| 字段类型 | 是否多值 | 组件 | TypeScript Class |
|---|---|---|---|
| 文本(STRING) | 否 | 颜色(ColorPicker) | FormStringColorPickerFieldWidget |
| 手写签名(Signature) | FormStringSignatureFieldWidget | ||
| 拖拽上传(UploadDraggable) | FormStringUploadDraggableFieldWidget | ||
| 文件(Upload) | FormStringUploadFieldWidget | ||
| 图片(UploadImg) | FormStringUploadImgFieldWidget | ||
| 嵌入网页(Iframe) | FormStringIframeFieldWidget | ||
| 超链接(Hyperlinks) | FormStringHyperlinksFieldWidget | ||
| 文件下载(Download) | FormStringDownloadFieldWidget | ||
| 多媒体播放器(MediaPlayer) | FormStringMediaPlayerFieldWidget | ||
| 手机(Phone) | FormStringPhoneFieldWidget | ||
| 邮箱(Email) | FormStringEmailFieldWidget | ||
| 是 | 文件(Upload) | FormStringUploadFieldWidget | |
| 图片(UploadImg) | FormStringUploadImgFieldWidget | ||
| 多媒体播放器(MediaPlayer) | FormStringMediaPlayerFieldWidget | ||
| 多行文本(TEXT) | 否 | 手写签名(Signature) | FormStringSignatureFieldWidget |
| 拖拽上传(UploadDraggable) | FormStringUploadDraggableFieldWidget | ||
| 文件(Upload) | FormStringUploadFieldWidget | ||
| 图片(UploadImg) | FormStringUploadImgFieldWidget | ||
| 文件下载(Download) | FormStringDownloadFieldWidget | ||
| 整数(INTEGER) | 否 | 滑动输入框(Slider) | FormIntegerSliderFieldWidget |
| 是 | 标签(Tag) | FormIntegerTagFieldWidget | |
| 布尔(BOOLEAN) | 否 | 下拉单选(Select) | FormBooleanSelectFieldWidget |
| 单选框(Radio) | FormBooleanRadioFieldWidget | ||
| 复选框(Checkbox) | FormBooleanCheckboxFieldWidget | ||
| 枚举(ENUM) | 否 | 单选框(Radio) | FormEnumRadioWidget |
| 是 | 复选框(Checkbox) | FormEnumMultiCheckboxFieldWidget | |
| 多对一(M2O) | 否 | 单选框(Radio) | FormM2ORadioFieldWidget |
| 表单(Form) | FormM2OFormFieldWidget | ||
| 树选择(TreeSelect) | FormM2OTreeSelectFieldWidget | ||
| 级联选择(Cascader) | FormM2OCascaderFieldWidget | ||
| 拖拽上传(UploadDraggable) | FormM2OUploadDraggableFieldWidget | ||
| 文件(Upload) | FormM2OUploadFieldWidget | ||
| 图片(UploadImg) | FormM2OUploadImgFieldWidget | ||
| 地址(Address) | FormM2OAddressFieldWidget | ||
| 公司(Company) | FormM2OCompanyFieldWidget | ||
| 部门(Department) | FormM2ODepartmentFieldWidget | ||
| 员工(Employee) | FormM2OEmployeeFieldWidget | ||
| 一对多(O2M) | 是 | 复选框(Checkbox) | FormO2MCheckboxFieldWidget |
| 表格(Table) | FormO2MTableFieldWidget | ||
| 树选择(TreeSelect) | FormO2MTreeSelectFieldWidget | ||
| 级联选择(Cascader) | FormO2MCascaderFieldWidget | ||
| 穿梭框(Transfer) | FormTransferFieldWidget | ||
| 拖拽上传(UploadDraggable) | FormO2MUploadDraggableFieldWidget | ||
| 文件(Upload) | FormO2MUploadFieldWidget | ||
| 图片(UploadImg) | FormO2MUploadImgFieldWidget | ||
| 多对多(M2M) | 是 | 复选框(Checkbox) | FormM2MCheckboxFieldWidget |
| 表格(Table) | FormM2MTableFieldWidget | ||
| 树选择(TreeSelect) | FormM2MTreeSelectFieldWidget | ||
| 级联选择(Cascader) | FormM2MCascaderFieldWidget | ||
| 穿梭框(Transfer) | FormTransferFieldWidget | ||
| 树(Tree) | FormM2MTreeFieldWidget | ||
| 拖拽上传(UploadDraggable) | FormM2MUploadDraggableFieldWidget | ||
| 文件(Upload) | FormM2MUploadFieldWidget | ||
| 图片(UploadImg) | FormM2MUploadImgFieldWidget | ||
| 公司(Company) | FormM2MCompanyFieldWidget | ||
| 部门(Department) | FormM2MDepartmentFieldWidget | ||
| 员工(Employee) | FormM2MEmployeeFieldWidget |
五、DSL 属性配置
(一)表单属性配置
<element widget="Form">
......
</element>- layout:表单布局(
'horizontal' | 'vertical' | 'inline') - cols:行栅格数(
number) - submitType:提交类型(
SubmitType) - relationUpdateType:关联关系更新类型(
RelationUpdateType) - filter:不可视过滤条件(
rsql) - domain:可视过滤条件(
rsql) - load:加载函数函数编码,
FunctionDefinition#fun(string)
(二)通用字段配置
- invisible:是否隐藏(
boolean | expression) - usingLoading:是否使用加载过渡动画(
boolean) - submitType:提交类型(
SubmitType) - relationUpdateType:关联关系更新类型(
RelationUpdateType) - layout:表单布局(
'horizontal' | 'vertical' | 'inline') - label:字段标题(
string | expression) - labelInvisible:是否隐藏字段标题(
boolean) - help:字段帮助文本(
string) - hint:字段提示文本(
string | expression) - required:是否必填(
boolean | expresssion) - requiredTips:必填提示文本(
string) - readonly:是否只读(
boolean | expresssion) - disabled:是否禁用(
boolean | expresssion) - validateTrigger:验证触发时机(
('change' | 'blur')[]) - validator:验证表达式(
expression) - validatorMessage:验证表达式验证不通过的提示文本(
string) - patternType:使用内置正则验证类型进行校验(
FieldStringPatternType | expression) - pattern:正则表达式(
RegExp) - tips:正则表达式验证不通过的提示文本(
string | expression) - constructDataTrigger:提交数据触发时机(
('change' | 'blur')[]) - constructFun:提交数据函数编码,
FunctionDefinition#fun(string) - constructSubmitType:提交数据类型(
'CURRENT' | 'ROOT' | 'SELF' | 'CUSTOM') - submitFields:提交数据字段,当
constructSubmitType="CUSTOM"时有效(string[]) - clearFieldsTrigger:清理字段触发时机(
('change' | 'blur')[]) - clearFields:触发后清理字段列表(
string[]) - allowClear:允许置空(
boolean) - placeholder:占位提示文本(
string | expression) - emptyStyle:空值样式(
string | 'hyphen' | 'empty' | 'null')
提示
带 “” 标记的属性并不是完全通用的属性,而是需要依赖具体组件实现,若组件本身的交互不支持或未实现的可能会出现配置无效的情况。
例如:Checkbox 组件无法实现 allowClear 属性的功能。
(三)字段组件属性配置
1、文本(STRING)
FormStringInputFieldWidget
<field data="stringField" />- type:输入类型(
'text' | 'password' | expression) - prefix:前缀文本(
string | icon) - prefixType:前缀类型(
'TEXT' | 'ICON') - prefixStore:前缀是否存储(
boolean) - suffix:后缀文本(
string | icon) - suffixType:后缀类型(
'TEXT' | 'ICON') - suffixStore:后缀是否存储(
boolean) - minLength:最小长度(
number | expression) - maxLength:最大长度(
number | expression) - showCount:显示计数器(
boolean) - crypto:加密存储(
boolean) - translation:翻译显示值(
boolean)
FormStringColorPickerFieldWidget
<field data="stringField" widget="ColorPicker" />- predefine:预置颜色(
JSON - string[])
FormStringSignatureFieldWidget
<field data="stringField" widget="Signature" />- showClearButton:是否展示清除按钮(
boolean) - clearButtonText:清除按钮文字(
string) - showSaveButton:是否展示保存按钮(
boolean) - saveButtonText:保存按钮文字(
string) - signatureFontColor:签名文字颜色(
color) - signatureBackGroundColor:签名背景面板颜色(
color)
FormStringUploadDraggableFieldWidget
<field data="stringField" widget="UploadDraggable" />- draggableIcon:拖拽上传图标(
icon) - draggableTipText:拖拽上传提示词(
string) - showDraggableExtendsionsText:是否展示支持拓展名(
boolean) - draggableExtendsionsText:允许上传的文件类型提示文本(
string) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limit:上传数量限制(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png'
FormStringUploadFieldWidget
<field data="stringField" widget="Upload" />- uploadPlaceholder:文件上传提示文本(
string) - uploadIcon:文件上传提示图标(
icon) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limit:上传数量限制(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png' - cdnKey:指定上传 cdnKey,配合后端 OSS 配置使用(
string) - privateLink:使用后端上传/下载文件,当 OSS 无法通过客户端直传时使用(
boolean)
FormStringUploadImgFieldWidget
<field data="stringField" widget="UploadImg" />- uploadPlaceholder:文件上传提示文本(
string) - uploadIcon:文件上传提示图标(
icon) - uploadIconText:上传图标提示文本(
string) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limit:上传数量限制(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png'
FormStringIframeFieldWidget
<field data="stringField" widget="Iframe" />- mode:组件模式(
'DYNAMIC' | 'STATIC')
提示
- 当组件模式为
STATIC时,可展示内嵌网页。 - 当组件模式为
DYNAMIC时,组件可配置属性与 FormStringInputFieldWidget 组件类似。
FormStringHyperlinksFieldWidget
<field data="stringField" widget="Hyperlinks" />- target:链接打开方式(
'OPEN_WINDOW' | 'ROUTER') - text:链接显示文本(
string)
FormStringDownloadFieldWidget
<field data="stringField" widget="Download" />- linkDisplayTextPrefix:下载提示文本前缀(
string) - linkDisplayText:下载提示文本(
string) - downloadFileName:下载的文件名(
string)
FormStringMediaPlayerFieldWidget
<field data="stringField" widget="MediaPlayer" />- mode:组件模式(
'DYNAMIC' | 'STATIC') - fileSource:文件来源(
'UPLOAD' | 'INPUT')
提示
- 当组件模式为
STATIC时,可展示多媒体播放器。 - 当组件模式为
DYNAMIC时,文件来源属性生效。- 当文件来源为
UPLOAD时,组件可配置属性与 FormStringUploadFieldWidget 组件类似。 - 当文件来源为
INPUT时,组件可配置属性与 FormStringInputFieldWidget 组件类似。
- 当文件来源为
FormStringPhoneFieldWidget
<field data="stringField" widget="Phone" />- prefix:前缀文本(
string | icon) - prefixType:前缀类型(
'TEXT' | 'ICON') - prefixStore:前缀是否存储(
boolean) - suffix:后缀文本(
string | icon) - suffixType:后缀类型(
'TEXT' | 'ICON') - suffixStore:后缀是否存储(
boolean) - minLength:最小长度(
number | expression) - maxLength:最大长度(
number | expression) - showCount:显示计数器(
boolean)
FormStringEmailFieldWidget
<field data="stringField" widget="Email" />- prefix:前缀文本(
string | icon) - prefixType:前缀类型(
'TEXT' | 'ICON') - prefixStore:前缀是否存储(
boolean) - suffix:后缀文本(
string | icon) - suffixType:后缀类型(
'TEXT' | 'ICON') - suffixStore:后缀是否存储(
boolean) - minLength:最小长度(
number | expression) - maxLength:最大长度(
number | expression) - showCount:显示计数器(
boolean)
FormStringMultiTagFieldWidget
<field data="stringMultiField" />- allowRepeat:是否允许重复(
boolean) - unitValueLength:单位值最大长度(
number)
2、多行文本(TEXT)
FormTextFieldWidget
<field data="textField" />- minLength:最小长度(
number | expression) - maxLength:最大长度(
number | expression) - showCount:显示计数器(
boolean) - rows:最小行数,可调整默认输入框高度(
number)
3、富文本(HTML)
FormHtmlRichTextFieldWidget
<field data="htmlField" />- height:高度(
string | number) - encode:加密存储(
boolean)
4、手机(PHONE)
FormPhoneFieldWidget
<field data="phoneField" />- prefix:前缀文本(
string | icon) - prefixType:前缀类型(
'TEXT' | 'ICON') - prefixStore:前缀是否存储(
boolean) - suffix:后缀文本(
string | icon) - suffixType:后缀类型(
'TEXT' | 'ICON') - suffixStore:后缀是否存储(
boolean) - minLength:最小长度(
number | expression) - maxLength:最大长度(
number | expression) - showCount:显示计数器(
boolean)
5、邮箱(EMAIL)
FormEmailFieldWidget
<field data="emailField" />- prefix:前缀文本(
string | icon) - prefixType:前缀类型(
'TEXT' | 'ICON') - prefixStore:前缀是否存储(
boolean) - suffix:后缀文本(
string | icon) - suffixType:后缀类型(
'TEXT' | 'ICON') - suffixStore:后缀是否存储(
boolean) - minLength:最小长度(
number | expression) - maxLength:最大长度(
number | expression) - showCount:显示计数器(
boolean)
6、整数(INTEGER)
FormIntegerFieldWidget
<field data="integerField" />- prefix:前缀文本(
string | icon) - prefixType:前缀类型(
'TEXT' | 'ICON') - prefixStore:前缀是否存储(
boolean) - suffix:后缀文本(
string | icon) - suffixType:后缀类型(
'TEXT' | 'ICON') - suffixStore:后缀是否存储(
boolean) - unit:单位(
string | expression) - showThousandth:是否显示千分位(
boolean | expression) - size:整数位数(
number | expression) - min:最小值(
number | expression) - max:最大值(
number | expression) - step:递增或递减步长(
number) - addStep:递增步长,优先于 step 属性(
number) - reduceStep:递减步长,优先于 step 属性(
number) - autocorrection:失焦后自动修复(
boolean)
FormIntegerSliderFieldWidget
<field data="integerField" widget="Slider" />- min:最小值(
number | expression) - max:最大值(
number | expression) - step:递增或递减步长(
number) - direction:滑动条方向(
'horizontal' | 'vertical') - reverse:反向坐标轴,滑动条置反(
boolean) - hasTooltip:显示提示气泡(
boolean)
FormIntegerMultiFieldWidget
<field data="integerMultiField" />- allowRepeat:是否允许重复(
boolean) - unitValueLength:单位值最大长度(
number) - limit:最大标签个数(
number) - min:单个数字最小值(
number | expression) - max:单个数字最大值(
number | expression)
FormIntegerTagFieldWidget
<field data="integerMultiField" widget="Tag" />- allowRepeat:是否允许重复(
boolean) - unitValueLength:单位值最大长度(
number)
7、浮点数(FLOAT)
FormFloatFieldWidget
<field data="floatField" />- prefix:前缀文本(
string | icon) - prefixType:前缀类型(
'TEXT' | 'ICON') - prefixStore:前缀是否存储(
boolean) - suffix:后缀文本(
string | icon) - suffixType:后缀类型(
'TEXT' | 'ICON') - suffixStore:后缀是否存储(
boolean) - unit:单位(
string | expression) - showThousandth:是否显示千分位(
boolean | expression) - size:整数位数(
number | expression) - precision:小数位数(
number | expression) - min:最小值(
number | expression) - max:最大值(
number | expression) - step:递增或递减步长(
number) - addStep:递增步长,优先于 step 属性(
number) - reduceStep:递减步长,优先于 step 属性(
number) - autocorrection:失焦后自动修复(
boolean)
8、金额(MONEY)
FormMoneyFieldWidget
<field data="moneyField" />同 FormFloatFieldWidget 组件属性。
9、布尔(BOOLEAN)
FormBooleanSwitchFieldWidget
<field data="booleanField" />FormBooleanSelectFieldWidget
<field data="booleanField" widget="Select" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number)
FormBooleanRadioFieldWidget
<field data="booleanField" widget="Select" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number) - orientation:排列方向(
'TRANSVERSE' | 'VERTICAL') - radioMode:可选项样式(
'BUTTON') - rowLimit:每行展示可选项数量(
number) - autocorrection:失焦后自动修复(
boolean)
FormBooleanCheckboxFieldWidget
<field data="booleanField" widget="Checkbox" />10、枚举(ENUM)
FormEnumFieldWidget
<field data="enumField" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number)
FormEnumRadioWidget
<field data="enumField" widget="Radio" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number) - orientation:排列方向(
'TRANSVERSE' | 'VERTICAL') - radioMode:可选项样式(
'BUTTON') - rowLimit:每行展示可选项数量(
number) - autocorrection:失焦后自动修复(
boolean)
FormEnumMultiSelectFieldWidget
<field data="enumMultiField" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number)
FormEnumMultiCheckboxFieldWidget
<field data="enumMultiField" widget="Checkbox" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number) - orientation:排列方向(
'TRANSVERSE' | 'VERTICAL')
11、日期时间(DATETIME)
FormDateTimeFieldWidget
<field data="datetimeField" />- format:日期时间格式化文本(
string)
12、日期(DATE)
FormDateFieldWidget
<field data="dateField" />- format:日期格式化文本(
string)
13、时间(TIME)
FormTimeFieldWidget
<field data="timeField" />- format:时间格式化文本(
string)
14、年份(YEAR)
FormYearFieldWidget
<field data="yearField" />- format:年份格式化文本(
string)
15、键值对(MAP)
FormMapFieldWidget
<field data="mapField" />- limit:限制键值对数量(
number)
16、多对一(M2O)
FormM2OSelectFieldWidget
<field data="m2oField" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number) - load:加载函数函数编码,
FunctionDefinition#fun(string) - showSearch:是否允许搜索(
boolean) - searchFields:搜索字段(
string[]) - optionLabel:可选项标题(
expression)
FormM2ORadioFieldWidget
<field data="m2oField" widget="Radio" />- orientation:排列方向(
'TRANSVERSE' | 'VERTICAL') - optionLabel:可选项标题(
expression)
FormM2OFormFieldWidget
<field data="m2oField" widget="Form">
<view type="FORM">
<template slot="fields">
<field data="id" invisible="true" />
<field data="code" />
<field data="name" />
</template>
</view>
</field>FormM2OTreeSelectFieldWidget
<!-- references="business.PamirsEmployee" -->
<field data="m2oField" widget="TreeSelect">
<nodes>
<node model="business.PamirsCompany" label="activeRecord.name" labelFields="name" selfReferences="parent" />
<node model="business.PamirsDepartment" label="activeRecord.name" labelFields="name" references="company" selfReferences="parent" />
<node model="business.PamirsEmployee" label="activeRecord.name" labelFields="name" references="departmentList" />
</nodes>
</field>- onlySelectedLeaf:仅允许选择叶节点数据(
boolean) - enableSearch:是否允许搜索(
boolean) - fetchAll:一次性获取全部数据(
boolean) - node.model:层级模型编码(
string) - node.label:层级选项标题(
expression) - node.labelFields:层级标题字段(
string[]) - node.references:层级关联模型编码(
string) - node.selfReferences:自关联字段编码(
string)
FormM2OCascaderFieldWidget
<!-- references="business.PamirsEmployee" -->
<field data="m2oField" widget="Cascader">
<nodes>
<node model="business.PamirsCompany" label="activeRecord.name" labelFields="name" selfReferences="parent" />
<node model="business.PamirsDepartment" label="activeRecord.name" labelFields="name" references="company" selfReferences="parent" />
<node model="business.PamirsEmployee" label="activeRecord.name" labelFields="name" references="departmentList" />
</nodes>
</field>- changeOnSelect:选择即改变(
boolean) - showPath:显示选中路径(
boolean) - labelsSeparator:标题文本分隔符(
string) - enableSearch:是否允许搜索(
boolean) - fetchAll:一次性获取全部数据(
boolean) - node.model:层级模型编码(
string) - node.label:层级选项标题(
expression) - node.labelFields:层级标题字段(
string[]) - node.references:层级关联模型编码(
string) - node.selfReferences:自关联字段编码(
string)
FormM2OUploadDraggableFieldWidget
<field data="m2oField" widget="UploadDraggable" />- draggableIcon:拖拽上传图标(
icon) - draggableTipText:拖拽上传提示词(
string) - showDraggableExtendsionsText:是否展示支持拓展名(
boolean) - draggableExtendsionsText:允许上传的文件类型提示文本(
string) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png'
FormM2OUploadFieldWidget
<!-- references="base.PamirsFile" -->
<field data="m2oField" widget="Upload" />- uploadPlaceholder:文件上传提示文本(
string) - uploadIcon:文件上传提示图标(
icon) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png' - cdnKey:指定上传 cdnKey,配合后端 OSS 配置使用(
string) - privateLink:使用后端上传/下载文件,当 OSS 无法通过客户端直传时使用(
boolean)
FormM2OUploadImgFieldWidget
<!-- references="base.PamirsFile" -->
<field data="m2oField" widget="UploadImg" />- ploadPlaceholder:文件上传提示文本(
string) - uploadIcon:文件上传提示图标(
icon) - uploadIconText:上传图标提示文本(
string) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png'
FormM2OAddressFieldWidget
<!-- references="resource.ResourceAddress" -->
<field data="m2oField" widget="Address" />- changeOnSelect:选择即改变(
boolean) - showPath:显示选中路径(
boolean) - labelsSeparator:标题文本分隔符(
string) - enableSearch:是否允许搜索(
boolean) - fetchAll:一次性获取全部数据(
boolean)
FormM2OCompanyFieldWidget
<!-- references="business.PamirsCompany" -->
<field data="m2oField" widget="Company" />FormM2ODepartmentFieldWidget
<!-- references="business.PamirsDepartment" -->
<field data="m2oField" widget="Department" />FormM2OEmployeeFieldWidget
<!-- references="business.PamirsEmployee" -->
<field data="m2oField" widget="Employee" />17、一对多(O2M)
FormO2MSelectFieldWidget
<field data="o2mField" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number) - load:加载函数函数编码,
FunctionDefinition#fun(string) - showSearch:是否允许搜索(
boolean) - searchFields:搜索字段(
string[]) - optionLabel:可选项标题(
expression)
FormO2MCheckboxFieldWidget
<field data="o2mField" widget="Checkbox" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number) - load:加载函数函数编码,
FunctionDefinition#fun(string) - optionLabel:可选项标题(
expression)
FormO2MTableFieldWidget
<field data="o2mField" widget="Table">
<view type="TABLE">
<template slot="fields">
<field data="id" invisible="true" />
<field data="code" />
<field data="name" />
</template>
</view>
</field>FormO2MTreeSelectFieldWidget
<!-- references="business.PamirsEmployee" -->
<field data="o2mField" widget="TreeSelect">
<nodes>
<node model="business.PamirsCompany" label="activeRecord.name" labelFields="name" selfReferences="parent" />
<node model="business.PamirsDepartment" label="activeRecord.name" labelFields="name" references="company" selfReferences="parent" />
<node model="business.PamirsEmployee" label="activeRecord.name" labelFields="name" references="departmentList" />
</nodes>
</field>- onlySelectedLeaf:仅允许选择叶节点数据(
boolean) - enableSearch:是否允许搜索(
boolean) - fetchAll:一次性获取全部数据(
boolean) - node.model:层级模型编码(
string) - node.label:层级选项标题(
expression) - node.labelFields:层级标题字段(
string[]) - node.references:层级关联模型编码(
string) - node.selfReferences:自关联字段编码(
string)
FormO2MCascaderFieldWidget
<!-- references="business.PamirsEmployee" -->
<field data="o2mField" widget="Cascader">
<nodes>
<node model="business.PamirsCompany" label="activeRecord.name" labelFields="name" selfReferences="parent" />
<node model="business.PamirsDepartment" label="activeRecord.name" labelFields="name" references="company" selfReferences="parent" />
<node model="business.PamirsEmployee" label="activeRecord.name" labelFields="name" references="departmentList" />
</nodes>
</field>- changeOnSelect:选择即改变(
boolean) - enableSearch:是否允许搜索(
boolean) - fetchAll:一次性获取全部数据(
boolean) - node.model:层级模型编码(
string) - node.label:层级选项标题(
expression) - node.labelFields:层级标题字段(
string[]) - node.references:层级关联模型编码(
string) - node.selfReferences:自关联字段编码(
string)
FormO2MUploadDraggableFieldWidget
<field data="o2mField" widget="UploadDraggable" />- draggableIcon:拖拽上传图标(
icon) - draggableTipText:拖拽上传提示词(
string) - showDraggableExtendsionsText:是否展示支持拓展名(
boolean) - draggableExtendsionsText:允许上传的文件类型提示文本(
string) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limit:上传数量限制(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png'
FormO2MUploadFieldWidget
<field data="o2mField" widget="Upload" />- uploadPlaceholder:文件上传提示文本(
string) - uploadIcon:文件上传提示图标(
icon) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limit:上传数量限制(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png' - cdnKey:指定上传 cdnKey,配合后端 OSS 配置使用(
string) - privateLink:使用后端上传/下载文件,当 OSS 无法通过客户端直传时使用(
boolean)
FormO2MUploadImgFieldWidget
<field data="o2mField" widget="UploadImg" />- ploadPlaceholder:文件上传提示文本(
string) - uploadIcon:文件上传提示图标(
icon) - uploadIconText:上传图标提示文本(
string) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limit:上传数量限制(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png'
18、多对多(M2M)
FormM2MFieldSelectWidget
<field data="m2mField" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number) - load:加载函数函数编码,
FunctionDefinition#fun(string) - showSearch:是否允许搜索(
boolean) - searchFields:搜索字段(
string[]) - optionLabel:可选项标题(
expression)
FormM2MCheckboxFieldWidget
<field data="m2mField" widget="Checkbox" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number) - load:加载函数函数编码,
FunctionDefinition#fun(string) - optionLabel:可选项标题(
expression)
FormM2MTableFieldWidget
<field data="m2mField" widget="Table">
<view type="TABLE">
<template slot="fields">
<field data="id" invisible="true" />
<field data="code" />
<field data="name" />
</template>
</view>
</field>FormM2MTreeSelectFieldWidget
<!-- references="business.PamirsEmployee" -->
<field data="m2mField" widget="TreeSelect">
<nodes>
<node model="business.PamirsCompany" label="activeRecord.name" labelFields="name" selfReferences="parent" />
<node model="business.PamirsDepartment" label="activeRecord.name" labelFields="name" references="company" selfReferences="parent" />
<node model="business.PamirsEmployee" label="activeRecord.name" labelFields="name" references="departmentList" />
</nodes>
</field>- onlySelectedLeaf:仅允许选择叶节点数据(
boolean) - enableSearch:是否允许搜索(
boolean) - fetchAll:一次性获取全部数据(
boolean) - node.model:层级模型编码(
string) - node.label:层级选项标题(
expression) - node.labelFields:层级标题字段(
string[]) - node.references:层级关联模型编码(
string) - node.selfReferences:自关联字段编码(
string)
FormM2MCascaderFieldWidget
<!-- references="business.PamirsEmployee" -->
<field data="m2mField" widget="Cascader">
<nodes>
<node model="business.PamirsCompany" label="activeRecord.name" labelFields="name" selfReferences="parent" />
<node model="business.PamirsDepartment" label="activeRecord.name" labelFields="name" references="company" selfReferences="parent" />
<node model="business.PamirsEmployee" label="activeRecord.name" labelFields="name" references="departmentList" />
</nodes>
</field>- changeOnSelect:选择即改变(
boolean) - enableSearch:是否允许搜索(
boolean) - fetchAll:一次性获取全部数据(
boolean) - node.model:层级模型编码(
string) - node.label:层级选项标题(
expression) - node.labelFields:层级标题字段(
string[]) - node.references:层级关联模型编码(
string) - node.selfReferences:自关联字段编码(
string)
FormTransferFieldWidget
<field data="m2mField" widget="Transfer" />- maxNumber:最大选择数(
number) - minNumber:最小选择数(
number) - optionLabel:可选项标题(
expression) - enableSearch:是否启用搜索(
boolean) - sortable:是否启用排序(
boolean) - leftDisplayType:左侧显示类型(
'LIST' | 'TABLE') - leftFields:左侧表格显示字段,当
leftDisplayType="TABLE"时有效(string[]) - rightDisplayType:右侧显示类型(
'LIST' | 'TABLE') - rightFields:右侧表格显示字段,当
rightDisplayType="TABLE"时有效(string[])
FormM2MTreeFieldWidget
<!-- references="business.PamirsEmployee" -->
<field data="m2mField" widget="Tree">
<nodes>
<node model="business.PamirsCompany" label="activeRecord.name" labelFields="name" selfReferences="parent" />
<node model="business.PamirsDepartment" label="activeRecord.name" labelFields="name" references="company" selfReferences="parent" />
<node model="business.PamirsEmployee" label="activeRecord.name" labelFields="name" references="departmentList" />
</nodes>
</field>- onlySelectedLeaf:仅允许选择叶节点数据(
boolean) - checkStrictly:选中时父子节点选中状态关联(
boolean) - nodeCheckedAll:节点允许全选(
boolean) - nodeCheckedAllLabel:全选标题文本(
string) - nodeUncheckedAllLabel:取消全选标题文本(
string) - fetchAll:一次性获取全部数据(
boolean) - node.model:层级模型编码(
string) - node.label:层级选项标题(
expression) - node.labelFields:层级标题字段(
string[]) - node.references:层级关联模型编码(
string) - node.selfReferences:自关联字段编码(
string)
FormM2MUploadDraggableFieldWidget
<field data="m2mField" widget="UploadDraggable" />- draggableIcon:拖拽上传图标(
icon) - draggableTipText:拖拽上传提示词(
string) - showDraggableExtendsionsText:是否展示支持拓展名(
boolean) - draggableExtendsionsText:允许上传的文件类型提示文本(
string) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limit:上传数量限制(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png'
FormM2MUploadFieldWidget
<field data="m2mField" widget="Upload" />- uploadPlaceholder:文件上传提示文本(
string) - uploadIcon:文件上传提示图标(
icon) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limit:上传数量限制(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png' - cdnKey:指定上传 cdnKey,配合后端 OSS 配置使用(
string) - privateLink:使用后端上传/下载文件,当 OSS 无法通过客户端直传时使用(
boolean)
FormM2MUploadImgFieldWidget
<field data="m2mField" widget="UploadImg" />- ploadPlaceholder:文件上传提示文本(
string) - uploadIcon:文件上传提示图标(
icon) - uploadIconText:上传图标提示文本(
string) - partSize:单个分片大小(
number:MB) - chunkUploadThreshold:分片总数阈值(
number) - parallel:上传并发数(
number) - limit:上传数量限制(
number) - limitSize:单个文件上传大小限制(
number:MB) - limitFileExtensions:限制文件扩展名类型(
string)eg:'.jpg,.jpeg,.png'
FormM2MCompanyFieldWidget
<!-- references="business.PamirsCompany" -->
<field data="m2mField" widget="Company" />FormM2MDepartmentFieldWidget
<!-- references="business.PamirsDepartment" -->
<field data="m2mField" widget="Department" />FormM2MEmployeeFieldWidget
<!-- references="business.PamirsEmployee" -->
<field data="m2mField" widget="Employee" />