|
@@ -1,149 +1,162 @@
|
|
|
-import axios from './instance'
|
|
|
-import {
|
|
|
+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'
|
|
|
+} 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
|
|
|
+ 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
|
|
|
- raw?: any
|
|
|
+ id: string;
|
|
|
+ modelId: number;
|
|
|
+ fusionNumId: number;
|
|
|
+ url: string;
|
|
|
+ title: string;
|
|
|
+ fusionId: number;
|
|
|
+ modelType: string;
|
|
|
+ type: SceneType;
|
|
|
+ size: number;
|
|
|
+ status: SceneStatus;
|
|
|
+ time: string;
|
|
|
+ raw?: any;
|
|
|
}
|
|
|
|
|
|
interface ServiceFuseModel {
|
|
|
- fusionId: number
|
|
|
- hide: number,
|
|
|
- opacity: number
|
|
|
- bottom: number
|
|
|
- fusionNumId: number,
|
|
|
+ fusionId: number;
|
|
|
+ hide: number;
|
|
|
+ opacity: number;
|
|
|
+ bottom: number;
|
|
|
+ fusionNumId: number;
|
|
|
transform: {
|
|
|
- position: SceneLocalPos,
|
|
|
- rotation: SceneLocalPos,
|
|
|
- scale: [number, number, number]
|
|
|
- },
|
|
|
- sceneData: Scene
|
|
|
+ position: SceneLocalPos;
|
|
|
+ rotation: SceneLocalPos;
|
|
|
+ scale: [number, number, number];
|
|
|
+ };
|
|
|
+ sceneData: Scene;
|
|
|
}
|
|
|
|
|
|
-const serviceToLocal = (serviceModel: ServiceFuseModel, test = false): FuseModel => {
|
|
|
- let url = ""
|
|
|
- console.log(serviceModel.sceneData, serviceModel.sceneData.type)
|
|
|
- if ([SceneType.SWSS, SceneType.SWYDSS].includes(serviceModel.sceneData.type)) {
|
|
|
- url = serviceModel.sceneData.num
|
|
|
+const serviceToLocal = (
|
|
|
+ serviceModel: ServiceFuseModel,
|
|
|
+ test = false
|
|
|
+): FuseModel => {
|
|
|
+ let url = "";
|
|
|
+ console.log(serviceModel.sceneData, serviceModel.sceneData.type);
|
|
|
+ if (
|
|
|
+ [SceneType.SWSS, SceneType.SWYDSS].includes(serviceModel.sceneData.type)
|
|
|
+ ) {
|
|
|
+ url = serviceModel.sceneData.num;
|
|
|
} else {
|
|
|
- switch(serviceModel.sceneData.modelDateType) {
|
|
|
- case '3dgs':
|
|
|
- url = serviceModel.sceneData.model3dgsUrl
|
|
|
+ switch (serviceModel.sceneData.modelDateType) {
|
|
|
+ case "3dgs":
|
|
|
+ url = serviceModel.sceneData.model3dgsUrl;
|
|
|
break;
|
|
|
- case 'shp':
|
|
|
- url = serviceModel.sceneData.modelShpUrl
|
|
|
+ case "shp":
|
|
|
+ url = serviceModel.sceneData.modelShpUrl;
|
|
|
break;
|
|
|
default:
|
|
|
- url = serviceModel.sceneData.modelGlbUrl
|
|
|
+ url = serviceModel.sceneData.modelGlbUrl;
|
|
|
}
|
|
|
try {
|
|
|
- url = JSON.parse(url)[0]
|
|
|
+ url = JSON.parse(url)[0];
|
|
|
} catch (e) {
|
|
|
- console.error(url, e)
|
|
|
+ console.error(url, e);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return {
|
|
|
- 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,
|
|
|
- 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,
|
|
|
- raw: serviceModel.sceneData,
|
|
|
- time: serviceModel.sceneData?.createTime,
|
|
|
- status: serviceModel.sceneData ? serviceModel.sceneData.status : SceneStatus.ERR
|
|
|
-}
|
|
|
-}
|
|
|
+ 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,
|
|
|
+ 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,
|
|
|
+ raw: serviceModel.sceneData,
|
|
|
+ time: serviceModel.sceneData?.createTime,
|
|
|
+ status: serviceModel.sceneData
|
|
|
+ ? serviceModel.sceneData.status
|
|
|
+ : SceneStatus.ERR,
|
|
|
+ };
|
|
|
+};
|
|
|
|
|
|
-const localToService = (model: FuseModel): Omit<ServiceFuseModel, 'sceneData'> => ({
|
|
|
+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]
|
|
|
- }
|
|
|
-})
|
|
|
+ position: model.position,
|
|
|
+ rotation: model.rotation,
|
|
|
+ scale: [model.scale, model.scale, model.scale],
|
|
|
+ },
|
|
|
+});
|
|
|
|
|
|
-export type FuseModels = FuseModel[]
|
|
|
+export type FuseModels = FuseModel[];
|
|
|
|
|
|
export const fetchFuseModels = async () => {
|
|
|
- const serviceModels = await axios.get<ServiceFuseModel[]>(FUSE_MODEL_LIST, { params: { caseId: params.caseId } })
|
|
|
- // const serviceModels = await axios.get<ServiceFuseModel[]>('/test-case/model-list.json', { params: { caseId: params.caseId } })
|
|
|
- console.error(serviceModels.map((item, index) => serviceToLocal(item, index == 0)))
|
|
|
- return serviceModels.map((item, index) => serviceToLocal(item, index == 0))
|
|
|
-}
|
|
|
+ const serviceModels = await axios.get<ServiceFuseModel[]>(FUSE_MODEL_LIST, {
|
|
|
+ params: { caseId: params.caseId },
|
|
|
+ });
|
|
|
+ return serviceModels.map((item, index) => serviceToLocal(item, index == 0));
|
|
|
+};
|
|
|
|
|
|
export const postAddFuseModel = async (model: FuseModel) => {
|
|
|
- const upload = localToService(model)
|
|
|
+ const upload = localToService(model);
|
|
|
const serviceModel = await axios<ServiceFuseModel>({
|
|
|
url: FUSE_INSERT_MODEL,
|
|
|
- method: 'POST',
|
|
|
+ method: "POST",
|
|
|
data: {
|
|
|
caseId: params.caseId,
|
|
|
modelId: model.modelId,
|
|
|
hide: upload.hide,
|
|
|
transform: upload.transform,
|
|
|
opacity: upload.opacity,
|
|
|
- bottom: upload.bottom
|
|
|
- }
|
|
|
- })
|
|
|
- return serviceToLocal(serviceModel)
|
|
|
-}
|
|
|
+ bottom: upload.bottom,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ return serviceToLocal(serviceModel);
|
|
|
+};
|
|
|
|
|
|
export const postUpdateFuseModels = (model: FuseModel) => {
|
|
|
- const upload = localToService(model)
|
|
|
+ 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
|
|
|
- })
|
|
|
-}
|
|
|
+ bottom: upload.bottom,
|
|
|
+ });
|
|
|
+};
|
|
|
|
|
|
export const postDeleteFuseModel = (model: FuseModel) => {
|
|
|
- return axios.post<undefined>(FUSE_DELETE_MODEL, { fusionNumId: model.fusionNumId })
|
|
|
-}
|
|
|
-
|
|
|
+ return axios.post<undefined>(FUSE_DELETE_MODEL, {
|
|
|
+ fusionNumId: model.fusionNumId,
|
|
|
+ });
|
|
|
+};
|