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 阶段表结构
        • 1.3 启动与阶段
      • 2. 管理端:运行监控与绩效档案
        • 2.1 运行监控
        • 2.2 绩效档案
      • 3. 员工端:我的考核
      • 4. 员工端:我的绩效档案
      • 5. 定时任务与薪资衔接
  • 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
目录

【绩效】绩效考核、绩效档案

绩效考核是绩效计划启动后的运行过程。管理端负责启动计划、开启评分、发起绩效面谈、监控进度和归档;员工端负责指标填写、目标确认、自评/他评、结果审核、结果确认和申诉。

绩效流程由 HRM 自己的阶段状态机实现,不复用 BPM。模板与计划配置详见 《【绩效】绩效模板、绩效计划》。运行态表和完整流程如下:

绩效模块表关系

绩效考核流程

# 1. 员工考核

创建计划并确定参评范围时,每名员工会生成一条 hrm_performance_assessment。管理员启动计划后,系统再把计划快照物化为考核维度、指标和阶段,并激活第一个业务节点。

# 1.1 表结构

省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段。

CREATE TABLE `hrm_performance_assessment` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `plan_id` bigint NOT NULL COMMENT '绩效计划编号',
  `employee_id` bigint NOT NULL COMMENT '被考核员工编号',
  `status` tinyint DEFAULT '2' COMMENT '考核状态',
  `process_status` tinyint DEFAULT '1' COMMENT '流程状态',
  `stage_type` tinyint DEFAULT '0' COMMENT '当前阶段类型',
  `stage_sort` int DEFAULT '0' COMMENT '当前阶段排序',
  `score` decimal(10,2) DEFAULT '0.00' COMMENT '最终得分',
  `result_level` varchar(64) DEFAULT NULL COMMENT '结果等级',
  `coefficient` decimal(10,2) DEFAULT '1.00' COMMENT '绩效系数',
  `target_confirmation_result` tinyint DEFAULT NULL COMMENT '目标确认结果',
  `target_confirmation_comment` varchar(1000) DEFAULT NULL COMMENT '目标确认意见',
  `target_confirmation_time` datetime DEFAULT NULL COMMENT '目标确认时间',
  `self_comment` varchar(2000) DEFAULT NULL COMMENT '自评评语',
  `reviewer_comment` varchar(2000) DEFAULT NULL COMMENT '他评评语',
  `result_comment` varchar(2000) DEFAULT NULL COMMENT '结果评语',
  `result_confirmation_time` datetime DEFAULT NULL COMMENT '结果确认时间',
  `result_audit_status` tinyint DEFAULT NULL COMMENT '结果审核状态',
  `result_audit_time` datetime DEFAULT NULL COMMENT '结果审核时间',
  `result_audit_reason` varchar(1000) DEFAULT NULL COMMENT '结果审核原因',
  `appeal_reason` varchar(1000) DEFAULT NULL COMMENT '申诉原因',
  `appeal_file_urls` varchar(2000) DEFAULT NULL COMMENT '申诉附件',
  `appeal_submit_time` datetime DEFAULT NULL COMMENT '申诉提交时间',
  `appeal_status` tinyint DEFAULT '0' COMMENT '申诉状态',
  `appeal_time` datetime DEFAULT NULL COMMENT '申诉处理时间',
  `appeal_comment` varchar(1000) DEFAULT NULL COMMENT '申诉处理意见',
  `archive_time` datetime DEFAULT NULL COMMENT '归档时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工绩效考核';

该表包含以下运行子表:

表 关联与用途
hrm_performance_assessment_dimension 通过 assessment_id 保存计划指标维度快照
hrm_performance_assessment_quota 通过 dimension_id 保存运行指标、目标值、实际值和汇总分
hrm_performance_assessment_stage 保存每个流程节点、处理员工、权重、状态和截止时间
hrm_performance_assessment_quota_score 保存某个评分阶段对某个指标的原始得分和评语
hrm_performance_assessment_action_record 保存用户与系统动作,组成流程时间线
hrm_performance_assessment_appeal_record 保存一次申诉选择重开的评分阶段
查看维度、指标、评分、动作和申诉表结构

以下建表语句原样取自 yudao-module-hrm/src/test/resources/sql/create_tables.sql,因此保留单元测试使用的 H2 兼容语法和公共字段。

