scene.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import axios from './instance'
  2. import {
  3. jsonToForm,
  4. uploadProgressFactory,
  5. UploadProgressCallback
  6. } from 'utils'
  7. import {
  8. QuoteSceneStatus,
  9. ModelSceneStatus,
  10. SceneType,
  11. UPLOAD_HEADS,
  12. SCENE_LIST,
  13. MODEL_SCENE_LIST,
  14. UPLOAD_MODEL,
  15. DELETE_MODEL
  16. } from 'constant'
  17. import type { PagingResult, PagingRequest } from '.'
  18. import type { QuoteSceneType, ModelSceneType } from 'constant'
  19. export interface BaseScene {
  20. id: string,
  21. title: string
  22. time: string
  23. }
  24. export interface QuoteScene extends BaseScene {
  25. type: QuoteSceneType,
  26. status: QuoteSceneStatus,
  27. snCode: string,
  28. num: string
  29. }
  30. export interface ModelScene extends BaseScene {
  31. status: ModelSceneStatus,
  32. type: ModelSceneType,
  33. rawType: string,
  34. progress?: number
  35. }
  36. export type Scene = QuoteScene | ModelScene
  37. export interface ServeModelScene {
  38. modelId: string
  39. modelTitle: string
  40. modelDateType: string
  41. modelSize: string
  42. modelObjUrl: string
  43. modelGlbUrl: string
  44. createStatus: ModelSceneStatus
  45. createTime: string
  46. }
  47. export type Scenes = Scene[]
  48. // 获取场景列表
  49. export type GetSceneByTypeParams = PagingRequest<{type: SceneType, sceneName?: string, status?: QuoteScene['status']}>
  50. export const getSceneByType = async (data: GetSceneByTypeParams): Promise<PagingResult<Scene[]>> => {
  51. if (data.type === SceneType.SWMX) {
  52. const modelScenes = await axios.post<PagingResult<ServeModelScene[]>>(MODEL_SCENE_LIST, data)
  53. return {
  54. ...modelScenes,
  55. list: modelScenes.list.map(scene => ({
  56. id: scene.modelId,
  57. title: scene.modelTitle,
  58. time: scene.createTime,
  59. status: scene.createStatus,
  60. type: SceneType.SWMX,
  61. rawType: scene.modelDateType,
  62. }))
  63. }
  64. } else {
  65. return await axios.post<PagingResult<Scenes>>(SCENE_LIST, data)
  66. }
  67. }
  68. // 上传模型文件
  69. export type UploadModelSceneProps = { file: File, progressCallback?: UploadProgressCallback }
  70. export const uploadModelScene = ({ file, progressCallback }: UploadModelSceneProps) =>
  71. axios<undefined>({
  72. method: 'POST',
  73. url: UPLOAD_MODEL,
  74. data: jsonToForm({ file }),
  75. headers: UPLOAD_HEADS,
  76. onUploadProgress: progressCallback && uploadProgressFactory(progressCallback)
  77. })
  78. // 删除模型文件
  79. export const deleteModelScene = (modelId: ServeModelScene['modelId']) =>
  80. axios.post<undefined>(DELETE_MODEL, { modelId })