先看效果:
应用场景:
一般分页功能多用于一些数据量较大的信息展示页面,通过分页可以设置每页的显示数量。多用于和 el-table 结合使用!
属性
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
small | 是否使用小型分页样式 | boolean | — | false |
background | 是否为分页按钮添加背景色 | boolean | — | false |
page-size | 每页显示条目个数,支持 .sync 修饰符 | number | — | 10 |
total | 总条目数 | number | — | — |
page-count | 总页数,total 和 page-count 设置任意一个就可以达到显示页码的功能;如果要支持 page-sizes 的更改,则需要使用 total 属性 | Number | — | — |
pager-count | 页码按钮的数量,当总页数超过该值时会折叠 | number | 大于等于 5 且小于等于 21 的奇数 | 7 |
current-page | 当前页数,支持 .sync 修饰符 | number | — | 1 |
layout | 组件布局,子组件名用逗号分隔 | String | sizes , prev , pager , next , jumper , -> , total , slot | 'prev, pager, next, jumper, ->, total' |
page-sizes | 每页显示个数选择器的选项设置 | number[] | — | [10, 20, 30, 40, 50, 100] |
popper-class | 每页显示个数选择器的下拉框类名 | string | — | — |
prev-text | 替代图标显示的上一页文字 | string | — | — |
next-text | 替代图标显示的下一页文字 | string | — | — |
disabled | 是否禁用 | boolean | — | false |
hide-on-single-page | 只有一页时是否隐藏 | boolean | — | - |
事件
事件名称 | 说明 | 回调参数 |
---|---|---|
size-change | pageSize 改变时会触发 | 每页条数 |
current-change | currentPage 改变时会触发 | 当前页 |
prev-click | 用户点击上一页按钮改变当前页后触发 | 当前页 |
next-click | 用户点击下一页按钮改变当前页后触发 | 当前页 |
Slot
name | 说明 |
---|---|
— | 自定义内容,需要在 layout 中列出 slot |
代码:
<!-- 表格 -->
<div class="datas">
<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column type="index" :index="indexMethod" label="序号"></el-table-column>
<el-table-column prop="sysPersonName" label="姓名"></el-table-column>
<el-table-column prop="sysPersonSex" label="性别"></el-table-column>
<el-table-column prop="sysPersonPhone" label="手机号"></el-table-column>
<el-table-column prop="sysPersonId" label="编号"></el-table-column>
<el-table-column prop="sysIfAttendance" label="是否考勤"></el-table-column>
<el-table-column prop="organizationInfo.sysOrganizationName" label="所属组织"></el-table-column>
<el-table-column prop="sysRemark" label="备注"></el-table-column>
<el-table-column fixed="right" label="操作" width="100">
<template slot-scope="scope">
<el-button
@click="handleClick(scope.row)"
type="text"
size="small"
>消息</el-button
>
<el-button @click="godetails(scope.row)" type="text" size="small"
>详情</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</div>
<!-- 分页 -->
<div class="block">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="person.page"
:page-sizes="[10]"
:page-size = 10
layout="total, sizes, prev, pager, next, jumper"
:total="totalCount"
></el-pagination>
</div>
<script>
export default {
data() {
return {
tableData: [],
// 分页
totalCount: 0, //总条数,总共有多少条数据
radio: "1",
// 人员列表数据
person: {
limit: 0,
options: {
},
page: 0,
},
value: "",
sendMessagePopups: false,
form: {
name: "",
messageContent: "",
},
pages: 0,
multipleSelection: [],
messageFrom:{
messageName: '',
messageContent:'',
},
messageName: ''
};
},
created() {
this.personTableList();
},
methods: {
// 人员列表
personTableList() {
this.person.limit = 10
this.$http.put("/api/list/person", this.person).then((res) => {
if (res.data.status === 200) {
console.log(res.data.data)
this.pages = res.data.data
this.tableData = res.data.data.data;
for (let i = 0; i < this.tableData.length; i++) {
if (this.tableData[i].sysPersonSex == 1) {
this.tableData[i].sysPersonSex = "男";
} else {
this.tableData[i].sysPersonSex = "女";
}
if (this.tableData[i].sysIfAttendance == 1) {
this.tableData[i].sysIfAttendance = "是";
} else {
this.tableData[i].sysIfAttendance = "否";
}
}
this.totalCount = res.data.data.count;
console.log(this.tableData);
} else {
this.$message.error(res.data.message);
return;
}
});
},
// 分页
handleCurrentChange(newPage) {
this.person.page = newPage
this.personTableList()
},
handleSizeChange(val) {
this.person.limit = val
this.personTableList()
},
// 表格数据索引累加
indexMethod(index){
return(this.pages.page-1) * 10 + index + 1
},
},
};
</script>
重点:
删除的时候:当当前页面只有一条数据的时候改怎么办?
if (this.tableData.length == 1) {
this.pageNum = this.pageNum - 1; //页数减1
}