1.后端设计1

diy_field_pool      字段池(我们定义好的字段类型)
diy_form            表单表(记录用户自定义的表单)
diy_form_field      表单字段表(记录某张表单中有哪些字段)
diy_form_entity     表单实例表(记录某张表单中的某条数据实例)
diy_form_data       表单数据表(记录某张表单在某条实例下,哪些字段对应的数据)
  • 系统初始化字段池
    我们提供一批预定义的字段类型,初始化数据到diy_field_pool表中,用户也能自己定义自己的字段池。

  • 用户创建自定义表单
    用户通过选用字段池(diy_field_pool表)中提供的字段,创建一张自定义表单,表单的属性信息记录在diy_form表中,表单包含的字段(从字段池中选好的字段)记录在diy_form_field表中。这样用户就创建了一张自定义表单。

  • 用户填写表单
    用户使用创建好的表单填写数据,每新增一条数据,在diy_form_entity表就会新增一条记录,该表单中有几个field,就会同时在diy_form_data表中新增几条 data 数据。数据结构关系如下图所示:

//1.
CREATE TABLE `diy_field_pool` (`id` bigint(20) NOT NULL COMMENT '主键id',`field_type` varchar(32) NOT NULL COMMENT '字段类型',`field_type_name` varchar(32) NOT NULL COMMENT '字段类型名称'PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='字段池';//2.
CREATE TABLE `diy_form` (`id` bigint(20) NOT NULL COMMENT '主键id',`form_code` varchar(32) NOT NULL COMMENT '表单code',`form_name` varchar(32) NOT NULL COMMENT '表单名称'PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表单表';//3.
CREATE TABLE `diy_form_data` (`id` bigint(20) NOT NULL COMMENT '主键id',`form_id` bigint(20) NOT NULL COMMENT 'diy_form表id',`entity_id` bigint(20) NOT NULL COMMENT 'diy_form_entity表id',`field_id` bigint(20) NOT NULL COMMENT 'diy_form_field表id',`value` varchar(512) NOT NULL COMMENT '数据值'PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表单数据表';//4.
CREATE TABLE `diy_form_entity` (`id` bigint(20) NOT NULL COMMENT '主键id',`form_id` bigint(20) NOT NULL COMMENT 'diy_form表id',`entity_code` varchar(32) NOT NULL COMMENT '实例code',`entity_name` varchar(32) NOT NULL COMMENT '实例名称'PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表单实例表';//5.
CREATE TABLE `diy_form_field` (`id` bigint(20) NOT NULL COMMENT '主键id',`form_id` bigint(20) NOT NULL COMMENT 'diy_form表id',`field_pool_id` bigint(20) NOT NULL COMMENT 'diy_field_pool表id',`form_field_code` varchar(32) NOT NULL COMMENT '表单code',`form_field_name` varchar(32) NOT NULL COMMENT '表单名称'PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表单字段表';
// 1.分页查询sql
SELECT li.id,dff.form_field_code,dff.form_field_name,dfd.`value` FROM
(SELECT dfe.id, dfe.entity_code FROM
diy_form df
LEFT JOIN diy_form_entity dfe ON dfe.form_id = df.id
WHERE df.form_code='product_info'
LIMIT 0,1) liLEFT JOIN diy_form_data dfd ON li.id = dfd.entity_id
LEFT JOIN diy_form_field dff ON dfd.field_id=dff.id

【自定义表单】自定义表单设计相关推荐

  1. 工作流表单自定义功能的误区

    表单自定义功能看似非常方便,可以不用写代码即可完成表单的开发设计,表面上看的确是减少不少开发成本,但深入研究,发现是有不少误区的. 1.              对于整体成本来讲,当表单自定义功能能 ...

  2. 协同软件表单自定义平台

    表单是工作流的"用户界面"的载体,协同软件厂商也常将其称为表单引擎,也是作为平台的界面开发基础.一个完善.优秀的工作流引擎应该有一个易于设计和操作的表单设计工具,对其的标准建议定义 ...

  3. 【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用...

    //http://www.cnblogs.com/OceanEyes/p/custom-provider-in-sharepoint-2013-fba-authentication.html 由于项目 ...

  4. html表单复选框样式,美化表单——自定义checkbox和radio样式

    如果你对本站比较观注的话,应该很清楚,前面就有这方面的介绍.因为大家都知道表单中的部分元素如果单单使用CSS是没办法完成的,所以最近花全力在学习这方面的制作.在本站有关于这样制作有好几个教程了,比如说 ...

  5. element-ui的表单校验;el-form表单校验;el-form表单自定义校验;手机号校验;车牌号校验;车牌号正则校验;

    示例:代码在末尾 可以直接复制使用 一.基本属性认知: 1. required: true 会有 * , 但仅是触发最后点击提交按钮时,校验某一项位必填:与输入事件或者选择或者失焦时候 怎么校验无关 ...

  6. vue 嵌套表格组件_使用form-create动态生成vue自定义组件和嵌套表单组件

    使用form-create动态生成vue自定义组件和嵌套表单组件 maker.create 通过建立一个虚拟 DOM的方式生成自定义组件 生成 Maker let rule = [ formCreat ...

  7. Activiti,自定义表单,外置表单,工作流,微服务,子系统

    百度,csdn找了半个月,没有一篇文章将 Activiti 外置表单 讲透彻的,无奈,自己亲手写了一套, 祭出这套大杀器,开放给广大网友. 点击极速体验 账号密码:admin admin123 系统功 ...

  8. 解放前端工程师——手把手教你开发自己的自定义列表和自定义表单系列之二接口

    前言 阅读前请按照顺序参看系列文章,效果更佳! Vue中路由到一个公共组件,然后根据路径中是否存在文件动态加载组件 解放前端工程师--手把手教你开发自己的自定义列表和自定义表单系列之一缘起 据说系列文 ...

  9. layui单选框verify_layui lay-verify form表单自定义验证规则详解

    虽然layui的官方文档已经是写的比较详细,但是初次使用的时候总会懵一下,这里纪录一下lay-verify自定义验证规则的时候到底放哪. html: 提交 js: form.verify({ //数组 ...

  10. element UI 表单自定义验证,css水平且垂直居中方法

    element UI 表单自定义验证 element UI提供了一种内部的表单验证,但是这种方法不能够来进行复杂的验证,如邮箱,手机号等的验证需要用到自定义验证 首先是element UI 提供的基础 ...

最新文章

  1. Pyqt5_QWidget
  2. 使用jQuery卸载绑定的事件
  3. router vue 动态改变url_vue动态路由
  4. Opencv 中cv开头的函数和没有cv的区别,例如cvWaitkey()和waitKey()的区别
  5. java以32位运行,强制java applet以32位而不是64位JRE运行
  6. oracle----删除数据
  7. [Angular2 Animation] Control Undefined Angular 2 States with void State
  8. java流作为参数,java-8 – 将Java 8流映射函数作为参数传递
  9. java去除音频无声_java – 使用FFMPEG和silencedetect删除音频静音
  10. slf4j、log4j日志级别与配置
  11. 鼠标失灵,但鼠标和USB接口都是好的的情况。
  12. 永中office属于职称计算机吗,永中office
  13. Imagination和浙江大学信电学院签署合作协议,校企共创大学课程新篇章
  14. oracle8i误删除临时表空间后的恢复
  15. 云计算+,如何推动建筑行业智慧化升级?
  16. 智慧城市/园区三维GIS可视化平台
  17. CMS垃圾回收器详解
  18. miui怎么用第三方图标包_快来领取你的图标包~
  19. logAB = logA + logB; A,B0
  20. 【第114期】五大经典风控系统全面解读

热门文章

  1. iastora怎么改成ahci_如何把这个BIOS的设置从SATA设置成AHCI(附图片)
  2. oem客户工程流程图_新产品OEM开发及生产流程图
  3. 多功能乐谱编写:Steinberg Dorico for Mac
  4. 【C语言从零到入门】第二节 C语言开发工具的安装
  5. 安装SQL Server以及SSMS
  6. mysql diff函数_MYSQL中 的datediff、timestampdiff函数
  7. 十进制的转换与任意进制的互转
  8. linux gsoap 开发教程,gsoap使用笔记
  9. 制作视频倒放特效,几分钟教会你
  10. 新版Burp Suite安装