element 实现el-tree无限级菜单

<template>
  <div class="app-container">
    <el-tree
      :data="treeData"
      :props="defaultProps"
      @node-click="handleNodeClick"
    >
      <template slot-scope="{ data }">
        <div style="width: 100%; display: flex; justify-content: space-between">
          <el-tooltip
            class="item"
            effect="dark"
            :content="data.storagename"
            placement="bottom-start"
          >
            <span
              style="
                width: 140px;
                overflow: hidden;
                text-overflow: ellipsis;
                white-space: nowrap;
              "
              @click="handleNodeClick(data)"
              >{{ data.storagename }}</span
            >
          </el-tooltip>
        </div>
      </template>
    </el-tree>
  </div>
</template>
<script>
export default {
  components: {
    Aadd,
    Moeid,
  },
  data() {
    return {
      data: [
        {
          dept: 49,
          id: 36,
          level: 1,
          pid: 0,
          queue: "档案室",
          storagename: "市局档案室",
        },
        {
          dept: null,
          id: 37,
          level: 2,
          pid: 36,
          storagename: "1-1-1",
        },
         {
          dept: 49,
          id: 38,
          level: 1,
          pid: 0,
          queue: "档案室",
          storagename: "1111",
        },
         {
          dept: 65,
          id: 39,
          level: 1,
          pid: 0,
          queue: "档案室",
          storagename: "bbbbbbbb",
        },
      ],
      defaultProps: {
        children: "children",
        label: "name",
      },
    };
  },
  created() {
    // this.init();
  },
  computed: {
   //核心部分
    treeData() {
      //  console.log( this.data)
      let cloneData = JSON.parse(JSON.stringify(this.data)); // 对源数据深度克隆
      return cloneData.filter((father) => {
        let branchArr = cloneData.filter((child) => father.id == child.pid); //返回每一项的子级数组
        branchArr.length > 0 ? (father.children = branchArr) : ""; //如果存在子级,则给父级添加一个children属性,并赋值
        return father.pid == 0; //返回第一层
      });
    },
  },
  methods: {
    handleNodeClick(data) {
      console.log(data);
      // this.dataObj = data;
    },
  },
};
</script>
<style scoped>

</style>

效果图:

  //仅供学习使用如有雷同,,纯属虚构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太空游走的鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值