import { request, AxiosRequestConfig } from '@/request.ts' import { IApiResult, IPage, IPageResult } from '@/global' export const createCURD = (api: string, options?: AxiosRequestConfig) => { return { list: (params?: TParams & IPage) => { return request.post>(`${api}/list`, { ...params }, options) }, add: (data: TParams) => { return request.post(`${api}/add`, { ...data }, options) }, update: (data: TParams) => { return request.post(`${api}/edit`, { ...data }, options) }, delete: (id: number) => { return request.post(`${api}/delete`, { id }, options) }, batchDelete: (ids: number[]) => { return request.post(`${api}/deletes`, { ids }, options) }, info: (id: number) => { return request.post(`${api}/get`, { id }, options) } } } // 模拟的数据结果 export const createMockCURD = (api: string, options?: AxiosRequestConfig) => { console.log(api, options) return { list: (params?: TParams & IPage): Promise>> => { return new Promise((resolve) => { setTimeout(() => { resolve({ code: 200, data: { rows: [ { id: 1, name: 'Item 1', description: 'Description 1', } as unknown as TResult, { id: 2, name: 'Item 2', description: 'Description 2', } as unknown as TResult, ], total: 2, pageSize: params?.pageSize || 10, page: params?.page || 1, }, message: 'success', }) }, 500) // 模拟网络延迟 }) }, add: (data: TParams): Promise> => { return new Promise((resolve) => { setTimeout(() => { resolve({ code: 200, data: { ...data, id: Math.floor(Math.random() * 1000) + 1, // 随机生成一个ID } as unknown as TResult, message: 'Item added successfully', }) }, 500) }) }, update: (data: TParams): Promise> => { return new Promise((resolve) => { setTimeout(() => { resolve({ code: 200, data: { ...data, updatedAt: new Date().toISOString(), // 更新的时间戳 } as unknown as TResult, message: 'Item updated successfully', }) }, 500) }) }, delete: (id: number): Promise> => { return new Promise((resolve) => { setTimeout(() => { resolve({ code: 200, data: { success: true, } as unknown as TResult, message: `Item with id ${id} deleted successfully.`, }) }, 500) }) }, batchDelete: (ids: number[]): Promise> => { return new Promise((resolve) => { setTimeout(() => { resolve({ code: 200, data: { success: true, } as unknown as TResult, message: `Items with ids ${ids.join(', ')} deleted successfully.`, }) }, 500) }) }, info: (id: number): Promise> => { return new Promise((resolve) => { setTimeout(() => { resolve({ code: 200, data: { id: id, name: `Item ${id}`, description: `Description for item ${id}`, } as unknown as TResult, message: 'Item info retrieved successfully', }) }, 500) }) }, } }