gaoluyang
7 天以前 a64ce8440a35f1fbcfaffb4b135bfa12abe0cd95
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
import { requestClient } from '#/api/request';
 
export namespace HrmEmployeeScheduleApi {
  /** 排班记录 */
  export interface EmployeeSchedule {
    id?: number;
    employeeId?: number;
    employeeName?: string;
    employeeNo?: string;
    /** 排班日期 yyyy-MM-dd */
    date?: string;
    shiftId?: number;
    shiftName?: string;
    shiftColor?: string;
    remark?: string;
  }
 
  /** 保存项(整月全量提交,shiftId 为空表示休息/清除) */
  export interface ScheduleItem {
    employeeId: number;
    /** 排班日期 yyyy-MM-dd */
    date: string;
    shiftId?: number | null;
    remark?: string;
  }
 
  /** 按群体批量排班请求 */
  export interface BatchSaveReq {
    /** 部门ID(含下级部门) */
    deptId: number;
    /** 岗位ID,为空表示不限岗位 */
    postId?: number;
    /** 员工状态:1-在职,2-试用,3-离职;为空表示在职及试用 */
    employeeStatus?: number;
    /** 开始日期 yyyy-MM-dd */
    startDate: string;
    /** 结束日期 yyyy-MM-dd */
    endDate: string;
    /** 班次ID,为空表示休息(清除排班) */
    shiftId?: number | null;
    /** none-不休息,single-周日休息,double-周六日休息 */
    restMode?: 'double' | 'none' | 'single';
  }
 
  /** 按群体批量排班结果 */
  export interface BatchSaveResp {
    employeeCount?: number;
    itemCount?: number;
  }
 
  /** 排班日历展示用的请假记录(仅审批通过) */
  export interface ScheduleLeave {
    id?: number;
    employeeId?: number;
    employeeName?: string;
    leaveType?: number;
    leaveTypeName?: string;
    /** 开始时间 yyyy-MM-dd HH:mm:ss */
    startTime?: string;
    /** 结束时间 yyyy-MM-dd HH:mm:ss */
    endTime?: string;
    duration?: number;
  }
}
 
/** 查询某月排班列表 */
export function getEmployeeScheduleList(params: {
  yearMonth: string;
  deptId?: number;
  employeeId?: number;
}) {
  return requestClient.get<HrmEmployeeScheduleApi.EmployeeSchedule[]>(
    '/hrm/employee-schedule/list',
    { params },
  );
}
 
/** 批量保存排班(整月覆盖式:有班次 upsert,无班次删除) */
export function saveEmployeeSchedule(data: HrmEmployeeScheduleApi.ScheduleItem[]) {
  return requestClient.post('/hrm/employee-schedule/save', data);
}
 
/** 按部门+岗位批量排班(一类人一次排完) */
export function batchSaveEmployeeSchedule(data: HrmEmployeeScheduleApi.BatchSaveReq) {
  return requestClient.post<HrmEmployeeScheduleApi.BatchSaveResp>(
    '/hrm/employee-schedule/batch-save',
    data,
  );
}
 
/** 查询日期范围内审批通过的请假记录(排班日历展示用) */
export function getEmployeeScheduleLeaveList(params: {
  startDate: string;
  endDate: string;
}) {
  return requestClient.get<HrmEmployeeScheduleApi.ScheduleLeave[]>(
    '/hrm/employee-schedule/leave-list',
    { params },
  );
}