ruoyi-vue-pro 开发指南 ruoyi-vue-pro 开发指南
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 3.x
  • 前端手册 Vben 5.x
  • 前端手册 Vue 2.x
  • 前端手册 Admin Uniapp
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben5(ant-design-vue、element-plus) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 3.x
  • 前端手册 Vben 5.x
  • 前端手册 Vue 2.x
  • 前端手册 Admin Uniapp
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben5(ant-design-vue、element-plus) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读

    • 简介
    • 交流群
    • 视频教程
    • 功能列表
    • 快速启动(后端项目)
    • 快速启动(前端项目)
    • 接口文档
    • 技术选型
    • 项目结构
    • 代码热加载
    • 一键改包
    • 迁移模块(适合新项目)
    • 删除功能(以租户为例)
    • 表结构变更(版本升级)
    • 国产信创数据库(DM 达梦、大金、OpenGauss、瀚高)
    • 如何去除 Redis 缓存
    • 内网穿透
    • 面试题、简历模版、简历优化
    • 项目外包
  • 后端手册

    • 新建模块
    • 代码生成【单表】(新增功能)
    • 代码生成【主子表】
    • 代码生成(树表)
    • 代码生成(移动端)
    • 功能权限
    • 数据权限
    • 用户体系
    • 三方登录
    • OAuth 2.0(SSO 单点登录)
    • SaaS 多租户【字段隔离】
    • SaaS 多租户【数据库隔离】
    • WebSocket 实时通信
    • 异常处理(错误码)
    • 参数校验、时间传参
    • 分页实现
    • VO 对象转换、数据翻译
    • 文件存储(上传下载)
    • Excel 导入导出
    • 操作日志、访问日志、异常日志
    • MyBatis 数据库
    • MyBatis 联表&分页查询
    • 多数据源(读写分离)、事务
    • Redis 缓存
    • 本地缓存
    • 异步任务
    • 分布式锁
    • 幂等性(防重复提交)
    • 请求限流(RateLimiter)
    • HTTP 接口签名(防篡改)
    • HTTP 接口加解密
    • 单元测试
    • 验证码
    • 工具类 Util
    • 配置管理
    • 数据库文档
  • 中间件手册

    • 定时任务
    • 消息队列(内存)
    • 消息队列(Redis)
    • 消息队列(RocketMQ)
    • 消息队列(RabbitMQ)
    • 消息队列(Kafka)
    • 限流熔断
  • 工作流手册

    • 工作流演示
    • 功能开启
    • 工作流(达梦适配)
    • 审批接入(流程表单)
    • 审批接入(业务表单)
    • 流程设计器(BPMN)
    • 流程设计器(钉钉、飞书)
    • 选择审批人、发起人自选
    • 会签、或签、依次审批
    • 流程发起、取消、重新发起
    • 审批通过、不通过、驳回
    • 审批加签、减签
    • 审批转办、委派、抄送
    • 执行监听器、任务监听器
    • 流程表达式
    • 流程审批通知
    • 移动端审批
  • 大屏手册

    • 报表设计器
    • 大屏设计器
  • 支付手���

    • 功能开启
    • 支付宝支付接入
    • 微信公众号支付接入
    • 微信小程序支付接入
    • 支付宝、微信退款接入
    • 支付宝转账接入
    • 微信转账接入
    • 钱包充值、支付、退款
    • 模拟支付、退款
    • 移动端支付管理
  • 会员手册

    • 功能开启
    • 微信公众号登录
    • 微信小程序登录
    • 微信小程序订阅消息
    • 微信小程序码
    • 会员用户、标签、分组
    • 会员等级、积分、签到
    • 移动端会员管理
  • 商城手册

    • 商城演示
    • 功能开启
    • 商城装修
    • 在线客服
    • 【商品】商品分类
    • 【商品】商品属性
    • 【商品】商品 SPU 与 SKU
    • 【商品】商品评价
    • 【交易】购物车
    • 【交易】交易订单
    • 【交易】售后退款
    • 【交易】快递发货
    • 【交易】门店自提
    • 【交易】分销返佣
    • 【营销】优惠劵
    • 【营销】积分商城
    • 【营销】拼团活动
    • 【营销】秒杀活动
    • 【营销】砍价活动
    • 【营销】满减送活动
    • 【营销】限时折扣
    • 【营销】内容管理
    • 【统计】会员、商品、交易统计
    • 移动端商城管��
  • ERP手册

    • ERP 演示
    • 功能开启
    • 【产品】产品信息、分类、单位
    • 【库存】产品库存、库存明细
    • 【库存】其它入库、其它出库
    • 【库存】库存调拨、库存盘点
    • 【采购】采购订单、入库、退货
    • 【销售】销售订单、出库、退货
    • 【财务】采购付款、销售收款
    • 移动端 ERP
  • CRM手册

    • CRM 演示
    • 功能开启
    • 【线索】线索管理
    • 【客户】客户管理、公海客户
    • 【商机】商机管理、商机状态
    • 【合同】合同管理、合同提醒
    • 【回款】回款管理、回款计划
    • 【产品】产品管理、产品分类
    • 【通用】数据权限
    • 【通用】跟进记录、待办事项
    • 移动端 CRM
  • AI大模型手册

    • AI 大模型演示
    • 功能开启
    • AI 聊天对话
    • AI 绘画创作
    • AI 知识库(RAG)
    • AI 音乐创作
    • AI 写作助手
    • AI 思维导图
    • AI 工具(function calling)
    • AI 工作流
    • Dify 工作流
    • FastGPT 工作流
    • Coze 智能体
    • 推理模式(thinking)
    • 联网搜索
    • MCP Client 客户端
    • MCP Server 服务端
    • 【模型接入】Claude
    • 【模型接入】OpenAI
    • 【模型接入】通义千问
    • 【模型接入】DeepSeek
    • 【模型接入】字节豆包
    • 【模型接入】腾讯混元
    • 【模型接入】硅基流动
    • 【模型接入】MiniMax
    • 【模型接入】月之暗面
    • 【模型接入】百川智能
    • 【模型接入】文心一言
    • 【模型接入】LLAMA
    • 【模型接入】智谱 GLM
    • 【模型接入】讯飞星火
    • 【模型接入】微软 OpenAI
    • 【模型接入】谷歌 Gemini
    • 【模型接入】Stable Diffusion
    • 【模型接入】Midjourney
    • 【模型接入】Suno
    • 【模型接入】Grok
    • 【模型接入】阶跃星辰
    • 移动端 AI 大模型
  • IoT物联网手册

    • 功能开启
    • 产品管理
    • 设备管理
    • 物模型配置
    • 设备网关与子设备
    • 设备动态注册
    • 设备接入(概述)
    • 设备接入(HTTP 协议)
    • 设备接入(MQTT 协议)
    • 设备接入(EMQX 协议)
    • 设备接入(TCP 协议)
    • 设备接入(UDP 协议)
    • 设备接入(WebSocket 协议)
    • 设备接入(CoAP 协议)
    • 设备接入(Modbus Client 模式)
    • 设备接入(Modbus Server 模式)
    • 设备接入(自定义协议)
    • 场景联动
    • 数据流转
    • 告警配置
    • OTA 固件升级
    • 移动端 IoT 物联网
  • MES手册

    • MES 演示
    • 功能开启
    • 【基础】物料产品、分类、计量单位
    • 【基础】客户管理、供应商管理
    • 【基础】车间设置、工作站设置
    • 【基础】编码规则
    • 【生产】工序设置、工艺流程
    • 【生产】生产工单
    • 【生产】生产排产、工序流转卡
    • 【生产】生产报工
    • 【生产】安灯配置、安灯呼叫
    • 【生产】工作记录
    • 【仓库】仓库与库区库位、条码赋码、SN码
    • 【仓库】批次管理、库存现有量、库存事务
    • 【仓库】到货通知、采购入库、采购退货
    • 【仓库】生产领料、生产退料、物料消耗
    • 【仓库】产品产出、产品入库
    • 【仓库】发货通知、销售出库、销售退货
    • 【仓库】外协发料、外协入库
    • 【仓库】其他入库、其他出库
    • 【仓库】调拨单、装箱管理
    • 【仓库】库存盘点
    • 【质量】检测项设置、常见缺陷
    • 【质量】质检方案
    • 【质量】来料检验(IQC)
    • 【质量】过程检验(IPQC)
    • 【质量】出货检验(OQC)
    • 【质量】退货检验(RQC)
    • 【质量】待检任务、检验结果、缺陷记录
    • 【设备】设备类型、设备台账
    • 【设备】点检保养项目、点检保养方案
    • 【设备】点检记录、保养记录、维修单
    • 【工具】工具类型、工装夹具台账
    • 【排班】班组设置、节假日设置
    • 【排班】排班计划、排班日历
    • 移动端 MES
  • WMS手册

    • WMS 演示
    • 功能开启
    • 【基础】仓库
    • 【基础】商品、SKU、分类、品牌
    • 【基础】往来企业(供应商、客户)
    • 【库存】库存记录、流水、统计
    • 【单据】入库
    • 【单据】出库
    • 【单据】移库
    • 【单据】盘库
    • 【其它】WMS、MES、ERP 对比
    • 移动端 WMS
  • HRM人力资源

    • HRM 演示
    • 功能开启
    • 【组织】工作台、组织架构
    • 【员工】员工管理
    • 【招聘】招聘管理
    • 【考勤】考勤管理
    • 【社保】社保管理
    • 【薪资】计薪设置、薪资档案
    • 【薪资】月度工资、工资条
    • 【绩效】绩效模板、绩效计划
      • 1. 考核指标模板
        • 1.1 表结构
        • 1.2 管理后台
      • 2. 结果模板
        • 2.1 表结构
        • 2.2 管理后台
      • 3. 绩效计划
        • 3.1 表结构
        • 3.2 状态流转
        • 3.3 四步创建
        • 3.4 管理后台
      • 4. 管理端与员工端的分工
    • 【绩效】绩效考核、绩效档案
    • 移动端 HRM
  • IM即时通讯手册

    • IM 演示
    • 功能开启
    • 【好友】好友关系、好友申请
    • 【群聊】群组、群成员、入群申请
    • 【消息】私聊、群聊、频道消息
    • 【频道】频道、频道素材
    • 【内容】表情、敏感词
    • 【通话】语音通话、视频通话、共享屏幕
    • 【WebSocket】实时推送与离线消息
    • 移动端 IM 即时通讯
  • 公众号手册

    • 功能开启
    • 公众号接入
    • 公众号粉丝
    • 公众号标签
    • 公众号消息
    • 模版消息
    • 自动回复
    • 公众号菜单
    • 公众号素材
    • 公众号图文
    • 公众号统计
    • 移动端公众号管理
  • 系统手册

    • 短信配置
    • 邮件配置
    • 站内信配置
    • Webhook(钉钉、飞书、企微)
    • 数据脱敏、字段权限
    • 敏感词
    • 地区 & IP 库
  • 运维手册

    • 开发环境
    • Linux 部署
    • Docker 部署
    • Jenkins 部署
    • 宝塔部署
    • 1Panel 部署
    • HTTPS 证书
    • 服务监控
    • Tomcat WAR 部署
  • 前端手册 Vue 3.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
    • CRUD 组件
    • 国际化
    • IDE 调试
    • 代码格式化
  • 前端手册 Vben 5.x

    • 开发规范
    • 菜单路由
    • 图标、主题、国际化
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
    • IDE 调试
    • 代码格式化
  • 前端手册 Vue 2.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
  • 前端手册 Admin Uniapp

    • 开发规范
    • 菜单路由
    • 图标、主题、国际化
    • 字典数据
    • 系统组件
    • 通用方法
    • IDE 调试
    • 代码格式化
    • 运行发布
  • 更新日志

    • 【v2026-07】
    • 【v2026-06】
    • 【v2026-05】
    • 【v2026-04】
    • 【v2026-03】
    • 【v2026-01】
    • 【v2025-12】
    • 【v2025-11】
    • 【v2025-10】
    • 【v2025-09】
    • 【v2025-08】
    • 【v2-6-1】2025-07-19
    • 【v2-6-0】2025-06-07
    • 【v2.5.0】2025-05-13
    • 【v2.4.2】2025-04-12
    • 【v2.4.1】2025-02-09
    • 【v2.4.0】2024-12-31
    • 【v2.3.0】2024-10-07
    • 【v2.2.0】2024-08-02
    • 【v2.1.0】2024-05-05
    • 【v2.0.1】2024-03-01
    • 【v2.0.0】2024-01-26
  • 开发指南
  • HRM人力资源
