<template>
<a-table :data-source="data">
<a-table-column-group>
<span slot="title" style="color: #1890ff">Name</span>
<a-table-column key="firstName" data-index="firstName">
<span slot="title" style="color: #1890ff">First Name</span>
</a-table-column>
<a-table-column
key="lastName"
title="Last Name"
data-index="lastName"
:filters="[
{ text: 'Brown', value: 'Brown' },
{ text: 'Green', value: 'Green' },
{ text: 'Black', value: 'Black' },
]"
:default-filtered-value="['Brown', 'Green']"
@filter="(value, record) => record.lastName == value"
/>
</a-table-column-group>
<a-table-column key="age" title="Age" data-index="age" />
<a-table-column key="address" title="Address" data-index="address" />
<a-table-column
key="tags"
:title="`Tags ${tagsFilterDropdownVisible ? 'filtering' : ''}`"
data-index="tags"
:filtered-value="filteredTags"
@filter="(value, record) => record.tags.includes(value)"
:filter-dropdown-visible.sync="tagsFilterDropdownVisible"
>
<template slot="filterDropdown" slot-scope="{ setSelectedKeys, selectedKeys }">
<div style="background-color: white; border: solid;">
<a-checkbox
v-for="tag in ['nice', 'cool', 'loser']"
:key="tag"
:checked="filteredTags.includes(tag)"
@change="filteredTags = toggleSelectedTags(filteredTags, tag, $event.target.checked)"
>
{{ tag }}
</a-checkbox>
</div>
</template>
<template slot-scope="tags">
<span>
<a-tag v-for="tag in tags" :key="tag" color="blue">{{ tag }}</a-tag>
</span>
</template>
</a-table-column>
<a-table-column key="action" title="Action">
<template slot-scope="text, record">
<span>
<a>Action 一 {{ record.firstName }}</a>
<a-divider type="vertical" />
<a>Delete</a>
</span>
</template>
</a-table-column>
</a-table>
</template>
<script>
const data = [
{
key: '1',
firstName: 'John',
lastName: 'Brown',
age: 32,
address: 'New York No. 1 Lake Park',
tags: ['nice', 'developer'],
},
{
key: '2',
firstName: 'Jim',
lastName: 'Green',
age: 42,
address: 'London No. 1 Lake Park',
tags: ['loser'],
},
{
key: '3',
firstName: 'Joe',
lastName: 'Black',
age: 32,
address: 'Sidney No. 1 Lake Park',
tags: ['cool', 'teacher'],
},
];
export default {
data() {
return {
data,
filteredTags: [],
tagsFilterDropdownVisible: false,
};
},
methods: {
toggleSelectedTags(oldTags, tag, checked) {
let newTags = [...oldTags];
if (checked) {
newTags.push(tag);
} else {
newTags = newTags.filter(t => t != tag);
}
return newTags;
},
},
};
</script>