1
wwl
2025-02-21 ca1fe4ba6b6650095b055fae6a3223959dd88d61
1
1个文件已修改
44 ■■■■ 已修改文件
src/views/hosp/project/index.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/project/index.vue
@@ -923,31 +923,27 @@
      return data.xmmc.indexOf(value) !== -1;
    },
    // 筛选节点
    // filterNode(value, data) {
    //   console.log(value, data)
    //   if (!value) return true;
    //   return data.label.indexOf(value) !== -1;
    // },
    filterNode(value, data) {
        if (!value) return true;
        if (data.label.indexOf(value) !== -1) return true;
        // 匹配小写
        let arr = data.label.spell('low', 'array');
        let spell = arr.join('');
        let lengths = [0];
        for (var i = 0; i < arr.length - 1; i++) {
            lengths.push(lengths[i] + arr[i].length);
        };
        //判断label完整拼音 中 输入值的 index 是不是等于某个汉字第一个拼音字母的index值
        if(lengths.indexOf(spell.indexOf(value)) !== -1) return true
        // 大写
        let arrUp = data.label.spell('up', 'array');
        let spellUp = arrUp.join('');
        let lengthsUp = [0];
        for (var i = 0; i < arrUp.length - 1; i++) {
            lengthsUp.push(lengthsUp[i] + arrUp[i].length);
        };
        return lengthsUp.indexOf(spellUp.indexOf(value)) !== -1;
      if (!value) return true;
      const input = value.toLowerCase();
      const label = data.label;
      // 1. 直接中文匹配
      if (label.includes(input)) return true;
      // 2. 全拼匹配(支持大小写)
      const fullPinyin = cnchar.spell(label, 'low', 'array').join('');
      if (fullPinyin.includes(input)) return true;
      // 3. 首字母简拼匹配
      const simplePinyin = cnchar.spell(label, 'first', 'low').replace(/\s+/g, '');
      if (simplePinyin.includes(input)) return true;
      // 4. 带空格的全拼匹配(如:zhang san)
      const spacedPinyin = cnchar.spell(label, 'low', ' ').replace(/\s+/g, ' ');
      if (spacedPinyin.includes(input)) return true;
      return false;
    },
    // 节点单击事件