|
@@ -3,7 +3,7 @@
|
|
|
<router-view v-slot="{ Component }">
|
|
|
<transition :name="setTransitionName" mode="out-in">
|
|
|
<keep-alive :include="getKeepAliveNames">
|
|
|
- <component :is="Component" :key="state.refreshRouterViewKey" class="w100" v-show="!isIframePage" />
|
|
|
+ <component :is="wrap(route.name, Component)" :key="state.refreshRouterViewKey" class="w100" v-show="!isIframePage" />
|
|
|
</keep-alive>
|
|
|
</transition>
|
|
|
</router-view>
|
|
@@ -14,7 +14,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts" name="layoutParentView">
|
|
|
-import { defineAsyncComponent, computed, reactive, onBeforeMount, onUnmounted, nextTick, watch, onMounted } from 'vue';
|
|
|
+import { defineAsyncComponent, computed, reactive, onBeforeMount, onUnmounted, nextTick, watch, onMounted, h } from 'vue';
|
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
|
import { storeToRefs } from 'pinia';
|
|
|
import { useKeepALiveNames } from '@/stores/keepAliveNames';
|
|
@@ -25,6 +25,24 @@ import mittBus from '@/utils/mitt';
|
|
|
// 引入组件
|
|
|
const Iframes = defineAsyncComponent(() => import('@/layout/routerView/iframes.vue'));
|
|
|
|
|
|
+const wrapperMap = new Map();
|
|
|
+const wrap = (name: any, component: any) => {
|
|
|
+ let wrapper:any;
|
|
|
+ const wrapperName = name;
|
|
|
+ if (wrapperMap.has(wrapperName)) {
|
|
|
+ wrapper = wrapperMap.get(wrapperName);
|
|
|
+ } else {
|
|
|
+ wrapper = {
|
|
|
+ name: wrapperName,
|
|
|
+ render() {
|
|
|
+ return h('div', { class: 'h100 w100' }, component);
|
|
|
+ },
|
|
|
+ };
|
|
|
+ wrapperMap.set(wrapperName, wrapper);
|
|
|
+ }
|
|
|
+ return h(wrapper);
|
|
|
+};
|
|
|
+
|
|
|
// 定义变量内容
|
|
|
const route = useRoute();
|
|
|
const router = useRouter();
|