芋道源码
2026-08-02
目录

【绩效】绩效模板、绩效计划

绩效模板与计划模块,由 yudao-module-hrm 后端模块的 performance.config、performance.plan 包实现,前端实现在 @/views/hrm/performance/config 和 @/views/hrm/performance/plan 目录。

本文解决的是「考什么、谁来评分、如何确认结果」:管理端先维护考核指标模板和结果模板,再通过四步表单创建绩效计划并确定参评范围。计划启动后的员工任务与绩效档案,详见 《【绩效】绩效考核、绩效档案》。

  • 考核指标模板:可复用的维度与指标,例如「业绩指标 60% + 行为态度 40%」。
  • 结果模板:把最终得分映射为等级和绩效系数,例如 A、B、C 三档。
  • 绩效计划:配置聚合根,把两类模板复制成计划快照,模板后续变化不影响已创建的计划。

本文涉及表如下图所示:

绩效模块表关系

# 1. 考核指标模板

考核指标模板,由 HrmPerformanceAssessmentTemplateController 提供接口(/hrm/performance/assessment-template)。维度、指标以内嵌 JSON 保存,不建立独立模板子表。

# 1.1 表结构

省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段,下同

CREATE TABLE `hrm_performance_assessment_template` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',

  `name` varchar(500) NOT NULL COMMENT '模板名称',
  `illustrate` varchar(1000) DEFAULT NULL COMMENT '模板说明',

  `score_calculation` tinyint DEFAULT '1' COMMENT '计分方式',
  `upper_limit_type` tinyint DEFAULT '0' COMMENT '分数上限类型',
  `upper_limit_score` decimal(10,2) DEFAULT '100.00' COMMENT '分数上限',

  `dimension_count` int DEFAULT '0' COMMENT '维度数量',
  `quota_count` int DEFAULT '0' COMMENT '指标数量',
  `dimensions` varchar(20000) NOT NULL COMMENT '维度和指标 JSON',

  `status` tinyint DEFAULT '0' COMMENT '状态',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 绩效考核指标模板';

