record.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import axios from './instance'
  2. import { RECORD_LIST, DELETE_RECORD, UPDATE_RECORD, MERGE_RECORD } from './constant'
  3. import { params } from '@/env'
  4. export enum RecordStatus {
  5. ERR = -1,
  6. RUN = 0,
  7. SUCCESS = 1
  8. }
  9. export interface Record {
  10. id: string
  11. cover: string
  12. title: string
  13. url: string
  14. sort: number
  15. status: RecordStatus
  16. }
  17. interface ServiceRecord {
  18. videoFolderId: number,
  19. videoFolderName: string,
  20. videoFolderCover: string,
  21. videoMergeUrl: string,
  22. sort: number,
  23. uploadStatus: RecordStatus
  24. }
  25. const toLocal = (serviceRecord: ServiceRecord) : Record => ({
  26. id: serviceRecord.videoFolderId.toString(),
  27. cover: serviceRecord.videoFolderCover,
  28. title: serviceRecord.videoFolderName,
  29. url: serviceRecord.videoMergeUrl,
  30. sort: serviceRecord.sort,
  31. status: serviceRecord.uploadStatus
  32. })
  33. const toService = (record: Record, isUpdate = true): PartialProps<ServiceRecord, 'videoFolderId'> => ({
  34. videoFolderId: isUpdate ? Number(record.id): undefined,
  35. videoFolderName: record.title,
  36. videoFolderCover: record.cover,
  37. videoMergeUrl: record.url,
  38. sort: record.sort,
  39. uploadStatus: record.status
  40. })
  41. export type Records = Record[]
  42. export const fetchRecords = async () => {
  43. const data = await axios.get<ServiceRecord[]>(RECORD_LIST, { params: { caseId: params.caseId } })
  44. return data.map(toLocal)
  45. }
  46. export const postAddRecord = async (record: Record, files: File[]) => {
  47. const serviceRecord = await postMegerRecord(files)
  48. return toLocal(serviceRecord)
  49. }
  50. export const postUpdateRecord = async (record: Record) => {
  51. const serviceRecord = toService(record)
  52. await axios.post(UPDATE_RECORD, serviceRecord)
  53. }
  54. export const postMegerRecord = (files: File[], recordId?: Record['id']) => {
  55. return axios.post<ServiceRecord>(MERGE_RECORD, {
  56. folderId: recordId && Number(recordId),
  57. caseId: params.caseId,
  58. files
  59. })
  60. }
  61. export const postDeleteRecord = async (id: Record['id']) => {
  62. await axios.post(DELETE_RECORD, { fusionMeterId: Number(id) })
  63. }