From 60a86f67d23d739ba90a898efeb197d2edcc6236 Mon Sep 17 00:00:00 2001 From: wonder Date: Mon, 25 May 2026 16:40:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE=20?= =?UTF-8?q?API=20=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=AF=B9=E6=8E=A5=E7=9C=9F?= =?UTF-8?q?=E5=AE=9E=E5=90=8E=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现 listProjects getProject createProject 等真实 API 调用 - 移除 mock 实现,直接调用后端接口 --- frontend/src/api/project.ts | 54 +++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 29 deletions(-) diff --git a/frontend/src/api/project.ts b/frontend/src/api/project.ts index a87d19c..5b68e67 100755 --- a/frontend/src/api/project.ts +++ b/frontend/src/api/project.ts @@ -1,64 +1,60 @@ import type { Project, Task } from './types' -import { - mockListProjects, - mockGetProject, - mockCreateProject, - mockDeleteProject, - mockUpdateProject, - mockGetStyle, - mockSaveStyle, - mockGetTasks, -} from './mock' +import { get, post, put, del } from './client' -const USE_MOCK = true +export async function listProjects( + page?: number, + pageSize?: number +): Promise { + const params = new URLSearchParams() + if (page !== undefined) params.set('page', String(page)) + if (pageSize !== undefined) params.set('pageSize', String(pageSize)) -export async function listProjects(): Promise { - if (USE_MOCK) return mockListProjects() - throw new Error('Not implemented') + const url = `/api/v1/projects${params.toString() ? '?' + params : ''}` + const resp = await get<{ + total: number + projects: Project[] + }>(url) + return resp.projects } export async function getProject(projectId: string): Promise { - if (USE_MOCK) return mockGetProject(projectId) - throw new Error('Not implemented') + return get(`/api/v1/projects/${projectId}`) } export async function createProject( name: string, style?: Record ): Promise { - if (USE_MOCK) return mockCreateProject(name, style) - throw new Error('Not implemented') + return post('/api/v1/projects', { name, style }) } export async function deleteProject(projectId: string): Promise { - if (USE_MOCK) return mockDeleteProject(projectId) - throw new Error('Not implemented') + return del(`/api/v1/projects/${projectId}`) } export async function updateProject( projectId: string, - data: { name?: string } + data: { name: string } ): Promise { - if (USE_MOCK) return mockUpdateProject(projectId, data) - throw new Error('Not implemented') + return put(`/api/v1/projects/${projectId}`, data) } export async function getStyle( projectId: string ): Promise> { - if (USE_MOCK) return mockGetStyle(projectId) - throw new Error('Not implemented') + const resp = await get<{ kvPairs: Record }>( + `/api/v1/projects/${projectId}/style` + ) + return resp.kvPairs } export async function saveStyle( projectId: string, kvPairs: Record ): Promise { - if (USE_MOCK) return mockSaveStyle(projectId, kvPairs) - throw new Error('Not implemented') + return put(`/api/v1/projects/${projectId}/style`, { kvPairs }) } export async function getTasks(projectId: string): Promise { - if (USE_MOCK) return mockGetTasks(projectId) - throw new Error('Not implemented') + return get(`/api/v1/projects/${projectId}/tasks`) }