tips.vue 1.5 KB

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