index.vue 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <div :class="`go-preview ${localStorageInfo.editCanvasConfig.previewScaleType}`">
  3. <template v-if="showEntity">
  4. <!-- 实体区域 -->
  5. <div ref="entityRef" class="go-preview-entity">
  6. <!-- 缩放层 -->
  7. <div ref="previewRef" class="go-preview-scale">
  8. <!-- 展示层 -->
  9. <div :style="previewRefStyle" v-if="show">
  10. <!-- 渲染层 -->
  11. <preview-render-list :localStorageInfo="localStorageInfo"></preview-render-list>
  12. </div>
  13. </div>
  14. </div>
  15. </template>
  16. <template v-else>
  17. <!-- 缩放层 -->
  18. <div ref="previewRef" class="go-preview-scale">
  19. <!-- 展示层 -->
  20. <div :style="previewRefStyle" v-if="show">
  21. <!-- 渲染层 -->
  22. <preview-render-list :localStorageInfo="localStorageInfo"></preview-render-list>
  23. </div>
  24. </div>
  25. </template>
  26. </div>
  27. </template>
  28. <script setup lang="ts">
  29. import { computed } from 'vue'
  30. import { PreviewRenderList } from './components/PreviewRenderList'
  31. import { getFilterStyle } from '@/utils'
  32. import { getEditCanvasConfigStyle, getSessionStorageInfo } from './utils'
  33. import { useComInstall } from './hooks/useComInstall.hook'
  34. import { useScale } from './hooks/useScale.hook'
  35. import { useStore } from './hooks/useStore.hook'
  36. import { PreviewScaleEnum } from '@/enums/styleEnum'
  37. import type { ChartEditStorageType } from './index.d'
  38. const localStorageInfo: ChartEditStorageType = getSessionStorageInfo() as ChartEditStorageType
  39. const previewRefStyle = computed(() => {
  40. return {
  41. ...getEditCanvasConfigStyle(localStorageInfo.editCanvasConfig),
  42. ...getFilterStyle(localStorageInfo.editCanvasConfig)
  43. }
  44. })
  45. const showEntity = computed(() => {
  46. const type = localStorageInfo.editCanvasConfig.previewScaleType
  47. return type === PreviewScaleEnum.SCROLL_Y || type === PreviewScaleEnum.SCROLL_X
  48. })
  49. useStore(localStorageInfo)
  50. const { entityRef, previewRef } = useScale(localStorageInfo)
  51. const { show } = useComInstall(localStorageInfo)
  52. </script>
  53. <style lang="scss" scoped>
  54. @include go('preview') {
  55. position: relative;
  56. height: 100vh;
  57. width: 100vw;
  58. @include background-image('background-image');
  59. &.fit,
  60. &.full {
  61. display: flex;
  62. align-items: center;
  63. justify-content: center;
  64. overflow: hidden;
  65. .go-preview-scale {
  66. transform-origin: center center;
  67. }
  68. }
  69. &.scrollY {
  70. overflow-x: hidden;
  71. .go-preview-scale {
  72. transform-origin: left top;
  73. }
  74. }
  75. &.scrollX {
  76. overflow-y: hidden;
  77. .go-preview-scale {
  78. transform-origin: left top;
  79. }
  80. }
  81. .go-preview-entity {
  82. overflow: hidden;
  83. }
  84. }
  85. </style>