Prechádzať zdrojové kódy

fix: 添加测试数据

bill 1 rok pred
rodič
commit
8d4de0521c

BIN
public/test-case/gaussian/bonsai.ksplat


+ 120 - 0
public/test-case/model-list.json

@@ -361,7 +361,127 @@
               "bind": true,
               "location": null
           }
+      },
+      {
+        "caseId": null,
+        "fusionNumId": 1198,
+        "fusionId": 221,
+        "modelId": 1307,
+        "hide": 0,
+        "transform": {
+            "scale": [
+                100.0,
+                100.0,
+                100.0
+            ],
+            "position": {
+                "x": 0.0,
+                "y": 0.0,
+                "z": 0.0
+            },
+            "rotation": {
+                "x": 0.0,
+                "y": 0.0,
+                "z": 0.0
+            }
+        },
+        "opacity": 100.0,
+        "bottom": 0.0,
+        "token": null,
+        "sceneData": {
+            "modelId": 1307,
+            "modelTitle": "高斯模型",
+            "modelDateType": "3dgs",
+            "modelSize": "20.8MB",
+            "type": 3,
+            "modelObjUrl": null,
+            "model3dgsUrl": "[\"/test-case/gaussian/bonsai.ksplat\"]",
+            "userName": "88888888888",
+            "modelType": "3dgs",
+            "num": null,
+            "tbStatus": 0,
+            "createStatus": 1,
+            "createTime": "2024-07-19 10:52:32",
+            "updateTime": "2024-07-19 10:52:35",
+            "deptId": "0",
+            "deptName": "超管组织",
+            "fileNewName": "https://4dkk.4dage.com/fusion/xj/model/modelId_1307/3af7984d9c1d4cb99998b14a54346008.zip",
+            "id": null,
+            "buildObjStatus": null,
+            "name": null,
+            "payStatus": null,
+            "sceneName": null,
+            "snCode": null,
+            "status": 2,
+            "thumb": null,
+            "title": null,
+            "viewCount": null,
+            "isLaser": null,
+            "phone": null,
+            "bind": true,
+            "location": null
+        }
+    },
+    {
+      "caseId": null,
+      "fusionNumId": 1198,
+      "fusionId": 221,
+      "modelId": 1307,
+      "hide": 0,
+      "transform": {
+          "scale": [
+              100.0,
+              100.0,
+              100.0
+          ],
+          "position": {
+              "x": 0.0,
+              "y": 0.0,
+              "z": 0.0
+          },
+          "rotation": {
+              "x": 0.0,
+              "y": 0.0,
+              "z": 0.0
+          }
+      },
+      "opacity": 100.0,
+      "bottom": 0.0,
+      "token": null,
+      "sceneData": {
+          "modelId": 1307,
+          "modelTitle": "矢量数据",
+          "modelDateType": "shp",
+          "modelSize": "20.8MB",
+          "type": 3,
+          "modelObjUrl": null,
+          "modelShpUrl": "[\"/test-case/shape/jiangmen.shp\"]",
+          "userName": "88888888888",
+          "modelType": "shp",
+          "num": null,
+          "tbStatus": 0,
+          "createStatus": 1,
+          "createTime": "2024-07-19 10:52:32",
+          "updateTime": "2024-07-19 10:52:35",
+          "deptId": "0",
+          "deptName": "超管组织",
+          "fileNewName": "https://4dkk.4dage.com/fusion/xj/model/modelId_1307/3af7984d9c1d4cb99998b14a54346008.zip",
+          "id": null,
+          "buildObjStatus": null,
+          "name": null,
+          "payStatus": null,
+          "sceneName": null,
+          "snCode": null,
+          "status": 2,
+          "thumb": null,
+          "title": null,
+          "viewCount": null,
+          "isLaser": null,
+          "phone": null,
+          "bind": true,
+          "location": null
       }
+  }
   ],
   "success": true,
   "timestamp": 1722216629620

+ 23 - 0
public/test-case/setting.json

@@ -0,0 +1,23 @@
+
+{
+  "code": 0,
+  "message": "操作成功",
+  "data": {
+  "settingsId": 64,
+  "caseId": 362,
+  "pose": "{\"position\":{\"x\":-63.683227164138934,\"y\":-25.32452074124516,\"z\":2.7585051567150995},\"target\":{\"x\":-64.93095326112692,\"y\":-27.102305753990272,\"z\":0.6890462817059855}}",
+  "cover": "https://4dkk.4dage.com/fusion/xj/file/1b255f8de1c04d88acbe3e99d7bc2930.png",
+  "back": "https://4dkk.4dage.com/fusion/xj/file/eec64709bdf84bec9d1f8138934ac6d0.jpg",
+  "backType": "bimg",
+  "openCompass": true,
+  "mapOpen": true,
+  "latlng": [113.60, 22.36],
+  "mapType": "satellite",
+  "tbStatus": 0,
+  "createTime": "2024-07-24T02:15:34.000+00:00",
+  "updateTime": "2024-07-24T02:15:34.000+00:00",
+  "scale": 2.1,
+  "fov": 99.0,
+  "rotate": 0.0
+}
+}

BIN
public/test-case/shape/jiangmen.dbf


BIN
public/test-case/shape/jiangmen.shp


+ 1 - 1
src/api/constant.ts

@@ -79,7 +79,7 @@ export const INSERT_VIEW = `/fusion-xj/caseView/add`
 export const UPDATE_VIEW = `/fusion-xj/caseView/updateNameOrSort`
 export const DELETE_VIEW = `/fusion-xj/caseView/delete`
 
