tips.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <template>
  2. <div v-if="show" class="user-tips-overlay">
  3. <img :src="metadata.workOpeningTip.pcIcon || require('@/assets/images/default/show/img_tipspc_default.png')" alt="" />
  4. </div>
  5. </template>
  6. <script setup>
  7. import { onMounted, watch, computed, ref, nextTick, unref } from "vue";
  8. import { useApp } from "@/app";
  9. import { useStore } from "vuex";
  10. const store = useStore();
  11. const metadata = computed(() => store.getters["scene/metadata"]);
  12. const currentScene = computed(() => store.getters["scene/currentScene"]);
  13. const show = ref(false);
  14. const isPano = computed(() => currentScene.value.type === "pano");
  15. useApp().then((app) => {
  16. app.Scene.on("sceneReady", () => {
  17. let locoR = "localRemind" + metadata.value.work.id;
  18. if (metadata.value.workOpeningTip.isRemind && isPano.value) {
  19. show.value = localStorage.getItem(locoR) == 1 ? false : !!metadata.value.workOpeningTip.remindTime;
  20. localStorage.setItem(locoR, 1);
  21. } else {
  22. if (metadata.value.workOpeningTip.remindTime && isPano.value) {
  23. show.value = true;
  24. }
  25. localStorage.setItem(locoR, 0);
  26. }
  27. if (show.value) {
  28. setTimeout(() => {
  29. show.value = false;
  30. }, (metadata.value.workOpeningTip.remindTime || 3) * 1000);
  31. }
  32. });
  33. });
  34. </script>
  35. <style lang="scss" scoped>
  36. .user-tips-overlay {
  37. position: absolute;
  38. top: 50%;
  39. left: 50%;
  40. transform: translate(-50%, -50%);
  41. transition: display 0.3s ease;
  42. > img {
  43. max-width: 150px;
  44. }
  45. }
  46. </style>