v3.7.0版本更新介绍
# 参数管理支持配置验证码开关
路径:系统管理=》参数设置=》验证码开关 =》默认开启
# 新增是否开启用户注册功能
路径:系统管理=》参数设置=》是否开启用户注册功能 =》默认关闭
# 菜单管理支持配置路由参数
路径:系统管理=》菜单管理=》菜单设置 =》路由参数(json格式)
# Excel注解支持Image图片导入
示例:com/ruoyi/common/core/domain/entity/SysUser.java:53
/** 用户头像 */
@Excel(name = "用户头像", cellType = ColumnType.IMAGE)
private String avatar;
# 自定义弹层溢出滚动样式
示例:ruoyi-ui/src/views/tool/gen/index.vue
比如代码生成器页面:加入了class="scrollbar",自定义设置了一个class样式,弹出框就可以滚动样式
.el-dialog__wrapper.scrollbar .el-dialog .el-dialog__body {
overflow: auto;
overflow-x: hidden;
max-height: 70vh;
padding: 10px 20px 0;
}
# 自定义可拖动弹窗宽度指令
# 自定义可拖动弹窗高度指令
ruoyi-ui/src/directive/index.js
Vue.directive('dialogDragWidth', dialogDragWidth)
Vue.directive('dialogDragHeight', dialogDragHeight)
使用时el-dialog 带上v-dialogDragWidth 和 v-dialogDragHeight属性即可,弹窗就可以拖拽 高度 和宽度了。
# 修复任意账户越权问题
user.setUserId(sysUser.getUserId()); // 这一行
user.setPassword(null);
user.setAvatar(null);
user.setDeptId(null);
将用户登录的userid设置上。这样只能修改自己的用户信息。
# 修改时检查用户数据权限范围
userService.checkUserDataScope(userId);
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
/**
* 校验用户是否有数据权限
*
* @param userId 用户id
*/
@Override
public void checkUserDataScope(Long userId)
{
if (!SysUser.isAdmin(SecurityUtils.getUserId()))
{
SysUser user = new SysUser();
user.setUserId(userId);
List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
if (StringUtils.isEmpty(users))
{
throw new ServiceException("没有权限访问用户数据!");
}
}
}
这里只是简单判断了登录的用户不是管理员。简单查询一下是否有这个用户。
# 跳转路由高亮相对应的菜单栏
ruoyi-ui/src/router/index.js
meta: { title: '分配角色', activeMenu: '/system/user' }
比如点击分配角色,默认高亮的路由是/system/user对应的路由。用户管理高亮。
# 日期范围支持添加多组
ruoyi-ui/src/utils/ruoyi.js
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
let search = params;
search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {};
dateRange = Array.isArray(dateRange) ? dateRange : [];
if (typeof (propName) === 'undefined') {
search.params['beginTime'] = dateRange[0];
search.params['endTime'] = dateRange[1];
} else {
search.params['begin' + propName] = dateRange[0];
search.params['end' + propName] = dateRange[1];
}
return search;
}
# 定时任务屏蔽ldap远程调用
# 定时任务屏蔽http(s)远程调用
# 补充定时任务表字段注释
QRTZ_开头的表进行了字段注释
# 富文本新增上传文件大小限制
ruoyi-ui/src/components/Editor/index.vue
fileSize 上传文件大小限制(MB)
// 上传文件大小限制(MB)
fileSize: {
type: Number,
default: 5,
},
// 上传前校检格式和大小
handleBeforeUpload(file) {
// 校检文件大小
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) {
this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`);
return false;
}
}
return true;
},
# 默认首页使用keep-alive缓存
ruoyi-ui/src/router/index.js
noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
# 自定义分页合理化传入参数
ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
Boolean reasonable = pageDomain.getReasonable();
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
setReasonable属性为true
当第二页只有一条数据,删除之后,他会自动跳为第一页。(否则出现的问题是:页码是第一页但是没有数据)
当比如说手机端时,下拉下拉他找不到数据就找不到数据了。不需要跳转到上一页。那么可以单独在查询后端的列表传入参数
// 查询参数
queryParams: {
reasonable:false,
pageNum: 1,
pageSize: 10,
name: null,
classes: null,
school: null,
num: null,
email: null
},
# 优化异常处理信息
全局异常处理器
ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
# 提取通用方法到基类控制器
ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
# 优化XSS跨站脚本过滤
ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
Xss过滤器:ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java
# 验证码默认20s超时
ruoyi-ui/src/api/login.js
timeout 目前设置20s
// 获取验证码
export function getCodeImg() {
return request({
url: '/captchaImage',
headers: {
isToken: false
},
method: 'get',
timeout: 20000
})
}
# 修复代码生成页面数据编辑保存之后总是跳转第一页的问题
主要就是编辑的时候把pageNum参数传递过去,再传递回来