快速又不失灵活性的JeecgBoot框架

 简介JeecgBoot

开源界 "小普元" 超越传统商业平台。引领低代码开发模式 (OnlineCoding-> 代码生成器 -> 手工 MERGE),低代码开发同时又支持灵活编码, 可以帮助解决 Java 项目 70% 的重复工作,让开发更多关注业务。既能快速提高开发效率,节省成本,同时又不失灵活性。

🔥JeecgBoot—Vue3版前端源码,采用 Vue3.0+TypeScript+Vite+Ant-Design-Vue等新技术方案,包括二次封装组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能。 是JeecgBoot低代码平台的vue3技术栈的全新UI版本,功能强于vue2版。

GitHub - jeecgboot/jeecgboot-vue3

🔥「企业级低代码平台」前后端分离架构SpringBoot 2.x/3.x,SpringCloud,Ant Design&Vue,Mybatis,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码! 引领新的开发模式OnlineCoding->代码生成->手工MERGE,帮助Java项目解决70%重复工作,让开发更关注业务,既能快速提高效率,帮助公司节省成本,同时又不失灵活性。

GitHub - jeecgboot/jeecg-boot

技术特征

  • 采用最新主流前后分离框架(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,基于角色的访问控制)

技术架构

#### 开发环境- 语言:Java 8+ (小于17)- IDE(JAVA): IDEA (必须安装lombok插件 )- IDE(前端): Vscode、WebStorm、IDEA- 依赖管理:Maven- 缓存:Redis- 数据库脚本:MySQL5.7+  &  Oracle 11g & Sqlserver2017(其他数据库,[需要自己转](https://my.oschina.net/jeecg/blog/4905722))#### 后端- 基础框架:Spring Boot 2.6.6- 微服务框架: Spring Cloud Alibaba 2021.0.1.0- 持久层框架:MybatisPlus 3.5.1- 报表工具: JimuReport 1.5.2- 安全框架:Apache Shiro 1.8.0,Jwt 3.11.0- 微服务技术栈:Spring Cloud Alibaba、Nacos、Gateway、Sentinel、Skywalking- 数据库连接池:阿里巴巴Druid 1.1.22- 日志打印:logback- 其他:autopoi, fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。#### 前端- Vue2版本:`Vue2.6+@vue/cli+AntDesignVue+Viser-vue+Vuex等`  [详细查看](https://github.com/jeecgboot/ant-design-vue-jeecg)
- Vue3版本:`Vue3.0+TypeScript+Vite+AntDesignVue+pinia+echarts等新方案` [详细查看](https://github.com/jeecgboot/jeecgboot-vue3)#### 支持库|  数据库   |  支持   |
| --- | --- |
|   MySQL   |  √   |
|  Oracle11g   |  √   |
|  Sqlserver2017   |  √   |
|   PostgreSQL   |  √   |
|   MariaDB   |  √   |
|   达梦、人大金仓   |  √   |## 微服务解决方案1、服务注册和发现 Nacos √2、统一配置中心 Nacos  √3、路由网关 gateway(三种加载方式) √4、分布式 http feign √5、熔断降级限流 Sentinel √6、分布式文件 Minio、阿里OSS √ 7、统一权限控制 JWT + Shiro √8、服务监控 SpringBootAdmin√9、链路跟踪 Skywalking   [参考文档](https://help.jeecg.com/java/springcloud/super/skywarking.html)10、消息中间件 RabbitMQ  √11、分布式任务 xxl-job  √ 12、分布式事务 Seata13、分布式日志 elk + kafka14、支持 docker-compose、k8s、jenkins15、CAS 单点登录   √16、路由限流   √

实践指南

后端项目

使用IntelliJ IDEA导入后端项目,并选择Maven做项目管理

自动搜索项目依赖

项目SDK选用JAVA JDK1.8.0_181,没有配置的可以在CSDN上找对应操作手册

导入项目后根据POM加载依赖

依赖加载完成后的项目结构

打开DB文件夹下面的升级说明做参考

# 版本升级方法> JeecgBoot属于平台级产品,每次升级改动较大,目前做不到平滑升级。### 增量升级方案
#### 1.代码合并本地通过svn或git做好主干,在分支上做业务开发,jeecg每次版本发布,可以手工覆盖主干的代码,对比合并代码;#### 2.数据库升级
- 从3.6.2+版本增加flyway自动升级数据库机制,支持 mysql5.7、mysql8; 
- 其他库请手工执行SQL, 目录: `jeecg-module-system\jeecg-system-start\src\main\resources\flyway\sql\mysql`
> 注意: 升级sql只提供mysql版本;如果有权限升级, 还需要手工角色授权,退出重新登录才好使。#### 3.兼容问题每次发版,会针对不兼容地方重点说明。

项目依赖和数据库初始化SQL都确认到位

项目结构
├─jeecg-boot-parent(父POM: 项目依赖、modules组织)
│  ├─jeecg-boot-base-core(共通模块: 工具类、config、权限、查询过滤器、注解等)
│  ├─jeecg-module-demo    示例代码
│  ├─jeecg-module-system  System系统管理目录
│  │  ├─jeecg-system-biz    System系统管理权限等功能
│  │  ├─jeecg-system-start  System单体启动项目(8080)
│  │  ├─jeecg-system-api    System系统管理模块对外api
│  │  │  ├─jeecg-system-cloud-api   System模块对外提供的微服务接口
│  │  │  ├─jeecg-system-local-api   System模块对外提供的单体接口
│  ├─jeecg-server-cloud           --微服务模块├─jeecg-cloud-gateway       --微服务网关模块(9999)├─jeecg-cloud-nacos       --Nacos服务模块(8848)├─jeecg-system-cloud-start  --System微服务启动项目(7001)├─jeecg-demo-cloud-start    --Demo微服务启动项目(7002)├─jeecg-visual├─jeecg-cloud-monitor       --微服务监控模块 (9111)├─jeecg-cloud-xxljob        --微服务xxljob定时任务服务端 (9080)├─jeecg-cloud-sentinel     --sentinel服务端 (9000)├─jeecg-cloud-test           -- 微服务测试示例(各种例子)├─jeecg-cloud-test-more         -- 微服务测试示例(feign、熔断降级、xxljob、分布式锁)├─jeecg-cloud-test-rabbitmq     -- 微服务测试示例(rabbitmq)├─jeecg-cloud-test-seata          -- 微服务测试示例(seata分布式事务)├─jeecg-cloud-test-shardingsphere    -- 微服务测试示例(分库分表)

连接MySQL数据库,其它数据库需要按操作手册进行对号入座

执行初始化数据库的SQL

问题处理

1071 - Specified key was too long; max key length is 767 bytes

主键key长度太长,超过了767字节。分析主键字段PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)以及utf8mb4最大支持4个字节长度,那么这三个字段相加*3的长度远超767字节就会出现这个问题。那么对于问题的处理就是增大索引长度限制。