① dimensions 中每个维度保存名称、类型(HrmPerformanceQuotaTypeEnum:1 业绩指标、2 行为态度指标)、权重、是否允许员工编辑和指标列表;每个指标保存名称、说明、评分标准、权重和评分类型,显示顺序由指标在 JSON 数组中的先后决定。

② 权重规则:所有维度权重之和必须为 100%。不允许员工编辑的维度,其预置指标权重也必须为 100%;允许员工编辑时,可将剩余权重留给员工填写。

③ score_calculation 计分方式(HrmPerformanceScoreCalculationEnum,字典 hrm_performance_score_calculation)当前仅支持「加权计算」;upper_limit_type 分数上限类型(HrmPerformanceUpperLimitTypeEnum,字典 hrm_performance_upper_limit_type)当前仅支持「统一上限」。

④ dimension_count、quota_count 是列表展示用的冗余计数,保存时按 dimensions 自动汇总。

dimensions JSON 字段结构
[
  {
    "name": "业绩指标",
    "quotaType": 1,
    "weight": 70.00,
    "remark": "由 HR 预置,员工不可改",
    "allowEdit": false,
    "quotas": [
      {
        "name": "季度销售额",
        "illustrate": "本季度签约合同金额",
        "standard": "达成 100 万得满分,每少 10 万扣 10 分",
        "weight": 60.00,
        "scoreType": 1
      },
      {
        "name": "回款率",
        "illustrate": "已回款金额 / 签约金额",
        "standard": "90% 以上得满分",
        "weight": 40.00,
        "scoreType": 1
      }
    ]
  },
  {
    "name": "行为态度指标",
    "quotaType": 2,
    "weight": 30.00,
    "remark": "员工自行补充",
    "allowEdit": true,
    "quotas": []
  }
]

