- 前端使用了vue+elementplus写了个时间范围选择器
<div class="block" style="margin-top: 5px">
<el-date-picker
v-model="value1"
value-format="YYYY-MM-DD"
type="daterange"
range-separator="To"
start-placeholder="Start date"
end-placeholder="End date"
/>
<el-button type="primary" style="margin: 5px" @click="searchTime(value1)">查询该时间范围内数据</el-button>
</div>
这里只写时间选择器,参数等具体请参考elementplus里的时间选择器页面配置。
2. 在script里写通过axios发情请求到后端。这里采用的是前后端分离。
//查询某段时间范围内的数据
searchTime(value){
request.get("/covid/time/"+value,{//此处的value就是要发送给后端的一个时间范围数组
params:{
pageNum:this.currentPage,
pageSize:this.pageSize,
}
}).then(res=>{
console.log(res)
this.tableData = res.data.records;
this.total = res.data.total;
})
}
- 后端采用MyBatisplus的分页插件,直接看代码。
//分页查询-时间范围,默认查询第一页+10条
@GetMapping("/time/{value}")
public Result<?> findPageTime(@RequestParam Integer pageNum,
@RequestParam Integer pageSize,
@PathVariable("value") String[] search) {
System.out.println(search);
Page<Covid> Page = new Page<>(pageNum, pageSize);
//构造条件构造器
QueryWrapper<Covid> wrapper = new QueryWrapper<>();
QueryWrapper<Covid> between = wrapper.between("日期", search[0], search[1]);
Page<Covid> zongPage = covidMapper.selectPage(Page,between);
return Result.success(zongPage);//这里的Result类为自己的封装类
}
注意:后端分页的第三个插件不要使用@RequestParam,要使用@PathVariable直接把前端发送到地址栏里的数据给取出来,再重新赋给后端参数接收。