Browse Source

添加模型

bill 2 years ago
parent
commit
874ce9976d
5 changed files with 20 additions and 5 deletions
  1. 2 0
      src/api/scene.ts
  2. 1 0
      src/env/index.ts
  3. 2 1
      src/model/app.vue
  4. 2 1
      src/model/platform.ts
  5. 13 3
      src/views/sign-model/index.vue

+ 2 - 0
src/api/scene.ts

@@ -7,6 +7,7 @@ export enum SceneType {
   SWKJ = 1,
   SWSS = 2,
   SWMX = 3,
+  SWSSMX = 4
 }
 
 export enum SceneStatus {
@@ -23,6 +24,7 @@ export const SceneTypeDesc: Record<SceneType, string>  = {
   [SceneType.SWKJ]: '四维看见',
   [SceneType.SWSS]: '四维深时',
   [SceneType.SWMX]: '三维模型',
+  [SceneType.SWSSMX]: '四维深时模型'
 }
 
 export interface Scene {

+ 1 - 0
src/env/index.ts

@@ -47,6 +47,7 @@ export type Params = {
   caseId: number,
   baseURL?: string,
   modelId?: string,
+  m?: string
   share: boolean,
   token?: string
 }

+ 2 - 1
src/model/app.vue

@@ -40,7 +40,8 @@ export const Model = defineComponent({
         [SceneType.SWKK]: `/swkk/spg.html?m=${scene.value.num}`,
         [SceneType.SWKJ]: `/swkk/spg.html?m=${scene.value.num}`,
         [SceneType.SWSS]: `/swss/index.html?m=${scene.value.num}`,
-        [SceneType.SWMX]: `index.html?caseId=${params.caseId}&modelId=${scene.value.num}&share=1#sign-model`
+        [SceneType.SWMX]: `index.html?caseId=${params.caseId}&modelId=${scene.value.num}&share=1#sign-model`,
+        [SceneType.SWSSMX]: `index.html?caseId=${params.caseId}&m=${scene.value.num}&share=1#sign-model`
       }
       return urls[type]
     })

+ 2 - 1
src/model/platform.ts

@@ -10,6 +10,7 @@ export async function modelSDKFactory (
   type: ModelType, 
   dom: HTMLDivElement | HTMLIFrameElement
 ): Promise<ModelExpose> {
+  console.log(type, dom)
   if (type === fuseModel) {
     if (!fuseInitialed) {
       await initialSDK({ layout: dom })
@@ -147,7 +148,7 @@ export async function exposeFactory(type: ModelType, win?: any): Promise<ModelEx
     }
   }
   platforms[SceneType.SWKJ] = platforms[SceneType.SWKK]
-  platforms[SceneType.SWMX] = {
+  platforms[SceneType.SWSSMX] = platforms[SceneType.SWMX] = {
     getSDK: async () => findObjectAttr(win , '__sdk'),
     expose: platforms[fuseModel].expose
   }

+ 13 - 3
src/views/sign-model/index.vue

@@ -5,7 +5,7 @@
 <script setup lang="ts">
 import { ref } from 'vue'
 import { loadModel, fuseModel as FModel } from '@/model'
-import { fetchScene } from '@/api'
+import { fetchScene, fetchScenes, Scene, SceneType } from '@/api'
 import { createFuseModels, defTitle, fuseModels, SceneStatus } from '@/store'
 import { params, showModelsMapStack } from '@/env'
 import { Dialog } from 'bill/index'
@@ -15,8 +15,18 @@ import { sdk } from '@/sdk'
 const active = useActive()
 let pop: () => void
 const loadSignModel = async () => {
-  const scene = await fetchScene(Number(params.modelId))
-  if (!scene || scene.status === SceneStatus.SUCCESS) {
+  let scene: Scene | undefined
+  if ('modelId' in params) {
+    const mscene = await fetchScene(Number(params.modelId))
+    if (mscene.status !== SceneStatus.SUCCESS) {
+      scene = mscene
+    }
+  } else if ('m' in params) {
+    const scenes = await fetchScenes()
+    scene = scenes.find(scene => scene.num === params.m && scene.type === SceneType.SWSSMX)
+  } 
+
+  if (!scene) {
     return Dialog.alert(`模型不存在!`)
   }
   if (active.value) {