# 多业务部门协同处理同一个单子

# 概述

本功能用于实现表单不同部分由不同部门填写的协同编辑需求。例如员工只能编辑基本信息,人事部门只能编辑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 只有选中自己的档案时才亮起
编辑(人事) 应用权限 关联权限资源 人事部门员工亮起
编辑(财务) 应用权限 关联权限资源 财务部门员工亮起

# 配置步骤

  1. 定义表单状态:在表单设计中创建SelfEdit、HREdit、FinanceEdit三个状态,分别配置可编辑字段
  2. 创建编辑按钮:在前台为每个部门创建独立的编辑按钮,通过formState绑定对应的表单状态
  3. 设置权限控制
    • 员工自编辑:重载GetRecordPermisionsAsync,返回rv["EditSelf"] = record.RegisterBy == loginUserAccount
    • 部门编辑:在模块配置中添加modulePerm,将按钮与应用权限资源关联

# 三、常见应用场景

场景 按钮配置 表单状态 权限控制
员工自助修改 编辑(自己) SelfEdit 记录级权限(只能编辑自己)
人事信息维护 编辑(人事) HREdit 应用权限(人事角色)
财务信息维护 编辑(财务) FinanceEdit 应用权限(财务角色)
管理员编辑 编辑(全部) FullEdit 应用权限(管理员角色)

# 四、注意事项

  1. 表单状态预定义:需要在表单设计中提前创建好表单状态
  2. 按钮名称规范:按钮的formState必须与表单状态名称完全一致
  3. 权限组合:当用户拥有多个权限时,对应的多个按钮会同时亮起
  4. 按钮行为disableBehavior可设为disable(禁用)或hide(隐藏)

# 五、总结

多部门协同编辑的实现非常便捷:

  • 表单状态:通过不同状态控制各字段的可编辑性
  • 多按钮配置:为每个部门创建独立的编辑按钮
  • 权限控制:结合应用权限和记录级权限精确控制按钮可见性
  • 灵活扩展:可支持任意多个部门的协同编辑

多部门协同处理一个表单时,可以为每个部门添加不同编辑按钮,每个按钮启用自己的表单状态即可。需要控制按钮禁用或隐藏时,修改disableBehavior属性即可实现。