首页 > 其他分享 >菜单加筛选

菜单加筛选

时间:2023-07-27 17:46:30浏览次数:21  
标签:index 菜单 name item let result 筛选 children

只有两层的菜单,所以直接做了循环哈,不是那种n层菜单

<el-menu
      :collapse="ifCollapse"
      class="el-menu-vertical-demo"
      :collapse-transition="false"
    >
      <div class="header">
        <p class="header-title title-all" v-if="ifCollapse">数</p>
        <p class="title-all" v-else>选择数据集</p>
      </div>
      <el-input placeholder="输入关键字过滤" v-model="filterText" clearable>
      </el-input>
      <el-submenu
        :index="item.id + ''"
        v-for="item in collectionInfo"
        :key="item.name"
      >
        <template slot="title">
          <i class="el-icon-folder-opened"></i>
          <span slot="title">{{ item.name }}</span>
        </template>
        <el-menu-item-group v-for="child in item.children" :key="child.id">
          <el-menu-item
            :index="child.id + ''"
            @click="dataCollectClick(item, child)"
            :title="child.name"
          >
            {{ child.name }}</el-menu-item
          >
        </el-menu-item-group>
      </el-submenu>
    </el-menu>

// allCollectionInfo:[]
 watch: {
    filterText(val) {
      let result = [];
      this.filterNode(this.allCollectionInfo, val, result);
      this.$nextTick(() => {
        console.log('result', result);
        this.collectionInfo = JSON.parse(JSON.stringify(result));
      });
    },
    
  },
methods(){
 filterNode(arr, val, result) {
      let reg = new RegExp(val, 'i');
      arr.forEach((item) => {
        if (reg.test(item.name)) {
          let index = result.findIndex((value) => {
            return value.name === item.name;
          });
          if (index < 0) {
            result.push(item);
          }
        } else {
          if (item.children) {
            item.children.forEach((child) => {
              if (reg.test(child.name)) {
                let index = result.findIndex((value) => {
                  return value.name === item.name;
                });
                if (index < 0) {
                  let fathObj = {
                    name: item.name,
                    id: item.id
                  };
                  let children = [];
                  children.push(child);
                  fathObj.children = children;
                  result.push(fathObj);
                } else {
                  let childIndex = result[index].children.findIndex((value) => {
                    return value.name === child.name;
                  });
                  if (childIndex < 0) {
                    result[index].children.push(child);
                  }
                }
              }
            });
          }
        }
      });
    },
}
 // 左右折叠
    handleCollapse() {
      this.ifCollapse = !this.ifCollapse;
    },

标签:index,菜单,name,item,let,result,筛选,children
From: https://www.cnblogs.com/sinceForever/p/17585590.html

相关文章

  • 成功实现FaceTime拨打,FaceTime数据筛选,检测手机号是否开通FaceTime的原理
    FaceTime是苹果公司iOS和macOS(以前称MacOSX或OSX)内置的一款视频通话软件,通过Wi-Fi或者蜂窝数据接入互联网,在两个装有FaceTime的设备之间实现视频通话。其要求通话双方均具有装有FaceTime的苹果设备,苹果ID以及可接入互联网的3G/4G/5G或者Wi-Fi网络。 一、Windows电脑上部署苹......
  • antd 改变导航菜单的样式
    //设置菜单样式.ant-menu,.ant-menu-sub,.ant-menu-inline{color:var(--white);background-color:${bgColor}!important;}//设置子菜单展开样式.ant-menu-submenu>.ant-menu{color:var(--white);background-color:${bgColor}!important;}.ant-menu......
  • 前端Vue仿支付宝自定义可滑动轮播分页宫格菜单组件,可支持九宫格 十二宫格 十五宫格
    背景介绍随着技术的不断发展,传统的开发方式使得系统的复杂度越来越高。在传统开发过程中,一个小小的改动或者一个小功能的增加可能会导致整体逻辑的修改,造成牵一发而动全身的情况。为了解决这个问题,我们采用了组件化的开发模式。通过组件化开发,可以有效地实现单独开发,单独维护,而且......
  • DataFrame筛选多行和多列
    Dataframe筛选多行在实际数据筛选的时候,有时候需要选择多行,例如,有一个列表数据,需要在Dataframe里筛选,某列中在列表数据中的行。在这种情况下可以使用isin语法。具体如下:obj_df=df[df['obj_col'].isin(obj_list)]#筛选的行non_obj_df=df[~df['obj_col'].isin(obj_list)]......
  • 基础手札丨筛选(修订)
    ——“虽然辛苦,我还是会选择那种滚烫的人生。”——北野武继续做**@新云**大佬留的题目——常见的筛选套路。如图,一共是三个数据表格,分别是产品表、分店表以及销售明细表。题目一:筛选出销售明细表中的商品名称。仔细看数据其实不难发现,有很多重复值......
  • 销售需求丨多列判定筛选(三)
    哈喽,小伙伴们,大家好啊~本期呢,咱们来继续研究多列判定筛选。可能有的小伙伴说了,咦?这个话题不是之前已经说过两期了么?怎么这次还继续呢?严格来说,这个话题虽然说了两期了,但是还没结束,因为延伸出来的东西比较多。话不多说,数据图如下:依然采用之前的案例数据。需求还是一如既往:根据每个人......
  • 阅读圣经丨筛选上下文与行上下文
    最近白茶在读《圣经第二版》,再加上有很多小伙伴问过白茶总计栏显示不合理的地方,白茶决定抽出一期来描述一下上下文。(坦白说,这个地方不太好说,因为白茶对于一些地方理解的也不是很到位,只能说是一家之言。小伙伴们权当白茶瞎咧咧就好,别去较真,也请各位大佬收起手中的大刀。)先来看看本期......
  • [Windows] 添加 Sublime Text 到右键菜单
    创建注册表文件并执行创建一个名为“Sublime.reg”的文件将下面的内容添加到一个新建的文件中,双击执行WindowsRegistryEditorVersion5.00[\HKEY_CLASSES_ROOT\Directory\shell\EditwithSublimeText]"Icon"="C:\\ProgramFiles\\SublimeText\\sublime_text.exe,0"......
  • 【jQuery】smartMenu右键自定义上下文菜单插件(似web QQ)
    DEMO: http://sources.ikeepstudying.com/menu-mail-qq/ 一、这是什么样的一个插件我们都知道,默认状态下,我们右键web页面,会出现一个上下文菜单,例如下图:【jQuery】smartMenu右键自定义上下文菜单插件(似webQQ)但是,浏览器默认的右键选项有时候并不是我们所需要的,......
  • mysql设计菜单树表
    实现MySQL设计菜单树表作为一名经验丰富的开发者,我将向你介绍如何在MySQL中设计和实现菜单树表。在本文中,我将逐步向你展示每个步骤,并提供相应的代码示例和注释。步骤概述下面是实现MySQL设计菜单树表的步骤概述:步骤描述1创建菜单表2添加父菜单列3添加子菜单......