123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import axios from './instance'
- import {
- jsonToForm,
- uploadProgressFactory,
- UploadProgressCallback
- } from 'utils'
- import {
- QuoteSceneStatus,
- ModelSceneStatus,
- SceneType,
- UPLOAD_HEADS,
- UPDATE_MODEL_TITLE,
- SCENE_LIST,
- MODEL_SCENE_LIST,
- UPLOAD_MODEL,
- DELETE_MODEL,
- GET_MODEL_SCENE_STATUS
- } 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<PagingResult<Scene[]> & { type: SceneType }> => {
- if (data.type === SceneType.SWMX) {
- const modelScenes = await axios.post<PagingResult<ServeModelScene[]>>(
- MODEL_SCENE_LIST,
- { modelTitle: data.sceneName, ...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,
- })),
- type: data.type
- }
- } else {
- const res = await axios.post<PagingResult<Scenes>>(SCENE_LIST, data)
- return { ...res, type: data.type }
- }
- }
- export const getModelSceneStatus = async (sceneId: Scene['id']) => {
- const progress = await axios.get<number>(GET_MODEL_SCENE_STATUS, { params: { modelId: sceneId } })
- return {
- id: sceneId,
- status: progress >= 100 ? ModelSceneStatus.SUCCESS : ModelSceneStatus.RUN
- }
- }
- // 上传模型文件
- export type UploadModelSceneProps = { file: File, progressCallback?: UploadProgressCallback }
- export const uploadModelScene = ({ file, progressCallback }: UploadModelSceneProps) =>
- axios<undefined>({
- method: 'POST',
- url: UPLOAD_MODEL,
- data: jsonToForm({ file }),
- headers: UPLOAD_HEADS,
- onUploadProgress: progressCallback && uploadProgressFactory(progressCallback)
- })
- // 删除模型文件
- export const deleteModelScene = (modelId: ServeModelScene['modelId']) =>
- axios.post<undefined>(DELETE_MODEL, { modelId })
- export const updateModelSceneTitle = (modelId: ServeModelScene['modelId'],modelTitle: ServeModelScene['modelTitle']) =>
- axios.post<undefined>(UPDATE_MODEL_TITLE, { modelId, modelTitle })
|