① quotaType 指标类型(HrmPerformanceQuotaTypeEnum):1 业绩指标、2 行为态度指标;scoreType 评分类型(HrmPerformanceQuotaScoreTypeEnum)。

② weight 在两层各自校验:维度权重之和为 100,维度内指标权重之和也要凑满 100。allowEdit = true 的维度可以只预置部分指标,剩余权重留给员工在「制定指标」时补足。

③ 指标的展示顺序就是 quotas 数组顺序,没有单独的排序字段。

这些配置没有独立编号和生命周期,由 HrmPerformanceAssessmentTemplateDO 的内嵌对象承载,随模板一次提交、整体保存。

模板的版本化修改

模板的「修改」不是覆盖原记录,而是把旧记录停用(status),再插入一条新记录。

因此已创建的绩效计划继续使用原模板编号和自己的配置快照,不会被新版本改写;也正因如此,被计划引用的模板版本不允许删除。

# 1.2 管理后台

对应 [HRM 人力资源 -> 绩效管理 -> KPI 考核设置 -> 考核指标模板] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/hrm/performance/config/assessment-template 目录。

# 列表

展示模板名称、维度数、指标数、创建人和创建时间,可按模板名称筛选。

管理后台 - 考核指标模板

# 新增

通过弹窗 PerformanceAssessmentTemplateForm.vue 完成,内部由 PerformanceAssessmentConfigEditor.vue 编排考核维度和维度下的指标项。保存前会校验维度和指标权重是否满足 100% 的要求。

