import { ref, computed } from 'vue' export function useSearch(items, searchFields = []) { const searchQuery = ref('') const statusFilter = ref('') const sourceFilter = ref('') const filteredItems = computed(() => { let result = items.value // 文本搜索 if (searchQuery.value.trim()) { const query = searchQuery.value.toLowerCase() result = result.filter(item => { if (searchFields.length === 0) { // 默认搜索所有字符串字段 return Object.values(item).some(val => String(val).toLowerCase().includes(query) ) } return searchFields.some(field => String(item[field]).toLowerCase().includes(query) ) }) } // 状态过滤 if (statusFilter.value) { result = result.filter(item => item.status === statusFilter.value) } // 来源过滤 if (sourceFilter.value) { result = result.filter(item => item.source === sourceFilter.value) } return result }) const resetFilters = () => { searchQuery.value = '' statusFilter.value = '' sourceFilter.value = '' } return { searchQuery, statusFilter, sourceFilter, filteredItems, resetFilters } }