- ErrorBoundary 组件:全局错误捕获与优雅降级 - 提取 5 个自定义 hooks:useCountUp, useDarkMode, useDebouncedValue, usePaginatedData, useApiRequest - 从 11 个 API 文件提取 PaginatedResponse 共享类型到 api/types.ts - 统一 API 错误处理(api/errors.ts) - client.ts 迁移到 axios adapter 模式(替代废弃的 CancelToken) - 添加 react-i18next 国际化基础设施 + zh-CN 语言包
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import client from './client';
|
|
import type { PaginatedResponse } from './types';
|
|
|
|
export interface TaskInfo {
|
|
id: string;
|
|
instance_id: string;
|
|
token_id: string;
|
|
node_id: string;
|
|
node_name?: string;
|
|
assignee_id?: string;
|
|
candidate_groups?: unknown;
|
|
status: string;
|
|
outcome?: string;
|
|
form_data?: unknown;
|
|
due_date?: string;
|
|
completed_at?: string;
|
|
created_at: string;
|
|
definition_name?: string;
|
|
business_key?: string;
|
|
}
|
|
|
|
export interface CompleteTaskRequest {
|
|
outcome: string;
|
|
form_data?: Record<string, unknown>;
|
|
}
|
|
|
|
export interface DelegateTaskRequest {
|
|
delegate_to: string;
|
|
}
|
|
|
|
export async function listPendingTasks(page = 1, pageSize = 20) {
|
|
const { data } = await client.get<{ success: boolean; data: PaginatedResponse<TaskInfo> }>(
|
|
'/workflow/tasks/pending',
|
|
{ params: { page, page_size: pageSize } },
|
|
);
|
|
return data.data;
|
|
}
|
|
|
|
export async function listCompletedTasks(page = 1, pageSize = 20) {
|
|
const { data } = await client.get<{ success: boolean; data: PaginatedResponse<TaskInfo> }>(
|
|
'/workflow/tasks/completed',
|
|
{ params: { page, page_size: pageSize } },
|
|
);
|
|
return data.data;
|
|
}
|
|
|
|
export async function completeTask(id: string, req: CompleteTaskRequest) {
|
|
const { data } = await client.post<{ success: boolean; data: TaskInfo }>(
|
|
`/workflow/tasks/${id}/complete`,
|
|
req,
|
|
);
|
|
return data.data;
|
|
}
|
|
|
|
export async function delegateTask(id: string, req: DelegateTaskRequest) {
|
|
const { data } = await client.post<{ success: boolean; data: TaskInfo }>(
|
|
`/workflow/tasks/${id}/delegate`,
|
|
req,
|
|
);
|
|
return data.data;
|
|
}
|