首页 > 其他分享 >基于elementui的Tree虚线,实线绘制,以及懒加载,如图

基于elementui的Tree虚线,实线绘制,以及懒加载,如图

时间:2023-04-11 17:47:54浏览次数:34  
标签:node el authType 实线 domainName tree elementui Tree 515445641576227

 

加减号用的是阿里的矢量图标库。自行去下载  路径:

https://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2

 

<template>
  <div class="content-box">
    <div class="content-top-lable">系统设置</div>
    <div style="padding: 10px 10px;">
      <div style="margin-top: 10px;" class="container">
        <el-tree
            class="tree-line"
            :indent="0"
            node-key="id"
            ref="indexTree"
            :data="data"
            :load="loadNode"
            show-checkbox
            @check-change="handleCheckChange"
            lazy
        ></el-tree>
      </div>
    </div>
  </div>
</template>

<script>
const defaultListQuery = {
  pageNum: 1,
  pageSize: 10,
  keyword: ""
};

import "../icon/iconfont.css";

export default {
  data() {

    return {
      data: [],
      defaultProps: {
        children: 'children',
        label: 'label'
      },
    }
  },
  created() {
    this.getInitData();
  },
  methods: {
    handleCheckChange(data, checked, indeterminate) {
      //得到所有数据
      console.log(this.$refs.indexTree.getCheckedNodes())
      console.log(data, checked, indeterminate);
    },


    loadNode(node, reslove) {
      let that = this;
      if (node.level === 0) {
        reslove(that.data);
      }
      if (node.level >= 1) {
        this.loadNodeChildren(node, reslove);
      }
    },
    async loadNodeChildren(node, reslove) {
      let param = {
        categoryId: node.data.id,
        type: Number(this.cateTabActive)
      };
      let resArr = [];
      resArr.push({
        label: "新增了一条数据",
      });
      resArr.push({
        label: "新增了二条数据",
      });
      // 将得到的子节点,放进去
      this.$refs.indexTree.updateKeyChildren(resArr);
      return reslove(resArr);
    },
    async getInitData() {
      var list = [
        {
          "domainPath": "515445641576227/39873366667377",
          "domainType": "2",
          "domainName": "福山基地",
          "authType": 1,
          "domainId": 39873366667377
        },
        {
          "domainPath": "515445641576227/317724498412849",
          "domainType": "2",
          "domainName": "宝武碳业",
          "authType": 1,
          "domainId": 317724498412849
        },
        {
          "domainPath": "515445641576227/315760572644936",
          "domainType": "2",
          "domainName": "宝武智维",
          "authType": 1,
          "domainId": 315760572644936
        },
        {
          "domainPath": "515445641576227/236239410978728",
          "domainType": "2",
          "domainName": "马钢股份",
          "authType": 1,
          "domainId": 236239410978728
        },
        {
          "domainPath": "515445641576227/560527541336074",
          "domainType": "2",
          "domainName": "梅山基地",
          "authType": 1,
          "domainId": 560527541336074
        },
        {
          "domainPath": "515445641576227/301272106670337",
          "domainType": "2",
          "domainName": "湛江基地",
          "authType": 1,
          "domainId": 301272106670337
        },
        {
          "domainPath": "515445641576227/515445641576264",
          "domainType": "2",
          "domainName": "宝山基地",
          "authType": 1,
          "domainId": 515445641576264
        },
        {
          "domainPath": "515445641576227/367058992",
          "domainType": "2",
          "domainName": "测试基地",
          "authType": 1,
          "domainId": 367058992
        }
      ]
      for (let i = 0; i < list.length; i++) {
        var obj = {
          label: list[i].domainName,
          children: []
        }
        this.data.push(obj);
      }
    }
  }
}
</script>

