12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <template>
- <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>
- <div style="margin-top: 20px">
- <el-button @click="toggleSelection([tableData[1], tableData[2]])"
- >Toggle selection status of second and third rows</el-button
- >
- <el-button @click="toggleSelection()">Clear selection</el-button>
- </div>
- </template>
- <script lang="ts" setup>
- import { ref } from 'vue'
- import { ElTable } from 'element-plus'
- interface User {
- date: string
- name: string
- address: string
- }
- const multipleTableRef = ref<InstanceType<typeof ElTable>>()
- const multipleSelection = ref<User[]>([])
- const toggleSelection = (rows?: User[]) => {
- if (rows) {
- rows.forEach((row) => {
- // TODO: improvement typing when refactor table
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-expect-error
- multipleTableRef.value!.toggleRowSelection(row, undefined)
- })
- } else {
- multipleTableRef.value!.clearSelection()
- }
- }
- const handleSelectionChange = (val: User[]) => {
- multipleSelection.value = val
- }
- const tableData: User[] = [
- {
- date: '2016-05-03',
- name: 'Tom',
- address: 'No. 189, Grove St, Los Angeles',
- },
- {
- date: '2016-05-02',
- name: 'Tom',
- address: 'No. 189, Grove St, Los Angeles',
- },
- {
- date: '2016-05-04',
- name: 'Tom',
- address: 'No. 189, Grove St, Los Angeles',
- },
- {
- date: '2016-05-01',
- name: 'Tom',
- address: 'No. 189, Grove St, Los Angeles',
- },
- {
- date: '2016-05-08',
- name: 'Tom',
- address: 'No. 189, Grove St, Los Angeles',
- },
- {
- date: '2016-05-06',
- name: 'Tom',
- address: 'No. 189, Grove St, Los Angeles',
- },
- {
- date: '2016-05-07',
- name: 'Tom',
- address: 'No. 189, Grove St, Los Angeles',
- },
- ]
- </script>
|