在设计OA开发时会涉及流程动态绑定表单,基于这种情况,我集成了网上开源的LayUI 表单设计器:layui-form-create: layui表单生成器

效果展示:

默认展示页面:

修改页面:

项目整体结构:

DesignerFormController
package com.zzg.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;@RequestMapping("/designer/form")
@RestController
public class DesignerFormController {private static Logger logger= LoggerFactory.getLogger(ActivitiController.class);/*** 表单生成器首页* @return*/@GetMapping("/index")public ModelAndView index() {return new ModelAndView("redirect:/designerForm.html");}}

css/designer.css

html,body{background-color: #f2f2f2}
.layui-fluid{margin-top: 15px;}
.content{min-height: 796px;}
.nav{text-align: center;}
.nav button{margin-bottom: 3px;width: 80px;}
.layui-card-body .layui-btn+.layui-btn{margin-left: 0px;}
.code-show{min-height: 454px;}
.js-show{min-height: 200px;}
.del-form{line-height: initial;position: absolute;right: 15px;top: 50%;margin-top: -15px;}

js/designer.js

/*** time: 2018年11月21日 15:25:32* author: dbag* blog: http://www.cnblogs.com/phper8/*/
layui.define(['layer', 'form'], function(exports){var layer = layui.layer,form = layui.form,$ = layui.$,key = '';delHtml()$('button').on('click',function(){var _this = $(this),size = _this.data('size'),type = _this.data('type'),html =  '';key = randStrName();console.log(JSON.parse(JSON.stringify(_this)))switch (type) {case 'text':html = input(type,size)break;case 'password':html = input(type,size)break;case 'select':html = select(size)break;case 'checkbox_a':html = checkbox_a(size)break;case 'checkbox_b':html = checkbox_b(size)break;case 'radio':html = radio(size)break;case 'textarea':html = textarea(size)break;case 'submit':html = submits(size)break;case 'del':$('form').html("\n")delHtml()$('.code-show').text('')return falsebreak;default:layer.msg('类型错误',{icon:2})}$('form').append(html);form.render();setHtml(html)})function delHtml() {layui.data('form_html', {key: 'html',remove: true});}function setHtml(html) {var h = layui.data('form_html');if(h && h.html ){var _d = h.html+html}else{var _d = html}layui.data('form_html',{key:'html',value:_d})$('.code-show').text('<form class="layui-form" action="" onsubmit="return false">\n' +_d+ '</form>')}function input(type,size) {var name = type==='text'?'输入框':(type==='password'?'密码框':'');var html = '  <div class="layui-form-item">\n' +'    <label class="layui-form-label">'+name+'</label>\n' +'    <div class="layui-input-'+size+'">\n' +'      <input type="'+type+'" name="'+key+'" required  lay-verify="required" placeholder="请输入'+name+'内容" autocomplete="off" class="layui-input">\n' +'    </div>\n' +'  </div>\n';return html;}function select(size) {var html = '  <div class="layui-form-item">\n' +'    <label class="layui-form-label">选择框</label>\n' +'    <div class="layui-input-'+size+'">\n' +'      <select name="'+key+'" lay-verify="required" lay-search>\n' +'        <option value=""></option>\n' +'        <option value="0">北京</option>\n' +'        <option value="1">上海</option>\n' +'        <option value="2">广州</option>\n' +'        <option value="3">深圳</option>\n' +'        <option value="4">杭州</option>\n' +'      </select>\n' +'    </div>\n' +'  </div>\n';return html;}function checkbox_a(size) {var html = '  <div class="layui-form-item">\n' +'    <label class="layui-form-label">复选框</label>\n' +'    <div class="layui-input-'+size+'">\n' +'      <input type="checkbox" name="'+key+'[]" title="写作">\n' +'      <input type="checkbox" name="'+key+'[]" title="阅读" checked>\n' +'      <input type="checkbox" name="'+key+'[]" title="发呆">\n' +'    </div>\n' +'  </div>\n';return html;}function checkbox_b(size) {var html = '  <div class="layui-form-item">\n' +'    <label class="layui-form-label">开关</label>\n' +'    <div class="layui-input-'+size+'">\n' +'      <input type="checkbox" name="'+key+'" lay-skin="switch">\n' +'    </div>\n' +'  </div>\n';return html;}function radio(size) {var html = '  <div class="layui-form-item">\n' +'    <label class="layui-form-label">单选框</label>\n' +'    <div class="layui-input-'+size+'">\n' +'      <input type="radio" name="'+key+'" value="男" title="男">\n' +'      <input type="radio" name="'+key+'" value="女" title="女" checked>\n' +'    </div>\n' +'  </div>\n';return html;}function textarea(size) {var html = '  <div class="layui-form-item layui-form-text">\n' +'    <label class="layui-form-label">文本域</label>\n' +'    <div class="layui-input-'+size+'">\n' +'      <textarea name="'+key+'" placeholder="请输入内容" class="layui-textarea"></textarea>\n' +'    </div>\n' +'  </div>\n';return html;}function submits(size) {var html = '  <div class="layui-form-item">\n' +'    <div class="layui-input-'+size+'">\n' +'      <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>\n' +'      <button type="reset" class="layui-btn layui-btn-primary">重置</button>\n' +'    </div>\n' +'  </div>\n';return html;}function jscode() {var html = '<script>\n' +'  layui.use(\'form\', function(){\n' +'    var form = layui.form;\n' +'    form.on(\'submit(formDemo)\', function(data){\n' +'      layer.msg(JSON.stringify(data.field));\n' +'      return false;\n' +'    });\n' +'  });\n' +'</script>';return html;}function randStrName() {return Math.random().toString(36).substr(8);}$('.click-but button').click()var jscodehtml = jscode();$('.js-show').text(jscodehtml)form.on('submit(formDemo)', function(data){layer.msg(JSON.stringify(data.field));return false;});
});

designerForm.html

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>layui表单生成器</title><link rel="stylesheet" href="layui/css/layui.css"><link rel="stylesheet" href="css/designer.css">
</head>
<body>
<div class="layui-fluid" ><div class="layui-row layui-col-space10"><div class="layui-col-md1"><div class="layui-card nav click-but"><div class="layui-card-header">长</div><div class="layui-card-body"><button class="layui-btn" data-size="block" data-type="text">输入框</button><button class="layui-btn" data-size="block" data-type="password">密码框</button><button class="layui-btn" data-size="block" data-type="select">选择框</button><button class="layui-btn" data-size="block" data-type="checkbox_a">复选框</button><button class="layui-btn" data-size="block" data-type="checkbox_b">开关</button><button class="layui-btn" data-size="block" data-type="radio">单选框</button><button class="layui-btn" data-size="block" data-type="textarea">文本域</button><button class="layui-btn" data-size="block" data-type="submit">提交</button></div></div><div class="layui-card nav"><div class="layui-card-header">短</div><div class="layui-card-body"><button class="layui-btn" data-size="inline" data-type="text">输入框</button><button class="layui-btn" data-size="inline" data-type="password">密码框</button><button class="layui-btn" data-size="inline" data-type="select">选择框</button><button class="layui-btn" data-size="inline" data-type="checkbox_a">复选框</button><button class="layui-btn" data-size="inline" data-type="checkbox_b">开关</button><button class="layui-btn" data-size="inline" data-type="radio">单选框</button><button class="layui-btn" data-size="inline" data-type="textarea">文本域</button><button class="layui-btn" data-size="block" data-type="submit">提交</button></div></div></div><div class="layui-col-md5"><div class="layui-card content"><div class="layui-card-header"><button class="layui-btn layui-btn-sm layui-btn-danger del-form" data-type="del"> <i class="layui-icon"></i></button></div><div class="layui-card-body code"><form class="layui-form" action="" onsubmit="return false"></form></div></div></div><div class="layui-col-md6"><div class="layui-card r-code-html"><div class="layui-card-header">html</div><div class="layui-card-body"><textarea name=""  class="layui-textarea code-show"></textarea></div></div><div class="layui-card r-code-js"><div class="layui-card-header">JS</div><div class="layui-card-body"><textarea name=""  class="layui-textarea js-show"></textarea></div></div></div></div>
</div>
</body>
<script type="text/javascript" src="layui/layui.js"></script>
<script type="text/javascript" src="js/designer.js"></script>
<script>
var _hmt = _hmt || [];
(function() {var hm = document.createElement("script");hm.src = "https://hm.baidu.com/hm.js?74fccec1ffa027e00b82ec47a5b9f8f5";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);
})();
</script>
</html>

