liu
3 天以前 91eff4781fa4142d1f62d30a0fa1de5cae424eaf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
import type { PageParam, PageResult } from '@vben/request';
 
import { requestClient } from '#/api/request';
 
export namespace HrmPerformanceAppraiseApi {
  /** 考核指标 */
  export interface AppraiseItem {
    id?: number;
    appraiseId?: number;
    itemName?: string; // 指标名称
    weight?: number; // 权重
    scoringStandard?: string; // 评分标准
    scorerType?: number; // 评分人类型:1自评 2上级评
    sort?: number; // 排序
    /** 评分时回填用 */
    selfScore?: number;
    superiorScore?: number;
  }
 
  /** 考核结果指标明细 */
  export interface ResultItem {
    id?: number;
    resultId?: number;
    itemId?: number;
    itemName?: string;
    weight?: number;
    selfScore?: number;
    superiorScore?: number;
  }
 
  /** 绩效考核方案 */
  export interface Appraise {
    id?: number;
    name?: string; // 方案名称
    periodType?: number; // 考核周期类型:1月度 2季度 3年度
    period?: string; // 考核周期描述
    scopeType?: number; // 考核范围类型:1全部员工 2指定班组
    status?: number; // 方案状态:0草稿 10已发布 20进行中 30已完成
    statusName?: string;
    auditStatus?: number; // 审批状态:0未提交 10审批中 20通过 30驳回 40已取消
    auditStatusName?: string;
    // 以下为审核派生字段,由后端在审核时写入,前端只读展示
    reviewerId?: number; // 审核人ID(实际执行审核的用户)
    reviewerName?: string; // 审核人姓名
    reviewTime?: string; // 审核时间
    reviewRemark?: string; // 审核意见(审核通过时的意见 / 审核不通过时的原因)
    remark?: string;
    itemCount?: number; // 考核指标数
    resultCount?: number; // 已评分人数
    createTime?: string;
  }
 
  /** 考核结果(按员工聚合) */
  export interface AppraiseResult {
    id?: number;
    appraiseId?: number;
    employeeId?: number;
    employeeName?: string;
    selfScore?: number; // 自评总分
    superiorScore?: number; // 上级评总分
    finalScore?: number; // 综合得分
    grade?: number; // 档级:1优秀 2良好 3合格 4待改进
    comment?: string; // 评语
    items?: ResultItem[]; // 指标评分明细
  }
}
 
/** 创建绩效考核方案 */
export function createAppraise(data: HrmPerformanceAppraiseApi.Appraise) {
  return requestClient.post<number>('/hrm/performance-appraise/create', data);
}
 
/** 更新绩效考核方案 */
export function updateAppraise(data: HrmPerformanceAppraiseApi.Appraise) {
  return requestClient.put<boolean>('/hrm/performance-appraise/update', data);
}
 
/** 删除绩效考核方案 */
export function deleteAppraise(ids: number[]) {
  return requestClient.delete<boolean>('/hrm/performance-appraise/delete', {
    params: { ids: ids.join(',') },
  });
}
 
/** 获取绩效考核方案 */
export function getAppraise(id: number) {
  return requestClient.get<HrmPerformanceAppraiseApi.Appraise>(
    `/hrm/performance-appraise/get?id=${id}`,
  );
}
 
/** 获取绩效考核方案分页 */
export function getAppraisePage(params: PageParam) {
  return requestClient.get<PageResult<HrmPerformanceAppraiseApi.Appraise>>(
    '/hrm/performance-appraise/page',
    { params },
  );
}
 
/** 获取考核指标列表 */
export function getAppraiseItemList(appraiseId: number) {
  return requestClient.get<HrmPerformanceAppraiseApi.AppraiseItem[]>(
    `/hrm/performance-appraise/item-list?appraiseId=${appraiseId}`,
  );
}
 
/** 保存考核指标(整表替换) */
export function saveAppraiseItems(data: {
  appraiseId: number;
  items: HrmPerformanceAppraiseApi.AppraiseItem[];
}) {
  return requestClient.post<boolean>('/hrm/performance-appraise/item-save', data);
}
 
/**
 * 提交绩效考核方案审批(草稿 / 审核不通过 → 审批中)
 *
 * 审批人由「系统管理 - 审批配置」按业务类型(performance_appraise_approve)统一配置,提交时无需指定。
 */
export function submitAppraise(id: number) {
  return requestClient.put<boolean>('/hrm/performance-appraise/submit', null, {
    params: { id },
  });
}
 
/** 获得绩效考核方案的审批人编号集合,供列表页判断是否展示审核按钮 */
export function getAppraiseApproverIds() {
  return requestClient.get<number[]>('/hrm/performance-appraise/approver-ids');
}
 
/**
 * 审核绩效考核方案(审批中 → 审核通过 / 审核不通过)
 *
 * 仅审批配置中的审批人可调用(多人时或签);pass=false 时 reviewRemark(不通过原因)必填。
 */
export function auditAppraise(
  id: number,
  pass: boolean,
  reviewRemark?: string,
) {
  return requestClient.put<boolean>('/hrm/performance-appraise/audit', {
    id,
    pass,
    reviewRemark,
  });
}
 
/** 获取考核结果分页 */
export function getAppraiseResultPage(params: PageParam) {
  return requestClient.get<PageResult<HrmPerformanceAppraiseApi.AppraiseResult>>(
    '/hrm/performance-appraise/result-page',
    { params },
  );
}
 
/** 保存员工考核结果(自动计算综合得分与档级) */
export function saveAppraiseResult(data: {
  appraiseId: number;
  employeeId: number;
  comment?: string;
  items: { itemId: number; selfScore?: number; superiorScore?: number }[];
}) {
  return requestClient.post<boolean>('/hrm/performance-appraise/result-save', data);
}
 
/** 获取员工考核结果(含指标明细) */
export function getAppraiseResult(appraiseId: number, employeeId: number) {
  return requestClient.get<HrmPerformanceAppraiseApi.AppraiseResult>(
    `/hrm/performance-appraise/result?appraiseId=${appraiseId}&employeeId=${employeeId}`,
  );
}