0
点赞
收藏
分享

微信扫一扫

element ui 中的 el-table 实现【选择指定数据】【清空】【反选】【全选】

<template>
  <div>
    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" />
      <el-table-column label="Date" width="120">
        <template #default="scope">{{ scope.row.date }}</template>
      </el-table-column>
      <el-table-column property="name" label="Name" width="120" />
      <el-table-column property="address" label="Address" show-overflow-tooltip />
      <el-table-column property="status" label="status" width="120" />
    </el-table>
    <div style="margin-top: 20px">
      <el-button @click="toggleSelection([tableData[1], tableData[2]])">选择指定数据</el-button>
      <el-button @click="toggleSelection()">清空</el-button>
      <el-button @click="selectInvert()">反选</el-button>
      <el-button @click="toggleSelection(tableData)">全选</el-button>
    </div>
  </div>
</template>

<script setup lang="ts">
  import { reactive, ref } from "vue"
  interface User {
      id: number,
      date: string
      name: string
      address: string,
      status: string
  }

  const multipleTableRef = ref<InstanceType<typeof ElTable>>()
  const multipleSelection = ref<User[]>([])
  const toggleSelection = (rows?: User[]) => {
      if (rows) {
          rows.forEach((row) => {
              multipleTableRef.value!.toggleRowSelection(row, true)
          })
      } else { // 清空
          multipleTableRef.value!.clearSelection()
      }
  }
  
  // 反选
  const selectInvert = () => {
      let notSelect = tableData.filter(item=>{
          return multipleSelection.value.every(item2=>{
          return item.id != item2.id;
          })
      })
      toggleSelection()
      toggleSelection(notSelect)
  }
  
  const handleSelectionChange = (val: User[]) => {
      multipleSelection.value = val
  }

  const tableData: User[] = [
      {
          id: 1,
          date: '2016-05-03',
          name: 'Tom',
          address: 'No. 189, Grove St, Los Angeles',
          status: '未确认'
      },
      {
          id: 2,
          date: '2016-05-02',
          name: 'Tom',
          address: 'No. 189, Grove St, Los Angeles',
          status: '未确认'
      },
      {
          id: 3,
          date: '2016-05-04',
          name: 'Tom',
          address: 'No. 189, Grove St, Los Angeles',
          status: '未确认'
      },
      {
          id: 4,
          date: '2016-05-01',
          name: 'Tom',
          address: 'No. 189, Grove St, Los Angeles',
          status: '未确认'
      },
      {
          id: 5,
          date: '2016-05-08',
          name: 'Tom',
          address: 'No. 189, Grove St, Los Angeles',
          status: '未确认'
      },
      {
          id: 6,
          date: '2016-05-06',
          name: 'Tom',
          address: 'No. 189, Grove St, Los Angeles',
          status: '未确认'
      },
      {
          id: 7,
          date: '2016-05-07',
          name: 'Tom',
          address: 'No. 189, Grove St, Los Angeles',
          status: '未确认'
      },
  ]
</script>

说明:【选择指定数据】【清空】这两个功能是照搬官网的,参考地址:https://element-plus.gitee.io/zh-CN/component/table.html

举报

相关推荐

0 条评论