SelectBox 树状选择组件

废话不多说 先贴图 并附上Git地址

这里是git地址

树状选择效果图

在这里插入图片描述

列表多选效果图

在这里插入图片描述

开始废话

开发背景

众所周知,大部分企业的管理后台的开发离不开权限管理,一般来说,我们会分析各种权限把他们量化为资源,然后分配到各个角色/部门中,然后再给用户赋予各种角色或者挂载到各个部门。 如果权限设计的足够复杂,第三方UI常用的穿梭框等组件就不能完美的满足我们的需求,进而需要开发人员去根据需求,寻找多个组件组合使用。 但是,里面的业务逻辑万变不离其宗。 接下来 介绍一下笔者写的这款树状选择组件。
简单来说组件分为左右两个模块 左侧为选择树(例如 部门-角色树 用户-权限树)或者多选列表。 右侧为已选数据。 点击保存 会返回三个数据,依次为 本次修改新增的数组ID 本次修改删除的数组ID 以及 所选择的所有数据ID集合

最后给我的老东家打个广告,金现代企业股份有限公司做的项目真的不错,在里面带的一年里,成长很多,尤其在那里接触到了UML统一建模语言,对专业技能提升真的很大。在此感恩。

接下来是组件的使用文档

selectBox

使用方法

    // 首先把组件从git上down下来 然后引用到项目里,在项目里use一下
    import selectBox from "@/components/selectBox";
    Vue.use(selectBox);

Attributes

参数说明类型是否必填可选值默认值
allNode所有的节点数据Array[TreeNode]true[]
checkedNode已选择的节点Id集合Array[String]true[]
defaultProps配置选项,具体看下表Objectfalse
listStyle右侧展示方式类型Stringfalse‘tree’/‘list’‘tree’
boxDialogVisible是否展示弹出框Booleantruetrue/falsefalse
iconConfig图标配置(里面有必填属性,起名不准确,之后会改,是一个依赖项)iconConfigtrueiconConfig
title对话框标题Stringtrue“权限控制”
rightKey右侧列表显示所对应数据里面key的属性(本来默与左侧显示一样,但确实有不一样的场景,就很蛋疼)Stringfalse“name”
searchConfig搜索框配 见下表置ObjectfalsesearchConfig
indep树状图时叶子节点改变时,是否不与父节点产生关联Booleanfalsetrue/falsefalse

Events

事件名称说明回调参数
close当组件关闭时触发null
save点击保存时触发返回三个参数(addList,deleteList,checkedNode),依次为:本次修改后应该新增的Id数组,本次修改后应该删除的Id数组,本次修改后所有选中的数据集合

props

参数说明类型是否必填可选值默认值
label指定节点标签为节点对象的某个属性值string, function(data, node)true‘id’
children指定子树为节点对象的某个属性值stringtrue‘children’
disabled指定节点选择框是否禁用为节点对象的某个属性值boolean, function(data, node)true
isLeaf指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效boolean, function(data, node)true

TreeNode

参数说明类型是否必填可选值默认值
id默认的节点唯一标识,如果需要更改 请参照element-ui的tree组件的props属性,或者看上表Stringtrue
name左侧展示值,如果需要更改 请参照element-ui的tree组件的props属性,或者看上表Stringtrue
type节点类型,用来过滤父级节点Stringtrue
pid父节点ID,如果是根节点请设置为nullStringtrue

iconConfig

参数说明类型是否必填可选值默认值
parentType左侧为树状图时父节点图标配置Objecttrue{key:‘pre’,icon:‘el-icon-tree-rGroup’}
childrenType左侧为树状图时子节点图标配置Objecttrue{key:‘permission’,icon:‘el-icon-tree-role’}

在这里解释一下,组件里会根据父节点配置的key的值,与节点数据里面的type做对比,从而过滤掉选中的父节点。
因为很多业务场景下,右侧的列表只希望展示选中的子节点,
如果需要展示选中的父级节点,可以把parentType里面的key设置为空

searchConfig

参数说明类型是否必填可选值默认值
title其实就是placeholder啦~Stringfalse‘请输入’
http这是你项目中搜索所调用的接口,接受一个默认参数(params),需要返回一个TreeNode结构的集合Promisetrue
show是否显示搜索框,如果是false,其他的都可以不传Booleanfalsetrue/falsetrue
key搜索时用到的关键词Stringtrue‘name’
// 可能比较难理解,在这里演示一下 searchConfig,在项目里有demo 可以拉下来看一下
/** 
 *  例如你的调用查询接口为 this.$axios  ,且this.$axios接受一个参数 
    参数形式为 
    @params : data:{params:{key:value}}
    @key : searchConfig所配置的key
*/
const getData = params => {
    this.$axios(params).then(res=>{

    })
};
let searchConfig = {
   http:this.getData,
    key:'name'
}
笔者致力于开发遇到的各种复杂组件,虽说授人以鱼不如授人以渔,但是很多情况下我们是需要先恰饭的,所以先把鱼钓上来,希望帮各位刚上路的道友填饱肚子
以下是我所有组件开源的地址与博客 希望各位多点赞多star

前端组件集合文章
vue组件-echarts地图显示柱状图并添加点击事件文档
vue组件之仿钉钉自定义流程图组件文档
vue组件之树状选择器组件文档

Logo

前往低代码交流专区

更多推荐