index.vue 822 B

123456789101112131415161718192021222324
  1. <template>
  2. <div v-if="showFrame">
  3. <template v-for="frame in getFramePages" :key="frame.path">
  4. <FramePage v-if="frame.meta.frameSrc && hasRenderFrame(frame.name)" v-show="showIframe(frame)" :frameSrc="frame.meta.frameSrc" />
  5. </template>
  6. </div>
  7. </template>
  8. <script lang="ts">
  9. import { defineComponent, unref, computed } from 'vue';
  10. import FramePage from '/@/views/sys/iframe/index.vue';
  11. import { useFrameKeepAlive } from './useFrameKeepAlive';
  12. export default defineComponent({
  13. name: 'FrameLayout',
  14. components: { FramePage },
  15. setup() {
  16. const { getFramePages, hasRenderFrame, showIframe } = useFrameKeepAlive();
  17. const showFrame = computed(() => unref(getFramePages).length > 0);
  18. return { getFramePages, hasRenderFrame, showIframe, showFrame };
  19. },
  20. });
  21. </script>