SpringBoot +LayUI 实现表单设计器相关推荐

  1. 基于springboot+element ui+vue的java快速开发平台,集成html5工作流设计器,flowable, element ui 表单设计器

    前后端分离.maven多模块开发,方便多人协同开发 后端选型:springboot2 + mybatis + shiro + jwt token + flowable 前端选型:vue + eleme ...

  2. 布局器 拖拽拖拽表单设计器 厉害了

    码农苦码农懂! 您是否有过以下想法: 我是一名element初学者,我想以最短的时间快速进入 element 的大门 我是一名后端工程师,虽能熟练掌握 JS 的写法,但是页面样式布局让我很头疼 我是一 ...

  3. 基于VUE的ElementUi可视化表单设计器布局器

    码农苦码农懂的个人空间 工作日志 正文 基于VUE的ElementUi可视化表单设计器布局器 顶 原 码农苦码农懂 发布于 09/11 15:35 字数 1187 阅读 41 收藏 0 点赞 1 评论 ...

  4. python开源报表系统_流程设计器、表单设计器和简单报表管理开源OA系统smart-web...

    smart-web2是一套相对简单的OA系统:包含了流程设计器,表单设计器,权限管理,简单报表管理等功能: 系统后端基于SpringMVC+Spring+Hibernate框架,前端页面采用JQuer ...

  5. .net erp(办公oa)开发平台架构概要说明之表单设计器

    2019独角兽企业重金招聘Python工程师标准>>> 背景:搭建一个适合公司erp业务的开发平台. 架构概要图: 表单设计开发部署示例图   表单设计开发部署示例说明 1)每个开发 ...

  6. 使用开源的驰骋表单设计器设计表单案例演示

    我们以客户提供如下原始的word表单样本,使用驰骋表单设计器制作表单的过程介绍如下: 工业设计和创意需求登记表原始表单图 在ccform表单设计器中,设计如下: 驰骋表单设计器,设计表单所见既所得,操 ...

  7. 驰骋表单设计器 设计表单案例演示

    为什么80%的码农都做不了架构师?>>>    我们以客户提供如下原始的word表单样本,使用驰骋表单设计器制作表单的过程介绍如下:工业设计和创意需求登记表原始表单图 在ccform ...

  8. activiti表单设计器_基于Vue,ElementUI开发的一款表单设计器

    介绍 基于Vue,ElementUI开发的一款表单设计器,提高表单开发效率的利器,让开发者从枯燥的表单代码编写中解放出来 工具地址: http://tools.xiaoyaoji.cn/form Gi ...

  9. 表单设计器 k-form-design

    k-form-design支持自定义组件.表单联动等高级功能,使用 vue2 + CompositionAPI + ts 实现伪 vue3 应用. 设计器布局参考form-generator项目,基于 ...

