Open
Description
自定义字段
客服和管理员进行增删该查
JSON Format
名称 | 类型 | 必填 | 注释 |
---|---|---|---|
type | string | true | dropdown | multiSelect | text | multiLine | checkbox |
description | string | false | 字段描述(此字段并不会在自定义表单显示) |
title | string | true | 客服显示字段标题(同时也为字段名,跟 userTitle userDescription 对应) |
userTitle | string | true | 终端用户显示字段标题 |
userDescription | string | false | 终端用户显示字段描述 |
permission | string | true | 字段权限 editableForUser | readOnlyForUser | agentOnly |
requiredForSubmit | boolean | false (默认为 false) | 是否必填 |
active | Boolean | true (默认为 true) | 是否为激活(考虑到自定义工单使用自定义字段,所以不允许删除字段) |
creator | Pointer | true | 创建者,关联 _User 表的字段 |
createdAt | Date | true | 创建时间 |
updatedAt | Date | true | 更新时间 |
objectId | String | true | id |
Example
自定义字段可以使用部分字段可以使用自定义变量,数据库存储字段和 api 返回字段并不完全一致,api 的返回会增加编译后的字段。
自定义表单
客服和管理员进行增删该查
JSON Format
名称 | 类型 | 必填 | 注释 |
---|---|---|---|
name | string | true | 表单名称 |
userName | string | true | 终端用户显示的 form 表单名称 |
active | Boolean | true(默认为 true) | 是否为激活 |
creator | Pointer | true | 创建者,关联 _User 表的字段 |
createdAt | Date | true | 创建时间 |
updatedAt | Date | true | 更新时间 |
objectId | String | true | id |
Example
{
"name": "Snowboard Problem",
"displayName": "Snowboard Problem",
"userName": "{{dc.my_display_name}}",
"displayUserName": "Snowboard Damage",
"active":true,
"creator":{
"type":"Pointer",
"className":"_User",
"objectId":"605aeb3ee7580f00f741d0b9"
},
"createdAt":"2021-04-07T11:00:29.755Z","type":"checkbox","title":"22","active":true,
"updatedAt":"2021-04-07T11:00:29.755Z",
"objectId":"606d90cd475a4c5d46bf5322",
}
displayName displayUserName 字段并非数据库存储的字段而是 api 返回对 name userName 编译后的字段。
后续如果有需求会加入 conditions userConditions 在表单控制字段的权限以及其他约束。
自定义字段的权限如何设计?
自定义字段的权限包含
- 用户可编辑
- 用户只读
- 只限客服
- 必填
根据权限描述我们使用 role 进行控制, role:agent
代表客服 role:user
代表用户。必填只能单独控制。
自定义字段组成表单时可以调整字段权限,字段的权限并非最终权限而只是为组成表单的默认权限。
权限实际控制在自定义表单和自定义字段的中间表上。
中间表
名称 | 类型 | 必填 | 注释 |
---|---|---|---|
formId | string | true | 表单 id |
filedId | string | true | 字段 id |
permission | string | true | 权限 |
requiredForSubmit | boolean | true | 是否必填 |
index | number | true | 字段在表单的顺序 |
createdAt | Date | true | 创建时间 |
updatedAt | Date | true | 更新时间 |
objectId | String | true | id |
其中 acl
的值 必须与 permission
的值相对应。
ACL 与 permission 对应关系为
// 只限客服的字段 ACL -> agentOnly
{
"role:agent":{
write:true,
read:true
}
}
// 用户只读字段 ACL -> readOnlyForUser
{
"role:agent":{
write:true,
read:true
},
"role:user":{
write:false,
read:true
}
}
// 用户可编辑 ACL -> editableForUser
{
"role:agent":{
write:true,
read:true
},
"role:user":{
write:true,
read:true
}
}
如何存储自定义表单的值
使用 键值对
的方式进行存储,其中 key 为表单和字段的中间表 id,值为表单字段值。
具体方法为 扩展工单字段 extraFormData
类型为 object。
这种方法优点是简单 缺点是数据层面上没有做权限控制。
如何获取自定义表单结构以及如何渲染
获取表单的 json 数据描述,根据描述由客户端自由渲染。
实际数据结构根据 api 而定
Metadata
Metadata
Assignees
Labels
No labels