编辑导语:表单在很多工作和项目中都会用到,在一个项目中,会涉及到大量的数据、信息等等,这时候用表单进行记录是很重要的;本文作者详细的介绍了在B端产品设计的工程中运用到的表单设计,我们一起来看一下。

人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力;1万小时的锤炼是任何人从平凡变成世界级大师的必要条件。——格拉德威尔《异类》

在过去几个月中,笔者一直在B端审核系统、流程管理系统、业务管理后台、电销系统中来回游走;下面将工作中积累的一些经验和思考梳理汇总,希望能够输出为有用的分享,得到更多的前辈指教与更多的同道交流。

初遇表单这个问题,往往会直接跳过,但是最近几次B端产品设计过程中,却深深感受到表单设计的痛苦。

现实情况是——绝大多数的企业员工往往把时间埋没在海量的表单中。

一、表单的使用场景

表单在B端产品中,是最为常见的一种信息展现方式;不论是传统行业还是泛互联网行业的产、销、供、管等场景中,都涉及到大量的业务信息和数据,表单是最为简单直观的表现载体。

表单的概念并非互联网原创,在传统行业中,纸质化的表单就占据了非常重要的工具地位;B端产品通过为表单增加属性,使得一个个任务表单能够在动作——状态机中流转,就能够实现业务的线上化开展和管理。

二、表单的基本结构

B端产品的表单,常常由以下三部分构成:列表、功能和搜索。

表单设计属于B端产品页面设计中的一种,在B端产品页面中,常见的信息元素都可以划分为:展示项和操作项。

在表单中,列表项常常被认为是展示项,功能和搜索归类为操作项;其中搜索又可以理解为一类特殊的操作——不对表单信息产生影响的独立操作。

1. 列表

列表是承载表单信息的主体,单一列表常展示某种状态或某几种状态的数据。

设计时注意以下三点:

1)提取信息展示的维度

列表由字段构成,但并非所有的信息字段都需要在列表中进行展示。

原则上,设计时需要调研并确定:业务上针对当前表单中,需要关注的信息维度。

例如在质检场景中,产品批次、抽样数量、业务员信息等,属于质检表单中应该呈现的信息;而其他更多与质检业务无关的产品属性则不需要体现和关注。

列表只展示当前页面使用者所需关注信息的最小集合——尤其是当内容不同时会引起用户不同操作的字段,应该给出更高的展示优先级。

2)注意排序条件和分页

常见的列表排序维度有:时间维度、处理优先级维度等。

时间维度常常使用的是列表中数据生成的时间,例如订单列表中,可以依据订单生成的时间顺序展示订单;这种设计便于用户先处理创建时间早的任务,符合现实中先到先处理的逻辑,避免压单或超时。

处理优先级维度,是指系统依据一些限定条件,为列表任务增加了优先级属性,例如处理人员相同时,可以为vip客户的订单提高处理优先级,在列表中较前的顺序展示,保证先被受理,提升客户体验。

3)设计技巧

列表表头除了展示字段名称信息之外,本身也可以扩展一些排序的属性,例如当列表默认为依据“创建时间”顺序排列时,可以增加一个这样的设计:点击“创建时间”的列名,即可将列表切换为倒序排列。

这一技巧可以很好的支持用户查看最新的列表数据,简单便捷且没有理解成本,在实际业务中非常有用。

此外,当列表需展示的字段较多时,也可以对相似的字段进行合并展示,例如:总处理量、待处理量和已处理量,这三个相似且有关联的字段,可以合并展示;在字段名中通过“/”分隔三个字段名,在列表数据中展示为”3000/1500/1500″,这样可以有效地缩小列表宽度、避免字段过多带来的杂乱感。

如果担心字段合并展示会引起用户误解,还可以在字段名后方展示“?”的提示图标,鼠标悬浮即展示字段信息说明,以达到消除误解的目的。

2. 功能

当表单中通过列表展示了用户需要关注和处理的信息后,还需要依赖一些表单功能,帮助和支持用户完成业务操作,实现B端工单正向、逆向以及异常状态下的处理流转。

1)列表功能围绕

增、删、改,3个方面设计。

常见的表单功能有:查看详情、处理、驳回/删除、转单、挂起、抽取/获取、追加数据等;可以根据用户在当前表单期望完成的动作进行选择,设计时,注意关键操作的二次确认机制,从设计角度降低用户误操作的概率,避免关键操作出现错误给业务带来的负面影响。

2)除了将表单功能独立于列表之外全局展示,还可以将功能与列表合并,在每一行列表数据后方展示对应可以进行的操作功能。

