index.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. <div class="go-edit-range go-transition" :style="rangeStyle" @mousedown="mousedownHandleUnStop($event, undefined)">
  3. <slot></slot>
  4. <!-- 水印 -->
  5. <edit-watermark></edit-watermark>
  6. <!-- 标尺 -->
  7. <edit-rule></edit-rule>
  8. <!-- 拖拽时的辅助线 -->
  9. <edit-align-line></edit-align-line>
  10. <!-- 拖拽时的遮罩 -->
  11. <div class="go-edit-range-model" :style="rangeModelStyle"></div>
  12. </div>
  13. </template>
  14. <script setup lang="ts">
  15. import { toRefs, computed } from 'vue'
  16. import { useSizeStyle } from '../../hooks/useStyle.hook'
  17. import { mousedownHandleUnStop } from '../../hooks/useDrag.hook'
  18. import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
  19. import { EditAlignLine } from '../EditAlignLine'
  20. import { EditWatermark } from '../EditWatermark'
  21. import { EditRule } from '../EditRule'
  22. const chartEditStore = useChartEditStore()
  23. const { getEditCanvasConfig, getEditCanvas } = toRefs(chartEditStore)
  24. const size = computed(() => {
  25. return {
  26. w: getEditCanvasConfig.value.width,
  27. h: getEditCanvasConfig.value.height
  28. }
  29. })
  30. const rangeStyle = computed(() => {
  31. // 缩放
  32. const scale = {
  33. transform: `scale(${getEditCanvas.value.scale})`
  34. }
  35. // @ts-ignore
  36. return { ...useSizeStyle(size.value), ...scale }
  37. })
  38. // 模态层
  39. const rangeModelStyle = computed(() => {
  40. const dragStyle = getEditCanvas.value.isCreate && { 'z-index': 99999 }
  41. // @ts-ignore
  42. return { ...useSizeStyle(size.value), ...dragStyle }
  43. })
  44. </script>
  45. <style lang="scss" scoped>
  46. @include go(edit-range) {
  47. position: relative;
  48. transform-origin: left top;
  49. background-size: cover;
  50. @include fetch-border-color('hover-border-color');
  51. @include fetch-bg-color('background-color2');
  52. @include go(edit-range-model) {
  53. z-index: -1;
  54. position: absolute;
  55. left: 0;
  56. top: 0;
  57. }
  58. }
  59. </style>