Vue前端对后端数据进行分页设置的思路,以及搜索时间段内的数据实现思路
首先安装element-ui插件,在组件中配置表格,分页能功能的模板
然后分页模板中的属性介绍:
:current-page=当前页数,支持 .sync 修饰符
:page-sizes=每页显示个数选择器的选项设置
:page-size每页显示条目个数,支持 .sync 修饰符
:layout组件布局,子组件名用逗号分隔
total总条目数
1.在data中定义分页的数据:
ToPages: {
cur_index: 1,
cur_sizes: [5, 10, 15, 20],
cur_size: 5,
cur_layout: "total, sizes, prev, pager, next, jumper",
total: 0,
},
2.在请求数据时定义两个数组一个总数据一个过滤出来的数据。
3.定义分页初始值的方法,分页数据中总条数=请求的数据长度,当前页数=1,
当前页数=5,调用分页操作的方法。
4.定义分页操作的方法,过滤出总数据,里面有两个值一个当前数据item一个
index下标.return返回↓
下标小于当前页*当前页数&&并且index下标大于等于(当前页数-1)*
当前页数
this.shuzu = this.tableData.filter((item, index) => {
return (
index < this.ToPages.cur_index * this.ToPages.cur_size &&
index >=
(this.ToPages.cur_index - 1) * this.ToPages.cur_size
);
});
5.然后分页触发调用的两个方法:
handleSizeChange修改当前页数为当前的值v
handleCurrentChange修改当前页为当前的值v
同时调用分页操作的方法。
6.最后在table表格中渲染过滤后的数据即可完成分页操作
分页模板
<div class="block">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="ToPages.cur_index"
:page-sizes="ToPages.cur_sizes"
:page-size="ToPages.cur_size"
:layout="ToPages.cur_layout"
:total="ToPages.total"
>
<!--
:current-page=当前页数,支持 .sync 修饰符
:page-sizes=每页显示个数选择器的选项设置
:page-size每页显示条目个数,支持 .sync 修饰符
:layout组件布局,子组件名用逗号分隔
total总条目数
-->
</el-pagination>
</div>
data数据
tableData: [],
shuzu:[],
ToPages: {
cur_index: 1,
cur_sizes: [5, 10, 15, 20],
cur_size: 5,
cur_layout: "total, sizes, prev, pager, next, jumper",
total: 0,
},
分页初始值
PaySizie() {
this.ToPages.total = this.tableData.length;
this.ToPages.cur_index = 1;
this.ToPages.cur_size = 5;
this.pryins()
},
分页操作
pryins() {
this.shuzu = this.tableData.filter((item, index) => {
return (
index < this.ToPages.cur_index * this.ToPages.cur_size &&
index >=
(this.ToPages.cur_index - 1) * this.ToPages.cur_size
);
});
},
分页触发的方法
handleSizeChange(v) {
console.log(v);
this.ToPages.cur_size = v;
this.pryins()
},
handleCurrentChange(v) {
console.log(v);
this.ToPages.cur_index = v;
this.pryins()
},
搜索实现的思路
在element-ui找到对应的时间段查询模板,安装到页面组件中。
定义时间段新时间段和旧时间段,分别代表开始时间和结束时间。
当我们触发搜索按钮时,将新时间段和旧时间段转换为时间戳
getTime,然后获取总数据,过滤出来将数据中的date添加时间转
换为时间,然后再转换为时间戳,return返回总数据时间大于等于
新时间段并且小于等于旧时间段,将处理好的这个数据赋值给表格
中渲染的数据即可。
data数据
filNew: {
value1: "",
value2: "",
},
触发方法
filData() {
let nW1 = this.filNew.value1.getTime();
let nY2 = this.filNew.value2.getTime();
this.shuzu = this.tableData.filter((res) => {
let sj = new Date(res.date);
let key = sj.getTime();
return key >= nW1 && key <= nY2;
});
},