index.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <template>
  2. <div class="fdkkcon">
  3. <template v-if="fdkkCurrentVersion == 'v3'">
  4. <iframe
  5. allowfullscreen="true"
  6. allow="autoplay"
  7. :key="currentScene.sceneCode"
  8. v-if="!isMobile"
  9. id="fdkkifr"
  10. :src="`https://test.4dkankan.com/spc.html?m=${currentScene.sceneCode}&lang=${lang}`"
  11. frameborder="0"
  12. ></iframe>
  13. <!-- <iframe :key="currentScene.sceneCode" v-if="!isMobile" id="fdkkifr" :src="`https://test.4dkankan.com/spc.html?m=${currentScene.sceneCode}`" -->
  14. <!-- v3场景移动端,用embed.html定制开发 -->
  15. <v3mobile
  16. v-else
  17. @changeUrl="handleChange"
  18. @otherUrl="handleOther"
  19. :somedatainfo="somedatainfo"
  20. :key="embeM || currentScene.sceneCode"
  21. :url="
  22. otherLink
  23. ? otherLink
  24. : `/embed.html?from=mingyuan&m=${
  25. embeM || currentScene.sceneCode
  26. }&lang=${lang}&scene-link=1&rnd=${rnd}`
  27. "
  28. />
  29. </template>
  30. <!-- :url="otherLink ? otherLink : `https://test.4dkankan.com/embed.html?from=mingyuan&m=${embeM || currentScene.sceneCode}&lang=zh&scene-link=1&rnd=${rnd}`" /> -->
  31. <iframe
  32. allowfullscreen="true"
  33. allow="autoplay"
  34. :key="currentScene.sceneCode"
  35. v-else
  36. id="fdkkifr"
  37. :src="`http://192.168.0.186:8081/${isMobile ? 'smg' : 'spg'}.html?m=${
  38. currentScene.sceneCode
  39. }&lang=${lang}`"
  40. frameborder="0"
  41. ></iframe>
  42. <!-- :src="`http://192.168.20.66:8080/${isMobile ? 'smg' : 'spg'}.html?m=${currentScene.sceneCode}`" -->
  43. <!-- <iframe id="fdkkifr" :src="`${isMobile?'smg':'spg'}.html?m=${currentScene.sceneCode}`" frameborder="0"></iframe> -->
  44. </div>
  45. </template>
  46. <script setup>
  47. import { ref, watch, computed, onUnmounted, onMounted, nextTick } from "vue";
  48. import { useStore } from "vuex";
  49. import browser from "@/utils/browser";
  50. // import { useMusicPlayer } from '@/utils/sound'
  51. import v3mobile from "./v3fdkkmobile/iframe.vue";
  52. import { getApp } from "@/app";
  53. import config from "@/utils/config";
  54. // const musicPlayer = useMusicPlayer()
  55. const store = useStore();
  56. const isMobile = computed(() => browser.isMobile());
  57. const lang = computed(() => config.lang);
  58. const currentScene = computed(() => store.getters["scene/currentScene"]);
  59. const fdkkCurrentVersion = computed(
  60. () => store.getters["scene/fdkkCurrentVersion"]
  61. );
  62. const somedatainfo = ref({});
  63. const embeM = ref(null);
  64. const otherLink = ref(null);
  65. const rnd = ref(null);
  66. const handleMessage = (res) => {
  67. if (Object.prototype.toString.call(res.data) == "[object Object]") {
  68. if (res.data.source !== "qjkankan") {
  69. return;
  70. }
  71. let { event, params } = res.data;
  72. //导览片段
  73. if (event == "toursList") {
  74. store.commit("fdkk/setToursList", params.tours);
  75. }
  76. //是否导览中
  77. if (event == "isPlayTours") {
  78. store.commit("fdkk/setIsPlayTours", params.isPlay);
  79. }
  80. // 是否flying
  81. if (event == "isFlying") {
  82. store.commit("fdkk/setIsFlying", params.isFlying);
  83. }
  84. if (event == "setMode") {
  85. store.commit("fdkk/setMode", params.mode);
  86. }
  87. if (event == "setVR") {
  88. store.commit("functions/setVrStatus", params.status);
  89. }
  90. //场景本身的背景音乐 (同时可判断场景已经加载完成)
  91. if (event == "fdkkBgmLink") {
  92. // store.commit('fdkk/setFdkkBGM', params.music)
  93. if (params.music) {
  94. store.dispatch("audio/initV4BGM", params.music);
  95. }
  96. // loading完毕
  97. getApp().Scene.emit("ready");
  98. }
  99. if (event == "fdkkMetadata") {
  100. store.commit("fdkk/setMetadata", params.metadata);
  101. }
  102. if (event == "toggleFdkkHotspot") {
  103. if (params.status == "open") {
  104. store.commit("functions/setShowScenesList", false);
  105. store.commit("fdkk/setShowToursList", false);
  106. }
  107. }
  108. if (event == "toggleBgmStatus") {
  109. // if (params.status) {
  110. // musicPlayer.resume()
  111. // } else {
  112. // musicPlayer.pause(true)
  113. // }
  114. }
  115. if (event == "autoPlayBgm") {
  116. // useMusicPlayer.player.watchPlay(true)
  117. // if (!useMusicPlayer.player.isPlay && !musicPlayer.pauseFromOther) {
  118. // musicPlayer.pauseFromOther = true
  119. // setTimeout(() => {
  120. // musicPlayer.play()
  121. // }, 50);
  122. // }
  123. }
  124. }
  125. };
  126. onMounted(() => {
  127. nextTick(() => {
  128. window.removeEventListener("message", handleMessage);
  129. window.addEventListener("message", handleMessage);
  130. });
  131. });
  132. onUnmounted(() => {
  133. window.removeEventListener("message", handleMessage);
  134. });
  135. const handleOther = (data) => {
  136. otherLink.value = data;
  137. rnd.value = Math.random();
  138. };
  139. const handleChange = (data) => {
  140. embeM.value = data;
  141. rnd.value = Math.random();
  142. };
  143. </script>
  144. <style lang="scss" scoped>
  145. .fdkkcon {
  146. position: absolute;
  147. width: 100%;
  148. height: 100%;
  149. top: 0;
  150. left: 0;
  151. right: 0;
  152. bottom: 0;
  153. > iframe {
  154. width: 100%;
  155. height: 100%;
  156. }
  157. }
  158. </style>