CREATE TABLE IF NOT EXISTS "hrm_performance_assessment_dimension" (
    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    "assessment_id" bigint NOT NULL,
    "name" varchar(255) NOT NULL,
    "quota_type" tinyint DEFAULT NULL,
    "weight" decimal(10, 2) DEFAULT NULL,
    "remark" varchar(255) DEFAULT NULL,
    "allow_edit" bit NOT NULL DEFAULT FALSE,
    "sort" int NOT NULL DEFAULT 0,
    "creator" varchar(64) DEFAULT '',
    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updater" varchar(64) DEFAULT '',
    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "deleted" bit NOT NULL DEFAULT FALSE,
    "tenant_id" bigint NOT NULL DEFAULT 0,
    PRIMARY KEY ("id")
);
CREATE TABLE IF NOT EXISTS "hrm_performance_assessment_quota" (
    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    "assessment_id" bigint NOT NULL,
    "dimension_id" bigint NOT NULL,
    "preset" bit NOT NULL DEFAULT TRUE,
    "name" varchar(255) DEFAULT NULL,
    "description" varchar(1000) DEFAULT NULL,
    "standard" varchar(1000) DEFAULT NULL,
    "weight" decimal(10, 2) DEFAULT 100.00,
    "score_type" tinyint DEFAULT NULL,
    "target_value" varchar(1000) DEFAULT NULL,
    "actual_value" varchar(1000) DEFAULT NULL,
    "self_score" decimal(10, 2) DEFAULT 0.00,
    "reviewer_score" decimal(10, 2) DEFAULT 0.00,
    "final_score" decimal(10, 2) DEFAULT 0.00,
    "sort" int DEFAULT 0,
    "creator" varchar(64) DEFAULT '',
    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updater" varchar(64) DEFAULT '',
    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "deleted" bit NOT NULL DEFAULT FALSE,
    "tenant_id" bigint NOT NULL DEFAULT 0,
    PRIMARY KEY ("id")
);
CREATE TABLE IF NOT EXISTS "hrm_performance_assessment_quota_score" (
    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    "assessment_stage_id" bigint NOT NULL,
    "assessment_quota_id" bigint NOT NULL,
    "score" decimal(10, 2) NOT NULL,
    "comment" varchar(1000) DEFAULT NULL,
    "creator" varchar(64) DEFAULT '',
    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updater" varchar(64) DEFAULT '',
    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "deleted" bit NOT NULL DEFAULT FALSE,
    "tenant_id" bigint NOT NULL DEFAULT 0,
    PRIMARY KEY ("id")
);
CREATE TABLE IF NOT EXISTS "hrm_performance_assessment_action_record" (
    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    "assessment_id" bigint NOT NULL,
    "stage_id" bigint DEFAULT NULL,
    "employee_id" bigint DEFAULT NULL,
    "type" tinyint NOT NULL,
    "title" varchar(128) NOT NULL,
    "content" varchar(2000) DEFAULT NULL,
    "file_urls" varchar(2000) DEFAULT NULL,
    "status" tinyint DEFAULT NULL,
    "creator" varchar(64) DEFAULT '',
    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updater" varchar(64) DEFAULT '',
    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "deleted" bit NOT NULL DEFAULT FALSE,
    "tenant_id" bigint NOT NULL DEFAULT 0,
    PRIMARY KEY ("id")
);
CREATE TABLE IF NOT EXISTS "hrm_performance_assessment_appeal_record" (
    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    "assessment_id" bigint NOT NULL,
    "stage_id" bigint NOT NULL,
    "status" tinyint NOT NULL,
    "creator" varchar(64) DEFAULT '',
    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updater" varchar(64) DEFAULT '',
    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "deleted" bit NOT NULL DEFAULT FALSE,
    "tenant_id" bigint NOT NULL DEFAULT 0,
    PRIMARY KEY ("id")
);

① plan_id + employee_id 表达“某个计划中的某名员工”;处理人和被考核人均关联 hrm_employee.id,任务执行时再通过员工 userId 校验当前账号。

② quota_score 保存每级评分原始值,quota 保存自评、他评和最终汇总分;最终得分按“维度权重 × 指标权重 × 评分阶段权重”计算。

③ 归档不会复制到另一套档案表,只会更新计划与考核状态,并写入 archive_time。过程阶段、评分和动作记录继续保留。

# 1.2 阶段表结构

hrm_performance_assessment_stage 是考核流程的运行节点,每名参评员工都有自己的一组阶段:

