| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <template>
- <div
- class="go-edit-range go-transition"
- :style="rangeStyle"
- @mousedown="mousedownHandleUnStop($event, undefined)"
- >
- <slot></slot>
- <!-- 拖拽时的辅助线 -->
- <EditAlignLine></EditAlignLine>
- </div>
- </template>
- <script setup lang="ts">
- import { toRefs, computed } from 'vue'
- import { useSizeStyle } from '../../hooks/useStyle.hook'
- import { mousedownHandleUnStop } from '../../hooks/useDrag.hook'
- import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
- import { EditAlignLine } from '../EditAlignLine/index'
- const chartEditStore = useChartEditStore()
- const { getEditCanvasConfig, getEditCanvas } = toRefs(chartEditStore)
- const size = computed(() => {
- return {
- w: getEditCanvasConfig.value.width,
- h: getEditCanvasConfig.value.height
- }
- })
- const rangeStyle = computed(() => {
- // 缩放
- const scale = {
- transform: `scale(${getEditCanvas.value.scale})`
- }
- // 设置背景色和图片背景
- const background = getEditCanvasConfig.value.background
- const backgroundImage = getEditCanvasConfig.value.backgroundImage
- const selectColor = getEditCanvasConfig.value.selectColor
- const backgroundColor = background ? background : undefined
- const computedBackground = selectColor
- ? { background: backgroundColor }
- : { background: `url(${backgroundImage}) no-repeat center/100% !important` }
- // @ts-ignore
- return { ...useSizeStyle(size.value), ...computedBackground, ...scale }
- })
- </script>
- <style lang="scss" scoped>
- @include go(edit-range) {
- position: relative;
- border: 1px solid;
- border-radius: 15px;
- transform-origin: left top;
- @include fetch-theme('box-shadow');
- @include filter-border-color('hover-border-color');
- @include fetch-theme-custom('border-color', 'background-color4');
- @include filter-bg-color('background-color2');
- }
- @include go(edit-range-model) {
- z-index: -1;
- position: absolute;
- left: 0;
- top: 0;
- border-radius: 15px;
- border: 1px solid rgba(0, 0, 0, 0);
- background-color: greenyellow;
- opacity: 0.2;
- }
- </style>
|