elementUI el-tree动态菜单加静态菜单

elementUI el-tree动态菜单加静态菜单 懒加载

先来看一下要实现的效果图:
elementUI el-tree动态菜单加静态菜单_第1张图片
目前我们有两个接口,一个获取动态菜单,一个获取静态菜单,利用懒加载实现效果图,步骤如下:
首先,我们需要先拿到动态菜单;
然后,遍历动态菜单,拿到最底层的菜单;
然后,通过最底层菜单的id获取静态菜单;
最后,赋值进去。

下面直接上代码:
HTML部分:

    <el-tree
        :data="treeData"
        node-key="id"
        ref="tree"
        :load="loadNode"   //懒加载
        lazy     //懒加载
        :default-checked-keys="elTree"
        highlight-current
        :props="defaultProps"
        @node-click="handleNodeClick"   //节点点击事件
        class="el_tree"
      ></el-tree>

JS部分

    // 懒加载
    loadNode(node, resolve) {
      var nodeData = node.data;
      if (nodeData.level === 0) {    //当level=0 时,保留,取出children
        let children = nodeData.children;
        let tempData = [];
        children.forEach(function(item, index) {
          tempData.push({
            name: item.name,
            level: item.level,
            children: item.children,
            id: item.id
          });
        });
        resolve(tempData);
      }
      if (nodeData.level === 1) {      //当level=1 时,保留,取出children
        let children = nodeData.children;
        let tempData = [];
        children.forEach(function(item, index) {
          tempData.push({
            name: item.name,
            level: item.level,
            children: item.children,
            id: item.id,
            father:nodeData.name
          });
        });
        resolve(tempData);
      }
      if (nodeData.level >= 2) {    //当level>=2 时,调用接口,查到对应的静态菜单,存入数据中
        let tempData = [];
        let params = { classId: nodeData.id };
        let username = sessionStorage.getItem("user");
        let token = sessionStorage.getItem("token");
        this.$api.realTime
          .getCamera(params)
          .then(res => {
            let data = res.data;
            data.forEach(function(item, index) {
              tempData.push({
                name: item.rtmpId,
                level: 4,
                id: item.id,
                rtmp:item.rtmp +"?" +"username=" +username +"&rtmpId=" +item.rtmpId +"&token=" +token,
                address:nodeData.father+" "+nodeData.name
              });
            });
          })
          .then(function() {
            resolve(tempData);
          });
      }
    },

还有什么更简便的方法,欢迎评论分享!

你可能感兴趣的:(elementUI el-tree动态菜单加静态菜单)