CREATE TABLE `hrm_performance_assessment_stage` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `assessment_id` bigint NOT NULL COMMENT '员工考核编号',
  `type` tinyint NOT NULL COMMENT '阶段类型',
  `name` varchar(128) NOT NULL COMMENT '阶段名称',
  `handler_employee_id` bigint DEFAULT NULL COMMENT '处理员工编号',
  `rater_type` tinyint DEFAULT NULL COMMENT '评分人类型',
  `weight` decimal(10,2) DEFAULT NULL COMMENT '评分权重',
  `scoring_type` tinyint DEFAULT NULL COMMENT '评分方式',
  `visible_content` tinyint DEFAULT NULL COMMENT '可见内容',
  `required_setting` bit DEFAULT NULL COMMENT '是否必填评语',
  `reject_authority` bit DEFAULT NULL COMMENT '是否允许驳回',
  `sort` int NOT NULL DEFAULT '0' COMMENT '排序',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态',
  `score` decimal(10,2) DEFAULT NULL COMMENT '阶段得分',
  `result_level` varchar(64) DEFAULT NULL COMMENT '阶段等级',
  `comment` varchar(2000) DEFAULT NULL COMMENT '评语',
  `reject_reason` varchar(1000) DEFAULT NULL COMMENT '驳回原因',
  `submit_time` datetime DEFAULT NULL COMMENT '提交时间',
  `deadline_time` datetime DEFAULT NULL COMMENT '截止时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 绩效考核阶段';

handler_employee_id 关联 HRM 员工,而不是后台账号;系统据此判断任务归属。deadline_time 主要用于申诉确认节点的超时处理。

# 1.3 启动与阶段

启动计划时,系统依次创建维度和指标、解析流程节点处理人、校验必办处理人已绑定后台账号,并激活首个节点。任一必办人无法解析或未绑定账号,启动失败。

阶段值 阶段 主要处理人
1 员工填写 被考核员工
2 目标确认 上级、部门负责人或指定员工
3/4 自评/他人评分 本人或计划配置的评分员工
5 结果审核 计划配置的审核员工
6 结果确认 被考核员工
7 申诉确认 计划配置的申诉处理员工
9/10 执行中/结束 系统推进

考核主流程

员工填写(可选)→ 目标确认(可选)→ 执行中
                                      │ 管理员开启评分
                                      ↓
自评/他评 → 结果审核(可选)→ 绩效面谈 → 结果确认(可选)→ 结束 → 归档
                                      │
                                      └──员工申诉──→ 申诉确认──→ 重开所选评分阶段/维持原结果

阶段状态包括未处理、待处理、处理中、已处理、已驳回和已申诉;主记录状态表达整份考核,不能与节点状态混用。

# 2. 管理端:运行监控与绩效档案

# 2.1 运行监控

管理员从 [HRM 人力资源 -> 绩效管理 -> KPI 考核] 进入计划详情。

# 查询参评员工

@/views/hrm/performance/plan/detail/index.vue 的“参评员工”页签展示当前阶段、处理人、分数和等级,可按姓名、工号或手机号、部门、聘用形式、员工状态、当前阶段和结果等级“搜索”或“重置”。列表由 HrmPerformanceAssessmentController 的 GET /hrm/performance/assessment/page 提供;页面同时调用 GET /hrm/performance/plan/stage-count?planId={id}、GET /hrm/performance/plan/level-count?planId={id} 展示计划的阶段与等级统计。

# 查看员工考核详情

点击员工姓名进入 @/views/hrm/performance/assessment/detail/index.vue,查看考核概况、指标结果、各评分人得分和流程记录。页面分别调用 GET /hrm/performance/assessment/get?id={id} 和 GET /hrm/performance/assessment/process-record-list?id={id};详情只展示当前运行数据,不提供代替员工填写、评分或审核的管理操作。

# 推进或终止计划

计划详情由 GET /hrm/performance/plan/get?id={id} 回显整体进度。全员进入执行中后才能点击“开启评分”,全员完成评分和审核后才能从“更多”点击“发起面谈”,全员结束后才能“归档”,分别提交 POST /hrm/performance/plan/open-scoring?id={id}、POST /hrm/performance/plan/start-interview?id={id} 和 POST /hrm/performance/plan/archive?id={id}。进行中计划也可以从“更多”点击“终止”,确认后调用 POST /hrm/performance/plan/terminate?id={id};HrmPerformancePlanController 会再次校验状态和进度,终止后保留已经产生的指标、评分、阶段和动作记录。

