123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import axios from './instance'
- import {
- FUSE_MODEL_LIST,
- FUSE_INSERT_MODEL,
- FUSE_UPDATE_MODEL,
- FUSE_DELETE_MODEL,
- } from './constant'
- import { params } from '@/env'
- import { Scene, SceneStatus, SceneType } from './scene'
- export interface FuseModelAttrs {
- show: boolean,
- scale: number,
- opacity: number,
- bottom: number,
- position: SceneLocalPos,
- rotation: SceneLocalPos
- }
- export interface FuseModel extends FuseModelAttrs {
- id: string
- modelId: number
- fusionNumId: number,
- url: string
- title: string
- fusionId: number,
- modelType: string,
- type: SceneType
- size: number,
- status: SceneStatus,
- time: string
- }
- interface ServiceFuseModel {
- fusionId: number
- hide: number,
- opacity: number
- bottom: number
- fusionNumId: number,
- transform: {
- position: SceneLocalPos,
- rotation: SceneLocalPos,
- scale: [number, number, number]
- },
- sceneData: Scene
- }
- const serviceToLocal = (serviceModel: ServiceFuseModel, test = false): FuseModel => ({
- show: true,
- scale: serviceModel.transform.scale[0],
- opacity: serviceModel.opacity || 1,
- bottom: serviceModel.bottom || 0,
- fusionNumId: serviceModel.fusionNumId,
- modelType: serviceModel.sceneData?.modelDateType,
- position: serviceModel.transform.position,
- rotation: serviceModel.transform.rotation,
- id: serviceModel.fusionNumId.toString(),
- url: serviceModel.sceneData ? ([SceneType.SWSS, SceneType.SWYDSS].includes(serviceModel.sceneData.type) ? serviceModel.sceneData.num : serviceModel.sceneData.modelGlbUrl) : '',
- title: serviceModel.sceneData ? (serviceModel.sceneData?.name || serviceModel.sceneData.sceneName || serviceModel.sceneData.modelTitle) : '-',
- modelId: serviceModel.sceneData?.modelId,
- fusionId: serviceModel.fusionId,
- type: serviceModel.sceneData?.type,
- size: serviceModel.sceneData?.modelSize,
- time: serviceModel.sceneData?.createTime,
- status: serviceModel.sceneData ? serviceModel.sceneData.status : SceneStatus.ERR
- })
- const localToService = (model: FuseModel): Omit<ServiceFuseModel, 'sceneData'> => ({
- fusionId: model.fusionId,
- hide: Number(!model.show),
- opacity: model.opacity,
- fusionNumId: model.fusionNumId,
- bottom: model.bottom,
- transform: {
- position: model.position,
- rotation: model.rotation,
- scale: [model.scale, model.scale, model.scale]
- }
- })
- export type FuseModels = FuseModel[]
- export const fetchFuseModels = async () => {
- const serviceModels = await axios.get<ServiceFuseModel[]>(FUSE_MODEL_LIST, { params: { caseId: params.caseId } })
- console.error(serviceModels.map((item, index) => serviceToLocal(item, index == 0)))
- return serviceModels.map((item, index) => serviceToLocal(item, index == 0))
- }
- export const postAddFuseModel = async (model: FuseModel) => {
- const upload = localToService(model)
- const serviceModel = await axios<ServiceFuseModel>({
- url: FUSE_INSERT_MODEL,
- method: 'POST',
- data: {
- caseId: params.caseId,
- modelId: model.modelId,
- hide: upload.hide,
- transform: upload.transform,
- opacity: upload.opacity,
- bottom: upload.bottom
- }
- })
- return serviceToLocal(serviceModel)
- }
- export const postUpdateFuseModels = (model: FuseModel) => {
- const upload = localToService(model)
- return axios.post<undefined>(FUSE_UPDATE_MODEL, {
- fusionNumId: upload.fusionNumId,
- hide: upload.hide,
- transform: upload.transform,
- opacity: upload.opacity,
- bottom: upload.bottom
- })
- }
- export const postDeleteFuseModel = (model: FuseModel) => {
- return axios.post<undefined>(FUSE_DELETE_MODEL, { fusionNumId: model.fusionNumId })
- }
|