<template><el-button @click="resetDateFilter">reset date filter</el-button><el-button @click="clearFilter">reset all filters</el-button><el-table ref="tableRef" row-key="date" class="m-table" :data="tableData" style="width: 100%"><el-table-columnprop="date"label="Date"width="180"column-key="date":filters="[{ text: '2016-05-01', value: '2016-05-01' },{ text: '2016-05-02', value: '2016-05-02' },{ text: '2016-05-03', value: '2016-05-03' },{ text: '2016-05-04', value: '2016-05-04' }]":filter-method="filterHandler"/><el-table-column prop="name" label="Name" width="180" /><el-table-column prop="address" label="Address" :formatter="formatter" /><el-table-columnprop="tag"label="Tag"width="100":filters="[{ text: 'Home', value: 'Home' },{ text: 'Office', value: 'Office' }]":filter-method="filterTag"filter-placement="bottom-end"><template #default="scope"><el-tag :type="scope.row.tag === 'Home' ? 'primary' : 'success'" disable-transitions>{{scope.row.tag}}</el-tag></template></el-table-column></el-table>
</template><script lang="ts" setup>
import { ref } from 'vue'
import type { TableColumnCtx, TableInstance } from 'element-plus'interface User {date: stringname: stringaddress: stringtag: string
}const tableRef = ref<TableInstance>()const resetDateFilter = () => {tableRef.value!.clearFilter(['date'])
}
const clearFilter = () => {tableRef.value!.clearFilter()
}
const formatter = (row: User, column: TableColumnCtx<User>) => {return row.address
}
const filterTag = (value: string, row: User) => {return row.tag === value
}
const filterHandler = (value: string, row: User, column: TableColumnCtx<User>) => {const property = column['property']return row[property] === value
}const tableData: User[] = [{date: '2016-05-03',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',tag: 'Home'},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',tag: 'Office'},{date: '2016-05-04',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',tag: 'Home'},{date: '2016-05-01',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',tag: 'Office'}
]
</script><style>
.m-table .el-table__column-filter-trigger .el-icon {display: none;
}
.m-table .el-table__column-filter-trigger::before {content: '666';color: red;
}
</style>
人工智能学习网站
https://chat.xutongbao.top