You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
3.8 KiB

10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
  1. import { request, AxiosRequestConfig } from '@/request.ts'
  2. import { IApiResult, IPage, IPageResult } from '@/global'
  3. export const createCURD = <TParams, TResult>(api: string, options?: AxiosRequestConfig) => {
  4. return {
  5. list: (params?: TParams & IPage) => {
  6. return request.post<IPageResult<TResult>>(`${api}/list`, { ...params }, options)
  7. },
  8. add: (data: TParams) => {
  9. return request.post<TResult>(`${api}/add`, { ...data }, options)
  10. },
  11. update: (data: TParams) => {
  12. return request.post<TResult>(`${api}/edit`, { ...data }, options)
  13. },
  14. delete: (id: number) => {
  15. return request.post<TResult>(`${api}/delete`, { id }, options)
  16. },
  17. batchDelete: (ids: number[]) => {
  18. return request.post<TResult>(`${api}/deletes`, { ids }, options)
  19. },
  20. info: (id: number) => {
  21. return request.post<TResult>(`${api}/get`, { id }, options)
  22. }
  23. }
  24. }
  25. // 模拟的数据结果
  26. export const createMockCURD = <TParams, TResult>(api: string, options?: AxiosRequestConfig) => {
  27. console.log(api, options)
  28. return {
  29. list: (params?: TParams & IPage): Promise<IApiResult<IPageResult<TResult>>> => {
  30. return new Promise((resolve) => {
  31. setTimeout(() => {
  32. resolve({
  33. code: 200,
  34. data: {
  35. rows: [
  36. {
  37. id: 1,
  38. name: 'Item 1',
  39. description: 'Description 1',
  40. } as unknown as TResult,
  41. {
  42. id: 2,
  43. name: 'Item 2',
  44. description: 'Description 2',
  45. } as unknown as TResult,
  46. ],
  47. total: 2,
  48. pageSize: params?.pageSize || 10,
  49. page: params?.page || 1,
  50. },
  51. message: 'success',
  52. })
  53. }, 500) // 模拟网络延迟
  54. })
  55. },
  56. add: (data: TParams): Promise<IApiResult<TResult>> => {
  57. return new Promise((resolve) => {
  58. setTimeout(() => {
  59. resolve({
  60. code: 200,
  61. data: {
  62. ...data,
  63. id: Math.floor(Math.random() * 1000) + 1, // 随机生成一个ID
  64. } as unknown as TResult,
  65. message: 'Item added successfully',
  66. })
  67. }, 500)
  68. })
  69. },
  70. update: (data: TParams): Promise<IApiResult<TResult>> => {
  71. return new Promise((resolve) => {
  72. setTimeout(() => {
  73. resolve({
  74. code: 200,
  75. data: {
  76. ...data,
  77. updatedAt: new Date().toISOString(), // 更新的时间戳
  78. } as unknown as TResult,
  79. message: 'Item updated successfully',
  80. })
  81. }, 500)
  82. })
  83. },
  84. delete: (id: number): Promise<IApiResult<TResult>> => {
  85. return new Promise((resolve) => {
  86. setTimeout(() => {
  87. resolve({
  88. code: 200,
  89. data: {
  90. success: true,
  91. } as unknown as TResult,
  92. message: `Item with id ${id} deleted successfully.`,
  93. })
  94. }, 500)
  95. })
  96. },
  97. batchDelete: (ids: number[]): Promise<IApiResult<TResult>> => {
  98. return new Promise((resolve) => {
  99. setTimeout(() => {
  100. resolve({
  101. code: 200,
  102. data: {
  103. success: true,
  104. } as unknown as TResult,
  105. message: `Items with ids ${ids.join(', ')} deleted successfully.`,
  106. })
  107. }, 500)
  108. })
  109. },
  110. info: (id: number): Promise<IApiResult<TResult>> => {
  111. return new Promise((resolve) => {
  112. setTimeout(() => {
  113. resolve({
  114. code: 200,
  115. data: {
  116. id: id,
  117. name: `Item ${id}`,
  118. description: `Description for item ${id}`,
  119. } as unknown as TResult,
  120. message: 'Item info retrieved successfully',
  121. })
  122. }, 500)
  123. })
  124. },
  125. }
  126. }