这种设计适合于同一表单中包含多种子状态的任务,且需要对不同子状态任务进行不同操作的业务场景。通过对功能生效范围的调整,灵活支持业务操作。

3. 搜索

搜索其实是对列表数据的查找,实际业务中,列表数据量级往往比较大,增设搜索功能,可以帮助用户快速找到目标数据。

1)搜索项的设计原则

在使用中,索引本身应该是0思考成本的,否则就失去了索引的核心价值。

围绕这一点,有两个设计时的原则:宁少勿多和高频前置——即不要揣测用户需要,而是实际调研,只设置有限的、会被真实使用的搜索项,并且最常使用的展示位置尽量靠前。

在搜索项的设计中,产品经理应当克制,数量超过10个的搜索项,使用起来就十分困难了。

2)当搜索项不可避免得比较多时,可以进行分类展示,降低寻找成本

常用的有两种分类方式:

①信息维度

常见的有列表信息自有属性维度的分类和任务属性维度的分类,例如:

  • 订单信息自有的属性包括:客户姓名、产品名称/编号、商品类别、价格范围、订单创建时间等;
  • 任务属性则包括:订单处理状态、处理人、处理时间、处理结果等。

②条件类别维度

例如可以按照时间类、名称类、状态类等将订单列表的搜索项分为:

  • 订单创建时间、订单失效时间、订单处理时间;
  • 客户姓名、处理人姓名、商家名称;
  • 订单状态、商品状态、订单处理状态等。

任何信息都是存在信息结构的,产品经理需要发现这些结构,并借助信息自有的结构进行组织设计,让信息本身说话。

3)两个注意要点:

  • 注意不同搜索条件之间的关联关系,可以利用条件联动,缩小用户选择的范围;例如必要时,产品分类和产品编号就可以设计为联动。
  • 搜索条件之间是交集的关系,注意不要逻辑重复,相同搜索结果的条件,只保留一个即可;例如产品名称和编号。

4. 基本结构的自定义延伸

在商业B端产品中,可以通过扩展自定义配置项,来适配不同企业、部门、业务的需要。

必要时,可以将表单列表字段、搜索项和操作项都设计为可配置,支持不同用户在一定范围内选择自己需要的信息、搜索条件;甚至可以自定义配置搜索项顺序,以及决定操作项的停/启用。

再延伸一些,可以将搜索项展示顺序设计为依据使用频率自动调整。

当然,在使用自定义设计中,要慎重而行,调研清楚必要性再做,避免杀鸡用了宰牛刀。

三、表单的权限设计

除了上述基本结构外,还需要理清表单权限。在权限设计中,常通过两个维度来考量:功能权限和数据权限。

B端产品的权限设计是相对独立也比较重要的一个模块,基于整个系统的权限体系。

在表单权限设计中,应注意:

1. 表单中功能的单一权限控制

功能项权限控制中,注意权限划分的粒度,配套使用的一组功能,可以通过一个权限统一控制,避免权限冗余,降低权限配置的复杂度。

例如:工单挂起与取消挂起,就可以统一控制。

2. 列表和搜索项的数据权限

通过数据权限区分不同主体、不同部门、不同业务线的列表查看范围,注意搜索时,也应保证数据权限划分有效,避免出现搜索时,列表查看范围扩大了的数据泄露风险。

四、关于表单设计的PRD如何写

常见的表单设计PRD组织方式有两种:

1. 针对单一表单逐项说明

针对单一表单,通过逐一说明列表、功能、搜索项和权限来组织PRD结构,可以清晰全面地将表单内容和逻辑描述清楚。

2. 多个同类表单,可以合并说明

实际工作中,由于常依据任务状态对表单进行拆分,涉及到一组表单的批量新增。

这种场景下,一组表单需展示的信息往往比较相似,在输出PRD时,可以先统一说明共性,再突出说明表单间的差异点。

例如:可以先统一说明该组表单中共有的列表字段、功能项和搜索项,再针对有差异的表单单独说明特有功能——如此,可以提高PRD的输出效率,避免重复信息分散PRD读者的注意力,便于技术人员理解和把控需求。

本文由 @非鱼 翻译发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