管理后台 - 新增考核指标模板

# 修改

弹窗结构与新增相同。如上文所述,保存时实际是「停用旧版本 + 生成新版本」,已创建的 KPI 考核继续使用原模板快照。

# 删除

支持单条删除和批量删除。后端会先检查 hrm_performance_plan.assessment_template_id:模板已被计划引用时拒绝删除,未引用时才完成逻辑删除。

# 2. 结果模板

结果模板,由 HrmPerformanceResultTemplateController 提供接口(/hrm/performance/result-template)。它与指标模板一样采用版本化修改,被计划引用的版本不能删除。

# 2.1 表结构

CREATE TABLE `hrm_performance_result_template` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',

  `name` varchar(255) NOT NULL COMMENT '模板名称',
  `levels` varchar(20000) NOT NULL COMMENT '等级配置 JSON',
  `status` tinyint DEFAULT '0' COMMENT '状态',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 绩效结果模板';

① levels 保存等级名称、分数下限、分数上限和绩效系数。

② 等级校验规则:各等级区间必须连续覆盖 0~100,不能重叠或留空;等级名称不可重复,绩效系数不能小于 0。

levels JSON 字段结构
[
  { "name": "S", "minScore": 90.00, "maxScore": 100.00, "coefficient": 1.50 },
  { "name": "A", "minScore": 80.00, "maxScore": 90.00, "coefficient": 1.20 },
  { "name": "B", "minScore": 60.00, "maxScore": 80.00, "coefficient": 1.00 },
  { "name": "C", "minScore": 0.00, "maxScore": 60.00, "coefficient": 0.80 }
]

coefficient 绩效系数是绩效模块输出给薪资模块的唯一数值:考核归档后,薪资侧按计薪月份读取该系数,详见 《【薪资】月度工资、工资条》。

# 2.2 管理后台

对应 [HRM 人力资源 -> 绩效管理 -> KPI 考核设置 -> 考核结果设置] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/hrm/performance/config/result-template 目录。

# 列表

展示模板名称、结果等级、创建人和创建时间,可按模板名称筛选。

管理后台 - 结果模板

# 新增与修改

通过弹窗 PerformanceResultTemplateForm.vue 完成,其中 PerformanceResultLevelForm.vue 用于新增、修改和删除等级行。保存时校验等级区间连续覆盖 0~100。

结果模板修改同样生成新版本并停用旧版本,不会改变已创建计划保存的结果快照。

管理后台 - 新增考核结果模板

# 删除

支持单条删除和批量删除。已被 KPI 考核引用的版本不能删除,避免历史等级和绩效系数失去来源。

# 3. 绩效计划

绩效计划,由 HrmPerformancePlanController 提供接口(/hrm/performance/plan)。它是配置聚合根:保存两类模板的来源编号,同时把指标、结果、考评范围和流程复制成计划快照。

# 3.1 表结构

CREATE TABLE `hrm_performance_plan` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',

  `name` varchar(255) NOT NULL COMMENT '计划名称',
  `cycle_type` tinyint DEFAULT NULL COMMENT '周期类型',
  `cycle` varchar(255) DEFAULT NULL COMMENT '周期',
  `quarter` tinyint DEFAULT NULL COMMENT '季度',
  `start_time` datetime DEFAULT NULL COMMENT '开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '结束时间',
  `description` varchar(1000) DEFAULT NULL COMMENT '说明',

  `scopes` varchar(20000) NOT NULL COMMENT '考评范围 JSON',

  `assessment_template_id` bigint NOT NULL COMMENT '指标模板编号',
  `assessment_config` varchar(20000) NOT NULL COMMENT '指标快照 JSON',
  `result_template_id` bigint NOT NULL COMMENT '结果模板编号',
  `result_config` varchar(20000) NOT NULL COMMENT '结果快照 JSON',

  `quota_setting_type` tinyint NOT NULL DEFAULT '1' COMMENT '指标制定方式',
  `target_confirmation` bit NOT NULL DEFAULT b'0' COMMENT '是否目标确认',
  `target_confirmation_stage` varchar(20000) DEFAULT NULL COMMENT '目标确认节点 JSON',
  `review_stages` varchar(20000) NOT NULL COMMENT '评分节点 JSON',
  `result_audit` bit NOT NULL DEFAULT b'1' COMMENT '是否结果审核',
  `result_audit_stages` varchar(20000) DEFAULT NULL COMMENT '结果审核节点 JSON',
  `result_confirmation` bit NOT NULL DEFAULT b'1' COMMENT '是否结果确认',
  `appeal_stages` varchar(20000) DEFAULT NULL COMMENT '申诉节点 JSON',
  `appeal_timeout_days` int NOT NULL DEFAULT '2' COMMENT '申诉超时天数',
  `appeal_timeout_action` tinyint NOT NULL DEFAULT '1' COMMENT '申诉超时动作',

  `sync_to_salary` bit DEFAULT b'0' COMMENT '是否同步薪资',
  `paid_for_month` varchar(20) DEFAULT NULL COMMENT '计薪月份',

  `stage_type` tinyint DEFAULT '0' COMMENT '当前阶段',
  `status` tinyint DEFAULT '2' COMMENT '状态',
  `operation_type` tinyint DEFAULT NULL COMMENT '下一操作',
  `terminate_time` datetime DEFAULT NULL COMMENT '终止时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 绩效计划';