CREATE TABLE `qrtz_blob_triggers` ( `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `BLOB_DATA` blob NULL, PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;

MySQL的innodb_large_prefix参数是为了启用对较长的索引键前缀的支持。在旧版本的InnoDB存储引擎中,索引键前缀的长度限制是767字节,但在某些字符集(如UTF-8)下,这可能导致无法使用完整的索引长度。通过设置innodb_large_prefixon,可以将这个限制提升到3072字节。

InnoDB支持两种文件格式 Antelope和Barracuda:
Antelope :是5.6之前的文件格式,支持InnoDB表的COMPACT和REDUNDANT行格式,共享表空间默认为Antelope
Barracuda:是最新的文件格式,支持所有innodb行格式,包括最新的COMPRESSED和DYNAMIC行格式。

show variables like 'innodb_file_format';

set global innodb_file_format='Barracuda';

show variables like 'innodb_file_format';

在MySQL中,ROW_FORMAT是一个与InnoDB和MyISAM存储引擎相关的选项,它决定了数据在磁盘上的存储方式。对于InnoDB存储引擎,ROW_FORMAT可以影响性能、备份、恢复以及与其他数据库系统的兼容性。对于MyISAM存储引擎,它主要影响数据的存储方式和性能。

如果开启innodb_large_prefix,且Innodb表的存储格式为 DYNAMIC 或 COMPRESSED,则前缀索引最多可包含3072个字节,前缀索引也同样适用。对于上面的索引问题(120+200+200)*4=2080 < 3072,那么就可以创建索引成功,因此需要先开启前缀索引,执行命令如下:

SET GLOBAL INNODB_LARGE_PREFIX = ON;


show variables like 'innodb_large_prefix';

确认表的行格式ROW_FORMAT=DYNAMIC;
返回SQL创建

-- ----------------------------
-- Table structure for qrtz_blob_triggers
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_blob_triggers`;
CREATE TABLE `qrtz_blob_triggers`

jeecg-boot数据库初始化成功后会出现121张数据表

接来下将Maven切换为生产模式prod环境

通过JEECG BOOT生命周期 INSTALL打包

拿到 jeecg-system-start-{版本号}.jar 包

生成的JAR包上传到应用服务器

并通过JAR方式后台启动项目

通过命令启动项目Window启动命令:
java -jar jeecg-system-start-3.7.0.jarLinux下后台进程启动命令:
nohup java -jar jeecg-system-start-3.7.0.jar >catalina.out 2>&1 &关掉项目:
ps -ef|grep java
kill 进程号 
(_)                          | |               | |_  ___  ___  ___ __ _ ______| |__   ___   ___ | |_ | |/ _ \/ _ \/ __/ _` |______| '_ \ / _ \ / _ \| __|| |  __/  __/ (_| (_| |      | |_) | (_) | (_) | |_ | |\___|\___|\___\__, |      |_.__/ \___/ \___/ \__|_/ |               __/ |                             |__/               |___/Jeecg  Boot Version: 3.7.0
Spring Boot Version: 2.7.18 (v2.7.18)
......

前端项目

安装前端项目依赖

dependencies:
+ @ant-design/colors 7.0.2
+ @ant-design/icons-vue 7.0.1
+ @iconify/iconify 3.1.1
+ @jeecg/online 3.7.0-beta
+ @tinymce/tinymce-vue 4.0.7
+ @traptitech/markdown-it-katex 3.6.0
+ @vue/shared 3.4.21
+ @vueuse/core 10.10.0
+ @zxcvbn-ts/core 3.0.4
+ ant-design-vue 4.1.2
+ axios 1.7.2
+ china-area-data 5.0.1
+ clipboard 2.0.11
+ codemirror 5.65.16
+ cron-parser 4.9.0
+ cropperjs 1.6.1
+ crypto-js 4.2.0
+ dayjs 1.11.10
+ dom-align 1.12.4
+ echarts 5.4.3
+ emoji-mart-vue-fast 15.0.2
+ enquire.js 2.1.6
+ event-source-polyfill 1.0.31
+ highlight.js 11.9.0
+ intro.js 7.2.0
+ lodash-es 4.17.21
+ lodash.get 4.4.2
+ markdown-it 14.0.0
+ markdown-it-link-attributes 4.0.1
+ md5 2.3.0
+ mockjs 1.1.0
+ nprogress 0.2.0
+ path-to-regexp 6.2.1
+ pinia 2.1.7
+ print-js 1.6.0
+ qrcode 1.5.3
+ qs 6.11.2
+ resize-observer-polyfill 1.5.1
+ showdown 2.1.0
+ sortablejs 1.15.2
+ tinymce 6.6.2
+ vditor 3.10.4
+ vue 3.4.21
+ vue-cropper 0.6.4
+ vue-cropperjs 5.0.0
+ vue-i18n 9.10.1
+ vue-infinite-scroll 2.0.2
+ vue-print-nb-jeecg 1.0.12
+ vue-router 4.3.3
+ vue-types 5.1.1
+ vuedraggable 4.1.0
+ vxe-table 4.6.17
+ vxe-table-plugin-antd 4.0.7
+ xe-utils 3.5.26
+ xss 1.0.14devDependencies:
+ @commitlint/cli 18.6.1
+ @commitlint/config-conventional 18.6.2
+ @iconify/json 2.2.218
+ @purge-icons/generated 0.10.0
+ @rys-fe/vite-plugin-theme 0.8.6
+ @types/codemirror 5.60.15
+ @types/crypto-js 4.2.2
+ @types/fs-extra 11.0.4
+ @types/inquirer 9.0.7
+ @types/intro.js 5.1.5
+ @types/jest 29.5.12
+ @types/lodash-es 4.17.12
+ @types/mockjs 1.0.10
+ @types/node 20.14.2
+ @types/nprogress 0.2.3
+ @types/qrcode 1.5.5
+ @types/qs 6.9.11
+ @types/showdown 2.0.6
+ @types/sortablejs 1.15.8
+ @typescript-eslint/eslint-plugin 6.17.0
+ @typescript-eslint/parser 6.17.0
+ @vitejs/plugin-vue 4.6.2
+ @vitejs/plugin-vue-jsx 3.1.0
+ @vue/compiler-sfc 3.4.4
+ @vue/test-utils 2.4.6
+ autoprefixer 10.4.19
+ commitizen 4.3.0
+ conventional-changelog-cli 4.1.0
+ cross-env 7.0.3
+ cz-git 1.8.0
+ czg 1.8.0
+ dotenv 16.3.1
+ eslint 8.56.0
+ eslint-config-prettier 9.1.0
+ eslint-define-config 2.1.0
+ eslint-plugin-jest 27.9.0
+ eslint-plugin-prettier 5.1.3
+ eslint-plugin-vue 9.26.0
+ esno 4.7.0
+ fs-extra 11.2.0
+ http-server 14.1.1
+ husky 8.0.3
+ inquirer 9.2.23
+ is-ci 3.0.1
+ jest 29.7.0
+ less 4.2.0
+ lint-staged 15.2.2
+ npm-run-all 4.1.5
+ picocolors 1.0.0
+ postcss 8.4.35
+ postcss-html 1.7.0
+ postcss-less 6.0.0
+ prettier 3.3.2
+ pretty-quick 4.0.0
+ rimraf 5.0.5
+ rollup 4.12.0
+ rollup-plugin-visualizer 5.12.0
+ stylelint 16.2.1
+ stylelint-config-prettier 9.0.5
+ stylelint-config-recommended 14.0.0
+ stylelint-config-recommended-vue 1.5.0
+ stylelint-config-standard 36.0.0
+ stylelint-order 6.0.4
+ ts-jest 29.1.4
+ ts-node 10.9.2
+ typescript 4.9.5
+ unocss 0.58.5
+ vite 5.2.13
+ vite-plugin-compression 0.5.1
+ vite-plugin-html 3.2.2
+ vite-plugin-mkcert 1.17.5
+ vite-plugin-mock 2.9.8
+ vite-plugin-optimize-persist 0.1.2
+ vite-plugin-package-config 0.1.1
+ vite-plugin-purge-icons 0.10.0
+ vite-plugin-svg-icons 2.0.1
+ vite-plugin-vue-setup-extend-plus 0.1.0
+ vue-eslint-parser 9.4.3
+ vue-tsc 1.8.27WARN  Issues with peer dependencies found
.
├─┬ stylelint-config-prettier 9.0.5
│ └── ✕ unmet peer stylelint@">= 11.x < 15": found 16.2.1
├─┬ vite-plugin-optimize-persist 0.1.2
│ └── ✕ unmet peer vite@^2.0.0: found 5.2.13
└─┬ vite-plugin-package-config 0.1.1└── ✕ unmet peer vite@^2.0.0: found 5.2.13

修改生产环境的后台服务地址

构建前端项目

更新服务器前端项目

相关配置文档

后台配置一个访问域名

  • nginx监听:80端口
  • 绑定域名(示例):api3.boot.jeecg.com
upstream api3.boot.jeecg.com {server 127.0.0.1:8080;}  server {listen       80;server_name  api3.boot.jeecg.com;location / {root   html;index  index.html index.htm;proxy_pass  http://api3.boot.jeecg.com;#ip remote_addrproxy_set_header X-Forwarded-Scheme  $scheme;proxy_redirect    off;     proxy_set_header  Host             $host;proxy_set_header  X-Real-IP        $remote_addr;proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;}}

Websocket配置

提醒: 有的版本nginx配置需要加上 Upgrade 和Connection 协议头,不然WebSocket会404

 #支持websocket得这么写,不然CentOS上可能失败# proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";

登录系统即可进行相关操作

根据业务需求,做出概念结构设计,完成E-R关系模型的逻辑结构,就可以通过前端设计出表格,系统可以据此自动生成后端JAVA代码和前端VUE代码。

Controller层,控制层,接收前端(View)传过来的参数进行业务操作,负责具体模块的业务流程控制,需要调用service逻辑设计层的接口来控制业务流程。因为service中的方法是我们使用到的,controller通过接收前端H5或者App传过来的参数进行业务操作,再将处理结果返回到前端。

Entity层,别名model层 /domain层,用于存放实体类,与数据库中数据表的属性值基本保持一致,实现set和get的方法。

Service层,存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,他有接口还有接口的实现方法,在接口的实现方法中需要导入mapper层,mapper层是直接跟数据库打交道的,它也是个接口,只有方法名字,具体实现在mapper.xml文件里,service是供我们使用的方法,一般就是自己写的方法封装起来,就是声明一下,具体实现在serviceImpl中。

Service层也可以分为三个方面:

      (a)接口:用来声明方法
      (b)继承实现接口
      (c)impl:接口的实现(将mapper和service进行整合的文件)

Mapper层,也可以称为DAO层,是数据库CRUD的接口,只有方法名,具体实现在mapper.xml文件中,对数据库进行数据持久化操作(把数据放到持久化的介质中,同时提供CRUD操作),在mybatis中方法主要与xxx.xml内相互一一映射。

VUE视图层,兼容VUE2、VUE3组合式API两种方式构建的视图。

├─首页
│  ├─首页(四套首页满足不同场景需求)
│  ├─工作台
├─系统管理
│  ├─用户管理
│  ├─角色管理
│  ├─菜单管理
│  ├─权限设置(支持按钮权限、数据权限)
│  ├─表单权限(控制字段禁用、隐藏)
│  ├─部门管理
│  ├─我的部门(二级管理员)
│  └─字典管理
│  └─分类字典
│  └─系统公告
│  └─职务管理
│  └─通讯录
│  └─对象存储
│  └─多租户管理
├─系统监控
│  ├─网关路由配置(gateway)
│  ├─定时任务
│  ├─数据源管理
│  ├─系统日志
│  ├─消息中心(支持短信、邮件、微信推送等等)
│  ├─数据日志(记录数据快照,可对比快照,查看数据变更情况)
│  ├─系统通知
│  ├─SQL监控
│  ├─性能监控
│  │  ├─监控 Redis
│  │  ├─Tomcat
│  │  ├─jvm
│  │  ├─服务器信息
│  │  ├─请求追踪
│  │  ├─磁盘监控
├─消息中心
│  ├─我的消息
│  ├─消息管理
│  ├─模板管理
├─积木报表设计器
│─报表示例
│  ├─曲线图
│  └─饼状图
│  └─柱状图
│  └─折线图
│  └─面积图
│  └─雷达图
│  └─仪表图
│  └─进度条
│  └─排名列表
│  └─等等
│─大屏模板
│  ├─作战指挥中心大屏
│  └─物流服务中心大屏
├─代码生成器(GUI)
│  ├─代码生成器功能(一键生成前后端代码,生成后无需修改直接用,绝对是后端开发福音)
│  ├─代码生成器模板(提供4套模板,分别支持单表和一对多模型,不同风格选择)
│  ├─代码生成器模板(生成代码,自带excel导入导出)
│  ├─查询过滤器(查询逻辑无需编码,系统根据页面配置自动生成)
│  ├─高级查询器(弹窗自动组合查询条件)
│  ├─Excel导入导出工具集成(支持单表,一对多 导入导出)
│  ├─平台移动自适应支持
│─常用示例
│  ├─自定义组件示例
│  ├─JVxeTable示例(ERP行业复杂排版效果)
│  ├─单表模型例子
│  └─一对多模型例子
│  └─打印例子
│  └─一对多内嵌示例
│  └─异步树Table
│  └─图片拖拽排序
│  └─图片翻页
│  └─图片预览
│  └─PDF预览
│─封装通用组件 
│  ├─行编辑表格JVxeTable
│  └─省略显示组件
│  └─时间控件
│  └─高级查询 (未实现)
│  └─用户选择组件
│  └─报表组件封装
│  └─字典组件
│  └─下拉多选组件
│  └─选人组件
│  └─选部门组件
│  └─通过部门选人组件
│  └─封装曲线、柱状图、饼状图、折线图等等报表的组件(经过封装,使用简单)
│  └─在线code编辑器
│  └─上传文件组件
│  └─树列表组件
│  └─表单禁用组件
│  └─等等
│─更多页面模板
│  └─Mock示例(子菜单很多)
│  └─页面&导航(子菜单很多)
│  └─组件&功能(子菜单很多)
├─高级功能
│  ├─支持微前端
│  ├─提供CAS单点登录
│  ├─集成Websocket消息通知机制
│  ├─支持第三方登录(QQ、钉钉、微信等)
│  ├─系统编码规则
├─Online在线开发(低代码)
│  ├─Online在线表单 - 功能已开放
│  ├─Online代码生成器 - 功能已开放
│  ├─Online在线报表 - 功能已开放
│  ├─Online在线图表(暂未开源)
│  ├─多数据源管理
│─流程模块功能 (暂未开源)
│  ├─流程设计器
│  ├─表单设计器
│  ├─大屏设计器
│  ├─门户设计/仪表盘设计器
│  └─我的任务
│  └─历史流程
│  └─历史流程
│  └─流程实例管理
│  └─流程监听管理
│  └─流程表达式
│  └─我发起的流程
│  └─我的抄送
│  └─流程委派、抄送、跳转
│  └─OA办公组件
└─其他模块 └─更多功能开发中

JeecgBoot 前端Vue3文档

「企业级低代码平台」前端开发文档,采用 Vue3.0+TypeScript+Vite+Ant-Design-Vue等最新技术栈,二次封装各种UI组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能。

JeecgBoot 后端开发文档

「企业级低代码平台」后端开发文档,采用SpringBoot 2.x,SpringCloud,Mybatis,Shiro,JWT等微服务架构。强大的代码生成器让前后端代码一键生成,无需写任何代码!支持SAAS应用。

AutoPoi技术文档

AutoPOI 功能如同名字auto,追求的就是自动化,让一个没接触过poi的人员,可以傻瓜化的快速实现Excel导入导出、Word模板导出、可以仅仅5行代码就可以完成Excel的导入导出。

JimuReport 积木报表文档

JimuReport 积木报表,顾名思义像搭建积木一样设计报表!涵盖大屏设计器、表单打印设计器、报表设计器、图表设计器等,此产品更多侧重数据处理,数据分组、多表头、主子表、单据打印排版等。

仪表盘设计器文档

一款免费数据可视化分析工具,支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表和门户设计,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。

MiniDao文档

一款轻量级JAVA持久层框架,采用 SpringJdbc + freemarker 实现,具备Mybatis一样的SQL分离和逻辑标签能力。

参见:

JeecgBoot 文档中心

登录演示平台 - JeecgBoot

ChatGPT AI助手 - JeecgBoot 文档中心

JeecgBoot低代码开发—Vue3版前端入门教程_哔哩哔哩_bilibili

Online代码生成 - JeecgBoot 文档中心

开源低代码平台,JeecgBoot v3.7.0 里程碑版本发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试官:JavaScript执行机制中的闭包?

前言 JavaScript 中的闭包指的是一个函数以及其捆绑的周边环境状态的引用的组合。闭包可以让开发者从内部函数访问外部函数的作用域&#xff0c;即使外部函数已经执行完毕 今天我们通过JavaScript执行机制来聊聊闭包 正文 首先来分析这段代码的执行机制&#xff0c;这段代码…

详细解读“找不到mfc140u.dll无法继续执行代码”问题

当你打开某个软件或者运行游戏&#xff0c;系统提示mfc140u.dll丢失&#xff0c;此时这个软件或者游戏根本无法运行。其实&#xff0c;mfc140u.dll是动态库文件&#xff0c;它是VS2010编译的软件所产生的&#xff0c;如果电脑运行程序时提示缺少mfc140u.dll文件&#xff0c;程序…

复分析——第6章—— Γ 函数和 ζ 函数(E.M. Stein R. Shakarchi)

第6章 Γ函数和Ζ函数(The Gamma and Zeta Functions) 毫不夸张地说&#xff0c;Γ函数和Ζ函数是数学中最重要的非初等函数之一。Γ函数在自然界中无处不在。它出现在大量计算中&#xff0c;并以分析中出现的大量恒等式为特征。对此的部分解释可能在于Γ函数的基本结构特性&…

python20 函数的定及调用

函数的定及调用 函数是将一段实现功能的完整代码&#xff0c;使用函数名称进行封装&#xff0c;通过函数名称进行调用。以此达到一次编写&#xff0c;多次调用的目的 用 def 关键字来声明 函数 格式&#xff1a; def 函数名(参数列表):函数体[:return 返回值是可选的&#xff0…

《沃趣 分手后霸道少爷宠爆我》盛大开机典礼

南京五聚文化传媒有限公司自豪地宣布&#xff0c;引人入胜的2024年度短剧巨作——《沃趣 分手后霸道少爷宠爆我》——今日正式开拍&#xff01;在星辰下的华丽舞台上&#xff0c;我们汇集了业界的精英力量&#xff0c;准备讲述一个关于爱、错位与重生的故事。 典礼精彩亮点 1.…

数据治理工程师CDGA备考心得、时间安排、题库资源

1.写在前面 之前做一些数据质量控制、元数据、主数据相关工作&#xff0c;一直忙于工作&#xff0c;没有去往考证的方面想&#xff0c;去年年底心血来潮就决定考一考&#xff0c;证多不压身嘛&#xff08;也有部分学生向我咨询&#xff09;&#xff0c;资源在文章结尾&#xff…

软件测试——稳定性测试:adb Monkey

Monkey 1. Monkey1.1 Monkey 是什么1.2 Monkey 测试场景1.3 Monkey 特点1.4 Monkey 在哪里1.5 测试准备事项1.6 Monkey 参数列表 2. 基本命令3. 常用参数4. 事件类型5. 调试参数6. 日志管理7. 日志错误定位8. Monkey测试可以发现的问题 1. Monkey 1.1 Monkey 是什么 Monkey是一…

electron自定义标题栏的最大化,最小化,关闭窗口

渲染组件代码&#xff1a; <template><div class"window-btn"><i class"minimize" click"minimize"><img src"../assets/img/最小化.svg" alt"最小化" /></i><i v-if"!isMaximized&…

react 0至1 案例

/*** 导航 Tab 的渲染和操作** 1. 渲染导航 Tab 和高亮* 2. 评论列表排序* 最热 > 喜欢数量降序* 最新 > 创建时间降序* 1.点击记录当前type* 2.通过记录type和当前list中的type 匹配*/ import ./App.scss import avatar from ./images/bozai.png import {useState} …

肾虚学习实验第T1周:实现mnist手写数字识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 作为一名研究牲&#xff0…

树和二叉树的定义

目录 一、树的定义 1.1概念 1.2表示方式 1.3基本术语 1.4树结构和线性结构的比较 二、二叉树的定义 2.1概念 2.2二叉树的5种基本形态 三、二叉树的性质和存储结构 3.1二叉树的性质 3.1.1满二叉树 3.1.2完全二叉树 3.2二叉树的存储结构 3.2.1二叉树的顺序存储 3.2.…

海量数据处理——bitMap/BloomFilter、hash + 统计 + 堆/归并/快排

前言&#xff1a;海量数据处理是面试中一道常考的问题&#xff0c; 生活中也容易遇到这种问题。 通常就是有一个大文件&#xff0c; 让我们对这个文件进行一系列操作——找出现次数最多的数据、求交集、是否重复出现等等。 因为文件的内容太多&#xff0c; 我们的内存通常是放不…

目标跟踪算法(bytetrack)-tensorrt部署教程

一、本机安装python环境 conda create -n bytetrace_env python=3.8 activate bytetrace_env conda install pytorch torchvision cudatoolkit=10.1 -c检测GPU是否可用,不可用不行 import torch print(torch.cuda.is_available())安装bytetrack git clone https://github.c…

ELK Kibana搜索框模糊搜索包含不包含

默认是KQL,点击切换Lucene搜索&#xff0c;搜索日志中包含Exception关键字&#xff0c;不包含BizException、IllegalArgumentException、DATA_SYNC_EXCEPTION关键字的日志&#xff0c;如下&#xff1a; message: *Exception AND !(message : *BizException OR message : *Ille…

数据库复习——模式分解

模式分解这边主要包括无损分解和保持函数依赖的分解两种形式&#xff0c;简单整理一下。 无损分解 把一个 R R R 分成 ρ { R 1 , R 2 , ⋯ , R k } \rho \{R_1,R_2,\cdots,R_k\} ρ{R1​,R2​,⋯,Rk​}&#xff0c;然后通过自然连接 R 1 ⋈ R 2 ⋈ ⋯ ⋈ R k R_1\bowtie R…

容器之布局容器的演示

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <stdio.h>void change_image(GtkFileChooserButton *filebutton, // GdkEvent *event,GtkImage *image) {gtk_image_set_from_file(im…

鸿蒙开发通信与连接:【@ohos.wifiext (WLAN)】

WLAN 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 该文档中的接口只供非通用类型产品使用&#xff0c;如路由器等&#xff0c;对于常规类型产品&#xff0c;不应该使用这些接口。 导入模块 …

手写方法实现整型例如:123与字符串例如:“123“相互转化(下篇)

目录 一、前言 二、整型转化为字符串 1. 初始化变量 2.数字1转字符1 3.取出value中的每一项数字 4.将字符放入字符数组中 5.最终代码 三、最后 一、前言 本篇文章紧跟上篇文章&#xff0c;本片内容为整型转化为字符串类型。至于我为什么要分两篇文章&#xff0c;主要…

艺术创作加速器:三款AI绘画软件,让你的工作效率倍增!

在数字化浪潮的推动下&#xff0c;艺术创作正迎来革命性的变化。AI绘画软件的出现&#xff0c;不仅为艺术家提供了全新的创作工具&#xff0c;也为艺术爱好者开辟了一片创意的新天地。这些软件利用人工智能技术&#xff0c;根据用户的简单描述或草图&#xff0c;快速生成独特的…

视频汇聚安防综合管理系统EasyCVR平台GB28181设备注册未上线的原因排查与解决

视频汇聚安防综合管理平台EasyCVR视频监控系统基于云边端架构&#xff0c;可支持海量视频汇聚集中管理&#xff0c;能提供视频监控直播、云端录像、云存储、录像检索与回看、告警&#xff08;协议告警/智能告警/1400视图库告警&#xff09;、平台级联、AI智能分析接入等视频能力…