yii2表单数据检查怎么自定义输出错误_B端产品日记——表单设计相关推荐

  1. yii2表单数据检查怎么自定义输出错误_人人都熟知的AIDA模型,怎么结合GA进行用户分析?...

    AIDA模型我们都知道,但怎么结合自己的业务使用? 它将用户行为划分为了5个阶段: 注意或意识 利益 欲望 行动 留存 为了分析整个用户旅程中的行为变化,我们通常会去监测相关的用户接触点. 但仅仅是数 ...

  2. PHP获取表单数据的方法有几种,如何实现PHP获取表单数据与HTML嵌入PHP脚本

    如何实现PHP获取表单数据与HTML嵌入PHP脚本 导语:如何实现PHP获取表单数据与HTML嵌入PHP脚本,下面是小编给大家提供的操作讲解,大家可以参考阅读,更多详情请关注应届毕业生考试网. 常用的 ...

  3. python获取表单数据的代码_使用flask和python从html表单获取表单数据

    我正在尝试在按下submit时从文本字段中获取表单数据,以便将其放入json格式并作为另一个页面访问json数据,该页面将是localhost:5000/info.每次我试图用request.form ...

  4. ajax异步提交 java_jquery ajax异步提交表单数据的方法

    使用jquery的ajax方法可以异步提交表单,成功后后台返回json数据,回调函数处理,可以不用刷新页面,达到异步的目的: 处理表单的数据可以用serialize()方法进行序列化,而如果提交的数据 ...

  5. html post请求 渲染,FastAPI框架入门 基本使用, 模版渲染, form表单数据交互, 上传文件, 静态文件配置...

    安装 pip install fastapi[all] pip install unicorn 基本使用(不能同时支持,get, post方法等要分开写) from fastapi import Fa ...

  6. android 生成多个表单,Android根据word模板文档将表单数据生成word文档的方案整理...

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 尝试的方案包括以下几种: freemarker 只能在java项目上运行,无法在Android项目上运行: poi 解析doc文件可 ...

  7. ajax提交form表单到php,ajax如何提交form表单数据?ajax提交form表单数据的方法介绍...

    对于form表单数据的提交,我们一般都会想到使用ajax提交,那么,ajax如何来提交form表单数据呢?接下来的这篇文章就来给大家来介绍关于ajax提交form表单数据方法,有需要的伙伴可以参考一下 ...

  8. 在BPM动态可配置表单中使用NoSQL技术可行性分析——通用流程化应用审批单设计思路(二)

    原业务流程平台审批单使用横向表纵向存储的思路,所有流程所使用的业务表单的数据都存在一张物理表中,表中每条数据记录包含Column定义和Value,Column所对应的字段信息,通过定义表来定义.这种做 ...

  9. 从数据传输的角度辨析表单设计时的 get 和 post 提交方法

    文章目录 前言 一.get 方法 1.1.get 方法对传输的字符数有限制 1.2.get 方法不具有保密性 1.3.get 方法不能传输非 ASCII 码的字符 1.4.get 方式提交数据被保存在 ...

最新文章

  1. Validation-jQuery表单验证插件使用方法
  2. Android FrameWork学习(二)Android系统源码调试
  3. 深度探索C++ 对象模型(5)-Initialization list(2)
  4. 【51Nod - 1344】走格子 (思维)
  5. 服务器每天产生1t文件,编写自己的服务器 - osc_popfjd1t的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. 2个JAVA程序能放在一起吗_求JAVA大神把2程序功能组合在一起
  7. 在Linux中如何使用gdb调试C程序
  8. 使用BeanPostProcessor为bean做后置处理
  9. 软件开发可行性分析规范
  10. duet二重奏hp_二重奏Duet Game pc版|二重奏电脑版下载_v1.7_9号软件下载
  11. 怎么运行element ui
  12. Azure kinect (五)人体跟踪器报错解决,第一次成功运行(持续更新中)
  13. php组合图片代码,使用php shell命令合并图片的代码
  14. Java中grabImage_JavaCV实现将视频以帧方式抽取
  15. wireshark 抓包使用教程
  16. latex 公式 (正式,非正式。编号,不编号)
  17. NFC与其他近距离通信技术的比较
  18. 题目描述 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待
  19. SpringSecurity启动器
  20. RabbitMQ原理解析

热门文章

  1. 遗传算法就是创造力的本质
  2. Android系统Google Maps开发实例浅析
  3. cent os 6 fdisk fat32
  4. Apache Mina 介绍
  5. ASP.NET MVC 1.0 NVelocityViewEngine
  6. resin3.1+apache2.2.8 整合(笔记)
  7. MySQL Workbench建表时 PK NN UQ BIN UN ZF AI Default 的含义
  8. 未比对上的bam reads 处理
  9. MySQL-mysql 8.0.11安装教程
  10. Oracle+jsp+Servlet的员工表的简单增删改查