98 行
3.1 KiB
TypeScript
98 行
3.1 KiB
TypeScript
import { apiRequestBlob, type ApiBlobResponse } from "./http";
|
|
|
|
export async function exportReimbursements(params: {
|
|
format: "csv" | "xlsx";
|
|
status?: string;
|
|
scope?: "own" | "all";
|
|
}) {
|
|
const qs = new URLSearchParams();
|
|
qs.set("format", params.format);
|
|
if (params.status) qs.set("status", params.status);
|
|
if (params.scope) qs.set("scope", params.scope);
|
|
|
|
return apiRequestBlob(`/api/exports/reimbursements?${qs.toString()}`);
|
|
}
|
|
|
|
export async function exportInvoicePool(params: {
|
|
format: "csv" | "xlsx";
|
|
status?: string;
|
|
ownerScope?: "own" | "all";
|
|
}) {
|
|
const qs = new URLSearchParams();
|
|
qs.set("format", params.format);
|
|
if (params.status) qs.set("status", params.status);
|
|
if (params.ownerScope) qs.set("ownerScope", params.ownerScope);
|
|
|
|
return apiRequestBlob(`/api/exports/invoice-pool?${qs.toString()}`);
|
|
}
|
|
|
|
export async function exportAuditLogs(params: {
|
|
format: "csv" | "xlsx";
|
|
action?: string;
|
|
targetType?: string;
|
|
actorId?: string;
|
|
}) {
|
|
const qs = new URLSearchParams();
|
|
qs.set("format", params.format);
|
|
if (params.action) qs.set("action", params.action);
|
|
if (params.targetType) qs.set("targetType", params.targetType);
|
|
if (params.actorId) qs.set("actorId", params.actorId);
|
|
|
|
return apiRequestBlob(`/api/exports/audit-logs?${qs.toString()}`);
|
|
}
|
|
|
|
export async function exportDashboardReimbursements(params: {
|
|
format: "csv" | "xlsx";
|
|
dateFrom?: string;
|
|
dateTo?: string;
|
|
departmentId?: string;
|
|
}) {
|
|
const qs = new URLSearchParams();
|
|
qs.set("format", params.format);
|
|
if (params.dateFrom) qs.set("dateFrom", params.dateFrom);
|
|
if (params.dateTo) qs.set("dateTo", params.dateTo);
|
|
if (params.departmentId) qs.set("departmentId", params.departmentId);
|
|
|
|
return apiRequestBlob(`/api/exports/dashboard/reimbursements?${qs.toString()}`);
|
|
}
|
|
|
|
export async function exportEmployees(params: {
|
|
format: "csv" | "xlsx";
|
|
status?: "active" | "archived";
|
|
departmentId?: string;
|
|
q?: string;
|
|
title?: string;
|
|
managerId?: string;
|
|
hireDateFrom?: string;
|
|
hireDateTo?: string;
|
|
employmentStatus?: "onboarding" | "probation" | "active" | "offboarding" | "inactive";
|
|
limit?: number;
|
|
}) {
|
|
const qs = new URLSearchParams();
|
|
qs.set("format", params.format);
|
|
if (params.status) qs.set("status", params.status);
|
|
if (params.departmentId) qs.set("departmentId", params.departmentId);
|
|
if (params.q) qs.set("q", params.q);
|
|
if (params.title) qs.set("title", params.title);
|
|
if (params.managerId) qs.set("managerId", params.managerId);
|
|
if (params.hireDateFrom) qs.set("hireDateFrom", params.hireDateFrom);
|
|
if (params.hireDateTo) qs.set("hireDateTo", params.hireDateTo);
|
|
if (params.employmentStatus) qs.set("employmentStatus", params.employmentStatus);
|
|
if (typeof params.limit === "number") qs.set("limit", String(params.limit));
|
|
|
|
return apiRequestBlob(`/api/exports/employees?${qs.toString()}`);
|
|
}
|
|
|
|
export async function exportPayslips(params: {
|
|
format: "csv" | "xlsx";
|
|
month: string;
|
|
}) {
|
|
const qs = new URLSearchParams();
|
|
qs.set("format", params.format);
|
|
qs.set("month", params.month);
|
|
|
|
return apiRequestBlob(`/api/exports/payslips?${qs.toString()}`);
|
|
}
|
|
|
|
export type { ApiBlobResponse };
|