① 枚举 cycle_type 周期类型(HrmPerformanceCycleTypeEnum):1 月度、2 季度、3 上半年、4 下半年、5 全年、6 其他。标准周期的起止日必须匹配对应自然周期,只有「其他」才允许自定义。季度周期额外使用 quarter(HrmPerformanceQuarterEnum)。

② scopes 考评范围(范围类型见 HrmPerformancePlanScopeTypeEnum):1 员工 / 部门、2 聘用形式 / 员工状态、3 排除员工。系统按范围生成 hrm_performance_assessment 参评员工记录;管理员手工移除员工时,会把该员工写入排除范围,避免按条件重新命中。

scopes JSON 字段结构
[
  {
    "type": 1,
    "deptIds": [101, 102],
    "employeeIds": [2001]
  },
  {
    "type": 2,
    "employeeType": 1,
    "employeeStatuses": [2, 3]
  },
  {
    "type": 3,
    "employeeIds": [2008]
  }
]

① 三种类型是并集加排除的关系:类型 1、2 命中的员工取并集,再减去类型 3 的排除员工。

② employeeType 聘用形式、employeeStatuses 员工状态分别对应员工模块的 HrmEmployeeTypeEnum 和 HrmEmployeeEntryStatusEnum,详见 《【员工】员工管理》。

③ assessment_config、result_config 是计划实际运行依据,assessment_template_id、result_template_id 只保留来源关系。

④ 枚举 quota_setting_type 指标制定方式(HrmPerformanceQuotaSettingTypeEnum):1 系统制定(直接进入执行中)、2 员工填写(可开启目标确认)。

⑤ target_confirmation_stage、review_stages、result_audit_stages、appeal_stages 都是内嵌流程配置,计划启动后才为每名员工解析为实际阶段和处理人。

四个字段都用同一个处理人结构描述「谁来处理这个节点」:type 处理人类型(HrmPerformanceRaterTypeEnum)1 上级、2 部门负责人、3 指定评分人、4 被考核人;level 表示第几级上级;type = 3 时用 employeeId 指定具体员工。它们没有独立编号和生命周期,由 HrmPerformancePlanDO 的内嵌对象承载,随计划一次提交、整体保存。下面逐个展开:

target_confirmation_stage(目标确认节点):员工提交指标后,由谁确认。

target_confirmation_stage JSON 字段结构

不同于其余三个字段,目标确认只有一级,因此是单个对象而非数组:

{ "type": 1, "level": 1 }

示例表示由被考核人的直属上级确认。只有 target_confirmation = true 时该字段才有值;确认人退回后,被考核人的指标填写任务会被重新激活。

review_stages(评分节点):谁来评分、各占多少权重。

review_stages JSON 字段结构
[
  {
    "name": "员工自评",
    "rater": { "type": 4 },
    "weight": 30.00,
    "scoringType": 1,
    "visibleContent": 1,
    "requiredSetting": true,
    "rejectAuthority": false
  },
  {
    "name": "上级评分",
    "rater": { "type": 1, "level": 1 },
    "weight": 70.00,
    "scoringType": 1,
    "visibleContent": 2,
    "requiredSetting": true,
    "rejectAuthority": true
  }
]

① 处理人放在 rater 里,其余字段描述这一轮评分的规则。数组顺序就是评分顺序,weight 之和必须为 100,最终得分按各节点权重加权。

