1.0.9 • Published 8 months ago

qq-select-tree v1.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

qq-select-tree 组件说明

项目简介

  • 基于Element UI封装的树形下拉选择器组件
  • Element基础组件: Select、Option、Tree、Checkbox、Button、Loading、Message
  • Element基础组件样式:element-ui/lib/theme-chalk/index.css
  • 主要功能包括:树形下拉选择器的单选、多选、全选、清空、编辑、搜索、父子层级联动切换、最终输出数据切换等

注意点

  • nodejs版本 => v14.17.4
  • vue版本 => v2.6.11
  • element-ui版本 => v2.15.14
  • sass版本 => v1.26.5
  • sass-loader版本 => v1.26.5
  • 使用该组件时,必须先安装Element UI依赖并在入口文件main.js中引入(可按需引入)
  • Element UI必须组件为:Select、Option、Tree、Checkbox、Button、Loading、Message
  • Element UI必须样式文件为:element-ui/lib/theme-chalk/index.css
  • 示例(按需引入):
    import 'element-ui/lib/theme-chalk/index.css'
    import {Select, Option, Tree, Checkbox, Button, Loading, Message} from 'element-ui'
    const elements = [Select, Option, Tree, Checkbox, Button, Loading]
    for(let item of elements){
      Vue.use(item)
    }
    Vue.prototype.$message = Message

使用方式

  1. 安装依赖:

    npm install qq-select-tree --save
  2. 入口文件main.js中导入并使用

    import qqSelectTree from 'qq-select-tree'
    import 'qq-select-tree/lib/qq-select-tree.css'
    Vue.use(qqSelectTree)
  3. 具名文件中使用(案例)

    <qq-select-tree style="display: inline-block;width: 250px;" v-model="search.unitId" :checkStrictly="checkStrictly"
      showSubset isOnlySelected :options="companys" :defaultProps="defaultProps"
      @changeCheckStrictly="changeCheckStrictly" placeholder="请选择单位">
    </qq-select-tree>
    data() {
      return {
        search: {
          unitIds: [],  //多选
          unitId: ''    //单选
        },
        companys: [], //单位集合
        defaultProps: {
          children: 'children',
          label: 'unitName',
          value: 'unitId',
          disabled: true
        },
        parentValue: 'unitId',
        checkStrictly: false
      }
    },
    
    //同步父子是否关联情况
    changeCheckStrictly(val) {
      this.checkStrictly = val;
    },

技术说明

参数说明

Attributes
参数状态说明类型可选值默认值
value / v-model必传绑定值string/number/array
options必传选项的数据数组array
defaultProps必传配置选项,详见下表object
defaultNodeKey无复选框且有编辑功能时,必传无复选框编辑时回显的数据string/number
defaultValue有复选框且有编辑功能时,必传有复选框编辑时回显的数据(需更新checkStrictly状态,详见下文)array
appendToBody非必传是否将组件添加到body上面(组件在弹窗或者表格里面时可设为true)booleanfalse
filterable非必传是否可搜索booleantrue
disabledSelect非必传是否禁用下拉框booleanfalse
showCheckbox非必传节点是否可被勾选(是否开启复选框)booleantrue
showSubset非必传在显示复选框的情况下,是否开启切换父子关联功能的展示,如果开启,需同时定义 changeCheckStrictly 事件(详见下表)。booleanfalse
sunSetText非必传可切换父子关联功能的展示文字string'父子互相关联'
checkStrictly有复选框时必传在显示复选框的情况下,是否严格的遵循父子不互相关联的做法(有编辑功能时,defaultValue赋值前后需更新其状态,详见下文)booleanfalse(即:父子关联)
isOnlySelected非必传最终的输出数据是否只需要输出已勾选(不含半选)的项booleanfalse(即:父子(半选,勾选)都输出)
isCanDelete非必传回显的值是否可被删除booleantrue
placeholder非必传提示信息string请选择
errMessage非必传不可删除的提示信息string该选项不可被删除
showAllTreeNode非必传是否展开所有节点booleanfalse
defaultProps
参数状态说明类型可选值默认值
children必传指定子树为节点对象的某个属性值stringchildren
label必传指定节点标签为节点对象的某个属性值string, function(data, node)label
value必传有复选框时,必须指定当前数据对象的父级id(即:每个树节点用来作为唯一标识的属性,整棵树应该是唯一的)stringvalue
方法
方法名说明注意点参数
getCheckedNodes若开启复选框(即 showCheckbox 为 true),则返回目前被选中的节点所组成的数组需给 qq-select-tree 添加ref属性接收两个 boolean 类型的参数,1. 是否只是叶子节点,默认值为 false 2. 是否包含半选节点,默认值为 false
getCheckedKeys若开启复选框(即 showCheckbox 为 true),则返回目前被选中的节点的 key 所组成的数组需给 qq-select-tree 添加ref属性接收一个 boolean 类型的参数,若为 true 则仅返回被选中的叶子节点的 keys,默认值为 false
getCurrentNode获取当前被选中节点的 data,若没有节点被选中则返回 null需给 qq-select-tree 添加ref属性
getCurrentKey获取当前被选中节点的 key,使用此方法必须设置 node-key 属性,若没有节点被选中则返回 null需给 qq-select-tree 添加ref属性
Events
事件名称说明回调参数
changeCheckStrictly在显示复选框的情况下,开启切换父子关联功能的展示( showCheckbox 和 showSubset 均为true)时,切换父子关联功能时的回调共一个参数,参数为当前树的父子是否关联

编辑功能注意点

  • 有复选框且有编辑功能时, defaultValue 赋值前后需更新 checkStrictly 状态。
  • 示例(编辑功能时,获取defaultValue值):
    viewRole(id) {
      let data = new Object();
      data.roleId = id;
      this.checkStrictly = true;
      API.viewRole(data).then((res) => {
        this.defaultValue = res.data.authIds || [];
        setTimeout(() => {
          this.checkStrictly = false;
        },500)
      });
    },
1.0.9

8 months ago

1.0.8

8 months ago

1.0.7

8 months ago

1.0.6

8 months ago

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago