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