② scoringType 评分方式(HrmPerformanceReviewScoringTypeEnum)当前仅支持按指标评分;requiredSetting 控制评语是否必填。

③ visibleContent 可见内容(HrmPerformanceReviewVisibleContentEnum):1 仅自己的评分和评语、2 所有人的评分和评语。

④ rejectAuthority = true 时,该节点的处理人可以驳回上一已完成评分阶段,并清空那一阶段的指标评分。

result_audit_stages(结果审核节点):评分完成后的多级审核。

result_audit_stages JSON 字段结构
[
  { "type": 1, "level": 1 },
  { "type": 1, "level": 2 }
]

数组按顺序形成多级审核,示例表示先由直属上级审核、再由二级上级审核。只有 result_audit = true 时该字段才有值;审核驳回时需要勾选要重开的评分节点,不会清空其他已完成评分。

appeal_stages(申诉节点):员工提交申诉后的多级处理。

appeal_stages JSON 字段结构
[
  { "type": 1, "level": 1 },
  { "type": 3, "employeeId": 2001 }
]

同样按数组顺序形成多级处理,示例表示先由直属上级处理,再交给指定的 HR 员工。中间级通过会流转到下一级,最终一级通过才会重置得分并重开评分阶段;任一级驳回则维持原结果。超过 appeal_timeout_days 未处理时,按 appeal_timeout_action 由定时任务自动处理。

⑥ 枚举 appeal_timeout_action 申诉超时动作(HrmPerformanceAppealTimeoutActionEnum):1 自动拒绝、2 自动通过。超过 appeal_timeout_days 后由 HrmPerformanceAppealTimeoutJob 执行。

⑦ 枚举 operation_type 下一操作(HrmPerformancePlanOperationTypeEnum):1 开启评分、2 发起绩效面谈、3 归档。列表据此决定主操作按钮。

⑧ 枚举 status 计划状态(HrmPerformancePlanStatusEnum),对应字典 hrm_performance_plan_status。详见 §3.2 状态流转。

# 3.2 状态流转

计划生命周期由 HrmPerformancePlanServiceImpl 控制。状态枚举 HrmPerformancePlanStatusEnum:

状态值 枚举 说明 可执行操作
1 DRAFT 草稿 —(当前创建接口不产生草稿)
2 NOT_STARTED 未开始 编辑、增减参评员工、启动、删除
3 RUNNING 进行中 开启评分、发起绩效面谈、归档、终止
4 ARCHIVED 已归档 查看考核设置、删除
5 TERMINATED 已终止 查看考核设置

状态流转说明

创建 ──→ 未开始(2) ──启动──→ 进行中(3) ──全员结束、归档──→ 已归档(4)
                              │
                              └────────终止────────→ 已终止(5)
  • 创建(createPerformancePlan):四步表单保存后直接创建「未开始」计划,当前没有单独保存草稿的入口。
  • 增减参评员工(addPerformancePlanEmployees / removePerformancePlanEmployees):仅未开始计划可维护。被移除员工会写入计划的排除范围。
  • 启动(startPerformancePlan):校验参评范围、流程配置和所有必办处理员工的账号绑定,然后生成维度、指标和运行节点,并激活第一个业务节点。任一必办人无法解析或未绑定后台账号时,计划保持未开始并返回明确错误。
  • 开启评分(openPerformancePlanScoring):全部员工进入执行中后才可执行,系统激活首个评分节点。
  • 发起绩效面谈(startPerformancePlanInterview):全员完成评分与结果审核后才可执行,按计划配置激活员工结果确认或直接推进结束。
  • 归档(archivePerformancePlan):全员考核结束后执行,计划和员工考核变为已归档并写入归档时间。
  • 终止(terminatePerformancePlan):进行中计划随时可终止。终止后不再推进流程,但已经产生的指标、评分、阶段和动作记录继续保留。
  • 删除(deletePerformancePlan):仅未开始或已归档可删;已归档计划删除时,其绩效档案也随之清理。进行中和已终止计划没有删除入口。

# 3.3 四步创建

在计划列表点击【新增】,进入 @/views/hrm/performance/plan/form/index.vue 的四步配置页。可以点击步骤标题定位,也可以使用【上一步】【下一步】逐项校验,最后点击【保存】提交。