<style lang="scss">
.tree-line {
  .el-tree-node {
    position: relative;
    padding-left: 16px; // 缩进量
  }

  .el-tree-node__children {
    padding-left: 16px; // 缩进量
  }

  // 竖线
  .el-tree-node::before {
    content: "";
    height: 100%;
    width: 1px;
    position: absolute;
    left: -3px;
    top: -26px;
    border-width: 1px;
    border-left: 1px solid #1867D6;
  }

  // 当前层最后一个节点的竖线高度固定
  .el-tree-node:last-child::before {
    height: 38px; // 可以自己调节到合适数值
  }

  // 横线
  .el-tree-node::after {
    content: "";
    width: 24px;
    height: 20px;
    position: absolute;
    left: -3px;
    top: 12px;
    border-width: 1px;
    border-top: 1px solid #1867D6;
  }

  // 去掉最顶层的虚线,放最下面样式才不会被上面的覆盖了
  & > .el-tree-node::after {
    border-top: none;
  }

  & > .el-tree-node::before {
    border-left: none;
  }

  //收起的图标
  .el-icon-caret-right:before {
    font-size: 18px;
    color: #1867D6;
    content: "\e6fb" !important;
    font-family: "iconfont" !important;
  }

  //展开的图标
  .el-tree-node__expand-icon.expanded.el-icon-caret-right:before {
    font-size: 18px;
    content: "\e6fd" !important;
    color: #1867D6;
    font-family: "iconfont" !important;

    &.is-leaf {
      color: transparent;
      // display: none; // 也可以去掉
    }
  }

  // 最后没有子节点不展示图标
  .el-tree-node__expand-icon.is-leaf::before {
    background: #fff;
    content: '' !important;
    font-family: '' !important;
    display: block;
    width: 0px;
    height: 0px;
    font-size: 16px;
    background-size: 16px;
  }

}
</style>
View Code

 

标签:node,el,authType,实线,domainName,tree,elementui,Tree,515445641576227
From: https://www.cnblogs.com/Ifyou/p/17307054.html

相关文章

  • el-tree 的样式修改之旅
    原始样式如下图:  我想要实现的样子如下图:  首先分析一下想要实现的效果图:1,想要从原始效果到效果图的样子都需要修改那些地方  2,都涉及到那些样式问题其次简要说一下本人在实践中都遇到了那些样式问题:1,修改el-tree中checkbox选中时......
  • 修改el-tree checkbox和文字大小
    原始效果: 需求描述:默认效果如上图,想改变复选框的大小,方便使用者勾选,需要修改el-tree checkbox和文字的大小<el-checkboxclass="el-checkbox"label=""v-model="item.check"></el-checkbox>主要代码是css:.el-checkbox{zoom:130%;//适配谷歌......
  • elementUI input只能输入数字、小数的几种方法
    elementUIinput只能输入数字、小数的几种方法原文链接:https://blog.csdn.net/weixin_42397937/article/details/123297108elementUI文本框input设置仅可输入数字或者小数的几种方法一、设置type=“number”这个属性可以帮助我们限制文本框输入的文本只能是数字或者小数,但......
  • Git 工具 - 子模块: submodule与subtree的使用
    git日常使用中,基本都是一个项目一个Git仓库的形式,那么当我们的代码中碰到了业务级别的需要复用的代码,我们一般怎么做呢?比如:某个工作中的项目需要包含并使用另一个项目。也许是第三方库,或者你独立开发的,用于多个父项目的库。所以需要提取一个公共的类库提供给多个项目使用,但是......
  • nvim-treesitter coc.nvim
    PSC:\Users\dev\AppData\Local\nvim-data\plugged\nvim-treesitter\parser>lsdbash.socpp.sodockerfile.sohtml.solatex.soninja.sorust.sotypescript.soc.socss.sodot.sojava.sollvm......
  • Voilà, la rentrée
    Samedi8avril2023Enfin surlesolchinois aprèsquatreansetneufmois !Jen’aipaspleurélorsquejesuispartieduLuxembourg,enfaitilyaeutropàfaireetjen’aipaseuletemps.C’estunvoyagelong :noussommespartislemercredi,5......
  • ARC130D ZigZag Tree 题解
    题目链接考虑这棵树在满足条件下是什么样子的?我们发现如果对于一棵树黑白染色,白色表示周围的点大于自身,黑色的点反之,是满足条件的。同时,将黑白点反色也是满足条件的。我们考虑进行\(\text{dp}\),设\(dp_{i,j,0/1}\)表示以点\(i\)为根的子树,\(i\)点权值的排名是\(j\),且......
  • elementui table 禁用部分多选框
    //禁用多选checkboxT(row){if(row.bomDetailParentId==0){returntrue;//禁用}else{returnfalse;//不禁用}},<el-table-columntype="selection"width="55"......
  • POJ - 2029 Get Many Persimmon Trees(暴力水题)
    题目大意:给你一个矩阵,矩阵上面有N个柿子树,现在要求你画一个s*t的矩阵,使得这个矩阵内的柿子树达到最多解题思路:100*100,直接暴力#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;constintN=110;intn,w,h,s,t;intmap[N][N];voidin......
  • B-tree
    在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binarysearchtree),可以拥有多于2个子节点。与自平衡二叉查找树不同,B树为系统大块数据的读......