在vue3中 两个表格左右排列 数据可以左右切换类似穿梭狂,两个表格上方有搜索框,前端如何做到搜索功能,模糊匹配,
时间: 2024-03-05 07:50:25 浏览: 109
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
对于两个表格左右排列,可以考虑使用CSS布局,将两个表格分别放在左右两个div中,并设置float属性,使其左右排列。对于数据的左右切换,可以使用Vue3中的Tab组件或者利用Vue3的响应式数据,在点击切换按钮时,动态切换数据的显示。
对于搜索功能,可以在上方搜索框中绑定一个input事件,将输入的搜索关键字传递给Vue3的data数据中,在模板中使用v-for循环显示数据时,利用Vue3的计算属性和filter过滤器实现数据的模糊匹配。具体实现可以参考以下代码:
```
<template>
<div>
<input type="text" v-model="keyword" @input="handleSearch" placeholder="请输入搜索关键字">
<div class="table-wrapper">
<table class="table-left">
<thead>
<tr>
<th>列1</th>
<th>列2</th>
<th>列3</th>
</tr>
</thead>
<tbody>
<tr v-for="item in leftTableDataFilter" :key="item.id">
<td>{{ item.col1 }}</td>
<td>{{ item.col2 }}</td>
<td>{{ item.col3 }}</td>
</tr>
</tbody>
</table>
<table class="table-right">
<thead>
<tr>
<th>列1</th>
<th>列2</th>
<th>列3</th>
</tr>
</thead>
<tbody>
<tr v-for="item in rightTableDataFilter" :key="item.id">
<td>{{ item.col1 }}</td>
<td>{{ item.col2 }}</td>
<td>{{ item.col3 }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
<script>
import { ref, computed } from 'vue';
export default {
setup() {
const leftTableData = ref([...]); // 左侧表格数据
const rightTableData = ref([...]); // 右侧表格数据
const keyword = ref(''); // 搜索关键字
// 处理搜索
const handleSearch = () => {
// do something
}
// 过滤左侧表格数据
const leftTableDataFilter = computed(() => {
const k = keyword.value && keyword.value.trim(); // 处理搜索关键字
if (!k) return leftTableData.value;
return leftTableData.value.filter(item => {
return item.col1.includes(k) || item.col2.includes(k) || item.col3.includes(k);
});
});
// 过滤右侧表格数据
const rightTableDataFilter = computed(() => {
const k = keyword.value && keyword.value.trim(); // 处理搜索关键字
if (!k) return rightTableData.value;
return rightTableData.value.filter(item => {
return item.col1.includes(k) || item.col2.includes(k) || item.col3.includes(k);
});
});
return {
leftTableDataFilter,
rightTableDataFilter,
keyword,
handleSearch
}
}
}
</script>
<style>
.table-wrapper {
display: flex;
justify-content: space-between;
}
.table-left {
float: left;
}
.table-right {
float: right;
}
</style>
```
阅读全文