import createClient from 'openapi-fetch'; import type { paths } from './v1.d.ts'; // 创建 API 客户端 const client = createClient({ baseUrl: 'https://gitea-admin-test-app-app.dev.maimaiag.com/docs', // 可以添加默认 headers headers: { 'Content-Type': 'application/json', }, }); // 添加认证的客户端 export const authClient = { ...client, // 包装添加 token 的方法 withAuth: (token: string) => ({ ...client, headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}`, }, }), }; // 测试连接 export const testConnection = async () => { try { // 尝试获取一个简单的接口来测试连接 const { data, error, response } = await client.GET('/users', { params: { query: { page: 1, limit: 1 } } }); if (error) { console.warn('API 连接测试失败:', error); return { success: false, error }; } console.log('API 连接测试成功:', { status: response?.status, data }); return { success: true, data }; } catch (err) { console.error('API 连接测试出错:', err); return { success: false, error: err instanceof Error ? err.message : '未知错误' }; } }; // API 方法封装 export const api = { // 用户管理 API users: { // 获取用户列表 getList: async (params?: { page?: number; limit?: number; search?: string; }) => { const { data, error, response } = await client.GET('/users', { params: { query: params, }, }); if (error) { console.error('获取用户列表失败:', error); throw new Error(`API Error: ${error}`); } return data; }, // 获取用户详情 getDetail: async (id: number) => { const { data, error } = await client.GET('/users/{id}', { params: { path: { id }, }, }); if (error) { console.error('获取用户详情失败:', error); throw new Error(`API Error: ${error}`); } return data; }, }, // 农机管理 API machinery: { // 获取农机列表 getList: async (params?: { page?: number; limit?: number; status?: 'running' | 'idle' | 'maintenance' | 'error' | 'offline'; }) => { const { data, error } = await client.GET('/machinery', { params: { query: params, }, }); if (error) { console.error('获取农机列表失败:', error); throw new Error(`API Error: ${error}`); } return data; }, // 获取农机详情 getDetail: async (id: number) => { const { data, error } = await client.GET('/machinery/{id}', { params: { path: { id }, }, }); if (error) { console.error('获取农机详情失败:', error); throw new Error(`API Error: ${error}`); } return data; }, // 创建农机 create: async (machineryData: { name: string; type: 'tractor' | 'harvester' | 'planter' | 'sprayer' | 'irrigation'; model: string; serial_number?: string; operator_id?: number; purchase_date?: string; }) => { const { data, error } = await client.POST('/machinery', { body: machineryData, }); if (error) { console.error('创建农机失败:', error); throw new Error(`API Error: ${error}`); } return data; }, // 更新农机 update: async ( id: number, updateData: { name?: string; status?: 'running' | 'idle' | 'maintenance' | 'error' | 'offline'; operator_id?: number; last_maintenance?: string; next_maintenance?: string; } ) => { const { data, error } = await client.PUT('/machinery/{id}', { params: { path: { id }, }, body: updateData, }); if (error) { console.error('更新农机失败:', error); throw new Error(`API Error: ${error}`); } return data; }, // 删除农机 delete: async (id: number) => { const { error } = await client.DELETE('/machinery/{id}', { params: { path: { id }, }, }); if (error) { console.error('删除农机失败:', error); throw new Error(`API Error: ${error}`); } return true; // 删除成功 }, }, }; // 类型导出(供组件使用) export type { User, Machinery, Location, Coordinates, CreateMachineryRequest, UpdateMachineryRequest, Error as ApiError } from './v1.d.ts'; export default client;