antvue table 表格实现 首行搜索
表格首行搜索实现流程详解如下
首先创建一个组件用来渲染 头部输入框
<template>
<div class="filter">
<tr>
<th>
<div class="selectDiv">
</div>
</th>
<th v-for="(item, index) in columns" :key="index">
<div class="selectDiv" :style="'width:' + item.width + 'px'">
<a-input
style=" text-align: inherit; min-width: 150px;"
v-if="index >= deviationNumber"
:placeholder="'请输入' + item.title"
v-model="item.filter"
@change="onSearch(item)"
/>
</div>
</th>
</tr>
</div>
</template>
<script>
export default {
data() {
return {
value: '',
}
},
props: {
columns: {
type: Array,
},
deviationNumber:{
type: Number,
default:2,
}
},
methods: {
select() {
console.log(this.columns)
},
onSearch(item) {
// console.log(item);
this.$emit('onSearch', item)
},
},
}
</script>
接着在 ant vue table 页面引用该 组件,并传入表头columns [ ] 数据集合(具体用法参阅官方文档)
columns 集合实例:
columns: [
{
title: '操作',
dataIndex: 'action',
align: 'center',
// fixed: 'right',
width: 147,
scopedSlots: { customRender: 'action' },
},
{
title: '名称',
align: 'center',
dataIndex: 'name',
},
],
组件使用示例
<filterth ref="filterth" @onSearch="onSearchFilter" :deviationNumber="1" :columns="columns"></filterth>
接着在使用该组件 的页面 mounted函数里渲染组件至 表格头部
mounted() {
this.$nextTick(() => {
this.$refs.table.$el
.getElementsByTagName('thead')[0]
.appendChild(this.$refs.filterth.$el.getElementsByTagName('tr')[0])
})
},
onSearchFilter 方法
主要 实现输入框值的获取 和查询
具体根据自己业务实际情况编写 以下 仅供参考
onSearchFilter(item) {
if (item.filter == undefined) {
return
}
// console.log( this.queryParamData )
let name = item.dataIndex
this.$set(this.queryParam, name, `*${item.filter}*`)
//刷新列表数据的函数
this.searchQuery()
},