import { API_BASE_URL, request, type ApiResponse } from "./request";
|
import type { PageResult } from "./purchase";
|
import type { DictData, DeptSimple } from "./crm";
|
|
export interface SimpleOption { id: number; name: string; code?: string; parentId?: number; status?: number }
|
export interface HrmAttachment { id: number; name?: string; url?: string; path?: string; size?: number }
|
export interface UserOption { id: number; nickname?: string; username?: string; deptId?: number; deptName?: string }
|
export interface EmployeeSimple { id: number; employeeNo: string; name: string; deptName?: string; employeeStatus?: number }
|
export interface Employee {
|
id?: number; deptId?: number; deptName?: string; postId?: number; postName?: string;
|
roleIds?: number[]; roleNames?: string; employeeNo?: string; name?: string; gender?: number; birthday?: string; phone?: string;
|
email?: string; idCard?: string; nation?: string; marriageStatus?: string; age?: number; education?: string;
|
politicalStatus?: string; hireDate?: string; regularDate?: string; leaveDate?: string; employeeStatus?: number;
|
annualLeaveBalance?: number; sickLeaveBalance?: number; salaryStructureId?: number; baseSalary?: number; bankName?: string; bankAccount?: string;
|
address?: string; remark?: string; createTime?: string;
|
}
|
export interface EmployeeContract {
|
id?: number; parentId?: number; parentNo?: string; isCurrent?: boolean; contractNo?: string; employeeId?: number;
|
employeeName?: string; employeeNo?: string; deptName?: string; contractType?: number; contractTermType?: number;
|
signCompany?: string; signDate?: string; startDate?: string; endDate?: string; probationStartDate?: string;
|
probationEndDate?: string; probationSalary?: number; regularSalary?: number; terminateStatus?: number;
|
terminateDate?: string; terminateReason?: string; status?: number; blobIds?: number[]; attachmentList?: HrmAttachment[];
|
remark?: string; createTime?: string;
|
}
|
export interface Leave {
|
id?: number; userId?: number; userName?: string; deptId?: number; deptName?: string; leaveType?: number; startTime?: string;
|
endTime?: string; duration?: number; reason?: string; status?: number; processInstanceId?: string;
|
blobIds?: number[]; attachmentList?: HrmAttachment[]; remark?: string; createTime?: string;
|
}
|
export interface Transfer {
|
id?: number; no?: string; userId?: number; userName?: string; currentDeptId?: number; currentDeptName?: string;
|
currentPostId?: number; currentPostName?: string; targetDeptId?: number; targetDeptName?: string;
|
targetPostId?: number; targetPostName?: string; transferType?: number; effectiveDate?: string; reason?: string;
|
status?: number; processInstanceId?: string; blobIds?: number[]; attachmentList?: HrmAttachment[];
|
remark?: string; createTime?: string;
|
}
|
export interface Resignation {
|
id?: number; no?: string; userId?: number; userName?: string; deptId?: number; deptName?: string;
|
resignationType?: number; resignationTypeName?: string; expectedDate?: string; actualDate?: string;
|
reason?: string; handoverUserId?: number; handoverUserName?: string; handoverStatus?: number;
|
handoverStatusName?: string; handoverRemark?: string; status?: number; statusName?: string;
|
processInstanceId?: string; blobIds?: number[]; attachmentList?: HrmAttachment[]; remark?: string; createTime?: string;
|
}
|
export interface Overtime {
|
id?: number; no?: string; userId?: number; employeeId?: number; employeeName?: string; employeeNo?: string;
|
deptId?: number; deptName?: string; postName?: string; overtimeDate?: string; startTime?: string; endTime?: string;
|
duration?: number; overtimeType?: number; overtimeTypeName?: string; crossDay?: boolean; mealDeduction?: boolean;
|
mealDeductionHours?: number; reason?: string; relatedType?: number; relatedCode?: string; workContent?: string;
|
status?: number; statusName?: string; processInstanceId?: string; createTime?: string;
|
}
|
export interface ApproveProcess { key: string; name: string }
|
export interface AttendanceRule {
|
id?: number; name?: string; deptId?: number; deptName?: string; workStartTime?: string; workEndTime?: string;
|
lateAllowMinutes?: number; earlyAllowMinutes?: number; overtimeThreshold?: number; status?: number; remark?: string;
|
locationName?: string; locationAddress?: string; longitude?: number; latitude?: number; radiusMeters?: number;
|
locationRequired?: boolean; coordinateSystem?: "WGS84";
|
}
|
export interface AttendanceRecord {
|
id?: number; userId?: number; userName?: string; deptId?: number; deptName?: string; phone?: string; date?: string;
|
clockInTime?: string; clockOutTime?: string; clockInType?: number; clockInTypeName?: string; clockOutType?: number;
|
clockOutTypeName?: string; workHours?: number; overtimeHours?: number; location?: string; dataSource?: number;
|
leaveFlag?: boolean; leaveHours?: number; leaveTypes?: string;
|
dataSourceName?: string; remark?: string; createTime?: string;
|
}
|
export interface AttendanceClockable {
|
clockIn?: boolean; clockOut?: boolean; nextAction?: "in" | "out" | "none"; message?: string;
|
}
|
export interface AttendanceMyStatus {
|
userId?: number; employeeId?: number; employeeName?: string; deptId?: number; deptName?: string;
|
date?: string; serverTime?: string; workDay?: boolean; restDayReason?: string | null;
|
onLeave?: boolean; leaveHours?: number; leaveTypeNames?: string;
|
rule?: AttendanceRule | null; record?: AttendanceRecord | null; clockable?: AttendanceClockable;
|
}
|
export interface AttendanceClockRequest {
|
longitude?: number; latitude?: number; accuracy?: number; coordinateSystem?: "WGS84";
|
}
|
export interface AttendanceClockResponse {
|
record: AttendanceRecord;
|
locationName?: string;
|
distanceMeters?: number;
|
radiusMeters?: number;
|
withinRange?: boolean;
|
}
|
|
const header = (accessToken: string) => ({ Authorization: `Bearer ${accessToken}` });
|
function query(params: Record<string, string | number | boolean | undefined>) {
|
const content = Object.entries(params).filter(([, value]) => value !== undefined && value !== "")
|
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`).join("&");
|
return content ? `?${content}` : "";
|
}
|
|
export function getHrmDicts(token: string) { return request<DictData[]>("/system/dict-data/simple-list", { header: header(token) }); }
|
export function getHrmDeptList(token: string) { return request<DeptSimple[]>("/system/dept/simple-list", { header: header(token) }); }
|
export function getHrmPostList(token: string) { return request<SimpleOption[]>("/system/post/simple-list", { header: header(token) }); }
|
export function getHrmRoleList(token: string) { return request<SimpleOption[]>("/system/role/simple-list", { header: header(token) }); }
|
export function getHrmUserList(token: string) { return request<UserOption[]>("/system/user/simple-list", { header: header(token) }); }
|
export function getEmployeeSimpleList(token: string) { return request<EmployeeSimple[]>("/hrm/employee/simple-list", { header: header(token) }); }
|
export function getSalaryStructureList(token: string) { return request<SimpleOption[]>(`/hrm/salary/structure/list${query({ status: 0 })}`, { header: header(token) }); }
|
export function getAutoApprovalPolicy(token: string) { return request<boolean>("/bpm/process-auto-approve/ui-policy", { header: header(token) }); }
|
export function getAttendanceMyStatus(token: string, date?: string) { return request<AttendanceMyStatus>(`/hrm/attendance/record/my-status${query({ date })}`, { header: header(token) }); }
|
export function clockIn(token: string, data: AttendanceClockRequest) { return request<AttendanceClockResponse>("/hrm/attendance/record/clock-in", { method: "POST", data, header: header(token) }); }
|
export function clockOut(token: string, data: AttendanceClockRequest) { return request<AttendanceClockResponse>("/hrm/attendance/record/clock-out", { method: "POST", data, header: header(token) }); }
|
|
export function uploadHrmFile(token: string, filePath: string) {
|
return new Promise<HrmAttachment>((resolve, reject) => {
|
uni.uploadFile({
|
url: `${API_BASE_URL}/system/storage-blob/upload`,
|
filePath,
|
name: "files",
|
header: header(token),
|
formData: { directory: "hrm" },
|
success: response => {
|
try {
|
const result = JSON.parse(response.data) as ApiResponse<HrmAttachment[]>;
|
if (result.code === 0 && result.data?.[0]) resolve(result.data[0]);
|
else reject(new Error(result.msg || "文件上传失败"));
|
} catch {
|
reject(new Error("文件上传响应解析失败"));
|
}
|
},
|
fail: () => reject(new Error("文件上传失败,请检查网络后重试"))
|
});
|
});
|
}
|
|
export function chooseHrmFiles(count = 10): Promise<Array<{ path: string; name?: string }>> {
|
return new Promise((resolve, reject) => {
|
const complete = (files: Array<{ path: string; name?: string }>) => resolve(files.filter(item => Boolean(item.path)));
|
// #ifdef MP-WEIXIN
|
uni.chooseMessageFile({ count, type: "file", success: result => complete((result.tempFiles || []).map(item => ({ path: item.path, name: item.name }))), fail: reject });
|
// #endif
|
// #ifndef MP-WEIXIN
|
uni.chooseFile({ count, success: result => complete((result.tempFiles || []).map(item => ({ path: item.path, name: item.name }))), fail: reject });
|
// #endif
|
});
|
}
|
|
export function getEmployeePage(token: string, params: { pageNo: number; pageSize: number; name?: string; employeeNo?: string; employeeStatus?: number }) { return request<PageResult<Employee>>(`/hrm/employee/page${query(params)}`, { header: header(token) }); }
|
export function getEmployee(token: string, id: number) { return request<Employee>(`/hrm/employee/get${query({ id })}`, { header: header(token) }); }
|
export function createEmployee(token: string, data: Employee) { return request<number>("/hrm/employee/create", { method: "POST", data, header: header(token) }); }
|
export function updateEmployee(token: string, data: Employee) { return request<boolean>("/hrm/employee/update", { method: "PUT", data, header: header(token) }); }
|
export function deleteEmployee(token: string, id: number) { return request<boolean>(`/hrm/employee/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
|
export function getContractPage(token: string, params: { pageNo: number; pageSize: number; contractNo?: string; employeeId?: number; status?: number }) { return request<PageResult<EmployeeContract>>(`/hrm/employee-contract/page${query(params)}`, { header: header(token) }); }
|
export function getContract(token: string, id: number) { return request<EmployeeContract>(`/hrm/employee-contract/get${query({ id })}`, { header: header(token) }); }
|
export function createContract(token: string, data: EmployeeContract) { return request<number>("/hrm/employee-contract/create", { method: "POST", data, header: header(token) }); }
|
export function updateContract(token: string, data: EmployeeContract) { return request<boolean>("/hrm/employee-contract/update", { method: "PUT", data, header: header(token) }); }
|
export function terminateContract(token: string, data: { id: number; terminateStatus: number; terminateDate: string; terminateReason: string }) { return request<boolean>("/hrm/employee-contract/terminate", { method: "PUT", data, header: header(token) }); }
|
export function deleteContract(token: string, id: number) { return request<boolean>(`/hrm/employee-contract/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
|
export function getLeavePage(token: string, params: { pageNo: number; pageSize: number; userId?: number; leaveType?: number; status?: number }) { return request<PageResult<Leave>>(`/hrm/leave/page${query(params)}`, { header: header(token) }); }
|
export function getLeave(token: string, id: number) { return request<Leave>(`/hrm/leave/get${query({ id })}`, { header: header(token) }); }
|
export function createLeave(token: string, data: Leave) { return request<number>("/hrm/leave/create", { method: "POST", data, header: header(token) }); }
|
export function updateLeave(token: string, data: Leave) { return request<boolean>("/hrm/leave/update", { method: "PUT", data, header: header(token) }); }
|
export function deleteLeave(token: string, id: number) { return request<boolean>(`/hrm/leave/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function submitLeave(token: string, id: number, processDefinitionKey: string) { return request<boolean>(`/hrm/leave/submit${query({ id, processDefinitionKey })}`, { method: "POST", header: header(token) }); }
|
export function getLeaveProcesses(token: string) { return request<ApproveProcess[]>("/hrm/leave/approve-process-definition-list", { header: header(token) }); }
|
|
export function getTransferPage(token: string, params: { pageNo: number; pageSize: number; userId?: number; transferType?: number; status?: number }) { return request<PageResult<Transfer>>(`/hrm/transfer/page${query(params)}`, { header: header(token) }); }
|
export function getTransfer(token: string, id: number) { return request<Transfer>(`/hrm/transfer/get${query({ id })}`, { header: header(token) }); }
|
export function createTransfer(token: string, data: Transfer) { return request<number>("/hrm/transfer/create", { method: "POST", data, header: header(token) }); }
|
export function updateTransfer(token: string, data: Transfer) { return request<boolean>("/hrm/transfer/update", { method: "PUT", data, header: header(token) }); }
|
export function deleteTransfer(token: string, id: number) { return request<boolean>(`/hrm/transfer/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function submitTransfer(token: string, id: number, processDefinitionKey: string) { return request<boolean>(`/hrm/transfer/submit${query({ id, processDefinitionKey })}`, { method: "POST", header: header(token) }); }
|
export function getTransferProcesses(token: string) { return request<ApproveProcess[]>("/hrm/transfer/approve-process-definition-list", { header: header(token) }); }
|
|
export function getResignationPage(token: string, params: { pageNo: number; pageSize: number; userId?: number; resignationType?: number; status?: number }) { return request<PageResult<Resignation>>(`/hrm/resignation/page${query(params)}`, { header: header(token) }); }
|
export function getResignation(token: string, id: number) { return request<Resignation>(`/hrm/resignation/get${query({ id })}`, { header: header(token) }); }
|
export function createResignation(token: string, data: Resignation) { return request<number>("/hrm/resignation/create", { method: "POST", data, header: header(token) }); }
|
export function updateResignation(token: string, data: Resignation) { return request<boolean>("/hrm/resignation/update", { method: "PUT", data, header: header(token) }); }
|
export function deleteResignation(token: string, id: number) { return request<boolean>(`/hrm/resignation/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function submitResignation(token: string, id: number, processDefinitionKey: string) { return request<boolean>(`/hrm/resignation/submit${query({ id, processDefinitionKey })}`, { method: "POST", header: header(token) }); }
|
export function getResignationProcesses(token: string) { return request<ApproveProcess[]>("/hrm/resignation/approve-process-definition-list", { header: header(token) }); }
|
export function updateResignationHandover(token: string, data: { id: number; handoverStatus: number }) { return request<boolean>("/hrm/resignation/handover", { method: "PUT", data, header: header(token) }); }
|
|
export function getOvertimePage(token: string, params: { pageNo: number; pageSize: number; userId?: number; overtimeType?: number; status?: number }) { return request<PageResult<Overtime>>(`/hrm/overtime/page${query(params)}`, { header: header(token) }); }
|
export function getOvertime(token: string, id: number) { return request<Overtime>(`/hrm/overtime/get${query({ id })}`, { header: header(token) }); }
|
export function getCurrentOvertimeApplicant(token: string) { return request<Partial<Overtime>>("/hrm/overtime/current-applicant", { header: header(token) }); }
|
export function createOvertime(token: string, data: Overtime) { return request<number>("/hrm/overtime/create", { method: "POST", data, header: header(token) }); }
|
export function updateOvertime(token: string, data: Overtime) { return request<boolean>("/hrm/overtime/update", { method: "PUT", data, header: header(token) }); }
|
export function deleteOvertime(token: string, id: number) { return request<boolean>(`/hrm/overtime/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function submitOvertime(token: string, id: number, processDefinitionKey: string) { return request<boolean>(`/hrm/overtime/submit${query({ id, processDefinitionKey })}`, { method: "POST", header: header(token) }); }
|
export function cancelOvertime(token: string, id: number) { return request<boolean>(`/hrm/overtime/cancel${query({ id })}`, { method: "POST", header: header(token) }); }
|
export function getOvertimeProcesses(token: string) { return request<ApproveProcess[]>("/hrm/overtime/approve-process-definition-list", { header: header(token) }); }
|
|
// HRM management modules
|
export interface HrmRow { id?: number; [key: string]: unknown }
|
export interface Shift extends HrmRow { name?: string; startTime?: string; endTime?: string; workHours?: number; crossDay?: boolean; color?: string; status?: number; remark?: string }
|
export interface Holiday extends HrmRow { name?: string; startDate?: string; endDate?: string; type?: number; typeName?: string; isLegal?: number; remark?: string }
|
export interface AttendanceSummary extends HrmRow { userId?: number; userName?: string; deptId?: number; deptName?: string; yearMonth?: string; workDays?: number; actualDays?: number; lateCount?: number; earlyCount?: number; absentCount?: number; overtimeHours?: number; leaveHours?: number; remark?: string }
|
export interface AttendanceException extends HrmRow { userId?: number; userName?: string; deptName?: string; date?: string; exceptionType?: number; exceptionTypeName?: string; reason?: string; blobIds?: number[]; attachmentList?: HrmAttachment[]; status?: number; processInstanceId?: string; remark?: string; createTime?: string }
|
export interface EmployeeSchedule extends HrmRow { employeeId?: number; employeeName?: string; employeeNo?: string; date?: string; shiftId?: number; shiftName?: string; shiftColor?: string; remark?: string }
|
export interface SalaryStructure extends HrmRow { name?: string; overtimePayRatio?: number; restDayOvertimePayRatio?: number; legalHolidayOvertimePayRatio?: number; status?: number; remark?: string }
|
export interface SocialSecurityScheme extends HrmRow { name?: string; effectiveDate?: string; pensionCompanyRatio?: number; pensionPersonalRatio?: number; medicalCompanyRatio?: number; medicalPersonalRatio?: number; unemploymentCompanyRatio?: number; unemploymentPersonalRatio?: number; workInjuryRatio?: number; maternityRatio?: number; housingFundCompanyRatio?: number; housingFundPersonalRatio?: number; status?: number; remark?: string }
|
export interface TaxRateConfig extends HrmRow { name?: string; effectiveDate?: string; level?: number; minAmount?: number; maxAmount?: number; taxRate?: number; quickDeduction?: number }
|
export interface LeaveTypeConfig extends HrmRow { leaveType?: number; name?: string; deductionRatio?: number; remark?: string; status?: number }
|
export interface EmployeeSocialSecurity extends HrmRow { userId?: number; userName?: string; deptName?: string; socialSecuritySchemeId?: number; schemeName?: string; socialSecurityBase?: number; housingFundBase?: number; effectiveDate?: string; status?: number; remark?: string }
|
export interface SalaryCalculation extends HrmRow { no?: string; period?: string; userId?: number; userName?: string; deptId?: number; deptName?: string; baseSalary?: number; performanceSalary?: number; overtimePay?: number; mealAllowance?: number; transportAllowance?: number; otherAllowance?: number; socialSecurityDeduction?: number; housingFundDeduction?: number; taxDeduction?: number; otherDeduction?: number; leaveDeduction?: number; actualSalary?: number; workDays?: number; overtimeHours?: number; totalWorkHours?: number; status?: number; statusName?: string; remark?: string; createTime?: string }
|
export interface SalaryPayment extends HrmRow { no?: string; period?: string; totalAmount?: number; totalCount?: number; paymentMethod?: number; paymentTime?: string; status?: number; blobIds?: number[]; attachmentList?: HrmAttachment[]; remark?: string; createTime?: string }
|
export interface SalaryPaymentDetail extends SalaryCalculation { paymentId?: number; calculationId?: number; paymentTime?: string }
|
|
export function getShiftPage(token: string, params: Record<string, unknown>) { return request<PageResult<Shift>>(`/hrm/shift/page${query(params as Record<string, string | number | boolean | undefined>)}`, { header: header(token) }); }
|
export function getShiftList(token: string) { return request<Shift[]>("/hrm/shift/list", { header: header(token) }); }
|
export function getShift(token: string, id: number) { return request<Shift>(`/hrm/shift/get${query({ id })}`, { header: header(token) }); }
|
export function createShift(token: string, data: Shift) { return request<number>("/hrm/shift/create", { method: "POST", data: data as Record<string, unknown>, header: header(token) }); }
|
export function updateShift(token: string, data: Shift) { return request<boolean>("/hrm/shift/update", { method: "PUT", data: data as Record<string, unknown>, header: header(token) }); }
|
export function deleteShift(token: string, id: number) { return request<boolean>(`/hrm/shift/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function getEmployeeScheduleList(token: string, params: { yearMonth: string; deptId?: number; employeeId?: number }) { return request<EmployeeSchedule[]>(`/hrm/employee-schedule/list${query(params)}`, { header: header(token) }); }
|
export function saveEmployeeSchedule(token: string, data: Array<{ employeeId: number; date: string; shiftId?: number | null; remark?: string }>) { return request<boolean>("/hrm/employee-schedule/save", { method: "POST", data: data as unknown as Record<string, unknown>, header: header(token) }); }
|
|
export function getAttendanceRulePage(token: string, params: Record<string, unknown>) { return request<PageResult<AttendanceRule>>(`/hrm/attendance/rule/page${query(params as Record<string, string | number | boolean | undefined>)}`, { header: header(token) }); }
|
export function getAttendanceRule(token: string, id: number) { return request<AttendanceRule>(`/hrm/attendance/rule/get${query({ id })}`, { header: header(token) }); }
|
export function createAttendanceRule(token: string, data: AttendanceRule) { return request<number>("/hrm/attendance/rule/create", { method: "POST", data: data as unknown as Record<string, unknown>, header: header(token) }); }
|
export function updateAttendanceRule(token: string, data: AttendanceRule) { return request<boolean>("/hrm/attendance/rule/update", { method: "PUT", data: data as unknown as Record<string, unknown>, header: header(token) }); }
|
export function deleteAttendanceRule(token: string, id: number) { return request<boolean>(`/hrm/attendance/rule/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function getAttendanceRecordPage(token: string, params: Record<string, unknown>) { return request<PageResult<AttendanceRecord>>(`/hrm/attendance/record/page${query(params as Record<string, string | number | boolean | undefined>)}`, { header: header(token) }); }
|
export function getHolidayPage(token: string, params: Record<string, unknown>) { return request<PageResult<Holiday>>(`/hrm/attendance/holiday/page${query(params as Record<string, string | number | boolean | undefined>)}`, { header: header(token) }); }
|
export function getHoliday(token: string, id: number) { return request<Holiday>(`/hrm/attendance/holiday/get${query({ id })}`, { header: header(token) }); }
|
export function createHoliday(token: string, data: Holiday) { return request<number>("/hrm/attendance/holiday/create", { method: "POST", data: data as Record<string, unknown>, header: header(token) }); }
|
export function updateHoliday(token: string, data: Holiday) { return request<boolean>("/hrm/attendance/holiday/update", { method: "PUT", data: data as Record<string, unknown>, header: header(token) }); }
|
export function deleteHoliday(token: string, id: number) { return request<boolean>(`/hrm/attendance/holiday/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function getAttendanceSummaryPage(token: string, params: Record<string, unknown>) { return request<PageResult<AttendanceSummary>>(`/hrm/attendance/summary/page${query(params as Record<string, string | number | boolean | undefined>)}`, { header: header(token) }); }
|
export function generateAttendanceSummary(token: string, params: { yearMonth: string; deptId?: number; userId?: number }) { return request<boolean>(`/hrm/attendance/summary/generate${query(params)}`, { method: "POST", header: header(token) }); }
|
export function getAttendanceExceptionPage(token: string, params: Record<string, unknown>) { return request<PageResult<AttendanceException>>(`/hrm/attendance/exception/page${query(params as Record<string, string | number | boolean | undefined>)}`, { header: header(token) }); }
|
export function getAttendanceException(token: string, id: number) { return request<AttendanceException>(`/hrm/attendance/exception/get${query({ id })}`, { header: header(token) }); }
|
export function createAttendanceException(token: string, data: AttendanceException) { return request<number>("/hrm/attendance/exception/create", { method: "POST", data: data as Record<string, unknown>, header: header(token) }); }
|
export function submitAttendanceException(token: string, id: number, processDefinitionKey: string) { return request<boolean>(`/hrm/attendance/exception/submit${query({ id, processDefinitionKey })}`, { method: "POST", header: header(token) }); }
|
export function getAttendanceExceptionProcesses(token: string) { return request<ApproveProcess[]>("/hrm/attendance/exception/approve-process-list", { header: header(token) }); }
|
|
export function getSalaryStructureRows(token: string, params: { name?: string; status?: number } = {}) { return request<SalaryStructure[]>(`/hrm/salary/structure/list${query(params)}`, { header: header(token) }); }
|
export function createSalaryStructure(token: string, data: SalaryStructure) { return request<number>("/hrm/salary/structure/create", { method: "POST", data: data as Record<string, unknown>, header: header(token) }); }
|
export function updateSalaryStructure(token: string, data: SalaryStructure) { return request<boolean>("/hrm/salary/structure/update", { method: "PUT", data: data as Record<string, unknown>, header: header(token) }); }
|
export function deleteSalaryStructure(token: string, id: number) { return request<boolean>(`/hrm/salary/structure/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function getSocialSecuritySchemeList(token: string, params: { name?: string; status?: number } = {}) { return request<SocialSecurityScheme[]>(`/hrm/salary/social-security-scheme/list${query(params)}`, { header: header(token) }); }
|
export function createSocialSecurityScheme(token: string, data: SocialSecurityScheme) { return request<number>("/hrm/salary/social-security-scheme/create", { method: "POST", data: data as Record<string, unknown>, header: header(token) }); }
|
export function updateSocialSecurityScheme(token: string, data: SocialSecurityScheme) { return request<boolean>("/hrm/salary/social-security-scheme/update", { method: "PUT", data: data as Record<string, unknown>, header: header(token) }); }
|
export function deleteSocialSecurityScheme(token: string, id: number) { return request<boolean>(`/hrm/salary/social-security-scheme/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function getTaxRateConfigList(token: string) { return request<TaxRateConfig[]>("/hrm/salary/tax-rate-config/list", { header: header(token) }); }
|
export function createTaxRateConfigList(token: string, data: TaxRateConfig[]) { return request<number>("/hrm/salary/tax-rate-config/create-list", { method: "POST", data: data as unknown as Record<string, unknown>, header: header(token) }); }
|
export function updateTaxRateConfig(token: string, data: TaxRateConfig) { return request<boolean>("/hrm/salary/tax-rate-config/update", { method: "PUT", data: data as Record<string, unknown>, header: header(token) }); }
|
export function deleteTaxRateConfig(token: string, id: number) { return request<boolean>(`/hrm/salary/tax-rate-config/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function getLeaveTypeConfigList(token: string) { return request<LeaveTypeConfig[]>("/hrm/leave-type-config/list", { header: header(token) }); }
|
export function createLeaveTypeConfig(token: string, data: LeaveTypeConfig) { return request<number>("/hrm/leave-type-config/create", { method: "POST", data: data as Record<string, unknown>, header: header(token) }); }
|
export function updateLeaveTypeConfig(token: string, data: LeaveTypeConfig) { return request<boolean>("/hrm/leave-type-config/update", { method: "PUT", data: data as Record<string, unknown>, header: header(token) }); }
|
export function deleteLeaveTypeConfig(token: string, id: number) { return request<boolean>(`/hrm/leave-type-config/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function getEmployeeSocialSecurityPage(token: string, params: Record<string, unknown>) { return request<PageResult<EmployeeSocialSecurity>>(`/hrm/salary/employee-social-security/page${query(params as Record<string, string | number | boolean | undefined>)}`, { header: header(token) }); }
|
export function getEmployeeSocialSecurityHistory(token: string, userId: number) { return request<EmployeeSocialSecurity[]>(`/hrm/salary/employee-social-security/list-by-user${query({ userId })}`, { header: header(token) }); }
|
export function createEmployeeSocialSecurity(token: string, data: EmployeeSocialSecurity) { return request<number>("/hrm/salary/employee-social-security/create", { method: "POST", data: data as Record<string, unknown>, header: header(token) }); }
|
export function updateEmployeeSocialSecurity(token: string, data: EmployeeSocialSecurity) { return request<boolean>("/hrm/salary/employee-social-security/update", { method: "PUT", data: data as Record<string, unknown>, header: header(token) }); }
|
export function deleteEmployeeSocialSecurity(token: string, id: number) { return request<boolean>(`/hrm/salary/employee-social-security/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function getSalaryCalculationPage(token: string, params: Record<string, unknown>) { return request<PageResult<SalaryCalculation>>(`/hrm/salary/calculation/page${query(params as Record<string, string | number | boolean | undefined>)}`, { header: header(token) }); }
|
export function calculateSalary(token: string, params: { period: string; deptId?: number }) { return request<boolean>(`/hrm/salary/calculation/calculate${query(params)}`, { method: "POST", header: header(token) }); }
|
export function confirmSalary(token: string, ids: number[]) { return request<boolean>("/hrm/salary/calculation/confirm", { method: "POST", data: { ids }, header: header(token) }); }
|
export function revokeSalary(token: string, ids: number[]) { return request<boolean>("/hrm/salary/calculation/revoke", { method: "POST", data: { ids }, header: header(token) }); }
|
export function deleteSalaryCalculation(token: string, id: number) { return request<boolean>(`/hrm/salary/calculation/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|
export function getSalaryPaymentPage(token: string, params: Record<string, unknown>) { return request<PageResult<SalaryPayment>>(`/hrm/salary/payment/page${query(params as Record<string, string | number | boolean | undefined>)}`, { header: header(token) }); }
|
export function getSalaryPaymentDetails(token: string, paymentId: number) { return request<SalaryPaymentDetail[]>(`/hrm/salary/payment/detail/list${query({ paymentId })}`, { header: header(token) }); }
|
export function generateSalaryPayment(token: string, period: string) { return request<number>(`/hrm/salary/payment/generate${query({ period })}`, { method: "POST", header: header(token) }); }
|
export function paySalary(token: string, id: number) { return request<boolean>(`/hrm/salary/payment/pay${query({ id })}`, { method: "POST", header: header(token) }); }
|
export function paySalaryDetails(token: string, detailIds: number[]) { return request<boolean>("/hrm/salary/payment/pay-detail", { method: "POST", data: { detailIds }, header: header(token) }); }
|
export function revokeSalaryPaymentDetails(token: string, detailIds: number[]) { return request<boolean>("/hrm/salary/payment/revoke-detail", { method: "POST", data: { detailIds }, header: header(token) }); }
|
export function deleteSalaryPayment(token: string, id: number) { return request<boolean>(`/hrm/salary/payment/delete${query({ id })}`, { method: "DELETE", header: header(token) }); }
|