组织机构树形列表实现

源码地址:https://www.lanzouw.com/itjDc1ydraof

本来上传了源码,但是发现只能VIP才能下载,所以重新上传到蓝奏云上了,链接如下:

先看下效果图:
在这里插入图片描述

  1. 可以自己写HTML来自定义每一项的内容显示,包括图中的图标等
  2. 可以监听行点击事件

主要是用xm-select.js组件做的一个树形列表

xm-select.js的说明文档:https://maplemei.gitee.io/xm-select/?select=1#/basic/disabled
更新:上面的链接访问不了了,可以直接下载文档到本地,然后打开index.html查看,Gitee文档地址

实现步骤:
4. HTML部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    	// 简单优化一下列表显示
        .xm-label.auto-row {
            display: none;
        }
		
		.level-icon {
		    width: 18px;
			height: 18px;
			margin-top: 9px;
			margin-right: 6px;
		}
		
		.xm-option-content:hover .org-toolbar {
			display: block;
		}
    </style>
</head>
<body>
<div id="demo1"></div>
</body>
<!-- 这个在附件里面 -->
<script src="xm-select.js"></script>
</html>
  1. JavaScript部分:
<script>
	// 生成一个树形列表
    var demo1 = xmSelect.render({
        el: '#demo1',
        radio: true,
        autoRow: true,
        tree: {
            //是否显示树状结构
            show: true,
            //是否展示三角图标
            showFolderIcon: true,
            //是否显示虚线
            showLine: true,
            //间距
            indent: 20,
            //默认展开节点的数组, 为 true 时, 展开所有节点
            expandedKeys: true,
            //是否严格遵守父子模式
            strict: false,
            //是否开启极简模式
            simple: false,
            //点击节点是否展开
            clickExpand: false,
            //点击节点是否选中
            clickCheck: true
        },
        theme: {
            color: '#b9fce2',
        },
		searchTips: '输入关键字搜索',
        model: {
            icon: 'hidden',
            type: 'relative', //默认 absolute
        },
        // 每一行的显示效果,加了图标
        template({ item, sels, name, value }){
			let htmlText = ''
		    if (item.level === 1) {
				htmlText = '<img src="level_1.png" class="level-icon"/>'
			} else if (item.level === 2) {
				htmlText = '<img src="level_2.png" class="level-icon"/>'
			} else if (item.level === 3) {
				htmlText = '<img src="level_3.png" class="level-icon"/>'
			} else if (item.level === 4) {
				htmlText = '<img src="level_4.png" class="level-icon"/>'
			} else if (item.level === 5) {
				htmlText = '<img src="level_5.png" class="level-icon"/>'
			} else {
				htmlText = '<img src="level_6.png" class="level-icon"/>'
			}
			
			if (item.level !== 1) {
				if (item.sync === 1) {
					htmlText += '<img src="sync_yes.png" class="level-icon"/>';
				} else {
					htmlText += '<img src="sync_no.png" class="level-icon"/>';
				}
			}
			
            return htmlText + item.name + '<div  style="width:30px;height:30px;background-color:red;display:none" class="org-toolbar"></div>'
        },
        filterable: true,
        height: 'auto',
        // 这个可以用ajax传过来
        data: function () {
            return [{
                name: '总公司',
                value: -1,
				level: 1,
                children: [{
                    name: '子品牌1',
                    value: 1,
					level: 2,
					sync: 1,
                    children: [{
                        name: '华南分公司',
                        value: -2,
						level: 3,
						sync: 0,
                        children: [
						{
                            name: '一级A1',
                            value: -3,
							level: 4,
							sync: 1,
                            children: [
							{name: '二级B1', value: 14, level: 5}, 
							{name: '二级B2', value: 15, level: 5},
							{name: '二级B3', value: 16, level: 5},
							]
                        }, 
						{name: '一级A2', value: 4, level: 4}, 
						{name: '一级A3', value: 5, level: 4}, 
						{name: '一级A4', value: 6, level: 4}
						]
                    }]
                }, 
				{name: '子品牌2', value: 2, level: 2}
				]
            }]
        },
        // 单击选中行的事件
        on: function (data) {
            if (isNotEmpty(data.arr)) {
            	// 选中行的数据
                data = data.arr[0]
                // 可以进行一些其他操作
            }
        }
    })
</script>

这个组件的功能还有很多,具体可以参考文档

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity树形列表搜索查询是指在Unity游戏开发中,通过使用树形结构的列表实现搜索功能。在游戏开发中,有时候需要对大量的数据进行搜索和查询,使用树形列表可以更高效地组织数据和实现搜索功能。 首先,要实现树形列表搜索查询,我们需要创建一个树形结构的数据模型。这个数据模型可以包含多个节点,每个节点都可以有子节点。通过递归的方式,我们可以遍历整个树形结构,找到需要的数据。 其次,我们需要实现一个搜索功能,让用户可以搜索树形列表中的数据。可以通过在界面上创建一个搜索输入框,让用户输入关键字。然后,通过遍历整个树形结构,找到包含关键字的数据节点,并将其显示在界面上。 为了提高搜索的效率,我们可以使用一些优化技巧。比如,可以使用字典来存储树形结构的数据,将节点的名称作为键,节点的引用作为值。这样,我们就可以快速地根据节点名称查找到对应的节点,而不需要遍历整个树形结构。 另外,我们还可以实现一些高级的搜索功能,比如过滤、排序等。通过在搜索输入框中输入特定的符号或关键字,可以实现树形列表的数据进行过滤或排序。这样,用户就可以更方便地查找和管理数据。 总的来说,Unity树形列表搜索查询是一种在游戏开发中常用的数据管理和搜索技术。通过构建树形结构的数据模型,我们可以高效地组织和查询大量的数据。同时,通过一些优化和高级功能的实现,可以使搜索更加快速和便捷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值