关于el-table翻页后序号列递增的组件封装

需求说明:

        项目中经常会用到的一个场景,表格第一列显示序号(1、2、3...),但是在翻页后要递增显示序号,例如10、11、12(假设一页显示10条数据),针对这种情况,封装了一个vue的组件。

核心代码:

1,定义组件

<template>
  <el-table-column type="index" label="序号" width="61">
    <template #default="scope">
      {
  
  { (page - 1) * pageSize + scope.$index + 1 }}
    </template>
  </el-table-column>
</template>

<script setup>
defineProps({
  // 当前页码
  page: {
    type: Number,
    default: 1,
  },
  // 每页显示数量
  pageSize: {
    type: Number,
    default: 10,
  },
});
</script>

2,父组件引用

<el-table v-loading="loading" :data="tableData" border>
    <!-- 引用序号组件 -->
    <TableIndexColumn :page="page.pageNo" :pageSize="page.pageSize" />

    <el-table-column prop="userName" label="用户名">
        <template #default="scope">
            {
  
  { scope.row.employeeNo }}
        </template>
    </el-table-column>
    <el-table-column prop="email" label="邮箱">
        <template #default="scope">
            {
  
  { scope.row.email }}
        </template>
    </el-table-column>
</el-table>
<el-pagination
    v-model:current-page="currentPage"
    v-model:page-size="pageSize"
    :layout="layout"
    :page-sizes="pageSizes"
    :total="total"
    @size-change="handleSizeChange"
    @current-change="handleCurrentChange"
/>

在使用 Element UI 的 el-table 组件进行翻页时,如果需要保持数据的勾选状态,可以通过以下步骤实现: 1. 在数据源中添加一个字段来保存勾选状态,例如可以在每个数据对象中添加一个名为 `checked` 的属性。 2.el-table 的列定义中,使用 `selection` 类型的列来显示勾选框,并绑定到数据对象的 `checked` 属性上。 3.el-table 的 `@selection-change` 事件中,更新数据对象的 `checked` 属性。 4.el-table 的 `@current-change` 事件中,记录当前页选中的数据对象。 5.翻页时,将当前页选中的数据对象保存下来,并在下一页加载完成后重新勾选这些数据。 下面是一个示例代码: ```html <template> <el-table :data="tableData" @selection-change="handleSelectionChange" @current-change="handleCurrentChange" ref="table" > <el-table-column type="selection"></el-table-column> <!-- 其他列定义 --> </el-table> </template> <script> export default { data() { return { tableData: [], // 数据源 selectedData: [], // 当前页选中的数据 }; }, methods: { handleSelectionChange(selection) { // 更新数据对象的 checked 属性 this.tableData.forEach((item) => { item.checked = selection.includes(item); }); }, handleCurrentChange(currentRow) { // 记录当前页选中的数据 this.selectedData = currentRow.filter((item) => item.checked); }, // 翻页时重新勾选数据 handlePageChange() { this.$nextTick(() => { this.$refs.table.toggleRowSelection(this.selectedData); }); }, }, watch: { // 监听翻页事件 currentPage(newPage, oldPage) { if (newPage !== oldPage) { this.handlePageChange(); } }, }, }; </script> ``` 这样,当你在 el-table 中进行翻页操作时,勾选的数据将会被保持,并在下一页加载完成后重新勾选。注意,上述代码仅为示例,具体实现可能需要根据你的业务需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍思码匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值