R38: 完成员工管理筛选与部门树试跑

这个提交包含在:
2026-03-28 13:15:32 +08:00
父节点 debef078f6
当前提交 f33431fdb8
共修改 9 个文件,包含 474 行新增和 60 行删除
+10 -4
查看文件
@@ -19,6 +19,11 @@ export type DepartmentListResponse = {
tree: DepartmentTreeNode[];
};
type DepartmentMutationResponse = {
department: DepartmentItem;
outcome?: "already_archived" | "archived";
};
export async function fetchDepartments(params: { includeArchived?: boolean } = {}) {
const search = new URLSearchParams();
if (params.includeArchived != null) {
@@ -30,23 +35,24 @@ export async function fetchDepartments(params: { includeArchived?: boolean } = {
}
export async function createDepartment(payload: { name: string; parentId?: string | null }) {
return apiRequestData<DepartmentItem>("/api/departments", {
const response = await apiRequestData<DepartmentMutationResponse>("/api/departments", {
method: "POST",
body: JSON.stringify(payload),
});
return response.department;
}
export async function updateDepartment(departmentId: string, payload: { name?: string; parentId?: string | null }) {
return apiRequestData<DepartmentItem>(`/api/departments/${departmentId}`, {
const response = await apiRequestData<DepartmentMutationResponse>(`/api/departments/${departmentId}`, {
method: "PATCH",
body: JSON.stringify(payload),
});
return response.department;
}
export async function archiveDepartment(departmentId: string) {
return apiRequestData<DepartmentItem>(`/api/departments/${departmentId}/archive`, {
return apiRequestData<DepartmentMutationResponse>(`/api/departments/${departmentId}/archive`, {
method: "POST",
body: JSON.stringify({}),
});
}
+2
查看文件
@@ -101,12 +101,14 @@ export async function fetchEmployees(params: {
page: number;
pageSize: number;
status?: EmployeeStatus;
departmentId?: string;
q?: string;
}) {
const search = new URLSearchParams();
search.set("page", String(params.page));
search.set("pageSize", String(params.pageSize));
if (params.status) search.set("status", params.status);
if (params.departmentId) search.set("departmentId", params.departmentId);
if (params.q) search.set("q", params.q);
return apiRequestData<EmployeeListResponse>(`/api/employees?${search.toString()}`);