uniapp 树形层级选择器插件 ba-tree-picker

ba-tree-picker是一款用于移动端的树形选择器组件,支持单选、多选和父级选择。它可以自定义显示状态、样式,并提供了丰富的属性配置,如数据源、值键、文本键等。用户可以通过简单的API调用来显示和隐藏选择器,监听选择变化。组件的数据格式要求每个节点包含id和name字段,且支持多层嵌套。此外,源码开放,允许用户根据需求进行逻辑修改。
摘要由CSDN通过智能技术生成

简介(下载地址

ba-tree-picker 是一款 树形层级选择器插件,使用的picker弹窗形式的,样式和比例参照uniapp的picker和uni-data-picker组件

  • 支持单选、多选、父级选择
  • 支持Object对象属性自定义映射
  • 支持显示全部选中、部分选中、未选中三种状态
  • 支持快速自定义简单样式(分割线、按钮、标题等),深入样式可复写css

截图展示

在这里插入图片描述

使用方法

script 中引入组件

	import baTreePicker from "@/components/ba-tree-picker/ba-tree-picker.vue"
	export default {
		components: {
			baTreePicker
		}

template 中使用组件

	<ba-tree-picker ref="treePicker" :multiple='false' @select-change="selectChange" title="选择城市"
		:localdata="listData" valueKey="value" textKey="label" childrenKey="children" />

script 中定义打开方法,和选择监听

		methods: {
			// 显示选择器
			showPicker() {
				this.$refs.treePicker._show();
			},
			//监听选择(ids为数组)
			selectChange(ids, names) {
				console.log(ids, names)
			}
		}

template 中调用打开

	<view @click="showPicker">调用选择器</view>

源码已提供,逻辑可自定义修改

比如,这版设计的是,如果子集都被选,只返父id,如果需要所有子集id都返回的逻辑,在源码中修改一下selectedList的相关逻辑就行(如下)

        _confirm() { //多选
            let selectedList = [];
            let selectedNames;
            this.treeList.forEach((item, index) => {
                if (item.checkStatus === 2) {
                    selectedList.push(item.id);
                    selectedNames = selectedNames ? selectedNames + ' / ' + item.name : item.name;
                }
            })
            this._hide()
            this.$emit("select-change", selectedList, selectedNames);
        },

如果需要只返回子集Id,如上修改后,再修改下判断,如下:

    if (item.checkStatus === 2 && item.isLastLevel)//判断条件改为

属性

属性名类型默认值说明
localdataArray[]源数据,目前支持tree结构,后续会考虑支持扁平化结构
valueKeyStringid指定 Object 中 key 的值作为节点数据id
textKeyStringname指定 Object 中 key 的值作为节点显示内容
childrenKeyStringchildren指定 Object 中 key 的值作为节点子集
multipleBooleanfalse是否多选,默认单选
selectParentBooleantrue是否可以选父级,默认可以
titleString标题
titleColorString标题颜色
confirmColorString#0055ff确定按钮颜色
cancelColorString#757575取消按钮颜色
switchColorString#666节点切换图标颜色
borderBooleanfalse是否有分割线,默认无

数据格式

注意:必须有id、name(id可通过valueKey来配置为其它键值,如value)字段,且唯一

[
    {
        id: 1,
        name: '公司1',
        children: [{
            id: 11,
            name: '研发部',
            children: [{
                id: 111,
                name: '张三',
                
            },{
                id: 112,
                name: '李四',
                
            }]
        },{
            id: 12,
            name: '综合部',
            
        } ]
    },
    {
        id: 2,
        name: '公司2',
        children: [{
            id: 21,
            name: '研发部',
            
        },{
            id: 22,
            name: '综合部',
            
        },{
            id: 23,
            name: '财务部',
            
        }, ]
    },
    {
        id: 3,
        name: '公司3'
    },
    {
        id: 4,
        name: '公司4',
        children: [{
            id: 41,
            name: '研发部',
            
        }]
    }
]

方法

方法名参数默认值说明
_show()显示选择器
_hide()隐藏选择器

系列插件

图片选择插件 Ba-MediaPicker文档

图片编辑插件 Ba-ImageEditor文档

文件选择插件 Ba-FilePicker文档

应用消息通知插件(多种样式,新增支持常驻通知模式) Ba-Notify文档

应用未读角标插件 Ba-Shortcut-Badge文档

应用开机自启插件 Ba-Autoboot文档

扫码原生插件(毫秒级、支持多码)Ba-Scanner-G文档

扫码原生插件 - 新(可任意自定义界面版本;支持连续扫码;支持设置扫码格式)Ba-Scanner文档

动态修改状态栏、导航栏背景色、字体颜色插件 Ba-AppBar文档

原生sqlite本地数据库管理 Ba-Sqlite文档

安卓保活插件(采用多种主流技术) Ba-KeepAlive文档

安卓快捷方式(桌面长按app图标) Ba-Shortcut文档

自定义图片水印(任意位置) Ba-Watermark文档

最接近微信的图片压缩插件 Ba-ImageCompressor文档

视频压缩、视频剪辑插件 Ba-VideoCompressor文档

动态切换应用图标、名称(如新年、国庆等) Ba-ChangeIcon文档

原生Toast弹窗提示(穿透所有界面、穿透原生;自定义颜色、图标 ) Ba-Toast文档

图片涂鸦、画笔 Ba-ImagePaint文档

pdf阅读(手势缩放、显示页数) Ba-Pdf文档

声音提示、震动提示、语音播报 Ba-Beep文档

websocket原生服务(自动重连、心跳检测) Ba-Websocket文档

短信监听(验证码) Ba-Sms文档

智能安装(自动升级) Ba-SmartUpgrade文档

监听系统广播、自定义广播 Ba-Broadcast文档

监听通知栏消息(支持白名单、黑名单、过滤) Ba-NotifyListener文档

全局置灰、哀悼置灰(可动态、同时支持nvue、vue) Ba-Gray文档

获取设备唯一标识(OAID、AAID、IMEI等) Ba-IdCode文档

实时定位(系统、后台运行、支持息屏)插件 Ba-Location文档

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
uniapp中,如果echarts图表遮挡了时间选择器,可以通过以下步骤解决: 1. 在wxml文件中,使用wx:if控制echarts图表的显示和隐藏。将echarts图表包裹在<ec-canvas>标签中,并设置id和canvas-id属性,如下所示: ```html <ec-canvas id="storeChart" canvas-id="storeChart" ec="{{ pieChart }}" wx:if="{{!showDate}}"></ec-canvas> ``` 2. 在时间选择器的关闭事件中,重新渲染echarts图表。在onClose方法中,设置showDate为false,并使用setTimeout延迟一段时间后重新渲染echarts图表,如下所示: ```javascript onClose() { this.setData({ showDate: false, }); setTimeout(() => { this.pieEchartsComponnet = this.selectComponent('#storeChart'); this.pieChart(); }, 0); }, ``` 通过以上步骤,可以实现在时间选择器弹出时隐藏echarts图表,在时间选择器关闭后重新渲染echarts图表,避免遮挡的问题。\[1\]\[3\] #### 引用[.reference_title] - *1* *3* [echarts层级过高遮挡其他组件问题](https://blog.csdn.net/weixin_45506717/article/details/128695491)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【持续更新】uni-app学习笔记](https://blog.csdn.net/qq285744011/article/details/122662633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值