files.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import axios from './instance'
  2. import {
  3. EXAMPLE_FILE_TYPE_LIST,
  4. EXAMPLE_FILE_LIST,
  5. INSERT_EXAMPLE_FILE,
  6. DELETE_EXAMPLE_FILE,
  7. UPLOAD_HEADS
  8. } from 'constant'
  9. import type { Example } from './example'
  10. import type { BoardType } from './board'
  11. import { jsonToForm } from 'utils'
  12. export interface ExampleFileType {
  13. filesTypeId: number,
  14. filesTypeName: string,
  15. tbStatus: number,
  16. createTime: string,
  17. updateTime: string,
  18. }
  19. export type ExampleFileTypes = ExampleFileType[]
  20. export interface ExampleFile {
  21. filesId: number,
  22. caseId: string,
  23. filesTypeId: number,
  24. filesTitle: string,
  25. filesUrl: string,
  26. tbStatus: number,
  27. createTime: string,
  28. updateTime: string,
  29. imgType?: BoardType
  30. }
  31. export type ExampleFiles = ExampleFile[]
  32. export const getExampleFileTypes = () =>
  33. axios.get<ExampleFileTypes>(EXAMPLE_FILE_TYPE_LIST)
  34. export type GetExampleFilesProps = { caseId: Example['caseId'], filesTypeId?: ExampleFileType['filesTypeId'] }
  35. export const getExampleFiles = (props: GetExampleFilesProps) =>
  36. axios.get<ExampleFiles>(EXAMPLE_FILE_LIST, { params: props })
  37. export type AddExampleFilesProps = Pick<ExampleFile, 'caseId' | 'filesTitle' | 'filesTypeId'> & { file: File }
  38. export const addExampleFile = (props: AddExampleFilesProps) =>
  39. axios<ExampleFiles>({
  40. url: INSERT_EXAMPLE_FILE,
  41. method: 'POST',
  42. headers: UPLOAD_HEADS,
  43. data: jsonToForm(props),
  44. })
  45. export type DeleteExampleFileProps = Pick<ExampleFile, 'caseId' | 'filesId'>
  46. export const deleteExampleFile = (props: DeleteExampleFileProps) =>
  47. axios.post<ExampleFiles>(DELETE_EXAMPLE_FILE, props)