import axios from './instance' import { jsonToForm, uploadProgressFactory, UploadProgressCallback } from 'utils' import { QuoteSceneStatus, ModelSceneStatus, SceneType, UPLOAD_HEADS, SCENE_LIST, MODEL_SCENE_LIST, UPLOAD_MODEL, DELETE_MODEL } from 'constant' import type { PagingResult, PagingRequest } from '.' import type { QuoteSceneType, ModelSceneType } from 'constant' export interface BaseScene { id: string, title: string time: string } export interface QuoteScene extends BaseScene { type: QuoteSceneType, status: QuoteSceneStatus, snCode: string, num: string } export interface ModelScene extends BaseScene { status: ModelSceneStatus, type: ModelSceneType, rawType: string, progress?: number } export type Scene = QuoteScene | ModelScene export interface ServeModelScene { modelId: string modelTitle: string modelDateType: string modelSize: string modelObjUrl: string modelGlbUrl: string createStatus: ModelSceneStatus createTime: string } export type Scenes = Scene[] // 获取场景列表 export type GetSceneByTypeParams = PagingRequest<{type: SceneType, sceneName?: string, status?: QuoteScene['status']}> export const getSceneByType = async (data: GetSceneByTypeParams): Promise> => { if (data.type === SceneType.SWMX) { const modelScenes = await axios.post>(MODEL_SCENE_LIST, data) return { ...modelScenes, list: modelScenes.list.map(scene => ({ id: scene.modelId, title: scene.modelTitle, time: scene.createTime, status: scene.createStatus, type: SceneType.SWMX, rawType: scene.modelDateType, })) } } else { return await axios.post>(SCENE_LIST, data) } } // 上传模型文件 export type UploadModelSceneProps = { file: File, progressCallback?: UploadProgressCallback } export const uploadModelScene = ({ file, progressCallback }: UploadModelSceneProps) => axios({ method: 'POST', url: UPLOAD_MODEL, data: jsonToForm({ file }), headers: UPLOAD_HEADS, onUploadProgress: progressCallback && uploadProgressFactory(progressCallback) }) // 删除模型文件 export const deleteModelScene = (modelId: ServeModelScene['modelId']) => axios.post(DELETE_MODEL, { modelId })