index.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. </template>
  3. <script setup lang="ts">
  4. import {computed, ref} from 'vue'
  5. import { loadModel, fuseModel as FModel } from '@/model'
  6. import { fetchScene, fetchScenesAll, Scene, SceneType } from '@/api'
  7. import { createFuseModels, defTitle, fuseModels, SceneStatus } from '@/store'
  8. import {custom, params, showModelsMapStack, showRightPanoStack, viewModeStack} from '@/env'
  9. import { Dialog } from 'bill/index'
  10. import { useViewStack, useActive } from '@/hook';
  11. import { sdk } from '@/sdk'
  12. const active = useActive()
  13. let pop: () => void
  14. const loadSignModel = async () => {
  15. showRightPanoStack.push(ref(false))
  16. viewModeStack.push(ref('full'))
  17. let scene: Scene | undefined
  18. if ('modelId' in params) {
  19. const mscene = await fetchScene(Number(params.modelId))
  20. if (mscene.status !== SceneStatus.SUCCESS) {
  21. scene = mscene
  22. }
  23. } else if ('m' in params) {
  24. const SSscenes = await fetchScenesAll({ numList: [params.m!], type: SceneType.SWSSMX })
  25. const YDscenes = await fetchScenesAll({ numList: [params.m!], type: SceneType.SWYDMX })
  26. const scenes = [...SSscenes, ...YDscenes]
  27. scene = scenes.find(scene => scene.num === params.m)
  28. console.log(scene)
  29. }
  30. if (!scene) {
  31. return Dialog.alert(`模型不存在!`)
  32. }
  33. if (active.value) {
  34. defTitle.value = scene.title || scene.modelTitle
  35. const fuseModel = createFuseModels({
  36. modelId: scene.modelId,
  37. show: true,
  38. url: scene.modelGlbUrl || scene.modelObjUrl,
  39. type: scene.type,
  40. opacity: 100,
  41. modelType: scene.modelDateType
  42. })
  43. fuseModels.value.push(fuseModel)
  44. await loadModel(FModel)
  45. pop = showModelsMapStack.push(ref(new Map([[fuseModel, true]])))
  46. ;(window as any).__sdk = sdk
  47. }
  48. }
  49. useViewStack(() => {
  50. const bcModels = fuseModels.value
  51. fuseModels.value = []
  52. loadSignModel()
  53. return () => {
  54. fuseModels.value = bcModels
  55. pop && pop()
  56. }
  57. })
  58. </script>