index.vue 853 B

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