这里列出表单设计器系列的内容,6、7、8节的内容应该在春节后才有时间出了。因为这周末就请假回老家了,准备我的结婚大事。在此提前祝大家春节快乐!
基于Extjs的web表单设计器 第六节——界面框架设计
基于Extjs的web表单设计器 第七节——取数公式设计
基于Extjs的web表单设计器 第八节——表单引擎设计
在第三节——控件拖放中有位名叫enjoyeclipse的博友问到了后台数据库是怎样设计的,数据库字段如何和界面控件绑定的问题。那么在这一节中我会介绍表单设计器的后台数据库设计以及表单控件和数据库关系。
表单设计器设计的模板在数据库中的使用三个表存储,分别是FormTemplate(表模板表)、FormItemGroup(表单项分组表)、FormTemplateItem(表单模板项——也就是我们设计器中的一个控件)。首先上一幅图给出表单模板、表单项分组、表单项的关系图。
从图中我们可以看出一个FormTemplate可以包含N个FormItemGroup,一个FormItemGroup可以包含N个FormTemplateItem,它们依次是1:N的关系。
FormTemplate表(存放了表单模板的一些基本信息) |
|||
字段名称 |
类型 |
可空(Y/N) |
描述 |
ID |
Varchar(36) |
N |
Primarykey |
Name |
Varchar(50) |
N |
表单模板名称 |
Code |
Varchar(50) |
N |
表单模板编码 |
CreateDT |
DateTime |
N |
模板创建时间 |
CreateUserID |
Varchar(50) |
N |
创建人Id |
CreateUserDeptID |
Varchar(50) |
N |
创建人所在部门Id |
Status |
Int |
N |
模板的状态 |
Version |
Varchar(50) |
N |
模板版本号 |
Url |
Varchar(100) |
Y |
模板的路径(外部挂接表单路径) |
JsFunc |
Text |
Y |
模板自定义方法 |
Description |
Varchar(200) |
Y |
模板描述 |
FormItemGroup表(存放了表单模板项分组的一些基本信息,也就是我们的区域控件存储表) |
|||
字段名称 |
类型 |
可空(Y/N) |
描述 |
ID |
Varchar(36) |
N |
Primarykey |
GroupName |
Varchar(50) |
N |
分组名称 |
FormTemplateID |
Varchar(36) |
N |
表单模板ID |
GroupCols |
Int |
Y |
区域列数,主要针对卡片区域控件 |
GroupOrder |
Int |
N |
分组的排序 |
GroupType |
Varchar(20) |
N |
分组的类型 |
IsShowBorder |
bit |
N |
是否显示分组边框 |
IsShowGroupName |
Varchar(50) |
N |
是否显示分组名称 |
ParentGroupID |
Varchar(100) |
Y |
父级分组ID |
FormTemplateItem表(存放了表单模板项的一些基本信息) |
|||
字段名称 |
类型 |
可空(Y/N) |
描述 |
ID |
Varchar(36) |
N |
Primarykey |
Name |
Varchar(50) |
N |
表单模板项名称 |
FormTemplateID |
Varchar(36) |
N |
表单模板ID |
FormItemGroupID |
Varchar(36) |
N |
表单模板分组ID |
ResourceTypeId |
Varchar(36) |
Y |
资源Id |
Align |
Varchar(36) |
N |
对其方式 |
ColSpan |
Int |
Y |
占用列数(针对卡片区域的控件) |
Type |
Varchar(36) |
N |
控件类型 |
SumType |
Varchar(36) |
Y |
汇总类型 |
DefaultValue |
Varchar(100) |
Y |
默认值 |
ValueRange |
Varchar(500) |
Y |
取值范围 |
Formula |
Varchar(500) |
Y |
公式 |
ParentColumn |
Varchar(36) |
Y |
父级列Id(针对Table区域里面的分组列) |
IsFill |
bit |
N |
是否必填 |
IsHide |
bit |
N |
是否隐藏 |
IsReadOnly |
bit |
N |
是否只读 |
Width |
Int |
Y |
宽度(针对Table区域列) |
ListOrder |
Int |
N |
排序 |
Maxlenth |
Int |
Y |
最大长度 |
Scale |
Int |
Y |
小数位数(针对金额、数字控件) |
以上这三张表就组成了我们的表单模板的存储结构。至于表单实例生成的业务数据如何存储这里就不详细介绍,因为这里涉及到具体业务范畴。比如简单的业务,你可以直接存储到一张表就可以;复杂的业务,有上下游关系的业务可能就需要设计比较复杂的存储结构关系和我们的表单模板的三张数据表进行对接使用来完成具体的业务数据归集。
时间: 2024-10-12 16:31:28