最新文章

  1. 强化学习:10种真实的奖励与惩罚应用
  2. 【问题】windows网络问题快速诊断方法或工具。终于调通了MQTT,论坑爹的windows防火墙!...
  3. 数据挖掘竞赛-北京PM2.5浓度回归分析训练赛
  4. 蓝桥杯省内模拟赛解题过程
  5. svn合并分支到主干_谈谈代码分支管理
  6. 深入剖析WebRTC事件机制之Sigslot
  7. 安装opencv_contrib(ubuntu16.0)
  8. CenterOs底下安装redis
  9. VM虚拟机 自定义(高级)安装win 7系统史上超详细图文教程(附win7 iso镜像资源)
  10. 实现html文件和c# 交互
  11. Unity中录制VR全景视频(可录制UGUI)
  12. 计算机运行瓶颈,我的电脑瓶颈在哪呢?
  13. 微信小程序列表图片加载错误处理
  14. 关于js数组方法的题目整理 6.24更新至题目5
  15. IMTOKEN 2.9.9官网1:1双端,用户管理系统,后台可查询用户使用情况
  16. 叮咚买菜涨势,撑起生鲜电商门面
  17. 在Windows Mobile 5,6 的设备上使用ActiveSync Remote Display
  18. Goland导入github包
  19. 【python】分享一个在Windows下对应用程序python窗口后台截图的方法
  20. C++程序设计原理与实践电子书pdf下载

热门文章

  1. clamp漫画作品集
  2. Reverse recognition
  3. 读取工艺路线BAPI
  4. Choregraphe不能连接虚拟机器人以及搜索不到开机的机器人
  5. 百度地图获取河流_华为AR地图: 导航功能确实不错,还有更多AR新场景也值得关注...
  6. 博达的各种插件的下载
  7. 目前我国机器人产业,发展前景怎么样?
  8. 关于引起stop:c000021a unknown hard error部分问题及解决。
  9. LogUtil日志打印工具
  10. android图片引导页