index.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <div class="page">
  3. <RouterView>
  4. <template #default="{ Component, route }">
  5. <!-- <transition-->
  6. <!-- :name="-->
  7. <!-- getTransitionName({-->
  8. <!-- route,-->
  9. <!-- openCache,-->
  10. <!-- enableTransition: getEnableTransition,-->
  11. <!-- cacheTabs: getCaches,-->
  12. <!-- def: getBasicTransition,-->
  13. <!-- })-->
  14. <!-- "-->
  15. <!-- mode="out-in"-->
  16. <!-- appear-->
  17. <!-- >-->
  18. <keep-alive v-if="openCache" :include="getCaches">
  19. <Suspense>
  20. <!-- <component :is="Component" :key="route.fullPath" /> -->
  21. <component :is="Component" :key="route.path" />
  22. </Suspense>
  23. </keep-alive>
  24. <Suspense v-else>
  25. <!-- <component :is="Component" :key="route.fullPath" /> -->
  26. <component :is="Component" :key="route.path" />
  27. </Suspense>
  28. <!-- </transition>-->
  29. </template>
  30. </RouterView>
  31. <FrameLayout v-if="getCanEmbedIFramePage" class="test" />
  32. </div>
  33. </template>
  34. <script lang="ts">
  35. import { computed, defineComponent, unref } from 'vue';
  36. import FrameLayout from '/@/layouts/iframe/index.vue';
  37. import { useRootSetting } from '/@/hooks/setting/useRootSetting';
  38. import { useTransitionSetting } from '/@/hooks/setting/useTransitionSetting';
  39. import { useMultipleTabSetting } from '/@/hooks/setting/useMultipleTabSetting';
  40. import { getTransitionName } from './transition';
  41. import { useMultipleTabStore } from '/@/store/modules/multipleTab';
  42. export default defineComponent({
  43. name: 'PageLayout',
  44. components: { FrameLayout },
  45. setup() {
  46. const { getShowMultipleTab } = useMultipleTabSetting();
  47. const tabStore = useMultipleTabStore();
  48. const { getOpenKeepAlive, getCanEmbedIFramePage } = useRootSetting();
  49. const { getBasicTransition, getEnableTransition } = useTransitionSetting();
  50. const openCache = computed(() => {
  51. return unref(getOpenKeepAlive) && unref(getShowMultipleTab);
  52. });
  53. const getCaches = computed((): string[] => {
  54. if (!unref(getOpenKeepAlive)) {
  55. return [];
  56. }
  57. return tabStore.getCachedTabList;
  58. });
  59. return {
  60. getTransitionName,
  61. openCache,
  62. getEnableTransition,
  63. getBasicTransition,
  64. getCaches,
  65. getCanEmbedIFramePage,
  66. };
  67. },
  68. });
  69. </script>
  70. <style scoped lang="less">
  71. .page {
  72. height: 100%;
  73. }
  74. </style>