3. 申请表单设计:字段定义、必填项、动态表单、数据源绑定
表单设计这件事,说简单也简单,说复杂能让你改到怀疑人生。我在好几个项目里都见过这样的场景:上线前一天,业务方突然说「这个字段我们还要再加一个选项」——嗯,这时候你就知道,前期设计没做够。
申请表单是数据访问审批流程的入口。用户填得顺不顺,直接影响审批效率。今天我们就聊聊怎么把这个入口设计好。
3.1 字段定义:别让用户猜你要什么
字段定义的核心就一句话:让用户一眼就知道该填什么。我见过最离谱的表单,字段名叫「数据对象标识符」——业务人员看了直接懵掉。说白了,就是「你要查哪个表」。
字段定义要遵循几个原则:
- 命名要直白:用业务语言,别用技术术语。比如「申请原因」比「审批事由编码」好一百倍。
- 类型要匹配:日期就用日期选择器,枚举就用下拉框,别让用户手输。
- 长度要合理:我记得有一次,备注字段只给了50个字,用户写了一半就断了。后来改成了500字。
- 提示要到位:每个字段旁边加个问号图标,鼠标悬停显示示例或说明。
下面是我常用的字段定义模板,你可以直接拿来用:
| 字段名称 | 字段标识 | 数据类型 | 长度 | 说明 |
|---|---|---|---|---|
| 申请标题 | title | 字符串 | 100 | 简要描述本次申请内容 |
| 数据源 | datasource | 枚举 | - | 从已绑定的数据源列表中选择 |
| 申请原因 | reason | 文本 | 500 | 说明为什么需要这些数据 |
| 访问期限 | expire_date | 日期 | - | 数据访问的截止日期 |
| 审批人 | approver | 关联用户 | - | 由系统根据规则自动匹配 |
3.2 必填项:少一个都不让过
必填项的设计,其实是在「用户体验」和「数据完整性」之间找平衡。你想想看,如果所有字段都必填,用户填到一半可能就放弃了。但如果必填项太少,审批人拿到表单发现信息不全,又得退回重填——更浪费时间。
我的经验是:核心信息必填,辅助信息可选。哪些是核心信息?
- 申请主体:谁申请的、哪个部门、联系方式
- 数据范围:要访问哪些表、哪些字段、什么条件
- 合规依据:申请原因、审批人、有效期
我曾经在一个金融项目里遇到过这样的坑:申请表单里「数据脱敏方式」字段没设必填,结果审批通过后,运维人员不知道该怎么处理数据,又回头找申请人确认。一来一回,三天过去了。
3.3 动态表单:一个表单适配所有场景
不同数据源的申请要求可能完全不同。比如申请数据库访问,需要填表名和查询条件;申请文件访问,需要填文件路径和访问方式。如果为每种场景都设计独立表单,维护成本会爆炸。
动态表单就是解决方案。它的核心逻辑是:根据用户选择的数据源类型,动态展示对应的字段组。
实现方式其实不复杂:
- 定义字段组模板,每个模板包含一组字段定义
- 在数据源配置中关联对应的字段组模板
- 用户选择数据源后,前端根据关联关系加载对应的字段组
举个具体的例子:
// 字段组模板定义
{
"template_id": "db_access",
"name": "数据库访问",
"fields": [
{"key": "table_name", "label": "表名", "type": "text", "required": true},
{"key": "query_condition", "label": "查询条件", "type": "textarea", "required": false}
]
}
// 数据源配置
{
"datasource_id": "ds_001",
"name": "用户行为数据库",
"template_id": "db_access"
}
这样设计的好处很明显:新增一种数据源类型,只需要定义新的字段组模板,不需要改代码。我在一个项目中用这种方式管理了30多种数据源类型,维护成本极低。
3.4 数据源绑定:让表单活起来
数据源绑定,说白了就是让表单里的下拉框、单选按钮等选项,从数据库或接口实时获取数据。而不是写死在代码里。
为什么要这么做?因为业务数据是动态的。比如数据源列表,今天新增了一个,明天停用一个。如果写死在代码里,每次变更都要发版。你想想看,这得多麻烦。
数据源绑定的常见场景:
- 数据源选择:从已注册的数据源列表中选取
- 审批人选择:根据部门、角色动态获取可选的审批人
- 数据分类:从数据目录中获取分类标签
- 访问权限模板:从权限模板库中选取
实现方式一般有两种:
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 接口实时查询 | 数据最新,无需同步 | 依赖网络,响应可能慢 | 数据变更频繁的场景 |
| 缓存预加载 | 响应快,用户体验好 | 数据可能滞后 | 数据相对稳定的场景 |
我个人习惯的做法是:优先用缓存预加载,后台定时刷新。这样用户打开表单时秒级响应,数据也不会太旧。如果用户需要最新数据,可以手动刷新。
3.5 本章知识体系
下面这张图把申请表单设计的核心逻辑串起来了,你可以对照着回顾一下:
申请表单设计这件事,说到底就是让用户少动脑子、少犯错。字段定义清晰、必填项合理、动态表单灵活、数据源绑定实时——把这四点做好,你的表单就成功了一大半。