项目介绍
JeecgBoot是一款企业级的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue3,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领低代码开发模式(OnlineCoding-> 代码生成-> 手工MERGE), 帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高效率,节省成本,同时又不失灵活性!
当前版本:v3.6.2 | 2023-01-08
源码下载
github地址
- 后端:https://github.com/jeecgboot/jeecg-boot
- 前端:https://github.com/jeecgboot/jeecgboot-vue3
gitee地址
- 后端:https://gitee.com/jeecg/jeecg-boot
- 前端:https://gitee.com/jeecg/jeecgboot-vue3
升级日志
重点升级ant-design-vue v4.0版、提供新版仪表盘功能大升级、提供springboot3版本分支! antd4和springboot3升级存在不兼容的,自己的代码参考文档Antd4升级文档|Springboot3升级文档
升级内容
- 升级 ant-design-vue 到最新版 4.0.8
- 提供新版仪表盘,仪表盘采用后台集成模式(类似积木报表)
- 从3.6.2+版本增加flyway自动升级数据库机制(支持mysql5.7、mysql8)
- 提供springboot3版本分支
- 默认全部接口加权限注解,提高系统安全(牺牲了使用成本)
- 升级hutool版本号,解决hutool漏洞问题
- 重构企业微信同步逻辑,适配企业微信最新接口规则
- 租户套餐逻辑改造
- 代码生成器升级,支持高级查询器默认生成
- 通知公告详情查看样式优化
- 升级富文本组件到最新版tinymce 6.6.2
- 增加UI组件示例代码
- 解决字典注解跨服务、多数据源问题
- online生成表单时候后测试视图,提示“表名不合法,存在SQL注入风险!--->t_prod$1”
- oracle下 online报表,新增报表正常 编辑保存时 报错
- 3.6.0版本 通知公告中发布的富文本消息,在我的消息中查看没有样式 ·Issue #834
- 仪表盘设计器中的甘特图的数据源,其数据格式是怎样的? ·Issue #5490
- Spring boot 3.x support ·Issue #5486
- 源码中feign客户端不抛出异常,且分布式事务seata不生效 ·Issue #5214
- 字典code解码失败,可能是使用了非法字符,请检查! ·Issue #5655
- sentinel配置文件修改账号密码,logging.level.pattern 等配置无效! ·Issue #5556
- shiro集成 redis 不支持 sentinel 方式部署的redis集群 ·Issue #5569
- markdown编辑器支持emoji,但是MarkdownViewer不支持 ·Issue #918
- 弹窗表单使用JPopup组件配置param参数后异常 ·Issue #901
- 3.6.1 npm run build 失败 ·Issue #939
- 删除二次弹窗在接口报code500时,应该取消或者删除之后就不展示二次弹窗了 ·Issue #936
- 生成的前端代码,复选框和展开框在一个方框内 ·Issue #947
- 在多数据源模式下数据字典Dict不能指定自定义数据源 ·Issue #4138
- 分布式独立数据源 dictTable ·Issue #5643
- BasicTable组件设置默认展开不生效; ·Issue #945
- 【Online表单开发】表单添加多个外键无法保存#948
- 最新3.6.1在线表单开发中表单编辑页面中单选按钮不能默认选中#927
权限升级
- Online代码生成器目录,加权限@RequiresPermissions("online:codeGenerate:projectPath"),需要授权才能访问
- 定时任务管理接口,加权限@RequiresRoles("admin"),只有admin角色才能操作
- 系统表白名单接口,加权限@RequiresRoles("admin"),只有admin角色才能操作
升级SQL
ALTERTABLEonl_drag_page
MODIFYCOLUMNidvarchar(50)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNOTNULLCOMMENT'主键'FIRST,
MODIFYCOLUMNlow_app_idvarchar(50)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNULLDEFAULTNULLCOMMENT'应用ID'AFTERupdate_time;
ALTERTABLEonl_drag_page_comp
MODIFYCOLUMNpage_Idvarchar(50)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNULLDEFAULTNULLCOMMENT'界面ID'AFTERparent_id;
ALTERTABLEonl_drag_page
ADDCOLUMNvisits_numint(11)NULLDEFAULTNULLCOMMENT'访问次数'AFTERupdate_count;
UPDATEonl_drag_compSETparent_id='1537764868216684545',comp_name='金字塔漏斗图',comp_type='JPyramidFunnel',icon='icon-park-outline:children-pyramid',order_num=100,type_id=NULL,comp_config='{\n\"dataType\":1,\n\"url\":\"http://api.jeecg.com/mock/26/funnel\",\n\"timeOut\":0,\n\"turnConfig\":{\n\"url\":\"\"\n},\n\"linkageConfig\":[],\n\"dataMapping\":[\n{\n\"filed\":\"维度\",\n\"mapping\":\"\"\n},\n{\n\"filed\":\"数值\",\n\"mapping\":\"\"\n}\n],\n\"chartData\":[\n{\n\"value\":1000,\n\"name\":\"直接访问\"\n},\n{\n\"value\":200,\n\"name\":\"邮件营销\"\n},\n{\n\"value\":400,\n\"name\":\"联盟广告\"\n},\n{\n\"value\":600,\n\"name\":\"网页查询\"\n},\n{\n\"value\":800,\n\"name\":\"广告点击\"\n}\n],\n\"option\":{\n\"title\":{\n\"text\":\"基础漏斗图\",\n\"show\":true\n},\n\"grid\":{\n\"bottom\":115\n},\n\"card\":{\n\"title\":\"\",\n\"extra\":\"\",\n\"rightHref\":\"\",\n\"size\":\"default\"\n},\n\"tooltip\":{\n\"trigger\":\"item\",\n\"formatter\":\"{a}
{b}:{c}\"\n},\n\"legend\":{\n\"orient\":\"horizontal\"\n},\n\"series\":[\n{\n\"name\":\"Funnel\",\n\"type\":\"funnel\",\n\"left\":\"10%\",\n\"width\":\"80%\",\n\"sort\":\"ascending\",\n\"gap\":2,\n\"label\":{\n\"show\":true,\n\"position\":\"inside\"\n},\n\"labelLine\":{\n\"length\":10,\n\"lineStyle\":{\n\"width\":1,\n\"type\":\"solid\"\n}\n},\n\"itemStyle\":{\n\"borderColor\":\"#fff\",\n\"borderWidth\":1\n},\n\"emphasis\":{\n\"label\":{\n\"fontSize\":20\n}\n}\n}\n]\n}\n}',status='1',create_by=NULL,create_time='2022-06-1614:17:31',update_by=NULL,update_time='2022-06-1614:59:44'WHEREid='1537318433201340417';
UPDATEonl_drag_compSETparent_id='1537764868216684545',comp_name='普通漏斗图',comp_type='JFunnel',icon='ant-design:funnel-plot-filled',order_num=8,type_id=NULL,comp_config='{\n\"dataType\":1,\n\"url\":\"http://api.jeecg.com/mock/26/funnel\",\n\"timeOut\":0,\n\"turnConfig\":{\n\"url\":\"\"\n},\n\"linkageConfig\":[],\n\"dataMapping\":[\n{\n\"filed\":\"维度\",\n\"mapping\":\"\"\n},\n{\n\"filed\":\"数值\",\n\"mapping\":\"\"\n}\n],\n\"chartData\":[\n{\n\"value\":335,\n\"name\":\"直接访问\"\n},\n{\n\"value\":310,\n\"name\":\"邮件营销\"\n},\n{\n\"value\":234,\n\"name\":\"联盟广告\"\n}\n],\n\"option\":{\n\"title\":{\n\"text\":\"基础漏斗图\",\n\"show\":true\n},\n\"grid\":{\n\"bottom\":115\n},\n\"card\":{\n\"title\":\"\",\n\"extra\":\"\",\n\"rightHref\":\"\",\n\"size\":\"default\"\n},\n\"tooltip\":{\n\"trigger\":\"item\",\n\"formatter\":\"{a}
{b}:{c}\"\n},\n\"legend\":{\n\"orient\":\"horizontal\"\n},\n\"series\":[\n{\n\"name\":\"Funnel\",\n\"type\":\"funnel\",\n\"left\":\"10%\",\n\"width\":\"80%\",\n\"sort\":\"descending\",\n\"gap\":2,\n\"label\":{\n\"show\":true,\n\"position\":\"inside\"\n},\n\"labelLine\":{\n\"length\":10,\n\"lineStyle\":{\n\"width\":1,\n\"type\":\"solid\"\n}\n},\n\"itemStyle\":{\n\"borderColor\":\"#fff\",\n\"borderWidth\":1\n},\n\"emphasis\":{\n\"label\":{\n\"fontSize\":20\n}\n}\n}\n]\n}\n}',status='1',create_by=NULL,create_time='2022-01-0614:38:04',update_by='admin',update_time='2022-06-1719:51:26'WHEREid='200208';
INSERTINTOsys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)VALUES('1698650926200352770','1473927410093187073','数据集解析SQL',NULL,NULL,0,NULL,NULL,2,'drag:analysis:sql','1',NULL,0,NULL,1,0,0,0,NULL,'jeecg','2023-09-0418:55:15','jeecg','2023-09-0520:36:51',0,0,'1',0);
INSERTINTOsys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)VALUES('1699038961937113090','1473927410093187073','数据源添加',NULL,NULL,0,NULL,NULL,2,'drag:datasource:saveOrUpate','1',NULL,0,NULL,1,0,0,0,NULL,'jeecg','2023-09-0520:37:10',NULL,NULL,0,0,'1',0);
INSERTINTOsys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)VALUES('1699039098474291201','1473927410093187073','数据源删除',NULL,NULL,0,NULL,NULL,2,'drag:datasource:delete','1',NULL,0,NULL,1,0,0,0,NULL,'jeecg','2023-09-0520:37:42',NULL,NULL,0,0,'1',0);
INSERTINTOsys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)VALUES('1699039192154071041','1473927410093187073','数据源批量删除',NULL,NULL,0,NULL,NULL,2,'drag:datasource:deleteBatch','1',NULL,0,NULL,1,0,0,0,NULL,'jeecg','2023-09-0520:38:05',NULL,NULL,0,0,'1',0);
INSERTINTOsys_permission(id,parent_id,name,url,component,is_route,component_name,redirect,menu_type,perms,perms_type,sort_no,always_show,icon,is_leaf,keep_alive,hidden,hide_tab,description,create_by,create_time,update_by,update_time,del_flag,rule_flag,status,internal_or_external)VALUES('1701475606988812289','1473927410093187073','数据源连接',NULL,NULL,0,NULL,NULL,2,'drag:datasource:testConnection','1',NULL,0,NULL,1,0,0,0,NULL,'jeecg','2023-09-1213:59:31',NULL,NULL,0,0,'1',0);
INSERTINTOonl_drag_comp(id,parent_id,comp_name,comp_type,icon,order_num,type_id,comp_config,status,create_by,create_time,update_by,update_time)VALUES('72811631742776660','100','查询条件','JFilterQuery','ant-design:filter-filled',100,NULL,'{\r\n\"w\":12,\r\n\"h\":12,\r\n\"dataType\":1,\r\n\"url\":\"\",\r\n\"timeOut\":0,\r\n\"chartData\":[]\r\n}','1','jeecg','2022-09-0915:21:08','jeecg','2022-09-0915:41:56');
UPDATEonl_drag_compSETcomp_config='{\r\n\"dataType\":1,\r\n\"background\":\"#ffffff\",\r\n\"url\":\"http://api.jeecg.com/mock/33/chart\",\r\n\"timeOut\":0,\r\n\"turnConfig\":{\r\n\"url\":\"\"\r\n},\r\n\"linkageConfig\":[],\r\n\"dataMapping\":[],\r\n\"customOption\":\"option={xAxis:{type:\'category\',data:[\'Mon\',\'Tue\',\'Wed\',\'Thu\',\'Fri\',\'Sat\',\'Sun\']},yAxis:{type:\'value\'},series:[{data:[150,230,224,218,135,147,260],type:\'line\'}]};returnoption;\",\r\n\"chartData\":[\r\n{\r\n\"value\":0,\r\n\"name\":\"\"\r\n}\r\n],\r\n\r\n\"option\":{\r\n\"grid\":{\r\n\"bottom\":115\r\n},\r\n\"card\":{\r\n\"title\":\"\",\r\n\"extra\":\"\",\r\n\"rightHref\":\"\",\r\n\"size\":\"default\"\r\n},\r\n\"title\":{\r\n\"text\":\"\",\r\n\"show\":true\r\n}\r\n}\r\n}'WHEREid='200400';
UPDATEonl_drag_compSETparent_id='100',comp_name='文本',comp_type='JText',icon='ant-design:font-colors-outlined',order_num=14,type_id=NULL,comp_config='{\n\"w\":8,\n\"h\":12,\n\"dataType\":1,\n\"url\":\"http://api.jeecg.com/mock/42/nav\",\n\"timeOut\":0,\n\"turnConfig\":{\n\"url\":\"\"\n},\r\n\"background\":\"#4A90E2\",\n\"chartData\":\"JeecgBoot面板设计\",\n\"option\":{\n\"card\":{\n\"title\":\"\",\n\"extra\":\"\",\n\"rightHref\":\"\",\n\"size\":\"default\"\n},\n\"body\":{\n\"text\":\"\",\n\"color\":\"#4A90E2\",\n\"fontWeight\":\"bold\",\n\"marginLeft\":0,\n\"marginTop\":0\n}\n}\n}',status='1',create_by=NULL,create_time=NULL,update_by='admin',update_time='2022-04-2910:49:04'WHEREid='100110';
UPDATEonl_drag_page_compSETparent_id=NULL,page_id=NULL,comp_id=NULL,component='JBar',config='{\r\n\"id\":\"116606b2-4620-42d6-9202-36f39288a8d5\",\r\n\"component\":\"JBar\",\r\n\"config\":{\r\n\"formType\":\"design\",\r\n\"dataType\":4,\r\n\"timeOut\":0,\r\n\"option\":{\r\n\"grid\":{\r\n\"show\":false,\r\n\"top\":90,\r\n\"bottom\":115\r\n},\r\n\"card\":{\r\n\"title\":\"\",\r\n\"extra\":\"\",\r\n\"rightHref\":\"\",\r\n\"size\":\"default\"\r\n},\r\n\"title\":{\r\n\"text\":\"每日新增记录\",\r\n\"show\":true,\r\n\"textStyle\":{\r\n\"color\":\"#464646\"\r\n}\r\n},\r\n\"tooltip\":{\r\n\"trigger\":\"axis\",\r\n\"axisPointer\":{\r\n\"type\":\"shadow\",\r\n\"label\":{\r\n\"show\":true,\r\n\"backgroundColor\":\"#333\"\r\n}\r\n}\r\n},\r\n\"yAxis\":{\r\n\"splitLine\":{\r\n\"interval\":2\r\n},\r\n\"lineStyle\":{\r\n\"color\":\"#f3f3f3\"\r\n}\r\n},\r\n\"series\":[\r\n{\r\n\"data\":[\r\n\r\n],\r\n\"type\":\"bar\",\r\n\"barWidth\":40,\r\n\"itemStyle\":{\r\n\"color\":\"#64b5f6\",\r\n\"borderRadius\":0\r\n}\r\n}\r\n]\r\n},\r\n\"size\":{\r\n\"height\":500\r\n},\r\n\"dataNum\":\"\",\r\n\"chart\":{\r\n\"category\":\"Bar\",\r\n\"subclass\":\"JBar\",\r\n\"isGroup\":false\r\n},\r\n\"typeFields\":[\r\n\r\n],\r\n\"nameFields\":[\r\n{\r\n\"fieldName\":\"create_time\",\r\n\"fieldTxt\":\"创建时间\",\r\n\"fieldType\":\"date\",\r\n\"widgetType\":\"date\",\r\n\"customDateType\":\"3\"\r\n}\r\n],\r\n\"valueFields\":[\r\n{\r\n\"fieldName\":\"record_count\",\r\n\"fieldTxt\":\"记录数量\",\r\n\"fieldType\":\"count\",\r\n\"widgetType\":\"text\"\r\n}\r\n],\r\n\"assistYFields\":[\r\n\r\n],\r\n\"assistTypeFields\":[\r\n\r\n],\r\n\"calcFields\":[\r\n\r\n],\r\n\"tableName\":\"test_1031\",\r\n\"sorts\":{\r\n\"name\":\"\",\r\n\"type\":\"\"\r\n},\r\n\"filter\":{\r\n\"queryField\":\"create_time\",\r\n\"queryRange\":\"month\",\r\n\"customTime\":null,\r\n\"conditionMode\":\"and\",\r\n\"conditionFields\":[\r\n\r\n]\r\n},\r\n\"analysis\":{\r\n\"isRawData\":true,\r\n\"showMode\":1,\r\n\"showData\":1,\r\n\"isCompare\":false,\r\n\"compareType\":\"\",\r\n\"trendType\":\"1\",\r\n\"compareValue\":null,\r\n\"showFields\":[\r\n\r\n]\r\n},\r\n\"formId\":\"test_1031\",\r\n\"formName\":\"test1031\",\r\n\"compStyleConfig\":{\r\n\"summary\":{\r\n\"showY\":true,\r\n\"showTotal\":false,\r\n\"showField\":\"\",\r\n\"totalType\":\"sum\",\r\n\"showName\":\"总计\"\r\n},\r\n\"showUnit\":{\r\n\"numberLevel\":\"\",\r\n\"decimal\":0,\r\n\"position\":\"suffix\",\r\n\"unit\":\"\"\r\n},\r\n\"assist\":{\r\n\"showUnit\":{\r\n\"numberLevel\":\"\",\r\n\"decimal\":0,\r\n\"position\":\"suffix\",\r\n\"unit\":\"\"\r\n},\r\n\"summary\":{\r\n\"showY\":true,\r\n\"showField\":\"\",\r\n\"totalType\":\"sum\",\r\n\"showName\":\"总计\"\r\n}\r\n},\r\n\"headerFreeze\":true,\r\n\"unilineShow\":true,\r\n\"columnFreeze\":true,\r\n\"lineFreeze\":true\r\n}\r\n}\r\n}',create_by='jeecg',create_time='2022-12-1619:56:21',update_by=NULL,update_time=NULLWHEREid='763699587304030208';
UPDATEsys_permissionSETparent_id='1455100420297859074',name='仪表盘设计器',url='/report/drag',component='{{window._CONFIG[\'domianURL\']}}/drag/list?token=${token}&tenantId=${tenantId}',is_route=0,component_name=NULL,redirect=NULL,menu_type=1,perms=NULL,perms_type='0',sort_no=3.00,always_show=0,icon='',is_leaf=0,keep_alive=0,hidden=0,hide_tab=0,description=NULL,create_by='admin',create_time='2021-12-2316:04:13',update_by='admin',update_time='2023-12-3113:13:04',del_flag=0,rule_flag=0,status=NULL,internal_or_external=1WHEREid='1473927410093187073';
deletefromsys_permissionwhereid='1473955758466981890';
--补充权限
INSERTINTO`sys_permission`(`id`,`parent_id`,`name`,`url`,`component`,`is_route`,`component_name`,`redirect`,`menu_type`,`perms`,`perms_type`,`sort_no`,`always_show`,`icon`,`is_leaf`,`keep_alive`,`hidden`,`hide_tab`,`description`,`create_by`,`create_time`,`update_by`,`update_time`,`del_flag`,`rule_flag`,`status`,`internal_or_external`)VALUES('1546736974756032513','1455101470794850305','选择代码生成路径',NULL,NULL,0,NULL,NULL,2,'online:codeGenerate:projectPath','1',NULL,0,NULL,1,0,0,0,NULL,'admin','2022-07-1214:03:26',NULL,NULL,0,0,'1',0);
技术交流
- 开发文档:https://help.jeecg.com
- 在线演示:http://boot3.jeecg.com
为什么选择 JeecgBoot?
开源界“小普元”超越传统商业平台。引领低代码开发模式(OnlineCoding-> 代码生成器 -> 手工MERGE),低代码开发同时又支持灵活编码, 可以帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高开发效率,节省成本,同时又不失灵活性。
- 采用最新主流前后分离框架(SpringBoot+Mybatis-plus+Ant-Design+Vue),容易上手; 代码生成器依赖性低,灵活的扩展能力,可灵活实现二次开发;
- 开发效率很高,采用代码生成器,单表数据模型和一对多(父子表)、树列表等数据模型,增删改查功能自动生成,菜单配置直接使用(前端代码和后端代码都一键生成);
- 代码生成器提供强大模板机制,支持自定义模板风格。目前提供四套风格模板(单表两套、一对多两套)
- 封装完善的用户、角色、菜单、组织机构、数据字典、在线定时任务等基础功能。强大的权限机制,支持访问授权、按钮权限、数据权限、表单权限等
- 零代码在线开发能力,在线配置表单、在线配置报表、在线配置图表、在线设计表单
- 常用共通封装,各种工具类(定时任务,短信接口,邮件发送,Excel导入导出等),基本满足80%项目需求
- 简易Excel导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能
- 集成简易报表工具,图像报表和数据导出非常方便,可极其方便的生成图形报表、pdf、excel、word等报表;
- 采用前后分离技术,页面UI精美,针对常用组件做了封装:时间、行表格控件、截取显示控件、报表组件,编辑器等等
- 查询过滤器:查询功能自动生成,后台动态拼SQL追加查询条件;支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询);
- 数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段
- 在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表)
- 页面校验自动生成(必须输入、数字校验、金额校验、时间空间等);
- 提供单点登录CAS集成方案,项目中已经提供完善的对接代码
- 表单设计器,支持用户自定义表单布局,支持单表,一对多表单、支持select、radio、checkbox、textarea、date、popup、列表、宏等控件
- 专业接口对接机制,统一采用restful接口方式,集成swagger-ui在线接口文档,Jwt token安全验证,方便客户端对接
- 接口安全机制,可细化控制接口授权,非常简便实现不同客户端只看自己数据等控制
- 高级组合查询功能,在线配置支持主子表关联查询,可保存查询历史
- 提供各种系统监控,实时跟踪系统运行情况(监控 Redis、Tomcat、jvm、服务器信息、请求追踪、SQL监控)
- 消息中心(支持短信、邮件、微信推送等等)
- 集成Websocket消息通知机制
- 提供APP发布方案:
- 支持多语言,提供国际化方案;
- 数据变更记录日志,可记录数据每次变更内容,通过版本对比功能查看历史变化
- 平台UI强大,实现了移动自适应
- 平台首页风格,提供多种组合模式,支持自定义风格
- 提供简单易用的打印插件,支持谷歌、IE浏览器等各种浏览器
- 示例代码丰富,提供很多案例参考
- 采用maven分模块开发方式
- 支持菜单动态路由
- 权限控制采用 RBAC(Role-Based Access Control,基于角色的访问控制)
开源版界面
PC端
系统交互
仪表盘设计器
图表示例
报表设计器
UNIAPP效果
手机端
PAD端
在线接口文档
商业功能介绍
流程设计器
简版流程设计器
表单设计器
大屏设计器
零代码应用
欢迎吐槽,欢迎star~
热门跟贴