123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import axios from './instance'
- import { RECORD_LIST, DELETE_RECORD, UPDATE_RECORD, MERGE_RECORD, RECORD_STATUS, UPLOAD_HEADS } from './constant'
- import { params } from '@/env'
- import { jsonToForm } from '@/utils'
- export enum RecordStatus {
- UN = -2,
- ERR = -1,
- RUN = 0,
- SUCCESS = 1
- }
- export interface Record {
- id: string
- cover: string
- title: string
- url: string | null
- sort: number
- status: RecordStatus
- }
- interface ServiceRecord {
- videoFolderId: number,
- videoFolderName: string,
- videoFolderCover: string,
- videoMergeUrl: string | null,
- sort: number,
- uploadStatus: RecordStatus
- }
- const toLocal = (serviceRecord: ServiceRecord) : Record => ({
- id: serviceRecord.videoFolderId.toString(),
- cover: serviceRecord.videoFolderCover,
- title: serviceRecord.videoFolderName,
- url: serviceRecord.videoMergeUrl,
- sort: serviceRecord.sort,
- status: serviceRecord.uploadStatus || RecordStatus.RUN
- })
- const toService = (record: Record, isUpdate = true): PartialProps<ServiceRecord, 'videoFolderId'> => ({
- ...(isUpdate ? { videoFolderId: Number(record.id) } : {}),
- videoFolderName: record.title,
- videoFolderCover: record.cover,
- videoMergeUrl: record.url,
- sort: record.sort,
- uploadStatus: record.status
- })
- export type Records = Record[]
- export const fetchRecords = async () => {
- const data = await axios.get<ServiceRecord[]>(RECORD_LIST, { params: { fusionId: params.caseId } })
- return data.map(toLocal)
- }
- export const fetchRecordStatus = async (recordId: Record['id']) => {
- const step = await axios.get<number>(RECORD_STATUS, { params: { folderId: Number(recordId) } })
- if (step >= 100) {
- return RecordStatus.SUCCESS
- } else if (step < 0) {
- return RecordStatus.ERR
- } else {
- return RecordStatus.RUN
- }
- }
- export const postAddRecord = async (record: Record, files: File[]) => {
- const serviceRecord = await postMegerRecord(files)
- return toLocal(serviceRecord)
- }
- export const postUpdateRecord = async (record: Record) => {
- const serviceRecord = toService(record)
- await axios.post(UPDATE_RECORD, serviceRecord)
- }
- export const postMegerRecord = (files: File[], recordId?: Record['id']) => {
- return axios<ServiceRecord>({
- method: 'POST',
- url: MERGE_RECORD,
- headers: { ...UPLOAD_HEADS },
- data: jsonToForm({
- ...(recordId ? { folderId: recordId && Number(recordId) } : {}),
- fusionId: params.caseId,
- files
- })
- })
- }
- export const postDeleteRecord = async (id: Record['id']) => {
- await axios.post(DELETE_RECORD, { videoFolderId: Number(id) })
- }
|