生产管理系统前端 - fetchapi 基础提交
This commit is contained in:
204
crop-x/src/lib/api/client.ts
Normal file
204
crop-x/src/lib/api/client.ts
Normal file
@@ -0,0 +1,204 @@
|
||||
import createClient from 'openapi-fetch';
|
||||
import type { paths } from './v1.d.ts';
|
||||
|
||||
// 创建 API 客户端
|
||||
const client = createClient<paths>({
|
||||
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;
|
||||
Reference in New Issue
Block a user