废话不多说,先上效果。
未查询前:
查询后:
更换每页条数:
后端查询语句:
基本思路:前端采用form表单提交的方式获取一些查询信息(有记录的状态qstatus,开始时间fromDate和结束时间toDate),然后通过jQuery实现表单提交时间的监控,在表单提交事件中使用table.render()根据需要查询的信息发送异步请求到后端获取记录。
//工具栏
$.func = {
formatNestedObj:function(list){
//由于layui无法处理json中嵌套的对象,在这里将我们需要的嵌套对象的属性,变为该对象的属性,
for (var i=0;i<list.length;i++)
{
list[i].uname = list[i].user.uname;
}
return list;
}, //end formatNestedObj
}
form.on('submit(query)', function(data){
var param=data.field;//定义临时变量获取表单提交过来的数据,非json格式
table.render({
elem:'#test'
,url:'${ctx}/question/queryQuestion'
,method:'post'
,contentType:"application/json; charset=utf-8"
,request: {
pageName: 'pageNum' //页码的参数名称,默认:page
,limitName: 'pageSize' //每页数据量的参数名,默认:limit
}
,where:{
qstatus:param.qstatus,
fromDate:param.fromDate,
toDate:param.toDate
}
,parseData: function(res){ //res 即为原始返回的数据
return {
"code": 0, //解析接口状态
"msg": "", //解析提示文本
"count": res.total, //解析数据长度
"data": $.func.formatNestedObj(res.list) //解析数据列表
};
}
,even:true
,page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
layout: ['limit', 'count', 'prev', 'page', 'next'] //自定义分页布局
,groups: 3 //只显示 3 个连续页码
,first: '首页' //首页
,prev: '上一页'
,next: '下一页'
,last: '尾页' //尾页
,limit:6
,limits:[6,12,18]
}
,cols: [[
{field: 'uname', title: '用户名', width:'10%'}
,{field: 'qtype', title: '类型', width:'10%'}
,{field: 'qdetails', title: '问题详情', width:'45%'}
,{field: 'qdate', title: '添加时间', width:'15%'}
,{field: 'qstatus', title: '是否回复', width: '10%'}
,{fixed: 'right', title:'操作', toolbar: '#toolbarDemo', width:'10%'}
]]
});
});//end form
需要说明的几点:
public class QuestionQueryDTO {
private Integer qstatus;
@JsonFormat(pattern="yyyy-MM-dd")
private Date fromDate;
//解决json转换时区问题
@JsonFormat(pattern="yyyy-MM-dd")
private Date toDate;
private Integer pageSize;
private Integer pageNum;
//省略的get/set方法
}
@RestController
@RequestMapping("/question")
public class QuestionController {
@Autowired
private QuestionService questionService;
@RequestMapping("/queryQuestion")
public PageInfo<Question> queryQuestion(@RequestBody QuestionQueryDTO questionQueryDTO){
PageInfo<Question> pageInfo = questionService.queryQuestion(questionQueryDTO);
return pageInfo;
}
}
@Service("questionService")
public class QuestionServiceImpl implements QuestionService {
@Autowired
private QuestionMapper questionMapper;
@Override
public PageInfo<Question> queryQuestion(QuestionQueryDTO questionQueryDTO) {
PageHelper.startPage(questionQueryDTO.getPageNum(),questionQueryDTO.getPageSize());
List<Question> l = questionMapper.queryQuestion(questionQueryDTO);
PageInfo<Question> page = new PageInfo<>(l);
return page;
}
}