Compare commits

...

1423 Commits

Author SHA1 Message Date
Eee a72109cd7a Merge branch 'master' of https://git.we-zone.com/wezone/Ry-master
# Conflicts:
#	ruoyi-admin/src/main/resources/application-dev.yml
#	ruoyi-common/pom.xml
#	ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java
#	ruoyi-common/src/main/java/com/ruoyi/common/constant/ScheduleConstants.java
#	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
#	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
#	ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java
#	ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java
#	ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java
#	ruoyi-common/src/main/java/com/ruoyi/common/exception/job/TaskException.java
#	ruoyi-generator/src/main/resources/generator.yml
#	ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm
#	ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java
#	ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/CronUtils.java
#	ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzDisallowConcurrentExecution.java
#	ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzJobExecution.java
#	ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java
#	ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml
#	ruoyi-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml
#	ruoyi-ui/public/html/ie.html
#	ruoyi-ui/public/robots.txt
#	ruoyi-ui/src/api/monitor/cache.js
#	ruoyi-ui/src/assets/images/dark.svg
#	ruoyi-ui/src/assets/images/light.svg
#	ruoyi-ui/src/components/DictTag/index.vue
#	ruoyi-ui/src/components/RightToolbar/index.vue
#	ruoyi-ui/src/components/iFrame/index.vue
#	ruoyi-ui/src/directive/dialog/drag.js
#	ruoyi-ui/src/layout/components/InnerLink/index.vue
#	ruoyi-ui/src/utils/generator/config.js
#	ruoyi-ui/src/utils/generator/css.js
#	ruoyi-ui/src/utils/generator/drawingDefalut.js
#	ruoyi-ui/src/utils/generator/html.js
#	ruoyi-ui/src/utils/generator/js.js
#	ruoyi-ui/src/utils/generator/render.js
#	ruoyi-ui/src/views/index_v1.vue
#	ruoyi-ui/src/views/monitor/cache/index.vue
#	ruoyi-ui/src/views/system/role/authUser.vue
#	ruoyi-ui/src/views/system/role/selectUser.vue
#	ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue
#	ruoyi-ui/src/views/tool/build/DraggableItem.vue
#	ruoyi-ui/src/views/tool/build/IconsDialog.vue
#	ruoyi-ui/src/views/tool/build/RightPanel.vue
#	ruoyi-ui/src/views/tool/build/TreeNodeDialog.vue
#	sql/quartz.sql
2021-09-07 10:20:56 +08:00
Eee ddba5accd4 引入Fluent-mybatis并做初步测试 2021-09-07 10:02:16 +08:00
疯狂的狮子Li 94be46d065 fix 修复定时器工具编写错误问题 2021-08-26 18:03:33 +08:00
疯狂的狮子li d48c57917c fix 修复 excel 导入与 class 未对应问题 2021-08-20 17:01:18 +08:00
疯狂的狮子li c91d33e4ab update 优化 OSS 模块与上传组件 异常处理 2021-08-18 19:15:03 +08:00
疯狂的狮子li a33a919169 fix 修复 OSS配置清空被过滤问题 2021-08-18 18:24:24 +08:00
疯狂的狮子li 96c4c4da56 fix 修复 新版本说明 标签错误 2021-08-18 16:54:22 +08:00
疯狂的狮子li cf4b49ca3b fix 修复 富文本图片路径错误问题 2021-08-18 14:50:10 +08:00
疯狂的狮子li 6a8deaf61a fix 修复 minio 无 perfix 问题 2021-08-18 14:14:50 +08:00
疯狂的狮子Li 0375fd319c !78 同步dev分支
Merge pull request !78 from 疯狂的狮子Li/dev
2021-08-18 03:11:24 +00:00
疯狂的狮子Li b19111b9bf Merge branch 'master' of gitee.com:JavaLionLi/RuoYi-Vue-Plus into dev 2021-08-18 03:11:04 +00:00
疯狂的狮子li a937e3f268 发布 v3.0.0 2021-08-18 11:09:14 +08:00
疯狂的狮子li 4eb94f4a1e update 更新vip群信息 2021-08-18 10:44:08 +08:00
疯狂的狮子li 8cc673ec95 update 同步 ruoyi 自定义限流 新功能 2021-08-17 14:39:38 +08:00
疯狂的狮子li c271ffc066 update 同步 ruoyi 自定义限流 新功能 2021-08-17 14:34:29 +08:00
疯狂的狮子li 896939ce4e Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excels.java
	ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java
2021-08-17 14:23:19 +08:00
RuoYi 5c155f5f11 支持自定义注解实现接口限流 2021-08-17 14:08:18 +08:00
疯狂的狮子li 5bfb2dae13 update 优化OSS异常判断 2021-08-17 11:43:14 +08:00
疯狂的狮子li 52d0d62c35 update 同步 ruoyi 适配改动 2021-08-17 10:45:01 +08:00
疯狂的狮子li d3abd6c96e Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/exception/CustomException.java
	ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java
	ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java
	ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
	ruoyi-ui/src/components/Breadcrumb/index.vue
2021-08-17 10:38:07 +08:00
RuoYi 03cf98d3c9 优化异常信息 2021-08-16 16:25:25 +08:00
若依 6f51f729ba !289 添加日期范围支持重复添加多组日期范围,请求参数中对象的属性为null、undefined不进行拼接
Merge pull request !289 from wangzhaoqiang/master
2021-08-16 08:23:27 +00:00
疯狂的狮子li 73d2ed4c02 update 更新批量演示demo代码 2021-08-16 16:18:36 +08:00
wangzhaoqiang 57b159eb98 添加日期范围支持重复添加多组日期范围,请求参数中对象的属性为null、undefined不进行拼接 2021-08-16 14:48:34 +08:00
若依 08da6834a5 !288 修正方法名单词拼写错误
Merge pull request !288 from 稚屿/N/A
2021-08-16 02:36:36 +00:00
若依 268468fb47 !287 更新到【默认首页使用keep-alive缓存】后报错
Merge pull request !287 from wangzhaoqiang/master
2021-08-16 02:36:29 +00:00
稚屿 333e19339c 修正方法名单词拼写错误 2021-08-15 10:26:05 +00:00
疯狂的狮子li 25b47db3cb update 移除Spring注入 改为全局缓存 并使用更新时间确保集群配置最终一致性 2021-08-15 16:59:46 +08:00
wangzhaoqiang 7b6ccd9b22 解决登录后浏览器后台Breadcrumb组件报错 2021-08-14 20:16:48 +08:00
疯狂的狮子li 881edb3e62 update springboot admin 2.4.3 => 2.5.0 (新增 Quartz 专属监控页) 2021-08-14 14:53:25 +08:00
疯狂的狮子li bb1d8d5796 remove 删除无用常量 2021-08-14 14:30:52 +08:00
疯狂的狮子li cb13642e85 update 重写 OSS 模块相关实现 支持动态配置(页面配置) 2021-08-13 21:09:24 +08:00
疯狂的狮子li 6473d4d8be Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	bin/clean.bat
	bin/run.bat
	ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
	ruoyi-ui/bin/run-web.bat
	ruoyi-ui/src/components/ImageUpload/index.vue
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/views/index.vue
2021-08-13 17:36:26 +08:00
RuoYi 5d6f134609 多图上传组件移除多余的api地址 2021-08-13 15:15:35 +08:00
RuoYi f02743bde5 代码生成主子表多选行数据 2021-08-13 14:50:35 +08:00
疯狂的狮子li 8c09c30ca0 remove 删除OSS配置页面无用按钮 2021-08-13 14:32:24 +08:00
疯狂的狮子li 86fba4aed4 remove 删除配置文件 OSS存储相关配置 2021-08-13 14:10:16 +08:00
疯狂的狮子li a5a71bf505 fix 修复代码生成 删除按钮报错 loading 不取消问题 2021-08-13 14:07:32 +08:00
疯狂的狮子li 652a39b11c update 修正 PR 相关问题 2021-08-13 14:04:57 +08:00
疯狂的狮子li 824635df7f update 修正 PR 相关问题 2021-08-13 12:37:34 +08:00
RuoYi 3003bb0f50 Excel注解图片导入兼容xls 2021-08-13 10:56:35 +08:00
RuoYi 5139265d32 默认首页使用keep-alive缓存 2021-08-13 10:10:29 +08:00
孤舟烟雨 c9f7314cd0 !77 update 对象存储配置 重构到数据库 动态配置
* 增加对象存储配置sql
* 修改对象存储配置
* Merge branch 'dev' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus into dev
* 增加对象存储配置
* 增加对象存储配置
2021-08-13 02:03:46 +00:00
若依 8a67af6c26 !285 修复角色分配用户页面接收参数与传递参数类型不一致导致的错误
Merge pull request !285 from 稚屿/N/A
2021-08-13 01:55:58 +00:00
若依 8e4802505e !284 添加SysConfigservice,SysDictTypeService的实现方法遗漏的@Override注解
Merge pull request !284 from Old丶x/master
2021-08-13 01:55:52 +00:00
稚屿 8ee641c1bc 修复角色分配用户页面接收参数与传递参数类型不一致导致的错误 2021-08-13 01:08:00 +00:00
mroldx 779508989f 添加加载字典数据,清空字典数据,重置字典数据方法上遗漏的@Override注解 2021-08-12 17:30:31 +08:00
mroldx d9e805a6a5 添加获取验证码方法上遗漏的@Override注解 2021-08-12 17:19:56 +08:00
疯狂的狮子li 2b0c4acfa1 add 增加 admin 监控客户端开关 2021-08-12 13:53:58 +08:00
疯狂的狮子li 2915548bce remove 移除无用配置 2021-08-12 11:41:43 +08:00
疯狂的狮子li c9a9da7f49 remove 移除无用配置 2021-08-12 11:38:06 +08:00
疯狂的狮子li 8adbdee9d9 remove 移除无用配置 2021-08-12 11:37:12 +08:00
疯狂的狮子li 5645356fa9 fix 生产minio回显问题 2021-08-11 17:05:02 +08:00
疯狂的狮子li 6a66aaff47 update 注入器 insert 增加 update 字段处理 2021-08-11 16:47:38 +08:00
疯狂的狮子li 253f28bb2b update 代码生成文档注解 增加必填判断配置 2021-08-11 15:43:58 +08:00
疯狂的狮子li a48154a2ee update 补全基础实体 文档注解 2021-08-11 15:43:23 +08:00
疯狂的狮子li 0883b9eff1 update hutool 5.7.6 => 5.7.7 2021-08-11 14:42:58 +08:00
疯狂的狮子li 2c2dad24d5 update 更新 阿里云 maven源 新地址 2021-08-11 14:28:05 +08:00
疯狂的狮子li cec4e083ef update 更改多数据源框架更清晰的依赖名 2021-08-11 14:27:40 +08:00
疯狂的狮子li 05316b08b4 update 统一镜像时区配置 移除主机时间映射 2021-08-11 13:09:48 +08:00
RuoYi 7be17ea89a Excel注解支持Image图片导入 2021-08-11 10:13:34 +08:00
RuoYi 1f07641d9b update bin 2021-08-11 10:11:13 +08:00
若依 c0f4f805d0 !281 补全注册用户方法上遗漏的@Override注解
Merge pull request !281 from 稚屿/N/A
2021-08-11 02:08:58 +00:00
疯狂的狮子li c2de299834 update 同步ruoyi 2021-08-09 10:05:27 +08:00
疯狂的狮子li 9bfa420a76 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	README.md
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
	ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java
	ruoyi-ui/package.json
	ruoyi-ui/src/views/system/menu/index.vue
2021-08-09 09:55:50 +08:00
稚屿 b84224d7ba 补全注册用户方法上遗漏的@Override注解 2021-08-08 14:08:52 +00:00
RuoYi 98a143f1fe 添加新群号:101456076 2021-08-08 19:50:50 +08:00
RuoYi 3243428009 优化用户不能删除自己 2021-08-08 19:12:52 +08:00
RuoYi 7736097f6b 提取通用方法到基类控制器 2021-08-08 19:12:12 +08:00
疯狂的狮子li f544ffc568 add 增加 国际化演示demo 2021-08-06 18:59:28 +08:00
疯狂的狮子li c06a02fb97 add 增加 完整国际化解决方案 2021-08-06 18:59:08 +08:00
RuoYi fc60c003c3 升级element-ui到最新版本2.15.5 2021-08-06 14:31:39 +08:00
疯狂的狮子li 4d15ab766f fix 修复操作日志根据状态查询异常问题 2021-08-06 12:43:21 +08:00
疯狂的狮子li 6896db47af update 补全国家化文件 2021-08-05 13:45:54 +08:00
疯狂的狮子li 313d8e8484 update 排版文档 增加新功能说明 2021-08-05 13:31:00 +08:00
疯狂的狮子li 8c912a8133 add 集成 性能分析插件 p6spy 更强劲的 SQL 分析 2021-08-05 13:30:36 +08:00
疯狂的狮子li ffd3dc335f update 将 Actuator 配置 移动到全局配置 2021-08-05 13:30:04 +08:00
疯狂的狮子li 4e54190e3a update 代码生成模板 适配新excel导出 2021-08-05 10:22:29 +08:00
疯狂的狮子li 79bf332c53 remove 移除通用上传下载接口与配置 2021-08-04 19:11:39 +08:00
疯狂的狮子li 08db4a5f53 update 更改所有业务excel导出 2021-08-04 19:03:25 +08:00
疯狂的狮子li ffed5a09cb remove 移除原生excel工具 2021-08-04 19:02:59 +08:00
疯狂的狮子li 5ca4478540 update 更新 SysJob 导入导出 补全 SysUser 试图对象 2021-08-04 18:52:09 +08:00
疯狂的狮子li 9cf4794146 update 更新 SysUser 导入导出 2021-08-04 18:29:38 +08:00
疯狂的狮子li 43901370e9 update 自动注入修改为强制注入 无用户信息返回 null 并日志报警 2021-08-04 18:13:11 +08:00
疯狂的狮子li b65856227f update 文件存储工厂使用redis加载类型 2021-08-04 17:40:02 +08:00
疯狂的狮子li e1fcbc6476 update 移动文件存储 controller 到 admin 模块 2021-08-04 17:27:33 +08:00
疯狂的狮子li 0e8a8fca31 update 移动文件存储业务到 system 模块 2021-08-04 17:26:14 +08:00
疯狂的狮子li 01e8fe5ddb fix 头像上传 未走OSS存储问题 2021-08-04 13:10:28 +08:00
疯狂的狮子li 0ec756cf58 fix oss列表 jpeg 不回显问题 2021-08-04 13:09:43 +08:00
疯狂的狮子li 0539c2f927 update 重写系统部分业务导出 2021-08-04 11:46:55 +08:00
疯狂的狮子li 80067d32fc fix 头像上传 未走OSS存储问题 2021-08-04 11:15:16 +08:00
疯狂的狮子li 19d5f2dd78 update 下载工具更名为通用下载 2021-08-04 09:28:31 +08:00
疯狂的狮子li 13dde63463 update 修改 下载工具类 删除无用代码 2021-08-04 09:27:16 +08:00
疯狂的狮子li da4e080656 update 修改 操作日志导出 适配easyexcel工具 2021-08-03 19:29:59 +08:00
疯狂的狮子li 89cca8af07 update 重构 统一使用 zip 工具下载 2021-08-03 19:29:15 +08:00
疯狂的狮子li 170908ef8d add 增加 easyexcel 工具类 2021-08-03 19:28:15 +08:00
疯狂的狮子li 70b77d9801 add 增加 easyexcel 依赖 2021-08-03 19:27:48 +08:00
疯狂的狮子Li 2b1c3335f6 !74 Fix 修复DictUtils方法报错
Merge pull request !74 from jackytang/N/A
2021-08-03 02:07:20 +00:00
jackytang ad15978ccb Fix 修复DictUtils方法报错 2021-08-02 16:10:31 +00:00
疯狂的狮子li c813046594 update 日常校验 统一重构到 StringUtils 便于维护扩展 2021-08-02 19:28:41 +08:00
疯狂的狮子li 5740561cd3 update 更新文档链接 更明显 2021-08-02 15:08:04 +08:00
疯狂的狮子li 28073ef2fe update 适配新业务 接口返回值 2021-08-02 13:08:36 +08:00
疯狂的狮子li c958217d19 update 修改 自动注入器 用户未登录异常拦截抛出警告 返回Null 2021-08-02 13:08:19 +08:00
疯狂的狮子li f8ab5663ef update 日常字符串校验 统一重构到 StringUtils 便于维护扩展 2021-08-02 12:15:14 +08:00
疯狂的狮子li cfdeada3fd Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	pom.xml
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-admin/src/main/resources/i18n/messages.properties
	ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
	ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
	ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
	ruoyi-generator/src/main/resources/vm/java/controller.java.vm
	ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
	ruoyi-generator/src/main/resources/vm/java/service.java.vm
	ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
	ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm
	ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
	ruoyi-ui/src/api/login.js
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/utils/zipdownload.js
	ruoyi-ui/src/views/index.vue
	ruoyi-ui/src/views/login.vue
	ruoyi-ui/src/views/system/user/index.vue
2021-08-02 11:21:09 +08:00
疯狂的狮子li 210b5af1c7 update 优化自动注入器 异常检查更完善 2021-08-02 09:39:35 +08:00
疯狂的狮子li 946242e8f1 add 增加 重复提交 配置属性类 2021-08-01 11:04:37 +08:00
疯狂的狮子li 1cb79223ff update feign-okhttp 11.0 => 11.2
update okhttp 3.19.4 => 4.9.1
update minio 8.2.0 => 8.3.0
2021-08-01 11:03:56 +08:00
RuoYi 68ae4df2dc 升级commons.io到最新版本v2.11.0 2021-07-31 17:52:06 +08:00
RuoYi de33e6ecc8 优化代码生成模板 2021-07-30 22:18:20 +08:00
RuoYi a1cc346aca 优化代码生成模板 2021-07-30 21:50:47 +08:00
RuoYi 5397e345ca 新增是否开启用户注册功能 2021-07-30 21:23:35 +08:00
疯狂的狮子li ba99070ca4 update 更新 防重提交拦截器 demo演示案例 2021-07-30 19:11:10 +08:00
疯狂的狮子li c65acd6a28 update 重写 防重提交拦截器 支持全局与注解自定义 拦截时间配置配置 优化逻辑 2021-07-30 19:10:54 +08:00
疯狂的狮子li a6bde3c5da update 降级 minio 依赖版本 2021-07-30 14:17:15 +08:00
疯狂的狮子li 39783f2b19 update 降级 minio 依赖版本 2021-07-30 14:14:21 +08:00
RuoYi 8ed7916b61 定时任务屏蔽http(s)远程调用 2021-07-30 11:28:46 +08:00
RuoYi 2de5cc52d1 启用父部门状态排除顶级节点 2021-07-30 11:28:04 +08:00
RuoYi f6bc28000e 防止错误token导致的解析异常 2021-07-29 17:32:55 +08:00
疯狂的狮子li 90d2a7af03 update 更新 BigNumberSerializer 书写错误 2021-07-29 15:09:23 +08:00
疯狂的狮子li d29a7adc9a update 更新 BigNumberSerializer 注释 2021-07-29 14:28:08 +08:00
疯狂的狮子li 0158fb437d update 更新 springboot 版本标签 2021-07-29 13:27:26 +08:00
疯狂的狮子li 2ef70303c5 Merge remote-tracking branch 'origin/dev' into dev 2021-07-29 13:11:42 +08:00
疯狂的狮子li 7e613f8da6 add 增加 jackson 超出 JS 最大数值自动转字符串(雪花id序列化)处理 2021-07-29 13:11:35 +08:00
疯狂的狮子Li 826bef86b2 update 更新软件架构图 2021-07-29 03:22:56 +00:00
疯狂的狮子li 0bfc4b433b update 优化 InsertAll 写法 2021-07-28 18:23:27 +08:00
RuoYi 6b5dd4d2be 优化XSS跨站脚本过滤 2021-07-28 16:04:59 +08:00
疯狂的狮子li 4da51c739b update service 统一使用 ServicePlusImpl 2021-07-28 14:39:20 +08:00
疯狂的狮子li 5dbf39beee update service 统一使用 ServicePlusImpl 2021-07-28 14:22:58 +08:00
RuoYi e6becb9337 BLOB下载时清除URL对象引用 2021-07-28 13:13:28 +08:00
疯狂的狮子li c191b24024 fix 修复 jdk8 与 jdk11 差异问题 2021-07-28 11:56:37 +08:00
疯狂的狮子li 13da3c71d8 fix 修复 jdk8 与 jdk11 差异问题 2021-07-28 11:56:12 +08:00
疯狂的狮子li eb2be90e74 Merge remote-tracking branch 'origin/dev'
# Conflicts:
#	README.md
#	docker/docker-compose.yml
#	pom.xml
#	ruoyi-admin/pom.xml
#	ruoyi-admin/src/main/resources/application-dev.yml
#	ruoyi-admin/src/main/resources/application-prod.yml
#	ruoyi-common/pom.xml
#	ruoyi-demo/pom.xml
#	ruoyi-extend/pom.xml
#	ruoyi-extend/ruoyi-monitor-admin/pom.xml
#	ruoyi-framework/pom.xml
#	ruoyi-generator/pom.xml
#	ruoyi-generator/src/main/resources/vm/java/editBo.java.vm
#	ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm
#	ruoyi-quartz/pom.xml
#	ruoyi-system/pom.xml
#	ruoyi-ui/package.json
#	ruoyi-ui/src/views/index.vue
2021-07-28 10:49:16 +08:00
疯狂的狮子li 973471c63b 发布 v2.6.0 2021-07-28 10:45:01 +08:00
疯狂的狮子li 79766fa8c2 update springboot 2.4.9 => 2.5.3
update hutool 5.7.5 => 5.7.6
update redisson 3.16.0 => 3.16.1
update datasource 3.4.0 => 3.4.1
2021-07-28 10:18:05 +08:00
RuoYi 8da55fb72a 添加新群号:101456076 2021-07-28 09:51:19 +08:00
疯狂的狮子li 6e75e88d71 update 同步ruoyi修正 2021-07-27 12:48:28 +08:00
疯狂的狮子li 06944747fd Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	pom.xml
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
	ruoyi-ui/package.json
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/system/user/profile/resetPwd.vue
	ruoyi-ui/src/views/tool/gen/index.vue
2021-07-27 12:42:41 +08:00
RuoYi 6a5c86541a 跳转路由高亮相对应的菜单栏 2021-07-27 11:54:20 +08:00
RuoYi 3803ac78e2 升级oshi到最新版本v5.8.0 2021-07-27 11:53:59 +08:00
疯狂的狮子li 51ae60820d Merge remote-tracking branch 'origin/dev' into dev 2021-07-27 11:07:40 +08:00
疯狂的狮子li 7cf6064200 update 重构 IServicePlus 功能 增加 BeanCopyUtils 深拷贝工具 2021-07-27 11:07:33 +08:00
Ricky 4095a1b6ee !275 fix Issue #I42GRW 任意账户越权漏洞
Merge pull request !275 from lagXkjy/master
2021-07-27 02:08:04 +00:00
江强 3347ca4d74 fix:Issue #I42GRW 修复任意账户越权漏洞 2021-07-27 09:33:12 +08:00
疯狂的狮子Li 2e1761423d fix 修复 DictData 删除逻辑问题 2021-07-26 12:05:15 +00:00
疯狂的狮子li 79eb42d3fe remove 删除 自带通用上传 接口 使用OSS模块替换 2021-07-26 14:36:59 +08:00
疯狂的狮子li 11c73d8877 udpate 补全缺失类 2021-07-26 13:57:11 +08:00
疯狂的狮子li a5fbb1cd1f udpate 更新 新特性文档介绍 2021-07-26 13:24:21 +08:00
疯狂的狮子li a3f1a00078 udpate 更新 OSS模块 适配新规范 2021-07-26 13:15:37 +08:00
疯狂的狮子li 280196c9e5 udpate 更新新功能演示案例 2021-07-26 13:13:46 +08:00
疯狂的狮子li 83cc800e97 update 多bo合并 使用分组校验 生成bo代码 2021-07-26 13:12:56 +08:00
疯狂的狮子li da5a1293b3 update 更新自定义vo转化接口 2021-07-26 13:12:03 +08:00
疯狂的狮子li 48817519a9 update 修改页面文档与源码地址 2021-07-26 13:08:54 +08:00
疯狂的狮子li b7f6f73342 fix 修复 授权角色空数据问题 2021-07-26 10:52:31 +08:00
RuoYi 9b1883988b 升级element-ui到最新版本2.15.3 2021-07-26 09:50:58 +08:00
RuoYi 49c8a007cc 修复定时任务日志执行状态显示 2021-07-26 09:50:33 +08:00
RuoYi 64f6d28441 角色&菜单新增字段属性提示信息 2021-07-25 20:08:55 +08:00
RuoYi c26d87c677 内链设置meta信息 2021-07-25 20:05:18 +08:00
RuoYi 97ae0eb7c7 密码框新增显示切换密码图标 2021-07-25 19:13:56 +08:00
RuoYi 6c1cccd031 导入用户样式调整 2021-07-25 19:08:00 +08:00
RuoYi 856d1ceba8 顶部菜单样式调整 2021-07-25 19:06:57 +08:00
RuoYi 60673b3b64 去除默认分页合理化参数 2021-07-25 10:35:37 +08:00
RuoYi 0a516e3001 更多操作按钮添加权限控制 2021-07-25 10:20:52 +08:00
RuoYi bb87f35797 富文本新增上传文件大小限制 2021-07-25 08:57:01 +08:00
疯狂的狮子li 90d4fd8cf1 update [重大改动] 重写VO转换 支持深拷贝 将VO类抽象到 ServicePlus 泛型处理 2021-07-24 21:19:05 +08:00
疯狂的狮子li fbe9ad2392 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
	ruoyi-ui/src/router/index.js
2021-07-24 19:03:36 +08:00
疯狂的狮子li b539939a90 update 更新druid配置 独立配置更明显 2021-07-24 18:29:12 +08:00
疯狂的狮子li 1dfc9bbaa6 fix 修复多数据源druid全局配置缩进错误 引起无效配置问题
(cherry picked from commit 334fe11584)
2021-07-24 18:25:51 +08:00
疯狂的狮子li 334fe11584 fix 修复多数据源druid全局配置缩进错误 引起无效配置问题 2021-07-24 18:23:22 +08:00
RuoYi c43f9bc3c2 顶部菜单排除隐藏的默认路由 2021-07-24 18:20:55 +08:00
若依 46b43b1bd9 !269 code=401时request方法没有返回Promise.reject 修复
Merge pull request !269 from 严俊东/N/A
2021-07-24 02:48:01 +00:00
疯狂的狮子li c92ae6a9d2 update 更新除图片外显示URL文本 2021-07-23 19:50:08 +08:00
若依 8dbda47174 !268 修正方法名单词拼写错误
Merge pull request !268 from 稚屿/N/A
2021-07-23 11:34:30 +00:00
疯狂的狮子li dd9340090b add OSS模块 增加预览图片开关 2021-07-23 19:14:37 +08:00
疯狂的狮子li 7114fc2720 update OSS模块 更新 阿里云 腾讯云 相关代码 重构部分代码结构 2021-07-23 18:37:39 +08:00
疯狂的狮子li 22fd00832d update 更新OSS模块 七牛云相关代码 2021-07-23 15:35:28 +08:00
疯狂的狮子li 2d17123b74 update springboot 2.4.8 => 2.4.9
update hutool 5.7.4 => 5.7.5
update minio 8.2.2 => 8.3.0
update docker plugin 1.2.0 => 1.2.2
2021-07-23 10:50:03 +08:00
疯狂的狮子li bb67924233 update OSS下载文件名改为后端传输 2021-07-23 10:48:28 +08:00
疯狂的狮子li 1f2cf719da Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	pom.xml
	ruoyi-ui/src/views/monitor/job/index.vue
2021-07-21 14:00:07 +08:00
疯狂的狮子li 85376e8d6e add 演示Demo增加自定义分页接口案例 2021-07-21 12:07:12 +08:00
疯狂的狮子li ed197ce7ac update 完成OSS模块页面功能 2021-07-20 17:26:20 +08:00
严俊东 cdace51197 code=401时request方法没有返回Promise.reject 修复 2021-07-20 04:49:22 +00:00
疯狂的狮子li a4c019ace2 update OSS接口增加通用contentType 2021-07-20 11:12:22 +08:00
稚屿 c24fc4282c 修正方法名单词拼写错误 2021-07-20 00:54:50 +00:00
疯狂的狮子li eea8f33cf9 发布 v2.5.2 bug修复版
(cherry picked from commit b12bdd1f15)
2021-07-19 19:44:18 +08:00
疯狂的狮子li 0a128e454c update 编写 Minio 实现 调整OSS模块结构 2021-07-19 19:40:18 +08:00
疯狂的狮子li b12bdd1f15 发布 v2.5.2 bug修复版 2021-07-19 18:56:46 +08:00
疯狂的狮子li 0bf40ba600 fix 回滚代码生成器 批处理优化(字段内容不一致, 不适合批处理) 2021-07-19 18:48:13 +08:00
疯狂的狮子li 7d4f60e89d fix 代码生成 queryType 重复勾选数据库无默认值问题 2021-07-19 18:48:11 +08:00
疯狂的狮子li 59006cb931 fix 修复接口单参数校验无效问题 2021-07-19 18:48:08 +08:00
疯狂的狮子li acf40052c4 update 优化代码生成器注释格式 2021-07-19 18:48:00 +08:00
疯狂的狮子li aad482a7e0 remove 移除无用配置 2021-07-19 18:47:55 +08:00
疯狂的狮子li dc3a017301 fix 代码生成器 queryType >= <= 标识符错误问题 2021-07-19 18:47:48 +08:00
疯狂的狮子li 50b7421f28 remove 删除无用文档与脚本 2021-07-19 18:47:44 +08:00
Nguyendream 61daaa3506 fix 未完全解决的代码生成字典问题 2021-07-19 18:45:18 +08:00
疯狂的狮子li 5b42f87ec4 update 修复 thread-pool: enabled 配置不生效问题 2021-07-19 18:45:17 +08:00
疯狂的狮子li 3aaf4e2384 fix 回滚代码生成器 批处理优化(字段内容不一致, 不适合批处理) 2021-07-19 14:18:38 +08:00
疯狂的狮子li 1891dbc566 fix 代码生成 queryType 重复勾选数据库无默认值问题 2021-07-19 10:04:56 +08:00
疯狂的狮子li 00b9043915 add 增加 OSS 模块业务代码 2021-07-18 20:27:37 +08:00
疯狂的狮子li fdd8c65b36 fix 修复接口单参数校验无效问题 2021-07-18 19:53:16 +08:00
疯狂的狮子li 7cffafcdaa update 增加OSS模块service自动激活 2021-07-18 19:29:33 +08:00
疯狂的狮子li f847f67982 update 更新OSS配置类 使用内部类结构 2021-07-18 18:41:47 +08:00
疯狂的狮子li 4b921f5e72 remove 移除无用配置 2021-07-18 18:22:55 +08:00
疯狂的狮子li 089e288a6e update 使用 策略+工厂 重写OSS模块 2021-07-18 18:20:21 +08:00
疯狂的狮子li d642c08c2e update 优化代码生成器注释格式 2021-07-18 18:19:16 +08:00
疯狂的狮子li 7e90d84598 add 增加 OSS 对象存储模块 相关代码(未完成) 2021-07-17 20:44:27 +08:00
疯狂的狮子li d7fde6fe0d fix 代码生成器 queryType >= <= 标识符错误问题 2021-07-17 18:07:08 +08:00
RuoYi b616a2f2e7 定时任务新增更多操作 2021-07-15 17:35:33 +08:00
疯狂的狮子li dfebbfc331 remove 删除无用文档与脚本 2021-07-14 14:47:48 +08:00
疯狂的狮子Li a42acb03ab !70 fix 未完全解决的代码生成字典问题
Merge pull request !70 from Nguyendream/N/A
2021-07-14 06:43:08 +00:00
Nguyendream 1031ba44b7 fix 未完全解决的代码生成字典问题 2021-07-14 06:38:56 +00:00
疯狂的狮子li 28fa991fc2 update 修复 thread-pool: enabled 配置不生效问题 2021-07-14 10:43:33 +08:00
RuoYi 60abdf1dbc 升级oshi到最新版本v5.7.5 2021-07-14 09:53:26 +08:00
疯狂的狮子Li 83905db717 !69 同步dev分支
Merge pull request !69 from 疯狂的狮子Li/dev
2021-07-13 05:50:21 +00:00
疯狂的狮子li 55546dfc80 发布 v2.5.1 针对 v2.5.0 版本新特性bug修复 2021-07-13 13:49:47 +08:00
疯狂的狮子li a412b6b03a update 验证码开关 转移到系统配置内 2021-07-13 13:38:53 +08:00
疯狂的狮子li fd5414f82e Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
	ruoyi-ui/src/components/ImageUpload/index.vue
	ruoyi-ui/src/views/login.vue
	sql/ry_20210713.sql
2021-07-13 13:34:10 +08:00
疯狂的狮子li 79965e30af fix 合并 pr !68 业务集群部署与文件上传的问题 2021-07-13 13:20:08 +08:00
疯狂的狮子li 5c8de41b32 fix 修复 docker业务集群部署与文件上传的问题 2021-07-13 13:12:32 +08:00
疯狂的狮子li 6bf38a806c fix 修复 docker业务集群部署与文件上传的问题 2021-07-13 13:11:37 +08:00
疯狂的狮子li 15c45eae11 fix 修复代码生成同步表结构id冲突问题 2021-07-13 13:08:47 +08:00
疯狂的狮子li 45b9acd57b fix 修复代码生成选择字典 无法取消问题 2021-07-13 11:32:02 +08:00
疯狂的狮子li 3b765f3ac9 fix 修复代码生成字典为null问题 2021-07-13 11:24:12 +08:00
RuoYi 7b894da43c 参数管理支持配置验证码开关 2021-07-13 10:30:40 +08:00
RuoYi c8b66f9b04 删除富文本video事件 2021-07-13 10:28:55 +08:00
若依 25d9edd5c9 !259 图片上传 - 多图时无法删除相应图片修复
Merge pull request !259 from 严俊东/N/A
2021-07-13 02:26:10 +00:00
疯狂的狮子li fdad98b321 Merge remote-tracking branch 'origin/dev' into dev 2021-07-12 14:30:05 +08:00
疯狂的狮子li 8ddd71a818 update 使用hutool重构 判断是否url 2021-07-12 14:29:49 +08:00
疯狂的狮子Li 5632278688 !67 同步dev分支
Merge pull request !67 from 疯狂的狮子Li/dev
2021-07-12 03:39:43 +00:00
疯狂的狮子Li 1cbe4c0d88 Merge branch 'master' of gitee.com:JavaLionLi/RuoYi-Vue-Plus into dev 2021-07-12 03:39:26 +00:00
严俊东 77a21d098f 图片上传 - 多图时无法删除相应图片修复 2021-07-12 03:01:50 +00:00
疯狂的狮子li cd34c87afa fix 修复升级合并错误 2021-07-12 11:00:12 +08:00
疯狂的狮子li d30ba9d52e 发布 v2.5.0 2021-07-12 09:58:32 +08:00
疯狂的狮子li e085ec9418 发布 v2.5.0 2021-07-12 09:53:46 +08:00
疯狂的狮子li aac20ca789 update hutool 5.7.4 2021-07-12 09:46:05 +08:00
疯狂的狮子li 599016a63a update 同步ruoyi修正差异 2021-07-12 09:44:46 +08:00
疯狂的狮子li 8231953e29 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	pom.xml
	ruoyi-admin/pom.xml
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-common/pom.xml
	ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
	ruoyi-framework/pom.xml
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
	ruoyi-generator/pom.xml
	ruoyi-quartz/pom.xml
	ruoyi-system/pom.xml
	ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
	ruoyi-ui/package.json
	ruoyi-ui/src/components/HeaderSearch/index.vue
	ruoyi-ui/src/layout/components/AppMain.vue
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/store/modules/permission.js
	ruoyi-ui/src/views/index.vue
2021-07-12 09:37:23 +08:00
RuoYi 170cfb356c 若依 3.6.0 2021-07-12 08:42:11 +08:00
RuoYi 5879c2484a 菜单路由配置支持内链访问 2021-07-11 16:31:10 +08:00
RuoYi c02dad2ca3 默认访问首页新增提示语 2021-07-11 15:28:11 +08:00
RuoYi 1bfa14e3c6 富文本默认上传返回url类型 2021-07-10 12:17:32 +08:00
疯狂的狮子li ea506de048 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
	ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
	ruoyi-ui/src/directive/index.js
	ruoyi-ui/src/directive/permission/hasPermi.js
	ruoyi-ui/src/directive/permission/hasRole.js
	ruoyi-ui/src/main.js
	ruoyi-ui/src/views/system/notice/index.vue
2021-07-09 18:07:32 +08:00
疯狂的狮子li d6bb7ab832 update 更新 admin client 与 actuator 配置到 环境配置文件 2021-07-09 17:41:45 +08:00
疯狂的狮子li 43486f2f41 update 配置 monitor-admin docker编排 2021-07-09 17:15:09 +08:00
RuoYi 5dec58e7f5 自定义弹窗拖拽指令 2021-07-09 17:12:29 +08:00
RuoYi 8321f92d2c 全局注册通用组件 2021-07-09 17:09:57 +08:00
RuoYi da1095e298 授权用户添加访问权限 2021-07-09 17:08:30 +08:00
疯狂的狮子li 1c11d7ccc1 update 转移 springboot-admin 到扩展模块项目 2021-07-09 15:30:40 +08:00
疯狂的狮子li 33ae270b0d update 更新 nginx https 配置 2021-07-09 14:14:16 +08:00
疯狂的狮子li 4c500eb50c update 更新 部署文档 2021-07-08 21:01:57 +08:00
疯狂的狮子li dcad0cdf92 update 更新 业务模块 集群配置 2021-07-08 20:34:24 +08:00
疯狂的狮子li bc5898b8cd update 更新 nginx 配置文件 2021-07-08 20:34:12 +08:00
疯狂的狮子li 18705b4f26 update 更新文档 Docker 文档说明 2021-07-08 20:33:49 +08:00
疯狂的狮子li e169366638 update 更新文档 PR 说明 2021-07-08 20:18:27 +08:00
疯狂的狮子li ae8c0b6c43 update 更新sql文件项目官网 2021-07-08 20:06:19 +08:00
疯狂的狮子li 6a8e281b66 update 更新docker脚本配置 2021-07-08 20:06:06 +08:00
疯狂的狮子li 821f54f1ab update 富文本接口返回值修正 2021-07-08 20:05:37 +08:00
疯狂的狮子li e30079d656 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-ui/src/components/FileUpload/index.vue
	ruoyi-ui/src/components/ImageUpload/index.vue
2021-07-08 19:58:28 +08:00
RuoYi f56da498ab ImageUpload组件支持多图片上传 2021-07-08 19:17:09 +08:00
疯狂的狮子li 6905522b91 update 优化 docker 配置 2021-07-08 16:47:34 +08:00
RuoYi e259093e01 文件上传组件添加数量限制属性 2021-07-08 15:49:04 +08:00
RuoYi e963a86b15 富文本编辑组件添加类型属性 2021-07-08 15:48:11 +08:00
RuoYi e447fb806b FileUpload组件支持多文件上传 2021-07-08 12:36:02 +08:00
疯狂的狮子li d0bbcc4e77 update 更新 docker ip配置 2021-07-06 15:30:25 +08:00
疯狂的狮子li 282f3b0632 add 增加 docker 配置 2021-07-06 14:06:25 +08:00
疯狂的狮子li 80e74eb91c add 增加 docker 编排 与 shell 脚本 2021-07-06 13:48:06 +08:00
疯狂的狮子li 61e2a60438 update 同步 ruoyi 对新业务进行修正 2021-07-06 13:19:53 +08:00
疯狂的狮子li 59114a14ff update 同步 ruoyi 对新业务进行修正 2021-07-06 13:05:47 +08:00
疯狂的狮子li aa14085746 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
	ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
	ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
	ruoyi-ui/src/api/system/role.js
	ruoyi-ui/src/api/system/user.js
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
2021-07-06 12:01:05 +08:00
疯狂的狮子li 9ac87fd66f update 优化中英文语言配置 2021-07-06 11:39:14 +08:00
疯狂的狮子li 54688ce7c7 update 优化批量插入执行器 增加主键类型枚举对应生成策略 2021-07-05 18:17:49 +08:00
疯狂的狮子li 2fc3dcfc74 update 更改演示案例 2021-07-05 16:35:15 +08:00
RuoYi 90c41d498c 角色管理新增分配用户功能 2021-07-05 14:54:09 +08:00
RuoYi ce6bea4ba0 限制超级管理员不允许操作 2021-07-05 09:57:15 +08:00
疯狂的狮子Li 769e298e0a !66 修复 按钮loading卡死的问题
Merge pull request !66 from Nguyendream/N/A
2021-07-05 01:31:49 +00:00
Nguyendream dfb4d9f049 修复 按钮loading卡死的问题 2021-07-05 00:39:29 +00:00
疯狂的狮子li 2704e921c8 update 增加 feign 熔断 自定义结构体解析方法 与 demo 注释 2021-07-04 19:18:06 +08:00
疯狂的狮子li 99051916eb update 升级 springboot 2.4.8 2021-07-04 13:24:19 +08:00
疯狂的狮子li de194880ae update 关闭默认二级缓存 推荐使用 spring-cache 注解手动缓存 2021-07-04 02:21:04 +08:00
疯狂的狮子li c26073afeb update 优化缓存配置 增加spring-cache演示案例 2021-07-04 02:13:24 +08:00
疯狂的狮子li b9128b6074 update 依赖升级 2021-07-03 23:52:39 +08:00
疯狂的狮子li d6ca9e548d Merge remote-tracking branch 'origin/dev' into dev 2021-07-02 09:39:14 +08:00
疯狂的狮子li 2d8f380b71 update 优化 增加MP注入异常拦截 2021-07-02 09:39:07 +08:00
RuoYi 9c7901f526 用户管理新增分配角色功能 2021-07-01 18:01:36 +08:00
sxq 945b6c1e59 redis获取map属性bug修复。 2021-07-01 14:03:29 +08:00
疯狂的狮子li 5647cf7a7e update 规范maven写法 2021-07-01 10:42:24 +08:00
疯狂的狮子li d4be4df871 update 优化代码生成器 批量导入 2021-06-30 13:37:11 +08:00
疯狂的狮子li d92560b64b fix 修复 hutool StrUtil.containsAny 传入参数后返回结果不一致问题 2021-06-29 15:22:45 +08:00
疯狂的狮子Li 4952f7dcdb !61 update ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java.
Merge pull request !61 from 陆继保/N/A
2021-06-29 07:17:35 +00:00
陆继保 200170e5f3 update ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java. 2021-06-29 07:04:25 +00:00
疯狂的狮子li 10a6a9192d update 更新 MP 详细日志配置 2021-06-29 09:57:45 +08:00
疯狂的狮子li 99de90a015 update 更新配置注释(规范使用方法) 2021-06-28 19:23:02 +08:00
疯狂的狮子li cb54546259 Merge remote-tracking branch 'origin/dev' into dev 2021-06-28 13:54:53 +08:00
疯狂的狮子li efd1fc017b Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	pom.xml
	ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java
	ruoyi-ui/vue.config.js
2021-06-28 13:52:19 +08:00
RuoYi 04f5a93aa8 升级pagehelper到最新版1.3.1 2021-06-25 17:25:49 +08:00
若依 751ca90690 !251 修复日志列表取消字段排序时的报错问题
Merge pull request !251 from 稚屿/N/A
2021-06-25 09:23:45 +00:00
疯狂的狮子Li b73a67455d update README.md. 2021-06-25 08:01:54 +00:00
疯狂的狮子Li b51b8b1b41 update README.md. 2021-06-25 08:00:38 +00:00
疯狂的狮子li 4d7ef44aee Merge branch 'master' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2021-06-24 17:14:15 +08:00
疯狂的狮子li 3148781045 update 更新文档 提问四部曲 2021-06-24 17:13:19 +08:00
疯狂的狮子li 96507d3709 update 更新文档 提问四部曲 2021-06-24 17:12:48 +08:00
疯狂的狮子li 5ddfd5bf11 update 更新文档 提问四部曲 2021-06-24 17:10:38 +08:00
朱杰 f6dd60c051 update 修改readme加入提问四部曲 2021-06-24 17:10:37 +08:00
疯狂的狮子li beef02a4b6 update 更新文档 提问四部曲 2021-06-24 17:10:03 +08:00
朱杰 676ecd9052 update 修改readme加入提问四部曲 2021-06-24 17:06:49 +08:00
疯狂的狮子li 4962ec7589 Merge branch 'master' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2021-06-24 15:46:01 +08:00
疯狂的狮子li cc2fbc7b89 fix 相对路径下载问题 2021-06-24 15:42:51 +08:00
疯狂的狮子li 66f453452e fix 相对路径下载问题 2021-06-24 15:41:16 +08:00
疯狂的狮子li 24c7ff7959 Merge branch 'master' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2021-06-24 09:54:13 +08:00
疯狂的狮子li dfd7f594b5 update 更新文档版本 2021-06-24 09:39:33 +08:00
疯狂的狮子li 9b76b5ac98 update 更新文档版本 2021-06-24 09:39:14 +08:00
疯狂的狮子Li 9edab3dc55 !58 同步dev分支
Merge pull request !58 from 疯狂的狮子Li/dev
2021-06-24 01:36:00 +00:00
疯狂的狮子li 3eee19c9a2 Merge remote-tracking branch 'origin/dev' into dev 2021-06-24 09:34:16 +08:00
疯狂的狮子li 8195e948a1 发布 v2.4.0 2021-06-24 09:34:06 +08:00
稚屿 1dfeae6a03 修复日志列表取消字段排序时的报错问题 2021-06-24 00:27:37 +00:00
疯狂的狮子li ae43edeb4f update 更新 初始化项目 文档地址 2021-06-23 21:24:13 +08:00
疯狂的狮子li 1488a09b8e Merge branch 'dev' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2021-06-23 18:08:17 +08:00
疯狂的狮子li 152a386ac1 add 增加 Swagger3 用法示例 2021-06-23 17:01:30 +08:00
疯狂的狮子li c4712bcb52 Merge branch 'dev' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2021-06-23 15:31:22 +08:00
疯狂的狮子li 4545beab51 update 更新文档 增加 GitHub 地址 与其他小标签 2021-06-23 15:30:26 +08:00
疯狂的狮子li f48e807cee remove 删除无用测试类 2021-06-23 09:51:44 +08:00
疯狂的狮子li c12dc71ece Merge remote-tracking branch 'origin/dev'
# Conflicts:
#	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RedisLockAspect.java
2021-06-23 09:44:04 +08:00
疯狂的狮子li ce3562b3ea Merge remote-tracking branch 'origin/dev' 2021-06-23 09:43:31 +08:00
疯狂的狮子li d05458aa3a Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-ui/src/main.js
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/system/user/profile/userInfo.vue
2021-06-23 09:38:53 +08:00
RuoYi 1ed60c79c0 用户信息长度校验限制 2021-06-22 20:45:19 +08:00
RuoYi aee1e53140 全局挂载字典标签组件 2021-06-22 20:44:40 +08:00
疯狂的狮子li c822e2f6cc Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-ui/src/views/monitor/druid/index.vue
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/tool/swagger/index.vue
2021-06-22 16:56:38 +08:00
疯狂的狮子li f098222a43 update 集成 Lock4j 分布式锁 2021-06-22 16:45:37 +08:00
sxq 715abe1140 删除redislockmanager 2021-06-22 16:31:41 +08:00
sxq 645c926bbd 集成lock4j框架,删除redisson锁,使用lock4j的锁。 2021-06-22 16:06:02 +08:00
sxq 56eba9cded Merge branch 'dev' of D:\idea\RuoYi-Vue-Plus with conflicts. 2021-06-22 15:35:52 +08:00
Ricky 253e2b2de1 增加字典标签样式回显 2021-06-22 14:24:26 +08:00
疯狂的狮子li 1790c81603 fix 修复地址ip地址特殊回环问题 2021-06-22 14:12:51 +08:00
Ricky b1413f021e 增加字典标签样式回显 2021-06-22 14:04:14 +08:00
疯狂的狮子li fef57cb312 update 更新文档说明 2021-06-22 14:01:35 +08:00
疯狂的狮子li a129fafb69 update 更新多数据源与缓存 注意事项 2021-06-22 13:57:36 +08:00
疯狂的狮子li 81897d0b04 update 更新多数据源演示案例 2021-06-22 13:43:20 +08:00
疯狂的狮子li 40bba563d6 update 优化多数据源aop顺序问题 2021-06-22 13:43:05 +08:00
疯狂的狮子li 1caf76f64b update 更新多数据源文档介绍 2021-06-22 11:52:29 +08:00
疯狂的狮子li 8338913ac5 update 更新动态数据源 默认数据源配置 与文档链接 2021-06-22 11:38:33 +08:00
疯狂的狮子li c950daf301 update 优化 多数据源集成 相关pr 2021-06-22 11:31:27 +08:00
dingzhongyuan cf16e31632 多数据源替换成dynamic-datasource 2021-06-22 11:31:04 +08:00
疯狂的狮子li f48d708e28 fix 修复 insertAll sql拼接无主键问题 2021-06-21 20:03:31 +08:00
疯狂的狮子li f585992c6f Merge remote-tracking branch 'origin/dev' into dev 2021-06-21 19:41:11 +08:00
疯狂的狮子li 9c55b83dea fix 修复 insertAll sql拼接无主键问题 2021-06-21 17:53:18 +08:00
疯狂的狮子li ff5edc44ed update 注释主子表选项 不推荐使用 2021-06-21 12:52:21 +08:00
疯狂的狮子li dcd95d013f update springboot 2.3.11 => 2.4.7
update springboot-admin 2.3.1 => 2.4.1
update feign 2.2.6 => 3.0.3
update hutool 5.7.1 => 5.7.2
2021-06-21 12:43:23 +08:00
疯狂的狮子li d507111008 update 更新 jackson 时区配置 2021-06-19 00:34:57 +08:00
疯狂的狮子li 3ff6339e29 add 增加测试批量新增演示案例 2021-06-18 15:32:55 +08:00
疯狂的狮子li 3cc028fa29 update 根据改动调整测试类 2021-06-18 15:32:23 +08:00
疯狂的狮子li 85ae3a9420 update 对相关代码改动 进行调整 2021-06-18 15:31:38 +08:00
疯狂的狮子li 46b67fef7a add 增加 ServicePlusImpl 自动以实现类 重写移除事务注解方法 防止多数据源失效 2021-06-18 15:28:43 +08:00
疯狂的狮子li c98ab8fb51 add 增加 自定义 批量insert方法 2021-06-18 15:27:47 +08:00
疯狂的狮子li 281b6b6d2b update 调整 core mp 包结构 2021-06-18 15:25:37 +08:00
RuoYi 60c22b6a43 update ry.sh. 2021-06-17 21:29:00 +08:00
RuoYi 3f05ed6ffa 封装iframe组件 2021-06-17 20:17:42 +08:00
疯狂的狮子li e87f2dda85 update 更新 redisson 文档说明 以免造成误解 2021-06-17 19:27:00 +08:00
疯狂的狮子li 44bbe8b307 update 同步更新 ruoyi 适配新功能 2021-06-17 19:22:49 +08:00
疯狂的狮子li a8c1d02ee1 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	pom.xml
	ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
	ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
	ruoyi-ui/.env.development
	ruoyi-ui/.env.production
	ruoyi-ui/.env.staging
	ruoyi-ui/package.json
	ruoyi-ui/src/App.vue
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/components/Pagination/index.vue
	ruoyi-ui/src/layout/components/Settings/index.vue
	ruoyi-ui/src/layout/components/Sidebar/Logo.vue
	ruoyi-ui/src/main.js
	ruoyi-ui/src/permission.js
	ruoyi-ui/src/settings.js
	ruoyi-ui/src/store/modules/settings.js
	ruoyi-ui/src/views/monitor/logininfor/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/vue.config.js
2021-06-17 18:15:34 +08:00
疯狂的狮子li a2e4f747e0 update 优化 jdk11 依赖全部转移到选项配置 2021-06-17 13:48:00 +08:00
疯狂的狮子li 7dd18c75b0 update 更新 jackson 相关文档 2021-06-17 12:43:00 +08:00
RuoYi 090ad5323a 日志列表支持排序操作 2021-06-17 12:30:43 +08:00
疯狂的狮子li 47266f712a update 更新 JDK logo 2021-06-17 10:33:48 +08:00
疯狂的狮子li 0140965a30 update 优化 jdk11 相关 pr 2021-06-17 09:42:00 +08:00
CharlieJohn 8bda10c23c !54 fix 生成器生成的 service 和 serviceImpl 中 deleteWithValidByIds 参数字段类型错误
* fix 生成器生成的 service 和 serviceImpl 中 deleteWithValidByIds 参数字段类型错误
2021-06-17 09:30:52 +08:00
疯狂的狮子li d10099d9e9 update 适配 jdk11 2021-06-16 23:46:26 +08:00
朱杰 ac3f9e5f33 【update】JDK11支持 2021-06-16 23:33:01 +08:00
疯狂的狮子li 0d9fb68a04 update 更新 自定义主键案例 2021-06-16 19:40:59 +08:00
疯狂的狮子li c3636f1527 update 更新 feign demo 更清晰的用法 2021-06-16 19:24:44 +08:00
疯狂的狮子li a0392865f4 update 更新 feign demo 更清晰的用法 2021-06-16 19:24:26 +08:00
疯狂的狮子li 9f856e9ec2 update 回滚 Mybatis-Plus 到 3.4.3 版本(3.4.3.1 官方代码有bug https://gitee.com/baomidou/mybatis-plus/issues/I3VS3L) 2021-06-16 18:44:06 +08:00
疯狂的狮子li f9967cca4c fix 移除 Long 序列化为 String 配置 改为由用户自行添加注解 2021-06-16 17:41:48 +08:00
疯狂的狮子li a1717eac6d update 升级 hutool 5.7.1 适配工具类 2021-06-16 15:39:19 +08:00
疯狂的狮子li bb2ade75a8 update 升级 hutool 5.7.1 适配工具类 2021-06-16 15:38:44 +08:00
疯狂的狮子li 7bdce848e7 update 升级 hutool 5.7.1 适配工具类 2021-06-16 15:36:45 +08:00
疯狂的狮子li feb7c85d57 update mybatis-plus 升级 3.4.3.1 fixbug 版本 2021-06-16 13:29:33 +08:00
疯狂的狮子li 2cdc12055d fix 修复 JsonUtils 参数为空报错 2021-06-16 13:15:18 +08:00
疯狂的狮子li 639816369a remove 移除无用swagger配置 2021-06-16 12:58:10 +08:00
RuoYi 3e90fd010d 升级commons.fileupload到最新版本v1.4 2021-06-16 09:53:00 +08:00
RuoYi 462862ba65 升级commons.io到最新版本v2.10.0 2021-06-16 09:52:38 +08:00
RuoYi 7601a72faf 升级element-ui到最新版本2.15.2 2021-06-15 10:26:19 +08:00
RuoYi 7ab14ff293 定时任务屏蔽rmi远程调用 2021-06-15 10:26:02 +08:00
疯狂的狮子li d98faaffee update 移除 fastjson 增加 jackson 工具类 重写相关业务 2021-06-13 15:39:35 +08:00
疯狂的狮子li c2cf7ba16a update 优化 jackson 序列化配置 2021-06-13 15:38:40 +08:00
疯狂的狮子li 5311937b69 update 增加 jackson 配置 默认序列化时间格式 2021-06-12 23:41:56 +08:00
疯狂的狮子li a044519b21 update 移除 基础类 字段生成判断 2021-06-12 23:40:34 +08:00
疯狂的狮子li 8349e631d2 update 优化 异步工厂重写 使用 spring 异步处理 2021-06-12 20:14:50 +08:00
疯狂的狮子li b3541e9758 update 优化 使用 hutool 替换 ruoyi 自带工具类 解决部分方法过期与高版本JDK不兼容问题 2021-06-12 20:13:35 +08:00
mingli 97a0c890bf update 增加MP自定义id 序列化兼容 2021-06-11 17:42:33 +08:00
RuoYi 200106df39 升级oshi到最新版本v5.7.4 2021-06-11 10:29:14 +08:00
疯狂的狮子li 83718c61cd 发布 v2.3.2 2021-06-11 09:29:21 +08:00
疯狂的狮子li a51f7d52ed Merge remote-tracking branch 'origin/dev' into dev 2021-06-11 09:23:41 +08:00
疯狂的狮子li bf3a88ff1a 发版 v2.3.2 2021-06-11 09:23:34 +08:00
RuoYi ea66e20282 修复用户搜索分页变量错误 2021-06-10 22:36:22 +08:00
疯狂的狮子Li 346e80839f update spring-cache 与 MP二级缓存相关 2021-06-10 22:32:40 +08:00
RuoYi a209b39552 分页组件新增pagerCount属性 2021-06-10 22:29:13 +08:00
疯狂的狮子li 24da85fea3 update MybatisPlus整合Redis二级缓存 2021-06-10 21:18:58 +08:00
疯狂的狮子li 57df2690da update spring-cache 整合 redisson 2021-06-10 20:23:15 +08:00
疯狂的狮子li 35f607f9a5 remove 删除无用注释 2021-06-10 18:23:59 +08:00
RuoYi 557672ba9f 系统布局配置支持动态标题开关 2021-06-10 18:05:27 +08:00
疯狂的狮子li 427430fc48 update 补全注释 更新文档 2021-06-10 17:11:44 +08:00
疯狂的狮子li 48d9fc10ea update 增加分页对象注释 2021-06-10 16:21:44 +08:00
疯狂的狮子li c5c8afe147 update 还原错误提交 2021-06-10 15:44:14 +08:00
疯狂的狮子li b348b766fc Merge remote-tracking branch 'origin/dev' into dev 2021-06-10 15:43:28 +08:00
疯狂的狮子li b561f7d906 remove 移除无用配置文件 2021-06-10 15:43:20 +08:00
疯狂的狮子li 9d05d2bac5 remove 移除无用配置文件 2021-06-10 15:42:46 +08:00
RuoYi a3116cd27d 优化部门父级启用状态 2021-06-10 15:34:38 +08:00
疯狂的狮子li f6ccfe6ed3 update 独立 CountDownLatch 方法 2021-06-10 14:04:41 +08:00
疯狂的狮子li 1bf9dd1217 update 优化redis锁工具代码结构 2021-06-10 13:32:50 +08:00
疯狂的狮子li 524683eabd update swagger 升级为 3.0.0 使用 OAS_30 协议 2021-06-10 09:57:34 +08:00
疯狂的狮子li 2103731f10 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	pom.xml
	ruoyi-admin/pom.xml
	ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-ui/src/layout/components/Navbar.vue
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/monitor/logininfor/index.vue
	ruoyi-ui/src/views/monitor/online/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/system/config/index.vue
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/system/notice/index.vue
	ruoyi-ui/src/views/system/post/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/tool/gen/index.vue
	ruoyi-ui/src/views/tool/swagger/index.vue
2021-06-10 09:44:56 +08:00
疯狂的狮子li ceeac476ec update 优化 代码生成器 增加表单防重注解 2021-06-10 00:04:19 +08:00
疯狂的狮子li a6ba7d9093 update 优化pr redis工具代码 2021-06-09 23:31:47 +08:00
sxq f45b50a796 update redis锁工具类编写 2021-06-09 23:30:46 +08:00
RuoYi 2ace3257f9 升级swagger到最新版本v3.0.0 2021-06-09 20:07:36 +08:00
RuoYi c16ee7fc2c 升级swagger到最新版本v3.0.0 2021-06-08 16:34:36 +08:00
RuoYi fd33fe869d 修复导出角色数据范围翻译缺少仅本人 2021-06-08 16:27:24 +08:00
疯狂的狮子li 9a792e601e fix 修复相对路径上传异常问题 2021-06-04 18:12:09 +08:00
疯狂的狮子li 00d024ff86 fix 修复相对路径上传异常问题 2021-06-04 18:11:46 +08:00
疯狂的狮子li 428a6ed71b update 优化 锁切面代码 key到常量类 2021-06-04 16:49:33 +08:00
疯狂的狮子li f087b37cb3 update 优化 锁切面代码 key到常量类 2021-06-04 16:46:28 +08:00
疯狂的狮子Li 2027dae30b !49 同步dev分支
Merge pull request !49 from 疯狂的狮子Li/dev
2021-06-04 16:12:43 +08:00
疯狂的狮子li 450c6759eb 发布 2.3.1 2021-06-04 16:11:17 +08:00
疯狂的狮子li dcf125a08a update 优化 redis锁pr 代码 2021-06-04 16:09:43 +08:00
sxq ad6386a618 redis分布式锁(基于注解形势)。 2021-06-04 15:00:56 +08:00
疯狂的狮子li 6fc141497a update 优化分页默认值 默认查全部 2021-06-04 10:48:35 +08:00
疯狂的狮子li d674d934e7 fix 修复上传路径 win 打包编译为 win 路径, linux 报错问题 2021-06-04 09:46:28 +08:00
疯狂的狮子li 85bf5fbc9b fix 修复主键列表显示 重复生成bug 2021-06-03 17:33:48 +08:00
RuoYi b7446f8d0f 富文本工具栏配置视频 2021-06-03 13:26:09 +08:00
RuoYi 19924cd184 修复关闭confirm提示框控制台报错问题 2021-06-03 13:24:29 +08:00
疯狂的狮子li 77a7cac830 同步 dev 2021-06-03 10:11:07 +08:00
疯狂的狮子li 01c34b837d Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-ui/src/views/system/menu/index.vue
2021-06-03 09:46:33 +08:00
疯狂的狮子li 5cc9b34132 update 更新文档 增加 star MIT IDEA 等小标签 2021-06-02 23:02:51 +08:00
疯狂的狮子li a5975a489c update 更新文档 增加 star MIT IDEA 等小标签 2021-06-02 22:55:56 +08:00
疯狂的狮子li edaf57148a update 更新开源协议软件名 2021-06-02 22:55:02 +08:00
RuoYi 85470a1549 修复表单构建选择下拉选择控制台报错问题 2021-06-02 20:43:34 +08:00
若依 2a604c0548 !237 同步菜单新增、修改界面“功能权限”maxlength为100(保持与数据库字段长度一致),避免因超过50后不能录入问题
Merge pull request !237 from 老李/origin
2021-06-02 20:40:09 +08:00
疯狂的狮子Li 2ab7c7feae !47 【优化】代码生成器新增、修改页面的按钮动作loading从页面loading到按钮loading
Merge pull request !47 from 狂盗一枝梅/kdyzm
2021-06-02 18:20:06 +08:00
kdyzm 6b789e2eb0 优化新增、修改页面的按钮动作loading从页面loading到按钮loading 2021-06-02 18:13:34 +08:00
疯狂的狮子li 329c95196e update 更新测试案例 2021-06-02 17:15:20 +08:00
疯狂的狮子Li 375a7f7b4c !45 【优化】为代码生成器生成的前端代码添加loading;删除方法回调函数变更为箭头表达式
Merge pull request !45 from 狂盗一枝梅/kdyzm
2021-06-02 17:10:40 +08:00
kdyzm 9590de2c19 优化树生成的代码生成:增加loading、修改删除按钮的回调函数为箭头函数 2021-06-02 17:08:00 +08:00
kdyzm 430addf520 【优化】为代码生成器生成的前端代码添加loading;删除方法回调函数变更为箭头表达式 2021-06-02 16:40:58 +08:00
sxq 0fe064b8a2 修复reddison不能批量删除的bug。 2021-06-02 15:14:04 +08:00
疯狂的狮子li 2ee2e4505a fix 修复配置文件书写错误 2021-06-02 14:28:40 +08:00
疯狂的狮子li 7c20d6e28c update 优化代码书写格式 使用工具类 2021-06-02 12:47:54 +08:00
疯狂的狮子li a961fff69d Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java
2021-06-02 12:42:18 +08:00
RuoYi b7f3c68eca 优化图片工具类读取文件 2021-06-02 11:45:40 +08:00
RuoYi edd2981076 调整用户测试接口swagger注解 2021-06-02 11:45:30 +08:00
疯狂的狮子li 5c40c4b958 update 文档增加 Oracle 分支路径配置 2021-06-02 10:09:09 +08:00
疯狂的狮子li a287599c8f update 增加redis空密码兼容性 2021-06-02 10:09:09 +08:00
疯狂的狮子li 0bc71e28a1 update 优化代码书写格式 去除警告 2021-06-02 10:09:08 +08:00
疯狂的狮子li 45fe77ce4a update 文档增加 Oracle 分支路径配置 2021-06-02 09:49:16 +08:00
疯狂的狮子li a4edce5a93 Merge remote-tracking branch 'origin/dev' into dev 2021-06-02 09:41:19 +08:00
疯狂的狮子li 83ba79dca2 update 增加redis空密码兼容性 2021-06-02 09:41:12 +08:00
疯狂的狮子li d1351503a8 update 优化代码书写格式 去除警告 2021-06-01 23:14:42 +08:00
疯狂的狮子li d9dd76f2ae 发布 v2.3.0 2021-06-01 10:54:59 +08:00
疯狂的狮子li 54d97b53de 发布 v2.3.0 2021-06-01 10:54:23 +08:00
疯狂的狮子li 7437092765 Merge remote-tracking branch 'origin/master' 2021-06-01 10:34:09 +08:00
疯狂的狮子li c90ca8c2a6 发布 v2.3.0 2021-06-01 10:33:57 +08:00
疯狂的狮子li d815317d7c 发布 v2.3.0 2021-06-01 10:21:56 +08:00
疯狂的狮子li 7bbeea0b81 update 更新文档 增加 redisson 内容 2021-05-31 23:38:30 +08:00
疯狂的狮子li 99c4692a0d update 升级 luttuce 为 redisson 性能更强 工具更全 2021-05-31 23:21:14 +08:00
疯狂的狮子li f3aaa7ea7a Merge remote-tracking branch 'origin/dev' into dev 2021-05-31 17:44:03 +08:00
疯狂的狮子Li 38c3c878e1 !44 修改批量接口,改用mybatis原生foreach优化性能
Merge pull request !44 from Yjoioooo/insert-optimization
2021-05-31 17:43:53 +08:00
朱杰 90063ad03c update 修改框架中批量接口,改为原生mybatis执行foreach,改善性能 2021-05-31 17:37:34 +08:00
朱杰 8ba346faa6 update 修改框架中批量接口,改为原生mybatis执行foreach,改善性能 2021-05-31 17:23:13 +08:00
疯狂的狮子li 079dc12fe1 update 优化 system 模块 删除性能 2021-05-31 16:55:26 +08:00
疯狂的狮子li d7359122b4 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
	ry.sh
2021-05-31 13:21:29 +08:00
RuoYi c105a63c8b 添加bat脚本执行应用 2021-05-31 12:16:27 +08:00
xx2yy 01fef0b9e1 同步菜单新增、修改界面“功能权限”maxlength为100(保持与数据库字段长度一致),避免因超过50后不能录入问题 2021-05-31 10:31:50 +08:00
疯狂的狮子li 7b7f098dee update 文档更新数据权限使用 2021-05-30 02:25:56 +08:00
疯狂的狮子li a02aeb468e add 增加demo模块 树表演示案例(包含数据权限) 2021-05-30 02:25:14 +08:00
疯狂的狮子li a3a682eeb1 add 增加demo模块 单表演示案例(包含数据权限) 2021-05-30 02:24:10 +08:00
疯狂的狮子li 456f31901c add 增加测试数据sql文件 2021-05-30 02:22:19 +08:00
疯狂的狮子li 6d5a0d8a7e update 完美修复 数据权限功能(支持单表多表过滤) 2021-05-30 02:20:21 +08:00
疯狂的狮子li 6192d42564 update 优化代码生成模板 2021-05-30 02:18:34 +08:00
疯狂的狮子li 8cc2aee13e fix 修复单表数据权限问题 2021-05-29 21:54:20 +08:00
疯狂的狮子li 0860934888 update 优化数据权限sql 解决MP apply注入附带 AND 语法问题 2021-05-29 21:52:15 +08:00
疯狂的狮子Li d2b077af35 fix 修复数据权限编写错误 2021-05-29 21:48:56 +08:00
疯狂的狮子Li 4bca89f072 fix 修复数据权限编写错误 2021-05-29 21:48:26 +08:00
疯狂的狮子li fcfc5c85c7 update 还原数据权限修改 2021-05-29 19:51:08 +08:00
疯狂的狮子li 06513446a0 update 还原数据权限修改 2021-05-29 19:44:33 +08:00
疯狂的狮子li 2d53896f92 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
#	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
2021-05-29 19:17:58 +08:00
疯狂的狮子li e523764b0f 发布 2.2.1 2021-05-29 19:14:45 +08:00
疯狂的狮子li 8e7d9e1bc7 Merge remote-tracking branch 'origin/master' 2021-05-29 19:03:51 +08:00
疯狂的狮子li 38d2a97582 update 优化参数&字典缓存操作 2021-05-29 19:03:31 +08:00
疯狂的狮子li 01d2b6ded9 update 优化dataScope参数防止注入 2021-05-29 19:03:11 +08:00
疯狂的狮子li 080770a493 update 文档增加演示图例 2021-05-29 19:03:04 +08:00
疯狂的狮子li 3aaa219d5e fix 修复sql符号错误 2021-05-29 19:03:03 +08:00
疯狂的狮子li df8a6bbaa2 remove 删除提交错误文件 2021-05-29 19:03:02 +08:00
疯狂的狮子li 08d82bb12f 配置文件错误 2021-05-29 19:03:01 +08:00
疯狂的狮子li 57e071fe6b 发布 2.2.1 2021-05-29 18:57:56 +08:00
疯狂的狮子li 8d761fa60c update 优化数据权限sql 解决MP apply注入附带 AND 语法问题 2021-05-29 18:54:35 +08:00
疯狂的狮子li b7bd67b4cb update 优化数据权限sql 解决MP apply注入附带 AND 语法问题 2021-05-29 18:41:32 +08:00
疯狂的狮子li ead1136e31 add 增加 security 权限框架 @Async 异步注解配置 2021-05-28 14:24:45 +08:00
疯狂的狮子li 3d54400163 update 增加修改包名文档 2021-05-28 11:08:51 +08:00
疯狂的狮子li 7779cbca4d update 优化参数&字典缓存操作 2021-05-28 10:30:11 +08:00
疯狂的狮子li 8d6c9e116d Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
2021-05-28 10:07:48 +08:00
疯狂的狮子li d0b2166525 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
	ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
	ruoyi-ui/src/api/system/config.js
	ruoyi-ui/src/api/system/dict/type.js
	ruoyi-ui/src/views/system/config/index.vue
	ruoyi-ui/src/views/system/dict/index.vue
2021-05-28 10:07:15 +08:00
疯狂的狮子li b4f9d3a8f2 update 优化dataScope参数防止注入 2021-05-27 22:06:36 +08:00
RuoYi af9cfb40a4 优化参数&字典缓存操作 2021-05-27 17:38:44 +08:00
RuoYi 6fa3bfe051 修复两处存在SQL注入漏洞问题 2021-05-27 17:38:27 +08:00
疯狂的狮子li 454a07b775 update 文档增加演示图例 2021-05-26 16:45:17 +08:00
疯狂的狮子li 8a6bc41938 update 文档增加演示图例 2021-05-26 16:44:59 +08:00
疯狂的狮子li f793ee395d fix 修复sql符号错误 2021-05-26 13:00:48 +08:00
疯狂的狮子li d2f0ea6fa0 fix 修复sql符号错误 2021-05-26 09:23:56 +08:00
疯狂的狮子li c94756f8a2 remove 删除提交错误文件 2021-05-25 14:33:00 +08:00
疯狂的狮子li a42c1e4711 remove 删除提交错误文件 2021-05-25 14:32:41 +08:00
疯狂的狮子li 25264faf37 配置文件错误 2021-05-25 14:28:58 +08:00
疯狂的狮子li 380b4e5f3a 配置文件错误 2021-05-25 14:28:38 +08:00
疯狂的狮子li 9bd78a8c22 !41 发布 v2.2.0
Merge pull request !41 from 疯狂的狮子li/dev
2021-05-25 14:18:21 +08:00
疯狂的狮子li a570589dcc 发布 v2.2.0 2021-05-25 14:11:32 +08:00
疯狂的狮子li 2885ced2c7 add 增加验证码开关 2021-05-25 14:02:50 +08:00
朱杰 5dc873209e add 增加验证码开关 2021-05-25 14:02:34 +08:00
疯狂的狮子li 3131b7ea9d fix redis反序列化异常问题 2021-05-25 13:40:18 +08:00
疯狂的狮子li ca903ebd1f update 更新捐献二维码 2021-05-25 10:32:19 +08:00
疯狂的狮子li a2ca46004b update 更新捐献码 2021-05-25 10:17:43 +08:00
疯狂的狮子li 5795958a18 update 同步升级 ruoyi-vue 3.5.0 2021-05-25 10:14:18 +08:00
疯狂的狮子li 6c195af2a3 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	pom.xml
	ruoyi-admin/pom.xml
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-common/pom.xml
	ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/ExceptionUtil.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/IdUtils.java
	ruoyi-framework/pom.xml
	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
	ruoyi-generator/pom.xml
	ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-quartz/pom.xml
	ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java
	ruoyi-system/pom.xml
	ruoyi-ui/package.json
	ruoyi-ui/public/index.html
	ruoyi-ui/src/views/index.vue
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/monitor/logininfor/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/system/config/index.vue
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/notice/index.vue
	ruoyi-ui/src/views/system/post/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
2021-05-25 10:00:36 +08:00
RuoYi 5e64a93d11 若依 3.5.0 2021-05-25 09:37:55 +08:00
疯狂的狮子li caa81d1f4d Merge remote-tracking branch 'origin/dev' into dev 2021-05-24 16:12:46 +08:00
疯狂的狮子li 5f584e683a update redis序列化修改为使用jackson 2021-05-24 16:12:40 +08:00
RuoYi 4aabf5d8be Redis设置HashKey序列化 2021-05-24 15:10:55 +08:00
RuoYi cf6254a8d5 用户登录后记录最后登录IP&时间 2021-05-24 14:21:29 +08:00
RuoYi 883cff5de9 新增IE浏览器版本过低提示页面 2021-05-24 14:15:41 +08:00
RuoYi 7e79c4f249 生成vue模板导出按钮点击后添加遮罩 2021-05-24 11:34:03 +08:00
若依 504638eb41 !234 【轻量级 PR】:删去两处冗余代码
Merge pull request !234 from xivLi/master
2021-05-24 11:30:21 +08:00
RuoYi 2adac4a899 升级fastjson到最新版1.2.76 2021-05-24 11:25:17 +08:00
RuoYi 56a943bf48 升级druid到最新版本v1.2.6 2021-05-24 11:24:54 +08:00
RuoYi 77ebca264a 修复请求形参未传值记录日志异常问题 2021-05-23 19:22:30 +08:00
RuoYi 7b94ae3a9a xss校验json条件优化 2021-05-23 19:20:36 +08:00
若依 bd1edc6dcc !233 修正方法名单词拼写错误
Merge pull request !233 from lyqwer/N/A
2021-05-23 17:15:18 +08:00
若依 09d166e97d !231 修正注释
Merge pull request !231 from 刘立伟/N/A
2021-05-23 17:14:52 +08:00
疯狂的狮子li a272ea07a9 !38 修改bo代码生成器,修改无法更新代码生成器是否必填为否问题
Merge pull request !38 from Yjoioooo/master
2021-05-22 23:40:26 +08:00
朱杰 69dd3ab639 update 修改bo加入判断是否设置必填再加载必填注解 2021-05-22 23:30:11 +08:00
朱杰 798ffd9065 fix 修复代码生成器中表字段取消必填无法更新问题 2021-05-22 23:29:15 +08:00
xivLi f3e5d908d6 quartz模块下 domain包中的 SysJob类不需要实现Serializable接口 2021-05-22 16:05:12 +08:00
xivLi 9651a7d7fc 删去utils.uuid下 IdUtils类中 多余的import(同包下的UUID类) 2021-05-22 15:52:19 +08:00
疯狂的狮子li 1d38d51ac1 发布 2.1.2 2021-05-21 17:58:04 +08:00
疯狂的狮子li f80b8f0d42 update springboot 升级 2.3.11
update mybatis-plus 升级 3.4.3 分页Plus对象适配更新
2021-05-21 17:58:03 +08:00
疯狂的狮子li d0dbe49bfd update 增加请求前缀 2021-05-21 17:58:02 +08:00
疯狂的狮子li 39a0e05f87 update 请求响应对象 与 分页对象 结构修改 适配接口文档配置 2021-05-21 17:58:01 +08:00
疯狂的狮子li 34e7f20f24 update 验证码生成更新为无符号整数计算 2021-05-21 17:58:01 +08:00
疯狂的狮子li dc7eeaa45d 发布 2.1.2 2021-05-21 17:57:13 +08:00
lyqwer b2914cbcb1 修正方法名单词拼写错误 2021-05-21 17:24:48 +08:00
疯狂的狮子li 97a237bbdc update springboot 升级 2.3.11
update mybatis-plus 升级 3.4.3 分页Plus对象适配更新
2021-05-21 11:50:47 +08:00
疯狂的狮子li 3d25dfbebe update 增加请求前缀 2021-05-20 17:00:18 +08:00
疯狂的狮子li 7076deb2b6 update 请求响应对象 与 分页对象 结构修改 适配接口文档配置 2021-05-20 13:23:12 +08:00
疯狂的狮子li db18050b86 update 验证码生成更新为无符号整数计算 2021-05-19 22:57:34 +08:00
疯狂的狮子li 8c744e13bc 发布 v2.1.1 2021-05-18 11:38:18 +08:00
疯狂的狮子li eb12d7bd73 fix 修复swagger开关无法控制关闭问题 2021-05-18 11:38:17 +08:00
疯狂的狮子li 5e32b5f0bf update 配置统一提取为 properties 配置类 2021-05-18 11:38:16 +08:00
疯狂的狮子li 0fc1f4e10e update admin 实时监控日志 改为保留一天 2021-05-18 11:38:16 +08:00
疯狂的狮子li 3b79eff2f1 fix maven install 异常 2021-05-18 11:38:15 +08:00
疯狂的狮子li 92a54a5320 update 删除过期方法 2021-05-18 11:38:14 +08:00
疯狂的狮子li 65ca0f2554 update 修正更新说明错误 2021-05-18 11:38:14 +08:00
疯狂的狮子li 72de8f57a7 发布 v2.1.1 2021-05-18 11:37:24 +08:00
刘立伟 d0a4d6b111 修正注释 2021-05-18 10:21:48 +08:00
疯狂的狮子li c4eb641d9c fix 修复swagger开关无法控制关闭问题 2021-05-17 16:36:07 +08:00
RuoYi b431703262 导出按钮点击之后添加遮罩 2021-05-17 15:37:58 +08:00
疯狂的狮子li 2ebcffb22e update 配置统一提取为 properties 配置类 2021-05-17 13:39:59 +08:00
疯狂的狮子li 89fa1dff09 update admin 实时监控日志 改为保留一天 2021-05-16 10:42:47 +08:00
疯狂的狮子li 5bc6057050 fix maven install 异常 2021-05-16 10:29:13 +08:00
疯狂的狮子li 87164d574e update 删除过期方法 2021-05-16 09:25:19 +08:00
疯狂的狮子li b366f8b053 update 修正更新说明错误 2021-05-15 14:55:21 +08:00
疯狂的狮子li be6a9ba72c 发布 v2.1.0 2021-05-15 14:34:57 +08:00
疯狂的狮子li 3e08a8e1c1 update 通用Service接口 增加自定义vo转换函数 2021-05-15 14:34:56 +08:00
疯狂的狮子li 3c57f468c6 update swagger升级3.0.2 2021-05-15 14:34:55 +08:00
疯狂的狮子li 84c1841e85 remove 移除ruoyi自带服务监控(Admin已全部包含) 2021-05-15 14:34:55 +08:00
疯狂的狮子li a7833a3b72 remove 移除ruoyi自带服务监控(Admin已全部包含) 2021-05-15 14:34:54 +08:00
疯狂的狮子li df6f3e658a update 增强分页工具兼容性 2021-05-15 14:34:53 +08:00
疯狂的狮子li b885e1eeff 发布 v2.1.0 2021-05-15 14:33:53 +08:00
疯狂的狮子li 69b9a4db2b update 通用Service接口 增加自定义vo转换函数 2021-05-15 14:27:29 +08:00
疯狂的狮子li ee064fa84c update swagger升级3.0.2 2021-05-15 14:25:48 +08:00
疯狂的狮子li 9d94d0fce9 remove 移除ruoyi自带服务监控(Admin已全部包含) 2021-05-15 14:25:07 +08:00
疯狂的狮子li b5064021e6 remove 移除ruoyi自带服务监控(Admin已全部包含) 2021-05-15 14:23:43 +08:00
疯狂的狮子li 31db658929 update 增强分页工具兼容性 2021-05-15 11:32:05 +08:00
疯狂的狮子li 322d9d66a8 !36 同步dev分支
Merge pull request !36 from 疯狂的狮子li/dev
2021-05-14 21:43:57 +08:00
疯狂的狮子li 488cce767f update 打包插件更新 2.3.10 2021-05-14 21:43:28 +08:00
疯狂的狮子li 2316379160 !35 同步dev分支
Merge pull request !35 from 疯狂的狮子li/dev
2021-05-14 21:40:56 +08:00
疯狂的狮子li d459bb61dc update 打包插件更新 2.3.10 2021-05-14 21:38:41 +08:00
疯狂的狮子li 590f4e07af !34 同步dev分支
Merge pull request !34 from 疯狂的狮子li/dev
2021-05-14 21:12:59 +08:00
疯狂的狮子li e071b4315a 正式发布 v2.0.0 2021-05-14 21:07:20 +08:00
疯狂的狮子li 869e975ed1 update springboot 升级 2.3.10 依赖全面升级适配 2021-05-14 17:03:19 +08:00
疯狂的狮子li dab99405c5 update springboot 升级 2.3.10 依赖全面升级适配 2021-05-14 16:58:09 +08:00
疯狂的狮子li d2c745d3fd add 代码生成器 增加校验注解 2021-05-14 15:12:40 +08:00
疯狂的狮子li 6067cb1797 add 增加增强Mapper 重写业务适配 2021-05-14 13:01:18 +08:00
疯狂的狮子li 51efddcfb0 update 重写文档介绍 2021-05-14 11:19:50 +08:00
疯狂的狮子li 0c7e52d9c3 update 代码生成器修改为MP分页(完成) 2021-05-14 10:44:04 +08:00
疯狂的狮子li 81b50b9b3c update 代码生成器修改为MP分页(未完成) 2021-05-13 23:52:36 +08:00
疯狂的狮子li 7c26e516c9 update 更新数据权限相关注意事项 2021-05-13 22:45:26 +08:00
疯狂的狮子li 9c95c93630 fix 修复系统配置表 sql符号错误问题 2021-05-13 22:44:30 +08:00
疯狂的狮子li 7f73591742 fix 修复代码生成 数据权限问题 2021-05-13 22:43:14 +08:00
疯狂的狮子li f01bb5966a update 使用 MP 分页工具 重构业务 2021-05-13 21:25:51 +08:00
疯狂的狮子li b0417338cc add 增加升级版通用Service IServicePlus 2021-05-13 21:24:47 +08:00
疯狂的狮子li 20e82d708b remove 移除 pagehelper 分页工具 2021-05-13 21:23:50 +08:00
疯狂的狮子li 9f5a03edcd add 增加分页工具 2021-05-13 21:22:51 +08:00
疯狂的狮子li a34fef3478 !33 版本更新 v1.0.2
Merge pull request !33 from 疯狂的狮子li/dev
2021-05-13 09:21:08 +08:00
疯狂的狮子li 685504e1d0 版本更新 v1.0.2 2021-05-13 09:20:02 +08:00
疯狂的狮子li fddc128156 update 更新整合打包文档 重新排版 2021-05-13 09:17:12 +08:00
疯狂的狮子li 9159e2ed22 fix vue与boot整合打包与admin页面路由冲突 2021-05-13 09:16:28 +08:00
疯狂的狮子li 15fdb9b218 !32 版本更新 v1.0.1
Merge pull request !32 from 疯狂的狮子li/dev
2021-05-11 17:37:27 +08:00
疯狂的狮子li 3b73bbe0ac 版本更新 v1.0.1 2021-05-11 17:36:52 +08:00
疯狂的狮子li c33c3de43a Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	README.md
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
	ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
	ruoyi-ui/src/assets/styles/element-ui.scss
	ruoyi-ui/src/views/index.vue
2021-05-11 17:14:53 +08:00
RuoYi 99726be9ac 修正导入表权限标识 2021-05-11 14:26:20 +08:00
RuoYi 32f333a00e 删除操作日志记录日志 2021-05-11 14:25:39 +08:00
RuoYi be5c19b764 树级结构更新子节点使用replaceFirst 2021-05-11 14:25:25 +08:00
RuoYi dd384e4a31 上传媒体类型添加视频格式 2021-05-11 14:25:08 +08:00
若依 bdde195e2b !225 【bug修复】文件上传时出现java.nio.file.FileAlreadyExistsException
Merge pull request !225 from CANYON/master
2021-05-11 14:19:53 +08:00
疯狂的狮子li dafdb43c84 update 配置转移到 yml 文件 统一管理 2021-05-11 10:02:32 +08:00
疯狂的狮子li 961c60dd1a update 更新banner 2021-05-10 23:53:15 +08:00
疯狂的狮子li e124de4b80 !31 同步dev分支
Merge pull request !31 from 疯狂的狮子li/dev
2021-05-10 15:35:09 +08:00
疯狂的狮子li 98624e66e5 正式发布 1.0.0 2021-05-10 15:34:17 +08:00
疯狂的狮子li 5343b03493 update 更新作者二维码 2021-05-08 23:57:09 +08:00
疯狂的狮子li 60895bf8d6 update 更新作者二维码 2021-05-08 23:54:52 +08:00
疯狂的狮子li d50e7a3d17 !30 同步dev分支
Merge pull request !30 from 疯狂的狮子li/dev
2021-05-08 23:39:50 +08:00
疯狂的狮子li a181c09786 fix 修复数据权限问题 2021-05-08 23:35:39 +08:00
疯狂的狮子li 7c8dd238de !29 同步dev分支
Merge pull request !29 from 疯狂的狮子li/dev
2021-05-08 17:08:21 +08:00
疯狂的狮子li 0b6952d0fe fix 日志时间sql符号转换问题 2021-05-08 17:05:18 +08:00
疯狂的狮子li 6ce4c93b3c fix 日志时间sql符号转换问题 2021-05-08 16:55:50 +08:00
libin 14ea071306 修复文件上传时java.nio.file.FileAlreadyExistsException 2021-05-08 15:31:16 +08:00
RuoYi 50034301ac 添加新群号:201396349 2021-05-06 20:40:25 +08:00
若依 85ed712c50 !222 update ruoyi-ui/src/assets/styles/element-ui.scss.
Merge pull request !222 from leizhuogogo/N/A
2021-05-06 20:39:36 +08:00
若依 f67d682345 !221 update ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java.
Merge pull request !221 from phper08/N/A
2021-05-06 20:39:26 +08:00
疯狂的狮子li 0656dc381d !28 同步dev分支
Merge pull request !28 from 疯狂的狮子li/dev
2021-05-06 17:52:14 +08:00
leizhuogogo 3f1427eef9 update ruoyi-ui/src/assets/styles/element-ui.scss. 2021-05-06 17:50:28 +08:00
疯狂的狮子li 882f65fdce update 项目地址项目名 2021-05-06 17:44:46 +08:00
phper08 7d0f5e94ef update ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java. 2021-05-03 13:18:33 +08:00
疯狂的狮子li f1fccb7a66 !27 同步dev分支
Merge pull request !27 from 疯狂的狮子li/dev
2021-04-28 15:59:28 +08:00
疯狂的狮子li 73db99398f fix 部门权限问题 2021-04-28 15:58:08 +08:00
疯狂的狮子li 0af493ad67 !26 同步dev分支
Merge pull request !26 from 疯狂的狮子li/dev
2021-04-28 11:53:09 +08:00
疯狂的狮子li bc182f1392 fix 日志时间问题 2021-04-28 11:52:21 +08:00
疯狂的狮子li 91c6ae307d Merge remote-tracking branch 'origin/master' 2021-04-25 10:40:15 +08:00
疯狂的狮子li aabae8eb01 update 修改MP验证策略 NOT_NULL -> NOT_EMPTY 2021-04-25 10:40:09 +08:00
疯狂的狮子li e3ea16d020 update 修改MP验证策略 NOT_NULL -> NOT_EMPTY 2021-04-25 10:38:20 +08:00
疯狂的狮子li ad991c9d8e !25 同步 ruoyi
Merge pull request !25 from 疯狂的狮子li/dev
2021-04-25 09:46:06 +08:00
疯狂的狮子li c0e5e9cb24 update 同步ruoyi 2021-04-25 09:45:45 +08:00
疯狂的狮子li ae48c160b0 !24 修复问题
Merge pull request !24 from 疯狂的狮子li/dev
2021-04-25 09:39:52 +08:00
疯狂的狮子li 4e723f4936 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
2021-04-25 09:27:07 +08:00
疯狂的狮子li 251547e79e update 重写MP注入器 2021-04-25 09:19:38 +08:00
疯狂的狮子li b222c4215b !23 同步dev
Merge pull request !23 from 疯狂的狮子li/dev
2021-04-23 16:00:06 +08:00
疯狂的狮子li 734073019f update 屏蔽用户密码返回 2021-04-23 15:59:46 +08:00
疯狂的狮子li 9a26a3c4e8 !22 同步 master
Merge pull request !22 from 疯狂的狮子li/master
2021-04-22 21:14:48 +08:00
疯狂的狮子li 1bef814c51 update 补全实体类 注入注解 2021-04-22 21:07:18 +08:00
疯狂的狮子li 6dc791c34f !21 同步dev分支
Merge pull request !21 from 疯狂的狮子li/dev
2021-04-22 15:42:00 +08:00
疯狂的狮子li 5fcef39a2e add 集成 spring-boot-admin 全方位监控 2021-04-22 15:04:35 +08:00
疯狂的狮子li 7ae9f21f82 !20 fix 问题
Merge pull request !20 from 疯狂的狮子li/dev
2021-04-22 10:08:12 +08:00
疯狂的狮子li 5b4e9ef4db Merge branch 'master' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus into dev 2021-04-22 09:50:03 +08:00
疯狂的狮子li 39e9df47bc !19 修改添加用户获取到密码为null
Merge pull request !19 from 再见亦是路人/master
2021-04-22 09:49:38 +08:00
疯狂的狮子li 9173f9c9cb fix feign熔断问题 2021-04-22 09:32:28 +08:00
RuoYi 62081aebb9 修复开启TopNav后,左侧打开外链问题 2021-04-21 16:34:44 +08:00
再见亦是路人 a4b71278c0 修改用户密码获取失败 2021-04-21 15:56:00 +08:00
RuoYi 3f07632cd4 修复一级菜单包屑显示重复问题 2021-04-21 15:14:36 +08:00
Ricky 2c94587263 优化ExcelUtil空值处理 2021-04-21 09:53:14 +08:00
疯狂的狮子li db43f678d8 !18 fix 代码生成器编辑问题
Merge pull request !18 from 疯狂的狮子li/dev
2021-04-19 19:02:51 +08:00
疯狂的狮子li a4f2aa1981 fix 代码生成器编辑问题 2021-04-19 19:01:26 +08:00
疯狂的狮子li 78149e19dc !17 同步 ruoyi
Merge pull request !17 from 疯狂的狮子li/dev
2021-04-19 17:54:33 +08:00
疯狂的狮子li 046b0bc98a 同步 ruoyi 2021-04-19 17:44:22 +08:00
疯狂的狮子li 97873a7b2b Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	pom.xml
	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/components/ThemePicker/index.vue
	ruoyi-ui/src/layout/components/Settings/index.vue
	ruoyi-ui/src/store/modules/settings.js
2021-04-19 17:43:32 +08:00
疯狂的狮子li f8633f8c4e fix Feign 熔断不生效 bug 2021-04-19 17:38:47 +08:00
RuoYi 2575c17f47 主题颜色保存配置 2021-04-19 16:59:56 +08:00
RuoYi b6f13c546b 过滤BindingResult对象,防止异常 2021-04-18 21:54:53 +08:00
RuoYi e60a69b670 兼容顶部栏一级菜单内部跳转 2021-04-18 18:33:13 +08:00
RuoYi cb18eec802 修正模板字符编码 2021-04-18 15:45:49 +08:00
RuoYi bef080c60a 升级mybatis到最新版3.5.6 阻止远程代码执行漏洞 2021-04-18 15:45:37 +08:00
疯狂的狮子li ef27ee0a28 !15 同步 ruoyi
Merge pull request !15 from 疯狂的狮子li/dev
2021-04-16 11:36:47 +08:00
疯狂的狮子li bf5315d306 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev 2021-04-16 11:34:39 +08:00
疯狂的狮子li 9c7efa8e0e !14 fix 表名上传错误
Merge pull request !14 from 疯狂的狮子li/dev
2021-04-16 11:32:07 +08:00
疯狂的狮子li a1c44b4987 fix 表名上传错误 2021-04-16 11:30:51 +08:00
Ricky de73cf300b 优化树表代码生成模板 2021-04-15 10:39:09 +08:00
Ricky cbcee86d2c 优化树表代码生成模板 2021-04-15 10:37:22 +08:00
疯狂的狮子li 55f8624388 !13 同步dev分支
Merge pull request !13 from 疯狂的狮子li/dev
2021-04-14 14:38:29 +08:00
疯狂的狮子li 927777291e update 导出 Excel 工作表的名称修改 2021-04-14 14:36:27 +08:00
疯狂的狮子li 3fc3818231 update 完成所有原生功能使用 Mybatis-Plus 与 Lombok 重写 2021-04-14 13:27:27 +08:00
疯狂的狮子li f093da99ec Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
 Conflicts:
	ruoyi-admin/src/main/resources/application-prod.yml
	ruoyi-generator/src/main/resources/vm/java/controller.java.vm
	ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/assets/styles/sidebar.scss
	ruoyi-ui/src/layout/components/Navbar.vue
	ruoyi-ui/src/layout/components/Settings/index.vue
	ruoyi-ui/src/layout/components/TagsView/index.vue
	ruoyi-ui/src/settings.js
	ruoyi-ui/src/store/getters.js
	ruoyi-ui/src/store/modules/permission.js
	ruoyi-ui/src/store/modules/settings.js
	ruoyi-ui/src/store/modules/tagsView.js
	ruoyi-ui/src/views/monitor/druid/index.vue
2021-04-14 13:22:31 +08:00
疯狂的狮子li adeaa77864 update mp化 2021-04-14 12:01:26 +08:00
疯狂的狮子li 48d61a3cdf update mp化 2021-04-14 11:19:46 +08:00
RuoYi cc50224d90 固定顶部导航栏&窗口大小改变实时更新栏数 2021-04-14 11:01:16 +08:00
RuoYi ff09e1cf55 数据监控默认地址修改 2021-04-13 18:15:11 +08:00
疯狂的狮子li 876a06a9cd update mp化 2021-04-13 17:14:50 +08:00
疯狂的狮子li 20d40ea691 update mp化 2021-04-13 15:29:05 +08:00
RuoYi fe2ccbdc1b 优化代码生成导出模板名称 2021-04-13 14:49:42 +08:00
RuoYi c8df1f5e1f 布局设置支持保存&重置配置 2021-04-13 09:47:28 +08:00
RuoYi e71c00e6fa 富文本编辑器支持自定义上传地址 2021-04-13 09:38:32 +08:00
若依 dcb9839596 !209 导出 Excel 工作表的名称 由 ${businessName} 更改为 ${functionName}
Merge pull request !209 from lihy2021/N/A
2021-04-13 09:36:49 +08:00
若依 f13b6d92d2 !205 富文本编辑器自定义上传地址
Merge pull request !205 from hechieh/N/A
2021-04-13 09:36:42 +08:00
疯狂的狮子li d69d1fbfe8 update 更新任务调度模块 与 代码生成模块 MP lombok 化 2021-04-12 17:49:56 +08:00
疯狂的狮子li 323fe960bd update 更新基础包与核心包 lombok 化 2021-04-12 17:26:47 +08:00
疯狂的狮子li 938ca5c451 fix 补全缺包 2021-04-12 17:09:05 +08:00
疯狂的狮子li 4500db395f update ruoyi原生改为 MP lombok 格式
update SysConfig 模块代码
2021-04-12 17:02:55 +08:00
lihy2021 6595c68df1 导出 Excel 工作表的名称 由 ${businessName} 更改为 ${functionName} 2021-04-12 14:52:14 +08:00
Ricky 5a2a0c09b6 优化主子表代码生成 2021-04-12 13:26:54 +08:00
疯狂的狮子li d48946ab90 fix bo缺包问题 2021-04-12 10:34:50 +08:00
RuoYi 9aac65ff32 新增菜单导航显示风格TopNav(false为左侧导航菜单,true为顶部导航菜单) 2021-04-12 09:54:08 +08:00
RuoYi 5f2350569a 页签新增关闭右侧 2021-04-10 21:15:45 +08:00
hechieh ccf05b697d 富文本编辑器自定义上传地址 2021-04-10 17:08:49 +08:00
疯狂的狮子li 88841ac01f update Date参数接收Bo实体格式转换 2021-04-09 11:47:51 +08:00
RuoYi 6810243ab7 修复树表数据显示不全&加载慢问题 2021-04-09 08:31:13 +08:00
疯狂的狮子li 8b37eca241 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
	ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/utils/zipdownload.js
2021-04-08 17:12:13 +08:00
疯狂的狮子li 1d3a361a66 fix 字节转换 bug 2021-04-08 16:40:10 +08:00
疯狂的狮子li c862484f00 update 默认增加editBo主键生成 2021-04-08 16:29:35 +08:00
RuoYi b56b8846d9 修改主题后mini类型按钮无效问题 2021-04-08 13:54:48 +08:00
RuoYi 8e1e4cd8fe 通用下载完成后删除节点 2021-04-08 13:46:22 +08:00
若依 9fa5c79713 !200 update ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java.
Merge pull request !200 from yvan7123/N/A
2021-04-08 13:42:30 +08:00
若依 40a72c2b7e !199 规范命名、用户角色单个逻辑删除、去除多余代码
Merge pull request !199 from fuzui/some_problems
2021-04-08 13:40:28 +08:00
yvan7123 6fe9a358b7 update ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java. 2021-04-06 11:47:27 +08:00
疯狂的狮子li ccd48965a8 fix controller 接口路径问题 2021-04-04 20:01:36 +08:00
疯狂的狮子li b6472f3469 Merge branch 'master' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2021-04-04 11:27:42 +08:00
疯狂的狮子li 866c69e706 fix 代码生成器问题 2021-04-04 11:27:08 +08:00
疯狂的狮子li a50df84a72 fix 生成 remove 方法参数类型错误 2021-04-03 17:00:47 +08:00
wangze 9f6bc13e64 🔥 去除多余代码 2021-04-02 23:06:48 +08:00
疯狂的狮子li 6760942218 fix Page 路径导入 2021-04-02 23:05:44 +08:00
wangze ba5ab4b091 用户、角色单条删除时,使其逻辑删除 2021-04-02 22:49:19 +08:00
wangze 17407d0127 调整cache_repeat_key为驼峰格式 2021-04-02 22:40:15 +08:00
疯狂的狮子li b71e74927e add 添加单模块分支 2021-04-02 16:14:58 +08:00
疯狂的狮子li 7e50364244 add 添加单模块分支 2021-04-02 16:14:21 +08:00
疯狂的狮子li b82fa6534b add 添加多模块分支 2021-04-02 16:12:09 +08:00
疯狂的狮子li 74a4848205 add 添加单模块分支 2021-04-02 16:11:23 +08:00
疯狂的狮子li 4e58887b9a add 增加单模块项目 2021-04-02 16:01:07 +08:00
疯狂的狮子li dfcd84c2bc fix 数据权限语句null bug 2021-04-02 15:44:02 +08:00
疯狂的狮子li 3012bf0a31 add 增加数据权限注入 2021-04-02 14:22:27 +08:00
疯狂的狮子li 85e9534fae add 增加数据权限注入 2021-04-02 14:15:10 +08:00
疯狂的狮子li 4a1ff5a5ac update 修改controller生成模板 规范代码结构 2021-04-01 17:57:54 +08:00
疯狂的狮子li 222dfd1fe1 update 修改xml生成模板 附加domain类路径 2021-04-01 17:57:24 +08:00
疯狂的狮子li c1964b934f update 简化queryById代码生成器 2021-03-31 16:51:24 +08:00
疯狂的狮子li b16fe5e263 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/tool/build/index.vue
2021-03-31 16:49:45 +08:00
RuoYi 30f330f4a0 修复firefox下表单构建拖拽会新打卡一个选项卡 2021-03-30 17:45:35 +08:00
疯狂的狮子li fdacc04582 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java
2021-03-30 17:21:22 +08:00
RuoYi 6ca7870393 修正注释 2021-03-30 15:30:18 +08:00
若依 2a7342ec43 !195 读取excel增加非空判断
Merge pull request !195 from 叫我宏锅锅/yuhong
2021-03-30 15:23:04 +08:00
若依 fc57e91b80 !196 RepeatedlyRequestWrapper.ServletInputStream 实现available方法
Merge pull request !196 from wangyang/master
2021-03-30 15:17:34 +08:00
疯狂的狮子li 96d10126b2 修复request.getInputStream() 重复读取错误问题 2021-03-30 11:41:24 +08:00
疯狂的狮子li a29ebef202 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
2021-03-30 11:38:56 +08:00
wangyuanyang 347f36ceff fix:RepeatedlyRequestWrapper.ServletInputStream 实现available方法 2021-03-29 10:17:31 +08:00
yuhong0206@sina.cn 9b9c1b999f 读取excel增加
if(row == null)
{
    continue;
}
判断。防止有时候Excel表中有空数据行,导致读取时出现空指针异常。
2021-03-29 09:00:44 +08:00
yuhong0206@sina.cn ec627704b2 取消 2021-03-29 08:58:46 +08:00
yuhong0206@sina.cn 9e6b2a1265 读取excel增加
if(row == null)
{
    continue;
}
判断。防止有时候Excel表中有空数据行,导致读取时出现空指针异常。
2021-03-29 08:56:51 +08:00
若依 266a5e844f !193 修复request.getInputStream() 重复读取错误问题
Merge pull request !193 from MccRay/master
2021-03-27 13:22:01 +08:00
疯狂的狮子li 06e9feadee Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/system/user/profile/userAvatar.vue
2021-03-26 14:07:53 +08:00
MccRay 0822680158 update ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java.
修复 getInputStream() has already been called for this request异常问题
2021-03-25 17:39:51 +08:00
疯狂的狮子li 77ffdf69a1 fix 修复 vo转换 分页bug 2021-03-25 17:01:17 +08:00
疯狂的狮子li e3bcc6b273 fix 查询类模板缺少导入包 2021-03-25 17:00:40 +08:00
疯狂的狮子li 39793318a0 update ruoyi-demo 增加 knife4j 依赖 2021-03-25 16:59:17 +08:00
RuoYi 090e258bf9 显隐列初始默认隐藏列 2021-03-24 15:46:37 +08:00
若依 505fa06dc3 !192 update ruoyi-ui/src/views/system/user/profile/userAvatar.vue.
Merge pull request !192 from 谢凯/N/A
2021-03-24 15:32:24 +08:00
若依 6cf53bfacb !191 update ruoyi-ui/src/views/system/user/profile/userAvatar.vue.
Merge pull request !191 from allworldg/N/A
2021-03-24 15:31:51 +08:00
疯狂的狮子li 2df675bb01 !12 【BUG】项目启动后配置的定时器任务无法正常启动
Merge pull request !12 from linCodeTest/quartz_bug
2021-03-23 16:43:13 +08:00
linjiaru c9e01879ca beanUtil.copy参数顺序反了 2021-03-23 16:22:02 +08:00
谢凯 881dc3fcf0 update ruoyi-ui/src/views/system/user/profile/userAvatar.vue. 2021-03-22 17:52:34 +08:00
疯狂的狮子li 6557f1bdae update pr优化 2021-03-22 13:34:40 +08:00
疯狂的狮子li f156e0a094 update pr优化 2021-03-22 13:32:20 +08:00
疯狂的狮子li 62464cfe45 fix Collection 验证失效问题 2021-03-22 13:31:43 +08:00
疯狂的狮子li 7d47e1e81b fix 表名转换问题 2021-03-22 13:30:59 +08:00
wugh 3d6fbb93f5 !11 [功能] 拆分出Vo,QueryBo,AddBo,EditBo等领域对象
* [修改] 错误引入的无用导包删除
* [新增] 增加Vo,QueryBo,AddBo,EditBo等视图,并调整controller,service的调用代码
* [新增] 增加CreateAndUpdateMetaObjectHandler,配合fill注解,实现创建和修改人的自动设置,减少重复代码
2021-03-22 09:32:49 +08:00
疯狂的狮子li 5d1e977442 个人信息添加手机&邮箱重复验证 2021-03-22 09:30:12 +08:00
疯狂的狮子li 8434511e39 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
2021-03-22 09:29:25 +08:00
allworldg b65c8d4512 update ruoyi-ui/src/views/system/user/profile/userAvatar.vue. 2021-03-21 21:20:23 +08:00
RuoYi 67371a9028 个人信息添加手机&邮箱重复验证 2021-03-21 08:53:11 +08:00
疯狂的狮子li 939d89f0b8 !10 [BUG] 解决只能使用circle干扰的bug
Merge pull request !10 from wugh/hotfix/captcha
2021-03-20 10:14:03 +08:00
wugh 1270b056d5 [bug修复] 解决调整验证码干扰的类型无效,只用circle的bug
[优化] 调整使用那种验证码的逻辑判断,使用switch优化,并减少重复代码
2021-03-19 19:28:43 +08:00
疯狂的狮子li a7f235164f Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
2021-03-18 13:08:14 +08:00
RuoYi 01b545e4ab 通用Controller添加响应返回消息 2021-03-16 14:43:55 +08:00
疯狂的狮子li 31ddb2aee3 update swagger 升级为 knife4j 2021-03-16 12:52:09 +08:00
疯狂的狮子li c0186580ba fix 修复代码生成缺少jar异常 2021-03-16 10:57:26 +08:00
疯狂的狮子li 63a582404b update swagger 模板修改为 swagger-bootstrap-ui 2021-03-15 17:51:00 +08:00
疯狂的狮子li 04e1dc351e update 移除无用依赖 2021-03-15 17:50:24 +08:00
疯狂的狮子li 7ae2df1390 update 使用hutool 重写 UserAgent 2021-03-15 17:49:30 +08:00
疯狂的狮子li 9b4b9e0c74 update 删除通用工具 改为使用hutool 2021-03-15 16:38:43 +08:00
疯狂的狮子li 46aa17db9c Merge remote-tracking branch 'origin/master' 2021-03-15 10:00:49 +08:00
疯狂的狮子li 71325b540a Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/resources/application-prod.yml
	ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
2021-03-15 10:00:14 +08:00
RuoYi c2e9200626 数据监控默认账户密码防止越权访问 2021-03-14 16:37:34 +08:00
若依 9502203bbe !187 【漏洞修复】升级commons-collections版本,解决3.2.1版本的反序列化漏洞问题
Merge pull request !187 from Delusive/master
2021-03-14 16:32:07 +08:00
疯狂的狮子li 2509815a4f fix 验证码点击不刷新 bug 2021-03-14 00:15:29 +08:00
疯狂的狮子li 2b8ab9cc4d update 使用hutool重写系统监控 2021-03-12 18:02:23 +08:00
hh44h1144 c0f1569ad9 修复commons-collections引起的反序列化漏洞 2021-03-12 16:59:06 +08:00
疯狂的狮子li 57cfad671f update 使用hutool重写验证码生成 2021-03-12 16:52:55 +08:00
疯狂的狮子li 9a94ab573d !6 update ruoyi-admin/src/main/resources/application.yml.
Merge pull request !6 from hechieh/N/A
2021-03-10 13:34:15 +08:00
hechieh 51d942f14c update ruoyi-admin/src/main/resources/application.yml. 2021-03-10 13:27:10 +08:00
疯狂的狮子li 5494ec36e5 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/core/text/Convert.java
	ruoyi-ui/src/components/Editor/index.vue
	ruoyi-ui/src/permission.js
	ruoyi-ui/src/store/modules/user.js
	ruoyi-ui/src/views/monitor/logininfor/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
2021-03-09 09:32:49 +08:00
RuoYi 61432480c8 删除多余的代码 2021-03-07 11:06:47 +08:00
若依 78deee063d !180 富文本编辑组件支持只读
Merge pull request !180 from JOSWAY/master
2021-03-07 10:44:04 +08:00
若依 4ad003649e !182 解决 Byte[] 类型 to string 死循环的问题
Merge pull request !182 from sproutcat/master
2021-03-07 10:39:41 +08:00
若依 616f5a6aca !185 update ruoyi-ui/src/views/monitor/logininfor/index.vue.
Merge pull request !185 from asher/N/A
2021-03-07 10:39:30 +08:00
若依 fea3ff7b2a !184 update ruoyi-ui/src/views/monitor/operlog/index.vue.
Merge pull request !184 from asher/N/A
2021-03-07 10:39:22 +08:00
asher f938a24df0 update ruoyi-ui/src/views/monitor/logininfor/index.vue. 2021-03-04 17:00:07 +08:00
asher 45fa686a64 update ruoyi-ui/src/views/monitor/operlog/index.vue. 2021-03-04 16:58:18 +08:00
疯狂的狮子li 2c2deced02 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue 2021-03-03 17:14:21 +08:00
RuoYi 0d8c3b4940 升级oshi到最新版本v5.6.0 2021-03-03 13:53:03 +08:00
疯狂的狮子li 0638f3c1fe Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	README.md
	ruoyi-ui/src/views/index.vue
2021-02-28 14:39:53 +08:00
RuoYi 64e807f27b 添加新群号:186866453 2021-02-24 13:45:24 +08:00
tzg 9a384a2fc2 解决 Byte[] 类型 to string 死循环的问题 2021-02-23 16:30:14 +08:00
Josway 339b932a3d 富文本编辑组件支持只读 2021-02-22 17:49:17 +08:00
疯狂的狮子li 9b136e76bb update 3.4.0 2021-02-22 10:06:18 +08:00
疯狂的狮子li ac99fddfe6 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-ui/package.json
	ruoyi-ui/src/views/index.vue
2021-02-22 10:04:43 +08:00
RuoYi 0b5c7f4c96 若依 3.4.0 2021-02-22 09:40:28 +08:00
RuoYi 265e3010aa 升级SpringBoot到最新版本2.2.13 2021-02-21 11:01:56 +08:00
疯狂的狮子li 66899c4c96 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	sql/ry_20210210.sql
2021-02-18 09:12:32 +08:00
RuoYi b7a36bfe8a 修改ip字段长度防止ipv6地址长度不够 2021-02-10 12:48:52 +08:00
疯狂的狮子li 2c40a892f8 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/store/modules/permission.js
	ruoyi-ui/src/views/system/role/index.vue
2021-02-07 09:18:17 +08:00
RuoYi 3a51c53823 角色非自定义权限范围清空选择值 2021-02-06 10:34:12 +08:00
RuoYi df504c5c14 修复四级菜单无法显示问题 2021-02-06 09:29:50 +08:00
疯狂的狮子li 6f0dfa850a Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/system/role/index.vue
2021-02-03 13:38:43 +08:00
RuoYi baeed2e8d3 修复角色管理-编辑角色-功能权限显示异常 2021-02-02 16:25:37 +08:00
疯狂的狮子li 8ba1266b6a 修改 页面生成模板 适配后端时间格式 2021-01-28 09:22:25 +08:00
疯狂的狮子li 118c02144f 集成 Feign 接口化管理 Http请求(如短信,支付,推送等) 2021-01-27 15:15:03 +08:00
疯狂的狮子li a4756004f8 删除过时配置 2021-01-27 13:10:05 +08:00
疯狂的狮子li 6e6933bb25 支持树表生成 增加生成树表说明 2021-01-25 13:35:07 +08:00
疯狂的狮子li 2925f28255 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/package.json
2021-01-25 09:54:49 +08:00
RuoYi 2903de1561 升级element-ui到最新版本2.15.0 2021-01-24 12:06:19 +08:00
疯狂的狮子li b5e8fa2b98 统一校验配置类名称 2021-01-21 09:31:37 +08:00
疯狂的狮子li 09acac4caf 更新readme 2021-01-18 16:13:05 +08:00
疯狂的狮子li 9fdee373af 删除多余注解(@Data已包含) 2021-01-18 14:00:03 +08:00
疯狂的狮子li 3362ce5f33 升级 MybatisPlus 3.4.2 2021-01-15 15:55:24 +08:00
疯狂的狮子li 52325307f4 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	README.md
2021-01-15 15:08:50 +08:00
RuoYi cca2f5c62d update README.md 2021-01-14 13:20:08 +08:00
RuoYi ce54416e4f 升级fastjson到最新版1.2.75 2021-01-13 16:20:39 +08:00
RuoYi bd19892aff 修复生成树表代码异常 2021-01-13 16:19:23 +08:00
疯狂的狮子li 684eadbcc6 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
	ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
	ruoyi-generator/src/main/resources/vm/java/controller.java.vm
	ruoyi-generator/src/main/resources/vm/java/domain.java.vm
	ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
	ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/tool/gen/editTable.vue
	ruoyi-ui/src/views/tool/gen/genInfoForm.vue
	ruoyi-ui/src/views/tool/gen/index.vue
	sql/ry_20210108.sql
2021-01-11 09:58:41 +08:00
RuoYi 14a859899c 代码生成模板支持主子表 2021-01-08 10:47:36 +08:00
若依 f3cb18c836 !161 修复导入数据为负浮点数时,导入结果会丢失精度问题
Merge pull request !161 from 嘿白熊/master
2021-01-08 10:46:36 +08:00
RuoYi 7d0eb3b8c7 用户显隐列添加不同key防止被复用 2021-01-07 13:28:16 +08:00
RuoYi 654aa6b30c 表格右侧工具栏组件支持显隐列 2021-01-06 17:30:39 +08:00
X.B-H b7cdd10f9f 修复导入数据为负浮点数时丢失精度问题 2021-01-06 11:11:11 +08:00
RuoYi 9bd35cb7be 升级druid到最新版本v1.2.4 2021-01-06 11:00:20 +08:00
RuoYi 7a86c714fc 代码生成支持文件上传组件 2021-01-06 11:00:09 +08:00
疯狂的狮子li b368745380 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-ui/package.json
	ruoyi-ui/src/components/HeaderSearch/index.vue
	ruoyi-ui/src/main.js
	ruoyi-ui/src/views/tool/gen/editTable.vue
	ruoyi-ui/src/views/tool/gen/index.vue
2021-01-06 09:35:00 +08:00
RuoYi edd090a098 代码生成支持文件上传组件 2021-01-05 20:59:14 +08:00
RuoYi 3cd886785b 图片组件添加预览功能 2021-01-05 20:33:41 +08:00
RuoYi ae5a0f9774 新增文件上传组件 2021-01-05 20:11:09 +08:00
RuoYi 074b3c735d 设置单图上传控件 2021-01-05 16:17:41 +08:00
RuoYi a118738d0f 单图上传组件添加移除 2021-01-05 16:13:22 +08:00
RuoYi 56fa3912ae 修复IE11浏览器报错问题 2021-01-05 09:44:08 +08:00
疯狂的狮子li d73994f05d Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-ui/src/layout/components/TagsView/index.vue
	ruoyi-ui/src/views/login.vue
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/monitor/logininfor/index.vue
	ruoyi-ui/src/views/monitor/online/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/system/config/index.vue
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/system/notice/index.vue
	ruoyi-ui/src/views/system/post/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/tool/gen/index.vue
2021-01-05 09:22:36 +08:00
RuoYi 2116ee1822 Update copyright 2021-01-04 17:49:52 +08:00
RuoYi 57a2eb4217 操作按钮组调整为朴素按钮样式 2021-01-04 17:48:46 +08:00
疯狂的狮子li e9d368ed0c Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java
	ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
2020-12-30 16:20:09 +08:00
RuoYi 647af5b485 菜单组件修改允许空字符串 2020-12-29 17:27:48 +08:00
若依 3f33219134 !156 修复 用户管理 -> 修改用户 手机号码 和 邮箱 不能清空
Merge pull request !156 from li_oxen/N/A
2020-12-29 17:14:31 +08:00
li_oxen a04bb71777 修复 用户管理 -> 修改用户 手机号码 和 邮箱 不能清空 2020-12-29 13:51:15 +08:00
RuoYi 63992ac906 代码生成数据库文本类型生成表单文本域 2020-12-29 11:14:48 +08:00
疯狂的狮子li b8f6731584 增加 demo模块 方便参考扩展 2020-12-29 10:17:44 +08:00
疯狂的狮子li 93e7f53cf8 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue 2020-12-28 10:40:13 +08:00
RuoYi 0187344798 Excel注解支持Image图片导出 2020-12-27 10:04:45 +08:00
疯狂的狮子li c24b912b50 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-ui/src/store/modules/permission.js
2020-12-25 09:59:24 +08:00
RuoYi a9c6ba12e6 代码生成日期控件区分范围 2020-12-25 09:35:20 +08:00
RuoYi ba068eae65 修正侧边栏静态路由丢失问题 2020-12-24 19:32:18 +08:00
疯狂的狮子li 476df3117b Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/utils/permission.js
	ruoyi-ui/src/utils/request.js
2020-12-24 10:04:54 +08:00
若依 1a87ee7c19 防止get请求参数值为false或0等特殊值会导致无法正确的传参
Merge pull request !146 from wugh/hotfix/gitee-issue_I2A5FU
2020-12-22 16:19:51 +08:00
DokiYoloo 3c4b01ab83 权限工具类增加admin判断 2020-12-21 19:43:57 +08:00
疯狂的狮子li 1000a577d0 配置文件新增redis数据库索引属性 2020-12-21 11:58:49 +08:00
wugh 886ce995af [bug修复] 解决get请求,如果参数值为false或0等特殊值会导致无法正确传参 2020-12-21 11:58:15 +08:00
疯狂的狮子li 78ef398257 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-ui/src/store/modules/permission.js
2020-12-21 11:55:32 +08:00
RuoYi 52264b6e2a 优化多级菜单之间切换无法缓存的问题 2020-12-21 10:50:48 +08:00
RuoYi fd7e88a518 配置文件新增redis数据库索引属性 2020-12-21 10:26:54 +08:00
若依 854a6f805f !145 redis 增加 database配置项,设置不同的库
Merge pull request !145 from li_oxen/N/A
2020-12-21 10:13:47 +08:00
li_oxen 1caec85f46 redis 增加 database配置项,设置不同的库 2020-12-19 10:08:09 +08:00
疯狂的狮子li 805c79506b 代码生成 后端支持 between 2020-12-18 17:46:05 +08:00
疯狂的狮子li 817da5bc04 修复export与list结果不统一问题 2020-12-18 16:50:58 +08:00
wangxianl a514330db3 修复export与list结果不统一的问题 2020-12-18 15:47:07 +08:00
疯狂的狮子li 2b0cf24be4 修改 controller 生成器 解决where条件重复bug 2020-12-18 09:47:35 +08:00
疯狂的狮子li 6c8497f632 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/package.json
	ruoyi-ui/src/components/Breadcrumb/index.vue
	ruoyi-ui/src/layout/components/AppMain.vue
	ruoyi-ui/src/layout/components/Sidebar/index.vue
	ruoyi-ui/src/layout/components/TagsView/index.vue
	ruoyi-ui/src/store/getters.js
	ruoyi-ui/src/store/modules/permission.js
	ruoyi-ui/src/views/system/user/profile/resetPwd.vue
	ruoyi-ui/src/views/system/user/profile/userInfo.vue
	ruoyi-ui/src/views/tool/gen/editTable.vue
2020-12-18 09:45:54 +08:00
疯狂的狮子li b029a7265a 将controller条件查询器改完隐式泛型 2020-12-18 00:02:40 +08:00
RuoYi c86dc20743 移除path-to-regexp正则匹配插件 2020-12-17 12:05:29 +08:00
RuoYi ecc7a8be46 优化多级菜单之间切换无法缓存的问题 2020-12-16 20:57:48 +08:00
疯狂的狮子li f44ff8477f Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	README.md
	ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java
2020-12-16 12:44:21 +08:00
RuoYi e23ad20186 README 2020-12-16 10:20:02 +08:00
RuoYi 6cf2a8edeb 升级SpringBoot到最新版本2.2.12 提升启动速度 2020-12-16 10:05:53 +08:00
疯狂的狮子li 1249c7ca26 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/permission.js
	ruoyi-ui/src/views/login.vue
2020-12-15 10:25:00 +08:00
RuoYi 67198aede9 README 2020-12-15 10:06:12 +08:00
RuoYi 4f33da2a3f 登录后push添加catch防止出现检查错误 2020-12-15 10:04:09 +08:00
疯狂的狮子li 1ec7073027 同步升级 3.3 2020-12-14 09:28:15 +08:00
疯狂的狮子li 7e476b941e Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
	ruoyi-ui/package.json
	ruoyi-ui/src/main.js
	ruoyi-ui/src/views/index.vue
	ruoyi-ui/src/views/tool/gen/index.vue
2020-12-14 09:27:27 +08:00
RuoYi 8988d0b4ab 若依 3.3.0 2020-12-14 09:02:10 +08:00
RuoYi ceefa20aa2 调整代码生成页列宽 2020-12-13 16:05:49 +08:00
RuoYi 89e1f2a53f 修改Set可能导致嵌套的问题 2020-12-13 15:01:03 +08:00
若依 6800a12014 !138 修改Set可能导致嵌套的问题
Merge pull request !138 from BecomeDream/N/A
2020-12-13 14:54:17 +08:00
疯狂的狮子li 8d4f3561d5 修复mybatis-plus插件不生效bug 2020-12-11 18:45:57 +08:00
BecomeDream e8f63b2994 修改Set可能导致嵌套的问题 2020-12-11 18:16:57 +08:00
RuoYi ecfe7006e2 代码生成预览支持高亮显示 2020-12-11 17:04:54 +08:00
疯狂的狮子li 8b88d91312 update README.md 2020-12-11 14:44:07 +08:00
疯狂的狮子li f56f57a236 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
	ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
	ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
	ruoyi-ui/package.json
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/assets/styles/sidebar.scss
	ruoyi-ui/src/assets/styles/variables.scss
	ruoyi-ui/src/components/HeaderSearch/index.vue
	ruoyi-ui/src/components/Screenfull/index.vue
	ruoyi-ui/src/layout/components/Settings/index.vue
	ruoyi-ui/src/layout/components/Sidebar/Logo.vue
	ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue
	ruoyi-ui/src/layout/components/Sidebar/index.vue
	ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue
	ruoyi-ui/src/layout/index.vue
	ruoyi-ui/src/main.js
	ruoyi-ui/src/settings.js
	ruoyi-ui/src/store/modules/settings.js
	ruoyi-ui/src/store/modules/user.js
	ruoyi-ui/src/views/login.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/system/user/profile/resetPwd.vue
	ruoyi-ui/src/views/system/user/profile/userInfo.vue
	ruoyi-ui/src/views/tool/gen/editTable.vue
	ruoyi-ui/src/views/tool/gen/index.vue
	ruoyi-ui/vue.config.js
2020-12-11 14:27:54 +08:00
RuoYi 9e387dc447 去除用户手机邮箱部门必填验证 2020-12-11 13:26:14 +08:00
若依 231bbf6928 !135 增加日志记录过滤对象类型(解决多文件场景报错)
Merge pull request !135 from geruishi/master
2020-12-11 13:24:03 +08:00
RuoYi d6eac2dc8d 前端更新插件版本 2020-12-11 09:27:12 +08:00
RuoYi b368ad764f 升级core-js到最新版本3.8.1 2020-12-10 12:08:18 +08:00
RuoYi ffd5f0ce5d 升级vue-router到最新版本3.4.9 2020-12-10 11:14:44 +08:00
RuoYi a50beae599 代码生成预览提供滚动机制 2020-12-10 11:13:39 +08:00
疯狂的狮子li 4e56f30381 修改 生成器controller模板缺导包 与 index页面兼容性
Merge pull request !2 from dragonwzj/master
2020-12-09 16:49:24 +08:00
wangzhijun fe39a7bc7b 模板controller导入;模板vue列表页当有查询条件时报错 2020-12-09 16:16:53 +08:00
葛瑞士 cf7f51a633 解决多文件上传Log报错 2020-12-09 16:05:09 +08:00
疯狂的狮子li 5109eb0e7e 日志输出改回相对路径 解决新版idea 编译user.dir会指定到idea配置目录下 2020-12-09 13:37:04 +08:00
疯狂的狮子li 583738fa65 日志输出改回相对路径 解决新版idea 编译user.dir会指定到idea配置目录下 2020-12-09 13:33:41 +08:00
RuoYi 4d46f4c1b5 删除用户和角色解绑关联 2020-12-09 10:32:53 +08:00
若依 a941c1b488 !134 修改 代码生成 预览无法左右滑动
Merge pull request !134 from 〝走走停停/master
2020-12-09 10:27:34 +08:00
〝走走停停 d6b6151aea update ruoyi-ui/src/assets/styles/ruoyi.scss. 2020-12-08 17:49:51 +08:00
RuoYi fbc071a573 关闭页签清理缓存数据 2020-12-08 16:43:26 +08:00
疯狂的狮子li 5a62019cdd 更新 如何修改为Tomcat相关注释配置与说明 2020-12-08 16:21:30 +08:00
RuoYi 6cfff90b4a 缓存仪表图设置默认大小 2020-12-08 16:13:21 +08:00
RuoYi 474cca921e 回显数据字典防止空值报错 2020-12-08 16:12:00 +08:00
若依 1657e06be6 !132 update ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java.
Merge pull request !132 from abbfun/N/A
2020-12-08 16:03:51 +08:00
abbfun c01eeb8521 update ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java. 2020-12-08 11:11:34 +08:00
RuoYi f90899d72a 支持主题风格配置 2020-12-07 14:13:02 +08:00
疯狂的狮子li 69f30760f8 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/utils/request.js
	ruoyi-ui/src/views/system/user/profile/userAvatar.vue
2020-12-07 12:59:35 +08:00
RuoYi 7e78a9167f 修改用户头像预览宽高 2020-12-06 16:22:45 +08:00
RuoYi 563e11d9c1 get请求params添加null值判断 2020-12-06 11:05:02 +08:00
疯狂的狮子li e80349c343 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
	ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
	ruoyi-ui/src/utils/request.js
2020-12-04 11:46:29 +08:00
RuoYi ef92ad4d8c 支持get请求映射params参数 2020-12-04 10:52:20 +08:00
RuoYi d8b006c15f 升级bitwalker到最新版本1.21 2020-12-04 10:51:20 +08:00
RuoYi 0e2b97a886 升级poi到最新版本4.1.2 2020-12-03 13:28:04 +08:00
RuoYi 1c7a5faae8 Excel支持注解align对齐方式 2020-12-03 13:26:46 +08:00
疯狂的狮子li d2cef9c40d 新增 关于多数据源事务 2020-12-03 11:32:29 +08:00
疯狂的狮子li b346036cca 增加 多数据源事务描述 2020-12-03 11:30:48 +08:00
疯狂的狮子li 5ebd0a971f Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue 2020-12-03 11:20:50 +08:00
疯狂的狮子li c50e058953 为所有MP插件增加官方链接 2020-12-03 11:15:54 +08:00
疯狂的狮子li a3dfa843af 增加 多数据源使用注意事项 2020-12-03 11:13:58 +08:00
RuoYi 23868c4fad 防止安全扫描YUI出现的风险提示 2020-12-03 10:26:22 +08:00
疯狂的狮子li 2afb109bff 增加 maven多环境配置注释 2020-12-01 11:53:55 +08:00
疯狂的狮子li f7f7557d4d 项目修改为 maven多环境配置 2020-12-01 11:44:29 +08:00
疯狂的狮子li b36b413a69 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue 2020-12-01 09:23:55 +08:00
RuoYi 3b2669d148 修改缓存监控内存单位 2020-11-30 19:27:03 +08:00
疯狂的狮子li ce438f182a Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
	ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/text/CharsetKit.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
	ruoyi-ui/package.json
	ruoyi-ui/src/layout/components/AppMain.vue
	ruoyi-ui/src/layout/components/TagsView/index.vue
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/store/modules/permission.js
	ruoyi-ui/src/views/system/user/profile/userAvatar.vue
	sql/ry_20201128.sql
2020-11-30 12:41:39 +08:00
RuoYi 1147ea5f8a 设置用户头像悬停高度 2020-11-30 11:10:27 +08:00
RuoYi a1bf5aaf8e 升级element-ui版本到2.14.1 2020-11-30 10:37:48 +08:00
RuoYi 2797c1eb3a 修正转换字符串的目标字符集属性 2020-11-30 10:31:11 +08:00
若依 1791d7cf40 !126 update pom.xml.
Merge pull request !126 from abbfun/N/A
2020-11-30 10:07:08 +08:00
abbfun 01861f0aae update pom.xml. 2020-11-29 16:16:54 +08:00
RuoYi a69cc94f35 三级菜单自动配置组件 2020-11-28 20:39:03 +08:00
RuoYi c666faed66 修复三级菜单之间切换页面无法缓存的问题 2020-11-28 20:31:45 +08:00
RuoYi 6072239a40 修改缓存监控内存单位 2020-11-28 13:57:19 +08:00
RuoYi a3b86d6f6d 代码生成删除多余的数字float类型 2020-11-28 12:09:24 +08:00
RuoYi fd831d5a90 Excel支持导入Boolean型数据 2020-11-28 12:08:55 +08:00
疯狂的狮子li 6d900dc654 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue 2020-11-25 09:30:42 +08:00
RuoYi e83412b9a5 升级oshi到最新版本v5.3.6 2020-11-24 16:17:33 +08:00
疯狂的狮子li 15c4428b9c 修改 ruoyi CharsetKit.java bug 2020-11-24 11:54:38 +08:00
疯狂的狮子li 20d7c90515 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java
	ruoyi-ui/src/views/system/user/profile/userAvatar.vue
	sql/ry_20201123.sql
2020-11-24 10:03:59 +08:00
RuoYi 90ac416e02 新增缓存监控功能 2020-11-23 10:02:50 +08:00
RuoYi 5b63f0cab9 优化头像样式,鼠标移入悬停遮罩 2020-11-19 09:33:10 +08:00
疯狂的狮子li 3363d7b12d 同步升级 3.2.1 修复重大bug 阻止任意文件下载漏洞 2020-11-18 10:52:33 +08:00
疯狂的狮子li ff563c44e2 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-ui/package.json
	ruoyi-ui/src/views/index.vue
	ruoyi-ui/src/views/tool/gen/editTable.vue
2020-11-18 10:41:13 +08:00
RuoYi 8f145bba3a 若依 v3.2.1 2020-11-18 09:32:15 +08:00
RuoYi 6bb166b89f 阻止任意文件下载漏洞 2020-11-17 10:29:52 +08:00
RuoYi 823e95667e 代码生成支持上传控件 2020-11-16 16:20:17 +08:00
RuoYi 566053da0c 新增图片上传组件 2020-11-16 15:52:58 +08:00
疯狂的狮子li 527decb7fa 更新 undertow 配置 2020-11-16 14:50:05 +08:00
疯狂的狮子li 03f0e3a137 为所有MP插件和配置增加官方链接 2020-11-16 14:12:14 +08:00
疯狂的狮子li 148d0361e0 增加字段填充配置 2020-11-16 14:03:55 +08:00
疯狂的狮子li d626dd9e90 更新分页插件配置 增加主键插件配置 2020-11-16 13:57:26 +08:00
疯狂的狮子li 1043afcecc 重磅升级 Mybatis-Plus 升级为 3.4.1 2020-11-13 11:39:16 +08:00
疯狂的狮子li 04d1154be0 重磅升级 重写 Mybatis-Plus 配置文件 根据官方文档详细注释 2020-11-13 11:18:37 +08:00
疯狂的狮子li 550f781d6f 重磅升级 Mybatis-Plus 插件 全部升级为最新插件 2020-11-13 11:17:33 +08:00
疯狂的狮子li b114d0a41c 重磅升级 Mybatis-Plus 升级为 3.4.1 Hutool 升级到 5.4.0 2020-11-13 11:16:57 +08:00
疯狂的狮子li 60dda6c7eb Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/index.vue
2020-11-12 09:24:40 +08:00
RuoYi 0ef007240d 调整默认首页 2020-11-07 10:38:35 +08:00
疯狂的狮子li c57005b4e4 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue 2020-11-06 17:18:55 +08:00
RuoYi 0a75dcdd85 升级druid到最新版本v1.2.2 2020-11-05 13:58:36 +08:00
疯狂的狮子li 93093d9f55 更改 MybatisPlus Lambda查询 改为官方推荐写法 2020-11-05 13:56:49 +08:00
疯狂的狮子li e095a9f73f Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue 2020-11-05 12:58:53 +08:00
RuoYi 4c2626ffec 2020年双十一云服务器优惠,错过又要等一年 2020-11-04 16:58:28 +08:00
疯狂的狮子li 5d748a50ff 删除 MyBatisConfig.java 配置文件 2020-11-03 09:58:01 +08:00
疯狂的狮子li efb938c370 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java
	ruoyi-ui/src/views/system/notice/index.vue
	ruoyi-ui/src/views/system/user/index.vue
2020-11-03 09:56:18 +08:00
RuoYi 082b19e33a mapperLocations配置支持分隔符 2020-11-02 17:34:52 +08:00
若依 b779cf053d !112 未选择时,点击“确认”,出现必填验证提示。使用blur的话,选择之后验证消息不会自动消失,使用change会自动消失。
Merge pull request !112 from FlyFive/N/A
2020-11-02 17:30:06 +08:00
FlyFive 212012dc62 未选择时,点击“确认”,出现必填验证提示。使用blur的话,选择之后验证消息不会自动消失,使用change会自动消失。 2020-11-02 11:49:25 +08:00
疯狂的狮子li 616fbc45ae 增加 校验框架配置与全局异常处理 2020-10-28 16:01:26 +08:00
疯狂的狮子li cf44d1f213 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
	ruoyi-ui/src/views/system/dept/index.vue
2020-10-28 11:54:52 +08:00
若依 7de2cf77b4 !111 update ruoyi-ui/src/views/system/dept/index.vue.
Merge pull request !111 from FlyFive/N/A
2020-10-26 16:57:58 +08:00
FlyFive 2b9d46439f update ruoyi-ui/src/views/system/dept/index.vue.
验证的提示信息错了
2020-10-26 16:31:51 +08:00
若依 79265d59b7 !109 误修改,回退
Merge pull request !109 from tucke/master
2020-10-26 10:00:46 +08:00
tucke 093ba5b389 误修改,回退 2020-10-26 09:53:58 +08:00
疯狂的狮子li 30d15afd33 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
	ruoyi-generator/src/main/resources/vm/sql/sql.vm
	ruoyi-ui/src/views/login.vue
	sql/ry_20201021.sql
2020-10-23 17:41:02 +08:00
RuoYi 3807b11290 权限调整 2020-10-23 17:27:20 +08:00
RuoYi c9f25cb34e 调整sql默认时间 2020-10-21 11:30:37 +08:00
疯狂的狮子li 8747d36b2c 更改日志存储路径 使用项目变量 2020-10-20 16:38:39 +08:00
疯狂的狮子li 1a15c528a2 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
	ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
2020-10-16 10:27:13 +08:00
若依 203b54e5aa !106 update ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java.
Merge pull request !106 from abbfun/N/A
2020-10-14 17:12:57 +08:00
RuoYi 403f5c5dcf 解决代码生成没有bit类型的问题 2020-10-14 17:08:20 +08:00
abbfun c6d0b9a9ae update ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java.
权限字符串修正
2020-10-14 16:21:43 +08:00
疯狂的狮子li f4876422a9 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/role/index.vue
2020-10-14 09:22:01 +08:00
RuoYi 08df2c93a9 删除不必要的代码 2020-10-13 14:41:26 +08:00
若依 fbbdd94999 !105 update ruoyi-ui/src/views/system/role/index.vue.
Merge pull request !105 from FlyFive/N/A
2020-10-13 14:38:02 +08:00
FlyFive 0cae7d0058 update ruoyi-ui/src/views/system/role/index.vue.
getMenuAllCheckedKeys()方法中选中节点和半选节点获取的方法反了。
2020-10-12 13:50:25 +08:00
疯狂的狮子li 8ca53c7666 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/monitor/logininfor/index.vue
	ruoyi-ui/src/views/monitor/online/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/system/config/index.vue
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/system/notice/index.vue
	ruoyi-ui/src/views/system/post/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/system/user/profile/resetPwd.vue
	ruoyi-ui/src/views/system/user/profile/userAvatar.vue
	ruoyi-ui/src/views/system/user/profile/userInfo.vue
	ruoyi-ui/src/views/tool/gen/index.vue
2020-10-12 09:54:59 +08:00
RuoYi b0965653bf 删除不必要的代码 2020-10-10 17:54:30 +08:00
RuoYi e472f62523 升级pagehelper到最新版1.3.0 2020-10-10 16:39:14 +08:00
RuoYi 69256940df 若依 3.2 2020-10-10 09:38:21 +08:00
疯狂的狮子li bd39b971cf Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-ui/package.json
	ruoyi-ui/src/utils/ruoyi.js
	ruoyi-ui/src/views/monitor/job/index.vue
2020-10-10 09:19:20 +08:00
RuoYi b9f686be53 升级druid到最新版本v1.2.1 2020-10-09 11:45:33 +08:00
RuoYi 521ff51238 升级fastjson到最新版1.2.74 2020-10-09 11:45:06 +08:00
若依 f67c97e095 !102 rouyi.js中添加日期范围方法dateRange获取bug修复
Merge pull request !102 from zora/master
2020-10-09 11:37:18 +08:00
RuoYi dd721ff894 修正定时任务执行一次权限标识 2020-10-07 13:36:55 +08:00
疯狂的狮子li cb92e41b76 修复生成树结构报错 2020-10-07 12:27:29 +08:00
疯狂的狮子li cddaf4b088 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/layout/components/TagsView/index.vue
	ruoyi-ui/src/views/system/user/index.vue
2020-10-07 12:25:38 +08:00
RuoYi ae4290bdda 修复页签关闭所有固定标签路由不刷新问题 2020-10-03 20:05:24 +08:00
RuoYi c19fec2cf8 格式化代码 2020-10-03 20:05:06 +08:00
RuoYi 669c42795a 表单构建布局型组件新增按钮 2020-10-03 17:47:24 +08:00
疯狂的狮子li cc59e5ad89 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
2020-10-03 11:57:41 +08:00
RuoYi 0d79f10c2f jna指定版本 2020-10-03 11:43:23 +08:00
RuoYi d3595cd930 修正菜单提示信息错误 2020-10-03 11:15:18 +08:00
shizhenwei 5b0525d05c [修改]此工具类应使用参数dateRange而非bind在model上的dateRange 2020-09-27 13:22:23 +08:00
疯狂的狮子li 3c703e4189 解决 druid 请求已响应bug 2020-09-25 12:05:41 +08:00
疯狂的狮子li ef4731e3ff 删除无用js 2020-09-25 12:05:01 +08:00
疯狂的狮子li 6101a3bf0d Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java
	ruoyi-ui/src/assets/styles/sidebar.scss
2020-09-25 11:15:57 +08:00
RuoYi fb07677c32 左侧菜单文字过长显示省略号 2020-09-24 19:21:55 +08:00
RuoYi a82a3d9465 升级oshi到最新版本v5.2.5 2020-09-22 18:25:58 +08:00
疯狂的狮子li aefa2095f0 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
	ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
	ruoyi-generator/src/main/resources/vm/sql/sql.vm
	ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
	ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
	ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
	ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	sql/ry_20200920.sql
2020-09-22 13:22:30 +08:00
RuoYi 28bceda630 修正文字错误 2020-09-22 11:09:18 +08:00
RuoYi 69829827fe 菜单&数据权限新增(展开/折叠 全选/全不选 父子联动) 2020-09-21 14:10:01 +08:00
若依 89607fb028 !100 解决添加用户角色时报错问题
Merge pull request !100 from wensanpi/master
2020-09-21 10:31:59 +08:00
wensanpi 1aa18c523d update ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml. 2020-09-20 17:38:21 +08:00
RuoYi abeb8d7fd8 菜单新增是否缓存keep-alive 2020-09-20 10:34:03 +08:00
RuoYi 478fae0d28 菜单&数据权限新增(展开/折叠 全选/全不选 父子联动) 2020-09-19 13:42:37 +08:00
疯狂的狮子li 298fabfdec Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
	ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml
	ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
	ruoyi-ui/src/api/tool/gen.js
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/tool/gen/index.vue
2020-09-18 17:38:23 +08:00
RuoYi 0ecf27f8d6 去除多余的空格 2020-09-18 17:09:27 +08:00
RuoYi 0a5bb34fbf 升级springboot到2.1.17 提升安全性 2020-09-18 16:51:27 +08:00
RuoYi 9e38c7de2e 代码生成支持同步数据库 2020-09-18 10:24:21 +08:00
RuoYi 9ca28d6dbf 表格操作列间距调整 2020-09-18 10:23:31 +08:00
RuoYi 497f98ba90 导入excel整形值校验优化 2020-09-17 18:22:50 +08:00
疯狂的狮子li b111cbeedd Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
	ruoyi-ui/src/views/tool/gen/editTable.vue
2020-09-16 09:23:02 +08:00
RuoYi a948affb2d 代码生成支持富文本控件 2020-09-15 15:53:27 +08:00
RuoYi 57b49dd5fa 限制系统内置参数不允许删除 2020-09-15 15:51:12 +08:00
疯狂的狮子li 06c4d4d01b Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	pom.xml
	ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
	ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml
	ruoyi-ui/package.json
	ruoyi-ui/src/components/Editor/index.vue
	ruoyi-ui/src/router/index.js
2020-09-11 09:17:43 +08:00
RuoYi 9c0ed9c424 修复通知公告longblob类型乱码问题 2020-09-10 18:23:12 +08:00
RuoYi 70ab18052c 富文本工具栏样式对齐 2020-09-10 16:56:33 +08:00
RuoYi aeb02c79d8 修正注释图标路径 2020-09-10 16:53:58 +08:00
RuoYi 33793d8eff Excel导出类型NUMERIC支持精度浮点类型 2020-09-09 11:30:34 +08:00
RuoYi 9652906954 降级druid到版本v1.1.22,防止出现一些错误 2020-09-09 10:08:31 +08:00
疯狂的狮子li a41bc230a1 修改上传文件路径 2020-09-08 14:49:37 +08:00
RuoYi 9fccc7de40 修正调用目标字符串最大长度 2020-09-07 16:40:38 +08:00
RuoYi 599be64fa8 升级jjwt到0.9.1 2020-09-07 16:40:21 +08:00
疯狂的狮子li ef95cec77f Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
	ruoyi-ui/src/components/Editor/index.vue
2020-09-07 11:31:40 +08:00
RuoYi 50ac363682 升级druid到最新版本v1.1.23 2020-09-04 14:47:07 +08:00
若依 f84b157419 !87 数据权限中的空值处理
Merge pull request !87 from sproutcat/master
2020-09-04 14:17:32 +08:00
若依 f4536d5d2e !86 数据字典缓存处理的一点小问题
Merge pull request !86 from 说一/master
2020-09-04 14:07:47 +08:00
若依 aed958b1be !82 修复Editor组件在传入内容为null时无法响应式更新其内容的bug
Merge pull request !82 from HaoRan/N/A
2020-09-04 14:04:08 +08:00
tzg 0a51f7d743 空值处理 2020-09-02 14:59:10 +08:00
dawn 3fd9147afb 解决“在只填加了字典类型,没有添加字典数据时,会出现缓存了空集合,即使后边添加了字典数据也没用,只能清空redis缓存。”的问题,小问题就是判断稍稍改了下,若依大大让我pr当个贡献者,很荣幸很欣慰。感谢! 2020-09-02 10:14:34 +08:00
疯狂的狮子li f69cb567f0 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	sql/ry_20200901.sql
2020-09-02 09:08:52 +08:00
RuoYi 4f86b6d9ca 修改公告内容字段类型 2020-09-01 18:07:59 +08:00
疯狂的狮子li 1ef17bb582 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
2020-08-31 09:12:13 +08:00
HaoRan a65c287075 修复Editor组件无法对响应式更新null值问题 2020-08-31 02:10:01 +08:00
RuoYi 1af0d1665c 数据权限判断对象类型 2020-08-28 15:45:54 +08:00
RuoYi 4e32788b36 修正数据库字符串类型nvarchar 2020-08-28 14:11:32 +08:00
RuoYi 068c3e6f0d 优化递归子节点 2020-08-28 10:14:59 +08:00
RuoYi dd6640086e 代码生成树模板去掉多余双引号 2020-08-27 17:34:06 +08:00
RuoYi be54188ba6 导出Excel调整targetAttr获取值方法,防止get方法不规范 2020-08-26 15:39:46 +08:00
疯狂的狮子li fdbe943053 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
2020-08-26 15:30:25 +08:00
RuoYi a4e2339f90 生成页面时不忽略remark属性 2020-08-26 14:24:37 +08:00
RuoYi bf771ae5c8 Excel注解支持自动统计数据总和 2020-08-26 11:37:49 +08:00
疯狂的狮子li 184bb04bc2 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/components/Editor/index.vue
	ruoyi-ui/src/views/system/notice/index.vue
	sql/ry_20200822.sql
2020-08-24 10:26:44 +08:00
RuoYi fa5596bb20 Editor组件优化,支持自定义高度&图片冲突问题 2020-08-22 13:18:41 +08:00
RuoYi eb30fc4b1a 修改公告内容字段类型 2020-08-22 13:11:40 +08:00
疯狂的狮子li d464d8703c Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java
2020-08-21 13:01:12 +08:00
疯狂的狮子li 1b82822d15 根据勾选列表是否显示 隐藏主键列 2020-08-19 17:32:34 +08:00
疯狂的狮子li 1cc8bc172b 修改代码生成 删除主键type注解配置 使用全局配置 2020-08-19 17:03:21 +08:00
RuoYi 0446d211df 设置默认排序顺序 2020-08-19 17:02:23 +08:00
疯狂的狮子li 5aeac1a8ae Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-ui/package.json
	ruoyi-ui/src/components/HeaderSearch/index.vue
	ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue
	ruoyi-ui/src/utils/ruoyi.js
2020-08-19 17:01:43 +08:00
RuoYi da146c2a70 Excel注解支持设置BigDecimal精度&舍入规则 2020-08-19 11:20:31 +08:00
RuoYi 7de5358dcd 升级fastjson到最新版1.2.73 2020-08-19 11:17:24 +08:00
RuoYi 549c7ee97a 代码生成添加select必填选项 2020-08-18 18:15:12 +08:00
RuoYi 5fcf342f5a 修改sass为node-sass,避免el-icon图标乱码 2020-08-18 17:36:20 +08:00
若依 c89722a7dd !74 update ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java.
Merge pull request !74 from Lyy/N/A
2020-08-18 17:30:18 +08:00
若依 61e10f2783 !73 代码生成:select的表单验证失效
Merge pull request !73 from sunshine/master
2020-08-18 17:30:03 +08:00
若依 c6912ca1d5 !64 修改sass为node-sass,避免el-icon图标乱码
Merge pull request !64 from 心悦李国楠/dev-心悦
2020-08-18 17:27:19 +08:00
若依 5c4f0c5503 !65 根节点为子部门时,树状结构显示问题
Merge pull request !65 from GSTong/master
2020-08-18 17:21:51 +08:00
Lyy 4f7702b22a update ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java.
修改注释,CRSF禁用
2020-08-17 17:05:33 +08:00
疯狂的狮子li def4377226 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/utils/ruoyi.js
2020-08-17 12:57:06 +08:00
sunshine 04e294b3e5 代码生成:select的表单验证失效 2020-08-17 12:08:34 +08:00
RuoYi d596d5bb8e 还原 addDateRange js 函数 2020-08-13 12:08:24 +08:00
疯狂的狮子li 25afde4796 同步升级3.1 2020-08-13 11:28:11 +08:00
疯狂的狮子li 088bc98a43 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-ui/package.json
2020-08-13 11:24:04 +08:00
RuoYi 8f9f0c04cc 若依 3.1 2020-08-13 10:27:56 +08:00
RuoYi 1bad003fe3 修改公私钥 2020-08-12 11:55:26 +08:00
疯狂的狮子li 3aaff7b776 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/main.js
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/monitor/logininfor/index.vue
	ruoyi-ui/src/views/monitor/online/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/system/config/index.vue
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/system/notice/index.vue
	ruoyi-ui/src/views/system/post/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/tool/gen/index.vue
2020-08-12 10:16:29 +08:00
RuoYi ad4df6245d 优化防重复提交拦截器,请求没有消息头则使用地址 2020-08-11 11:24:55 +08:00
gst 0070297fe1 根节点为子部门时,树状结构显示问题 2020-08-11 10:59:02 +08:00
RuoYi 71ec44a545 修正在线用户日志记录类型 2020-08-10 17:26:11 +08:00
RuoYi 1efae4a588 优化防重复提交拦截器,接口请求非json数据不获取Body消息体 2020-08-10 17:10:34 +08:00
liguonan 650359c357 修改sass为node-sass,避免el-icon图标乱码 2020-08-10 16:28:50 +08:00
RuoYi a78211ca00 优化上级菜单不能选择自己 2020-08-10 12:20:52 +08:00
RuoYi 74f52677be 表格右侧工具栏组件 2020-08-10 10:12:39 +08:00
若依 60d5c03e65 !63 重写表格工具栏右侧添加刷新&显隐查询栏
Merge pull request !63 from 平凡/重写表格工具栏右侧添加刷新&显隐查询栏
2020-08-10 09:53:27 +08:00
疯狂的狮子li 4044ed23ea Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java
	ruoyi-ui/src/components/Editor/index.vue
2020-08-10 09:38:28 +08:00
平凡 5b04f388e9 重写表格工具栏右侧添加刷新&显隐查询栏 2020-08-09 11:07:10 +08:00
RuoYi a7eb07c7a0 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue 2020-08-07 16:07:02 +08:00
RuoYi d0b315f4a5 删除重复的placeholder 2020-08-07 16:03:45 +08:00
若依 a6051d4638 !60 代码注释错误
Merge pull request !60 from waylon/master
2020-08-07 15:56:44 +08:00
wanglei c4ee9ea7c8 修复注释错误 2020-08-07 14:26:30 +08:00
RuoYi 7c39f92538 修复富文本空格和缩进保存后不生效问题 2020-08-07 12:26:15 +08:00
疯狂的狮子li a9f4a4e111 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	.gitignore
	ruoyi-common/src/main/java/com/ruoyi/common/utils/spring/SpringUtils.java
	ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
	ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
	ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
	ruoyi-ui/src/utils/request.js
	ruoyi-ui/src/utils/ruoyi.js
2020-08-07 09:22:36 +08:00
RuoYi 51fa66f61a 唯一限制条件只返回单条数据 2020-08-05 14:28:45 +08:00
RuoYi 3b61ed56b0 添加获取当前的环境配置方法 2020-08-05 12:56:32 +08:00
若依 db904f679e !57 若干 ruoyi-ui 前端公共工具函数优化
Merge pull request !57 from FungLeo/master
2020-08-05 11:39:56 +08:00
若依 98982515f7 !55 修复在线用户判断逻辑
Merge pull request !55 from 心悦李国楠/dev-心悦
2020-08-05 11:39:09 +08:00
若依 1a7baa0639 !58 cell的cellType由Numeric修正为String
Merge pull request !58 from 4ook/master
2020-08-05 11:38:44 +08:00
mazh a9695d1756 修复BUG: 导出Excel功能, 当attr的cellType为String时, cell的cellType由Numeric修正为String。 2020-08-05 11:28:57 +08:00
fungleo d78f642201 Merge remote-tracking branch 'upstream/master' 2020-08-05 10:26:05 +08:00
fungleo 26dfee2ce8 彻底重写回显数据字典方法 2020-08-05 10:24:54 +08:00
RuoYi b56898858d 超时登录后页面跳转到首页 2020-08-05 10:04:43 +08:00
疯狂的狮子li c7785d1dbc Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	README.md
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
	ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
	ruoyi-ui/src/utils/request.js
2020-08-05 09:42:03 +08:00
疯狂的狮子li 5b1ed429ae 文件路径,使用jvm系统变量,兼容windows和linux; 2020-08-05 09:35:41 +08:00
疯狂的狮子li c8613ac9a7 错误修正 2020-08-04 14:34:05 +08:00
fungleo 503dd64e3f 优化 addDateRange js 函数 2020-08-04 14:32:29 +08:00
疯狂的狮子li d9aa681a0d 错误修正 2020-08-04 14:31:51 +08:00
fungleo 876ecf21c7 优化构建树形数据JS方法 2020-08-04 14:11:02 +08:00
fungleo 107672419e Merge remote-tracking branch 'upstream/master' 2020-08-04 11:59:42 +08:00
RuoYi 21d07c1d71 修复角色的权限分配后,未实时生效问题 2020-08-04 11:51:25 +08:00
fungleo d8d636fdbd 优化 回显数据字典(字符串数组)JS 函数 2020-08-04 11:39:43 +08:00
RuoYi 743fce7829 优化防重提交唯一标识 2020-08-04 11:07:37 +08:00
liguonan de2ac66f0b 修复在线用户判断逻辑 2020-08-03 17:57:33 +08:00
RuoYi 8b5d254242 全局异常状态汉化拦截处理 2020-08-03 09:11:49 +08:00
RuoYi a7eb0f98ac README 2020-08-03 09:02:28 +08:00
疯狂的狮子li c966d9bada Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	pom.xml
	ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
	ruoyi-admin/src/main/resources/application.yml
	ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java
	ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
	ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
	ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
	ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
	ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
	ruoyi-ui/babel.config.js
	ruoyi-ui/package.json
	ruoyi-ui/src/api/tool/gen.js
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/components/HeaderSearch/index.vue
	ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue
	ruoyi-ui/src/main.js
	ruoyi-ui/src/utils/ruoyi.js
	ruoyi-ui/src/views/login.vue
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/monitor/logininfor/index.vue
	ruoyi-ui/src/views/monitor/online/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/system/config/index.vue
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/system/notice/index.vue
	ruoyi-ui/src/views/system/post/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/tool/gen/genInfoForm.vue
	ruoyi-ui/src/views/tool/gen/index.vue
	ruoyi-ui/vue.config.js
	sql/ry_20200724.sql
2020-08-02 18:31:47 +08:00
疯狂的狮子li a95abff0d3 删除文件 ruoyi-common/src/main/resources 2020-08-02 18:18:35 +08:00
RuoYi 4dcf737db0 表格工具栏右侧添加刷新&显隐查询栏 2020-08-01 15:45:38 +08:00
RuoYi b32d0724b7 升级vue-cli版本到4.4.4 2020-07-31 22:35:30 +08:00
若依 8deacb702e !54 update ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml.
Merge pull request !54 from yongdaidai/N/A
2020-07-31 16:50:28 +08:00
若依 5be8d46d05 !51 优化生成vue文件的vm模板文件
Merge pull request !51 from FungLeo/master
2020-07-31 16:49:51 +08:00
yongdaidai fb19dd3e4e update ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml.
解决如果导入多个同名部门dept_name,parent_id相同,但是删除状态(del_flag)不同,导致查询结果为多条,mybatis不能映射为一条数据的问题.
2020-07-31 14:59:23 +08:00
RuoYi cbf4795fd5 表单类型为Integer/Long设置整形默认值 2020-07-30 21:47:50 +08:00
RuoYi 5d74ed32bd 表单类型为Integer/Long设置整形默认值 2020-07-30 16:03:44 +08:00
若依 6afaced3cf !53 update ruoyi-ui/src/views/system/role/index.vue.
Merge pull request !53 from abbfun/N/A
2020-07-30 10:04:11 +08:00
abbfun f3976c0792 update ruoyi-ui/src/views/system/role/index.vue.
权限修正(角色导出权限)
2020-07-29 21:16:53 +08:00
RuoYi 22225a5119 HTML过滤器改为将html转义 2020-07-28 17:28:09 +08:00
RuoYi fe030cc022 修改 node-sass 为 dart-sass 2020-07-27 16:55:51 +08:00
fungleo ca657b0482 优化 index-tree.vue.vm 文件,undefined 修改为 null 2020-07-26 17:33:42 +08:00
fungleo c1d1ace36d 优化index.vue.vm模板,!=1修改为严格不等;undefined修改为null 2020-07-26 17:29:40 +08:00
RuoYi 6e7d7aba93 代码生成支持自定义路径 2020-07-24 15:37:57 +08:00
RuoYi 388e36ed4d 优化参数 2020-07-23 21:45:22 +08:00
若依 5d89d0b36a !49 代码生成器默认mapper路径与默认mapperScan路径不一致
Merge pull request !49 from HaoRan/master
2020-07-23 21:25:10 +08:00
若依 55095a50b5 !48 ExcelUtil 功能优化
Merge pull request !48 from soulCoke/master
2020-07-23 21:25:02 +08:00
HR.Hu ee4b4de7b1 修复 代码生成器默认mapper路径与默认mapperScan路径不一致的bug 2020-07-23 21:01:18 +08:00
RuoYi 92c6301285 Excel支持分割字符串组内容 2020-07-23 18:58:45 +08:00
RuoYi 5c6adb25fc 代码生成支持复选框 2020-07-23 17:02:55 +08:00
soulCoke 8dd3ca5bb6 excel 导入数字不需要格式化 ,导入允许列和属性个数不一致。 2020-07-23 15:54:03 +08:00
Sxile be778ba370 修复参数注释 2020-07-23 14:54:11 +08:00
RuoYi 52d48fa63e 检查字符支持小数点&降级改成异常提醒 2020-07-23 11:29:40 +08:00
RuoYi df3ef54b41 验证码类型支持(数组计算、字符验证) 2020-07-23 11:17:04 +08:00
疯狂的狮子li 8a9a53225a Merge branch 'master' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2020-07-23 09:55:40 +08:00
疯狂的狮子li e19e2fd9cc Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java
	ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
	ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
	ruoyi-generator/src/main/resources/vm/sql/sql.vm
	ruoyi-ui/src/utils/index.js
	ruoyi-ui/src/utils/ruoyi.js
	ruoyi-ui/src/views/tool/gen/editTable.vue
	ruoyi-ui/src/views/tool/gen/genInfoForm.vue
	ruoyi-ui/src/views/tool/gen/importTable.vue
2020-07-23 09:54:57 +08:00
疯狂的狮子li 8e1b8a3a3f 全注入 可能会出现小白乱用的情况 改成@Autowired构造注入 2020-07-22 18:46:34 +08:00
RuoYi 1e40e60dbf 支持CORS跨域请求 2020-07-22 15:25:42 +08:00
若依 133a10ecf2 !47 修复和优化前端 utils 工具函数
Merge pull request !47 from FungLeo/master
2020-07-22 13:00:51 +08:00
RuoYi 6a84ae42a5 代码生成支持选择上级菜单 2020-07-21 15:52:11 +08:00
RuoYi b2d79b62d1 代码生成支持选择上级菜单 2020-07-21 11:21:20 +08:00
fungleo a09a342f58 优化 uitls/ruoyi.js 中 selectDictLabel 方法,数组迭代器换为 some
提高性能
2020-07-21 10:22:07 +08:00
fungleo 3e1bd8e3bc 修复 utils/index.js 中不包含 parseTime 函数的 bug 2020-07-21 10:18:56 +08:00
RuoYi 8a076e175f Excel导出导入支持dictType字典类型 2020-07-20 15:25:05 +08:00
疯狂的狮子li 6f47310c24 同步升级3.0 端口提交错误 改回8080 2020-07-20 10:47:00 +08:00
疯狂的狮子li 1e79d6f56f 同步升级3.0 2020-07-20 10:41:32 +08:00
RuoYi cee572f237 若依 3.0 2020-07-19 10:25:40 +08:00
RuoYi 0d341f1aaa 代码生成查询条件修正 2020-07-18 16:24:04 +08:00
RuoYi 11ab4b4832 缺少JsonIgnore包路径。 2020-07-18 12:32:22 +08:00
若依 3afa664173 !42 处理代码生成页面中的查询条件“创建时间”未生效的问题
Merge pull request !42 from 平凡/hmxmylove-master-patch-60881
2020-07-18 12:23:28 +08:00
若依 1624debefe !41 禁止加密密文返回前端
Merge pull request !41 from 平凡/hmxmylove-master-patch-79033
2020-07-18 12:23:20 +08:00
平凡 0238c4ad92 处理代码生成页面中的查询条件“创建时间”未生效的问题 2020-07-18 00:07:17 +08:00
平凡 0d52e11e3d 禁止加密密文返回前端 2020-07-18 00:03:27 +08:00
RuoYi d5cc95fefb 升级element-ui版本到2.13.2 2020-07-17 16:56:03 +08:00
疯狂的狮子li a53a3b3119 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/package.json
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
	ruoyi/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
	ruoyi/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java
	ruoyi/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysLoginController.java
	ruoyi/src/main/java/com/ruoyi/project/system/domain/SysUser.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
2020-07-17 16:43:47 +08:00
RuoYi d29fe10b93 删除babel,提高编译速度。 2020-07-17 16:20:31 +08:00
RuoYi 086b9cdc23 新增菜单默认主类目 2020-07-17 15:19:06 +08:00
疯狂的狮子li 22f3e2ad23 Merge branch 'master' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2020-07-17 11:41:29 +08:00
疯狂的狮子li 4555050301 删除 mybatis相关配置 2020-07-17 11:41:09 +08:00
Sxile 22b09535af 修复param参数名称 2020-07-17 11:11:03 +08:00
Sxile aad58640dc 翻转""为equals调用方,防止空指针异常 2020-07-17 11:10:14 +08:00
RuoYi 2211a75704 编码文件名修改为uuid方式 2020-07-17 09:24:04 +08:00
疯狂的狮子li e6dc647287 修复数据库decimal类型无improt问题 2020-07-16 20:09:35 +08:00
RuoYi 4088463adf 定时任务cron表达式验证 2020-07-16 16:54:14 +08:00
疯狂的狮子li e85334bacd 修复 生成器业务名 只会截取表下划线的最后一个 导致很多controller 会重名 问题 2020-07-16 13:14:01 +08:00
疯狂的狮子li a3a3d62034 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/layout/components/Navbar.vue
	ruoyi-ui/src/views/system/role/index.vue
2020-07-13 09:27:49 +08:00
若依 dd7a9850e3 !39 角色权限修改时已有权限未自动勾选异常修复
Merge pull request !39 from 严俊东/N/A
2020-07-10 18:28:20 +08:00
RuoYi a691da0c97 防止切换权限用户后登录出现404 2020-07-10 16:36:25 +08:00
RuoYi ec09696512 Excel支持sort导出排序 2020-07-10 14:47:58 +08:00
严俊东 d04ec69df4 角色权限修改时已有权限未自动勾选异常修复 2020-07-10 12:52:45 +08:00
疯狂的狮子li 59b42fddea Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi/src/main/java/com/ruoyi/framework/redis/RedisCache.java
2020-07-10 11:40:38 +08:00
若依 bc56aae219 !33 RedisCache中所有方法参数添加final,并优化list和set存取效率,添加其它常用redis方法
RedisCache中所有方法参数添加final,并优化list和set存取效率,添加其它常用redis方法
2020-07-10 10:28:57 +08:00
疯狂的狮子li eef65b449d Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/README.md
	ruoyi/src/main/resources/application.yml
2020-07-06 09:16:44 +08:00
RuoYi 31765f6392 Merge branch 'master' of https://github.com/yangzongzhuan/RuoYi-Vue 2020-07-04 16:07:51 +08:00
RuoYi 1e2a2026c6 修改文件编码格式 2020-07-04 16:04:30 +08:00
RuoYi e56efebce5 调整文件编码 2020-07-04 15:56:56 +08:00
若依 fb53780d8a !32 令牌秘钥的“秘”写错了,看到顺手就提交了哈
Merge pull request !32 from jack/N/A
2020-07-02 21:01:23 +08:00
liguonan 3a69a31d07 RedisCache中所有方法参数添加final,并优化list取出效率,添加其它常用redis方法 2020-07-02 19:35:37 +08:00
jack d9367425fa 令牌秘钥的“秘”写错了,看到顺手就提交了哈 2020-07-02 18:03:18 +08:00
疯狂的狮子li 942629722d 删除 测试数据 2020-07-02 10:58:13 +08:00
疯狂的狮子li f652a035b7 增加 数据库超时重连配置 2020-07-01 09:16:47 +08:00
疯狂的狮子li c70ec63952 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi/sql/ry_20200629.sql
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysUserController.java
2020-07-01 09:16:25 +08:00
RuoYi 338f661d41 创建用户不允许选择系统管理员角色 2020-06-29 11:44:46 +08:00
疯狂的狮子li f0bee6af63 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/system/user/profile/userAvatar.vue
	ruoyi-ui/src/views/tool/gen/editTable.vue
	ruoyi-ui/src/views/tool/gen/index.vue
	ruoyi/src/main/java/com/ruoyi/RuoYiApplication.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java
2020-06-29 09:08:18 +08:00
疯狂的狮子li 2e95557840 删除测试代码 2020-06-29 09:07:17 +08:00
RuoYi 794d6f17db 修复代码生成导入表结构出现异常页面不提醒问题 2020-06-24 17:55:36 +08:00
RuoYi 7a9564ced5 修复代码生成点击多次表修改数据不变化的问题 2020-06-24 17:17:22 +08:00
RuoYi 5d5f955a34 修复头像上传成功二次打开无法改变裁剪框大小和位置问题 2020-06-24 15:59:18 +08:00
RuoYi eac9403ea4 修复布局为small者mini用户表单显示错位问题 2020-06-24 15:21:39 +08:00
RuoYi f7f02e3a3f 修复热部署导致的强换异常问题 2020-06-24 14:26:21 +08:00
疯狂的狮子li 827bbc2b17 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi/src/main/java/com/ruoyi/common/constant/HttpStatus.java
	ruoyi/src/main/java/com/ruoyi/common/core/lang/UUID.java
	ruoyi/src/main/java/com/ruoyi/common/utils/VerifyCodeUtils.java
	ruoyi/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java
	ruoyi/src/main/java/com/ruoyi/framework/config/FastJson2JsonRedisSerializer.java
	ruoyi/src/main/java/com/ruoyi/project/monitor/service/impl/SysOperLogServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysLoginController.java
	ruoyi/src/main/java/com/ruoyi/project/system/domain/SysRole.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysDictDataServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysNoticeServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysPostServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysUserOnlineServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/service/GenTableColumnServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableColumnService.java
2020-06-21 10:06:26 +08:00
若依 0dff669374 !28 update ruoyi-ui/src/views/monitor/job/log.vue.
Merge pull request !28 from abbfun/N/A
2020-06-19 22:17:49 +08:00
Sxile 5bd2838b2b 修复注释与参数名称不对应 2020-06-19 18:22:47 +08:00
Sxile f39be3ab9b 添加缺少的@ Override 2020-06-19 18:17:57 +08:00
Sxile f5badba2bb 添加{}使代码更容易理解 2020-06-19 18:13:54 +08:00
Sxile 9ea0041fab 常量接口修改为常量类 2020-06-19 16:01:48 +08:00
abbfun f6de03a009 update ruoyi-ui/src/views/monitor/job/log.vue.
data对象中属性【表单参数form】重复
2020-06-19 10:00:41 +08:00
疯狂的狮子li eb7c29c647 解决文件上传bug,因undertow与tomcat对文件写入的底层实现不同,无需创建新文件 2020-06-18 15:33:36 +08:00
疯狂的狮子li 8d318c222e Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java
2020-06-18 15:13:40 +08:00
RuoYi a195df175f 修正定时任务日志权限字符 2020-06-18 15:07:56 +08:00
疯狂的狮子li db380f9af1 还原 2020-06-15 14:06:12 +08:00
疯狂的狮子li 694fb19628 修复 上传文件重名问题 2020-06-15 13:07:14 +08:00
疯狂的狮子li c53d5fd1f6 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/monitor/online/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/vue.config.js
	ruoyi/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
	ruoyi/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/util/GenUtils.java
2020-06-12 15:14:19 +08:00
RuoYi 48ba7d5ed6 修改用户管理复选框宽度,防止部分浏览器出现省略号 2020-06-12 13:45:27 +08:00
RuoYi 03aef64693 缺少EscapeUtil包路径。 2020-06-10 22:09:35 +08:00
若依 c3b5cb20d8 !25 Live轻量级PR
Merge pull request !25 from Live/live
2020-06-10 22:04:51 +08:00
Live 2daf89e0c6 HttpUtils.sendPost()方法,参数无需拼接参数到url,否则会出现双份参数
请求url或form参数 会出现双份参数,并无法获取
{"token":["xxxxxxx","xxxxxxx"],"payType":["weixin","weixin"],"amount":["100","100"],"orderId":["123","123"]}
2020-06-10 18:30:17 +08:00
Live a2d1160205 add ruoyi-ui/public/robots.txt.
项目添加robots.txt 防止后台管理系统被搜索引擎收录
2020-06-09 11:38:16 +08:00
Live 0c069a57cc 项目添加robots.txt 防止后台管理系统被搜索引擎收录 2020-06-09 11:37:39 +08:00
Live 19b8688759 IpUtils工具,清除Xss特殊字符,防止Xff注入攻击 2020-06-09 11:36:10 +08:00
Live 33f09d7747 生成domain 如果是浮点型 统一用BigDecimal 2020-06-09 11:33:09 +08:00
疯狂的狮子li 6bb7db31aa Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/components/HeaderSearch/index.vue
	ruoyi-ui/src/components/IconSelect/index.vue
	ruoyi-ui/src/permission.js
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
	ruoyi/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysPostController.java
	ruoyi/src/main/resources/mybatis/system/SysDeptMapper.xml
	ruoyi/src/main/resources/mybatis/system/SysDictDataMapper.xml
	ruoyi/src/main/resources/mybatis/system/SysRoleMapper.xml
	ruoyi/src/main/resources/mybatis/system/SysUserMapper.xml
	ruoyi/src/main/resources/vm/vue/index.vue.vm
	ruoyi/src/main/resources/vm/xml/mapper.xml.vm
2020-06-08 12:01:19 +08:00
RuoYi 7afc5acc6f 定时任务调整label-width,防止部署出现错位 2020-06-07 17:52:14 +08:00
RuoYi 8a7f33807b 调整表头固定列默认样式 2020-06-07 17:20:35 +08:00
RuoYi 945fb282dd 代码生成模板调整,字段为String并且必填则加空串条件 2020-06-07 16:11:36 +08:00
RuoYi 2fd3cbbd18 Merge branch 'master' of https://github.com/yangzongzhuan/RuoYi-Vue 2020-06-07 16:05:48 +08:00
RuoYi 5680d91a87 代码生成字典Integer/Long使用parseInt 2020-06-07 16:04:07 +08:00
RuoYi 9d8da28f2e Merge branch 'master' of https://github.com/yangzongzhuan/RuoYi-Vue 2020-06-04 16:00:06 +08:00
若依 40185f27e2 !23 修复退出登录重定向到登录页,登录后参数丢失 update ruoyi-ui/src/permission.js.
Merge pull request !23 from Elune/N/A
2020-06-04 14:57:05 +08:00
Elune ef5adf2e2a update ruoyi-ui/src/permission.js.
修复退出登录重定向到登录页,登录后参数丢失。/article?id=6

https://github.com/elunez/eladmin-web/pull/94
2020-06-04 14:53:24 +08:00
RuoYi ff695831dc 修复dict_sort不可update为0的问题&查询返回增加dict_sort升序排序 2020-06-04 14:34:57 +08:00
RuoYi ea9effaf32 修正岗位导出权限注解 2020-06-04 13:57:25 +08:00
RuoYi 4cb4de86db 修复首页搜索菜单外链无法点击跳转问题 2020-06-04 09:48:05 +08:00
RuoYi c861b78f80 修复菜单管理选择图标,backspace删除时不过滤数据 2020-06-03 17:59:32 +08:00
RuoYi 5123832cd7 用户管理部门分支节点不可检查&显示计数 2020-06-03 16:53:17 +08:00
RuoYi ec407bbe25 数据范围过滤属性调整 2020-06-03 13:00:30 +08:00
疯狂的狮子li 2e37fe9bc9 Merge branch 'master' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2020-06-01 13:40:15 +08:00
疯狂的狮子li 8a62368141 同步若依2.3版本 2020-06-01 13:40:01 +08:00
疯狂的狮子li 5f866906d1 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/package.json
	ruoyi-ui/src/api/system/config.js
	ruoyi-ui/src/api/system/dict/data.js
	ruoyi-ui/src/api/system/dict/type.js
	ruoyi-ui/src/assets/styles/element-variables.scss
	ruoyi-ui/src/components/SvgIcon/index.vue
	ruoyi-ui/src/layout/components/Sidebar/Link.vue
	ruoyi-ui/src/layout/components/Sidebar/index.vue
	ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue
	ruoyi-ui/src/layout/components/TagsView/index.vue
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/system/config/index.vue
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/system/notice/index.vue
	ruoyi-ui/src/views/system/post/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/system/user/profile/resetPwd.vue
	ruoyi-ui/src/views/system/user/profile/userAvatar.vue
	ruoyi-ui/src/views/system/user/profile/userInfo.vue
	ruoyi-ui/vue.config.js
	ruoyi/pom.xml
	ruoyi/src/main/java/com/ruoyi/common/constant/Constants.java
	ruoyi/src/main/java/com/ruoyi/common/utils/StringUtils.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/ISysConfigService.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/ISysDictDataService.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/ISysDictTypeService.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysDictDataServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java
	ruoyi/src/main/resources/application.yml
	ruoyi/src/main/resources/vm/sql/sql.vm
	ruoyi/src/main/resources/vm/vue/index.vue.vm
2020-06-01 13:34:08 +08:00
RuoYi b4b3ff8813 若依 2.3 2020-06-01 10:49:36 +08:00
RuoYi 4cf3786f48 升级fastjson到最新版1.2.70 修复高危安全漏洞 2020-06-01 10:46:30 +08:00
RuoYi 0d7f5e037e 若依 2.3 2020-06-01 10:36:19 +08:00
RuoYi 31b63bf14d 升级fastjson到最新版1.2.70 修复高危安全漏洞 2020-06-01 10:09:39 +08:00
RuoYi 5ce4291ef1 若依 2.3 2020-06-01 09:18:18 +08:00
RuoYi d48475c585 dev启动默认打开浏览器 2020-05-31 09:56:11 +08:00
RuoYi f26f90fa23 使用vue-cli默认source-map 2020-05-30 15:08:36 +08:00
RuoYi 8a61b9fe99 slidebar eslint报错优化 2020-05-30 15:04:11 +08:00
RuoYi bb5520a7d1 当tags-view滚动关闭右键菜单 2020-05-30 14:54:58 +08:00
RuoYi 1e2058bdfb 字典管理添加缓存读取 2020-05-30 14:29:19 +08:00
RuoYi 0d546e4ba4 参数管理支持缓存操作 2020-05-30 13:46:31 +08:00
RuoYi b16b860b63 侧边栏key调整 2020-05-30 12:13:12 +08:00
疯狂的狮子li 48999868d8 update README.md. 2020-05-27 17:49:10 +08:00
疯狂的狮子li 35e940f0b5 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/layout/components/Sidebar/index.vue
	ruoyi-ui/src/layout/components/TagsView/index.vue
	ruoyi/src/main/java/com/ruoyi/common/constant/Constants.java
	ruoyi/src/main/java/com/ruoyi/common/constant/UserConstants.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysMenuController.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java
2020-05-27 09:05:31 +08:00
RuoYi b5c789a267 防止空路由出现的警告,设置默认path=/ 2020-05-26 18:22:53 +08:00
RuoYi bb1324a70a 支持一级菜单(和主页同级)在main区域显示 2020-05-26 14:33:45 +08:00
RuoYi c1db17dd77 限制外链地址必须以http(s)://开头 2020-05-26 11:54:46 +08:00
若依 30be2a08a1 !22 tagview & sidebar 主题颜色与element ui(全局)同步
Merge pull request !22 from 北风/master
2020-05-26 10:49:27 +08:00
疯狂的狮子li 4460fae46f Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue 2020-05-23 10:31:39 +08:00
疯狂的狮子li c20dabbcdf 更改 README.md 增加改动说明 2020-05-23 10:29:31 +08:00
北风 98bb78a9d6 调整空格同步格式 2020-05-22 19:06:37 +08:00
北风 ff0749984d tagview & sidebar 主题颜色与element ui(全局)同步 2020-05-22 19:02:38 +08:00
RuoYi 2bd787f633 README 2020-05-22 17:46:56 +08:00
疯狂的狮子li 98941acd2a Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/api/system/dept.js
	ruoyi-ui/src/utils/request.js
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/monitor/logininfor/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java
	ruoyi/src/main/java/com/ruoyi/framework/aspectj/lang/annotation/DataSource.java
	ruoyi/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
	ruoyi/src/main/java/com/ruoyi/framework/web/controller/BaseController.java
	ruoyi/src/main/java/com/ruoyi/framework/web/page/TableDataInfo.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDeptController.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
	ruoyi/src/main/resources/application.yml
2020-05-20 09:15:19 +08:00
RuoYi cad8604cac README 2020-05-19 11:40:15 +08:00
RuoYi 41799c10f0 修改数据源类型优先级,先根据方法,再根据类 2020-05-19 11:00:47 +08:00
RuoYi 25b114aae7 支持是否需要设置token属性,自定义返回码消息。 2020-05-18 14:27:15 +08:00
RuoYi 5434ceb1a3 swagger请求前缀加入配置。 2020-05-17 22:43:09 +08:00
RuoYi 922f61e05b 登录地点设置内容过长则隐藏显示 2020-05-17 15:53:45 +08:00
RuoYi 9aeb0cc1f3 修复定时任务执行一次按钮后不提示消息问题 2020-05-17 15:47:29 +08:00
RuoYi 9f4918cc14 修改上级部门(选择项排除本身和下级) 2020-05-16 18:39:30 +08:00
RuoYi 8c7aca2527 缺少 @Override 2020-05-16 17:15:13 +08:00
疯狂的狮子li 661cc0afdb Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi/src/main/java/com/ruoyi/common/constant/Constants.java
	ruoyi/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
	ruoyi/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java
	ruoyi/src/main/resources/application.yml
	ruoyi/src/main/resources/mybatis/system/SysDeptMapper.xml
2020-05-14 16:25:43 +08:00
RuoYi 4f1f0bdbd3 通用http发送方法增加参数 contentType 编码类型 2020-05-14 14:27:47 +08:00
RuoYi f3d0bf6c26 更换IP地址查询接口 2020-05-13 21:11:14 +08:00
RuoYi ddcabaa6fb 淘宝IP接口不稳定,默认关闭。 2020-05-13 18:50:59 +08:00
疯狂的狮子li d350c048b8 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/store/modules/tagsView.js
	ruoyi/src/main/java/com/ruoyi/common/constant/UserConstants.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDeptController.java
	ruoyi/src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/ISysDeptService.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java
	ruoyi/src/main/resources/mybatis/system/SysDeptMapper.xml
2020-05-07 17:44:08 +08:00
RuoYi 9d0309489c 修复页签变量undefined 2020-05-07 12:28:59 +08:00
RuoYi 4b77378458 添加校验部门包含未停用的子部门 2020-05-07 12:00:09 +08:00
疯狂的狮子li b15be7078c 同步ruoyi-vue更新 2020-05-06 11:57:51 +08:00
RuoYi 066d3f3f9f 修改定时任务详情下次执行时间日期显示错误 2020-04-30 12:11:53 +08:00
RuoYi a3e97ed677 角色管理查询设置默认排序字段 2020-04-29 22:26:05 +08:00
RuoYi 2d93e7aeb3 swagger添加enable参数控制是否启用 2020-04-29 21:58:24 +08:00
RuoYi 1a079532e8 只对json类型请求构建可重复读取inputStream的request 2020-04-29 21:14:12 +08:00
RuoYi eec5c58b4a 修改代码生成字典字段int类型没有自动选中问题 2020-04-29 16:06:49 +08:00
RuoYi a34edef603 vuex用户名取值修正 2020-04-29 15:02:17 +08:00
疯狂的狮子li 42008124b6 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	ruoyi-ui/src/assets/styles/ruoyi.scss
#	ruoyi-ui/src/views/tool/gen/index.vue
2020-04-29 09:17:17 +08:00
疯狂的狮子li 1dae7c9bc9 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/store/modules/permission.js
	ruoyi-ui/src/views/tool/gen/index.vue
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/util/VelocityUtils.java
	ruoyi/src/main/resources/vm/java/domain.java.vm
	ruoyi/src/main/resources/vm/vue/index.vue.vm
2020-04-29 09:16:29 +08:00
RuoYi aa23ef1e99 添加新群号:104180207 2020-04-28 12:05:52 +08:00
疯狂的狮子li 1062da678f Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/store/modules/permission.js
	ruoyi-ui/src/views/tool/gen/index.vue
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/util/VelocityUtils.java
	ruoyi/src/main/resources/vm/java/domain.java.vm
	ruoyi/src/main/resources/vm/vue/index.vue.vm
2020-04-25 20:14:40 +08:00
疯狂的狮子li 4bee0d652a 修复前端页面报错 找不到模块问题 2020-04-25 20:09:39 +08:00
RuoYi e7ac78535d 表格树模板去掉多余的) 2020-04-24 10:49:12 +08:00
RuoYi 8448b2b993 代码生成序号修正 2020-04-21 18:31:11 +08:00
RuoYi b5cacd5a3c 全屏情况下不调整上外边距 2020-04-21 17:28:39 +08:00
RuoYi 526c3867b4 代码生成Date字段添加默认格式 2020-04-21 17:13:02 +08:00
RuoYi d452ddf5f0 用户管理角色选择权限控制 2020-04-21 16:00:06 +08:00
RuoYi da5c1328be 修复路由懒加载报错问题 2020-04-21 14:48:34 +08:00
疯狂的狮子li 405ad4280c Merge branch 'master' of https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 2020-04-21 09:09:43 +08:00
疯狂的狮子li 44e2618ee2 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/system/config/index.vue
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi-ui/src/views/system/dict/data.vue
	ruoyi-ui/src/views/system/dict/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/system/notice/index.vue
	ruoyi-ui/src/views/system/post/index.vue
	ruoyi-ui/src/views/system/role/index.vue
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi-ui/src/views/system/user/profile/userAvatar.vue
	ruoyi-ui/src/views/tool/gen/importTable.vue
	ruoyi-ui/src/views/tool/gen/index.vue
	ruoyi/sql/ry_20200415.sql
	ruoyi/src/main/java/com/ruoyi/project/system/domain/SysMenu.java
	ruoyi/src/main/java/com/ruoyi/project/system/domain/vo/RouterVo.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java
	ruoyi/src/main/resources/mybatis/system/SysMenuMapper.xml
	ruoyi/src/main/resources/vm/sql/sql.vm
	ruoyi/src/main/resources/vm/vue/index.vue.vm
2020-04-21 09:08:48 +08:00
疯狂的狮子li 09918e338a 修复 undertow 未生效问题 2020-04-19 14:47:25 +08:00
RuoYi aae1825697 模板sql.vm添加菜单状态 2020-04-18 11:50:47 +08:00
RuoYi 5a4a0e7987 用户名称不能修改 2020-04-17 15:17:32 +08:00
RuoYi 14392d9764 dialog添加append-to-body属性,防止ie遮罩 2020-04-17 14:14:54 +08:00
RuoYi ec98648e4d 菜单区分状态和显示隐藏功能 2020-04-15 18:04:41 +08:00
疯狂的狮子li 1dac24c9f8 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi/pom.xml
2020-04-13 12:51:20 +08:00
疯狂的狮子li 76ea06748b 升级fastjson到最新版1.2.68 修复安全加固 2020-04-13 12:48:03 +08:00
RuoYi 5d20be2976 升级fastjson到最新版1.2.68 修复安全加固 2020-04-13 11:58:03 +08:00
疯狂的狮子li 29b131b107 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi/src/main/resources/vm/vue/index.vue.vm
2020-04-10 13:43:18 +08:00
RuoYi 5ded2569d0 修复代码生成如果选择字典类型缺失逗号问题 2020-04-10 11:49:08 +08:00
RuoYi 48509d6488 添加新群号 2020-04-08 14:22:48 +08:00
疯狂的狮子li 31a2713012 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/package.json
	ruoyi-ui/src/api/login.js
	ruoyi-ui/src/assets/styles/ruoyi.scss
	ruoyi-ui/src/layout/components/Navbar.vue
	ruoyi-ui/src/utils/ruoyi.js
	ruoyi-ui/src/views/tool/build/index.vue
	ruoyi-ui/src/views/tool/gen/editTable.vue
	ruoyi-ui/src/views/tool/gen/index.vue
	ruoyi/src/main/java/com/ruoyi/project/monitor/domain/SysLogininfor.java
	ruoyi/src/main/java/com/ruoyi/project/monitor/domain/SysOperLog.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysLoginController.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
	ruoyi/src/main/resources/mybatis/tool/GenTableMapper.xml
2020-04-03 10:16:28 +08:00
RuoYi ec65b1f7ec 登录请求params更换为data,防止暴露url 2020-04-01 14:01:31 +08:00
RuoYi 8a394f0363 日志返回时间格式处理 2020-04-01 13:09:27 +08:00
RuoYi 441da7ecd7 添加handle控制允许拖动的元素 2020-04-01 12:21:48 +08:00
RuoYi 992a63482c 布局设置点击扩大范围 2020-04-01 11:35:58 +08:00
RuoYi 8132ae0913 代码生成列属性排序查询 2020-04-01 10:15:29 +08:00
RuoYi ed04c24eb3 代码生成列支持拖动排序 2020-04-01 09:52:49 +08:00
RuoYi f9799cd444 修复时间格式不支持ios问题 2020-03-31 16:40:26 +08:00
RuoYi 6b147281ad 表单构建添加父级class,防止冲突 2020-03-31 16:03:06 +08:00
疯狂的狮子li 39d8723159 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi/src/main/resources/mybatis/system/SysMenuMapper.xml
2020-03-24 15:29:45 +08:00
RuoYi e07d4c18ee 定时任务并发属性修正 2020-03-22 18:02:33 +08:00
RuoYi 9b0828be8e 角色禁用&菜单隐藏不查询权限 2020-03-22 16:41:30 +08:00
疯狂的狮子li 67657e9f02 升级 v2.2 2020-03-19 09:32:15 +08:00
疯狂的狮子li 2a922caf89 升级 v2.2 2020-03-19 09:22:46 +08:00
疯狂的狮子li bd7371fb8b 升级 v2.2 2020-03-19 09:21:17 +08:00
疯狂的狮子li 51ae2d1a87 升级 v2.2 2020-03-19 09:13:07 +08:00
疯狂的狮子li b1afb78ca2 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/package.json
	ruoyi-ui/src/components/SvgIcon/index.vue
	ruoyi-ui/src/layout/components/TagsView/index.vue
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/store/modules/tagsView.js
	ruoyi-ui/src/views/monitor/job/index.vue
	ruoyi/pom.xml
	ruoyi/src/main/java/com/ruoyi/RuoYiApplication.java
	ruoyi/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
	ruoyi/src/main/java/com/ruoyi/framework/web/domain/Server.java
	ruoyi/src/main/java/com/ruoyi/project/common/CommonController.java
	ruoyi/src/main/resources/application.yml
2020-03-19 09:10:03 +08:00
RuoYi 2cc14e5f56 若依 2.2 2020-03-18 09:43:17 +08:00
疯狂的狮子li 2e6bb454f4 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/bin/package.bat
	ruoyi-ui/package.json
	ruoyi-ui/src/assets/styles/element-ui.scss
	ruoyi-ui/src/layout/components/Navbar.vue
	ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue
	ruoyi-ui/src/layout/components/TagsView/index.vue
	ruoyi-ui/src/router/index.js
	ruoyi-ui/src/views/components/icons/element-icons.js
	ruoyi-ui/src/views/dashboard/mixins/resize.js
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi/src/main/java/com/ruoyi/common/filter/XssFilter.java
	ruoyi/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
	ruoyi/src/main/java/com/ruoyi/common/utils/text/CharsetKit.java
	ruoyi/src/main/java/com/ruoyi/common/utils/text/Convert.java
	ruoyi/src/main/java/com/ruoyi/common/utils/text/StrFormatter.java
	ruoyi/src/main/java/com/ruoyi/framework/config/FilterConfig.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysNoticeController.java
	ruoyi/src/main/java/com/ruoyi/project/system/mapper/SysNoticeMapper.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/ISysNoticeService.java
	ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysNoticeServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/service/GenTableColumnServiceImpl.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/util/GenUtils.java
2020-03-16 09:58:40 +08:00
RuoYi 505ee1d63e 添加一个打包Web工程bat 2020-03-15 21:00:53 +08:00
RuoYi 4bbdc1e87b 修复TagsView组件中,鼠标滚轮按下的时候,可以关闭不可关闭的tag 2020-03-15 20:25:58 +08:00
RuoYi 3b87128461 修复点击退出登录有时会无效问题 2020-03-15 20:13:33 +08:00
RuoYi bc65e59fcb 修复charts切换侧边栏或者缩放窗口显示bug 2020-03-15 20:07:14 +08:00
RuoYi 56339214b6 升级element-ui版本到2.13.0 2020-03-15 20:00:01 +08:00
RuoYi 61142595c4 固定重定向路径表达式 2020-03-15 19:53:09 +08:00
RuoYi af7aa35884 路由地址添加必填限制 2020-03-14 10:58:51 +08:00
RuoYi 109c64e7c2 批量替换表前缀调整 2020-03-13 22:14:58 +08:00
RuoYi c0cd030d0f 批量替换表前缀修改 2020-03-13 21:41:57 +08:00
RuoYi 7604d59e49 修复通知公告批量删除异常问题 2020-03-13 21:24:26 +08:00
RuoYi 02062f31e9 通用http工具类 2020-03-13 21:18:41 +08:00
RuoYi ab992f4848 修复防重复提交注解无效问题 2020-03-13 21:15:50 +08:00
RuoYi baea48be68 调整包路径 2020-03-13 18:10:32 +08:00
RuoYi 1590e1068c 删除多余包 2020-03-13 18:07:02 +08:00
疯狂的狮子li 7507a3ed2a Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/system/user/profile/index.vue
	ruoyi/src/main/java/com/ruoyi/framework/security/service/SysPermissionService.java
	ruoyi/src/main/java/com/ruoyi/framework/security/service/TokenService.java
	ruoyi/src/main/resources/mybatis/monitor/SysOperLogMapper.xml
2020-03-09 09:40:39 +08:00
RuoYi 103583a847 个人信息创建时间获取属性值 2020-03-08 21:16:16 +08:00
RuoYi 166d5ec55f 修改个人信息,密码后redis中登录信息不会过期问题 2020-03-07 10:19:04 +08:00
RuoYi 09a3a971ff 操作日志排序调整 2020-03-07 10:11:22 +08:00
疯狂的狮子li bed1fd98ff Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/login/auth-redirect.vue
	ruoyi-ui/src/views/login/components/SocialSignin.vue
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/tool/gen/editTable.vue
2020-03-02 16:15:24 +08:00
RuoYi f18b3bc6be 代码生成字段描述可编辑 2020-02-28 20:29:19 +08:00
RuoYi 0c1a27769a 删除无用页面 2020-02-28 19:56:19 +08:00
疯狂的狮子li f9b9156c8a Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/monitor/operlog/index.vue
	ruoyi-ui/src/views/tool/gen/importTable.vue
	ruoyi/src/main/resources/vm/java/mapper.java.vm
	ruoyi/src/main/resources/vm/java/service.java.vm
2020-02-28 17:34:44 +08:00
RuoYi bb1340ecc6 操作日志详细显示类型 2020-02-25 19:33:29 +08:00
RuoYi 759a0fcb32 导入表单击行数据时选中对应的复选框 2020-02-25 13:49:48 +08:00
疯狂的狮子li 87c0074fab Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java
2020-02-25 10:48:50 +08:00
RuoYi 9d45070429 设置mybatis全局的配置文件 2020-02-24 14:32:21 +08:00
疯狂的狮子li 0ba48df61e 升级 v2.1 2020-02-24 10:19:17 +08:00
疯狂的狮子li db20b4a3d3 升级 v2.1 2020-02-24 10:02:53 +08:00
疯狂的狮子li 6687efd887 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/package.json
	ruoyi-ui/src/components/RuoYi/Git/index.vue
	ruoyi-ui/src/layout/components/Navbar.vue
	ruoyi-ui/src/main.js
	ruoyi-ui/src/utils/index.js
	ruoyi-ui/src/utils/permission.js
	ruoyi-ui/src/utils/ruoyi.js
	ruoyi-ui/src/views/system/dept/index.vue
	ruoyi-ui/src/views/system/menu/index.vue
	ruoyi-ui/src/views/tool/build/index.vue
	ruoyi-ui/src/views/tool/gen/genInfoForm.vue
	ruoyi/pom.xml
	ruoyi/src/main/java/com/ruoyi/common/constant/GenConstants.java
	ruoyi/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDeptController.java
	ruoyi/src/main/java/com/ruoyi/project/system/controller/SysMenuController.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/domain/GenTable.java
	ruoyi/src/main/java/com/ruoyi/project/tool/gen/util/VelocityUtils.java
	ruoyi/src/main/resources/application.yml
	ruoyi/src/main/resources/mybatis/monitor/SysLogininforMapper.xml
	ruoyi/src/main/resources/mybatis/monitor/SysOperLogMapper.xml
	ruoyi/src/main/resources/vm/java/controller.java.vm
	ruoyi/src/main/resources/vm/java/domain.java.vm
	ruoyi/src/main/resources/vm/vue/index.vue.vm
2020-02-24 09:56:22 +08:00
RuoYi cb0a4b78ee 若依 2.1 2020-02-24 09:28:16 +08:00
疯狂的狮子li c9527fcf42 修复地址开关无效问题 2020-02-24 09:23:37 +08:00
RuoYi 46a1695292 修复地址开关无效问题 2020-02-23 15:43:50 +08:00
疯狂的狮子li a1cf719d26 Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
 Conflicts:
	ruoyi-ui/src/views/system/user/index.vue
	ruoyi/src/main/java/com/ruoyi/project/system/domain/SysUser.java
2020-02-18 14:47:23 +08:00
RuoYi b7107a4dba 用户手机邮箱必填&密码参数修改 2020-02-18 11:15:08 +08:00
RuoYi c0cd2f61da 返回参数忽略密码字段 2020-02-17 15:07:27 +08:00
疯狂的狮子li 7cd5c26337 修复sql报错 2020-02-16 16:30:10 +08:00
疯狂的狮子li fbba782f5c 增加彩色日志输出 调整优化日志格式 2020-02-14 13:58:35 +08:00
疯狂的狮子li a108574387 增加彩色日志输出 调整优化日志格式 2020-02-14 13:40:39 +08:00
疯狂的狮子li de74b802d4 web 容器使用 undertow 性能更强 2020-02-14 13:37:19 +08:00
疯狂的狮子li 83c427c1bb 增加 代码生成与MybatisPlus测试案例 cstest 2020-02-14 13:36:52 +08:00
疯狂的狮子li 7c8d062d58 修改 代码生成器 适配 MybatisPlus 2020-02-14 13:27:55 +08:00
疯狂的狮子li c7bc8e415f 集成 Lombok + MybatisPlus 3.3.0 2020-02-14 13:27:09 +08:00
疯狂的狮子li 2841620be6 初始化项目 2020-02-13 10:48:51 +08:00
疯狂的狮子li b279aa391c 删除文件 ruoyi 2020-02-13 10:47:22 +08:00
疯狂的狮子li abdb1048ed 删除文件 ruoyi-ui 2020-02-13 10:47:14 +08:00
疯狂的狮子li a7fa51303b 删除文件 LICENSE 2020-02-13 10:47:08 +08:00
疯狂的狮子li 3dd52a3f7d 删除文件 README.md 2020-02-13 10:47:02 +08:00
RuoYi c0ca2f837c 修改密码更新缓存信息 2020-02-10 13:28:50 +08:00
RuoYi 891062a7de 配置文件增加redis属性password 2020-02-08 19:25:57 +08:00
RuoYi 554beaf6e7 修改在角色管理页修改菜单权限偶尔未选中问题 2020-02-08 18:30:09 +08:00
RuoYi a5c170fa2a 修改同一页面el-upload和Editor时不显示问题。 2020-02-08 17:05:46 +08:00
RuoYi 5cdb4ecba5 修改用户个人资料同步缓存信息 2020-02-08 16:39:13 +08:00
RuoYi d49ac2e0f8 成功登陆不恢复按钮,防止多次点击 2020-02-08 15:31:29 +08:00
RuoYi c23c8ae248 README 2020-02-08 14:54:17 +08:00
RuoYi 140be61003 根据用户权限加载菜单数据树形结构 2020-02-08 14:49:46 +08:00
RuoYi a5dce6cccc 防止db字段名为一个字母导致出现生成异常 2020-02-02 15:43:43 +08:00
RuoYi f754a18676 添加新群号 2020-01-11 10:39:49 +08:00
RuoYi 0348349a86 Jackson日期反序列化时区问题 2020-01-03 16:57:35 +08:00
RuoYi 436f8eb737 部门顶级节点逻辑优化 2019-12-31 18:45:15 +08:00
RuoYi d677cd11d1 修改部门树默认值为[] 2019-12-31 18:03:01 +08:00
RuoYi 9067369ce0 防止时间为空出现的异常 2019-12-31 17:24:34 +08:00
RuoYi 3436f77c4a request.js缺少Message引用 2019-12-31 17:18:56 +08:00
RuoYi b9a97ef4aa 修改验证码记录提示错误 2019-12-31 17:04:19 +08:00
RuoYi de870bd2fe 修改用户管理分页不正确的问题 2019-12-26 17:32:10 +08:00
RuoYi 61e48da354 规避上传头像控制台异常 2019-12-26 16:36:09 +08:00
RuoYi 3755597c76 添加一个默认空属性,用来判断节点显示 2019-12-26 15:59:03 +08:00
RuoYi 71c31dfd66 HTML过滤器不替换双引号为&quot;,防止json格式无效 2019-12-20 17:09:33 +08:00
RuoYi 8bc7296fb4 添加HTML过滤器,用于去除XSS漏洞隐患 2019-12-20 11:34:45 +08:00
RuoYi 2d992db62a 修复多数据源下enabled=false导致读取不到bean导致异常问题 2019-12-19 16:21:49 +08:00
RuoYi 687e67dbea 修正关键词错误 2019-12-16 11:26:39 +08:00
RuoYi b508e6f202 新增用户导入 2019-12-11 18:12:00 +08:00
RuoYi 8216d4e839 阿里云服务器89元/年,双12年末特惠,爆款产品限时1折 2019-12-09 11:33:23 +08:00
RuoYi d2854c73f0 代码生成vue文件修正 2019-12-04 10:23:48 +08:00
RuoYi 04289c6021 代码生成sql权限修正 2019-12-04 10:17:06 +08:00
RuoYi 80242d712b 代码生成vue文件修正 2019-12-04 10:08:42 +08:00
RuoYi 4e8b69c1d7 汉化错误页面 2019-12-03 19:18:22 +08:00
RuoYi 9f5ed82cdf 动态加载路由 页面刷新问题 2019-12-03 18:02:35 +08:00
RuoYi b70024487a RedisCache的getCacheSet方法会移除元素的bug 2019-12-02 17:00:38 +08:00
RuoYi 2e2882b0d5 代码生成防止缓存内的数据没有及时写入到zip文件 2019-12-02 16:09:20 +08:00
RuoYi bc827ef377 无法匹配到的页面返回跳转至404页,防止整个页面显示空白 2019-12-02 16:03:18 +08:00
RuoYi fee8a5955b 若依 2.0 2019-12-02 09:28:11 +08:00
RuoYi cef26e770e 系统退出删除用户缓存记录 2019-11-20 12:08:08 +08:00
RuoYi 9f97fd0953 添加jsencrypt实现参数的前端加密 2019-11-20 11:53:04 +08:00
RuoYi 3af0158d40 2019年度最受欢迎中国开源软件评选
请给若依/RuoYi 投票,谢谢。
2019-11-20 10:46:05 +08:00
RuoYi 018195e47b 用户上传头像实时同步缓存,无需重新登录 2019-11-19 16:08:30 +08:00
RuoYi cdc56a663e 修改代码生成路由脚本错误 2019-11-19 15:22:06 +08:00
RuoYi a46e5460a6 日志记录过滤特殊对象,防止转换异常 2019-11-19 15:16:55 +08:00
RuoYi 5d4b0e6b21 添加主目录添加/删除操作 2019-11-19 14:50:07 +08:00
RuoYi e6cd9c430f 新增@RepeatSubmit注解,防止重复提交 2019-11-13 15:20:05 +08:00
RuoYi bcee37b84b 若依 1.1 2019-11-11 08:59:15 +08:00
RuoYi 85c17f4563 修复文件上传多级目录识别问题 2019-11-01 09:33:27 +08:00
RuoYi c0e7f31fac 阿里云服务器86元/年,双11冰点底价,错过再等1年 2019-10-24 11:12:56 +08:00
RuoYi 66d6a5d0b1 若依前后端分离群937441 2019-10-11 15:36:01 +08:00
RuoYi e235d5aa57 新增在线用户 2019-10-11 10:50:47 +08:00
RuoYi 319dfc2de3 修改函数命名防止冲突 2019-10-09 17:21:43 +08:00
RuoYi 3ba458b108 去除上级菜单校验,默认为顶级 2019-10-09 10:41:53 +08:00
RuoYi 7c908e9a56 用户密码无法修改问题 2019-10-09 10:21:06 +08:00
RuoYi fcacf93582 按钮类型显示权限标识 2019-10-09 10:20:21 +08:00
RuoYi 4b7400f272 前后端分离交流群 2019-10-08 10:49:39 +08:00
RuoYi 46444bd0fe RuoYi-Vue 1.0 2019-10-08 09:14:38 +08:00
若依 5bc7455464 Initial commit 2019-10-08 09:01:46 +08:00
48 changed files with 4616 additions and 4473 deletions

View File

@ -12,9 +12,9 @@ spring:
# 主库数据源
master:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
username: root
password: root
password: 123456
# 从库数据源
slave:
lazy: true

View File

@ -163,6 +163,21 @@
<artifactId>lock4j-redisson-spring-boot-starter</artifactId>
</dependency>
<!-- 自己新增的依赖 Geniou -->
<!-- 引入fluent-mybatis 运行依赖包, scope为compile -->
<dependency>
<groupId>com.github.atool</groupId>
<artifactId>fluent-mybatis</artifactId>
<version>1.7.2</version>
</dependency>
<!-- 引入fluent-mybatis-processor, scope设置为provider 编译需要,运行时不需要 -->
<dependency>
<groupId>com.github.atool</groupId>
<artifactId>fluent-mybatis-processor</artifactId>
<version>1.7.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View File

@ -1,40 +1,40 @@
package com.ruoyi.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.enums.LimitType;
/**
* 限流注解
*
* @author ruoyi
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimiter
{
/**
* 限流key
*/
public String key() default Constants.RATE_LIMIT_KEY;
/**
* 限流时间,单位秒
*/
public int time() default 60;
/**
* 限流次数
*/
public int count() default 100;
/**
* 限流类型
*/
public LimitType limitType() default LimitType.DEFAULT;
}
package com.ruoyi.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.enums.LimitType;
/**
* 限流注解
*
* @author ruoyi
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimiter
{
/**
* 限流key
*/
public String key() default Constants.RATE_LIMIT_KEY;
/**
* 限流时间,单位秒
*/
public int time() default 60;
/**
* 限流次数
*/
public int count() default 100;
/**
* 限流类型
*/
public LimitType limitType() default LimitType.DEFAULT;
}

View File

@ -1,50 +1,50 @@
package com.ruoyi.common.constant;
/**
* 任务调度通用常量
*
* @author ruoyi
*/
public class ScheduleConstants
{
public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME";
/** 执行目标key */
public static final String TASK_PROPERTIES = "TASK_PROPERTIES";
/** 默认 */
public static final String MISFIRE_DEFAULT = "0";
/** 立即触发执行 */
public static final String MISFIRE_IGNORE_MISFIRES = "1";
/** 触发一次执行 */
public static final String MISFIRE_FIRE_AND_PROCEED = "2";
/** 不触发立即执行 */
public static final String MISFIRE_DO_NOTHING = "3";
public enum Status
{
/**
* 正常
*/
NORMAL("0"),
/**
* 暂停
*/
PAUSE("1");
private String value;
private Status(String value)
{
this.value = value;
}
public String getValue()
{
return value;
}
}
}
package com.ruoyi.common.constant;
/**
* 任务调度通用常量
*
* @author ruoyi
*/
public class ScheduleConstants
{
public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME";
/** 执行目标key */
public static final String TASK_PROPERTIES = "TASK_PROPERTIES";
/** 默认 */
public static final String MISFIRE_DEFAULT = "0";
/** 立即触发执行 */
public static final String MISFIRE_IGNORE_MISFIRES = "1";
/** 触发一次执行 */
public static final String MISFIRE_FIRE_AND_PROCEED = "2";
/** 不触发立即执行 */
public static final String MISFIRE_DO_NOTHING = "3";
public enum Status
{
/**
* 正常
*/
NORMAL("0"),
/**
* 暂停
*/
PAUSE("1");
private String value;
private Status(String value)
{
this.value = value;
}
public String getValue()
{
return value;
}
}
}

View File

@ -0,0 +1,62 @@
package com.ruoyi.common.core.domain.entity.test;
import cn.org.atool.fluent.mybatis.annotation.FluentMybatis;
import cn.org.atool.fluent.mybatis.base.IEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
/**
* 商品对象 product
*
* @author ruoyi
* @date 2021-09-03
*/
@Data
@FluentMybatis
public class Product implements IEntity {
private static final long serialVersionUID=1L;
/**
* 商品id
*/
@TableId(value = "id")
private Long id;
/**
* 创建时间
*/
private Date createDateTime;
/**
* 更新时间
*/
private Date updateDateTime;
/**
* 商品唯一编号
*/
private String productCode;
/**
* 商品名称
*/
private String productName;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 运费
*/
private BigDecimal freight;
}

View File

@ -0,0 +1,18 @@
package com.ruoyi.common.core.domain.entity.test;
import com.ruoyi.common.core.domain.entity.mapper.ProductMapper;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 商品测试
* @author Geniou
* @create 2021/9/6 18:41
*/
public class ProductTest {
@Autowired
private ProductMapper productMapper;
}

View File

@ -1,37 +1,37 @@
package com.ruoyi.common.core.domain.model;
import lombok.*;
import lombok.experimental.Accessors;
/**
* 用户登录对象
*
* @author ruoyi
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class LoginBody
{
/**
* 用户名
*/
private String username;
/**
* 用户密码
*/
private String password;
/**
* 验证码
*/
private String code;
/**
* 唯一标识
*/
private String uuid = "";
}
package com.ruoyi.common.core.domain.model;
import lombok.*;
import lombok.experimental.Accessors;
/**
* 用户登录对象
*
* @author ruoyi
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class LoginBody
{
/**
* 用户名
*/
private String username;
/**
* 用户密码
*/
private String password;
/**
* 验证码
*/
private String code;
/**
* 唯一标识
*/
private String uuid = "";
}

View File

@ -1,11 +1,11 @@
package com.ruoyi.common.core.domain.model;
/**
* 用户注册对象
*
* @author ruoyi
*/
public class RegisterBody extends LoginBody
{
}
package com.ruoyi.common.core.domain.model;
/**
* 用户注册对象
*
* @author ruoyi
*/
public class RegisterBody extends LoginBody
{
}

View File

@ -1,20 +1,20 @@
package com.ruoyi.common.enums;
/**
* 限流类型
*
* @author ruoyi
*/
public enum LimitType
{
/**
* 默认策略全局限流
*/
DEFAULT,
/**
* 根据请求者IP进行限流
*/
IP
}
package com.ruoyi.common.enums;
/**
* 限流类型
*
* @author ruoyi
*/
public enum LimitType
{
/**
* 默认策略全局限流
*/
DEFAULT,
/**
* 根据请求者IP进行限流
*/
IP
}

View File

@ -1,58 +1,58 @@
package com.ruoyi.common.exception;
/**
* 全局异常
*
* @author ruoyi
*/
public class GlobalException extends RuntimeException
{
private static final long serialVersionUID = 1L;
/**
* 错误提示
*/
private String message;
/**
* 错误明细内部调试错误
*
* {@link CommonResult#getDetailMessage()} 一致的设计
*/
private String detailMessage;
/**
* 空构造方法避免反序列化问题
*/
public GlobalException()
{
}
public GlobalException(String message)
{
this.message = message;
}
public String getDetailMessage()
{
return detailMessage;
}
public GlobalException setDetailMessage(String detailMessage)
{
this.detailMessage = detailMessage;
return this;
}
public String getMessage()
{
return message;
}
public GlobalException setMessage(String message)
{
this.message = message;
return this;
}
package com.ruoyi.common.exception;
/**
* 全局异常
*
* @author ruoyi
*/
public class GlobalException extends RuntimeException
{
private static final long serialVersionUID = 1L;
/**
* 错误提示
*/
private String message;
/**
* 错误明细内部调试错误
*
* {@link CommonResult#getDetailMessage()} 一致的设计
*/
private String detailMessage;
/**
* 空构造方法避免反序列化问题
*/
public GlobalException()
{
}
public GlobalException(String message)
{
this.message = message;
}
public String getDetailMessage()
{
return detailMessage;
}
public GlobalException setDetailMessage(String detailMessage)
{
this.detailMessage = detailMessage;
return this;
}
public String getMessage()
{
return message;
}
public GlobalException setMessage(String message)
{
this.message = message;
return this;
}
}

View File

@ -1,73 +1,73 @@
package com.ruoyi.common.exception;
/**
* 业务异常
*
* @author ruoyi
*/
public final class ServiceException extends RuntimeException
{
private static final long serialVersionUID = 1L;
/**
* 错误码
*/
private Integer code;
/**
* 错误提示
*/
private String message;
/**
* 错误明细内部调试错误
*
* {@link CommonResult#getDetailMessage()} 一致的设计
*/
private String detailMessage;
/**
* 空构造方法避免反序列化问题
*/
public ServiceException()
{
}
public ServiceException(String message)
{
this.message = message;
}
public ServiceException(String message, Integer code)
{
this.message = message;
this.code = code;
}
public String getDetailMessage()
{
return detailMessage;
}
public String getMessage()
{
return message;
}
public Integer getCode()
{
return code;
}
public ServiceException setMessage(String message)
{
this.message = message;
return this;
}
public ServiceException setDetailMessage(String detailMessage)
{
this.detailMessage = detailMessage;
return this;
}
package com.ruoyi.common.exception;
/**
* 业务异常
*
* @author ruoyi
*/
public final class ServiceException extends RuntimeException
{
private static final long serialVersionUID = 1L;
/**
* 错误码
*/
private Integer code;
/**
* 错误提示
*/
private String message;
/**
* 错误明细内部调试错误
*
* {@link CommonResult#getDetailMessage()} 一致的设计
*/
private String detailMessage;
/**
* 空构造方法避免反序列化问题
*/
public ServiceException()
{
}
public ServiceException(String message)
{
this.message = message;
}
public ServiceException(String message, Integer code)
{
this.message = message;
this.code = code;
}
public String getDetailMessage()
{
return detailMessage;
}
public String getMessage()
{
return message;
}
public Integer getCode()
{
return code;
}
public ServiceException setMessage(String message)
{
this.message = message;
return this;
}
public ServiceException setDetailMessage(String detailMessage)
{
this.detailMessage = detailMessage;
return this;
}
}

View File

@ -1,34 +1,34 @@
package com.ruoyi.common.exception.job;
/**
* 计划策略异常
*
* @author ruoyi
*/
public class TaskException extends Exception
{
private static final long serialVersionUID = 1L;
private Code code;
public TaskException(String msg, Code code)
{
this(msg, code, null);
}
public TaskException(String msg, Code code, Exception nestedEx)
{
super(msg, nestedEx);
this.code = code;
}
public Code getCode()
{
return code;
}
public enum Code
{
TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE
}
package com.ruoyi.common.exception.job;
/**
* 计划策略异常
*
* @author ruoyi
*/
public class TaskException extends Exception
{
private static final long serialVersionUID = 1L;
private Code code;
public TaskException(String msg, Code code)
{
this(msg, code, null);
}
public TaskException(String msg, Code code, Exception nestedEx)
{
super(msg, nestedEx);
this.code = code;
}
public Code getCode()
{
return code;
}
public enum Code
{
TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE
}
}

View File

@ -0,0 +1,48 @@
package com.ruoyi.demo.controller;
import com.ruoyi.common.core.domain.entity.mapper.ProductMapper;
import com.ruoyi.common.core.domain.entity.test.Product;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.Date;
/**
* 商品测试控制
* @author Geniou
* @create 2021/9/6 19:11
*/
@Slf4j
@Api(value = "商品测试控制方法", tags = {"商品测试控制方法"})
@RestController
@RequestMapping("/demo/product")
public class ProductTestController {
@Autowired
private ProductMapper productMapper;
/**
* 查询测试树表列表
*/
@ApiOperation("测试语句")
@GetMapping("/mapperTest")
public void list() {
Product product = new Product();
product.setProductCode("M10001");
product.setProductName("测试商品");
product.setUnitPrice(BigDecimal.valueOf(2.5));
product.setFreight(BigDecimal.valueOf(1.5));
product.setCreateDateTime(new Date());
product.setUpdateDateTime(new Date());
productMapper.insert(product);
}
}

View File

@ -1,10 +1,10 @@
# 代码生成
gen:
# 作者
author: ruoyi
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
packageName: com.ruoyi.system
# 自动去除表前缀默认是false
autoRemovePre: false
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
# 代码生成
gen:
# 作者
author: ruoyi
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
packageName: com.ruoyi.system
# 自动去除表前缀默认是false
autoRemovePre: false
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
tablePrefix: sys_

View File

@ -1,76 +1,76 @@
package ${packageName}.domain;
#foreach ($import in $subImportList)
import ${import};
#end
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* ${subTable.functionName}对象 ${subTableName}
*
* @author ${author}
* @date ${datetime}
*/
public class ${subClassName} extends BaseEntity
{
private static final long serialVersionUID = 1L;
#foreach ($column in $subTable.columns)
#if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
#else
@Excel(name = "${comment}")
#end
#end
private $column.javaType $column.javaField;
#end
#end
#foreach ($column in $subTable.columns)
#if(!$table.isSuperColumn($column.javaField))
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
public void set${AttrName}($column.javaType $column.javaField)
{
this.$column.javaField = $column.javaField;
}
public $column.javaType get${AttrName}()
{
return $column.javaField;
}
#end
#end
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#foreach ($column in $subTable.columns)
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
.append("${column.javaField}", get${AttrName}())
#end
.toString();
}
}
package ${packageName}.domain;
#foreach ($import in $subImportList)
import ${import};
#end
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* ${subTable.functionName}对象 ${subTableName}
*
* @author ${author}
* @date ${datetime}
*/
public class ${subClassName} extends BaseEntity
{
private static final long serialVersionUID = 1L;
#foreach ($column in $subTable.columns)
#if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
#else
@Excel(name = "${comment}")
#end
#end
private $column.javaType $column.javaField;
#end
#end
#foreach ($column in $subTable.columns)
#if(!$table.isSuperColumn($column.javaField))
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
public void set${AttrName}($column.javaType $column.javaField)
{
this.$column.javaField = $column.javaField;
}
public $column.javaType get${AttrName}()
{
return $column.javaField;
}
#end
#end
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#foreach ($column in $subTable.columns)
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
.append("${column.javaField}", get${AttrName}())
#end
.toString();
}
}

View File

@ -1,13 +1,13 @@
package com.ruoyi.quartz.config;
import org.springframework.context.annotation.Configuration;
/**
* 定时任务配置
*
* @author Lion Li
*/
@Configuration
public class ScheduleConfig {
}
package com.ruoyi.quartz.config;
import org.springframework.context.annotation.Configuration;
/**
* 定时任务配置
*
* @author Lion Li
*/
@Configuration
public class ScheduleConfig {
}

View File

@ -1,63 +1,63 @@
package com.ruoyi.quartz.util;
import java.text.ParseException;
import java.util.Date;
import org.quartz.CronExpression;
/**
* cron表达式工具类
*
* @author ruoyi
*
*/
public class CronUtils
{
/**
* 返回一个布尔值代表一个给定的Cron表达式的有效性
*
* @param cronExpression Cron表达式
* @return boolean 表达式是否有效
*/
public static boolean isValid(String cronExpression)
{
return CronExpression.isValidExpression(cronExpression);
}
/**
* 返回一个字符串值,表示该消息无效Cron表达式给出有效性
*
* @param cronExpression Cron表达式
* @return String 无效时返回表达式错误描述,如果有效返回null
*/
public static String getInvalidMessage(String cronExpression)
{
try
{
new CronExpression(cronExpression);
return null;
}
catch (ParseException pe)
{
return pe.getMessage();
}
}
/**
* 返回下一个执行时间根据给定的Cron表达式
*
* @param cronExpression Cron表达式
* @return Date 下次Cron表达式执行时间
*/
public static Date getNextExecution(String cronExpression)
{
try
{
CronExpression cron = new CronExpression(cronExpression);
return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
}
catch (ParseException e)
{
throw new IllegalArgumentException(e.getMessage());
}
}
}
package com.ruoyi.quartz.util;
import java.text.ParseException;
import java.util.Date;
import org.quartz.CronExpression;
/**
* cron表达式工具类
*
* @author ruoyi
*
*/
public class CronUtils
{
/**
* 返回一个布尔值代表一个给定的Cron表达式的有效性
*
* @param cronExpression Cron表达式
* @return boolean 表达式是否有效
*/
public static boolean isValid(String cronExpression)
{
return CronExpression.isValidExpression(cronExpression);
}
/**
* 返回一个字符串值,表示该消息无效Cron表达式给出有效性
*
* @param cronExpression Cron表达式
* @return String 无效时返回表达式错误描述,如果有效返回null
*/
public static String getInvalidMessage(String cronExpression)
{
try
{
new CronExpression(cronExpression);
return null;
}
catch (ParseException pe)
{
return pe.getMessage();
}
}
/**
* 返回下一个执行时间根据给定的Cron表达式
*
* @param cronExpression Cron表达式
* @return Date 下次Cron表达式执行时间
*/
public static Date getNextExecution(String cronExpression)
{
try
{
CronExpression cron = new CronExpression(cronExpression);
return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
}
catch (ParseException e)
{
throw new IllegalArgumentException(e.getMessage());
}
}
}

View File

@ -1,21 +1,21 @@
package com.ruoyi.quartz.util;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import com.ruoyi.quartz.domain.SysJob;
/**
* 定时任务处理禁止并发执行
*
* @author ruoyi
*
*/
@DisallowConcurrentExecution
public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob
{
@Override
protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
{
JobInvokeUtil.invokeMethod(sysJob);
}
}
package com.ruoyi.quartz.util;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import com.ruoyi.quartz.domain.SysJob;
/**
* 定时任务处理禁止并发执行
*
* @author ruoyi
*
*/
@DisallowConcurrentExecution
public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob
{
@Override
protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
{
JobInvokeUtil.invokeMethod(sysJob);
}
}

View File

@ -1,19 +1,19 @@
package com.ruoyi.quartz.util;
import org.quartz.JobExecutionContext;
import com.ruoyi.quartz.domain.SysJob;
/**
* 定时任务处理允许并发执行
*
* @author ruoyi
*
*/
public class QuartzJobExecution extends AbstractQuartzJob
{
@Override
protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
{
JobInvokeUtil.invokeMethod(sysJob);
}
}
package com.ruoyi.quartz.util;
import org.quartz.JobExecutionContext;
import com.ruoyi.quartz.domain.SysJob;
/**
* 定时任务处理允许并发执行
*
* @author ruoyi
*
*/
public class QuartzJobExecution extends AbstractQuartzJob
{
@Override
protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
{
JobInvokeUtil.invokeMethod(sysJob);
}
}

View File

@ -1,113 +1,113 @@
package com.ruoyi.quartz.util;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import com.ruoyi.common.constant.ScheduleConstants;
import com.ruoyi.common.exception.job.TaskException;
import com.ruoyi.common.exception.job.TaskException.Code;
import com.ruoyi.quartz.domain.SysJob;
/**
* 定时任务工具类
*
* @author ruoyi
*
*/
public class ScheduleUtils
{
/**
* 得到quartz任务类
*
* @param sysJob 执行计划
* @return 具体执行任务类
*/
private static Class<? extends Job> getQuartzJobClass(SysJob sysJob)
{
boolean isConcurrent = "0".equals(sysJob.getConcurrent());
return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class;
}
/**
* 构建任务触发对象
*/
public static TriggerKey getTriggerKey(Long jobId, String jobGroup)
{
return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
}
/**
* 构建任务键对象
*/
public static JobKey getJobKey(Long jobId, String jobGroup)
{
return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
}
/**
* 创建定时任务
*/
public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException
{
Class<? extends Job> jobClass = getQuartzJobClass(job);
// 构建job信息
Long jobId = job.getJobId();
String jobGroup = job.getJobGroup();
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build();
// 表达式调度构建器
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder);
// 按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
.withSchedule(cronScheduleBuilder).build();
// 放入参数,运行时的方法可以获取
jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
// 判断是否存在
if (scheduler.checkExists(getJobKey(jobId, jobGroup)))
{
// 防止创建时存在数据问题 先移除,然后在执行创建操作
scheduler.deleteJob(getJobKey(jobId, jobGroup));
}
scheduler.scheduleJob(jobDetail, trigger);
// 暂停任务
if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue()))
{
scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
}
}
/**
* 设置定时任务策略
*/
public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb)
throws TaskException
{
switch (job.getMisfirePolicy())
{
case ScheduleConstants.MISFIRE_DEFAULT:
return cb;
case ScheduleConstants.MISFIRE_IGNORE_MISFIRES:
return cb.withMisfireHandlingInstructionIgnoreMisfires();
case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED:
return cb.withMisfireHandlingInstructionFireAndProceed();
case ScheduleConstants.MISFIRE_DO_NOTHING:
return cb.withMisfireHandlingInstructionDoNothing();
default:
throw new TaskException("The task misfire policy '" + job.getMisfirePolicy()
+ "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR);
}
}
}
package com.ruoyi.quartz.util;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import com.ruoyi.common.constant.ScheduleConstants;
import com.ruoyi.common.exception.job.TaskException;
import com.ruoyi.common.exception.job.TaskException.Code;
import com.ruoyi.quartz.domain.SysJob;
/**
* 定时任务工具类
*
* @author ruoyi
*
*/
public class ScheduleUtils
{
/**
* 得到quartz任务类
*
* @param sysJob 执行计划
* @return 具体执行任务类
*/
private static Class<? extends Job> getQuartzJobClass(SysJob sysJob)
{
boolean isConcurrent = "0".equals(sysJob.getConcurrent());
return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class;
}
/**
* 构建任务触发对象
*/
public static TriggerKey getTriggerKey(Long jobId, String jobGroup)
{
return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
}
/**
* 构建任务键对象
*/
public static JobKey getJobKey(Long jobId, String jobGroup)
{
return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
}
/**
* 创建定时任务
*/
public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException
{
Class<? extends Job> jobClass = getQuartzJobClass(job);
// 构建job信息
Long jobId = job.getJobId();
String jobGroup = job.getJobGroup();
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build();
// 表达式调度构建器
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder);
// 按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
.withSchedule(cronScheduleBuilder).build();
// 放入参数,运行时的方法可以获取
jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
// 判断是否存在
if (scheduler.checkExists(getJobKey(jobId, jobGroup)))
{
// 防止创建时存在数据问题 先移除,然后在执行创建操作
scheduler.deleteJob(getJobKey(jobId, jobGroup));
}
scheduler.scheduleJob(jobDetail, trigger);
// 暂停任务
if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue()))
{
scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
}
}
/**
* 设置定时任务策略
*/
public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb)
throws TaskException
{
switch (job.getMisfirePolicy())
{
case ScheduleConstants.MISFIRE_DEFAULT:
return cb;
case ScheduleConstants.MISFIRE_IGNORE_MISFIRES:
return cb.withMisfireHandlingInstructionIgnoreMisfires();
case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED:
return cb.withMisfireHandlingInstructionFireAndProceed();
case ScheduleConstants.MISFIRE_DO_NOTHING:
return cb.withMisfireHandlingInstructionDoNothing();
default:
throw new TaskException("The task misfire policy '" + job.getMisfirePolicy()
+ "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR);
}
}
}

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.quartz.mapper.SysJobLogMapper">
<resultMap type="SysJobLog" id="SysJobLogResult">
<id property="jobLogId" column="job_log_id" />
<result property="jobName" column="job_name" />
<result property="jobGroup" column="job_group" />
<result property="invokeTarget" column="invoke_target" />
<result property="jobMessage" column="job_message" />
<result property="status" column="status" />
<result property="exceptionInfo" column="exception_info" />
<result property="createTime" column="create_time" />
</resultMap>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.quartz.mapper.SysJobLogMapper">
<resultMap type="SysJobLog" id="SysJobLogResult">
<id property="jobLogId" column="job_log_id" />
<result property="jobName" column="job_name" />
<result property="jobGroup" column="job_group" />
<result property="invokeTarget" column="invoke_target" />
<result property="jobMessage" column="job_message" />
<result property="status" column="status" />
<result property="exceptionInfo" column="exception_info" />
<result property="createTime" column="create_time" />
</resultMap>
</mapper>

View File

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.quartz.mapper.SysJobMapper">
<resultMap type="SysJob" id="SysJobResult">
<id property="jobId" column="job_id" />
<result property="jobName" column="job_name" />
<result property="jobGroup" column="job_group" />
<result property="invokeTarget" column="invoke_target" />
<result property="cronExpression" column="cron_expression" />
<result property="misfirePolicy" column="misfire_policy" />
<result property="concurrent" column="concurrent" />
<result property="status" column="status" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.quartz.mapper.SysJobMapper">
<resultMap type="SysJob" id="SysJobResult">
<id property="jobId" column="job_id" />
<result property="jobName" column="job_name" />
<result property="jobGroup" column="job_group" />
<result property="invokeTarget" column="invoke_target" />
<result property="cronExpression" column="cron_expression" />
<result property="misfirePolicy" column="misfire_policy" />
<result property="concurrent" column="concurrent" />
<result property="status" column="status" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
</mapper>

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
User-agent: *
User-agent: *
Disallow: /

View File

@ -1,9 +1,9 @@
import request from '@/utils/request'
// 查询缓存详细
export function getCache() {
return request({
url: '/monitor/cache',
method: 'get'
})
}
import request from '@/utils/request'
// 查询缓存详细
export function getCache() {
return request({
url: '/monitor/cache',
method: 'get'
})
}

View File

@ -1,39 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="52px" height="45px" viewBox="0 0 52 45" version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<filter x="-9.4%" y="-6.2%" width="118.8%" height="122.5%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<rect id="path-2" x="0" y="0" width="48" height="40" rx="4"></rect>
<filter x="-4.2%" y="-2.5%" width="108.3%" height="110.0%" filterUnits="objectBoundingBox" id="filter-4">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="配置面板" width="48" height="40" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="setting-copy-2" width="48" height="40" transform="translate(-1190.000000, -136.000000)">
<g id="Group-8" width="48" height="40" transform="translate(1167.000000, 0.000000)">
<g id="Group-5-Copy-5" filter="url(#filter-1)" transform="translate(25.000000, 137.000000)">
<mask id="mask-3" fill="white">
<use xlink:href="#path-2"></use>
</mask>
<g id="Rectangle-18">
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use>
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-2"></use>
</g>
<rect id="Rectangle-11" fill="#FFFFFF" mask="url(#mask-3)" x="0" y="0" width="48" height="10"></rect>
<rect id="Rectangle-18" fill="#303648" mask="url(#mask-3)" x="0" y="0" width="16" height="40"></rect>
</g>
</g>
</g>
</g>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="52px" height="45px" viewBox="0 0 52 45" version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<filter x="-9.4%" y="-6.2%" width="118.8%" height="122.5%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<rect id="path-2" x="0" y="0" width="48" height="40" rx="4"></rect>
<filter x="-4.2%" y="-2.5%" width="108.3%" height="110.0%" filterUnits="objectBoundingBox" id="filter-4">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="配置面板" width="48" height="40" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="setting-copy-2" width="48" height="40" transform="translate(-1190.000000, -136.000000)">
<g id="Group-8" width="48" height="40" transform="translate(1167.000000, 0.000000)">
<g id="Group-5-Copy-5" filter="url(#filter-1)" transform="translate(25.000000, 137.000000)">
<mask id="mask-3" fill="white">
<use xlink:href="#path-2"></use>
</mask>
<g id="Rectangle-18">
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use>
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-2"></use>
</g>
<rect id="Rectangle-11" fill="#FFFFFF" mask="url(#mask-3)" x="0" y="0" width="48" height="10"></rect>
<rect id="Rectangle-18" fill="#303648" mask="url(#mask-3)" x="0" y="0" width="16" height="40"></rect>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -1,39 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="52px" height="45px" viewBox="0 0 52 45" version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<filter x="-9.4%" y="-6.2%" width="118.8%" height="122.5%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<rect id="path-2" x="0" y="0" width="48" height="40" rx="4"></rect>
<filter x="-4.2%" y="-2.5%" width="108.3%" height="110.0%" filterUnits="objectBoundingBox" id="filter-4">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="配置面板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="setting-copy-2" transform="translate(-1254.000000, -136.000000)">
<g id="Group-8" transform="translate(1167.000000, 0.000000)">
<g id="Group-5" filter="url(#filter-1)" transform="translate(89.000000, 137.000000)">
<mask id="mask-3" fill="white">
<use xlink:href="#path-2"></use>
</mask>
<g id="Rectangle-18">
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use>
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-2"></use>
</g>
<rect id="Rectangle-18" fill="#FFFFFF" mask="url(#mask-3)" x="0" y="0" width="16" height="40"></rect>
<rect id="Rectangle-11" fill="#FFFFFF" mask="url(#mask-3)" x="0" y="0" width="48" height="10"></rect>
</g>
</g>
</g>
</g>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="52px" height="45px" viewBox="0 0 52 45" version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<filter x="-9.4%" y="-6.2%" width="118.8%" height="122.5%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<rect id="path-2" x="0" y="0" width="48" height="40" rx="4"></rect>
<filter x="-4.2%" y="-2.5%" width="108.3%" height="110.0%" filterUnits="objectBoundingBox" id="filter-4">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="配置面板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="setting-copy-2" transform="translate(-1254.000000, -136.000000)">
<g id="Group-8" transform="translate(1167.000000, 0.000000)">
<g id="Group-5" filter="url(#filter-1)" transform="translate(89.000000, 137.000000)">
<mask id="mask-3" fill="white">
<use xlink:href="#path-2"></use>
</mask>
<g id="Rectangle-18">
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use>
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-2"></use>
</g>
<rect id="Rectangle-18" fill="#FFFFFF" mask="url(#mask-3)" x="0" y="0" width="16" height="40"></rect>
<rect id="Rectangle-11" fill="#FFFFFF" mask="url(#mask-3)" x="0" y="0" width="48" height="10"></rect>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,51 +1,51 @@
<template>
<div>
<template v-for="(item, index) in options">
<template v-if="values.includes(item.dictValue)">
<span
v-if="item.listClass == 'default' || item.listClass == ''"
:key="item.dictValue"
:index="index"
:class="item.cssClass"
>{{ item.dictLabel }}</span
>
<el-tag
v-else
:key="item.dictValue"
:index="index"
:type="item.listClass == 'primary' ? '' : item.listClass"
:class="item.cssClass"
>
{{ item.dictLabel }}
</el-tag>
</template>
</template>
</div>
</template>
<script>
export default {
name: "DictTag",
props: {
options: {
type: Array,
default: null,
},
value: [String, Array],
},
computed: {
values() {
if (this.value) {
return Array.isArray(this.value) ? this.value : [this.value];
} else {
return [];
}
},
},
};
</script>
<style scoped>
.el-tag + .el-tag {
margin-left: 10px;
}
<template>
<div>
<template v-for="(item, index) in options">
<template v-if="values.includes(item.dictValue)">
<span
v-if="item.listClass == 'default' || item.listClass == ''"
:key="item.dictValue"
:index="index"
:class="item.cssClass"
>{{ item.dictLabel }}</span
>
<el-tag
v-else
:key="item.dictValue"
:index="index"
:type="item.listClass == 'primary' ? '' : item.listClass"
:class="item.cssClass"
>
{{ item.dictLabel }}
</el-tag>
</template>
</template>
</div>
</template>
<script>
export default {
name: "DictTag",
props: {
options: {
type: Array,
default: null,
},
value: [String, Array],
},
computed: {
values() {
if (this.value) {
return Array.isArray(this.value) ? this.value : [this.value];
} else {
return [];
}
},
},
};
</script>
<style scoped>
.el-tag + .el-tag {
margin-left: 10px;
}
</style>

View File

@ -1,87 +1,87 @@
<template>
<div class="top-right-btn">
<el-row>
<el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top">
<el-button size="mini" circle icon="el-icon-search" @click="toggleSearch()" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="刷新" placement="top">
<el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
<el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" />
</el-tooltip>
</el-row>
<el-dialog :title="title" :visible.sync="open" append-to-body>
<el-transfer
:titles="['显示', '隐藏']"
v-model="value"
:data="columns"
@change="dataChange"
></el-transfer>
</el-dialog>
</div>
</template>
<script>
export default {
name: "RightToolbar",
data() {
return {
//
value: [],
//
title: "显示/隐藏",
//
open: false,
};
},
props: {
showSearch: {
type: Boolean,
default: true,
},
columns: {
type: Array,
},
},
created() {
//
for (let item in this.columns) {
if (this.columns[item].visible === false) {
this.value.push(parseInt(item));
}
}
},
methods: {
//
toggleSearch() {
this.$emit("update:showSearch", !this.showSearch);
},
//
refresh() {
this.$emit("queryTable");
},
//
dataChange(data) {
for (var item in this.columns) {
const key = this.columns[item].key;
this.columns[item].visible = !data.includes(key);
}
},
// dialog
showColumn() {
this.open = true;
},
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-transfer__button {
border-radius: 50%;
padding: 12px;
display: block;
margin-left: 0px;
}
::v-deep .el-transfer__button:first-child {
margin-bottom: 10px;
}
</style>
<template>
<div class="top-right-btn">
<el-row>
<el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top">
<el-button size="mini" circle icon="el-icon-search" @click="toggleSearch()" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="刷新" placement="top">
<el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
<el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" />
</el-tooltip>
</el-row>
<el-dialog :title="title" :visible.sync="open" append-to-body>
<el-transfer
:titles="['显示', '隐藏']"
v-model="value"
:data="columns"
@change="dataChange"
></el-transfer>
</el-dialog>
</div>
</template>
<script>
export default {
name: "RightToolbar",
data() {
return {
//
value: [],
//
title: "显示/隐藏",
//
open: false,
};
},
props: {
showSearch: {
type: Boolean,
default: true,
},
columns: {
type: Array,
},
},
created() {
//
for (let item in this.columns) {
if (this.columns[item].visible === false) {
this.value.push(parseInt(item));
}
}
},
methods: {
//
toggleSearch() {
this.$emit("update:showSearch", !this.showSearch);
},
//
refresh() {
this.$emit("queryTable");
},
//
dataChange(data) {
for (var item in this.columns) {
const key = this.columns[item].key;
this.columns[item].visible = !data.includes(key);
}
},
// dialog
showColumn() {
this.open = true;
},
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-transfer__button {
border-radius: 50%;
padding: 12px;
display: block;
margin-left: 0px;
}
::v-deep .el-transfer__button:first-child {
margin-bottom: 10px;
}
</style>

View File

@ -1,36 +1,36 @@
<template>
<div v-loading="loading" :style="'height:' + height">
<iframe
:src="src"
frameborder="no"
style="width: 100%; height: 100%"
scrolling="auto"
/>
</div>
</template>
<script>
export default {
props: {
src: {
type: String,
required: true
},
},
data() {
return {
height: document.documentElement.clientHeight - 94.5 + "px;",
loading: true,
url: this.src
};
},
mounted: function () {
setTimeout(() => {
this.loading = false;
}, 300);
const that = this;
window.onresize = function temp() {
that.height = document.documentElement.clientHeight - 94.5 + "px;";
};
}
};
</script>
<template>
<div v-loading="loading" :style="'height:' + height">
<iframe
:src="src"
frameborder="no"
style="width: 100%; height: 100%"
scrolling="auto"
/>
</div>
</template>
<script>
export default {
props: {
src: {
type: String,
required: true
},
},
data() {
return {
height: document.documentElement.clientHeight - 94.5 + "px;",
loading: true,
url: this.src
};
},
mounted: function () {
setTimeout(() => {
this.loading = false;
}, 300);
const that = this;
window.onresize = function temp() {
that.height = document.documentElement.clientHeight - 94.5 + "px;";
};
}
};
</script>

View File

@ -1,64 +1,64 @@
/**
* v-dialogDrag 弹窗拖拽
* Copyright (c) 2019 ruoyi
*/
export default {
bind(el, binding, vnode, oldVnode) {
const value = binding.value
if (value == false) return
// 获取拖拽内容头部
const dialogHeaderEl = el.querySelector('.el-dialog__header');
const dragDom = el.querySelector('.el-dialog');
dialogHeaderEl.style.cursor = 'move';
// 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
dragDom.style.position = 'absolute';
dragDom.style.marginTop = 0;
let width = dragDom.style.width;
if (width.includes('%')) {
width = +document.body.clientWidth * (+width.replace(/\%/g, '') / 100);
} else {
width = +width.replace(/\px/g, '');
}
dragDom.style.left = `${(document.body.clientWidth - width) / 2}px`;
// 鼠标按下事件
dialogHeaderEl.onmousedown = (e) => {
// 鼠标按下,计算当前元素距离可视区的距离 (鼠标点击位置距离可视窗口的距离)
const disX = e.clientX - dialogHeaderEl.offsetLeft;
const disY = e.clientY - dialogHeaderEl.offsetTop;
// 获取到的值带px 正则匹配替换
let styL, styT;
// 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
if (sty.left.includes('%')) {
styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);
styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100);
} else {
styL = +sty.left.replace(/\px/g, '');
styT = +sty.top.replace(/\px/g, '');
};
// 鼠标拖拽事件
document.onmousemove = function (e) {
// 通过事件委托,计算移动的距离 (开始拖拽至结束拖拽的距离)
const l = e.clientX - disX;
const t = e.clientY - disY;
let finallyL = l + styL
let finallyT = t + styT
// 移动当前元素
dragDom.style.left = `${finallyL}px`;
dragDom.style.top = `${finallyT}px`;
};
document.onmouseup = function (e) {
document.onmousemove = null;
document.onmouseup = null;
};
}
}
/**
* v-dialogDrag 弹窗拖拽
* Copyright (c) 2019 ruoyi
*/
export default {
bind(el, binding, vnode, oldVnode) {
const value = binding.value
if (value == false) return
// 获取拖拽内容头部
const dialogHeaderEl = el.querySelector('.el-dialog__header');
const dragDom = el.querySelector('.el-dialog');
dialogHeaderEl.style.cursor = 'move';
// 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
dragDom.style.position = 'absolute';
dragDom.style.marginTop = 0;
let width = dragDom.style.width;
if (width.includes('%')) {
width = +document.body.clientWidth * (+width.replace(/\%/g, '') / 100);
} else {
width = +width.replace(/\px/g, '');
}
dragDom.style.left = `${(document.body.clientWidth - width) / 2}px`;
// 鼠标按下事件
dialogHeaderEl.onmousedown = (e) => {
// 鼠标按下,计算当前元素距离可视区的距离 (鼠标点击位置距离可视窗口的距离)
const disX = e.clientX - dialogHeaderEl.offsetLeft;
const disY = e.clientY - dialogHeaderEl.offsetTop;
// 获取到的值带px 正则匹配替换
let styL, styT;
// 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
if (sty.left.includes('%')) {
styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);
styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100);
} else {
styL = +sty.left.replace(/\px/g, '');
styT = +sty.top.replace(/\px/g, '');
};
// 鼠标拖拽事件
document.onmousemove = function (e) {
// 通过事件委托,计算移动的距离 (开始拖拽至结束拖拽的距离)
const l = e.clientX - disX;
const t = e.clientY - disY;
let finallyL = l + styL
let finallyT = t + styT
// 移动当前元素
dragDom.style.left = `${finallyL}px`;
dragDom.style.top = `${finallyT}px`;
};
document.onmouseup = function (e) {
document.onmousemove = null;
document.onmouseup = null;
};
}
}
};

View File

@ -1,27 +1,27 @@
<script>
export default {
data() {
return {};
},
render() {
const { $route: { meta: { link } }, } = this;
if ({ link }.link === "") {
return "404";
}
let url = { link }.link;
const height = document.documentElement.clientHeight - 94.5 + "px";
const style = { height: height };
return (
<div style={style}>
<iframe
src={url}
frameborder="no"
style="width: 100%; height: 100%"
scrolling="auto"
></iframe>
</div>
);
},
};
</script>
<script>
export default {
data() {
return {};
},
render() {
const { $route: { meta: { link } }, } = this;
if ({ link }.link === "") {
return "404";
}
let url = { link }.link;
const height = document.documentElement.clientHeight - 94.5 + "px";
const style = { height: height };
return (
<div style={style}>
<iframe
src={url}
frameborder="no"
style="width: 100%; height: 100%"
scrolling="auto"
></iframe>
</div>
);
},
};
</script>

View File

@ -1,438 +1,438 @@
export const formConf = {
formRef: 'elForm',
formModel: 'formData',
size: 'medium',
labelPosition: 'right',
labelWidth: 100,
formRules: 'rules',
gutter: 15,
disabled: false,
span: 24,
formBtns: true
}
export const inputComponents = [
{
label: '单行文本',
tag: 'el-input',
tagIcon: 'input',
placeholder: '请输入',
defaultValue: undefined,
span: 24,
labelWidth: null,
style: { width: '100%' },
clearable: true,
prepend: '',
append: '',
'prefix-icon': '',
'suffix-icon': '',
maxlength: null,
'show-word-limit': false,
readonly: false,
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/input'
},
{
label: '多行文本',
tag: 'el-input',
tagIcon: 'textarea',
type: 'textarea',
placeholder: '请输入',
defaultValue: undefined,
span: 24,
labelWidth: null,
autosize: {
minRows: 4,
maxRows: 4
},
style: { width: '100%' },
maxlength: null,
'show-word-limit': false,
readonly: false,
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/input'
},
{
label: '密码',
tag: 'el-input',
tagIcon: 'password',
placeholder: '请输入',
defaultValue: undefined,
span: 24,
'show-password': true,
labelWidth: null,
style: { width: '100%' },
clearable: true,
prepend: '',
append: '',
'prefix-icon': '',
'suffix-icon': '',
maxlength: null,
'show-word-limit': false,
readonly: false,
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/input'
},
{
label: '计数器',
tag: 'el-input-number',
tagIcon: 'number',
placeholder: '',
defaultValue: undefined,
span: 24,
labelWidth: null,
min: undefined,
max: undefined,
step: undefined,
'step-strictly': false,
precision: undefined,
'controls-position': '',
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/input-number'
}
]
export const selectComponents = [
{
label: '下拉选择',
tag: 'el-select',
tagIcon: 'select',
placeholder: '请选择',
defaultValue: undefined,
span: 24,
labelWidth: null,
style: { width: '100%' },
clearable: true,
disabled: false,
required: true,
filterable: false,
multiple: false,
options: [{
label: '选项一',
value: 1
}, {
label: '选项二',
value: 2
}],
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/select'
},
{
label: '级联选择',
tag: 'el-cascader',
tagIcon: 'cascader',
placeholder: '请选择',
defaultValue: [],
span: 24,
labelWidth: null,
style: { width: '100%' },
props: {
props: {
multiple: false
}
},
'show-all-levels': true,
disabled: false,
clearable: true,
filterable: false,
required: true,
options: [{
id: 1,
value: 1,
label: '选项1',
children: [{
id: 2,
value: 2,
label: '选项1-1'
}]
}],
dataType: 'dynamic',
labelKey: 'label',
valueKey: 'value',
childrenKey: 'children',
separator: '/',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/cascader'
},
{
label: '单选框组',
tag: 'el-radio-group',
tagIcon: 'radio',
defaultValue: undefined,
span: 24,
labelWidth: null,
style: {},
optionType: 'default',
border: false,
size: 'medium',
disabled: false,
required: true,
options: [{
label: '选项一',
value: 1
}, {
label: '选项二',
value: 2
}],
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/radio'
},
{
label: '多选框组',
tag: 'el-checkbox-group',
tagIcon: 'checkbox',
defaultValue: [],
span: 24,
labelWidth: null,
style: {},
optionType: 'default',
border: false,
size: 'medium',
disabled: false,
required: true,
options: [{
label: '选项一',
value: 1
}, {
label: '选项二',
value: 2
}],
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/checkbox'
},
{
label: '开关',
tag: 'el-switch',
tagIcon: 'switch',
defaultValue: false,
span: 24,
labelWidth: null,
style: {},
disabled: false,
required: true,
'active-text': '',
'inactive-text': '',
'active-color': null,
'inactive-color': null,
'active-value': true,
'inactive-value': false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/switch'
},
{
label: '滑块',
tag: 'el-slider',
tagIcon: 'slider',
defaultValue: null,
span: 24,
labelWidth: null,
disabled: false,
required: true,
min: 0,
max: 100,
step: 1,
'show-stops': false,
range: false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/slider'
},
{
label: '时间选择',
tag: 'el-time-picker',
tagIcon: 'time',
placeholder: '请选择',
defaultValue: null,
span: 24,
labelWidth: null,
style: { width: '100%' },
disabled: false,
clearable: true,
required: true,
'picker-options': {
selectableRange: '00:00:00-23:59:59'
},
format: 'HH:mm:ss',
'value-format': 'HH:mm:ss',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'
},
{
label: '时间范围',
tag: 'el-time-picker',
tagIcon: 'time-range',
defaultValue: null,
span: 24,
labelWidth: null,
style: { width: '100%' },
disabled: false,
clearable: true,
required: true,
'is-range': true,
'range-separator': '至',
'start-placeholder': '开始时间',
'end-placeholder': '结束时间',
format: 'HH:mm:ss',
'value-format': 'HH:mm:ss',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'
},
{
label: '日期选择',
tag: 'el-date-picker',
tagIcon: 'date',
placeholder: '请选择',
defaultValue: null,
type: 'date',
span: 24,
labelWidth: null,
style: { width: '100%' },
disabled: false,
clearable: true,
required: true,
format: 'yyyy-MM-dd',
'value-format': 'yyyy-MM-dd',
readonly: false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/date-picker'
},
{
label: '日期范围',
tag: 'el-date-picker',
tagIcon: 'date-range',
defaultValue: null,
span: 24,
labelWidth: null,
style: { width: '100%' },
type: 'daterange',
'range-separator': '至',
'start-placeholder': '开始日期',
'end-placeholder': '结束日期',
disabled: false,
clearable: true,
required: true,
format: 'yyyy-MM-dd',
'value-format': 'yyyy-MM-dd',
readonly: false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/date-picker'
},
{
label: '评分',
tag: 'el-rate',
tagIcon: 'rate',
defaultValue: 0,
span: 24,
labelWidth: null,
style: {},
max: 5,
'allow-half': false,
'show-text': false,
'show-score': false,
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/rate'
},
{
label: '颜色选择',
tag: 'el-color-picker',
tagIcon: 'color',
defaultValue: null,
labelWidth: null,
'show-alpha': false,
'color-format': '',
disabled: false,
required: true,
size: 'medium',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/color-picker'
},
{
label: '上传',
tag: 'el-upload',
tagIcon: 'upload',
action: 'https://jsonplaceholder.typicode.com/posts/',
defaultValue: null,
labelWidth: null,
disabled: false,
required: true,
accept: '',
name: 'file',
'auto-upload': true,
showTip: false,
buttonText: '点击上传',
fileSize: 2,
sizeUnit: 'MB',
'list-type': 'text',
multiple: false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/upload'
}
]
export const layoutComponents = [
{
layout: 'rowFormItem',
tagIcon: 'row',
type: 'default',
justify: 'start',
align: 'top',
label: '行容器',
layoutTree: true,
children: [],
document: 'https://element.eleme.cn/#/zh-CN/component/layout'
},
{
layout: 'colFormItem',
label: '按钮',
changeTag: true,
labelWidth: null,
tag: 'el-button',
tagIcon: 'button',
span: 24,
default: '主要按钮',
type: 'primary',
icon: 'el-icon-search',
size: 'medium',
disabled: false,
document: 'https://element.eleme.cn/#/zh-CN/component/button'
}
]
// 组件rule的触发方式无触发方式的组件不生成rule
export const trigger = {
'el-input': 'blur',
'el-input-number': 'blur',
'el-select': 'change',
'el-radio-group': 'change',
'el-checkbox-group': 'change',
'el-cascader': 'change',
'el-time-picker': 'change',
'el-date-picker': 'change',
'el-rate': 'change'
}
export const formConf = {
formRef: 'elForm',
formModel: 'formData',
size: 'medium',
labelPosition: 'right',
labelWidth: 100,
formRules: 'rules',
gutter: 15,
disabled: false,
span: 24,
formBtns: true
}
export const inputComponents = [
{
label: '单行文本',
tag: 'el-input',
tagIcon: 'input',
placeholder: '请输入',
defaultValue: undefined,
span: 24,
labelWidth: null,
style: { width: '100%' },
clearable: true,
prepend: '',
append: '',
'prefix-icon': '',
'suffix-icon': '',
maxlength: null,
'show-word-limit': false,
readonly: false,
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/input'
},
{
label: '多行文本',
tag: 'el-input',
tagIcon: 'textarea',
type: 'textarea',
placeholder: '请输入',
defaultValue: undefined,
span: 24,
labelWidth: null,
autosize: {
minRows: 4,
maxRows: 4
},
style: { width: '100%' },
maxlength: null,
'show-word-limit': false,
readonly: false,
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/input'
},
{
label: '密码',
tag: 'el-input',
tagIcon: 'password',
placeholder: '请输入',
defaultValue: undefined,
span: 24,
'show-password': true,
labelWidth: null,
style: { width: '100%' },
clearable: true,
prepend: '',
append: '',
'prefix-icon': '',
'suffix-icon': '',
maxlength: null,
'show-word-limit': false,
readonly: false,
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/input'
},
{
label: '计数器',
tag: 'el-input-number',
tagIcon: 'number',
placeholder: '',
defaultValue: undefined,
span: 24,
labelWidth: null,
min: undefined,
max: undefined,
step: undefined,
'step-strictly': false,
precision: undefined,
'controls-position': '',
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/input-number'
}
]
export const selectComponents = [
{
label: '下拉选择',
tag: 'el-select',
tagIcon: 'select',
placeholder: '请选择',
defaultValue: undefined,
span: 24,
labelWidth: null,
style: { width: '100%' },
clearable: true,
disabled: false,
required: true,
filterable: false,
multiple: false,
options: [{
label: '选项一',
value: 1
}, {
label: '选项二',
value: 2
}],
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/select'
},
{
label: '级联选择',
tag: 'el-cascader',
tagIcon: 'cascader',
placeholder: '请选择',
defaultValue: [],
span: 24,
labelWidth: null,
style: { width: '100%' },
props: {
props: {
multiple: false
}
},
'show-all-levels': true,
disabled: false,
clearable: true,
filterable: false,
required: true,
options: [{
id: 1,
value: 1,
label: '选项1',
children: [{
id: 2,
value: 2,
label: '选项1-1'
}]
}],
dataType: 'dynamic',
labelKey: 'label',
valueKey: 'value',
childrenKey: 'children',
separator: '/',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/cascader'
},
{
label: '单选框组',
tag: 'el-radio-group',
tagIcon: 'radio',
defaultValue: undefined,
span: 24,
labelWidth: null,
style: {},
optionType: 'default',
border: false,
size: 'medium',
disabled: false,
required: true,
options: [{
label: '选项一',
value: 1
}, {
label: '选项二',
value: 2
}],
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/radio'
},
{
label: '多选框组',
tag: 'el-checkbox-group',
tagIcon: 'checkbox',
defaultValue: [],
span: 24,
labelWidth: null,
style: {},
optionType: 'default',
border: false,
size: 'medium',
disabled: false,
required: true,
options: [{
label: '选项一',
value: 1
}, {
label: '选项二',
value: 2
}],
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/checkbox'
},
{
label: '开关',
tag: 'el-switch',
tagIcon: 'switch',
defaultValue: false,
span: 24,
labelWidth: null,
style: {},
disabled: false,
required: true,
'active-text': '',
'inactive-text': '',
'active-color': null,
'inactive-color': null,
'active-value': true,
'inactive-value': false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/switch'
},
{
label: '滑块',
tag: 'el-slider',
tagIcon: 'slider',
defaultValue: null,
span: 24,
labelWidth: null,
disabled: false,
required: true,
min: 0,
max: 100,
step: 1,
'show-stops': false,
range: false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/slider'
},
{
label: '时间选择',
tag: 'el-time-picker',
tagIcon: 'time',
placeholder: '请选择',
defaultValue: null,
span: 24,
labelWidth: null,
style: { width: '100%' },
disabled: false,
clearable: true,
required: true,
'picker-options': {
selectableRange: '00:00:00-23:59:59'
},
format: 'HH:mm:ss',
'value-format': 'HH:mm:ss',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'
},
{
label: '时间范围',
tag: 'el-time-picker',
tagIcon: 'time-range',
defaultValue: null,
span: 24,
labelWidth: null,
style: { width: '100%' },
disabled: false,
clearable: true,
required: true,
'is-range': true,
'range-separator': '至',
'start-placeholder': '开始时间',
'end-placeholder': '结束时间',
format: 'HH:mm:ss',
'value-format': 'HH:mm:ss',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'
},
{
label: '日期选择',
tag: 'el-date-picker',
tagIcon: 'date',
placeholder: '请选择',
defaultValue: null,
type: 'date',
span: 24,
labelWidth: null,
style: { width: '100%' },
disabled: false,
clearable: true,
required: true,
format: 'yyyy-MM-dd',
'value-format': 'yyyy-MM-dd',
readonly: false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/date-picker'
},
{
label: '日期范围',
tag: 'el-date-picker',
tagIcon: 'date-range',
defaultValue: null,
span: 24,
labelWidth: null,
style: { width: '100%' },
type: 'daterange',
'range-separator': '至',
'start-placeholder': '开始日期',
'end-placeholder': '结束日期',
disabled: false,
clearable: true,
required: true,
format: 'yyyy-MM-dd',
'value-format': 'yyyy-MM-dd',
readonly: false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/date-picker'
},
{
label: '评分',
tag: 'el-rate',
tagIcon: 'rate',
defaultValue: 0,
span: 24,
labelWidth: null,
style: {},
max: 5,
'allow-half': false,
'show-text': false,
'show-score': false,
disabled: false,
required: true,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/rate'
},
{
label: '颜色选择',
tag: 'el-color-picker',
tagIcon: 'color',
defaultValue: null,
labelWidth: null,
'show-alpha': false,
'color-format': '',
disabled: false,
required: true,
size: 'medium',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/color-picker'
},
{
label: '上传',
tag: 'el-upload',
tagIcon: 'upload',
action: 'https://jsonplaceholder.typicode.com/posts/',
defaultValue: null,
labelWidth: null,
disabled: false,
required: true,
accept: '',
name: 'file',
'auto-upload': true,
showTip: false,
buttonText: '点击上传',
fileSize: 2,
sizeUnit: 'MB',
'list-type': 'text',
multiple: false,
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/upload'
}
]
export const layoutComponents = [
{
layout: 'rowFormItem',
tagIcon: 'row',
type: 'default',
justify: 'start',
align: 'top',
label: '行容器',
layoutTree: true,
children: [],
document: 'https://element.eleme.cn/#/zh-CN/component/layout'
},
{
layout: 'colFormItem',
label: '按钮',
changeTag: true,
labelWidth: null,
tag: 'el-button',
tagIcon: 'button',
span: 24,
default: '主要按钮',
type: 'primary',
icon: 'el-icon-search',
size: 'medium',
disabled: false,
document: 'https://element.eleme.cn/#/zh-CN/component/button'
}
]
// 组件rule的触发方式无触发方式的组件不生成rule
export const trigger = {
'el-input': 'blur',
'el-input-number': 'blur',
'el-select': 'change',
'el-radio-group': 'change',
'el-checkbox-group': 'change',
'el-cascader': 'change',
'el-time-picker': 'change',
'el-date-picker': 'change',
'el-rate': 'change'
}

View File

@ -1,18 +1,18 @@
const styles = {
'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}',
'el-upload': '.el-upload__tip{line-height: 1.2;}'
}
function addCss(cssList, el) {
const css = styles[el.tag]
css && cssList.indexOf(css) === -1 && cssList.push(css)
if (el.children) {
el.children.forEach(el2 => addCss(cssList, el2))
}
}
export function makeUpCss(conf) {
const cssList = []
conf.fields.forEach(el => addCss(cssList, el))
return cssList.join('\n')
}
const styles = {
'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}',
'el-upload': '.el-upload__tip{line-height: 1.2;}'
}
function addCss(cssList, el) {
const css = styles[el.tag]
css && cssList.indexOf(css) === -1 && cssList.push(css)
if (el.children) {
el.children.forEach(el2 => addCss(cssList, el2))
}
}
export function makeUpCss(conf) {
const cssList = []
conf.fields.forEach(el => addCss(cssList, el))
return cssList.join('\n')
}

View File

@ -1,29 +1,29 @@
export default [
{
layout: 'colFormItem',
tagIcon: 'input',
label: '手机号',
vModel: 'mobile',
formId: 6,
tag: 'el-input',
placeholder: '请输入手机号',
defaultValue: '',
span: 24,
style: { width: '100%' },
clearable: true,
prepend: '',
append: '',
'prefix-icon': 'el-icon-mobile',
'suffix-icon': '',
maxlength: 11,
'show-word-limit': true,
readonly: false,
disabled: false,
required: true,
changeTag: true,
regList: [{
pattern: '/^1(3|4|5|7|8|9)\\d{9}$/',
message: '手机号格式错误'
}]
}
]
export default [
{
layout: 'colFormItem',
tagIcon: 'input',
label: '手机号',
vModel: 'mobile',
formId: 6,
tag: 'el-input',
placeholder: '请输入手机号',
defaultValue: '',
span: 24,
style: { width: '100%' },
clearable: true,
prepend: '',
append: '',
'prefix-icon': 'el-icon-mobile',
'suffix-icon': '',
maxlength: 11,
'show-word-limit': true,
readonly: false,
disabled: false,
required: true,
changeTag: true,
regList: [{
pattern: '/^1(3|4|5|7|8|9)\\d{9}$/',
message: '手机号格式错误'
}]
}
]

View File

@ -1,359 +1,359 @@
/* eslint-disable max-len */
import { trigger } from './config'
let confGlobal
let someSpanIsNot24
export function dialogWrapper(str) {
return `<el-dialog v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Titile">
${str}
<div slot="footer">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="handelConfirm">确定</el-button>
</div>
</el-dialog>`
}
export function vueTemplate(str) {
return `<template>
<div>
${str}
</div>
</template>`
}
export function vueScript(str) {
return `<script>
${str}
</script>`
}
export function cssStyle(cssStr) {
return `<style>
${cssStr}
</style>`
}
function buildFormTemplate(conf, child, type) {
let labelPosition = ''
if (conf.labelPosition !== 'right') {
labelPosition = `label-position="${conf.labelPosition}"`
}
const disabled = conf.disabled ? `:disabled="${conf.disabled}"` : ''
let str = `<el-form ref="${conf.formRef}" :model="${conf.formModel}" :rules="${conf.formRules}" size="${conf.size}" ${disabled} label-width="${conf.labelWidth}px" ${labelPosition}>
${child}
${buildFromBtns(conf, type)}
</el-form>`
if (someSpanIsNot24) {
str = `<el-row :gutter="${conf.gutter}">
${str}
</el-row>`
}
return str
}
function buildFromBtns(conf, type) {
let str = ''
if (conf.formBtns && type === 'file') {
str = `<el-form-item size="large">
<el-button type="primary" @click="submitForm">提交</el-button>
<el-button @click="resetForm">重置</el-button>
</el-form-item>`
if (someSpanIsNot24) {
str = `<el-col :span="24">
${str}
</el-col>`
}
}
return str
}
// span不为24的用el-col包裹
function colWrapper(element, str) {
if (someSpanIsNot24 || element.span !== 24) {
return `<el-col :span="${element.span}">
${str}
</el-col>`
}
return str
}
const layouts = {
colFormItem(element) {
let labelWidth = ''
if (element.labelWidth && element.labelWidth !== confGlobal.labelWidth) {
labelWidth = `label-width="${element.labelWidth}px"`
}
const required = !trigger[element.tag] && element.required ? 'required' : ''
const tagDom = tags[element.tag] ? tags[element.tag](element) : null
let str = `<el-form-item ${labelWidth} label="${element.label}" prop="${element.vModel}" ${required}>
${tagDom}
</el-form-item>`
str = colWrapper(element, str)
return str
},
rowFormItem(element) {
const type = element.type === 'default' ? '' : `type="${element.type}"`
const justify = element.type === 'default' ? '' : `justify="${element.justify}"`
const align = element.type === 'default' ? '' : `align="${element.align}"`
const gutter = element.gutter ? `gutter="${element.gutter}"` : ''
const children = element.children.map(el => layouts[el.layout](el))
let str = `<el-row ${type} ${justify} ${align} ${gutter}>
${children.join('\n')}
</el-row>`
str = colWrapper(element, str)
return str
}
}
const tags = {
'el-button': el => {
const {
tag, disabled
} = attrBuilder(el)
const type = el.type ? `type="${el.type}"` : ''
const icon = el.icon ? `icon="${el.icon}"` : ''
const size = el.size ? `size="${el.size}"` : ''
let child = buildElButtonChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${type} ${icon} ${size} ${disabled}>${child}</${el.tag}>`
},
'el-input': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const maxlength = el.maxlength ? `:maxlength="${el.maxlength}"` : ''
const showWordLimit = el['show-word-limit'] ? 'show-word-limit' : ''
const readonly = el.readonly ? 'readonly' : ''
const prefixIcon = el['prefix-icon'] ? `prefix-icon='${el['prefix-icon']}'` : ''
const suffixIcon = el['suffix-icon'] ? `suffix-icon='${el['suffix-icon']}'` : ''
const showPassword = el['show-password'] ? 'show-password' : ''
const type = el.type ? `type="${el.type}"` : ''
const autosize = el.autosize && el.autosize.minRows
? `:autosize="{minRows: ${el.autosize.minRows}, maxRows: ${el.autosize.maxRows}}"`
: ''
let child = buildElInputChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${vModel} ${type} ${placeholder} ${maxlength} ${showWordLimit} ${readonly} ${disabled} ${clearable} ${prefixIcon} ${suffixIcon} ${showPassword} ${autosize} ${width}>${child}</${el.tag}>`
},
'el-input-number': el => {
const { disabled, vModel, placeholder } = attrBuilder(el)
const controlsPosition = el['controls-position'] ? `controls-position=${el['controls-position']}` : ''
const min = el.min ? `:min='${el.min}'` : ''
const max = el.max ? `:max='${el.max}'` : ''
const step = el.step ? `:step='${el.step}'` : ''
const stepStrictly = el['step-strictly'] ? 'step-strictly' : ''
const precision = el.precision ? `:precision='${el.precision}'` : ''
return `<${el.tag} ${vModel} ${placeholder} ${step} ${stepStrictly} ${precision} ${controlsPosition} ${min} ${max} ${disabled}></${el.tag}>`
},
'el-select': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const filterable = el.filterable ? 'filterable' : ''
const multiple = el.multiple ? 'multiple' : ''
let child = buildElSelectChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${vModel} ${placeholder} ${disabled} ${multiple} ${filterable} ${clearable} ${width}>${child}</${el.tag}>`
},
'el-radio-group': el => {
const { disabled, vModel } = attrBuilder(el)
const size = `size="${el.size}"`
let child = buildElRadioGroupChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${vModel} ${size} ${disabled}>${child}</${el.tag}>`
},
'el-checkbox-group': el => {
const { disabled, vModel } = attrBuilder(el)
const size = `size="${el.size}"`
const min = el.min ? `:min="${el.min}"` : ''
const max = el.max ? `:max="${el.max}"` : ''
let child = buildElCheckboxGroupChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${vModel} ${min} ${max} ${size} ${disabled}>${child}</${el.tag}>`
},
'el-switch': el => {
const { disabled, vModel } = attrBuilder(el)
const activeText = el['active-text'] ? `active-text="${el['active-text']}"` : ''
const inactiveText = el['inactive-text'] ? `inactive-text="${el['inactive-text']}"` : ''
const activeColor = el['active-color'] ? `active-color="${el['active-color']}"` : ''
const inactiveColor = el['inactive-color'] ? `inactive-color="${el['inactive-color']}"` : ''
const activeValue = el['active-value'] !== true ? `:active-value='${JSON.stringify(el['active-value'])}'` : ''
const inactiveValue = el['inactive-value'] !== false ? `:inactive-value='${JSON.stringify(el['inactive-value'])}'` : ''
return `<${el.tag} ${vModel} ${activeText} ${inactiveText} ${activeColor} ${inactiveColor} ${activeValue} ${inactiveValue} ${disabled}></${el.tag}>`
},
'el-cascader': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const options = el.options ? `:options="${el.vModel}Options"` : ''
const props = el.props ? `:props="${el.vModel}Props"` : ''
const showAllLevels = el['show-all-levels'] ? '' : ':show-all-levels="false"'
const filterable = el.filterable ? 'filterable' : ''
const separator = el.separator === '/' ? '' : `separator="${el.separator}"`
return `<${el.tag} ${vModel} ${options} ${props} ${width} ${showAllLevels} ${placeholder} ${separator} ${filterable} ${clearable} ${disabled}></${el.tag}>`
},
'el-slider': el => {
const { disabled, vModel } = attrBuilder(el)
const min = el.min ? `:min='${el.min}'` : ''
const max = el.max ? `:max='${el.max}'` : ''
const step = el.step ? `:step='${el.step}'` : ''
const range = el.range ? 'range' : ''
const showStops = el['show-stops'] ? `:show-stops="${el['show-stops']}"` : ''
return `<${el.tag} ${min} ${max} ${step} ${vModel} ${range} ${showStops} ${disabled}></${el.tag}>`
},
'el-time-picker': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : ''
const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : ''
const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : ''
const isRange = el['is-range'] ? 'is-range' : ''
const format = el.format ? `format="${el.format}"` : ''
const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : ''
const pickerOptions = el['picker-options'] ? `:picker-options='${JSON.stringify(el['picker-options'])}'` : ''
return `<${el.tag} ${vModel} ${isRange} ${format} ${valueFormat} ${pickerOptions} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${disabled}></${el.tag}>`
},
'el-date-picker': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : ''
const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : ''
const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : ''
const format = el.format ? `format="${el.format}"` : ''
const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : ''
const type = el.type === 'date' ? '' : `type="${el.type}"`
const readonly = el.readonly ? 'readonly' : ''
return `<${el.tag} ${type} ${vModel} ${format} ${valueFormat} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${readonly} ${disabled}></${el.tag}>`
},
'el-rate': el => {
const { disabled, vModel } = attrBuilder(el)
const max = el.max ? `:max='${el.max}'` : ''
const allowHalf = el['allow-half'] ? 'allow-half' : ''
const showText = el['show-text'] ? 'show-text' : ''
const showScore = el['show-score'] ? 'show-score' : ''
return `<${el.tag} ${vModel} ${allowHalf} ${showText} ${showScore} ${disabled}></${el.tag}>`
},
'el-color-picker': el => {
const { disabled, vModel } = attrBuilder(el)
const size = `size="${el.size}"`
const showAlpha = el['show-alpha'] ? 'show-alpha' : ''
const colorFormat = el['color-format'] ? `color-format="${el['color-format']}"` : ''
return `<${el.tag} ${vModel} ${size} ${showAlpha} ${colorFormat} ${disabled}></${el.tag}>`
},
'el-upload': el => {
const disabled = el.disabled ? ':disabled=\'true\'' : ''
const action = el.action ? `:action="${el.vModel}Action"` : ''
const multiple = el.multiple ? 'multiple' : ''
const listType = el['list-type'] !== 'text' ? `list-type="${el['list-type']}"` : ''
const accept = el.accept ? `accept="${el.accept}"` : ''
const name = el.name !== 'file' ? `name="${el.name}"` : ''
const autoUpload = el['auto-upload'] === false ? ':auto-upload="false"' : ''
const beforeUpload = `:before-upload="${el.vModel}BeforeUpload"`
const fileList = `:file-list="${el.vModel}fileList"`
const ref = `ref="${el.vModel}"`
let child = buildElUploadChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${ref} ${fileList} ${action} ${autoUpload} ${multiple} ${beforeUpload} ${listType} ${accept} ${name} ${disabled}>${child}</${el.tag}>`
}
}
function attrBuilder(el) {
return {
vModel: `v-model="${confGlobal.formModel}.${el.vModel}"`,
clearable: el.clearable ? 'clearable' : '',
placeholder: el.placeholder ? `placeholder="${el.placeholder}"` : '',
width: el.style && el.style.width ? ':style="{width: \'100%\'}"' : '',
disabled: el.disabled ? ':disabled=\'true\'' : ''
}
}
// el-buttin 子级
function buildElButtonChild(conf) {
const children = []
if (conf.default) {
children.push(conf.default)
}
return children.join('\n')
}
// el-input innerHTML
function buildElInputChild(conf) {
const children = []
if (conf.prepend) {
children.push(`<template slot="prepend">${conf.prepend}</template>`)
}
if (conf.append) {
children.push(`<template slot="append">${conf.append}</template>`)
}
return children.join('\n')
}
function buildElSelectChild(conf) {
const children = []
if (conf.options && conf.options.length) {
children.push(`<el-option v-for="(item, index) in ${conf.vModel}Options" :key="index" :label="item.label" :value="item.value" :disabled="item.disabled"></el-option>`)
}
return children.join('\n')
}
function buildElRadioGroupChild(conf) {
const children = []
if (conf.options && conf.options.length) {
const tag = conf.optionType === 'button' ? 'el-radio-button' : 'el-radio'
const border = conf.border ? 'border' : ''
children.push(`<${tag} v-for="(item, index) in ${conf.vModel}Options" :key="index" :label="item.value" :disabled="item.disabled" ${border}>{{item.label}}</${tag}>`)
}
return children.join('\n')
}
function buildElCheckboxGroupChild(conf) {
const children = []
if (conf.options && conf.options.length) {
const tag = conf.optionType === 'button' ? 'el-checkbox-button' : 'el-checkbox'
const border = conf.border ? 'border' : ''
children.push(`<${tag} v-for="(item, index) in ${conf.vModel}Options" :key="index" :label="item.value" :disabled="item.disabled" ${border}>{{item.label}}</${tag}>`)
}
return children.join('\n')
}
function buildElUploadChild(conf) {
const list = []
if (conf['list-type'] === 'picture-card') list.push('<i class="el-icon-plus"></i>')
else list.push(`<el-button size="small" type="primary" icon="el-icon-upload">${conf.buttonText}</el-button>`)
if (conf.showTip) list.push(`<div slot="tip" class="el-upload__tip">只能上传不超过 ${conf.fileSize}${conf.sizeUnit}${conf.accept}文件</div>`)
return list.join('\n')
}
export function makeUpHtml(conf, type) {
const htmlList = []
confGlobal = conf
someSpanIsNot24 = conf.fields.some(item => item.span !== 24)
conf.fields.forEach(el => {
htmlList.push(layouts[el.layout](el))
})
const htmlStr = htmlList.join('\n')
let temp = buildFormTemplate(conf, htmlStr, type)
if (type === 'dialog') {
temp = dialogWrapper(temp)
}
confGlobal = null
return temp
}
/* eslint-disable max-len */
import { trigger } from './config'
let confGlobal
let someSpanIsNot24
export function dialogWrapper(str) {
return `<el-dialog v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Titile">
${str}
<div slot="footer">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="handelConfirm">确定</el-button>
</div>
</el-dialog>`
}
export function vueTemplate(str) {
return `<template>
<div>
${str}
</div>
</template>`
}
export function vueScript(str) {
return `<script>
${str}
</script>`
}
export function cssStyle(cssStr) {
return `<style>
${cssStr}
</style>`
}
function buildFormTemplate(conf, child, type) {
let labelPosition = ''
if (conf.labelPosition !== 'right') {
labelPosition = `label-position="${conf.labelPosition}"`
}
const disabled = conf.disabled ? `:disabled="${conf.disabled}"` : ''
let str = `<el-form ref="${conf.formRef}" :model="${conf.formModel}" :rules="${conf.formRules}" size="${conf.size}" ${disabled} label-width="${conf.labelWidth}px" ${labelPosition}>
${child}
${buildFromBtns(conf, type)}
</el-form>`
if (someSpanIsNot24) {
str = `<el-row :gutter="${conf.gutter}">
${str}
</el-row>`
}
return str
}
function buildFromBtns(conf, type) {
let str = ''
if (conf.formBtns && type === 'file') {
str = `<el-form-item size="large">
<el-button type="primary" @click="submitForm">提交</el-button>
<el-button @click="resetForm">重置</el-button>
</el-form-item>`
if (someSpanIsNot24) {
str = `<el-col :span="24">
${str}
</el-col>`
}
}
return str
}
// span不为24的用el-col包裹
function colWrapper(element, str) {
if (someSpanIsNot24 || element.span !== 24) {
return `<el-col :span="${element.span}">
${str}
</el-col>`
}
return str
}
const layouts = {
colFormItem(element) {
let labelWidth = ''
if (element.labelWidth && element.labelWidth !== confGlobal.labelWidth) {
labelWidth = `label-width="${element.labelWidth}px"`
}
const required = !trigger[element.tag] && element.required ? 'required' : ''
const tagDom = tags[element.tag] ? tags[element.tag](element) : null
let str = `<el-form-item ${labelWidth} label="${element.label}" prop="${element.vModel}" ${required}>
${tagDom}
</el-form-item>`
str = colWrapper(element, str)
return str
},
rowFormItem(element) {
const type = element.type === 'default' ? '' : `type="${element.type}"`
const justify = element.type === 'default' ? '' : `justify="${element.justify}"`
const align = element.type === 'default' ? '' : `align="${element.align}"`
const gutter = element.gutter ? `gutter="${element.gutter}"` : ''
const children = element.children.map(el => layouts[el.layout](el))
let str = `<el-row ${type} ${justify} ${align} ${gutter}>
${children.join('\n')}
</el-row>`
str = colWrapper(element, str)
return str
}
}
const tags = {
'el-button': el => {
const {
tag, disabled
} = attrBuilder(el)
const type = el.type ? `type="${el.type}"` : ''
const icon = el.icon ? `icon="${el.icon}"` : ''
const size = el.size ? `size="${el.size}"` : ''
let child = buildElButtonChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${type} ${icon} ${size} ${disabled}>${child}</${el.tag}>`
},
'el-input': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const maxlength = el.maxlength ? `:maxlength="${el.maxlength}"` : ''
const showWordLimit = el['show-word-limit'] ? 'show-word-limit' : ''
const readonly = el.readonly ? 'readonly' : ''
const prefixIcon = el['prefix-icon'] ? `prefix-icon='${el['prefix-icon']}'` : ''
const suffixIcon = el['suffix-icon'] ? `suffix-icon='${el['suffix-icon']}'` : ''
const showPassword = el['show-password'] ? 'show-password' : ''
const type = el.type ? `type="${el.type}"` : ''
const autosize = el.autosize && el.autosize.minRows
? `:autosize="{minRows: ${el.autosize.minRows}, maxRows: ${el.autosize.maxRows}}"`
: ''
let child = buildElInputChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${vModel} ${type} ${placeholder} ${maxlength} ${showWordLimit} ${readonly} ${disabled} ${clearable} ${prefixIcon} ${suffixIcon} ${showPassword} ${autosize} ${width}>${child}</${el.tag}>`
},
'el-input-number': el => {
const { disabled, vModel, placeholder } = attrBuilder(el)
const controlsPosition = el['controls-position'] ? `controls-position=${el['controls-position']}` : ''
const min = el.min ? `:min='${el.min}'` : ''
const max = el.max ? `:max='${el.max}'` : ''
const step = el.step ? `:step='${el.step}'` : ''
const stepStrictly = el['step-strictly'] ? 'step-strictly' : ''
const precision = el.precision ? `:precision='${el.precision}'` : ''
return `<${el.tag} ${vModel} ${placeholder} ${step} ${stepStrictly} ${precision} ${controlsPosition} ${min} ${max} ${disabled}></${el.tag}>`
},
'el-select': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const filterable = el.filterable ? 'filterable' : ''
const multiple = el.multiple ? 'multiple' : ''
let child = buildElSelectChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${vModel} ${placeholder} ${disabled} ${multiple} ${filterable} ${clearable} ${width}>${child}</${el.tag}>`
},
'el-radio-group': el => {
const { disabled, vModel } = attrBuilder(el)
const size = `size="${el.size}"`
let child = buildElRadioGroupChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${vModel} ${size} ${disabled}>${child}</${el.tag}>`
},
'el-checkbox-group': el => {
const { disabled, vModel } = attrBuilder(el)
const size = `size="${el.size}"`
const min = el.min ? `:min="${el.min}"` : ''
const max = el.max ? `:max="${el.max}"` : ''
let child = buildElCheckboxGroupChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${vModel} ${min} ${max} ${size} ${disabled}>${child}</${el.tag}>`
},
'el-switch': el => {
const { disabled, vModel } = attrBuilder(el)
const activeText = el['active-text'] ? `active-text="${el['active-text']}"` : ''
const inactiveText = el['inactive-text'] ? `inactive-text="${el['inactive-text']}"` : ''
const activeColor = el['active-color'] ? `active-color="${el['active-color']}"` : ''
const inactiveColor = el['inactive-color'] ? `inactive-color="${el['inactive-color']}"` : ''
const activeValue = el['active-value'] !== true ? `:active-value='${JSON.stringify(el['active-value'])}'` : ''
const inactiveValue = el['inactive-value'] !== false ? `:inactive-value='${JSON.stringify(el['inactive-value'])}'` : ''
return `<${el.tag} ${vModel} ${activeText} ${inactiveText} ${activeColor} ${inactiveColor} ${activeValue} ${inactiveValue} ${disabled}></${el.tag}>`
},
'el-cascader': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const options = el.options ? `:options="${el.vModel}Options"` : ''
const props = el.props ? `:props="${el.vModel}Props"` : ''
const showAllLevels = el['show-all-levels'] ? '' : ':show-all-levels="false"'
const filterable = el.filterable ? 'filterable' : ''
const separator = el.separator === '/' ? '' : `separator="${el.separator}"`
return `<${el.tag} ${vModel} ${options} ${props} ${width} ${showAllLevels} ${placeholder} ${separator} ${filterable} ${clearable} ${disabled}></${el.tag}>`
},
'el-slider': el => {
const { disabled, vModel } = attrBuilder(el)
const min = el.min ? `:min='${el.min}'` : ''
const max = el.max ? `:max='${el.max}'` : ''
const step = el.step ? `:step='${el.step}'` : ''
const range = el.range ? 'range' : ''
const showStops = el['show-stops'] ? `:show-stops="${el['show-stops']}"` : ''
return `<${el.tag} ${min} ${max} ${step} ${vModel} ${range} ${showStops} ${disabled}></${el.tag}>`
},
'el-time-picker': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : ''
const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : ''
const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : ''
const isRange = el['is-range'] ? 'is-range' : ''
const format = el.format ? `format="${el.format}"` : ''
const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : ''
const pickerOptions = el['picker-options'] ? `:picker-options='${JSON.stringify(el['picker-options'])}'` : ''
return `<${el.tag} ${vModel} ${isRange} ${format} ${valueFormat} ${pickerOptions} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${disabled}></${el.tag}>`
},
'el-date-picker': el => {
const {
disabled, vModel, clearable, placeholder, width
} = attrBuilder(el)
const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : ''
const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : ''
const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : ''
const format = el.format ? `format="${el.format}"` : ''
const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : ''
const type = el.type === 'date' ? '' : `type="${el.type}"`
const readonly = el.readonly ? 'readonly' : ''
return `<${el.tag} ${type} ${vModel} ${format} ${valueFormat} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${readonly} ${disabled}></${el.tag}>`
},
'el-rate': el => {
const { disabled, vModel } = attrBuilder(el)
const max = el.max ? `:max='${el.max}'` : ''
const allowHalf = el['allow-half'] ? 'allow-half' : ''
const showText = el['show-text'] ? 'show-text' : ''
const showScore = el['show-score'] ? 'show-score' : ''
return `<${el.tag} ${vModel} ${allowHalf} ${showText} ${showScore} ${disabled}></${el.tag}>`
},
'el-color-picker': el => {
const { disabled, vModel } = attrBuilder(el)
const size = `size="${el.size}"`
const showAlpha = el['show-alpha'] ? 'show-alpha' : ''
const colorFormat = el['color-format'] ? `color-format="${el['color-format']}"` : ''
return `<${el.tag} ${vModel} ${size} ${showAlpha} ${colorFormat} ${disabled}></${el.tag}>`
},
'el-upload': el => {
const disabled = el.disabled ? ':disabled=\'true\'' : ''
const action = el.action ? `:action="${el.vModel}Action"` : ''
const multiple = el.multiple ? 'multiple' : ''
const listType = el['list-type'] !== 'text' ? `list-type="${el['list-type']}"` : ''
const accept = el.accept ? `accept="${el.accept}"` : ''
const name = el.name !== 'file' ? `name="${el.name}"` : ''
const autoUpload = el['auto-upload'] === false ? ':auto-upload="false"' : ''
const beforeUpload = `:before-upload="${el.vModel}BeforeUpload"`
const fileList = `:file-list="${el.vModel}fileList"`
const ref = `ref="${el.vModel}"`
let child = buildElUploadChild(el)
if (child) child = `\n${child}\n` // 换行
return `<${el.tag} ${ref} ${fileList} ${action} ${autoUpload} ${multiple} ${beforeUpload} ${listType} ${accept} ${name} ${disabled}>${child}</${el.tag}>`
}
}
function attrBuilder(el) {
return {
vModel: `v-model="${confGlobal.formModel}.${el.vModel}"`,
clearable: el.clearable ? 'clearable' : '',
placeholder: el.placeholder ? `placeholder="${el.placeholder}"` : '',
width: el.style && el.style.width ? ':style="{width: \'100%\'}"' : '',
disabled: el.disabled ? ':disabled=\'true\'' : ''
}
}
// el-buttin 子级
function buildElButtonChild(conf) {
const children = []
if (conf.default) {
children.push(conf.default)
}
return children.join('\n')
}
// el-input innerHTML
function buildElInputChild(conf) {
const children = []
if (conf.prepend) {
children.push(`<template slot="prepend">${conf.prepend}</template>`)
}
if (conf.append) {
children.push(`<template slot="append">${conf.append}</template>`)
}
return children.join('\n')
}
function buildElSelectChild(conf) {
const children = []
if (conf.options && conf.options.length) {
children.push(`<el-option v-for="(item, index) in ${conf.vModel}Options" :key="index" :label="item.label" :value="item.value" :disabled="item.disabled"></el-option>`)
}
return children.join('\n')
}
function buildElRadioGroupChild(conf) {
const children = []
if (conf.options && conf.options.length) {
const tag = conf.optionType === 'button' ? 'el-radio-button' : 'el-radio'
const border = conf.border ? 'border' : ''
children.push(`<${tag} v-for="(item, index) in ${conf.vModel}Options" :key="index" :label="item.value" :disabled="item.disabled" ${border}>{{item.label}}</${tag}>`)
}
return children.join('\n')
}
function buildElCheckboxGroupChild(conf) {
const children = []
if (conf.options && conf.options.length) {
const tag = conf.optionType === 'button' ? 'el-checkbox-button' : 'el-checkbox'
const border = conf.border ? 'border' : ''
children.push(`<${tag} v-for="(item, index) in ${conf.vModel}Options" :key="index" :label="item.value" :disabled="item.disabled" ${border}>{{item.label}}</${tag}>`)
}
return children.join('\n')
}
function buildElUploadChild(conf) {
const list = []
if (conf['list-type'] === 'picture-card') list.push('<i class="el-icon-plus"></i>')
else list.push(`<el-button size="small" type="primary" icon="el-icon-upload">${conf.buttonText}</el-button>`)
if (conf.showTip) list.push(`<div slot="tip" class="el-upload__tip">只能上传不超过 ${conf.fileSize}${conf.sizeUnit}${conf.accept}文件</div>`)
return list.join('\n')
}
export function makeUpHtml(conf, type) {
const htmlList = []
confGlobal = conf
someSpanIsNot24 = conf.fields.some(item => item.span !== 24)
conf.fields.forEach(el => {
htmlList.push(layouts[el.layout](el))
})
const htmlStr = htmlList.join('\n')
let temp = buildFormTemplate(conf, htmlStr, type)
if (type === 'dialog') {
temp = dialogWrapper(temp)
}
confGlobal = null
return temp
}

View File

@ -1,236 +1,236 @@
import { isArray } from 'util'
import { exportDefault, titleCase } from '@/utils/index'
import { trigger } from './config'
const units = {
KB: '1024',
MB: '1024 / 1024',
GB: '1024 / 1024 / 1024'
}
let confGlobal
const inheritAttrs = {
file: '',
dialog: 'inheritAttrs: false,'
}
export function makeUpJs(conf, type) {
confGlobal = conf = JSON.parse(JSON.stringify(conf))
const dataList = []
const ruleList = []
const optionsList = []
const propsList = []
const methodList = mixinMethod(type)
const uploadVarList = []
conf.fields.forEach(el => {
buildAttributes(el, dataList, ruleList, optionsList, methodList, propsList, uploadVarList)
})
const script = buildexport(
conf,
type,
dataList.join('\n'),
ruleList.join('\n'),
optionsList.join('\n'),
uploadVarList.join('\n'),
propsList.join('\n'),
methodList.join('\n')
)
confGlobal = null
return script
}
function buildAttributes(el, dataList, ruleList, optionsList, methodList, propsList, uploadVarList) {
buildData(el, dataList)
buildRules(el, ruleList)
if (el.options && el.options.length) {
buildOptions(el, optionsList)
if (el.dataType === 'dynamic') {
const model = `${el.vModel}Options`
const options = titleCase(model)
buildOptionMethod(`get${options}`, model, methodList)
}
}
if (el.props && el.props.props) {
buildProps(el, propsList)
}
if (el.action && el.tag === 'el-upload') {
uploadVarList.push(
`${el.vModel}Action: '${el.action}',
${el.vModel}fileList: [],`
)
methodList.push(buildBeforeUpload(el))
if (!el['auto-upload']) {
methodList.push(buildSubmitUpload(el))
}
}
if (el.children) {
el.children.forEach(el2 => {
buildAttributes(el2, dataList, ruleList, optionsList, methodList, propsList, uploadVarList)
})
}
}
function mixinMethod(type) {
const list = []; const
minxins = {
file: confGlobal.formBtns ? {
submitForm: `submitForm() {
this.$refs['${confGlobal.formRef}'].validate(valid => {
if(!valid) return
// TODO 提交表单
})
},`,
resetForm: `resetForm() {
this.$refs['${confGlobal.formRef}'].resetFields()
},`
} : null,
dialog: {
onOpen: 'onOpen() {},',
onClose: `onClose() {
this.$refs['${confGlobal.formRef}'].resetFields()
},`,
close: `close() {
this.$emit('update:visible', false)
},`,
handelConfirm: `handelConfirm() {
this.$refs['${confGlobal.formRef}'].validate(valid => {
if(!valid) return
this.close()
})
},`
}
}
const methods = minxins[type]
if (methods) {
Object.keys(methods).forEach(key => {
list.push(methods[key])
})
}
return list
}
function buildData(conf, dataList) {
if (conf.vModel === undefined) return
let defaultValue
if (typeof (conf.defaultValue) === 'string' && !conf.multiple) {
defaultValue = `'${conf.defaultValue}'`
} else {
defaultValue = `${JSON.stringify(conf.defaultValue)}`
}
dataList.push(`${conf.vModel}: ${defaultValue},`)
}
function buildRules(conf, ruleList) {
if (conf.vModel === undefined) return
const rules = []
if (trigger[conf.tag]) {
if (conf.required) {
const type = isArray(conf.defaultValue) ? 'type: \'array\',' : ''
let message = isArray(conf.defaultValue) ? `请至少选择一个${conf.vModel}` : conf.placeholder
if (message === undefined) message = `${conf.label}不能为空`
rules.push(`{ required: true, ${type} message: '${message}', trigger: '${trigger[conf.tag]}' }`)
}
if (conf.regList && isArray(conf.regList)) {
conf.regList.forEach(item => {
if (item.pattern) {
rules.push(`{ pattern: ${eval(item.pattern)}, message: '${item.message}', trigger: '${trigger[conf.tag]}' }`)
}
})
}
ruleList.push(`${conf.vModel}: [${rules.join(',')}],`)
}
}
function buildOptions(conf, optionsList) {
if (conf.vModel === undefined) return
if (conf.dataType === 'dynamic') { conf.options = [] }
const str = `${conf.vModel}Options: ${JSON.stringify(conf.options)},`
optionsList.push(str)
}
function buildProps(conf, propsList) {
if (conf.dataType === 'dynamic') {
conf.valueKey !== 'value' && (conf.props.props.value = conf.valueKey)
conf.labelKey !== 'label' && (conf.props.props.label = conf.labelKey)
conf.childrenKey !== 'children' && (conf.props.props.children = conf.childrenKey)
}
const str = `${conf.vModel}Props: ${JSON.stringify(conf.props.props)},`
propsList.push(str)
}
function buildBeforeUpload(conf) {
const unitNum = units[conf.sizeUnit]; let rightSizeCode = ''; let acceptCode = ''; const
returnList = []
if (conf.fileSize) {
rightSizeCode = `let isRightSize = file.size / ${unitNum} < ${conf.fileSize}
if(!isRightSize){
this.$message.error('文件大小超过 ${conf.fileSize}${conf.sizeUnit}')
}`
returnList.push('isRightSize')
}
if (conf.accept) {
acceptCode = `let isAccept = new RegExp('${conf.accept}').test(file.type)
if(!isAccept){
this.$message.error('应该选择${conf.accept}类型的文件')
}`
returnList.push('isAccept')
}
const str = `${conf.vModel}BeforeUpload(file) {
${rightSizeCode}
${acceptCode}
return ${returnList.join('&&')}
},`
return returnList.length ? str : ''
}
function buildSubmitUpload(conf) {
const str = `submitUpload() {
this.$refs['${conf.vModel}'].submit()
},`
return str
}
function buildOptionMethod(methodName, model, methodList) {
const str = `${methodName}() {
// TODO 发起请求获取数据
this.${model}
},`
methodList.push(str)
}
function buildexport(conf, type, data, rules, selectOptions, uploadVar, props, methods) {
const str = `${exportDefault}{
${inheritAttrs[type]}
components: {},
props: [],
data () {
return {
${conf.formModel}: {
${data}
},
${conf.formRules}: {
${rules}
},
${uploadVar}
${selectOptions}
${props}
}
},
computed: {},
watch: {},
created () {},
mounted () {},
methods: {
${methods}
}
}`
return str
}
import { isArray } from 'util'
import { exportDefault, titleCase } from '@/utils/index'
import { trigger } from './config'
const units = {
KB: '1024',
MB: '1024 / 1024',
GB: '1024 / 1024 / 1024'
}
let confGlobal
const inheritAttrs = {
file: '',
dialog: 'inheritAttrs: false,'
}
export function makeUpJs(conf, type) {
confGlobal = conf = JSON.parse(JSON.stringify(conf))
const dataList = []
const ruleList = []
const optionsList = []
const propsList = []
const methodList = mixinMethod(type)
const uploadVarList = []
conf.fields.forEach(el => {
buildAttributes(el, dataList, ruleList, optionsList, methodList, propsList, uploadVarList)
})
const script = buildexport(
conf,
type,
dataList.join('\n'),
ruleList.join('\n'),
optionsList.join('\n'),
uploadVarList.join('\n'),
propsList.join('\n'),
methodList.join('\n')
)
confGlobal = null
return script
}
function buildAttributes(el, dataList, ruleList, optionsList, methodList, propsList, uploadVarList) {
buildData(el, dataList)
buildRules(el, ruleList)
if (el.options && el.options.length) {
buildOptions(el, optionsList)
if (el.dataType === 'dynamic') {
const model = `${el.vModel}Options`
const options = titleCase(model)
buildOptionMethod(`get${options}`, model, methodList)
}
}
if (el.props && el.props.props) {
buildProps(el, propsList)
}
if (el.action && el.tag === 'el-upload') {
uploadVarList.push(
`${el.vModel}Action: '${el.action}',
${el.vModel}fileList: [],`
)
methodList.push(buildBeforeUpload(el))
if (!el['auto-upload']) {
methodList.push(buildSubmitUpload(el))
}
}
if (el.children) {
el.children.forEach(el2 => {
buildAttributes(el2, dataList, ruleList, optionsList, methodList, propsList, uploadVarList)
})
}
}
function mixinMethod(type) {
const list = []; const
minxins = {
file: confGlobal.formBtns ? {
submitForm: `submitForm() {
this.$refs['${confGlobal.formRef}'].validate(valid => {
if(!valid) return
// TODO 提交表单
})
},`,
resetForm: `resetForm() {
this.$refs['${confGlobal.formRef}'].resetFields()
},`
} : null,
dialog: {
onOpen: 'onOpen() {},',
onClose: `onClose() {
this.$refs['${confGlobal.formRef}'].resetFields()
},`,
close: `close() {
this.$emit('update:visible', false)
},`,
handelConfirm: `handelConfirm() {
this.$refs['${confGlobal.formRef}'].validate(valid => {
if(!valid) return
this.close()
})
},`
}
}
const methods = minxins[type]
if (methods) {
Object.keys(methods).forEach(key => {
list.push(methods[key])
})
}
return list
}
function buildData(conf, dataList) {
if (conf.vModel === undefined) return
let defaultValue
if (typeof (conf.defaultValue) === 'string' && !conf.multiple) {
defaultValue = `'${conf.defaultValue}'`
} else {
defaultValue = `${JSON.stringify(conf.defaultValue)}`
}
dataList.push(`${conf.vModel}: ${defaultValue},`)
}
function buildRules(conf, ruleList) {
if (conf.vModel === undefined) return
const rules = []
if (trigger[conf.tag]) {
if (conf.required) {
const type = isArray(conf.defaultValue) ? 'type: \'array\',' : ''
let message = isArray(conf.defaultValue) ? `请至少选择一个${conf.vModel}` : conf.placeholder
if (message === undefined) message = `${conf.label}不能为空`
rules.push(`{ required: true, ${type} message: '${message}', trigger: '${trigger[conf.tag]}' }`)
}
if (conf.regList && isArray(conf.regList)) {
conf.regList.forEach(item => {
if (item.pattern) {
rules.push(`{ pattern: ${eval(item.pattern)}, message: '${item.message}', trigger: '${trigger[conf.tag]}' }`)
}
})
}
ruleList.push(`${conf.vModel}: [${rules.join(',')}],`)
}
}
function buildOptions(conf, optionsList) {
if (conf.vModel === undefined) return
if (conf.dataType === 'dynamic') { conf.options = [] }
const str = `${conf.vModel}Options: ${JSON.stringify(conf.options)},`
optionsList.push(str)
}
function buildProps(conf, propsList) {
if (conf.dataType === 'dynamic') {
conf.valueKey !== 'value' && (conf.props.props.value = conf.valueKey)
conf.labelKey !== 'label' && (conf.props.props.label = conf.labelKey)
conf.childrenKey !== 'children' && (conf.props.props.children = conf.childrenKey)
}
const str = `${conf.vModel}Props: ${JSON.stringify(conf.props.props)},`
propsList.push(str)
}
function buildBeforeUpload(conf) {
const unitNum = units[conf.sizeUnit]; let rightSizeCode = ''; let acceptCode = ''; const
returnList = []
if (conf.fileSize) {
rightSizeCode = `let isRightSize = file.size / ${unitNum} < ${conf.fileSize}
if(!isRightSize){
this.$message.error('文件大小超过 ${conf.fileSize}${conf.sizeUnit}')
}`
returnList.push('isRightSize')
}
if (conf.accept) {
acceptCode = `let isAccept = new RegExp('${conf.accept}').test(file.type)
if(!isAccept){
this.$message.error('应该选择${conf.accept}类型的文件')
}`
returnList.push('isAccept')
}
const str = `${conf.vModel}BeforeUpload(file) {
${rightSizeCode}
${acceptCode}
return ${returnList.join('&&')}
},`
return returnList.length ? str : ''
}
function buildSubmitUpload(conf) {
const str = `submitUpload() {
this.$refs['${conf.vModel}'].submit()
},`
return str
}
function buildOptionMethod(methodName, model, methodList) {
const str = `${methodName}() {
// TODO 发起请求获取数据
this.${model}
},`
methodList.push(str)
}
function buildexport(conf, type, data, rules, selectOptions, uploadVar, props, methods) {
const str = `${exportDefault}{
${inheritAttrs[type]}
components: {},
props: [],
data () {
return {
${conf.formModel}: {
${data}
},
${conf.formRules}: {
${rules}
},
${uploadVar}
${selectOptions}
${props}
}
},
computed: {},
watch: {},
created () {},
mounted () {},
methods: {
${methods}
}
}`
return str
}

View File

@ -1,126 +1,126 @@
import { makeMap } from '@/utils/index'
// 参考https://github.com/vuejs/vue/blob/v2.6.10/src/platforms/web/server/util.js
const isAttr = makeMap(
'accept,accept-charset,accesskey,action,align,alt,async,autocomplete,'
+ 'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,'
+ 'checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,'
+ 'name,contenteditable,contextmenu,controls,coords,data,datetime,default,'
+ 'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,'
+ 'form,formaction,headers,height,hidden,high,href,hreflang,http-equiv,'
+ 'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,'
+ 'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,'
+ 'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,'
+ 'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,'
+ 'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,'
+ 'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,'
+ 'target,title,type,usemap,value,width,wrap'
)
function vModel(self, dataObject, defaultValue) {
dataObject.props.value = defaultValue
dataObject.on.input = val => {
self.$emit('input', val)
}
}
const componentChild = {
'el-button': {
default(h, conf, key) {
return conf[key]
},
},
'el-input': {
prepend(h, conf, key) {
return <template slot="prepend">{conf[key]}</template>
},
append(h, conf, key) {
return <template slot="append">{conf[key]}</template>
}
},
'el-select': {
options(h, conf, key) {
const list = []
conf.options.forEach(item => {
list.push(<el-option label={item.label} value={item.value} disabled={item.disabled}></el-option>)
})
return list
}
},
'el-radio-group': {
options(h, conf, key) {
const list = []
conf.options.forEach(item => {
if (conf.optionType === 'button') list.push(<el-radio-button label={item.value}>{item.label}</el-radio-button>)
else list.push(<el-radio label={item.value} border={conf.border}>{item.label}</el-radio>)
})
return list
}
},
'el-checkbox-group': {
options(h, conf, key) {
const list = []
conf.options.forEach(item => {
if (conf.optionType === 'button') {
list.push(<el-checkbox-button label={item.value}>{item.label}</el-checkbox-button>)
} else {
list.push(<el-checkbox label={item.value} border={conf.border}>{item.label}</el-checkbox>)
}
})
return list
}
},
'el-upload': {
'list-type': (h, conf, key) => {
const list = []
if (conf['list-type'] === 'picture-card') {
list.push(<i class="el-icon-plus"></i>)
} else {
list.push(<el-button size="small" type="primary" icon="el-icon-upload">{conf.buttonText}</el-button>)
}
if (conf.showTip) {
list.push(<div slot="tip" class="el-upload__tip">只能上传不超过 {conf.fileSize}{conf.sizeUnit} {conf.accept}文件</div>)
}
return list
}
}
}
export default {
render(h) {
const dataObject = {
attrs: {},
props: {},
on: {},
style: {}
}
const confClone = JSON.parse(JSON.stringify(this.conf))
const children = []
const childObjs = componentChild[confClone.tag]
if (childObjs) {
Object.keys(childObjs).forEach(key => {
const childFunc = childObjs[key]
if (confClone[key]) {
children.push(childFunc(h, confClone, key))
}
})
}
Object.keys(confClone).forEach(key => {
const val = confClone[key]
if (key === 'vModel') {
vModel(this, dataObject, confClone.defaultValue)
} else if (dataObject[key]) {
dataObject[key] = val
} else if (!isAttr(key)) {
dataObject.props[key] = val
} else {
dataObject.attrs[key] = val
}
})
return h(this.conf.tag, dataObject, children)
},
props: ['conf']
}
import { makeMap } from '@/utils/index'
// 参考https://github.com/vuejs/vue/blob/v2.6.10/src/platforms/web/server/util.js
const isAttr = makeMap(
'accept,accept-charset,accesskey,action,align,alt,async,autocomplete,'
+ 'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,'
+ 'checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,'
+ 'name,contenteditable,contextmenu,controls,coords,data,datetime,default,'
+ 'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,'
+ 'form,formaction,headers,height,hidden,high,href,hreflang,http-equiv,'
+ 'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,'
+ 'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,'
+ 'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,'
+ 'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,'
+ 'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,'
+ 'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,'
+ 'target,title,type,usemap,value,width,wrap'
)
function vModel(self, dataObject, defaultValue) {
dataObject.props.value = defaultValue
dataObject.on.input = val => {
self.$emit('input', val)
}
}
const componentChild = {
'el-button': {
default(h, conf, key) {
return conf[key]
},
},
'el-input': {
prepend(h, conf, key) {
return <template slot="prepend">{conf[key]}</template>
},
append(h, conf, key) {
return <template slot="append">{conf[key]}</template>
}
},
'el-select': {
options(h, conf, key) {
const list = []
conf.options.forEach(item => {
list.push(<el-option label={item.label} value={item.value} disabled={item.disabled}></el-option>)
})
return list
}
},
'el-radio-group': {
options(h, conf, key) {
const list = []
conf.options.forEach(item => {
if (conf.optionType === 'button') list.push(<el-radio-button label={item.value}>{item.label}</el-radio-button>)
else list.push(<el-radio label={item.value} border={conf.border}>{item.label}</el-radio>)
})
return list
}
},
'el-checkbox-group': {
options(h, conf, key) {
const list = []
conf.options.forEach(item => {
if (conf.optionType === 'button') {
list.push(<el-checkbox-button label={item.value}>{item.label}</el-checkbox-button>)
} else {
list.push(<el-checkbox label={item.value} border={conf.border}>{item.label}</el-checkbox>)
}
})
return list
}
},
'el-upload': {
'list-type': (h, conf, key) => {
const list = []
if (conf['list-type'] === 'picture-card') {
list.push(<i class="el-icon-plus"></i>)
} else {
list.push(<el-button size="small" type="primary" icon="el-icon-upload">{conf.buttonText}</el-button>)
}
if (conf.showTip) {
list.push(<div slot="tip" class="el-upload__tip">只能上传不超过 {conf.fileSize}{conf.sizeUnit} {conf.accept}文件</div>)
}
return list
}
}
}
export default {
render(h) {
const dataObject = {
attrs: {},
props: {},
on: {},
style: {}
}
const confClone = JSON.parse(JSON.stringify(this.conf))
const children = []
const childObjs = componentChild[confClone.tag]
if (childObjs) {
Object.keys(childObjs).forEach(key => {
const childFunc = childObjs[key]
if (confClone[key]) {
children.push(childFunc(h, confClone, key))
}
})
}
Object.keys(confClone).forEach(key => {
const val = confClone[key]
if (key === 'vModel') {
vModel(this, dataObject, confClone.defaultValue)
} else if (dataObject[key]) {
dataObject[key] = val
} else if (!isAttr(key)) {
dataObject.props[key] = val
} else {
dataObject.attrs[key] = val
}
})
return h(this.conf.tag, dataObject, children)
},
props: ['conf']
}

View File

@ -1,98 +1,98 @@
<template>
<div class="dashboard-editor-container">
<panel-group @handleSetLineChartData="handleSetLineChartData" />
<el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
<line-chart :chart-data="lineChartData" />
</el-row>
<el-row :gutter="32">
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<raddar-chart />
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<pie-chart />
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<bar-chart />
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import PanelGroup from './dashboard/PanelGroup'
import LineChart from './dashboard/LineChart'
import RaddarChart from './dashboard/RaddarChart'
import PieChart from './dashboard/PieChart'
import BarChart from './dashboard/BarChart'
const lineChartData = {
newVisitis: {
expectedData: [100, 120, 161, 134, 105, 160, 165],
actualData: [120, 82, 91, 154, 162, 140, 145]
},
messages: {
expectedData: [200, 192, 120, 144, 160, 130, 140],
actualData: [180, 160, 151, 106, 145, 150, 130]
},
purchases: {
expectedData: [80, 100, 121, 104, 105, 90, 100],
actualData: [120, 90, 100, 138, 142, 130, 130]
},
shoppings: {
expectedData: [130, 140, 141, 142, 145, 150, 160],
actualData: [120, 82, 91, 154, 162, 140, 130]
}
}
export default {
name: 'Index',
components: {
PanelGroup,
LineChart,
RaddarChart,
PieChart,
BarChart
},
data() {
return {
lineChartData: lineChartData.newVisitis
}
},
methods: {
handleSetLineChartData(type) {
this.lineChartData = lineChartData[type]
}
}
}
</script>
<style lang="scss" scoped>
.dashboard-editor-container {
padding: 32px;
background-color: rgb(240, 242, 245);
position: relative;
.chart-wrapper {
background: #fff;
padding: 16px 16px 0;
margin-bottom: 32px;
}
}
@media (max-width:1024px) {
.chart-wrapper {
padding: 8px;
}
}
</style>
<template>
<div class="dashboard-editor-container">
<panel-group @handleSetLineChartData="handleSetLineChartData" />
<el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
<line-chart :chart-data="lineChartData" />
</el-row>
<el-row :gutter="32">
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<raddar-chart />
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<pie-chart />
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<bar-chart />
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import PanelGroup from './dashboard/PanelGroup'
import LineChart from './dashboard/LineChart'
import RaddarChart from './dashboard/RaddarChart'
import PieChart from './dashboard/PieChart'
import BarChart from './dashboard/BarChart'
const lineChartData = {
newVisitis: {
expectedData: [100, 120, 161, 134, 105, 160, 165],
actualData: [120, 82, 91, 154, 162, 140, 145]
},
messages: {
expectedData: [200, 192, 120, 144, 160, 130, 140],
actualData: [180, 160, 151, 106, 145, 150, 130]
},
purchases: {
expectedData: [80, 100, 121, 104, 105, 90, 100],
actualData: [120, 90, 100, 138, 142, 130, 130]
},
shoppings: {
expectedData: [130, 140, 141, 142, 145, 150, 160],
actualData: [120, 82, 91, 154, 162, 140, 130]
}
}
export default {
name: 'Index',
components: {
PanelGroup,
LineChart,
RaddarChart,
PieChart,
BarChart
},
data() {
return {
lineChartData: lineChartData.newVisitis
}
},
methods: {
handleSetLineChartData(type) {
this.lineChartData = lineChartData[type]
}
}
}
</script>
<style lang="scss" scoped>
.dashboard-editor-container {
padding: 32px;
background-color: rgb(240, 242, 245);
position: relative;
.chart-wrapper {
background: #fff;
padding: 16px 16px 0;
margin-bottom: 32px;
}
}
@media (max-width:1024px) {
.chart-wrapper {
padding: 8px;
}
}
</style>

View File

@ -1,153 +1,153 @@
<template>
<div class="app-container">
<el-row>
<el-col :span="24" class="card-box">
<el-card>
<div slot="header"><span>基本信息</span></div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<table cellspacing="0" style="width: 100%">
<tbody>
<tr>
<td><div class="cell">Redis版本</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.redis_version }}</div></td>
<td><div class="cell">运行模式</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.redis_mode == "standalone" ? "单机" : "集群" }}</div></td>
<td><div class="cell">端口</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.tcp_port }}</div></td>
<td><div class="cell">客户端数</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.connected_clients }}</div></td>
</tr>
<tr>
<td><div class="cell">运行时间()</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.uptime_in_days }}</div></td>
<td><div class="cell">使用内存</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.used_memory_human }}</div></td>
<td><div class="cell">使用CPU</div></td>
<td><div class="cell" v-if="cache.info">{{ parseFloat(cache.info.used_cpu_user_children).toFixed(2) }}</div></td>
<td><div class="cell">内存配置</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.maxmemory_human }}</div></td>
</tr>
<tr>
<td><div class="cell">AOF是否开启</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.aof_enabled == "0" ? "" : "" }}</div></td>
<td><div class="cell">RDB是否成功</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.rdb_last_bgsave_status }}</div></td>
<td><div class="cell">Key数量</div></td>
<td><div class="cell" v-if="cache.dbSize">{{ cache.dbSize }} </div></td>
<td><div class="cell">网络入口/出口</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.instantaneous_input_kbps }}kps/{{cache.info.instantaneous_output_kbps}}kps</div></td>
</tr>
</tbody>
</table>
</div>
</el-card>
</el-col>
<el-col :span="12" class="card-box">
<el-card>
<div slot="header"><span>命令统计</span></div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<div ref="commandstats" style="height: 420px" />
</div>
</el-card>
</el-col>
<el-col :span="12" class="card-box">
<el-card>
<div slot="header">
<span>内存信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<div ref="usedmemory" style="height: 420px" />
</div>
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import { getCache } from "@/api/monitor/cache";
import echarts from "echarts";
export default {
name: "Server",
data() {
return {
//
loading: [],
//
commandstats: null,
// 使
usedmemory: null,
// cache
cache: [],
};
},
created() {
this.getList();
this.openLoading();
},
methods: {
/** 查缓存询信息 */
getList() {
getCache().then((response) => {
this.cache = response.data;
this.loading.close();
this.commandstats = echarts.init(this.$refs.commandstats, "macarons");
this.commandstats.setOption({
tooltip: {
trigger: "item",
formatter: "{a} <br/>{b} : {c} ({d}%)",
},
series: [
{
name: "命令",
type: "pie",
roseType: "radius",
radius: [15, 95],
center: ["50%", "38%"],
data: response.data.commandStats,
animationEasing: "cubicInOut",
animationDuration: 1000,
},
],
});
this.usedmemory = echarts.init(this.$refs.usedmemory, "macarons");
this.usedmemory.setOption({
tooltip: {
formatter: "{b} <br/>{a} : " + this.cache.info.used_memory_human,
},
series: [
{
name: "峰值",
type: "gauge",
min: 0,
max: 1000,
detail: {
formatter: this.cache.info.used_memory_human,
},
data: [
{
value: parseFloat(this.cache.info.used_memory_human),
name: "内存消耗",
},
],
},
],
});
});
},
//
openLoading() {
this.loading = this.$loading({
lock: true,
text: "拼命读取中",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
},
},
};
</script>
<template>
<div class="app-container">
<el-row>
<el-col :span="24" class="card-box">
<el-card>
<div slot="header"><span>基本信息</span></div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<table cellspacing="0" style="width: 100%">
<tbody>
<tr>
<td><div class="cell">Redis版本</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.redis_version }}</div></td>
<td><div class="cell">运行模式</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.redis_mode == "standalone" ? "单机" : "集群" }}</div></td>
<td><div class="cell">端口</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.tcp_port }}</div></td>
<td><div class="cell">客户端数</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.connected_clients }}</div></td>
</tr>
<tr>
<td><div class="cell">运行时间()</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.uptime_in_days }}</div></td>
<td><div class="cell">使用内存</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.used_memory_human }}</div></td>
<td><div class="cell">使用CPU</div></td>
<td><div class="cell" v-if="cache.info">{{ parseFloat(cache.info.used_cpu_user_children).toFixed(2) }}</div></td>
<td><div class="cell">内存配置</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.maxmemory_human }}</div></td>
</tr>
<tr>
<td><div class="cell">AOF是否开启</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.aof_enabled == "0" ? "" : "" }}</div></td>
<td><div class="cell">RDB是否成功</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.rdb_last_bgsave_status }}</div></td>
<td><div class="cell">Key数量</div></td>
<td><div class="cell" v-if="cache.dbSize">{{ cache.dbSize }} </div></td>
<td><div class="cell">网络入口/出口</div></td>
<td><div class="cell" v-if="cache.info">{{ cache.info.instantaneous_input_kbps }}kps/{{cache.info.instantaneous_output_kbps}}kps</div></td>
</tr>
</tbody>
</table>
</div>
</el-card>
</el-col>
<el-col :span="12" class="card-box">
<el-card>
<div slot="header"><span>命令统计</span></div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<div ref="commandstats" style="height: 420px" />
</div>
</el-card>
</el-col>
<el-col :span="12" class="card-box">
<el-card>
<div slot="header">
<span>内存信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<div ref="usedmemory" style="height: 420px" />
</div>
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import { getCache } from "@/api/monitor/cache";
import echarts from "echarts";
export default {
name: "Server",
data() {
return {
//
loading: [],
//
commandstats: null,
// 使
usedmemory: null,
// cache
cache: [],
};
},
created() {
this.getList();
this.openLoading();
},
methods: {
/** 查缓存询信息 */
getList() {
getCache().then((response) => {
this.cache = response.data;
this.loading.close();
this.commandstats = echarts.init(this.$refs.commandstats, "macarons");
this.commandstats.setOption({
tooltip: {
trigger: "item",
formatter: "{a} <br/>{b} : {c} ({d}%)",
},
series: [
{
name: "命令",
type: "pie",
roseType: "radius",
radius: [15, 95],
center: ["50%", "38%"],
data: response.data.commandStats,
animationEasing: "cubicInOut",
animationDuration: 1000,
},
],
});
this.usedmemory = echarts.init(this.$refs.usedmemory, "macarons");
this.usedmemory.setOption({
tooltip: {
formatter: "{b} <br/>{a} : " + this.cache.info.used_memory_human,
},
series: [
{
name: "峰值",
type: "gauge",
min: 0,
max: 1000,
detail: {
formatter: this.cache.info.used_memory_human,
},
data: [
{
value: parseFloat(this.cache.info.used_memory_human),
name: "内存消耗",
},
],
},
],
});
});
},
//
openLoading() {
this.loading = this.$loading({
lock: true,
text: "拼命读取中",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
},
},
};
</script>

View File

@ -1,213 +1,213 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="openSelectUser"
v-hasPermi="['system:role:add']"
>添加用户</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-circle-close"
size="mini"
:disabled="multiple"
@click="cancelAuthUserAll"
v-hasPermi="['system:role:remove']"
>批量取消授权</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-close"
size="mini"
@click="handleClose"
>关闭</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="statusOptions" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-circle-close"
@click="cancelAuthUser(scope.row)"
v-hasPermi="['system:role:remove']"
>取消授权</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<select-user ref="select" :roleId="queryParams.roleId" @ok="handleQuery" />
</div>
</template>
<script>
import { allocatedUserList, authUserCancel, authUserCancelAll } from "@/api/system/role";
import selectUser from "./selectUser";
export default {
name: "AuthUser",
components: { selectUser },
data() {
return {
//
loading: true,
//
userIds: [],
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
userList: [],
//
statusOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
roleId: undefined,
userName: undefined,
phonenumber: undefined
}
};
},
created() {
const roleId = this.$route.params && this.$route.params.roleId;
if (roleId) {
this.queryParams.roleId = roleId;
this.getList();
this.getDicts("sys_normal_disable").then(response => {
this.statusOptions = response.data;
});
}
},
methods: {
/** 查询授权用户列表 */
getList() {
this.loading = true;
allocatedUserList(this.queryParams).then(response => {
this.userList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
//
handleClose() {
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.push({ path: "/system/role" });
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.userIds = selection.map(item => item.userId)
this.multiple = !selection.length
},
/** 打开授权用户表弹窗 */
openSelectUser() {
this.$refs.select.show();
},
/** 取消授权按钮操作 */
cancelAuthUser(row) {
const roleId = this.queryParams.roleId;
this.$confirm('确认要取消该用户"' + row.userName + '"角色吗?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return authUserCancel({ userId: row.userId, roleId: roleId });
}).then(() => {
this.getList();
this.msgSuccess("取消授权成功");
}).catch(() => {});
},
/** 批量取消授权按钮操作 */
cancelAuthUserAll(row) {
const roleId = this.queryParams.roleId;
const userIds = this.userIds.join(",");
this.$confirm('是否取消选中用户授权数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
return authUserCancelAll({ roleId: roleId, userIds: userIds });
}).then(() => {
this.getList();
this.msgSuccess("取消授权成功");
}).catch(() => {});
}
}
};
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="openSelectUser"
v-hasPermi="['system:role:add']"
>添加用户</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-circle-close"
size="mini"
:disabled="multiple"
@click="cancelAuthUserAll"
v-hasPermi="['system:role:remove']"
>批量取消授权</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-close"
size="mini"
@click="handleClose"
>关闭</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="statusOptions" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-circle-close"
@click="cancelAuthUser(scope.row)"
v-hasPermi="['system:role:remove']"
>取消授权</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<select-user ref="select" :roleId="queryParams.roleId" @ok="handleQuery" />
</div>
</template>
<script>
import { allocatedUserList, authUserCancel, authUserCancelAll } from "@/api/system/role";
import selectUser from "./selectUser";
export default {
name: "AuthUser",
components: { selectUser },
data() {
return {
//
loading: true,
//
userIds: [],
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
userList: [],
//
statusOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
roleId: undefined,
userName: undefined,
phonenumber: undefined
}
};
},
created() {
const roleId = this.$route.params && this.$route.params.roleId;
if (roleId) {
this.queryParams.roleId = roleId;
this.getList();
this.getDicts("sys_normal_disable").then(response => {
this.statusOptions = response.data;
});
}
},
methods: {
/** 查询授权用户列表 */
getList() {
this.loading = true;
allocatedUserList(this.queryParams).then(response => {
this.userList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
//
handleClose() {
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.push({ path: "/system/role" });
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.userIds = selection.map(item => item.userId)
this.multiple = !selection.length
},
/** 打开授权用户表弹窗 */
openSelectUser() {
this.$refs.select.show();
},
/** 取消授权按钮操作 */
cancelAuthUser(row) {
const roleId = this.queryParams.roleId;
this.$confirm('确认要取消该用户"' + row.userName + '"角色吗?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return authUserCancel({ userId: row.userId, roleId: roleId });
}).then(() => {
this.getList();
this.msgSuccess("取消授权成功");
}).catch(() => {});
},
/** 批量取消授权按钮操作 */
cancelAuthUserAll(row) {
const roleId = this.queryParams.roleId;
const userIds = this.userIds.join(",");
this.$confirm('是否取消选中用户授权数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
return authUserCancelAll({ roleId: roleId, userIds: userIds });
}).then(() => {
this.getList();
this.msgSuccess("取消授权成功");
}).catch(() => {});
}
}
};
</script>

View File

@ -1,142 +1,142 @@
<template>
<!-- 授权用户 -->
<el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
<el-form :model="queryParams" ref="queryForm" :inline="true">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange" height="260px">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="statusOptions" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSelectUser"> </el-button>
<el-button @click="visible = false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { unallocatedUserList, authUserSelectAll } from "@/api/system/role";
export default {
props: {
//
roleId: {
type: [Number, String]
}
},
data() {
return {
//
visible: false,
//
userIds: [],
//
total: 0,
//
userList: [],
//
statusOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
roleId: undefined,
userName: undefined,
phonenumber: undefined
}
};
},
created() {
this.getDicts("sys_normal_disable").then(response => {
this.statusOptions = response.data;
});
},
methods: {
//
show() {
this.queryParams.roleId = this.roleId;
this.getList();
this.visible = true;
},
clickRow(row) {
this.$refs.table.toggleRowSelection(row);
},
//
handleSelectionChange(selection) {
this.userIds = selection.map(item => item.userId);
},
//
getList() {
unallocatedUserList(this.queryParams).then(res => {
this.userList = res.rows;
this.total = res.total;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 选择授权用户操作 */
handleSelectUser() {
const roleId = this.queryParams.roleId;
const userIds = this.userIds.join(",");
authUserSelectAll({ roleId: roleId, userIds: userIds }).then(res => {
this.msgSuccess(res.msg);
if (res.code === 200) {
this.visible = false;
this.$emit("ok");
}
});
}
}
};
</script>
<template>
<!-- 授权用户 -->
<el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
<el-form :model="queryParams" ref="queryForm" :inline="true">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange" height="260px">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="statusOptions" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSelectUser"> </el-button>
<el-button @click="visible = false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { unallocatedUserList, authUserSelectAll } from "@/api/system/role";
export default {
props: {
//
roleId: {
type: [Number, String]
}
},
data() {
return {
//
visible: false,
//
userIds: [],
//
total: 0,
//
userList: [],
//
statusOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
roleId: undefined,
userName: undefined,
phonenumber: undefined
}
};
},
created() {
this.getDicts("sys_normal_disable").then(response => {
this.statusOptions = response.data;
});
},
methods: {
//
show() {
this.queryParams.roleId = this.roleId;
this.getList();
this.visible = true;
},
clickRow(row) {
this.$refs.table.toggleRowSelection(row);
},
//
handleSelectionChange(selection) {
this.userIds = selection.map(item => item.userId);
},
//
getList() {
unallocatedUserList(this.queryParams).then(res => {
this.userList = res.rows;
this.total = res.total;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 选择授权用户操作 */
handleSelectUser() {
const roleId = this.queryParams.roleId;
const userIds = this.userIds.join(",");
authUserSelectAll({ roleId: roleId, userIds: userIds }).then(res => {
this.msgSuccess(res.msg);
if (res.code === 200) {
this.visible = false;
this.$emit("ok");
}
});
}
}
};
</script>

View File

@ -1,106 +1,106 @@
<template>
<div>
<el-dialog
v-bind="$attrs"
width="500px"
:close-on-click-modal="false"
:modal-append-to-body="false"
v-on="$listeners"
@open="onOpen"
@close="onClose"
>
<el-row :gutter="15">
<el-form
ref="elForm"
:model="formData"
:rules="rules"
size="medium"
label-width="100px"
>
<el-col :span="24">
<el-form-item label="生成类型" prop="type">
<el-radio-group v-model="formData.type">
<el-radio-button
v-for="(item, index) in typeOptions"
:key="index"
:label="item.value"
:disabled="item.disabled"
>
{{ item.label }}
</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-if="showFileName" label="文件名" prop="fileName">
<el-input v-model="formData.fileName" placeholder="请输入文件名" clearable />
</el-form-item>
</el-col>
</el-form>
</el-row>
<div slot="footer">
<el-button @click="close">
取消
</el-button>
<el-button type="primary" @click="handelConfirm">
确定
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
inheritAttrs: false,
props: ['showFileName'],
data() {
return {
formData: {
fileName: undefined,
type: 'file'
},
rules: {
fileName: [{
required: true,
message: '请输入文件名',
trigger: 'blur'
}],
type: [{
required: true,
message: '生成类型不能为空',
trigger: 'change'
}]
},
typeOptions: [{
label: '页面',
value: 'file'
}, {
label: '弹窗',
value: 'dialog'
}]
}
},
computed: {
},
watch: {},
mounted() {},
methods: {
onOpen() {
if (this.showFileName) {
this.formData.fileName = `${+new Date()}.vue`
}
},
onClose() {
},
close(e) {
this.$emit('update:visible', false)
},
handelConfirm() {
this.$refs.elForm.validate(valid => {
if (!valid) return
this.$emit('confirm', { ...this.formData })
this.close()
})
}
}
}
</script>
<template>
<div>
<el-dialog
v-bind="$attrs"
width="500px"
:close-on-click-modal="false"
:modal-append-to-body="false"
v-on="$listeners"
@open="onOpen"
@close="onClose"
>
<el-row :gutter="15">
<el-form
ref="elForm"
:model="formData"
:rules="rules"
size="medium"
label-width="100px"
>
<el-col :span="24">
<el-form-item label="生成类型" prop="type">
<el-radio-group v-model="formData.type">
<el-radio-button
v-for="(item, index) in typeOptions"
:key="index"
:label="item.value"
:disabled="item.disabled"
>
{{ item.label }}
</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-if="showFileName" label="文件名" prop="fileName">
<el-input v-model="formData.fileName" placeholder="请输入文件名" clearable />
</el-form-item>
</el-col>
</el-form>
</el-row>
<div slot="footer">
<el-button @click="close">
取消
</el-button>
<el-button type="primary" @click="handelConfirm">
确定
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
inheritAttrs: false,
props: ['showFileName'],
data() {
return {
formData: {
fileName: undefined,
type: 'file'
},
rules: {
fileName: [{
required: true,
message: '请输入文件名',
trigger: 'blur'
}],
type: [{
required: true,
message: '生成类型不能为空',
trigger: 'change'
}]
},
typeOptions: [{
label: '页面',
value: 'file'
}, {
label: '弹窗',
value: 'dialog'
}]
}
},
computed: {
},
watch: {},
mounted() {},
methods: {
onOpen() {
if (this.showFileName) {
this.formData.fileName = `${+new Date()}.vue`
}
},
onClose() {
},
close(e) {
this.$emit('update:visible', false)
},
handelConfirm() {
this.$refs.elForm.validate(valid => {
if (!valid) return
this.$emit('confirm', { ...this.formData })
this.close()
})
}
}
}
</script>

View File

@ -1,100 +1,100 @@
<script>
import draggable from 'vuedraggable'
import render from '@/utils/generator/render'
const components = {
itemBtns(h, element, index, parent) {
const { copyItem, deleteItem } = this.$listeners
return [
<span class="drawing-item-copy" title="复制" onClick={event => {
copyItem(element, parent); event.stopPropagation()
}}>
<i class="el-icon-copy-document" />
</span>,
<span class="drawing-item-delete" title="删除" onClick={event => {
deleteItem(index, parent); event.stopPropagation()
}}>
<i class="el-icon-delete" />
</span>
]
}
}
const layouts = {
colFormItem(h, element, index, parent) {
const { activeItem } = this.$listeners
let className = this.activeId === element.formId ? 'drawing-item active-from-item' : 'drawing-item'
if (this.formConf.unFocusedComponentBorder) className += ' unfocus-bordered'
return (
<el-col span={element.span} class={className}
nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
<el-form-item label-width={element.labelWidth ? `${element.labelWidth}px` : null}
label={element.label} required={element.required}>
<render key={element.renderKey} conf={element} onInput={ event => {
this.$set(element, 'defaultValue', event)
}} />
</el-form-item>
{components.itemBtns.apply(this, arguments)}
</el-col>
)
},
rowFormItem(h, element, index, parent) {
const { activeItem } = this.$listeners
const className = this.activeId === element.formId ? 'drawing-row-item active-from-item' : 'drawing-row-item'
let child = renderChildren.apply(this, arguments)
if (element.type === 'flex') {
child = <el-row type={element.type} justify={element.justify} align={element.align}>
{child}
</el-row>
}
return (
<el-col span={element.span}>
<el-row gutter={element.gutter} class={className}
nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
<span class="component-name">{element.componentName}</span>
<draggable list={element.children} animation={340} group="componentsGroup" class="drag-wrapper">
{child}
</draggable>
{components.itemBtns.apply(this, arguments)}
</el-row>
</el-col>
)
}
}
function renderChildren(h, element, index, parent) {
if (!Array.isArray(element.children)) return null
return element.children.map((el, i) => {
const layout = layouts[el.layout]
if (layout) {
return layout.call(this, h, el, i, element.children)
}
return layoutIsNotFound()
})
}
function layoutIsNotFound() {
throw new Error(`没有与${this.element.layout}匹配的layout`)
}
export default {
components: {
render,
draggable
},
props: [
'element',
'index',
'drawingList',
'activeId',
'formConf'
],
render(h) {
const layout = layouts[this.element.layout]
if (layout) {
return layout.call(this, h, this.element, this.index, this.drawingList)
}
return layoutIsNotFound()
}
}
</script>
<script>
import draggable from 'vuedraggable'
import render from '@/utils/generator/render'
const components = {
itemBtns(h, element, index, parent) {
const { copyItem, deleteItem } = this.$listeners
return [
<span class="drawing-item-copy" title="复制" onClick={event => {
copyItem(element, parent); event.stopPropagation()
}}>
<i class="el-icon-copy-document" />
</span>,
<span class="drawing-item-delete" title="删除" onClick={event => {
deleteItem(index, parent); event.stopPropagation()
}}>
<i class="el-icon-delete" />
</span>
]
}
}
const layouts = {
colFormItem(h, element, index, parent) {
const { activeItem } = this.$listeners
let className = this.activeId === element.formId ? 'drawing-item active-from-item' : 'drawing-item'
if (this.formConf.unFocusedComponentBorder) className += ' unfocus-bordered'
return (
<el-col span={element.span} class={className}
nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
<el-form-item label-width={element.labelWidth ? `${element.labelWidth}px` : null}
label={element.label} required={element.required}>
<render key={element.renderKey} conf={element} onInput={ event => {
this.$set(element, 'defaultValue', event)
}} />
</el-form-item>
{components.itemBtns.apply(this, arguments)}
</el-col>
)
},
rowFormItem(h, element, index, parent) {
const { activeItem } = this.$listeners
const className = this.activeId === element.formId ? 'drawing-row-item active-from-item' : 'drawing-row-item'
let child = renderChildren.apply(this, arguments)
if (element.type === 'flex') {
child = <el-row type={element.type} justify={element.justify} align={element.align}>
{child}
</el-row>
}
return (
<el-col span={element.span}>
<el-row gutter={element.gutter} class={className}
nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
<span class="component-name">{element.componentName}</span>
<draggable list={element.children} animation={340} group="componentsGroup" class="drag-wrapper">
{child}
</draggable>
{components.itemBtns.apply(this, arguments)}
</el-row>
</el-col>
)
}
}
function renderChildren(h, element, index, parent) {
if (!Array.isArray(element.children)) return null
return element.children.map((el, i) => {
const layout = layouts[el.layout]
if (layout) {
return layout.call(this, h, el, i, element.children)
}
return layoutIsNotFound()
})
}
function layoutIsNotFound() {
throw new Error(`没有与${this.element.layout}匹配的layout`)
}
export default {
components: {
render,
draggable
},
props: [
'element',
'index',
'drawingList',
'activeId',
'formConf'
],
render(h) {
const layout = layouts[this.element.layout]
if (layout) {
return layout.call(this, h, this.element, this.index, this.drawingList)
}
return layoutIsNotFound()
}
}
</script>

View File

@ -1,123 +1,123 @@
<template>
<div class="icon-dialog">
<el-dialog
v-bind="$attrs"
width="980px"
:modal-append-to-body="false"
v-on="$listeners"
@open="onOpen"
@close="onClose"
>
<div slot="title">
选择图标
<el-input
v-model="key"
size="mini"
:style="{width: '260px'}"
placeholder="请输入图标名称"
prefix-icon="el-icon-search"
clearable
/>
</div>
<ul class="icon-ul">
<li
v-for="icon in iconList"
:key="icon"
:class="active===icon?'active-item':''"
@click="onSelect(icon)"
>
<i :class="icon" />
<div>{{ icon }}</div>
</li>
</ul>
</el-dialog>
</div>
</template>
<script>
import iconList from '@/utils/generator/icon.json'
const originList = iconList.map(name => `el-icon-${name}`)
export default {
inheritAttrs: false,
props: ['current'],
data() {
return {
iconList: originList,
active: null,
key: ''
}
},
watch: {
key(val) {
if (val) {
this.iconList = originList.filter(name => name.indexOf(val) > -1)
} else {
this.iconList = originList
}
}
},
methods: {
onOpen() {
this.active = this.current
this.key = ''
},
onClose() {},
onSelect(icon) {
this.active = icon
this.$emit('select', icon)
this.$emit('update:visible', false)
}
}
}
</script>
<style lang="scss" scoped>
.icon-ul {
margin: 0;
padding: 0;
font-size: 0;
li {
list-style-type: none;
text-align: center;
font-size: 14px;
display: inline-block;
width: 16.66%;
box-sizing: border-box;
height: 108px;
padding: 15px 6px 6px 6px;
cursor: pointer;
overflow: hidden;
&:hover {
background: #f2f2f2;
}
&.active-item{
background: #e1f3fb;
color: #7a6df0
}
> i {
font-size: 30px;
line-height: 50px;
}
}
}
.icon-dialog {
::v-deep .el-dialog {
border-radius: 8px;
margin-bottom: 0;
margin-top: 4vh !important;
display: flex;
flex-direction: column;
max-height: 92vh;
overflow: hidden;
box-sizing: border-box;
.el-dialog__header {
padding-top: 14px;
}
.el-dialog__body {
margin: 0 20px 20px 20px;
padding: 0;
overflow: auto;
}
}
}
</style>
<template>
<div class="icon-dialog">
<el-dialog
v-bind="$attrs"
width="980px"
:modal-append-to-body="false"
v-on="$listeners"
@open="onOpen"
@close="onClose"
>
<div slot="title">
选择图标
<el-input
v-model="key"
size="mini"
:style="{width: '260px'}"
placeholder="请输入图标名称"
prefix-icon="el-icon-search"
clearable
/>
</div>
<ul class="icon-ul">
<li
v-for="icon in iconList"
:key="icon"
:class="active===icon?'active-item':''"
@click="onSelect(icon)"
>
<i :class="icon" />
<div>{{ icon }}</div>
</li>
</ul>
</el-dialog>
</div>
</template>
<script>
import iconList from '@/utils/generator/icon.json'
const originList = iconList.map(name => `el-icon-${name}`)
export default {
inheritAttrs: false,
props: ['current'],
data() {
return {
iconList: originList,
active: null,
key: ''
}
},
watch: {
key(val) {
if (val) {
this.iconList = originList.filter(name => name.indexOf(val) > -1)
} else {
this.iconList = originList
}
}
},
methods: {
onOpen() {
this.active = this.current
this.key = ''
},
onClose() {},
onSelect(icon) {
this.active = icon
this.$emit('select', icon)
this.$emit('update:visible', false)
}
}
}
</script>
<style lang="scss" scoped>
.icon-ul {
margin: 0;
padding: 0;
font-size: 0;
li {
list-style-type: none;
text-align: center;
font-size: 14px;
display: inline-block;
width: 16.66%;
box-sizing: border-box;
height: 108px;
padding: 15px 6px 6px 6px;
cursor: pointer;
overflow: hidden;
&:hover {
background: #f2f2f2;
}
&.active-item{
background: #e1f3fb;
color: #7a6df0
}
> i {
font-size: 30px;
line-height: 50px;
}
}
}
.icon-dialog {
::v-deep .el-dialog {
border-radius: 8px;
margin-bottom: 0;
margin-top: 4vh !important;
display: flex;
flex-direction: column;
max-height: 92vh;
overflow: hidden;
box-sizing: border-box;
.el-dialog__header {
padding-top: 14px;
}
.el-dialog__body {
margin: 0 20px 20px 20px;
padding: 0;
overflow: auto;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -1,149 +1,149 @@
<template>
<div>
<el-dialog
v-bind="$attrs"
:close-on-click-modal="false"
:modal-append-to-body="false"
v-on="$listeners"
@open="onOpen"
@close="onClose"
>
<el-row :gutter="0">
<el-form
ref="elForm"
:model="formData"
:rules="rules"
size="small"
label-width="100px"
>
<el-col :span="24">
<el-form-item
label="选项名"
prop="label"
>
<el-input
v-model="formData.label"
placeholder="请输入选项名"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item
label="选项值"
prop="value"
>
<el-input
v-model="formData.value"
placeholder="请输入选项值"
clearable
>
<el-select
slot="append"
v-model="dataType"
:style="{width: '100px'}"
>
<el-option
v-for="(item, index) in dataTypeOptions"
:key="index"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
/>
</el-select>
</el-input>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div slot="footer">
<el-button
type="primary"
@click="handelConfirm"
>
确定
</el-button>
<el-button @click="close">
取消
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { isNumberStr } from '@/utils/index'
export default {
components: {},
inheritAttrs: false,
props: [],
data() {
return {
id: 100,
formData: {
label: undefined,
value: undefined
},
rules: {
label: [
{
required: true,
message: '请输入选项名',
trigger: 'blur'
}
],
value: [
{
required: true,
message: '请输入选项值',
trigger: 'blur'
}
]
},
dataType: 'string',
dataTypeOptions: [
{
label: '字符串',
value: 'string'
},
{
label: '数字',
value: 'number'
}
]
}
},
computed: {},
watch: {
// eslint-disable-next-line func-names
'formData.value': function (val) {
this.dataType = isNumberStr(val) ? 'number' : 'string'
}
},
created() {},
mounted() {},
methods: {
onOpen() {
this.formData = {
label: undefined,
value: undefined
}
},
onClose() {},
close() {
this.$emit('update:visible', false)
},
handelConfirm() {
this.$refs.elForm.validate(valid => {
if (!valid) return
if (this.dataType === 'number') {
this.formData.value = parseFloat(this.formData.value)
}
this.formData.id = this.id++
this.$emit('commit', this.formData)
this.close()
})
}
}
}
</script>
<template>
<div>
<el-dialog
v-bind="$attrs"
:close-on-click-modal="false"
:modal-append-to-body="false"
v-on="$listeners"
@open="onOpen"
@close="onClose"
>
<el-row :gutter="0">
<el-form
ref="elForm"
:model="formData"
:rules="rules"
size="small"
label-width="100px"
>
<el-col :span="24">
<el-form-item
label="选项名"
prop="label"
>
<el-input
v-model="formData.label"
placeholder="请输入选项名"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item
label="选项值"
prop="value"
>
<el-input
v-model="formData.value"
placeholder="请输入选项值"
clearable
>
<el-select
slot="append"
v-model="dataType"
:style="{width: '100px'}"
>
<el-option
v-for="(item, index) in dataTypeOptions"
:key="index"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
/>
</el-select>
</el-input>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div slot="footer">
<el-button
type="primary"
@click="handelConfirm"
>
确定
</el-button>
<el-button @click="close">
取消
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { isNumberStr } from '@/utils/index'
export default {
components: {},
inheritAttrs: false,
props: [],
data() {
return {
id: 100,
formData: {
label: undefined,
value: undefined
},
rules: {
label: [
{
required: true,
message: '请输入选项名',
trigger: 'blur'
}
],
value: [
{
required: true,
message: '请输入选项值',
trigger: 'blur'
}
]
},
dataType: 'string',
dataTypeOptions: [
{
label: '字符串',
value: 'string'
},
{
label: '数字',
value: 'number'
}
]
}
},
computed: {},
watch: {
// eslint-disable-next-line func-names
'formData.value': function (val) {
this.dataType = isNumberStr(val) ? 'number' : 'string'
}
},
created() {},
mounted() {},
methods: {
onOpen() {
this.formData = {
label: undefined,
value: undefined
}
},
onClose() {},
close() {
this.$emit('update:visible', false)
},
handelConfirm() {
this.$refs.elForm.validate(valid => {
if (!valid) return
if (this.dataType === 'number') {
this.formData.value = parseFloat(this.formData.value)
}
this.formData.id = this.id++
this.$emit('commit', this.formData)
this.close()
})
}
}
}
</script>

View File

@ -1,170 +1,170 @@
-- ----------------------------
-- 1、存储每一个已配置的 jobDetail 的详细信息
-- ----------------------------
drop table if exists QRTZ_JOB_DETAILS;
create table QRTZ_JOB_DETAILS (
sched_name varchar(120) not null,
job_name varchar(200) not null,
job_group varchar(200) not null,
description varchar(250) null,
job_class_name varchar(250) not null,
is_durable varchar(1) not null,
is_nonconcurrent varchar(1) not null,
is_update_data varchar(1) not null,
requests_recovery varchar(1) not null,
job_data blob null,
primary key (sched_name,job_name,job_group)
) engine=innodb;
-- ----------------------------
-- 2、 存储已配置的 Trigger 的信息
-- ----------------------------
drop table if exists QRTZ_TRIGGERS;
create table QRTZ_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
job_name varchar(200) not null,
job_group varchar(200) not null,
description varchar(250) null,
next_fire_time bigint(13) null,
prev_fire_time bigint(13) null,
priority integer null,
trigger_state varchar(16) not null,
trigger_type varchar(8) not null,
start_time bigint(13) not null,
end_time bigint(13) null,
calendar_name varchar(200) null,
misfire_instr smallint(2) null,
job_data blob null,
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,job_name,job_group) references QRTZ_JOB_DETAILS(sched_name,job_name,job_group)
) engine=innodb;
-- ----------------------------
-- 3、 存储简单的 Trigger包括重复次数间隔以及已触发的次数
-- ----------------------------
drop table if exists QRTZ_SIMPLE_TRIGGERS;
create table QRTZ_SIMPLE_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
repeat_count bigint(7) not null,
repeat_interval bigint(12) not null,
times_triggered bigint(10) not null,
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
) engine=innodb;
-- ----------------------------
-- 4、 存储 Cron Trigger包括 Cron 表达式和时区信息
-- ----------------------------
drop table if exists QRTZ_CRON_TRIGGERS;
create table QRTZ_CRON_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
cron_expression varchar(200) not null,
time_zone_id varchar(80),
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
) engine=innodb;
-- ----------------------------
-- 5、 Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型JobStore 并不知道如何存储实例的时候)
-- ----------------------------
drop table if exists QRTZ_BLOB_TRIGGERS;
create table QRTZ_BLOB_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
blob_data blob null,
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
) engine=innodb;
-- ----------------------------
-- 6、 以 Blob 类型存储存放日历信息, quartz可配置一个日历来指定一个时间范围
-- ----------------------------
drop table if exists QRTZ_CALENDARS;
create table QRTZ_CALENDARS (
sched_name varchar(120) not null,
calendar_name varchar(200) not null,
calendar blob not null,
primary key (sched_name,calendar_name)
) engine=innodb;
-- ----------------------------
-- 7、 存储已暂停的 Trigger 组的信息
-- ----------------------------
drop table if exists QRTZ_PAUSED_TRIGGER_GRPS;
create table QRTZ_PAUSED_TRIGGER_GRPS (
sched_name varchar(120) not null,
trigger_group varchar(200) not null,
primary key (sched_name,trigger_group)
) engine=innodb;
-- ----------------------------
-- 8、 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
-- ----------------------------
drop table if exists QRTZ_FIRED_TRIGGERS;
create table QRTZ_FIRED_TRIGGERS (
sched_name varchar(120) not null,
entry_id varchar(95) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
instance_name varchar(200) not null,
fired_time bigint(13) not null,
sched_time bigint(13) not null,
priority integer not null,
state varchar(16) not null,
job_name varchar(200) null,
job_group varchar(200) null,
is_nonconcurrent varchar(1) null,
requests_recovery varchar(1) null,
primary key (sched_name,entry_id)
) engine=innodb;
-- ----------------------------
-- 9、 存储少量的有关 Scheduler 的状态信息,假如是用于集群中,可以看到其他的 Scheduler 实例
-- ----------------------------
drop table if exists QRTZ_SCHEDULER_STATE;
create table QRTZ_SCHEDULER_STATE (
sched_name varchar(120) not null,
instance_name varchar(200) not null,
last_checkin_time bigint(13) not null,
checkin_interval bigint(13) not null,
primary key (sched_name,instance_name)
) engine=innodb;
-- ----------------------------
-- 10、 存储程序的悲观锁的信息(假如使用了悲观锁)
-- ----------------------------
drop table if exists QRTZ_LOCKS;
create table QRTZ_LOCKS (
sched_name varchar(120) not null,
lock_name varchar(40) not null,
primary key (sched_name,lock_name)
) engine=innodb;
drop table if exists QRTZ_SIMPROP_TRIGGERS;
create table QRTZ_SIMPROP_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
str_prop_1 varchar(512) null,
str_prop_2 varchar(512) null,
str_prop_3 varchar(512) null,
int_prop_1 int null,
int_prop_2 int null,
long_prop_1 bigint null,
long_prop_2 bigint null,
dec_prop_1 numeric(13,4) null,
dec_prop_2 numeric(13,4) null,
bool_prop_1 varchar(1) null,
bool_prop_2 varchar(1) null,
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
) engine=innodb;
-- ----------------------------
-- 1、存储每一个已配置的 jobDetail 的详细信息
-- ----------------------------
drop table if exists QRTZ_JOB_DETAILS;
create table QRTZ_JOB_DETAILS (
sched_name varchar(120) not null,
job_name varchar(200) not null,
job_group varchar(200) not null,
description varchar(250) null,
job_class_name varchar(250) not null,
is_durable varchar(1) not null,
is_nonconcurrent varchar(1) not null,
is_update_data varchar(1) not null,
requests_recovery varchar(1) not null,
job_data blob null,
primary key (sched_name,job_name,job_group)
) engine=innodb;
-- ----------------------------
-- 2、 存储已配置的 Trigger 的信息
-- ----------------------------
drop table if exists QRTZ_TRIGGERS;
create table QRTZ_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
job_name varchar(200) not null,
job_group varchar(200) not null,
description varchar(250) null,
next_fire_time bigint(13) null,
prev_fire_time bigint(13) null,
priority integer null,
trigger_state varchar(16) not null,
trigger_type varchar(8) not null,
start_time bigint(13) not null,
end_time bigint(13) null,
calendar_name varchar(200) null,
misfire_instr smallint(2) null,
job_data blob null,
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,job_name,job_group) references QRTZ_JOB_DETAILS(sched_name,job_name,job_group)
) engine=innodb;
-- ----------------------------
-- 3、 存储简单的 Trigger包括重复次数间隔以及已触发的次数
-- ----------------------------
drop table if exists QRTZ_SIMPLE_TRIGGERS;
create table QRTZ_SIMPLE_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
repeat_count bigint(7) not null,
repeat_interval bigint(12) not null,
times_triggered bigint(10) not null,
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
) engine=innodb;
-- ----------------------------
-- 4、 存储 Cron Trigger包括 Cron 表达式和时区信息
-- ----------------------------
drop table if exists QRTZ_CRON_TRIGGERS;
create table QRTZ_CRON_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
cron_expression varchar(200) not null,
time_zone_id varchar(80),
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
) engine=innodb;
-- ----------------------------
-- 5、 Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型JobStore 并不知道如何存储实例的时候)
-- ----------------------------
drop table if exists QRTZ_BLOB_TRIGGERS;
create table QRTZ_BLOB_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
blob_data blob null,
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
) engine=innodb;
-- ----------------------------
-- 6、 以 Blob 类型存储存放日历信息, quartz可配置一个日历来指定一个时间范围
-- ----------------------------
drop table if exists QRTZ_CALENDARS;
create table QRTZ_CALENDARS (
sched_name varchar(120) not null,
calendar_name varchar(200) not null,
calendar blob not null,
primary key (sched_name,calendar_name)
) engine=innodb;
-- ----------------------------
-- 7、 存储已暂停的 Trigger 组的信息
-- ----------------------------
drop table if exists QRTZ_PAUSED_TRIGGER_GRPS;
create table QRTZ_PAUSED_TRIGGER_GRPS (
sched_name varchar(120) not null,
trigger_group varchar(200) not null,
primary key (sched_name,trigger_group)
) engine=innodb;
-- ----------------------------
-- 8、 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
-- ----------------------------
drop table if exists QRTZ_FIRED_TRIGGERS;
create table QRTZ_FIRED_TRIGGERS (
sched_name varchar(120) not null,
entry_id varchar(95) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
instance_name varchar(200) not null,
fired_time bigint(13) not null,
sched_time bigint(13) not null,
priority integer not null,
state varchar(16) not null,
job_name varchar(200) null,
job_group varchar(200) null,
is_nonconcurrent varchar(1) null,
requests_recovery varchar(1) null,
primary key (sched_name,entry_id)
) engine=innodb;
-- ----------------------------
-- 9、 存储少量的有关 Scheduler 的状态信息,假如是用于集群中,可以看到其他的 Scheduler 实例
-- ----------------------------
drop table if exists QRTZ_SCHEDULER_STATE;
create table QRTZ_SCHEDULER_STATE (
sched_name varchar(120) not null,
instance_name varchar(200) not null,
last_checkin_time bigint(13) not null,
checkin_interval bigint(13) not null,
primary key (sched_name,instance_name)
) engine=innodb;
-- ----------------------------
-- 10、 存储程序的悲观锁的信息(假如使用了悲观锁)
-- ----------------------------
drop table if exists QRTZ_LOCKS;
create table QRTZ_LOCKS (
sched_name varchar(120) not null,
lock_name varchar(40) not null,
primary key (sched_name,lock_name)
) engine=innodb;
drop table if exists QRTZ_SIMPROP_TRIGGERS;
create table QRTZ_SIMPROP_TRIGGERS (
sched_name varchar(120) not null,
trigger_name varchar(200) not null,
trigger_group varchar(200) not null,
str_prop_1 varchar(512) null,
str_prop_2 varchar(512) null,
str_prop_3 varchar(512) null,
int_prop_1 int null,
int_prop_2 int null,
long_prop_1 bigint null,
long_prop_2 bigint null,
dec_prop_1 numeric(13,4) null,
dec_prop_2 numeric(13,4) null,
bool_prop_1 varchar(1) null,
bool_prop_2 varchar(1) null,
primary key (sched_name,trigger_name,trigger_group),
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
) engine=innodb;
commit;