-export const GET_SETTING = `/fusion-xj/caseSettings/info`
+export const GET_SETTING = `/test-case/setting.json`
 export const UPDATE_SETTING = `/fusion-xj/caseSettings/saveOrUpdate`
 
 

+ 27 - 3
src/api/fuse-model.ts

@@ -48,7 +48,30 @@ interface ServiceFuseModel {
   sceneData: Scene
 }
 
-const serviceToLocal = (serviceModel: ServiceFuseModel, test = false): FuseModel => ({
+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
+        break;
+      case 'shp':
+        url = serviceModel.sceneData.modelShpUrl
+        break;
+      default:
+        url = serviceModel.sceneData.modelGlbUrl
+    }
+    try {
+      url = JSON.parse(url)[0]
+    } catch (e) {
+      console.error(url, e)
+    }
+  }
+
+  return {
   show: true,
   scale: serviceModel.transform.scale[0],
   opacity: serviceModel.opacity || 1,
@@ -58,7 +81,7 @@ const serviceToLocal = (serviceModel: ServiceFuseModel, test = false): FuseModel
   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) : '',
+  url,
   title: serviceModel.sceneData ? (serviceModel.sceneData?.name || serviceModel.sceneData.sceneName || serviceModel.sceneData.modelTitle) : '-',
   modelId: serviceModel.sceneData?.modelId,
   fusionId: serviceModel.fusionId,
@@ -67,7 +90,8 @@ const serviceToLocal = (serviceModel: ServiceFuseModel, test = false): FuseModel
   raw: serviceModel.sceneData,
   time: serviceModel.sceneData?.createTime,
   status: serviceModel.sceneData ? serviceModel.sceneData.status : SceneStatus.ERR
-})
+}
+}
 
 const localToService = (model: FuseModel): Omit<ServiceFuseModel, 'sceneData'> => ({
   fusionId: model.fusionId,

+ 2 - 0
src/api/scene.ts

@@ -44,6 +44,8 @@ export interface Scene {
   modelSize: number
   status: SceneStatus
   modelTitle: string
+  model3dgsUrl: string,
+  modelShpUrl: string
   name: string
   num: string
   sceneName: string

+ 7 - 6
src/api/setting.ts

@@ -32,7 +32,7 @@ export type Setting = {
   openCompass: boolean
   backType: SettingResourceType;
   mapOpen: boolean;
-  latlng?: number[]
+  lonlat?: number[]
   mapType: string
 };
 
@@ -61,11 +61,12 @@ const toService = (setting: Setting): ServeSetting => ({
 });
 
 export const fetchSetting = async () => {
-  return null as unknown as Setting;
-  // const data = await axios.get<ServeSetting[]>(GET_SETTING, {
-  //   params: { caseId: params.caseId },
-  // });
-  // return toLocal(data[0] || {});
+  // return null as unknown as Setting;
+  const data = await axios.get<ServeSetting>(GET_SETTING, {
+    params: { caseId: params.caseId },
+  });
+  console.log(data)
+  return toLocal(data || {});
 };
 
 export const updateSetting = async (setting: Setting) => {

+ 1 - 1
src/model/index.ts

@@ -91,7 +91,7 @@ export const loadModel = async (modelType: ModelType): Promise<ModelExpose> => {
   }
 
   console.log(sdk, modelType)
-  await sdk.switchScene && sdk.switchScene(modelType === fuseModel ? null : modelType)
+  await sdk?.switchScene && sdk.switchScene(modelType === fuseModel ? null : modelType)
   return {
     getView() {
       return null as any;

+ 2 - 2
src/model/platform.ts

@@ -1,5 +1,5 @@
 import { watchEffect, nextTick } from 'vue'
-import { fuseModelsLoaded, SceneType } from '@/store'
+import { fuseModelsLoaded, scenes, SceneType, setting } from '@/store'
 import { fuseModel } from './'
 import { initialSDK, initialed as fuseInitialed, sdk as fuseSDK } from '@/sdk'
 import { asyncTimeout } from '@/utils'
@@ -13,7 +13,7 @@ export async function modelSDKFactory (
   console.log(type, dom)
   if (type === fuseModel) {
     if (!fuseInitialed) {
-      await initialSDK({ layout: dom })
+      await initialSDK({ layout: dom, scenes: scenes.value, lonlat: setting.value!.lonlat })
     }
     return exposeFactory(fuseModel)
   } else {

+ 2 - 0
src/sdk/association/fuseMode.ts

@@ -43,6 +43,8 @@ export const getSceneModel = (model?: FuseModel | null) => model && sceneModelMa
 const setModels = (sdk: SDK, models: FuseModels, oldModels: FuseModels) => {
   const { added, deleted } = diffArrayChange(models, oldModels)
   for (const item of added) {
+
+    console.log('===>', item.url)
     if (getSceneModel(item)) {
       continue;
     }

+ 2 - 2
src/sdk/sdk.ts

@@ -128,7 +128,7 @@ export interface SDK {
 
 
 export let sdk: SDK
-export type InialSDKProps = { layout: HTMLDivElement, scenes: Scene[] }
+export type InialSDKProps = { layout: HTMLDivElement, scenes: Scene[], lonlat?:number[] }
 export let initialed = false
 export const initialSDK = async (props: InialSDKProps) => {
   if (initialed) return sdk;
@@ -150,7 +150,7 @@ export const initialSDK = async (props: InialSDKProps) => {
     dom: props.layout, 
     isLocal: false, 
     scenes: props.scenes,
-    lonlat: null,
+    lonlat: props.lonlat,
     mapDom: null
   }) as unknown as SDK