日期:2020/4/13
#第一节课
##004日志管理
SQL日志表#4.1添加日志生成Log相关的类
生成以下Java类:
- Log实体类
- LogMapper接口
- LogMapper.xml映射文件
- LogService接口
- LogServiceImpl实现类
- LogController控制器
修改Log类
- 将属性的LocalDateTime数据类型改成java.util.Date日期类 型
- 生成无参带参构造方法
//无参构造方法 public Log() { } /** * 添加日志时使用 * @param content 日志内容 * @param type 操作类型 * @param loginname 操作人 * @param userid 操作人id * @param loginip 登录ip * @param createtime 创建时间 */ public Log(String content, String type, String loginname, Integer userid, String loginip, Date createtime) { this.content = content; this.type = type; this.loginname = loginname; this.userid = userid; this.loginip = loginip; this.createtime = createtime; }
211//无参构造方法
2public Log() {
3}
4
5/**
6* 添加日志时使用
7* @param content 日志内容
8* @param type 操作类型
9* @param loginname 操作人
10* @param userid 操作人id
11* @param loginip 登录ip
12* @param createtime 创建时间
13*/
14public Log(String content, String type, String loginname, Integer userid, String loginip, Date createtime) {
15this.content = content;
16this.type = type;
17this.loginname = loginname;
18this.userid = userid;
19this.loginip = loginip;
20this.createtime = createtime;
21}
SystemConstant
/**
* 登录操作
*/
String LOGIN_ACTION="登录操作";
/**
* 注销操作
*/
String LOGOUT_ACTION="注销操作";
/**
* 查询操作
*/
String SEARCH_ACTION="查询操作";
/**
* 更新操作
*/
String UPDATE_ACTION="更新操作";
/**
* 添加操作
*/
String ADD_ACTION="添加操作";
/**
* 删除操作
*/
String DELETE_ACTION="删除操作";
24
1
/**
2
* 登录操作
3
*/
4
String LOGIN_ACTION="登录操作";
5
/**
6
* 注销操作
7
*/
8
String LOGOUT_ACTION="注销操作";
9
/**
10
* 查询操作
11
*/
12
String SEARCH_ACTION="查询操作";
13
/**
14
* 更新操作
15
*/
16
String UPDATE_ACTION="更新操作";
17
/**
18
* 添加操作
19
*/
20
String ADD_ACTION="添加操作";
21
/**
22
* 删除操作
23
*/
24
String DELETE_ACTION="删除操作";
记录登录日志信息
修改UserController控制器代码,记录登 录方法的日志
//记录日志
//内容,操作类型,登录人,登录人Id,登录人IP地址,操作时间
Log log = new Log("用户登录",SysteConstnt.LOGIN_ACTION,
loginname+"-"+loginUserVo.getUser().getName(),loginUserVo.getUser().getId(),
request.getRemoteAddr(),new Date());
logService.save(log);
6
1
//记录日志
2
//内容,操作类型,登录人,登录人Id,登录人IP地址,操作时间
3
Log log = new Log("用户登录",SysteConstnt.LOGIN_ACTION,
4
loginname+"-"+loginUserVo.getUser().getName(),loginUserVo.getUser().getId(),
5
request.getRemoteAddr(),new Date());
6
logService.save(log);
查询日志
修改SystemController
/**
* 日志管理页面
* @return
*/
@RequestMapping("/toLogManager")
public String toLogManager() {
return "system/log/logManager";
}
8
1
/**
2
* 日志管理页面
3
* @return
4
*/
5
"/toLogManager") (
6
public String toLogManager() {
7
return "system/log/logManager";
8
}
注意这个路径不能修改,因为要和数据库的href对应创建logManager.html
在templates/resources/system下创建logManager.html(请参考提供的素材)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>日志管理</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="icon" href="/favicon.ico">
<link rel="stylesheet" href="/resource/layui/css/layui.css" media="all" />
<link rel="stylesheet" href="/resource/css/public.css" media="all" />
</head>
<body class="childrenBody">
<!-- 查询条件开始-->
<form class="layui-form">
<blockquote class="layui-elem-quote quoteBox">
<form class="layui-form" >
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">日志类型</label>
<div class="layui-input-inline">
<select name="type" id="search_type">
<option value="">请选择日志类型</option>
<option value="登录操作">登录操作</option>
<option value="添加操作">添加操作</option>
<option value="查询操作">查询操作</option>
<option value="删除操作">删除操作</option>
<option value="修改操作">修改操作</option>
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">登录名称</label>
<div class="layui-input-inline">
<input type="text" name="loginname" id="loginname" class="layui-input searchVal" placeholder="请输入登录名称" />
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">开始时间</label>
<div class="layui-input-inline">
<input type="text" name="startTime" id="startTime" class="layui-input searchVal" placeholder="开始时间" />
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">结束时间</label>
<div class="layui-input-inline">
<input type="text" name="endTime" id="endTime" class="layui-input searchVal" placeholder="结束时间" />
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block" style="text-align: center;">
<button type="button" class="layui-btn"><span class="layui-icon layui-icon-search"></span>查询</button>
<button type="reset" class="layui-btn layui-btn-warm"><span class="layui-icon layui-icon-refresh-1"></span>重置</button>
</div>
</div>
</form>
</blockquote>
</form>
<!-- 查询条件结束-->
<!-- 数据表格开始 -->
<div>
<table class="layui-hide" id="logTable" lay-filter="logTable"></table>
<!-- 表格工具栏 -->
<div id="logToolBar" style="display: none;">
<button type="button" lay-event="batchDelete" class="layui-btn layui-btn-sm layui-btn-danger">
<span class="layui-icon layui-icon-delete"></span>批量删除
</button>
</div>
</div>
<!-- 数据表格结束 -->
<script type="text/javascript" src="/resource/layui/layui.js"></script>
<script type="text/javascript">
layui.use();
</script>
</body>
</html>
84
1
<!DOCTYPE html>
2
<html xmlns:th="http://www.thymeleaf.org">
3
<head>
4
<meta charset="UTF-8">
5
<title>日志管理</title>
6
<meta name="renderer" content="webkit">
7
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
8
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
9
<meta name="apple-mobile-web-app-status-bar-style" content="black">
10
<meta name="apple-mobile-web-app-capable" content="yes">
11
<meta name="format-detection" content="telephone=no">
12
<link rel="icon" href="/favicon.ico">
13
<link rel="stylesheet" href="/resource/layui/css/layui.css" media="all" />
14
<link rel="stylesheet" href="/resource/css/public.css" media="all" />
15
</head>
16
<body class="childrenBody">
17
<!-- 查询条件开始-->
18
<form class="layui-form">
19
<blockquote class="layui-elem-quote quoteBox">
20
<form class="layui-form" >
21
<div class="layui-form-item">
22
<div class="layui-inline">
23
<label class="layui-form-label">日志类型</label>
24
<div class="layui-input-inline">
25
<select name="type" id="search_type">
26
<option value="">请选择日志类型</option>
27
<option value="登录操作">登录操作</option>
28
<option value="添加操作">添加操作</option>
29
<option value="查询操作">查询操作</option>
30
<option value="删除操作">删除操作</option>
31
<option value="修改操作">修改操作</option>
32
</select>
33
</div>
34
</div>
35
<div class="layui-inline">
36
<label class="layui-form-label">登录名称</label>
37
<div class="layui-input-inline">
38
<input type="text" name="loginname" id="loginname" class="layui-input searchVal" placeholder="请输入登录名称" />
39
</div>
40
</div>
41
<div class="layui-inline">
42
<label class="layui-form-label">开始时间</label>
43
<div class="layui-input-inline">
44
<input type="text" name="startTime" id="startTime" class="layui-input searchVal" placeholder="开始时间" />
45
</div>
46
</div>
47
<div class="layui-inline">
48
<label class="layui-form-label">结束时间</label>
49
<div class="layui-input-inline">
50
<input type="text" name="endTime" id="endTime" class="layui-input searchVal" placeholder="结束时间" />
51
</div>
52
</div>
53
</div>
54
55
<div class="layui-form-item">
56
<div class="layui-input-block" style="text-align: center;">
57
<button type="button" class="layui-btn"><span class="layui-icon layui-icon-search"></span>查询</button>
58
<button type="reset" class="layui-btn layui-btn-warm"><span class="layui-icon layui-icon-refresh-1"></span>重置</button>
59
</div>
60
</div>
61
</form>
62
</blockquote>
63
</form>
64
<!-- 查询条件结束-->
65
66
67
<!-- 数据表格开始 -->
68
<div>
69
<table class="layui-hide" id="logTable" lay-filter="logTable"></table>
70
<!-- 表格工具栏 -->
71
<div id="logToolBar" style="display: none;">
72
<button type="button" lay-event="batchDelete" class="layui-btn layui-btn-sm layui-btn-danger">
73
<span class="layui-icon layui-icon-delete"></span>批量删除
74
</button>
75
</div>
76
</div>
77
<!-- 数据表格结束 -->
78
79
<script type="text/javascript" src="/resource/layui/layui.js"></script>
80
<script type="text/javascript">
81
layui.use();
82
</script>
83
</body>
84
</html>
渲染日期控件
<script type="text/javascript">
layui.use(['jquery','form','table','layer','laydate'],function () {
var $ = layui.jquery;
var form = layui.form;
var table = layui.table;
var layer = layui.layer;
var laydate = layui.laydate;
//初始化时间选择器
laydate.render({
elem:'#startTime',//绑定渲染的元素
type:'datetime'//控制选择类型
});
laydate.render({
elem:'#endTime',//绑定表单元素中的ID属性值
type:'datetime'//控件类型,默认为date
})
})
</script>
18
1
<script type="text/javascript">
2
layui.use(['jquery','form','table','layer','laydate'],function () {
3
var $ = layui.jquery;
4
var form = layui.form;
5
var table = layui.table;
6
var layer = layui.layer;
7
var laydate = layui.laydate;
8
//初始化时间选择器
9
laydate.render({
10
elem:'#startTime',//绑定渲染的元素
11
type:'datetime'//控制选择类型
12
});
13
laydate.render({
14
elem:'#endTime',//绑定表单元素中的ID属性值
15
type:'datetime'//控件类型,默认为date
16
})
17
})
18
</script>
渲染表格控件
//渲染数据表格
var tableIns = table.render({
elem: '#logTool',
url:'/sys/log/loglist',
toolbar:'#logToolBar',//开启头部工具栏,并为其绑定左侧模板,批量删除
title:'用户操作日志数据表',
height:'full-180',
page:true,
cols:[ [
{type:'checkbox',fixed:'left'},
{field: 'id',title:'ID',align:'center'},
{field: 'loginname',title:'登陆名称',align:'center'},
{field: 'type',title:'日志类型',align:'center'},
{field: 'content',title:'日志内容',align:'center'},
{field: 'loginip',title:'登录地址',align:'center'},
{field: 'createtime',title:'登录时间',align:'center'},
] ]
})
18
1
//渲染数据表格
2
var tableIns = table.render({
3
elem: '#logTool',
4
url:'/sys/log/loglist',
5
toolbar:'#logToolBar',//开启头部工具栏,并为其绑定左侧模板,批量删除
6
title:'用户操作日志数据表',
7
height:'full-180',
8
page:true,
9
cols:[ [
10
{type:'checkbox',fixed:'left'},
11
{field: 'id',title:'ID',align:'center'},
12
{field: 'loginname',title:'登陆名称',align:'center'},
13
{field: 'type',title:'日志类型',align:'center'},
14
{field: 'content',title:'日志内容',align:'center'},
15
{field: 'loginip',title:'登录地址',align:'center'},
16
{field: 'createtime',title:'登录时间',align:'center'},
17
] ]
18
})
创建LogVo
package com.bdqn.sys.vo;
import com.bdqn.sys.entity.Log;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 日志扩展类
*/
public class LogVo extends Log {
private Integer page;//当前页码
private Integer limit;//每页显示数量
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;//开始时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;//结束时间
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getLimit() {
return limit;
}
public void setLimit(Integer limit) {
this.limit = limit;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}
51
1
package com.bdqn.sys.vo;
2
3
import com.bdqn.sys.entity.Log;
4
import org.springframework.format.annotation.DateTimeFormat;
5
6
import java.util.Date;
7
8
/**
9
* 日志扩展类
10
*/
11
public class LogVo extends Log {
12
private Integer page;//当前页码
13
private Integer limit;//每页显示数量
14
15
pattern = "yyyy-MM-dd HH:mm:ss") (
16
private Date startTime;//开始时间
17
pattern = "yyyy-MM-dd HH:mm:ss") (
18
private Date endTime;//结束时间
19
20
public Integer getPage() {
21
return page;
22
}
23
24
public void setPage(Integer page) {
25
this.page = page;
26
}
27
28
public Integer getLimit() {
29
return limit;
30
}
31
32
public void setLimit(Integer limit) {
33
this.limit = limit;
34
}
35
36
public Date getStartTime() {
37
return startTime;
38
}
39
40
public void setStartTime(Date startTime) {
41
this.startTime = startTime;
42
}
43
44
public Date getEndTime() {
45
return endTime;
46
}
47
48
public void setEndTime(Date endTime) {
49
this.endTime = endTime;
50
}
51
}
package com.bdqn.sys.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bdqn.sys.entity.Log;
import com.bdqn.sys.service.LogService;
import com.bdqn.sys.utils.DataGridViewResult;
import com.bdqn.sys.utils.JSONResult;
import com.bdqn.sys.utils.SystemConstant;
import com.bdqn.sys.vo.LogVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Arrays;
/**
* <p>
* 前端控制器
* </p>
*
* @author KazuGin
* @since 2019-12-11
*/
@RestController
@RequestMapping("/sys/log")
public class LogController {
@Resource
private LogService logService;
@RequestMapping("/loglist")
public DataGridViewResult findLogList(LogVo logVo){
//创建分页对象,并指定当前页码及每页显示数量
IPage<Log> page = new Page<Log>(logVo.getPage(),logVo.getLimit());
//设置查询条件
QueryWrapper<Log> queryWrapper = new QueryWrapper<Log>();
//调用分页查询方法
logService.page(page,queryWrapper);
//返回数据
return new DataGridViewResult(page.getTotal(),page.getRecords());
}
}
48
1
package com.bdqn.sys.controller;
2
3
4
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
import com.baomidou.mybatisplus.core.metadata.IPage;
6
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7
import com.bdqn.sys.entity.Log;
8
import com.bdqn.sys.service.LogService;
9
import com.bdqn.sys.utils.DataGridViewResult;
10
import com.bdqn.sys.utils.JSONResult;
11
import com.bdqn.sys.utils.SystemConstant;
12
import com.bdqn.sys.vo.LogVo;
13
import org.apache.commons.lang3.StringUtils;
14
import org.springframework.web.bind.annotation.RequestMapping;
15
import org.springframework.web.bind.annotation.ResponseBody;
16
import org.springframework.web.bind.annotation.RestController;
17
18
import javax.annotation.Resource;
19
import java.util.Arrays;
20
21
/**
22
* <p>
23
* 前端控制器
24
* </p>
25
*
26
* @author KazuGin
27
* @since 2019-12-11
28
*/
29
30
"/sys/log") (
31
public class LogController {
32
33
34
35
private LogService logService;
36
37
"/loglist") (
38
public DataGridViewResult findLogList(LogVo logVo){
39
//创建分页对象,并指定当前页码及每页显示数量
40
IPage<Log> page = new Page<Log>(logVo.getPage(),logVo.getLimit());
41
//设置查询条件
42
QueryWrapper<Log> queryWrapper = new QueryWrapper<Log>();
43
//调用分页查询方法
44
logService.page(page,queryWrapper);
45
//返回数据
46
return new DataGridViewResult(page.getTotal(),page.getRecords());
47
}
48
}
MyBatisPlusConfig
在com.bdqn.sys.config包下创建mybatis-plus分页插件配置类
package com.bdqn.sys.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration//标记该类是一个配置类
@EnableTransactionManagement//开启事务管理
@MapperScan(basePackages = {"com.bdqn.sys.dao"})//加载mapper接口所在的包
public class MyBatisPlusConfig {
/**
* 注入分页插件
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
24
1
package com.bdqn.sys.config;
2
3
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
4
import org.mybatis.spring.annotation.MapperScan;
5
import org.springframework.context.annotation.Bean;
6
import org.springframework.context.annotation.Configuration;
7
import org.springframework.transaction.annotation.EnableTransactionManagement;
8
9
//标记该类是一个配置类
10
//开启事务管理
11
basePackages = {"com.bdqn.sys.dao"})//加载mapper接口所在的包 (
12
public class MyBatisPlusConfig {
13
14
15
/**
16
* 注入分页插件
17
* @return
18
*/
19
20
public PaginationInterceptor paginationInterceptor(){
21
return new PaginationInterceptor();
22
}
23
24
}
模糊查询
在页面中value属性是中文的,获取type,在layui里面,form要提交,name属性要跟实体类属性相同,因为参数是LogVo类型添加lay-submit和lay-filter表格重载
//绑定模糊查询监听事件//绑定模糊查询监听事件//form是var定义的,on是监听事件//其中:submit()是Layui中form表单的提交事件//doSearch是lay-filter的属性值
form.on("submit(doSearch)", function(data) {
//sys/log/list?type=登录操作&loginname= &starttime= &endtime=
console.log(data)
console.log(data.field);
tableIns.reload({
where:data.field,//额外参数,?后面的参数
page:{
curr:1//当前页码
}
});
return false;//关闭跳转页面
})
12
1
form.on("submit(doSearch)", function(data) {
2
//sys/log/list?type=登录操作&loginname= &starttime= &endtime=
3
console.log(data)
4
console.log(data.field);
5
tableIns.reload({
6
where:data.field,//额外参数,?后面的参数
7
page:{
8
curr:1//当前页码
9
}
10
});
11
return false;//关闭跳转页面
12
})
isnotBlok只能放字符串,不用在前面加!了
package com.igeek.sys.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.igeek.sys.entity.Log;
import com.igeek.sys.service.LogService;
import com.igeek.sys.util.DataGridViewResult;
import com.igeek.sys.vo.LogVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* <p>
* 前端控制器
* </p>
*
* @author zhj
* @since 2020-04-13
*/
@RestController
@RequestMapping("/sys/log")
public class LogController {
@Resource
private LogService logService;
@RequestMapping("/loglist")
public DataGridViewResult findLogList(LogVo logVo){
//创建分页对象,并指定当前页码及每页显示数量
IPage<Log> page = new Page<Log>(logVo.getPage(),logVo.getLimit());
//设置查询条件
QueryWrapper<Log> queryWrapper = new QueryWrapper<Log>();
//登录名模糊查询
queryWrapper.like(StringUtils.isNotBlank(logVo.getLoginname()),"loginname",logVo.getLoginname());
//操作类型
queryWrapper.eq(StringUtils.isNotBlank(logVo.getType()),"type",logVo.getType());
//开始时间
queryWrapper.ge(logVo.getStartTime()!=null,"createtime",logVo.getStartTime());
//结束时间
queryWrapper.le(logVo.getEndTime()!=null,"createtime",logVo.getEndTime());
//设置排序
queryWrapper.orderByDesc("createtime");//登录时间降序
//调用分页查询方法
IPage<Log> logIPage = logService.page(page, queryWrapper);
//返回数据
return new DataGridViewResult(logIPage.getTotal(),logIPage.getRecords());
}
}
54
1
package com.igeek.sys.controller;
2
3
4
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
import com.baomidou.mybatisplus.core.metadata.IPage;
6
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7
import com.igeek.sys.entity.Log;
8
import com.igeek.sys.service.LogService;
9
import com.igeek.sys.util.DataGridViewResult;
10
import com.igeek.sys.vo.LogVo;
11
import org.apache.commons.lang3.StringUtils;
12
import org.springframework.web.bind.annotation.RequestMapping;
13
14
import org.springframework.web.bind.annotation.RestController;
15
16
import javax.annotation.Resource;
17
18
/**
19
* <p>
20
* 前端控制器
21
* </p>
22
*
23
* @author zhj
24
* @since 2020-04-13
25
*/
26
27
"/sys/log") (
28
public class LogController {
29
30
31
private LogService logService;
32
33
"/loglist") (
34
public DataGridViewResult findLogList(LogVo logVo){
35
//创建分页对象,并指定当前页码及每页显示数量
36
IPage<Log> page = new Page<Log>(logVo.getPage(),logVo.getLimit());
37
//设置查询条件
38
QueryWrapper<Log> queryWrapper = new QueryWrapper<Log>();
39
//登录名模糊查询
40
queryWrapper.like(StringUtils.isNotBlank(logVo.getLoginname()),"loginname",logVo.getLoginname());
41
//操作类型
42
queryWrapper.eq(StringUtils.isNotBlank(logVo.getType()),"type",logVo.getType());
43
//开始时间
44
queryWrapper.ge(logVo.getStartTime()!=null,"createtime",logVo.getStartTime());
45
//结束时间
46
queryWrapper.le(logVo.getEndTime()!=null,"createtime",logVo.getEndTime());
47
//设置排序
48
queryWrapper.orderByDesc("createtime");//登录时间降序
49
//调用分页查询方法
50
IPage<Log> logIPage = logService.page(page, queryWrapper);
51
//返回数据
52
return new DataGridViewResult(logIPage.getTotal(),logIPage.getRecords());
53
}
54
}
批量删除日志
首先要监听按钮//监听数据表格的头部工具栏时间//步骤1:头部工具栏按设置lay-event属性//步骤2:绑定表格的监听事件,反是没加#的都是监听Lay-filter的值//步骤3:case:lay-event属性
table.on("toolbar(logTable)",function (obj) {
switch (obj.event) {
case "batchDelete":
alert(obj.event);
//调用批量删除的方法
batchDelete();//批量删除
break;
}
})
9
1
table.on("toolbar(logTable)",function (obj) {
2
switch (obj.event) {
3
case "batchDelete":
4
alert(obj.event);
5
//调用批量删除的方法
6
batchDelete();//批量删除
7
break;
8
}
9
})
获取选中行
//批量删除方法
//批量删除方法
function batchDelete() {
//获取选中行
var checkStatus = table.checkStatus('logTable'); // 即为基础参数 lay-filter的值
console.log(checkStatus);
console.log(checkStatus.data); //获取选中行的数据
//获取选中的数量
var length = checkStatus.data.length;
console.log(length);//获取选中行数量,可作为是否有选中行的条件
if(length>0){
//提示是否删除
layer.confirm('确定要删除这'+length+'条数据吗', {icon: 3, title:'提示'}, function(index){
//获取选中行的数据
var checkData = checkStatus.data;
//声明数组,保存选中行的ID
var idArr = [];
//循环
for(var i=0;i<length;i++){
idArr.push(checkData[i].id)
}
//转换
var ids = idArr.join(",");
//发送删除请求
$.post("/sys/log/delete",{"ids":ids},function (result) {
//判断是否成功
if(result.success){
//删除成功后刷新数据
tableIns.reload();
}
//弹出提示信息,
layer.msg(result.message);
},"json");
//关闭提示框
layer.close(index);
});
}else{
//提示没有选择
// layer.alert("请选择要删除的行!",{icon:0})
layer.msg("请选择要删除的行!",{time:2000})
}
console.log(checkStatus.isAll ) //表格是否全选
}
x
1
//批量删除方法
2
function batchDelete() {
3
//获取选中行
4
var checkStatus = table.checkStatus('logTable'); // 即为基础参数 lay-filter的值
5
console.log(checkStatus);
6
console.log(checkStatus.data); //获取选中行的数据
7
//获取选中的数量
8
var length = checkStatus.data.length;
9
console.log(length);//获取选中行数量,可作为是否有选中行的条件
10
if(length>0){
11
//提示是否删除
12
layer.confirm('确定要删除这'+length+'条数据吗', {icon: 3, title:'提示'}, function(index){
13
//获取选中行的数据
14
var checkData = checkStatus.data;
15
//声明数组,保存选中行的ID
16
var idArr = [];
17
//循环
18
for(var i=0;i<length;i++){
19
idArr.push(checkData[i].id)
20
}
21
//转换
22
var ids = idArr.join(",");
23
//发送删除请求
24
$.post("/sys/log/delete",{"ids":ids},function (result) {
25
//判断是否成功
26
if(result.success){
27
//删除成功后刷新数据
28
tableIns.reload();
29
}
30
//弹出提示信息,
31
layer.msg(result.message);
32
},"json");
33
//关闭提示框
34
layer.close(index);
35
});
36
}else{
37
//提示没有选择
38
// layer.alert("请选择要删除的行!",{icon:0})
39
layer.msg("请选择要删除的行!",{time:2000})
40
}
41
console.log(checkStatus.isAll ) //表格是否全选
42
}
修改SystemConstant
/**
* 删除成功
*/
JSONResult DELETE_SUCCESS = new JSONResult(true,"删除成功");
/**
* 删除失败
*/
JSONResult DELETE_ERROR = new JSONResult(false,"删除失败");
/**
* 添加成功
*/
JSONResult ADD_SUCCESS = new JSONResult(true,"添加成功");
/**
* 添加失败
*/
JSONResult ADD_ERROR = new JSONResult(false,"添加失败");
/**
* 修改成功
*/
JSONResult UPDATE_SUCCESS = new JSONResult(true,"修改成功");
/**
* 修改失败
*/
JSONResult UPDATE_ERROR = new JSONResult(false,"修改失败");
1
/**
2
* 删除成功
3
*/
4
JSONResult DELETE_SUCCESS = new JSONResult(true,"删除成功");
5
/**
6
* 删除失败
7
*/
8
JSONResult DELETE_ERROR = new JSONResult(false,"删除失败");
9
/**
10
* 添加成功
11
*/
12
JSONResult ADD_SUCCESS = new JSONResult(true,"添加成功");
13
/**
14
* 添加失败
15
*/
16
JSONResult ADD_ERROR = new JSONResult(false,"添加失败");
17
/**
18
* 修改成功
19
*/
20
JSONResult UPDATE_SUCCESS = new JSONResult(true,"修改成功");
21
/**
22
* 修改失败
23
*/
24
JSONResult UPDATE_ERROR = new JSONResult(false,"修改失败");
25
@RequestMapping("/delete")
public JSONResult delete(String ids){
try {
//将字符串拆分成数组
String[] idStr = ids.split(",");
//判断是否删除成功
if(logService.removeByIds(Arrays.asList(idStr))){
//删除成功
return SystemConstant.DELETE_SUCCESS;
}
} catch (Exception e) {
e.printStackTrace();
}
//删除失败
return SystemConstant.DELETE_ERROR;
}
1
"/delete") (
2
public JSONResult delete(String ids){
3
try {
4
//将字符串拆分成数组
5
String[] idStr = ids.split(",");
6
//判断是否删除成功
7
if(logService.removeByIds(Arrays.asList(idStr))){
8
//删除成功
9
return SystemConstant.DELETE_SUCCESS;
10
}
11
} catch (Exception e) {
12
e.printStackTrace();
13
}
14
//删除失败
15
return SystemConstant.DELETE_ERROR;
16
}
修改页码,要添加回调函数logManager.html
//判断当前页码是否大于1//三个参数随便取 res:当前页数据,curr:当前页码,count:数据总量//当面页码>1,说明 还是第一页//当前数据 == 0 ,说明没数据
//回调函数
done:function (res,curr,count) {
//判断当前页码是否大于1
//三个参数随便取 res:当前页数据,curr:当前页码,count:数据总量
//当面页码>1,说明 还是第一页
//当前数据 == 0 ,说明没数据
if(curr>1 && res.data.length == 0){
//当前页码-1
var pageValue = curr-1;
tableIns.reload({
//修改页码
page:{curr:pageValue}
})
}
}
x
1
//回调函数
2
done:function (res,curr,count) {
3
//判断当前页码是否大于1
4
//三个参数随便取 res:当前页数据,curr:当前页码,count:数据总量
5
//当面页码>1,说明 还是第一页
6
//当前数据 == 0 ,说明没数据
7
if(curr>1 && res.data.length == 0){
8
//当前页码-1
9
var pageValue = curr-1;
10
tableIns.reload({
11
//修改页码
12
page:{curr:pageValue}
13
})
14
}
15
}