筛选功能,你会用吗?
为了帮助用户在海量的信息中快速定位,通常我们会提供一些工具来进行辅助,而这其中最重要的就有筛选功能,再加上网上相关总结不是很多。所以,这次我就来聊聊筛选的设计逻辑。
背景
看到标题,大家应该知道我要讲的主题了,再具体点就是介绍To B 系统列表的筛选功能。
最近在做的是 To B的医疗管理系统,不同的产品有它的业务特性。作为一款 SaaS 平台类产品,效率和一致性是产品核心竞争力之一。所以实际工作中,提升工作人员的效率和保持系统一致性是关注的重点。
对于To B类的产品,最多出现的就是表格,表格通常都会含有很多的数据项,不方便查看。
为了帮助用户在海量的信息中快速定位,通常我们会提供一些工具来进行辅助,而这其中最重要的就有筛选功能。再加上网上相关总结不是很多。所以,这次我就来聊聊筛选的设计逻辑。
筛选到底是什么
在介绍筛选的具体功能之前,我想先跟大家聊聊筛选到底是什么?
筛选,也就是Filter,更多的人也称它为过滤器,它属于搜索框架的一部分;主要用于内容提取,将一类数据展示,同时一类数据隐藏,可以整合很多的组件。
不过筛选也只是一类功能的称呼,并不是只要加上这块内容就能对用户产生实质性的帮助,更多的还是需要对当前所服务领域的理解以及对业务特性的辅助。
随着互联网的发展,筛选功能的使用也越来越被用户所了解。从设计形式上来看并没有特别大的差异,所以这次的分析将更着重于功能内部的部分。
功能的好坏不仅仅关乎其本身,更重要的要看是否为解决实际问题而服务。
既然我们今天聊的是一个 Design Pattern,那么我们需要先回归到问题的本质,先来思考一下筛选功能究竟解决的是什么问题?
究竟解决了什么问题
我们回到系统的角度,筛选的本质其实是是来帮助用户方便、快速的找到自己想要的信息。当然,仅仅到这一步是不够的,查找信息的目的是什么?解决什么问题呢?
有一个前提,就是我们的信息复杂既多层级又多维度,用户不能快速找到想要的信息,如果是很简单的信息,就没必要用到筛选了。
1. 使用场景
首先我们可以结合用户使用场景来进行思考 为什么会有这个功能。
从场景中来,到场景中去。
对于To B 产品,更多强调的是业务场景,是用户在他的职能角色下,需要做什么样的操作完成他的工作;而对产品外观、交互细节的偏好反而没那么重要。
筛选的使用场景主要有以下两种:
- 场景一:用户通过选择由系统定义的一些类型,获取相同特征的块状信息。这是主要的使用场景。比如说,在发药统计页面,药房老师想知道这一个月的发药明细条数。这时候,时间区间就可以做为一个筛选项了。
- 场景二:用户想获取单一信息,但没有关键字,通过筛选一些类型和特定字段进行辅助查找。比如说,血库老师想查找某一患者的用户记录,但不记得患者病历号,无法进行精确搜索,这时候就可以根据患者所在科室,患者状态,血液状态等特定类型进行筛选,帮助用户缩小查找范围。
2. 解决的问题
从上面的业务场景,得出筛选解决的问题是:提供指定条件下的一些类型,用户可以选择查看符合一类或多类条件下的内容,从而获得块状信息,从而进行进一步的整体分析。
对用户产生的价值是帮助用户缩小信息范围,提高查找的效率。
接下来结合一些工作中的示例,看看是如何应用筛选功能的。
哪些可以作为筛选项?
要想让用户使用他们,需要吸引用户的注意。为了显而易见,同时满足人的视觉习惯,筛选模块的位置常常呈现在列表、搜索结果页上部。
而且它在功能页面上的基本框架实际上都是一致的,只是在“如何做筛选”上会有一些差异。而这些差异很多是因为业务特性所产生的,接下来会展开讲。
用户想要什么?先弄清楚。别忘了你的出发点是解决用户需求。
前面说过筛选主要是获取块状信息,这是我们最常见的一对多关系。当进行筛选操作时,代表着选择一个条件,得出对应的多个结果。
我们也有提到一些特定字段,那么具体是哪些会作为筛选项呢?
1. 状态
B端业务复杂,使用系统的工作人员众多,角色分工也多。
如果要确定一条数据的状态变化节点,则要从角色关心数据的什么,关心到哪入手。节点的设定要结合实际的业务流程。还有就是有关联到系统数据变化的操作才能作为节点触发状态的变更。
举个医院血液闭环的例子:
一袋血从血站处发血到输给患者,血袋回收前,输血闭环的流程应该有:血站发血、入库——医生申请、审核——护士执行、打印、采集、送检——血库接收、筛查、配血、发血——护士接收、开始输血、复核输血、结束输血——血袋回收。
再细化到入库流程:一批血产品(产品种类和数量确定)在入库前用一个流转单号来记录它在仓库的流转状态,那么以输血科的视角来看,这个流转单号(这批血)的状态应该有:
- 已生成单号(初始状态);
- 待(已)接收;
- 待(已)入库。
状态的变化和完结节点的存在是为了完成任务的交接,让管理者可以追踪定责到具体环节。有关部门有更详细的工作流程和规范,管理上也更加细致,从而提高各环节的工作效率。所以状态是筛选的首选类型。
2. 日期
每个需求场景都是由事件触发的,对于事件的设计离不开时间选择,比如患者什么时候住院、医生什么时候开的申请单、什么时候审核、护士什么时候采血等等。
日期选择控件(选择器)是让用户在应用中选择(填入)日期或时间的一类控件。尤其是在B端产品中非常常见,主要用于数据筛选,一般作用于过去已发生事情;如查询一周内的订单量、过去一天的发血量等。
一般设计之前会跟用户聊一聊:
(1)日期选择器是用来做什么的?
“看性能数据,我希望可以方便地看到每个特定时间段的报告。”
(2)你是需要选择日期还是日期范围?
“日期范围,比如6小时内或者一周内这样的。”
(3)有比较常用的日期范围吗?
“嗯,我经常需要6小时段的数据,有时候也会用一个月内的数据。”
(4)只需要选择日期吗?还是具体的时间也要选择的?
“日期肯定是要的,时间也需要,不然我怎么选6小时内的数据?”
(5)关于日期选择器,目前您使用的产品有让您觉得体验不好的地方吗?
“我必须点击数据表中的页面,才能查看过去的报告。这挺麻烦的,不过我也习惯了。”
(6)你需要选择很久以前的日期吗?
“我有时候需要查看去年的数据,看看性能的变化。”
通过用户访谈,我们可以获取一些基本的信息,然后就开始构建日期选择器了。
一般会有以下几个特点:
- 一般起始日期和终止日期使用一个组件展示,因为B端用户有一定的知识积累,更加注重使用的效率,可以降低用户的操作成本和视觉成本(认知成本>操作成本>视觉成本)。
- 常用于对已过去日期的选择,此时不排除用户会先选择终止日期(因终止日期距离当前日期较近),根据终止日期倒推起始日期,因此点击不分先后,不会强制用户先点起始日期。
- 主要以提高效率为主(效率型),提高使用者的效率即是为企业节约成本。
举个例子:
比如输血记录页面,主要是发血后更新输血相关数据,便于输血科工作人员查看相关信息。
血液的筛查定型是有有效期的,为了加强用血安全,所以时间粒度会精确到秒,即日期时间选择器(年月日时分秒)。输血科每天都会有一定量的发血工作,为了避免数据量过大,以及方便观察输血后病人的情况,所以时间区间默认是过去一周。
3. 选择性的属性
由系统提供选项,用户通过选择的方式完成录入的属性类型被称为选择性属性,比如性别,是由系统提供的三个选项,男/女/不详,由用户来选择一个;地区也是由系统提供的地区信息,用户从中选择。
选择性属性是指用户的属性。用户属性是用户状态与标签的记录,由指定的事件赋值/更新,属性的最新值会伴随着之后的所有事件发送至平台。用户属性的定义来源不同,主要有选择性属性和自定义属性。简单点说,用户属性就是用户身上的标签。
与选择性的属性对应的是自定义属性,也就是由用户按照自己想法输入的内容,比如:姓名、病历号等等。
列表筛选项比较常见的就是选择性属性,因为列表的很多字段都是有属性的,属性一旦确定,基本上终身不变或者变更速度极慢,这也是作为筛选项的一个原因。同时,给用户选择的范围,而不是让用户自定义,会给用户一种确定性。
比如说,员工就有他的角色属性,是医生还是护士,所属的科室是哪一个。血产品的属性就有是否有效,血型,Rh(d)等等。
其实在各个需要帮助快速查找信息领域都可以见到类目属性体系的身影。比如:教育行业里面的课程分类,医疗行业的疾病和医院分类。当我们把用户查找的信息看做一个个实体的时候,对实体分类以帮助快速定位查找就是一个非常通用的方法。
4. 多条件筛选
(1)联动
当筛选项是多维度的时候,需考虑筛选项间的联动关系。并且在筛选的过程中给予用户及时的反馈。
联动主要是指应用程序用户界面上的控件之间发生互相关联的变化,这些控件包括下拉框、文本框、标签、菜单等。多级联动简称级联,参数级联查询是查询控件之间的一种互动方式,比如在某个下拉框选定选项后,另一个下拉框里的选项范围会随之变化。
也许有人还不知道级联查询是什么,那么我来解释一下。比如说我们在淘宝或者京东上要添加一个自己的收货地址,那么当我们选择省份的时候,它会自动将本省的城市列出来,当我们选择好市以后,它又会把该市所包含的区都列出来,这个效果就是级联查询。
比如,我们的系统是给多院区的机构使用的,那么医院的院区字段和科室字段,它们就是从属关系,不同的院区类型下对应的科室数据集是不同的。
整个机构下的数据量是很大的,为了提升工作效率,快速查询出某一科室下的数据。我们可以限制用户必须先筛选院区,系统会自动将该院区下的科室列表展示出来,再选择该院区下的科室。
(2)组合筛选
由m个不同的元素中取出n个并成一组,不论次序,其中每组所含成分至少有一个不同,所得到的结果叫做由m中取n个的组合。
组合筛选也就是从所有筛选项中选择多个条件进行组合,从而得到交集后的列表结果。
前面我们提过效率是To B 系统能力的一个核心指标。所以需要可以满足各种字段组合筛选查询。
比如下面这个患者综合查询功能下的实际场景:
主任医师:小黄你看下这个月我们科室的入院人数。
小黄:好的主任。
可能不到1分钟,小黄可以把这个数据汇报给主任。
但是,如果主任这样问呢?
主任医师:小黄你看下最近一周入院我们科室的干部病区,年龄在30-45岁区间的女性患者有多少人,列个名单给我
小黄:…..
综上对话得知,满足多字段(个人信息所有字段)组合筛选查询及导出,可帮助医生在各种场景根据需要快速得知一系列数据。
- 可查询现在有多少位在院患者
- 可查询干部病区有多少位女性在院患者
- 可查询干部病区30-45岁的女性在院患者有多少位
- 可查询干部病区的30-45岁的女性在院患者,且血型是A型的有多少位
- 可查询xx等等等等等…..包含个人信息都可以组合筛选查询及导出
总结一下,使用哪一种筛选形式取决于筛选逻辑、使用场景和列表的内容项本身,产品设计时,可以灵活运用。
最终目的都是让用户用某条件对内容进行区分(过程),从而找到用户想要的内容(目的)。
THE END
以上就是关于筛选功能的一些思考。总的来说,我们可以通过功能分析,从而加深对产品更深的理解。
明确输入和输出,倒推出用户的使用场景,进而得到用户的需求。
最后,希望大家保持思考,努力生活!
作者:Shinran,个人公众号:产品人Shinran ( pmshinran2020 )
本文由 @Shinran 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
组合筛选都没细化一下….
包含/任一/且/或/交集/并集…