# 2.2 绩效档案

计划归档后,可从 [HRM 人力资源 -> 绩效管理 -> 绩效档案] 查询结果。

# 查询员工档案

@/views/hrm/performance/assessment/index.vue 按员工聚合展示最近考核计划、最近评分、最近等级和考核次数,可按员工姓名或工号“搜索”或“重置”。页面通过 GET /hrm/performance/assessment/archive-employee-page 查询归档员工,不会混入仍在运行或已终止的考核。

# 查看个人档案与单次考核

点击员工姓名进入 employee/index.vue,页面用 GET /hrm/performance/assessment/archive-page 查询该员工的历次归档考核,并用 GET /hrm/performance/assessment/archive-plan-simple-list 提供“考核计划”筛选项。点击考核方案名称进入 detail/index.vue,再调用 GET /hrm/performance/assessment/archive-get?id={id}、GET /hrm/performance/assessment/archive-process-record-list?id={id} 查看单次考核的指标得分与动作时间线。

# 删除员工全部档案

在绩效档案首页勾选一名或多名员工,点击“批量删除”并确认,index.vue 调用 DELETE /hrm/performance/assessment/archive-employee-delete?employeeIds={employeeIds}。该操作需要 hrm:performance:archive:delete 权限,会清理所选员工的全部归档考核,不影响其他员工,也不会处理仍在运行的计划。

# 删除单次档案 / 批量删除

进入个人档案后,可点击单行“删除”,或勾选多次考核后点击“批量删除”。确认后 employee/index.vue 调用 DELETE /hrm/performance/assessment/archive-delete?ids={ids};HrmPerformanceAssessmentController 只删除选中的归档记录,若该员工已无档案,页面返回档案首页。

管理后台 - 绩效档案

# 3. 员工端:我的考核

对应 [HRM 人力资源 -> HRM 员工端 -> 绩效管理 -> KPI 考核] 菜单。一个账号即使拥有 HR 管理菜单,也只能处理 handler_employee_id 与账号绑定员工相匹配的任务;被考核人的结果确认和申诉同样按当前账号绑定员工校验。

# 查询六类任务

@/views/hrm/portal/performance/assessment/index.vue 组合 PerformanceTaskTabs.vue 和 PerformanceTaskTable.vue,提供指标填写、指标确认、指标评分、结果审核、结果确认、申诉确认六个页签,并按待办、已办或已申诉状态展示角标。页面先调用 HrmPortalPerformanceAssessmentController 的 GET /hrm/portal/performance/assessment/task-count 统计数量,再根据页签调用以下分页接口;关键字可匹配姓名、工号或考核名称,切换页签或状态后重新查询。

任务页签 分页接口
指标填写 GET /hrm/portal/performance/assessment/fill-quota-task-page
指标确认 GET /hrm/portal/performance/assessment/target-confirmation-task-page
指标评分 GET /hrm/portal/performance/assessment/review-task-page
结果审核 GET /hrm/portal/performance/assessment/result-audit-task-page
结果确认 GET /hrm/portal/performance/assessment/result-confirmation-task-page
申诉确认 GET /hrm/portal/performance/assessment/appeal-task-page

# 制定指标

在“指标填写 -> 待填写”中点击“制定指标”,打开 review/PerformanceQuotaForm.vue。员工只能在 allow_edit=true 的维度新增、修改或删除指标,并必须补足该维度剩余权重;提交后调用 PUT /hrm/portal/performance/assessment/fill-quota。未开启目标确认的考核直接进入执行中,已开启目标确认的考核则激活配置的确认节点;已填写页签仅提供“详情”,不能再次提交。

# 确认指标

在“指标确认 -> 待确认”中点击“去确认”,打开 process/PerformanceTargetConfirmForm.vue。处理人可点击“确认通过”,也可填写必填原因后点击“退回指标”;表单向 PUT /hrm/portal/performance/assessment/confirm-target 提交通过标记和意见。通过后进入后续阶段,退回后重新激活被考核人的指标填写任务;已确认页签只提供“查看”。

# 指标评分

