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