Files
cdTestPlant3/cdTMP/src/layout/treeHooks/searchNodes.ts

51 lines
1.4 KiB
TypeScript
Raw Normal View History

2024-08-09 19:31:36 +08:00
import { ref } from "vue"
import type { Ref } from "vue"
import { useTreeDataStore } from "@/store"
import { storeToRefs } from "pinia"
/**
*
*/
const loop = (itemdata: any[], searchKey: Ref<string>) => {
const result: any[] = []
itemdata.forEach((item) => {
if (item.title.indexOf(searchKey.value.replace(" ", "")) > -1) {
result.push({ ...item })
} else if (item.children) {
const filterdata = loop(item.children, searchKey)
if (filterdata.length) {
result.push({
...item,
children: filterdata
})
}
}
})
return result
}
/**
* v-model/
*/
export default function useSearchNodes() {
// global
const treeDataStore = useTreeDataStore()
const { treeData } = storeToRefs(treeDataStore)
// refs
const searchKey = ref("")
// 点击搜索事件
const handleSearchTreeDataClick = () => {
// 返回过滤后的treeData
// treeDataStore.originTreeData
if (searchKey.value) {
treeData.value = treeDataStore.originTreeData
;(treeData as Ref<any[]>).value = loop(treeDataStore.treeData, searchKey)
} else {
treeData.value = treeDataStore.originTreeData
}
}
return {
searchKey,
handleSearchTreeDataClick
}
}