From d3322ffc8cfbef45122784037eea48900f02f469 Mon Sep 17 00:00:00 2001
From: 刘嘉威 <daidaibg@163.com>
Date: 星期一, 10 七月 2023 14:19:42 +0800
Subject: [PATCH] perf: 升级依赖

---
 src/components/scale-screen/scale-screen.vue |   53 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/src/components/scale-screen/scale-screen.vue b/src/components/scale-screen/scale-screen.vue
index 4420bab..d45fa9e 100644
--- a/src/components/scale-screen/scale-screen.vue
+++ b/src/components/scale-screen/scale-screen.vue
@@ -1,5 +1,9 @@
 <template>
-  <section :style="{ ...styles.box, ...boxStyle }" class="v-screen-box">
+  <section
+    :style="{ ...styles.box, ...boxStyle }"
+    class="v-screen-box"
+    ref="box"
+  >
     <div
       :style="{ ...styles.wrapper, ...wrapperStyle }"
       class="screen-wrapper"
@@ -10,7 +14,7 @@
   </section>
 </template>
 <script lang="ts" setup>
-import { nextTick, onMounted, onUnmounted, reactive, ref } from "vue";
+import { nextTick, onMounted, onUnmounted, reactive, ref, watch } from "vue";
 import type { CSSProperties, PropType } from "vue";
 /**
  * 闃叉姈鍑芥暟
@@ -19,7 +23,7 @@
  * @returns {() => void}
  */
 function debounce(fn: Function, delay: number): () => void {
-  // let timer: NodeJS.Timeout;
+  // let timer: NodeJS.Timer;
   let timer: any;
   return function (...args: any[]): void {
     if (timer) clearTimeout(timer);
@@ -105,11 +109,27 @@
 };
 
 const screenWrapper = ref<HTMLElement>();
+const box = ref<HTMLElement>();
+
+watch(
+  () => props.autoScale,
+  async (newVal: any) => {
+    if (newVal) {
+      onResize();
+      addListener();
+    } else {
+      clearListener();
+      clearScreenWrapperStyle();
+    }
+  }
+);
 /**
  * 鍒濆鍖栧ぇ灞忓鍣ㄥ楂�
  */
 const initSize = () => {
   return new Promise<void>((resolve) => {
+    box.value!.scrollLeft = 0;
+    box.value!.scrollTop = 0;
     nextTick(() => {
       // region 鑾峰彇澶у睆鐪熷疄灏哄
       if (props.width && props.height) {
@@ -144,9 +164,14 @@
     screenWrapper.value!.style.height = `${state.originalHeight}px`;
   }
 };
-
+const clearScreenWrapperStyle = () => {
+  screenWrapper.value!.style.transform = "";
+  screenWrapper.value!.style.margin = "";
+};
 const autoScale = (scale: number) => {
-  if (!props.autoScale) return;
+  if (!props.autoScale) {
+    return;
+  }
   const domWidth = screenWrapper.value!.clientWidth;
   const domHeight = screenWrapper.value!.clientHeight;
   const currentWidth = document.body.clientWidth;
@@ -195,17 +220,27 @@
     attributeOldValue: true,
   });
 };
+
+const clearListener = () => {
+  window.removeEventListener("resize", onResize);
+  // state.observer?.disconnect();
+};
+
+const addListener = () => {
+  window.addEventListener("resize", onResize);
+  // initMutationObserver();
+};
 onMounted(() => {
   nextTick(async () => {
     await initSize();
     updateSize();
     updateScale();
-    window.addEventListener("resize", onResize);
-    initMutationObserver();
+    addListener();
+    // initMutationObserver();
   });
 });
 onUnmounted(() => {
-  window.removeEventListener("resize", onResize);
-  state.observer?.disconnect();
+  clearListener();
+  // state.observer?.disconnect();
 });
 </script>

--
Gitblit v1.8.0