步骤 配置内容 承载组件 关键规则
① 基础设置 周期、起止时间、考评范围 PerformancePlanBasicForm.vue 月度、季度、半年、全年需匹配自然周期;「其他」可自定义
② 指标设置 指标模板、指标制定方式 PerformancePlanIndicatorForm.vue 系统制定直接进入执行中;员工填写可开启目标确认
③ 流程设置 评分、审核、确认、申诉节点 PerformancePlanProcessForm.vue 评分权重合计 100%;审核、申诉各最多三级
④ 结果设置 结果模板、薪资衔接 PerformancePlanResultForm.vue 同步薪资时必须选择 YYYY-MM 计薪月份

管理后台 - 计划配置

# 考评范围

考评范围有两种主要选法,可以叠加使用:

  • 直接选择员工或部门,部门范围包含其下员工。
  • 按聘用形式和员工状态筛选。管理员在计划详情手工移除员工时,系统会把该员工写入排除范围。

管理后台 - 绩效计划考评范围

# 处理人解析

流程节点上配置的是「处理人类型」,运行态保存的才是具体的 hrm_employee.id。类型见 HrmPerformanceRaterTypeEnum:

值 枚举 类型 解析方式
1 SUPERIOR 上级 沿 hrm_employee.leader_employee_id 解析指定层级
2 DEPT_LEADER 部门负责人 读取 System 部门负责人账号,再找到其绑定的 HRM 员工
3 SPECIFIED 指定评分人 直接保存选择的 hrm_employee.id
4 SELF 被考核人 使用当前考核对应的员工,用于自评等节点

评分节点还需配置评分方式(HrmPerformanceReviewScoringTypeEnum,当前为「按指标评分」)和可见内容(HrmPerformanceReviewVisibleContentEnum:1 仅自己的评分和评语、2 所有人的评分和评语)。

⚠️ 注意:评分人不能重复,评分阶段权重之和必须为 100%;员工自评阶段不能配置驳回。启动计划时,系统会再次校验所有必办处理员工已经绑定后台账号。

管理后台 - 绩效计划流程设置

# 3.4 管理后台

对应 [HRM 人力资源 -> 绩效管理 -> KPI 考核] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/hrm/performance/plan 目录。

# 列表

可按计划名称筛选,并按未开始、进行中、已归档、已终止展示页签及数量。阶段人数随列表数据一起返回。

管理后台 - 绩效计划

# 详情

点击计划名称进入 plan/detail/index.vue,包含「详细资料」「参评员工」和「操作日志」三个页签,并展示阶段与等级统计。点击参评员工姓名可跳转到该员工的考核详情。

管理后��� - 绩效计划详情

# 维护参评员工

只有未开始计划可以维护参评员工。 在详情的「参评员工」页签点击【添加员工】,PerformancePlanAssessmentAddForm.vue 会先排除已加入员工;勾选员工点击【移除员工】即可移出,同时写入计划排除范围。

管理后台 - 绩效计划添加员工

# 启动

未开始计划在列表点击【检查并开启考核】,会先进入详情的参评员工页签;核对后点击详情顶部【启动】并二次确认。

# 开启评分、发起绩效面谈与归档

三个操作按顺序解锁:全员进入执行中后显示【开始评分】,全员完成评分与审核后显示【发起绩效面谈】,全员考核结束后显示【归档】。前置条件未满足时按钮不显示,后端仍会再次校验。

# 修改与查看考核设置

未开始计划可在详情点击【编辑】,重新打开四步配置页保存。进行中、已归档和已终止计划只能点击【查看考核设置】,以只读方式打开相同的四步页面,不显示保存按钮。

# 终止与删除

进行中计划可从【更多】点击【终止考核】;未开始计划可点击【删除考核】,已归档计划可点击【删除】。

# 4. 管理端与员工端的分工

模板、计划、参评范围和计划生命周期全部由管理端维护。指标填写、目标确认、自评 / 他评、结果审核、结果确认和申诉处理,则由计划解析出的员工在 PC 员工端完成。

拥有 HR 菜单 ≠ 拥有绩效待办

绩效任务按 handler_employee_id 与账号绑定员工是否匹配来判断归属。一个账号即使拥有 HR 管理菜单,也只能处理属于自己的任务,详见 《【绩效】绩效考核、绩效档案》。

计划开启 sync_to_salary 后,只有已归档考核的绩效系数才会提供给指定的计薪月份。该字段用于模块衔接,不表示薪资核算会自动把系数乘入工资项。

【薪资】月度工资、工资条
【绩效】绩效考核、绩效档案

← 【薪资】月度工资、工资条 【绩效】绩效考核、绩效档案→

Theme by Vdoing | Copyright © 2019-2026 芋道源码 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×