el-tree方法的整理

1.点击树的文字不要收缩仅点击图标的时候收缩

expand-on-click-node:是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。

javascript 复制代码
  <el-tree
      :expand-on-click-node="false"
      :data="data"
      node-key="id"
      default-expand-all
      @node-drag-start="handleDragStart"
      @node-drag-enter="handleDragEnter"
      @node-drag-leave="handleDragLeave"
      @node-drag-over="handleDragOver"
      @node-drag-end="handleDragEnd"
      @node-drop="handleDrop"
      draggable
      :allow-drop="allowDrop"
      :allow-drag="allowDrag"
    >
    </el-tree>

2.当前选中样式自定义

设置 :highlight-current="true" 从而高亮当前选中节点

javascript 复制代码
.catalog-tree .el-tree-node:focus > .el-tree-node__content {
  background-color: #f0f5ff !important;
  color: #409eff !important;
}

.catalog-tree  .el-tree-node.is-current > .el-tree-node__content {
  background-color: #f0f5ff !important;
  color: #409eff !important;
}

.catalog-tree为给树形结构自定义的类名

javascript 复制代码
 <el-tree
        class="catalog-tree"
        :data="treedata"
        :props="defaultProps"
        node-key="id"
        default-expand-all
        :expand-on-click-node="false"
        :highlight-current="true"
        draggable
        :allow-drop="allowDrop"
        :allow-drag="allowDrag"
      >

3.el-tree 动态指定默认选中节点

核心代码
highlight-current 高亮选中节点
:current-node-key="current" 自定义current变量,存储默认选中节点对应的key值
v-if="current" 因是动态绑定,最开始current为空,所以需在current有值后,才渲染 el-tree

javascript 复制代码
 mounted() {
  this.current = '对应想要赋值的id'
},

4.el-tree 指定当前选中节点样式,点击时focus样式,hover时样式

javascript 复制代码
/* 点击样式 */
.catalog-tree .el-tree-node:focus > .el-tree-node__content {
  background-color: #FFFFFF;
  color: #606266;
}

/* hover */
.catalog-tree .el-tree-node__content:hover{
  background-color: #f0f5ff !important;
  color: #409eff !important;
}
/* 当前选中节点 */
.catalog-tree .el-tree-node.is-current > .el-tree-node__content {
  background-color: #f0f5ff !important;
  color: #409eff !important;
}

5.tree点击节点时让其选中指定节点,在tree上添加自定义的选中节点

javascript 复制代码
 <el-tree
          v-if="current!=''"
          ref="mulutree"
          :current-node-key="current"
          class="catalog-tree"
          :data="treedata"
          :props="defaultProps"
          node-key="id"
          :expand-on-click-node="false"
          :default-expand-all="true"
          draggable
          :allow-drop="allowDrop"
          :allow-drag="allowDrag"
          @node-click="handleNodeClick"
        >
          <div class="catalogue-tree-node" slot-scope="{ node, data }">
            <div class="headlineText">{{ node.label }}</div>
            <el-popover
              placement="bottom"
              trigger="click"
              popper-class="fuwenbenCustomPopper"
              :ref="'popover-' + node.level + '-' + node.id"
            >
              <div style="text-align: left">
                <div class="sectionSet" @click="appendSiblingTree(node, data)">
                  添加同级章节
                </div>
                <div class="sectionSet" @click="appendTree(node, data)">
                  添加子章节
                </div>
                <div class="sectionSet" @click="setTreeName(node, data)">
                  章节设置
                </div>
                <div
                  class="sectionSet"
                  @click="exportToDocx('child', node, data)"
                >
                  下载章节
                </div>
                <div class="sectionSet" @click="removeTree(node, data)">
                  删除
                </div>
              </div>
              <div slot="reference" class="catalogueEdit">
                <i class="el-icon-more"></i>
              </div>
            </el-popover>
          </div>
        </el-tree>
 methods: {
    handleNodeClick(data,Node) {
      // 点击树形结构节点
      this.current = ""
      this.current = 1754462696445;
      this.$refs.mulutree.setCurrentKey(1754462696445)
    },
}

6.给el-tree目录前面加序号 带层级关系的 1.1.1 1.1.2 2.1.1 .等等

效果如下:

代码如下:

javascript 复制代码
<el-tree
  :data="treeData"
  node-key="id"
>
  <div class="catalogue-tree-node" slot-scope="{ node, data }">
  	 {{ getLevelIndex(node) }}//这里调用方法
     {{ node.label }}
  </div>
</el-tree>


methods: {
    getLevelIndex(node) {
      const getIndexPath = (node) => {
        if (!node.parent) return [];
        const parentPath = getIndexPath(node.parent);
        const currentIndex =
          node.parent.childNodes.findIndex((n) => n.data.id === node.data.id) +
          1;
        return [...parentPath, currentIndex];
      };

      let index = getIndexPath(node).join(".");
      return index;//没有层级限制,多少层都可以用
    },
}

7.el-tree目录前面加元素索引

效果如下:

代码如下:

javascript 复制代码
<el-tree
  :data="treeData"
  node-key="id"
>
  <div class="catalogue-tree-node" slot-scope="{ node, data }">
  	 {{ getLevelIndex(node) }}//这里调用方法
     {{ node.label }}
  </div>
</el-tree>


methods: {
    getLevelIndex(node) {
     // 获取当前节点在同级中的索引,从1开始
       return node.parent ? node.parent.childNodes.findIndex(n => n.data.id === node.data.id) + 1 : 1
    },
}
相关推荐
AI浩5 小时前
【Labelme数据操作】LabelMe标注批量复制工具 - 完整教程
运维·服务器·前端
涔溪5 小时前
CSS 网格布局(Grid Layout)核心概念、基础语法、常用属性、实战示例和进阶技巧全面讲解
前端·css
2401_878454536 小时前
浏览器工作原理
前端·javascript
西陵6 小时前
为什么说 AI 赋能前端开发,已经不是选择题,而是必然趋势?
前端·架构·ai编程
by__csdn7 小时前
Vue3 setup()函数终极攻略:从入门到精通
开发语言·前端·javascript·vue.js·性能优化·typescript·ecmascript
天天扭码7 小时前
前端如何实现RAG?一文带你速通,使用RAG实现长期记忆
前端·node.js·ai编程
一条可有可无的咸鱼8 小时前
企业招聘信息,企业资讯进行公示
java·vue.js·spring boot·uni-app
Luna-player8 小时前
在前端中,<a> 标签的 href=“javascript:;“ 这个是什么意思
开发语言·前端·javascript
lionliu05198 小时前
js的扩展运算符的理解
前端·javascript·vue.js
小草cys8 小时前
项目7-七彩天气app任务7.4.2“关于”弹窗
开发语言·前端·javascript