|
@@ -3,11 +3,46 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import { loadModel, fuseModel } from '@/model'
|
|
|
-import { getScene, initialScenes } from '@/store'
|
|
|
+import { ref } from 'vue'
|
|
|
+import { loadModel, fuseModel as FModel } from '@/model'
|
|
|
+import { initialScenes, createFuseModels, fuseModels, scenes } from '@/store'
|
|
|
+import { params, showModelsMapStack } from '@/env'
|
|
|
+import { Dialog } from 'bill/index'
|
|
|
+import { useViewStack, useActive } from '@/hook';
|
|
|
+import { sdk } from '@/sdk'
|
|
|
|
|
|
+const active = useActive()
|
|
|
+let pop: () => void
|
|
|
+const loadSignModel = async () => {
|
|
|
+ await initialScenes()
|
|
|
+ const scene = params.modelId && scenes.value.find(scene => scene.modelId === Number(params.modelId))
|
|
|
+ if (!scene) {
|
|
|
+ return Dialog.alert(`模型不存在!`)
|
|
|
+ }
|
|
|
+ if (active.value) {
|
|
|
+ const fuseModel = createFuseModels({
|
|
|
+ modelId: scene.modelId,
|
|
|
+ show: true,
|
|
|
+ url: scene.modelGlbUrl || scene.modelObjUrl,
|
|
|
+ type: scene.type
|
|
|
+ })
|
|
|
+ fuseModels.value.push(fuseModel)
|
|
|
|
|
|
-initialScenes()
|
|
|
- .then(() => getScene)
|
|
|
+ await loadModel(FModel)
|
|
|
+ pop = showModelsMapStack.push(ref(new Map([[fuseModel, true]])))
|
|
|
+ ;(window as any).__sdk = sdk
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
+
|
|
|
+useViewStack(() => {
|
|
|
+ const bcModels = fuseModels.value
|
|
|
+ fuseModels.value = []
|
|
|
+
|
|
|
+ loadSignModel()
|
|
|
+ return () => {
|
|
|
+ fuseModels.value = bcModels
|
|
|
+ pop && pop()
|
|
|
+ }
|
|
|
+})
|
|
|
</script>
|