huangyinfeng
6 天以前 a9a03d64cf190188d3db04d14970fc0908b03491
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<template>
  <div>
    <PageWrapper :class="`${prefixCls}`" dense contentFullHeight fixedHeight>
      <div class="default-theme" style="display: flex; height: 100%; background-color: #fff">
        <div style="width: 10%; height: 100%">
          <LeftNav></LeftNav>
        </div>
        <div style="width: 84%; height: 100%">
          <RouterView>
            <template #default="{ Component, route }">
              <transition
                :name="
                  getTransitionName({
                    route,
                    openCache,
                    enableTransition: getEnableTransition,
                    cacheTabs: getCaches,
                    def: getBasicTransition,
                  })
                "
                mode="out-in"
                appear
              >
                <keep-alive v-if="openCache" :include="getCaches">
                  <component :is="Component" :key="route.fullPath" />
                </keep-alive>
                <component v-else :is="Component" :key="route.fullPath" />
              </transition>
            </template>
          </RouterView>
        </div>
      </div>
    </PageWrapper>
    <FrameLayout v-if="getCanEmbedIFramePage" />
  </div>
</template>
 
<script lang="ts" setup>
  import { PageWrapper } from '@/components/Page';
  import { Splitpanes, Pane } from 'splitpanes';
 
  import LeftNav from '@/views/email/components/LeftMenu/index.vue';
  import { computed, unref } from 'vue';
 
  import FrameLayout from '@/layouts/iframe/index.vue';
 
  import { useRootSetting } from '@/hooks/setting/useRootSetting';
 
  import { useTransitionSetting } from '@/hooks/setting/useTransitionSetting';
  import { useMultipleTabSetting } from '@/hooks/setting/useMultipleTabSetting';
  import { getTransitionName } from './transition';
 
  import { useMultipleTabStore } from '@/store/modules/multipleTab';
 
  defineOptions({ name: 'PageLayout' });
 
  const { getShowMultipleTab } = useMultipleTabSetting();
  const tabStore = useMultipleTabStore();
 
  const { getOpenKeepAlive, getCanEmbedIFramePage } = useRootSetting();
 
  const { getBasicTransition, getEnableTransition } = useTransitionSetting();
 
  const openCache = computed(() => unref(getOpenKeepAlive) && unref(getShowMultipleTab));
 
  const getCaches = computed((): string[] => {
    if (!unref(getOpenKeepAlive)) {
      return [];
    }
    return tabStore.getCachedTabList;
  });
  import { useDesign } from '@/hooks/web/useDesign';
 
  const { prefixCls } = useDesign('email');
</script>
<style lang="less" scoped>
  @prefix-cls: ~'@{namespace}-email';
  .@{prefix-cls} {
    .splitpanes__pane {
      display: flex;
      align-items: center;
      justify-content: center;
      background-color: #fff;
    }
  }
</style>