chore: add frontend/src/services/records.ts

This commit is contained in:
2026-04-29 10:53:37 +08:00
parent 295adca2df
commit 5ddd9e259c
+53
View File
@@ -0,0 +1,53 @@
/**
* 记录服务 - Records API Service
* 功能:封装账单记录相关的 API 调用,提供账单 CRUD 操作
* API 依赖:
* - GET /api/records - 获取账单记录列表(支持多条件筛选)
* - GET /api/records/:id - 获取单条账单记录
* - POST /api/records - 创建账单记录
* - PUT /api/records/:id - 更新账单记录
* - DELETE /api/records/:id - 删除账单记录
*/
import { apiClient } from './apiClient';
import type { Record, RecordFormData } from '../types';
import { useUserStore } from '../stores/userStore';
export const recordsApi = {
// API: GET /api/records - 获取账单记录列表,支持按账户、类型、分类、日期范围筛选
async getRecords(params?: {
accountId?: number;
type?: 'income' | 'expense';
category?: string;
startDate?: string;
endDate?: string;
}): Promise<Record[]> {
const userId = useUserStore.getState().userId;
const response = await apiClient.get<Record[]>('/records', { userId, ...params });
return response.data;
},
// API: GET /api/records/:id - 获取指定账单记录详情
async getRecord(id: number): Promise<Record> {
const response = await apiClient.get<Record>(`/records/${id}`);
return response.data;
},
// API: POST /api/records - 创建账单记录,自动关联当前用户
async createRecord(data: Omit<RecordFormData, 'accountId'> & { accountId: number }): Promise<Record> {
const userId = useUserStore.getState().userId;
const response = await apiClient.post<Record>('/records', { ...data, userId });
return response.data;
},
// API: PUT /api/records/:id - 更新账单记录,支持部分更新
async updateRecord(id: number, data: Partial<RecordFormData>): Promise<Record> {
const response = await apiClient.put<Record>(`/records/${id}`, data);
return response.data;
},
// API: DELETE /api/records/:id - 删除指定账单记录
async deleteRecord(id: number): Promise<void> {
const response = await apiClient.delete<void>(`/records/${id}`);
return response.data;
},
};