diff --git a/src/hooks/index.ts b/src/hooks/index.ts
index 2cead04f..979e8387 100644
--- a/src/hooks/index.ts
+++ b/src/hooks/index.ts
@@ -1 +1,2 @@
-export * from '@/hooks/themeHook'
\ No newline at end of file
+export * from '@/hooks/theme.hook'
+export * from '@/hooks/previewScale.hook'
\ No newline at end of file
diff --git a/src/hooks/previewScale.hook.ts b/src/hooks/previewScale.hook.ts
new file mode 100644
index 00000000..7fdd8ce3
--- /dev/null
+++ b/src/hooks/previewScale.hook.ts
@@ -0,0 +1,71 @@
+import { ref } from 'vue'
+import throttle from 'lodash/throttle'
+
+export const usePreviewScale = (
+ width: number,
+ height: number,
+ scaleDom: HTMLElement | null
+) => {
+ // * 指向最外层容器(没生效不知道为啥)
+ const appRef = ref()
+
+ // * 屏幕尺寸(px)
+ const baseWidth = width
+ const baseHeight = height
+
+ // * 默认缩放值
+ const scale = {
+ width: '1',
+ height: '1',
+ }
+
+ // * 需保持的比例
+ const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5))
+ const calcRate = () => {
+ // 当前宽高比
+ const currentRate = parseFloat(
+ (window.innerWidth / window.innerHeight).toFixed(5)
+ )
+ if (scaleDom) {
+ if (currentRate > baseProportion) {
+ // 表示更宽
+ scale.width = (
+ (window.innerHeight * baseProportion) /
+ baseWidth
+ ).toFixed(5)
+ scale.height = (window.innerHeight / baseHeight).toFixed(5)
+ scaleDom.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`
+ } else {
+ // 表示更高
+ scale.height = (
+ window.innerWidth /
+ baseProportion /
+ baseHeight
+ ).toFixed(5)
+ scale.width = (window.innerWidth / baseWidth).toFixed(5)
+ scaleDom.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`
+ }
+ }
+ }
+
+ const resize = throttle(() => {
+ calcRate()
+ }, 200)
+
+ // * 改变窗口大小重新绘制
+ const windowResize = () => {
+ window.addEventListener('resize', resize)
+ }
+
+ // * 改变窗口大小重新绘制
+ const unWindowResize = () => {
+ window.removeEventListener('resize', resize)
+ }
+
+ return {
+ appRef,
+ calcRate,
+ windowResize,
+ unWindowResize,
+ }
+}
diff --git a/src/hooks/themeHook.ts b/src/hooks/theme.hook.ts
similarity index 100%
rename from src/hooks/themeHook.ts
rename to src/hooks/theme.hook.ts
diff --git a/src/views/chart/ContentEdit/hooks/useDrag.hook.ts b/src/views/chart/ContentEdit/hooks/useDrag.hook.ts
index 02f7d842..da0e69d5 100644
--- a/src/views/chart/ContentEdit/hooks/useDrag.hook.ts
+++ b/src/views/chart/ContentEdit/hooks/useDrag.hook.ts
@@ -189,7 +189,7 @@ export const useMousePointHandle = (
attr.w = newWidth > 0 ? newWidth : 0
attr.x = itemAttrX + (isLeft ? currX : 0)
attr.y = itemAttrY + (isTop ? currY : 0)
- })
+ }, 50)
const mouseup = () => {
// 设置拖拽状态
diff --git a/src/views/preview/index.vue b/src/views/preview/index.vue
index a5af14d3..9e22334c 100644
--- a/src/views/preview/index.vue
+++ b/src/views/preview/index.vue
@@ -1,33 +1,66 @@