vue+element-ui el-select + el-tree下拉树形结构组件(新增多选功能且可以全选、反选、清空)

1,502 阅读1分钟

一、最终效果

在这里插入图片描述

二、具体HTML代码(详情请看源码)

<template>
  <el-select
    ref="select"
    v-model="selectValue"
    :multiple="multiple"
    :filter-method="dataFilter"
    @remove-tag="removeTag"
    @clear="clearAll"
    popper-class="t-tree-select"
    :style="{width: width||'100%'}"
    v-bind="attrs"
    v-on="$listeners"
  >
    <el-option v-model="selectTree" class="option-style" disabled>
      <div class="check-box" v-if="multiple&&checkBoxBtn">
        <el-button type="text" @click="handlecheckAll">全选</el-button>
        <el-button type="text" @click="handleReset">清空</el-button>
        <el-button type="text" @click="handleReverseCheck">反选</el-button>
      </div>
      <el-tree
        :data="options"
        :props="treeProps"
        class="tree-style"
        ref="treeNode"
        :show-checkbox="multiple"
        :node-key="treeProps.value"
        :filter-node-method="filterNode"
        :default-checked-keys="defaultValue"
        :current-node-key="currentKey"
        @node-click="handleTreeClick"
        @check-change="handleNodeChange"
        v-bind="treeAttrs"
        v-on="$listeners"
      ></el-tree>
    </el-option>
  </el-select>
</template>

三、参数配置

1、代码示例

<t-tree-select
  :options="treeList"
  placeholder="请选择tree结构"
  width="50%"
  :defaultData="defaultValue"
  :treeProps="treeProps"
  @handleNodeClick="selectDrop"
/>

2、配置参数(Attributes)继承 el-select 和 el-tree Attributes

参数说明类型默认值
optionstree 原始数据源Array
treePropstree 配置Objectel-tree props 默认值一样
checkBoxBtn是否显示全选、反选、清空操作(多选的情况下)Booleantrue
multiple是否开启多选Booleanfalse
width选择宽度(可以设置 px 或者%)String100%
defaultData单选默认值Object{}
defaultValue多选默认值Array[]

3、 events 继承 el-select 和 el-tree events

事件名说明返回值
handleNodeClick选中 tree 节点单选传出当前选择项;多选传出选中的集合。

四、组件地址

gitHub组件地址

gitee码云组件地址

五、相关文章

基于ElementUi或AntdUI再次封装基础组件文档


基于Element-plus再次封装基础组件文档(vue3+ts)