- 新增项目里程碑相关API接口,包括增删改查和状态进度更新 - 新增项目任务相关API接口,支持任务列表查询及增删改查 - 在项目详情页增加任务与里程碑权限控制及操作按钮展示 - 实现任务和里程碑的新增、编辑和删除模态框及表单校验 - 支持任务优先级、状态、进度、负责人等字段的管理和展示 - 里程碑支持关键标记、计划与实际日期、交付物等信息编辑 - 任务列表以表格形式展示,支持按状态展示颜色和标签 - 里程碑时间线增加操作按钮,支持权限校验后编辑和删除 - 任务状态显示对应颜色和文本,提升用户体验 - 优化项目详情页布局,新增任务列表分区和样式调整
This commit is contained in:
@@ -441,3 +441,167 @@ export const getTaskStatus = (taskId: string) => {
|
||||
`/api/v1/project-init/task/${taskId}`
|
||||
);
|
||||
};
|
||||
|
||||
// ==================== 里程碑管理 API ====================
|
||||
|
||||
/** 里程碑查询参数 */
|
||||
export type MilestoneQueryParams = {
|
||||
pageNum?: number;
|
||||
pageSize?: number;
|
||||
projectId?: string;
|
||||
status?: string;
|
||||
};
|
||||
|
||||
/** 分页查询里程碑列表 */
|
||||
export const getMilestoneList = (params?: MilestoneQueryParams) => {
|
||||
return http.request<Result<TableDataInfo<ProjectMilestone>>>(
|
||||
"get",
|
||||
"/api/v1/milestone/list",
|
||||
{ params }
|
||||
);
|
||||
};
|
||||
|
||||
/** 根据ID查询里程碑详情 */
|
||||
export const getMilestoneById = (id: string) => {
|
||||
return http.request<Result<ProjectMilestone>>(
|
||||
"get",
|
||||
`/api/v1/milestone/${id}`
|
||||
);
|
||||
};
|
||||
|
||||
/** 新增里程碑 */
|
||||
export const createMilestone = (data: ProjectMilestone) => {
|
||||
return http.request<Result<string>>("post", "/api/v1/milestone", { data });
|
||||
};
|
||||
|
||||
/** 修改里程碑 */
|
||||
export const updateMilestone = (data: ProjectMilestone) => {
|
||||
return http.request<Result<void>>("put", "/api/v1/milestone", { data });
|
||||
};
|
||||
|
||||
/** 删除里程碑 */
|
||||
export const deleteMilestone = (id: string) => {
|
||||
return http.request<Result<void>>("delete", `/api/v1/milestone/${id}`);
|
||||
};
|
||||
|
||||
/** 更新里程碑进度 */
|
||||
export const updateMilestoneProgress = (id: string, progress: number) => {
|
||||
return http.request<Result<void>>("put", `/api/v1/milestone/${id}/progress`, {
|
||||
params: { progress }
|
||||
});
|
||||
};
|
||||
|
||||
/** 更新里程碑状态 */
|
||||
export const updateMilestoneStatus = (id: string, status: string) => {
|
||||
return http.request<Result<void>>("put", `/api/v1/milestone/${id}/status`, {
|
||||
params: { status }
|
||||
});
|
||||
};
|
||||
|
||||
/** 查询已延期的关键里程碑 */
|
||||
export const getDelayedKeyMilestones = (projectId: string) => {
|
||||
return http.request<Result<ProjectMilestone[]>>(
|
||||
"get",
|
||||
"/api/v1/milestone/delayed-key",
|
||||
{ params: { projectId } }
|
||||
);
|
||||
};
|
||||
|
||||
/** 查询即将到期的里程碑 */
|
||||
export const getUpcomingMilestones = (projectId: string, days: number = 7) => {
|
||||
return http.request<Result<ProjectMilestone[]>>(
|
||||
"get",
|
||||
"/api/v1/milestone/upcoming",
|
||||
{ params: { projectId, days } }
|
||||
);
|
||||
};
|
||||
|
||||
/** 查询里程碑完成进度统计 */
|
||||
export const getMilestoneProgressStats = (projectId: string) => {
|
||||
return http.request<Result<Record<string, any>>>(
|
||||
"get",
|
||||
"/api/v1/milestone/stats/progress",
|
||||
{ params: { projectId } }
|
||||
);
|
||||
};
|
||||
|
||||
// ==================== 任务管理 API ====================
|
||||
|
||||
/** 任务查询参数 */
|
||||
export type TaskQueryParams = {
|
||||
pageNum?: number;
|
||||
pageSize?: number;
|
||||
projectId?: string;
|
||||
milestoneId?: string;
|
||||
assigneeId?: string;
|
||||
status?: string;
|
||||
priority?: string;
|
||||
keyword?: string;
|
||||
};
|
||||
|
||||
/** 分页查询任务列表 */
|
||||
export const getTaskList = (params?: TaskQueryParams) => {
|
||||
return http.request<Result<TableDataInfo<ProjectTask>>>(
|
||||
"get",
|
||||
"/api/v1/task/list",
|
||||
{ params }
|
||||
);
|
||||
};
|
||||
|
||||
/** 根据ID查询任务详情 */
|
||||
export const getTaskById = (id: string) => {
|
||||
return http.request<Result<ProjectTask>>("get", `/api/v1/task/${id}`);
|
||||
};
|
||||
|
||||
/** 新增任务 */
|
||||
export const createTask = (data: ProjectTask) => {
|
||||
return http.request<Result<string>>("post", "/api/v1/task", { data });
|
||||
};
|
||||
|
||||
/** 修改任务 */
|
||||
export const updateTask = (data: ProjectTask) => {
|
||||
return http.request<Result<void>>("put", "/api/v1/task", { data });
|
||||
};
|
||||
|
||||
/** 删除任务 */
|
||||
export const deleteTask = (id: string) => {
|
||||
return http.request<Result<void>>("delete", `/api/v1/task/${id}`);
|
||||
};
|
||||
|
||||
/** 查询我的待办任务 */
|
||||
export const getMyTodoTasks = (userId: string, projectId?: string) => {
|
||||
return http.request<Result<ProjectTask[]>>("get", "/api/v1/task/my-tasks", {
|
||||
params: { userId, projectId }
|
||||
});
|
||||
};
|
||||
|
||||
/** 更新任务进度 */
|
||||
export const updateTaskProgress = (id: string, progress: number) => {
|
||||
return http.request<Result<void>>("put", `/api/v1/task/${id}/progress`, {
|
||||
params: { progress }
|
||||
});
|
||||
};
|
||||
|
||||
/** 更新任务状态 */
|
||||
export const updateTaskStatus = (id: string, status: string) => {
|
||||
return http.request<Result<void>>("put", `/api/v1/task/${id}/status`, {
|
||||
params: { status }
|
||||
});
|
||||
};
|
||||
|
||||
/** 查询任务依赖关系 */
|
||||
export const getTaskDependencies = (id: string) => {
|
||||
return http.request<Result<Record<string, any>[]>>(
|
||||
"get",
|
||||
`/api/v1/task/${id}/dependencies`
|
||||
);
|
||||
};
|
||||
|
||||
/** 统计项目任务状态分布 */
|
||||
export const getTaskStatusStats = (projectId: string) => {
|
||||
return http.request<Result<Record<string, any>[]>>(
|
||||
"get",
|
||||
"/api/v1/task/stats/status",
|
||||
{ params: { projectId } }
|
||||
);
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user