library-picturebook-activity/frontend/src/api/departments.ts
2025-12-09 11:10:36 +08:00

92 lines
2.2 KiB
TypeScript

import request from "@/utils/request";
import type { PaginationParams, PaginationResponse } from "@/types/api";
export interface Department {
id: number;
tenantId: number;
name: string;
code: string;
parentId?: number | null;
description?: string;
sort: number;
validState: number;
creator?: number;
modifier?: number;
createTime?: string;
modifyTime?: string;
parent?: Department;
children?: Department[];
_count?: {
teachers: number;
children: number;
};
}
export interface CreateDepartmentForm {
name: string;
code: string;
parentId?: number;
description?: string;
sort?: number;
}
export interface UpdateDepartmentForm {
name?: string;
code?: string;
parentId?: number | null;
description?: string;
sort?: number;
}
// 获取部门列表
export async function getDepartmentsList(
params: PaginationParams & { parentId?: number }
): Promise<PaginationResponse<Department>> {
const response = await request.get<any, PaginationResponse<Department>>("/departments", {
params,
});
return response;
}
// 获取部门树
export async function getDepartmentsTree(): Promise<Department[]> {
const response = await request.get<any, Department[]>("/departments/tree");
return response;
}
// 获取单个部门详情
export async function getDepartmentDetail(id: number): Promise<Department> {
const response = await request.get<any, Department>(`/departments/${id}`);
return response;
}
// 创建部门
export async function createDepartment(data: CreateDepartmentForm): Promise<Department> {
const response = await request.post<any, Department>("/departments", data);
return response;
}
// 更新部门
export async function updateDepartment(
id: number,
data: UpdateDepartmentForm
): Promise<Department> {
const response = await request.patch<any, Department>(`/departments/${id}`, data);
return response;
}
// 删除部门
export async function deleteDepartment(id: number): Promise<void> {
return await request.delete<any, void>(`/departments/${id}`);
}
export const departmentsApi = {
getList: getDepartmentsList,
getTree: getDepartmentsTree,
getDetail: getDepartmentDetail,
create: createDepartment,
update: updateDepartment,
delete: deleteDepartment,
};