From 8d0db599c3d851d905319778d01662e7b556fc42 Mon Sep 17 00:00:00 2001 From: wwl <xchao828@163.com> Date: 星期四, 10 四月 2025 16:38:41 +0800 Subject: [PATCH] 优化搜索 --- src/views/hosp/project/index.vue | 68 +++++++++++++++++++-------------- 1 files changed, 39 insertions(+), 29 deletions(-) diff --git a/src/views/hosp/project/index.vue b/src/views/hosp/project/index.vue index 04c2fe4..0ee06f4 100644 --- a/src/views/hosp/project/index.vue +++ b/src/views/hosp/project/index.vue @@ -9,8 +9,8 @@ <div class="scrollable-container"> <div class="content"> <el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false" - :filter-node-method="filterNode" ref="tree" node-key="id" :default-expanded-keys="treeId" - highlight-current @node-click="handleNodeClick" :render-content="renderContent" v-loading="loadings"/> + :filter-node-method="filterNode" ref="tree" node-key="id" :default-expanded-keys="treeId" + highlight-current @node-click="handleNodeClick" :render-content="renderContent" v-loading="loadings" /> </div> </div> </el-col> @@ -79,7 +79,7 @@ </el-table-column> <el-table-column label="椤圭洰鏍囧噯鍊�" align="center" prop="proScope" :show-overflow-tooltip="true" width="90px"> </el-table-column> - <el-table-column label="Lis椤圭洰鍚嶇О" align="center" prop="lisXmmc" :show-overflow-tooltip="true" width="200px"> + <el-table-column label="Lis椤圭洰鍚嶇О" align="center" prop="lisXmmc" :show-overflow-tooltip="true" width="200px"> </el-table-column> <el-table-column label="Lis缂栫爜" align="center" prop="lisXmbm" :show-overflow-tooltip="true" width="90px"> </el-table-column> @@ -586,16 +586,25 @@ }); }, methods: { - debounceFilter: debounce(function(val) { + debounceFilter: debounce(function (val) { this.$refs.tree.filter(val); }, 300), precomputePinyin() { const traverse = (nodes) => { nodes.forEach(node => { if (node.label) { - const lowerSpell = node.label.spell('low', 'array').join(''); - const upperSpell = node.label.spell('up', 'array').join(''); - this.pinyinCache.set(node.id, { lowerSpell, upperSpell, label: node.label }); + const lowerSpell = cnchar.spell(node.label, 'low', 'array').join(''); // 瀹屾暣灏忓啓鎷奸煶 + const upperSpell = cnchar.spell(node.label, 'up', 'array').join(''); // 瀹屾暣澶у啓鎷奸煶 + const shortPinyin = node.label + .split('') + .map(char => cnchar.spell(char, 'array')[0]?.[0]?.toLowerCase() || char) // 鎷奸煶棣栧瓧姣� + .join(''); + this.pinyinCache.set(node.id, { + lowerSpell, + upperSpell, + shortPinyin, // 缂撳瓨鎷奸煶绠�鍐� + label: node.label + }); } if (node.children) traverse(node.children); }); @@ -603,13 +612,14 @@ traverse(this.deptOptions); }, filterNode(value, data) { - if (!value) return true; + if (!value) return true; // 濡傛灉鎼滅储鍊间负绌猴紝杩斿洖鎵�鏈夎妭鐐� const cached = this.pinyinCache.get(data.id); - if (!cached) return false; + if (!cached) return false; // 濡傛灉娌℃湁缂撳瓨鏁版嵁锛屼笉鏄剧ず璇ヨ妭鐐� + const searchLower = value.toLowerCase(); // 灏嗘悳绱㈣瘝杞负灏忓啓 return ( - cached.label.includes(value) || - cached.lowerSpell.includes(value) || - cached.upperSpell.includes(value) + cached.label.includes(value) || // 鐩存帴鍖归厤姹夊瓧 + cached.shortPinyin.includes(searchLower) || // 鍖归厤鎷奸煶绠�鍐� + cached.lowerSpell.includes(searchLower) // 鍖归厤瀹屾暣鎷奸煶 ); }, filterNode2(value, data) { @@ -690,24 +700,24 @@ this.form.proParentId = row.proId || 0; this.open = true; } else if (this.treeDate.id) { - if(this.treeDate.qf == "0"){ - this.form.proParentId = "0" - this.form.deptId=this.treeDate.id - }else{ - this.form.proParentId = this.treeDate.id; - this.projectOptions.forEach((item) => { - item.children.forEach((item1) => { - if (this.form.proParentId == item1.proId) { - this.form.deptId = item1.deptId; - } + if (this.treeDate.qf == "0") { + this.form.proParentId = "0" + this.form.deptId = this.treeDate.id + } else { + this.form.proParentId = this.treeDate.id; + this.projectOptions.forEach((item) => { + item.children.forEach((item1) => { + if (this.form.proParentId == item1.proId) { + this.form.deptId = item1.deptId; + } + }); }); - }); - } - - + } + + this.open = true; } else { - this.form.proParentId = "0" + this.form.proParentId = "0" this.open = true; } } @@ -824,7 +834,7 @@ }); }, handleNodeClick(date) { - + this.treeDate = date; console.log(this.treeDate) this.xiugais = date.qf === "0"; @@ -1116,7 +1126,7 @@ this.getList(); this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); }) - .catch(() => {}); + .catch(() => { }); }, handleExport() { this.download( -- Gitblit v1.8.0