字段行为
说明
什么是字段行为
字段行为是指在表单中赋予字段(必填、只读、隐藏)的属性
字段行为脚本
字段行为脚本可以让字段行为拥有更强大的配置。字段行为脚本可以在字段行为的配置中添加:
触发字段行为
配置完字段行为可以在以下表单中生效:
Script Params
能够在脚本中直接使用以下参数:
名称 | 类型 | 说明 |
---|---|---|
itemId | String | 事项 id |
item | ItemJSONObject | 事项的数据 |
transition | String | 工作流动作 |
currentState | String | 当前状态 |
user | User | 用户信息 |
screen | String | 界面类型,view,create,edit |
workspace | String | 空间Id |
workspaceKey | String | 空间key |
itemTypeId | String | 事项类型id |
roles | Role[] | 系统角色 |
workspaceRoles | WorkspaceRole[] | 空间角色 |
根据提供的参数,配合系统提供的函数能力, 然后最终返回出相应的字段行为(required
、readonly
、hidden
)
Api Reference
getScreen
获取界面数据
参数定义:
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
screenId | String | 是 | 界面的id |
返回:
ScreenObject - 界面数据
interface ScreenObject {
objectId: ObjectId;
name: string;
customFieldKeys: string[];
}
用法:
const screenData = await apis.getScreen(screenId);
return {
required: screenData.name === '空间名称',
readonly: false,
hidden: false
}
getUsers
通过用户名查询用户
参数定义:
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
users | String[] | 是 | 用户名数组 |
返回:
SimpleUser[] - 简单的用户数据
interface SimpleUser {
id: string;
username: string;
}
用法:
const users = await apis.getUsers(['milo', 'onion', 'osc-admin']);
const isMatch = !!users.find(u => u.username === user.username );
return {
required: isMatch,
readonly: false,
hidden: false
}
getItem
获取卡片信息
参数定义:
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
itemId | String | 是 | 事项id |
返回:
ItemObjectProps - 事项数据
用法:
const itemData = await apis.getItem(itemId);
return {
required: itemData?.statusName === '已关闭',
readonly: false,
hidden: false
}
getWorkflowIdByItemId
根据事项id获取工作流
参数定义:
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
itemId | String | 是 | 事项id |
返回:
Workflow - 工作流数据
用法:
const workflow = await apis.getWorkflowIdByItemId(itemId));
return {
required: workflow?.name === '系统默认工作流',
readonly: false,
hidden: false
}
getRolesByUserId
获取用户角色
参数定义:
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
userId | String | 是 | 用户Id |
返回:
Role[] - 用户系统角色
用法:
const roles = await apis.getRolesByUserId(user.objectId);
const notMatch = !roles.find(role => role.name === 'QA' );
return {
required: false,
readonly: notMatch,
hidden: false
}