From e7c31aa96973175b63babdc8315b206d43c9afa0 Mon Sep 17 00:00:00 2001 From: Rain_ <904416525@qq.com> Date: Fri, 7 Nov 2025 17:56:14 +0800 Subject: [PATCH] =?UTF-8?q?flx=EF=BC=9A=E4=BF=AE=E6=94=B9=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/homePage/index.vue | 60 +++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 11 deletions(-) diff --git a/src/views/homePage/index.vue b/src/views/homePage/index.vue index ee60ec24..664fe694 100644 --- a/src/views/homePage/index.vue +++ b/src/views/homePage/index.vue @@ -1000,7 +1000,7 @@ export default { propsList: { value: 'itemId', label: 'name', - children: 'list', + children: 'children', // checkStrictly: true, emitPath: false }, @@ -2182,6 +2182,21 @@ export default { pieChart.resize(); }); }, + recursion(array){ + // 递归 筛选出节点的id + return array.map(item => { + if (item.children && Array.isArray(item.children) && item.children.length > 0) { + item.children = this.recursion(item.children); + return { + ...item + }; + } + return { + ...item, + children: null, + }; + }); + }, //获取摄像机列表 getVideoItemList() { let data = { @@ -2211,17 +2226,19 @@ export default { console.log('摄像头列表', res); if (res.code == 200) { this.videoList = res.result.videoList - .filter(item => item.list.length > 0) + .filter(item => item.children.length > 0) .map(item => { + item.children = this.recursion(item.children); return { ...item, itemId: item.id }; }); + console.log(2112333, this.videoList) this.videoList.some(item => { - if (item.list.length > 0) { - this.videoId = item.list[0].itemId; - this.getVideo(item.list[0].itemId); + if (item.children.length > 0) { + this.videoId = item.children[0].itemId; + this.getVideo(item.children[0].itemId); return true; } else { this.videoId = ''; @@ -2231,14 +2248,35 @@ export default { } }); }, + fuzzySearchTree(treeData, keyword, key = "name", result = []) { + for (const node of treeData) { + const newNode = { ...node }; + // 检查当前节点是否匹配关键词 + if (node[key] && node[key].includes(keyword)) { + console.log(777777777777, newNode); + result.push(newNode); + } else if (node.children && node.children.length > 0) { + // 递归查询子节点 + const childrenResult = this.fuzzySearchTree(node.children, keyword, key, result); + // if (childrenResult.length > 0) { + // newNode.children = childrenResult; + // // result.push(newNode); + // } + } + } + return result; + }, //选择的视频 getVideo(val) { - this.videoList.forEach(item => { - const find = item.list.find(ele => ele.itemId == val); - if (find) { - this.selectList = [find]; - } - }); + const searchResult = this.fuzzySearchTree(this.videoList, val, "itemId"); + console.log(88888, searchResult); + this.selectList = searchResult; + // this.videoList.forEach(item => { + // const find = item.children.find(ele => ele.itemId == val); + // if (find) { + // this.selectList = [find]; + // } + // }); // for (let i = 0; i < this.videoList.length; i++) { // if (val == this.videoList[i].itemId) { // this.selectList = [this.videoList[i]];