R38: 完成员工管理筛选与部门树试跑
这个提交包含在:
@@ -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({}),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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()}`);
|
||||
|
||||
在新工单中引用
屏蔽一个用户