From f661f1c7cb92018fa66b4414abe465e2b6308d36 Mon Sep 17 00:00:00 2001 From: mk <2403457699@qq.com> Date: Thu, 1 Aug 2024 17:11:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=B1=85=E6=B0=91=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=A0=91=E5=BD=A2=E7=BB=93=E6=9E=84=E5=88=B0=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E6=90=9C=E7=B4=A2=E7=9A=84=E5=85=A8=E5=B1=80=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/components/resiSearch.vue | 11 ++++--- src/views/modules/base/resi.vue | 45 +++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/src/views/components/resiSearch.vue b/src/views/components/resiSearch.vue index 9c9887eb7..5a9aa1396 100644 --- a/src/views/components/resiSearch.vue +++ b/src/views/components/resiSearch.vue @@ -931,17 +931,20 @@ export default { if (this.columnName) this.handleChangeForm(this.columnName) }, mounted(){ - this.$EventBus.$on('handleClickResiTree', (val) => { + this.$EventBus.$on('handleClickResiTree', async (val) => { if(val.type === 'agency'){ this.form.agencyId = val.id; this.optionsV = []; - this.getValiheList(); + this.form.villageId = ''; + this.form.buildId = ''; + await this.getValiheList(); }else if(val.type === 'neighborHood'){ this.form.villageId = val.id; - this.handleChangeV(val.id) + await this.handleChangeV(val.id) + this.form.buildId = ''; }else if(val.type === 'building'){ this.form.buildId = val.id; - this.handleChangeB(val.id) + await this.handleChangeB(val.id) } }) }, diff --git a/src/views/modules/base/resi.vue b/src/views/modules/base/resi.vue index f24cff36a..da46c37f8 100644 --- a/src/views/modules/base/resi.vue +++ b/src/views/modules/base/resi.vue @@ -1300,13 +1300,52 @@ export default { if (!value) return true; return data.label.indexOf(value) !== -1; }, - async handleNodeClick(obj) { + extractData(node) { + const result = []; + let currentNode = node; + while (currentNode) { + result.push({ id: currentNode.data.id, level: currentNode.data.level }); + currentNode = currentNode.parent; + } + return result; + }, + + traverseTree(tree) { + const results = []; + tree.forEach(node => { + results.push(...this.extractData(node)); + if (node.children && node.children.length > 0) { + results.push(...this.traverseTree(node.children)); + } + }); + return results; + }, + async handleNodeClick(obj,node) { this.selObj = JSON.parse(JSON.stringify(obj)); this.selTreeObj = obj; await nextTick(1000); - this.$nextTick(()=>{ + this.$nextTick(async ()=>{ if(obj.level === "building" || obj.level === "neighborHood"){ - this.$EventBus.$emit('handleClickResiTree',{type:obj.level,id:obj.id}) + const gridNode = this.traverseTree([node]); + const gridResult = gridNode.find(item => item.level === 'grid'); + const neighborHoodResult = gridNode.find(item => item.level === "neighborHood"); + const buildingResult = gridNode.find(item => item.level === "building"); + + const gridId = gridResult ? gridResult.id : null; + const neighborHoodId = neighborHoodResult ? neighborHoodResult.id : null; + const buildingId = buildingResult ? buildingResult.id : null; + if (gridId) { + await this.$EventBus.$emit('handleClickResiTree', { type: 'agency', id: gridId }); + } + await nextTick(500); + if (neighborHoodId) { + await this.$EventBus.$emit('handleClickResiTree', { type: 'neighborHood', id: neighborHoodId }); + } + await nextTick(500); + if (buildingId) { + await this.$EventBus.$emit('handleClickResiTree', { type: 'building', id: buildingId }); + } + }else{ this.$EventBus.$emit('handleClickResiTree',{type:'agency',id:obj.id}) }