兰亭妙微设计笔记:中后台系统里,树结构该怎么设计?

 
做中后台系统的设计师,几乎绕不开一个组件 —— 树。部门架构树、行政区划树、商品分类树、设备资产树…… 凡是有层级关系的数据,几乎都要靠树来承载。但树看着简单,真要设计好,里面的交互门道不少。兰亭妙微在多个 B 端项目中反复打磨过这一组件,这里把我们的经验梳理出来。

image.png

一、树结构适合用在什么场景?

首先要明确:我们说的树,是指由 "展开图标 + 文字标签" 构成的层级数据列表。它最核心的适用场景,是存在明确父子层级关系的数据—— 比如省→市→区县→街道,或者集团→分公司→部门→小组。
在实际界面中,树很少单独出现。它通常和右侧的数据列表配合使用:左侧是导航树,右侧是选中节点下的明细数据。比如选中 "广州市天河区",右侧列表就展示该区域下的设备或人员。这种 "左树右表" 的布局,是中后台最经典的模式之一。

image.png

二、展开折叠:点哪里展开?

树默认状态下通常是折叠的。用户要展开下级节点,点击哪里?这是最容易出错的地方。兰亭妙微在项目中总结了两种主流做法,选择的关键在于一个判断:树的每一级,是否都和右侧列表数据有直接关联?
第一种:点击整行展开 / 折叠。
当树中的非末级节点不直接对应右侧列表数据 —— 也就是说,只有点开最后一级(叶子节点),右侧列表才会显示实际数据 —— 这时可以让整行(图标 + 文字所在的整条记录)都成为热区,点击任意位置都能展开或折叠下级。
这种方式的优势很明显:点击区域大,用户不用小心翼翼地瞄准那个小小的三角图标,操作效率最高。兰亭妙微在大多数纯导航性质的树(比如纯行政区划选择)中,都优先采用这种方式。
第二种:只点击图标展开 / 折叠。
当树的每一级都直接和右侧列表数据关联 —— 比如点击 "广东省",右侧立刻显示广东省下的汇总数据;点击 "广州市",右侧切换为广州市的数据 —— 这时就不能让整行点击都触发展开折叠了。否则用户想选中某个节点看数据,结果点一下却把树展开了,意图完全错位。
这种情况下,应该把热区收窄到左侧的展开图标(三角或箭头)上:点击图标,只负责展开折叠;点击文字区域,则选中该节点,右侧列表同步刷新。两个动作各司其职,互不干扰。
判断用哪种方式,本质上是在回答一个问题:用户点击这一行的意图,是 "展开看子级",还是 "选中这个节点"? 搞清楚了,方案自然就出来了。

三、搜索:即时还是按钮?树形还是列表?

树的数据量一大,搜索就成了刚需。设计搜索时,兰亭妙微通常从两个维度做选择,组合出四种方案:
维度一:搜索触发方式。
  • 即时搜索:输入框一边打字,一边实时匹配出结果,不需要额外点 "搜索" 按钮。响应快,体验流畅,适合数据量中等、匹配逻辑简单的场景。
  • 按钮触发搜索:用户输入完毕后点击 "搜索" 按钮(或回车)才执行查询。适合数据量极大、实时搜索有性能压力的系统。
维度二:结果展示方式。
  • 保留树形结构:搜索结果仍然以树的层级呈现,命中节点的父级链会自动展开,方便用户理解这个结果在整个体系中的位置。
  • 只展示命中结果:搜索后树收起,只把所有匹配到的节点平铺列出来,不保留层级关系。适合用户目标明确、只想快速定位单个节点的场景。
两个维度交叉组合,就得到了四种方案。兰亭妙微的经验是:B 端系统数据量通常不小,"按钮触发 + 保留树形结构" 是最稳妥的默认选择;如果树的数据量不大、用户习惯模糊查找,可以升级为 "即时搜索 + 保留树形结构";只有在用户目标非常精准、层级关系不重要的情况下,才考虑 "只展示命中结果"。

四、层级太深怎么办?

最后说一个常见的坑。有同行在项目中遇到过这样的问题:树从省一直展开到设备,足足七级,设备数量多达上万台,还要在树上做授权操作。结果树加载慢、找东西累、批量操作更是灾难。
兰亭妙微的判断是:树不是万能容器,层级一旦超过四级,效率就会急剧下降。 更关键的是,树上不应该承载它不该承载的功能。像 "设备授权" 这种操作,本质上是设备管理的事,不应该塞进行政区划树里。
正确的做法是:树只保留它最擅长的事 —— 展示行政区划、组织架构这类纯层级导航;具体的数据操作(授权、配置、维护)放到右侧的列表里去做。数据量再大,可以引入角色体系,用 "一个角色对应一批设备" 的一对多关系,把逐台操作变成批量操作。
树的价值,是帮用户在复杂层级中快速定位方向。把方向导航和数据操作混在一棵树上,最后只会两头不讨好。

小结

设计树结构,说到底是三个判断:哪些数据该进树、点击热区划在哪里、搜索怎么配合数据量级。想清楚这三件事,一个好用的树基本就成型了。至于更花哨的交互 —— 拖拽排序、多选勾选、右键菜单 —— 都是在这三个基础之上的增量,别本末倒置。

兰亭妙微(蓝蓝设计)www.lanlanwork.com 是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的大数据可视化界面设计B端界面设计桌面端界面设计APP界面设计图标定制用户体验设计交互设计UI咨询高端网站设计平面设计,以及相关的软件开发服务,咨询电话:01063334945。

日历

链接

个人资料

蓝蓝设计的小编 http://www.lanlanwork.com

存档