chore: add frontend/src/services/records.ts
This commit is contained in:
@@ -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;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user