|  | @@ -46,7 +46,10 @@
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |    <NModal
 | 
	
		
			
				|  |  | -    :style="dragStyle"
 | 
	
		
			
				|  |  | +    :style="{
 | 
	
		
			
				|  |  | +      ...dragStyle,
 | 
	
		
			
				|  |  | +      '--transformOrigin': transformOrigin
 | 
	
		
			
				|  |  | +    }"
 | 
	
		
			
				|  |  |      class="metronomeNModal"
 | 
	
		
			
				|  |  |      v-model:show="metronomeShow"
 | 
	
		
			
				|  |  |      :class="[dragClass, windowMet ? 'transformOrigin' : '']"
 | 
	
	
		
			
				|  | @@ -77,7 +80,7 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script setup lang="ts">
 | 
	
		
			
				|  |  |  import { NModal } from 'naive-ui';
 | 
	
		
			
				|  |  | -import { computed, ref, watch, onMounted, onUnmounted} from 'vue';
 | 
	
		
			
				|  |  | +import { computed, ref, watch, onMounted, onUnmounted, nextTick } from 'vue';
 | 
	
		
			
				|  |  |  import Metronome from './Metronome.vue';
 | 
	
		
			
				|  |  |  import { useUserStore } from '@/store/modules/users';
 | 
	
		
			
				|  |  |  import useDrag from '@/hooks/useDrag';
 | 
	
	
		
			
				|  | @@ -126,9 +129,12 @@ function handleCloseMet() {
 | 
	
		
			
				|  |  |    windowMet.value = false;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  function handleWindowMet() {
 | 
	
		
			
				|  |  | -  metronomeShow.value = false;
 | 
	
		
			
				|  |  |    windowMet.value = true;
 | 
	
		
			
				|  |  |    playState.value = metronomeDom.value!.playState;
 | 
	
		
			
				|  |  | +  nextTick(() => {
 | 
	
		
			
				|  |  | +    computedTransformOrigin();
 | 
	
		
			
				|  |  | +    metronomeShow.value = false;
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  function handleSetting() {
 | 
	
		
			
				|  |  |    metronomeShow.value = true;
 | 
	
	
		
			
				|  | @@ -145,6 +151,22 @@ const metronomeMinConDragData = useDrag(
 | 
	
		
			
				|  |  |    windowMet,
 | 
	
		
			
				|  |  |    users.info.id
 | 
	
		
			
				|  |  |  );
 | 
	
		
			
				|  |  | +const transformOrigin = ref('initial');
 | 
	
		
			
				|  |  | +function computedTransformOrigin() {
 | 
	
		
			
				|  |  | +  const dragDom = document.querySelector(`.${props.dragClass}`) as HTMLElement;
 | 
	
		
			
				|  |  | +  const dragRect = dragDom.getBoundingClientRect();
 | 
	
		
			
				|  |  | +  const metMinLeft =
 | 
	
		
			
				|  |  | +    metronomeMinConDragData.pos.value.left === -1
 | 
	
		
			
				|  |  | +      ? 12 //初始化时候窗口的left
 | 
	
		
			
				|  |  | +      : metronomeMinConDragData.pos.value.left;
 | 
	
		
			
				|  |  | +  const metMinTop =
 | 
	
		
			
				|  |  | +    metronomeMinConDragData.pos.value.top === -1
 | 
	
		
			
				|  |  | +      ? document.body.clientHeight - 81 - 10 //初始化时候窗口的高
 | 
	
		
			
				|  |  | +      : metronomeMinConDragData.pos.value.top;
 | 
	
		
			
				|  |  | +  const dragLeft = dragRect.left;
 | 
	
		
			
				|  |  | +  const dragTop = dragRect.top;
 | 
	
		
			
				|  |  | +  transformOrigin.value = `${metMinLeft - dragLeft}Px ${metMinTop - dragTop}Px`;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  const isDrag = ref(false); // 拖动metronomeMin的时候防止iframe
 | 
	
		
			
				|  |  |  function hanldeMetronomeMinmousedown() {
 | 
	
		
			
				|  |  |    isDrag.value = true;
 | 
	
	
		
			
				|  | @@ -231,7 +253,7 @@ function hanldeMetronomeMinmousedown() {
 | 
	
		
			
				|  |  |    position: relative;
 | 
	
		
			
				|  |  |    box-shadow: initial;
 | 
	
		
			
				|  |  |    &.transformOrigin {
 | 
	
		
			
				|  |  | -    transform-origin: 50% 50% !important;
 | 
	
		
			
				|  |  | +    transform-origin: var(--transformOrigin) !important;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    .topDragDom {
 | 
	
		
			
				|  |  |      position: absolute;
 |