index.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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="`/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. <iframe
  31. allowfullscreen="true"
  32. allow="autoplay"
  33. :key="currentScene.sceneCode"
  34. class="V4"
  35. v-else
  36. id="fdkkifr"
  37. :src="V4IframeUrl"
  38. frameborder="0"
  39. ></iframe>
  40. </div>
  41. </template>
  42. <script setup>
  43. import { ref, computed, onUnmounted, onMounted, nextTick, unref } from "vue";
  44. import { useStore } from "vuex";
  45. import browser from "@/utils/browser";
  46. import v3mobile from "./v3fdkkmobile/iframe.vue";
  47. import { getApp } from "@/app";
  48. import config from "@/utils/config";
  49. const store = useStore();
  50. const isMobile = computed(() => browser.isMobile());
  51. const lang = computed(() => config.lang);
  52. const currentScene = computed(() => store.getters["scene/currentScene"]);
  53. const isHasV4BGM = computed(() => store.getters["audio/isHasV4BGM"]);
  54. const fdkkCurrentVersion = computed(
  55. () => store.getters["scene/fdkkCurrentVersion"]
  56. );
  57. const somedatainfo = ref({});
  58. const embeM = ref(null);
  59. const otherLink = ref(null);
  60. const rnd = ref(null);
  61. const V4IframeUrl = computed(() => {
  62. const v4Mi = process.env.VUE_APP_DEBBUG_V4_URL;
  63. if (process.env.VUE_APP_DEBBUG_V4 == 1) {
  64. return `${v4Mi}/${unref(isMobile) ? "smg" : "spg"}.html?m=${
  65. unref(currentScene).sceneCode
  66. }&lang=${unref(lang)}`;
  67. } else {
  68. return `${unref(isMobile) ? "smg" : "spg"}.html?m=${
  69. unref(currentScene).sceneCode
  70. }&lang=${unref(lang)}`;
  71. }
  72. });
  73. const handleMessage = (res) => {
  74. if (Object.prototype.toString.call(res.data) == "[object Object]") {
  75. if (res.data.source !== "qjkankan") {
  76. return;
  77. }
  78. let { event, params } = res.data;
  79. //导览片段
  80. if (event == "toursList") {
  81. store.commit("fdkk/setToursList", params.tours);
  82. }
  83. //是否导览中
  84. if (event == "isPlayTours") {
  85. store.commit("fdkk/setIsPlayTours", params.isPlay);
  86. }
  87. // 是否flying
  88. if (event == "isFlying") {
  89. store.commit("fdkk/setIsFlying", params.isFlying);
  90. }
  91. if (event == "setMode") {
  92. store.commit("fdkk/setMode", params.mode);
  93. }
  94. if (event == "setVR") {
  95. store.commit("functions/setVrStatus", params.status);
  96. }
  97. // V4场景本身的背景音乐 (同时可判断场景已经加载完成)
  98. if (event == "fdkkBgmLink") {
  99. const url = params.music || "";
  100. console.log("fdkkBgmLink", url);
  101. store.dispatch("audio/setLock", false);
  102. store.dispatch("audio/initV4BGM", url);
  103. // loading完毕
  104. getApp().Scene.emit("ready");
  105. }
  106. if (event == "fdkkMetadata") {
  107. store.commit("fdkk/setMetadata", params.metadata);
  108. }
  109. if (event == "toggleFdkkHotspot") {
  110. if (params.status == "open") {
  111. store.commit("functions/setShowScenesList", false);
  112. store.commit("fdkk/setShowToursList", false);
  113. }
  114. }
  115. //
  116. if (event == "toggleBgmStatus") {
  117. console.error("toggleBgmStatus", params);
  118. // debugger;
  119. if (params.status) {
  120. } else {
  121. }
  122. }
  123. if (event == "autoPlayBgm") {
  124. store.dispatch("audio/playBGM", 2);
  125. }
  126. }
  127. };
  128. onMounted(() => {
  129. nextTick(() => {
  130. window.removeEventListener("message", handleMessage);
  131. window.addEventListener("message", handleMessage);
  132. });
  133. });
  134. onUnmounted(() => {
  135. window.removeEventListener("message", handleMessage);
  136. // store.dispatch("audio/destroy");
  137. });
  138. const handleOther = (data) => {
  139. otherLink.value = data;
  140. rnd.value = Math.random();
  141. };
  142. const handleChange = (data) => {
  143. embeM.value = data;
  144. rnd.value = Math.random();
  145. };
  146. </script>
  147. <style lang="scss" scoped>
  148. .fdkkcon {
  149. position: absolute;
  150. width: 100%;
  151. height: 100%;
  152. top: 0;
  153. left: 0;
  154. right: 0;
  155. bottom: 0;
  156. > iframe {
  157. width: 100%;
  158. height: 100%;
  159. }
  160. }
  161. </style>