|  | @@ -102,6 +102,15 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        // setContainer();
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |      handleInit();
 | 
	
		
			
				|  |  | +    const boxBoundaryInfo = reactive({
 | 
	
		
			
				|  |  | +      isBoundary: true,
 | 
	
		
			
				|  |  | +      isBoundaryType: 'right' as any,
 | 
	
		
			
				|  |  | +      mainWidth: '' as any,
 | 
	
		
			
				|  |  | +      mainHeight: '' as any,
 | 
	
		
			
				|  |  | +      subWidth: '' as any,
 | 
	
		
			
				|  |  | +      subHeight: '' as any
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      onUnmounted(() => {
 | 
	
		
			
				|  |  |        handleInit(1);
 | 
	
		
			
				|  |  |      });
 | 
	
	
		
			
				|  | @@ -245,7 +254,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  width: Number(subdElStyle.width.replace('px', '')),
 | 
	
		
			
				|  |  |                  height: Number(subdElStyle.height.replace('px', ''))
 | 
	
		
			
				|  |  |                };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +              // target.style.transition = ''
 | 
	
		
			
				|  |  |                const mainWidth =
 | 
	
		
			
				|  |  |                  parseInt(
 | 
	
		
			
				|  |  |                    window.getComputedStyle(
 | 
	
	
		
			
				|  | @@ -259,12 +268,22 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                      document.querySelector('.wrap') as Element
 | 
	
		
			
				|  |  |                    ).height
 | 
	
		
			
				|  |  |                  ) - RectInfo.height;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +              subdEl.style.transition = '';
 | 
	
		
			
				|  |  | +              boxBoundaryInfo.isBoundary = false;
 | 
	
		
			
				|  |  | +              boxBoundaryInfo.isBoundaryType = '';
 | 
	
		
			
				|  |  | +              boxBoundaryInfo.mainHeight = mainHeight;
 | 
	
		
			
				|  |  | +              boxBoundaryInfo.mainWidth = mainWidth;
 | 
	
		
			
				|  |  | +              boxBoundaryInfo.subWidth = RectInfo.width;
 | 
	
		
			
				|  |  | +              boxBoundaryInfo.subHeight = RectInfo.height;
 | 
	
		
			
				|  |  |                if (left < 0) {
 | 
	
		
			
				|  |  |                  left = 2;
 | 
	
		
			
				|  |  | +                boxBoundaryInfo.isBoundary = true;
 | 
	
		
			
				|  |  | +                boxBoundaryInfo.isBoundaryType = 'left';
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                if (top < 0) {
 | 
	
		
			
				|  |  |                  top = 2;
 | 
	
		
			
				|  |  | +                boxBoundaryInfo.isBoundary = true;
 | 
	
		
			
				|  |  | +                boxBoundaryInfo.isBoundaryType = 'top';
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                if (right < 0) {
 | 
	
		
			
				|  |  |                  right = 2;
 | 
	
	
		
			
				|  | @@ -274,9 +293,14 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                if (left > mainWidth - 2) {
 | 
	
		
			
				|  |  |                  left = mainWidth - 2;
 | 
	
		
			
				|  |  | +                // top = 2;
 | 
	
		
			
				|  |  | +                boxBoundaryInfo.isBoundary = true;
 | 
	
		
			
				|  |  | +                boxBoundaryInfo.isBoundaryType = 'right';
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                if (top > mainHeight - 2) {
 | 
	
		
			
				|  |  |                  top = mainHeight - 2;
 | 
	
		
			
				|  |  | +                boxBoundaryInfo.isBoundary = true;
 | 
	
		
			
				|  |  | +                boxBoundaryInfo.isBoundaryType = 'bottom';
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                target!.style.left = `${left}px`;
 | 
	
	
		
			
				|  | @@ -286,7 +310,8 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            .on(
 | 
	
		
			
				|  |  |              'dragEnd',
 | 
	
		
			
				|  |  |              async ({
 | 
	
		
			
				|  |  | -              // target, isDrag,
 | 
	
		
			
				|  |  | +              target,
 | 
	
		
			
				|  |  | +              // isDrag,
 | 
	
		
			
				|  |  |                clientX
 | 
	
		
			
				|  |  |                // clientY
 | 
	
		
			
				|  |  |              }) => {
 | 
	
	
		
			
				|  | @@ -298,6 +323,12 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  directionType.value = 'left';
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                isDragIng.value = false;
 | 
	
		
			
				|  |  | +              // 在这里进行动画
 | 
	
		
			
				|  |  | +              if (boxBoundaryInfo.isBoundary) {
 | 
	
		
			
				|  |  | +                // 这里说明贴边了
 | 
	
		
			
				|  |  | +                target.style.transition = '.3s';
 | 
	
		
			
				|  |  | +                actionEnd(target, boxBoundaryInfo.isBoundaryType);
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |            );
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -319,10 +350,130 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        data.detailId = props.detailId || query.detailId;
 | 
	
		
			
				|  |  |        data.classGroupId = props.classGroupId || query.classGroupId;
 | 
	
		
			
				|  |  |        initMoveable();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      const subdEl = document.getElementById(`moveNPopover`) as HTMLDivElement;
 | 
	
		
			
				|  |  | +      initBoxRectInfo(subdEl, boxBoundaryInfo);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      initBoundaryWrap(subdEl, boxBoundaryInfo);
 | 
	
		
			
				|  |  |        window.addEventListener('message', iframeHandle);
 | 
	
		
			
				|  |  |        getDetail();
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  | +    const initBoundaryWrap = (target: any, wrapInfo: any) => {
 | 
	
		
			
				|  |  | +      target.addEventListener('mouseenter', () => {
 | 
	
		
			
				|  |  | +        if (wrapInfo.isBoundary) {
 | 
	
		
			
				|  |  | +          // 如果在边框 就得还原 元素位置 还原完毕后 去除transition
 | 
	
		
			
				|  |  | +          if (wrapInfo.isBoundaryType == 'left') {
 | 
	
		
			
				|  |  | +            target.style.left = '2px';
 | 
	
		
			
				|  |  | +          } else if (wrapInfo.isBoundaryType == 'right') {
 | 
	
		
			
				|  |  | +            target.style.left = `${wrapInfo.mainWidth - 2}px`;
 | 
	
		
			
				|  |  | +          } else if (wrapInfo.isBoundaryType == 'top') {
 | 
	
		
			
				|  |  | +            target.style.top = `${2}px`;
 | 
	
		
			
				|  |  | +          } else if (wrapInfo.isBoundaryType == 'bottom') {
 | 
	
		
			
				|  |  | +            target.style.top = `${wrapInfo.mainHeight - 2}px`;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        rate(target, 0);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      target.addEventListener('mouseleave', () => {
 | 
	
		
			
				|  |  | +        if (wrapInfo.isBoundary) {
 | 
	
		
			
				|  |  | +          // 如果在边框 就得还原 元素位置 还原完毕后 去除transition
 | 
	
		
			
				|  |  | +          if (wrapInfo.isBoundaryType == 'left') {
 | 
	
		
			
				|  |  | +            actionEnd(target, 'left');
 | 
	
		
			
				|  |  | +          } else if (wrapInfo.isBoundaryType == 'right') {
 | 
	
		
			
				|  |  | +            actionEnd(target, 'right');
 | 
	
		
			
				|  |  | +          } else if (wrapInfo.isBoundaryType == 'top') {
 | 
	
		
			
				|  |  | +            actionEnd(target, 'top');
 | 
	
		
			
				|  |  | +          } else if (wrapInfo.isBoundaryType == 'bottom') {
 | 
	
		
			
				|  |  | +            actionEnd(target, 'bottom');
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // rate(target, 0)
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      // target.addEventListener('contextmenu', (event: any) => {
 | 
	
		
			
				|  |  | +      //   event.preventDefault();
 | 
	
		
			
				|  |  | +      //   dialog.warning({
 | 
	
		
			
				|  |  | +      //     title: '提示',
 | 
	
		
			
				|  |  | +      //     content: '是否收入托盘',
 | 
	
		
			
				|  |  | +      //     positiveText: '确定',
 | 
	
		
			
				|  |  | +      //     negativeText: '取消',
 | 
	
		
			
				|  |  | +      //     onPositiveClick: () => {
 | 
	
		
			
				|  |  | +      //       console.log('确定')
 | 
	
		
			
				|  |  | +      //     },
 | 
	
		
			
				|  |  | +      //     onNegativeClick: () => {
 | 
	
		
			
				|  |  | +      //       console.log('取消')
 | 
	
		
			
				|  |  | +      //     }
 | 
	
		
			
				|  |  | +      //   })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +      actionEnd(target, 'right');
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    // 这里是旋转
 | 
	
		
			
				|  |  | +    const rate = (target: any, rate: any) => {
 | 
	
		
			
				|  |  | +      target.style.transform = ' rotate(' + rate + ')';
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //  这里是选装的方式
 | 
	
		
			
				|  |  | +    const actionEnd = (target: any, type: any) => {
 | 
	
		
			
				|  |  | +      switch (type) {
 | 
	
		
			
				|  |  | +        case 'left':
 | 
	
		
			
				|  |  | +          rate(target, '90deg');
 | 
	
		
			
				|  |  | +          target!.style.left = `${2 - boxBoundaryInfo.subWidth / 2}px`;
 | 
	
		
			
				|  |  | +          target!.style.top = `${top}px`;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 'right':
 | 
	
		
			
				|  |  | +          rate(target, '-90deg');
 | 
	
		
			
				|  |  | +          target!.style.left = `${
 | 
	
		
			
				|  |  | +            boxBoundaryInfo.mainWidth - 2 + boxBoundaryInfo.subWidth / 2
 | 
	
		
			
				|  |  | +          }px`;
 | 
	
		
			
				|  |  | +          target!.style.top = `${top}px`;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        case 'top':
 | 
	
		
			
				|  |  | +          target!.style.top = `${2 - boxBoundaryInfo.subHeight / 2}px`;
 | 
	
		
			
				|  |  | +          rate(target, '-180deg');
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 'bottom':
 | 
	
		
			
				|  |  | +          target!.style.top = `${
 | 
	
		
			
				|  |  | +            boxBoundaryInfo.mainHeight - 2 + boxBoundaryInfo.subHeight / 2
 | 
	
		
			
				|  |  | +          }px`;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        default:
 | 
	
		
			
				|  |  | +          rate(target, '-0');
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const initBoxRectInfo = (target: any, wrapInfo: any) => {
 | 
	
		
			
				|  |  | +      // const subdEl = document.getElementById(`moveNPopover`) as HTMLDivElement;
 | 
	
		
			
				|  |  | +      // console.log(subdEl, "subdEl", "drag");
 | 
	
		
			
				|  |  | +      const subdElStyle = getComputedStyle(target, null);
 | 
	
		
			
				|  |  | +      const RectInfo = {
 | 
	
		
			
				|  |  | +        left: Number(subdElStyle.left.replace('px', '')),
 | 
	
		
			
				|  |  | +        top: Number(subdElStyle.top.replace('px', '')),
 | 
	
		
			
				|  |  | +        width: Number(subdElStyle.width.replace('px', '')),
 | 
	
		
			
				|  |  | +        height: Number(subdElStyle.height.replace('px', ''))
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +      // target.style.transition = ''
 | 
	
		
			
				|  |  | +      const mainWidth =
 | 
	
		
			
				|  |  | +        parseInt(
 | 
	
		
			
				|  |  | +          window.getComputedStyle(document.querySelector('.wrap') as Element)
 | 
	
		
			
				|  |  | +            .width
 | 
	
		
			
				|  |  | +        ) - RectInfo.width;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      const mainHeight =
 | 
	
		
			
				|  |  | +        parseInt(
 | 
	
		
			
				|  |  | +          window.getComputedStyle(document.querySelector('.wrap') as Element)
 | 
	
		
			
				|  |  | +            .height
 | 
	
		
			
				|  |  | +        ) - RectInfo.height;
 | 
	
		
			
				|  |  | +      // boxBoundaryInfo.isBoundary = false;
 | 
	
		
			
				|  |  | +      // boxBoundaryInfo.isBoundaryType = '';
 | 
	
		
			
				|  |  | +      wrapInfo.mainHeight = mainHeight;
 | 
	
		
			
				|  |  | +      wrapInfo.mainWidth = mainWidth;
 | 
	
		
			
				|  |  | +      wrapInfo.subWidth = RectInfo.width;
 | 
	
		
			
				|  |  | +      wrapInfo.subHeight = RectInfo.height;
 | 
	
		
			
				|  |  | +      target.style.transition = '.3s';
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |      const onFullScreen = () => {
 | 
	
		
			
				|  |  |        if (data.type === 'preview') {
 | 
	
		
			
				|  |  |          const el: any = document.querySelector('#app');
 | 
	
	
		
			
				|  | @@ -1190,14 +1341,13 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  onClick={() => {
 | 
	
		
			
				|  |  |                    //
 | 
	
		
			
				|  |  |                    if (state.application) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                      document.exitFullscreen
 | 
	
		
			
				|  |  | -                    ? document.exitFullscreen()
 | 
	
		
			
				|  |  | -                    : document.mozCancelFullScreen
 | 
	
		
			
				|  |  | -                    ? document.mozCancelFullScreen()
 | 
	
		
			
				|  |  | -                    : document.webkitExitFullscreen
 | 
	
		
			
				|  |  | -                    ? document.webkitExitFullscreen()
 | 
	
		
			
				|  |  | -                    : ''
 | 
	
		
			
				|  |  | +                      ? document.exitFullscreen()
 | 
	
		
			
				|  |  | +                      : document.mozCancelFullScreen
 | 
	
		
			
				|  |  | +                      ? document.mozCancelFullScreen()
 | 
	
		
			
				|  |  | +                      : document.webkitExitFullscreen
 | 
	
		
			
				|  |  | +                      ? document.webkitExitFullscreen()
 | 
	
		
			
				|  |  | +                      : '';
 | 
	
		
			
				|  |  |                      emit('close');
 | 
	
		
			
				|  |  |                    } else {
 | 
	
		
			
				|  |  |                      window.close();
 |