|
@@ -48,19 +48,21 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import { ref, computed, watch } from 'vue'
|
|
|
+import { ref, computed, watch, watchEffect } from 'vue'
|
|
|
import { ControlPanl } from '@/components/control-panl/'
|
|
|
import { modelRange, getSceneModel } from '@/sdk'
|
|
|
import { diffArrayChange } from '@/utils'
|
|
|
import { useViewStack } from '@/hook'
|
|
|
-import { autoSaveFuseModels, getFuseModel, leave } from '@/store'
|
|
|
-import { router } from '@/router'
|
|
|
+import { autoSaveFuseModels, fuseModelsLoaded, getFuseModel, leave } from '@/store'
|
|
|
+import { router, RoutesName } from '@/router'
|
|
|
|
|
|
import type { ControlExpose } from '@/components/control-panl'
|
|
|
|
|
|
+const isCurrent = computed(() => router.currentRoute.value.name === RoutesName.registration)
|
|
|
+
|
|
|
const model = computed(() => {
|
|
|
const modelId = router.currentRoute.value.params.id as string
|
|
|
- if (modelId) {
|
|
|
+ if (isCurrent.value && modelId) {
|
|
|
return getFuseModel(modelId)
|
|
|
}
|
|
|
})
|
|
@@ -99,21 +101,25 @@ watch(selectOptions, (nOptions, oOptions = []) => {
|
|
|
}
|
|
|
}, { immediate: true })
|
|
|
|
|
|
-useViewStack(() => {
|
|
|
- if (sceneModel.value) {
|
|
|
- const model = sceneModel.value
|
|
|
- model.enterAlignment()
|
|
|
- return () => {
|
|
|
- if (selectOptions.value.length) {
|
|
|
- model.leaveTransform()
|
|
|
- selectOptions.value = []
|
|
|
- }
|
|
|
- model.leaveAlignment()
|
|
|
- }
|
|
|
- } else {
|
|
|
+watchEffect((onCleanup) => {
|
|
|
+ const smodel = sceneModel.value
|
|
|
+ if (smodel) {
|
|
|
+ smodel.enterAlignment()
|
|
|
+
|
|
|
+ onCleanup(() => {
|
|
|
+ smodel.leaveTransform()
|
|
|
+ smodel.leaveAlignment()
|
|
|
+ })
|
|
|
+ } else if (isCurrent.value) {
|
|
|
leave()
|
|
|
}
|
|
|
})
|
|
|
+
|
|
|
+useViewStack(() => () => {
|
|
|
+ if (selectOptions.value.length) {
|
|
|
+ selectOptions.value = []
|
|
|
+ }
|
|
|
+})
|
|
|
useViewStack(autoSaveFuseModels)
|
|
|
|
|
|
</script>
|