在“指标评分 -> 待评分”中点击“去评分”,打开 review/PerformanceReviewForm.vue,填写每项分数和按配置要求填写评语。输入变化时调用 POST /hrm/portal/performance/assessment/score-preview,把已完成阶段与当前未提交分数合并试算;只有评分数据齐备时才展示最终等级。点击“提交评分”后调用 PUT /hrm/portal/performance/assessment/score,每个指标写入当前阶段的 hrm_performance_assessment_quota_score。

当前评分节点配置了驳回权限时,抽屉还显示“驳回上一阶段”;填写原因并确认后调用 PUT /hrm/portal/performance/assessment/reject-review-stage,重开上一已完成评分阶段并删除该阶段的指标评分。已评分页签只提供“查看”。

# 审核结果

全部评分完成后,计划开启了结果审核的考核会进入“结果审核”。处理人在待审核页签点击“去审核”,打开 process/PerformanceHandleForm.vue;选择通过会继续下一级或后续流程,选择驳回时必须勾选需要重开的评分节点。确认后调用 PUT /hrm/portal/performance/assessment/handle-result-audit,只重开选中的评分阶段,不会清空其他已完成评分。

# 确认结果 / 提交申诉

管理员发起绩效面谈后,开启结果确认的考核会出现在“结果确认 -> 待确认结果”。员工接受结果时点击“确认结果”并二次确认,PerformanceTaskTable.vue 调用 PUT /hrm/portal/performance/assessment/confirm-result;不同意且当前没有处理中申诉时点击“提交申诉”,在 process/PerformanceAppealForm.vue 填写必填原因、选择希望重开的评分阶段并按需上传附件,再调用 PUT /hrm/portal/performance/assessment/submit-appeal。提交后记录转入“已申诉”,不能重复发起处理中申诉。

# 确认申诉

申诉处理人在“申诉确认 -> 待确认”中点击“去确认”,打开 process/PerformanceHandleForm.vue。点击通过或驳回并确认后,表单调用 PUT /hrm/portal/performance/assessment/handle-appeal:中间级通过会流转到下一级,最终通过会清空最终得分、等级和系数并重开员工选择的评分阶段,任一级驳回则维持原结果并结束考核。已确认页签只提供“查看”。

# 查看考核详情

指标填写、结果确认的记录始终提供“详情”;指标确认、指标评分、结果审核和申诉确认在待办状态只显示对应的“去确认 / 去评分 / 去审核”处理按钮,进入已办后才显示“查看”。点击“详情”或“查看”时打开 detail/index.vue,通过 GET /hrm/portal/performance/assessment/get?id={id}&stageId={stageId} 查询与当前任务相匹配的考核、指标和阶段,再用 GET /hrm/portal/performance/assessment/process-record-list?id={id}&stageId={stageId} 展示流程时间线;详情本身只读。

员工端 - 我的考核

# 4. 员工端:我的绩效档案

对应 [HRM 人力资源 -> HRM 员工端 -> 绩效管理 -> 我的绩效档案] 菜单。该页面只读,不提供删除、修改或查询其他员工档案的操作。

# 查询本人档案

计划归档后,@/views/hrm/portal/performance/assessment/history/index.vue 可按考核名称“搜索”或“重置”,展示本人的计划周期、最终得分、等级、绩效系数和归档时间。页面调用 GET /hrm/portal/performance/assessment/page,HrmPortalPerformanceAssessmentController 按当前账号绑定员工限制数据范围。

# 查看考核详情

点击“查看”进入 detail/index.vue,通过 GET /hrm/portal/performance/assessment/get?id={id} 查询指标与评分结果,并通过 GET /hrm/portal/performance/assessment/process-record-list?id={id} 加载共用的 PerformanceProcessRecordTimeline.vue 流程时间线。详情不会显示管理端的删除按钮或员工任务处理按钮。

员工端 - 我的绩效档案

# 5. 定时任务与薪资衔接

HrmPerformanceAppealTimeoutJob 处理已超过 deadline_time 的申诉节点,按计划配置自动通过或自动拒绝,并写入动作记录。Job 本身不硬编码执行周期,需要在平台“定时任务”中配置。

计划开启同步薪资并设置 paid_for_month 后,薪资模块只读取已归档考核的绩效系数;同一员工同月命中多个计划时,取最新归档记录。当前系数作为衔接数据提供,不会自动乘入月工资的工资项。

【绩效】绩效模板、绩效计划
IM 演示

← 【绩效】绩效模板、绩效计划 IM 演示→

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