# 多业务部门协同处理同一个单子
# 概述
本功能用于实现表单不同部分由不同部门填写的协同编辑需求。例如员工只能编辑基本信息,人事部门只能编辑HR信息,财务部门只能编辑财务信息。
# 一、示例演示:员工档案多部门协同编辑
# 演示路径
- 访问地址:应用中心
- 模块名称:多部门协同编辑
# 业务处理效果
表单结构:
- 基本信息:联系电话、家庭住址、出生日期等(员工本人填写)
- HR信息:HRID、职级、入职日期等(人事部门填写)
- 财务信息:基本工资、合同类型等(财务部门填写)
三个编辑按钮:
- 编辑(自己):员工本人修改自己的信息
- 编辑(人事):人事部门填写HR信息
- 编辑(财务):财务部门填写财务信息
权限效果:
- 员工登录:仅“编辑(自己)”按钮亮起,打开表单后只有基本信息可编辑
- 人事部门登录:仅“编辑(人事)”按钮亮起,打开表单后只有HR信息可编辑
- 财务部门登录:仅“编辑(财务)”按钮亮起,打开表单后只有财务信息可编辑
- 本人且为人事部员工:同时亮起“编辑(自己)”和“编辑(人事)”两个按钮
# 二、实现方法
# 前台代码配置
文件路径:wwwroot\Apps\samples\MultiPartEdit.js
// 第40-54行:定义3个编辑按钮,使用不同的表单状态
me.btnEditSelf = me.createEditBtn({
text: '编辑(自己)',
formState: 'SelfEdit', // 表单状态:员工编辑
disableBehavior: 'disable' // 无权限时禁用按钮
});
me.btnEditHR = me.createEditBtn({
text: '编辑(人事)',
formState: 'HREdit', // 表单状态:人事编辑
disableBehavior: 'disable'
});
me.btnEditFinance = me.createEditBtn({
text: '编辑(财务)',
formState: 'FinanceEdit', // 表单状态:财务编辑
disableBehavior: 'disable'
});
// 第62-64行:将3个按钮添加到工具条
me.tbar = {
items: [
me.btnEditSelf,
me.btnEditHR,
me.btnEditFinance,
// ...其他按钮
]
};
代码说明:
- formState:指定按钮打开表单时使用的状态
- disableBehavior:无权限时按钮的行为,
disable表示禁用,hide表示隐藏
# 表单状态配置
文件路径:表单设计器 → 员工档案 → 高级页签 → 表单状态
每个表单状态配置可编辑的字段:
| 表单状态 | 可编辑字段 | 说明 |
|---|---|---|
| SelfEdit | 联系电话、家庭住址、出生日期 | 员工本人可编辑 |
| HREdit | HRID、职级、入职日期等 | 人事部门可编辑 |
| FinanceEdit | 基本工资、合同类型等 | 财务部门可编辑 |
# 权限控制
| 按钮 | 权限类型 | 实现方式 | 控制逻辑 |
|---|---|---|---|
| 编辑(自己) | 记录级权限 | 重载GetRecordPermisionsAsync | 只有选中自己的档案时才亮起 |
| 编辑(人事) | 应用权限 | 关联权限资源 | 人事部门员工亮起 |
| 编辑(财务) | 应用权限 | 关联权限资源 | 财务部门员工亮起 |
# 配置步骤
- 定义表单状态:在表单设计中创建SelfEdit、HREdit、FinanceEdit三个状态,分别配置可编辑字段
- 创建编辑按钮:在前台为每个部门创建独立的编辑按钮,通过
formState绑定对应的表单状态 - 设置权限控制:
- 员工自编辑:重载
GetRecordPermisionsAsync,返回rv["EditSelf"] = record.RegisterBy == loginUserAccount - 部门编辑:在模块配置中添加
modulePerm,将按钮与应用权限资源关联
- 员工自编辑:重载
# 三、常见应用场景
| 场景 | 按钮配置 | 表单状态 | 权限控制 |
|---|---|---|---|
| 员工自助修改 | 编辑(自己) | SelfEdit | 记录级权限(只能编辑自己) |
| 人事信息维护 | 编辑(人事) | HREdit | 应用权限(人事角色) |
| 财务信息维护 | 编辑(财务) | FinanceEdit | 应用权限(财务角色) |
| 管理员编辑 | 编辑(全部) | FullEdit | 应用权限(管理员角色) |
# 四、注意事项
- 表单状态预定义:需要在表单设计中提前创建好表单状态
- 按钮名称规范:按钮的
formState必须与表单状态名称完全一致 - 权限组合:当用户拥有多个权限时,对应的多个按钮会同时亮起
- 按钮行为:
disableBehavior可设为disable(禁用)或hide(隐藏)
# 五、总结
多部门协同编辑的实现非常便捷:
- ✅ 表单状态:通过不同状态控制各字段的可编辑性
- ✅ 多按钮配置:为每个部门创建独立的编辑按钮
- ✅ 权限控制:结合应用权限和记录级权限精确控制按钮可见性
- ✅ 灵活扩展:可支持任意多个部门的协同编辑
多部门协同处理一个表单时,可以为每个部门添加不同编辑按钮,每个按钮启用自己的表单状态即可。需要控制按钮禁用或隐藏时,修改disableBehavior属性即可实现。