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.

27 lines
908 B

1 year ago
1 year ago
1 year ago
1 year ago
  1. import { request, AxiosRequestConfig } from '@/request.ts'
  2. import { IPage, IPageResult } from '@/types'
  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`, { ...options, ...params }).then(data => data.data)
  7. },
  8. add: (data: TParams) => {
  9. return request.post<TResult>(`${api}/add`, data, options)
  10. },
  11. update: (data: TParams) => {
  12. return request.post(`${api}/edit`, data, options)
  13. },
  14. delete: (id: number) => {
  15. return request.delete(`${api}/delete`, { ...options, params: { id } })
  16. },
  17. batchDelete: (ids: number[]) => {
  18. return request.delete(`${api}/deletes`, { ...options, params: { ids } })
  19. },
  20. info: (id: number) => {
  21. return request.get<TResult>(`${api}/${id}`, options)
  22. }
  23. }
  24. }