فهرست منبع

逻辑完善及页面动态效果

liupeng 3 سال پیش
والد
کامیت
18eb587bc1

+ 1 - 1
index.html

@@ -14,7 +14,7 @@
   <link rel="stylesheet" href="./public/static/css/style/style1.css">
 </head>
 <body>
-<div id="root"></div>
+<div id="root" style="height:100%"></div>
 <script type="module" src="/src/main.js"></script>
 </body>
 </html>

+ 37 - 26
public/static/css/style/style.css

@@ -315,15 +315,25 @@ body,
 
 .menu.sds-desktop{
     position: absolute;
-    width: 120px;
-    height: 100%;
+    width: 100px;
     z-index: 6;
+    margin: auto 0;
+    display: flex;
+    align-items: center;
 }
 
+/* .menu.sds-desktop::-webkit-scrollbar{
+    display: none;
+} */
+
 .menu.sds-desktop ul{
-    width: 100px;
+    /* height: 100vh; */
+    overflow: scroll;
     text-align: center;
 }
+.menu.sds-desktop ul::-webkit-scrollbar{
+    display: none;
+}
 
 .menu.sds-desktop ul li{
     background-color: rgba(50,60,70,0.9);
@@ -483,6 +493,29 @@ ul.sds-desktop-shortcut {
 
 /* 右侧固定栏 */
 
+.v-window {
+    overflow: hidden;
+    box-shadow: 0 4px 16px 0 rgba(0, 0, 0, .6);
+    border-radius: 3px;
+    display: flex;
+    flex-direction: column;
+    background-color: #fff;
+}
+
+.v-widget-window {
+    background: rgba(40, 50, 60, 0.85);
+    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.5);
+    transition: top ease-in 0.2s, bottom ease-in 0.2s, left ease-in 0.2s, left ease-in 0.2s;
+}
+
+.v-widget-window.move{
+    opacity: 0.5;
+}
+
+.v-widget-window.ghost {
+    transition: none;
+}
+
 .v-widget-header .v-widget-header-tool-icon.add {
     background-image: url(../../../../public/image/index/windowAdd.png);
     background-size: 24px 72px;
@@ -521,27 +554,6 @@ ul.sds-desktop-shortcut {
     background-position: 0px -48px;
 }
 
-
-
-.v-window {
-    overflow: hidden;
-    box-shadow: 0 4px 16px 0 rgba(0, 0, 0, .6);
-    border-radius: 3px;
-    display: flex;
-    flex-direction: column;
-    background-color: #fff;
-}
-
-.v-widget-window {
-    background: rgba(40, 50, 60, 0.85);
-    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.5);
-    transition: top ease-in 0.2s, left ease-in 0.2s;
-}
-
-.v-widget-window.move{
-    opacity: 0.5;
-}
-
 .v-window-draggable .v-window-header-wrapper,
 .v-window .v-window-header-wrapper {
     flex: 0 0 auto;
@@ -1605,8 +1617,7 @@ ul.sds-desktop-shortcut {
     outline: none;
     position: absolute;
     background-color: rgba(0,0,0,0.7);
-    transition: opacity 0.15s ease-in;
-    transition: transform 0.2s ease-in;
+    transition: opacity 0.15s ease-in, transform 0.2s ease-in;
     opacity: .4;
     transform: scale(1.05);
     display: flex;

+ 4 - 1
src/App.vue

@@ -26,5 +26,8 @@ export default {
 };
 </script>
 
-<style lang="">
+<style lang="css">
+  .contain{
+    height:100%
+  }
 </style>

+ 3 - 0
src/common/common.js

@@ -0,0 +1,3 @@
+export function moveWindow(e,el) {
+    
+}

+ 17 - 18
src/component/Container/Desktop/FixWindow/index.vue

@@ -153,9 +153,9 @@ export default {
       selectedNum: 2,
       display: "block",
       top: 0,
-      bottom: "10px",
-      right: "10px",
-      left: 0,
+      bottom: '10px',
+      right: 0,
+      left: '120px',
       // widgetZindexIsMax: false,
       progrecssFirstClick: {
         lastY: 0,
@@ -306,6 +306,10 @@ export default {
         this.thumbYDisplay = "none";
       }
     });
+    setTimeout(()=>{
+      this.left = 0 
+      this.right = '10px'
+    },0)
   },
   methods: {
     //点击固定窗口
@@ -425,21 +429,12 @@ export default {
       let el = document.querySelector(
         ".v-widget-window .v-window-header-wrapper"
       );
-      // console.log(
-      //   this.widgetFirstClick.clientX,
-      //   this.widgetFirstClick.offsetX,
-      //   this.widgetFirstClick.screenX
-      // );
-      // this.widgetFirstClick.clientX = e.clientX;
-      // this.widgetFirstClick.offsetX = e.offsetX;
       this.widgetFirstClick.layerX = e.layerX;
       this.widgetFirstClick.screenX = document.documentElement.clientWidth;
-      // this.widgetFirstClick.clientY = e.clientY;
-      // this.widgetFirstClick.offsetY = e.offsetY;
       this.widgetFirstClick.layerY = e.layerY;
       this.widgetFirstClick.screenY = document.documentElement.clientHeight;
-      el.addEventListener("mousemove", this.mousemoveWidgetHeader);
-      // this.moveEventObj = e.srcElement;
+      document.addEventListener("mousemove", this.mousemoveWidgetHeader);
+      document.addEventListener("mouseup", this.mouseupWidgetHeader);
     },
     //移动固定窗口头部
     mousemoveWidgetHeader(e) {
@@ -469,8 +464,10 @@ export default {
       this.top = moveY + "px";
       if (!el1.className.includes(" move")) {
         el1.className = el1.className + " move";
+      } 
+      if (!el1.className.includes(" ghost")) {
+        el1.className = el1.className + " ghost";
       }
-      el.addEventListener("mouseleave", this.mouseupWidgetHeader);
     },
     //鼠标抬起固定窗口头部停止移动
     mouseupWidgetHeader() {
@@ -479,10 +476,12 @@ export default {
       );
       let el1 = document.querySelector(".v-widget-window .v-widget-list");
       let el2 = document.querySelector(".v-widget-window");
-      el.removeEventListener("mousemove", this.mousemoveWidgetHeader);
-      el.addEventListener("mouseleave", this.mouseupWidgetHeader);
+      document.removeEventListener("mousemove", this.mousemoveWidgetHeader);
+      document.removeEventListener("mouseup", this.mouseupWidgetHeader);
+      // document.addEventListener("mouseleave", this.mouseupWidgetHeader);
       el1.style.display = "flex";
-      el2.className = el2.className.replace("move", "");
+      el2.className = el2.className.replace(" move", "");
+      el2.className = el2.className.replace(" ghost", "");
     },
     //显示或隐藏固定窗口
     showOrHiddenWidget(e) {

+ 8 - 3
src/component/Container/Desktop/Menu/index.vue

@@ -1,7 +1,7 @@
 <template>
   <!-- 打开的菜单图标显示区 -->
   <div class="menu sds-desktop">
-    <ul class="menushow" v-if="menuList.length">
+    <ul class="menushow" v-if="menuList.length" :style="{height:height + 'px',marginTop:marginTop + 'px'}">
       <li :class="menu.spacialCls" v-for="(menu,menuIndex) in menuList" :key="menu.index" :style="{background:menu.backgroundColor}"
       @click="clickMenuItem(menu.id,menuIndex)">
         <div :class="menu.spacialCls" :style="{backgroundImage:`url(${menu.imgUrl})`}"></div>
@@ -17,6 +17,8 @@ export default {
       menuList:[],
       isHaveMenuItem: false,
       menuIndex: -1,
+      height: 0,
+      marginTop:0
     }
   },
   mounted() {
@@ -56,7 +58,9 @@ export default {
         this.menuList.push(menuItem)
       }
       this.$bus.emit('menuItemChanged',this.menuList)
-
+      this.$bus.emit('changeDialogMenuWindow',id)
+      this.height = document.documentElement.scrollHeight - (document.documentElement.scrollHeight % 70)
+      this.marginTop = ((document.documentElement.scrollHeight - this.height) / 2 )
     },
     // 点击小图标切换弹出窗口
     clickMenuItem(id,menuIndex){
@@ -68,7 +72,6 @@ export default {
       if(id === 1111){
         this.$bus.emit('openUserSetting')
       }
-      this.$bus.emit('changeDialogMenuWindow',id)
     },
     // 点击弹出窗页面切换小图标选中状态
     changeDialogWindow(menu){
@@ -107,6 +110,8 @@ export default {
           this.menuList[this.menuList.length - 1].backgroundColor = 'rgba(225,225,225,0.5)'
         }
       }
+      this.height = document.documentElement.scrollHeight - (document.documentElement.scrollHeight % 70)
+      this.marginTop = ((document.documentElement.scrollHeight - this.height) / 2 )
     },
     // 通过id获取对应的小图标下标
     getMenuItem(id){

+ 41 - 5
src/component/Container/Desktop/Shortcut/index.vue

@@ -7,9 +7,11 @@
           class="launch-icon icon-item"
           :class="detailMessage.spacialCls"
           tabindex="0"
-          v-for="detailMessage in shortcutDetail.detailMessageList"
+          v-for="(
+            detailMessage, detailMessageIndex
+          ) in shortcutDetail.detailMessageList"
           :key="detailMessage.id"
-          @click="clickShortcutItem(detailMessage.id)"
+          @click="clickShortcutItem(detailMessage.id, detailMessageIndex)"
         >
           <div
             class="image"
@@ -19,6 +21,7 @@
               <div
                 id="ext-gen50"
                 class="sds-application-notify-badge-num"
+                :class="detailMessage.unReadyMessageCls"
                 v-if="detailMessage.unReadyMessage.length"
               ></div>
             </div>
@@ -35,6 +38,24 @@
 import ResizablePinned from "./ResizablePinned";
 export default {
   props: ["defaultZIndex"],
+  mounted() {
+    this.$bus.on(
+      "clickAppViewItemClearUnReady",
+      this.clickAppViewItemClearUnReady
+    );
+    this.shortcutDetail.detailMessageList.forEach((item) => {
+      if (item.unReadyMessage.length) {
+        item.unReadyMessageCls = "bounce-effect";
+      }
+    });
+    setTimeout(() => {
+      this.shortcutDetail.detailMessageList.forEach((item) => {
+        if (item.unReadyMessageCls === "bounce-effect") {
+          item.unReadyMessageCls = "";
+        }
+      });
+    },800);
+  },
   data() {
     return {
       shortcutDetail: {
@@ -52,7 +73,8 @@ export default {
             zIndex: 9050,
             iconRestore: "none",
             iconMaximize: "block",
-            unReadyMessage: [1],
+            unReadyMessage: [],
+            unReadyMessageCls: "",
           },
           {
             id: 0,
@@ -68,6 +90,7 @@ export default {
             iconRestore: "none",
             iconMaximize: "block",
             unReadyMessage: [1],
+            unReadyMessageCls: "",
           },
           {
             id: 12,
@@ -83,6 +106,7 @@ export default {
             iconRestore: "none",
             iconMaximize: "block",
             unReadyMessage: [],
+            unReadyMessageCls: "",
           },
           {
             id: 1,
@@ -97,16 +121,28 @@ export default {
             zIndex: 9050,
             iconRestore: "none",
             iconMaximize: "block",
-            unReadyMessage: [],
+            unReadyMessage: [1],
+            unReadyMessageCls: "",
           },
         ],
       },
     };
   },
   methods: {
-    clickShortcutItem(id) {
+    // 点击图标
+    clickShortcutItem(id, detailMessageIndex) {
+      this.shortcutDetail.detailMessageList[detailMessageIndex].unReadyMessage =
+        [];
       this.$bus.emit("clickAppViewItem", id);
     },
+    // 点击菜单页的图标
+    clickAppViewItemClearUnReady(id) {
+      this.shortcutDetail.detailMessageList.forEach((item) => {
+        if (item.id === id && item.unReadyMessage.length) {
+          item.unReadyMessage = [];
+        }
+      });
+    },
   },
   components: {
     ResizablePinned,

+ 171 - 110
src/component/Container/DesktopAppView/AppViewItem/index.vue

@@ -1,15 +1,16 @@
 <template>
   <!-- 菜单弹窗 -->
-  <div v-if="resizablePinnedDetail.detailMessageList.length" :style="{display:display}">
+  <div
+    v-if="resizablePinnedDetail.detailMessageList.length"
+    :style="{ display: display, height: '100vh' }"
+    class="menuWindow"
+  >
     <div
       class="x-window synopkg-window sds-window-v5 x-resizable-pinned"
       style="
         position: absolute;
         visibility: visible;
-        left: 50%;
-        top: 50%;
         transform: translate(-50%, -50%);
-        background: #fff;
       "
       :style="{
         width: detailMessage.width,
@@ -17,31 +18,34 @@
         minHeight: detailMessage.minHeight,
         display: detailMessage.display,
         zIndex: detailMessage.zIndex,
+        left: detailMessage.left,
+        top: detailMessage.top,
       }"
       :class="detailMessage.cls"
-      v-for="detailMessage in resizablePinnedDetail.detailMessageList"
+      v-for="(
+        detailMessage, detailMessageIndex
+      ) in resizablePinnedDetail.detailMessageList"
       :key="detailMessage.id"
       @click.capture="changeDialogMenuWindow(detailMessage.id)"
     >
-      <div class="x-dlg-focus tjCenter" tabindex="0" role="application"></div>
+      <div></div>
       <div class="x-window-tl" @click.capture="moveWindowPosition">
         <div class="x-window-tr">
           <div class="x-window-tc">
             <div
               class="x-window-header x-panel-icon x-window-draggable"
               :style="{ backgroundImage: `url(${detailMessage.titleImgUrl})` }"
+              @mousedown="mousedownWindowHeader($event, detailMessageIndex)"
             >
-              <div class="x-window-toolCt" role="listbox">
+              <div class="x-window-toolCt">
                 <div
                   class="x-tool x-tool-close"
-                  role="option"
                   @click.capture="closeWindow(detailMessage.id)"
                 >
                   &nbsp;
                 </div>
                 <div
                   class="x-tool x-tool-restore"
-                  role="option"
                   :style="{ display: `${detailMessage.iconRestore}` }"
                   @click.capture="restoreMizeWindow(detailMessage.id)"
                 >
@@ -49,7 +53,6 @@
                 </div>
                 <div
                   class="x-tool x-tool-maximize"
-                  role="option"
                   @click.capture="maxiSizeWindow(detailMessage.id)"
                   :style="{ display: `${detailMessage.iconMaximize}` }"
                 >
@@ -57,14 +60,12 @@
                 </div>
                 <div
                   class="x-tool x-tool-minimize"
-                  role="option"
                   @click.capture="miniMizeWindow(detailMessage.id)"
                 >
                   &nbsp;
                 </div>
                 <div
                   class="x-tool x-tool-help"
-                  role="option"
                   @click.capture="openDSMWindow()"
                 >
                   &nbsp;
@@ -208,14 +209,70 @@
           </div>
         </div>
       </div>
-      <div class="x-resizable-handle x-resizable-handle-north x-unselectable x-window-handle"></div>
-      <div class="x-resizable-handle x-resizable-handle-south x-unselectable x-window-handle"></div>
-      <div class="x-resizable-handle x-resizable-handle-east x-unselectable x-window-handle"></div>
-      <div class="x-resizable-handle x-resizable-handle-west x-unselectable x-window-handle"></div>
-      <div class="x-resizable-handle x-resizable-handle-northeast x-unselectable x-window-handle"></div>
-      <div class="x-resizable-handle x-resizable-handle-northwest x-unselectable x-window-handle"></div>
-      <div class="x-resizable-handle x-resizable-handle-southeast x-unselectable x-window-handle"></div>
-      <div class="x-resizable-handle x-resizable-handle-southwest x-unselectable x-window-handle"></div>
+      <div
+        class="
+          x-resizable-handle
+          x-resizable-handle-north
+          x-unselectable
+          x-window-handle
+        "
+      ></div>
+      <div
+        class="
+          x-resizable-handle
+          x-resizable-handle-south
+          x-unselectable
+          x-window-handle
+        "
+      ></div>
+      <div
+        class="
+          x-resizable-handle
+          x-resizable-handle-east
+          x-unselectable
+          x-window-handle
+        "
+      ></div>
+      <div
+        class="
+          x-resizable-handle
+          x-resizable-handle-west
+          x-unselectable
+          x-window-handle
+        "
+      ></div>
+      <div
+        class="
+          x-resizable-handle
+          x-resizable-handle-northeast
+          x-unselectable
+          x-window-handle
+        "
+      ></div>
+      <div
+        class="
+          x-resizable-handle
+          x-resizable-handle-northwest
+          x-unselectable
+          x-window-handle
+        "
+      ></div>
+      <div
+        class="
+          x-resizable-handle
+          x-resizable-handle-southeast
+          x-unselectable
+          x-window-handle
+        "
+      ></div>
+      <div
+        class="
+          x-resizable-handle
+          x-resizable-handle-southwest
+          x-unselectable
+          x-window-handle
+        "
+      ></div>
     </div>
   </div>
 </template>
@@ -225,7 +282,7 @@ export default {
   props: ["defaultZIndex", "detailMessageList"],
   data() {
     return {
-      display:'block',
+      display: "block",
       resizablePinnedDetail: {
         detailMessageList: [],
       },
@@ -244,7 +301,7 @@ export default {
     this.$bus.on("changeDialogMenuWindow", this.changeDialogMenuWindow);
     this.$bus.on("menuItemChanged", this.menuItemChanged);
     this.$bus.on("clickMenuItem", this.clickMenuItem);
-    this.$bus.on('hiddenOrShowOtherWindow',this.hiddenDialogWindow)
+    this.$bus.on("hiddenOrShowOtherWindow", this.hiddenDialogWindow);
     // this.$bus.on("fixWindowZIndexchange", this.fixWindowZIndexchange);
     this.resizablePinnedDetail.detailMessageList = JSON.parse(
       JSON.stringify(this.detailMessageList)
@@ -257,21 +314,27 @@ export default {
   },
   methods: {
     // 显示本页面
-    showDialogWindow(){
-      if(this.display === 'none'){
-        this.display = 'block'
+    showDialogWindow() {
+      if (this.display === "none") {
+        this.display = "block";
       }
     },
     // 隐藏本页面
-    hiddenDialogWindow(){
-      if(this.display === 'block'){
-        this.display = 'none'
+    hiddenDialogWindow() {
+      if (this.display === "block") {
+        this.display = "none";
       }
     },
     // 点击大菜单图标
     clickAppViewItem(id) {
-      this.showDialogWindow()
-      this.changeDialogMenuWindow(id)
+      this.resizablePinnedDetail.detailMessageList.forEach((item) => {
+        if (item.id === id && item.unReadyMessage.length) {
+          item.unReadyMessage = [];
+          this.$bus.emit("clickAppViewItemClearUnReady", id);
+        }
+      });
+      this.showDialogWindow();
+      this.changeDialogMenuWindow(id);
     },
     // 点击小菜单图标
     clickMenuItem(id) {
@@ -279,7 +342,7 @@ export default {
         this.resizablePinnedDetail.detailMessageList.findIndex((item) => {
           return item.id === id;
         });
-      if (detailMessageIndex != -1) {
+      if (detailMessageIndex !== -1) {
         this.openDialogWindow(detailMessageIndex);
       }
     },
@@ -288,8 +351,8 @@ export default {
       this.resizablePinnedDetail.detailMessageList[detailMessageIndex].display =
         "block";
       if (
-        (!detailMessageIndex && detailMessageIndex != 0) ||
-        detailMessageIndex == -1 ||
+        (!detailMessageIndex && detailMessageIndex !== 0) ||
+        detailMessageIndex === -1 ||
         this.resizablePinnedDetail.detailMessageList[detailMessageIndex].cls ===
           "active-win"
       ) {
@@ -320,7 +383,7 @@ export default {
       if ((menuIndex || menuIndex == 0) && menuIndex != -1) {
         this.openDialogWindow(menuIndex);
       }
-      // this.$bus.emit('dialogWindowZIndexIsMax',true)  
+      // this.$bus.emit('dialogWindowZIndexIsMax',true)
     },
     // 打开DSM 说明
     openDSMWindow() {
@@ -328,7 +391,10 @@ export default {
         this.resizablePinnedDetail.detailMessageList.findIndex((item) => {
           return item.id === 1;
         });
-      if (detailMessageIndex || detailMessageIndex === 0 && detailMessageIndex !== -1) {
+      if (
+        detailMessageIndex ||
+        (detailMessageIndex === 0 && detailMessageIndex !== -1)
+      ) {
         this.openDialogWindow(detailMessageIndex);
       }
       let obj = {
@@ -344,39 +410,29 @@ export default {
         zIndex:
           this.resizablePinnedDetail.detailMessageList[detailMessageIndex]
             .zIndex,
-        id:this.resizablePinnedDetail.detailMessageList[detailMessageIndex]
-            .id,
+        id: this.resizablePinnedDetail.detailMessageList[detailMessageIndex].id,
       };
       this.$bus.emit("changeDialogWindow", obj);
     },
     // 最小化弹出框口
     miniMizeWindow(id) {
-      let detailMessageIndex = this.resizablePinnedDetail.detailMessageList.findIndex(item=>{
-        return item.id === id
-      })
+      let detailMessageIndex =
+        this.resizablePinnedDetail.detailMessageList.findIndex((item) => {
+          return item.id === id;
+        });
       this.resizablePinnedDetail.detailMessageList[detailMessageIndex].display =
         "none";
-      // let detailMessageList =
-      //   this.resizablePinnedDetail.detailMessageList.filter((item) => {
-      //     return item.display == "block";
-      //   });
-      // if (detailMessageList.length) {
-      //   detailMessageList = JSON.parse(
-      //     JSON.stringify(this.arraySort(detailMessageList, "zIndex"))
-      //   );
-        this.resizablePinnedDetail.detailMessageList[
-          detailMessageIndex
-        ].zIndex = this.defaultZIndex - 10;
-        this.$bus.emit("changeDefaultZIndex", this.defaultZIndex - 10);
-
-      // }
+      this.resizablePinnedDetail.detailMessageList[detailMessageIndex].zIndex =
+        this.defaultZIndex - 10;
+      this.$bus.emit("changeDefaultZIndex", this.defaultZIndex - 10);
       this.countOpenWindowNum();
     },
     //最大化弹出窗口
     maxiSizeWindow(id) {
-      let detailMessageIndex = this.resizablePinnedDetail.detailMessageList.findIndex(item=>{
-        return item.id === id
-      })
+      let detailMessageIndex =
+        this.resizablePinnedDetail.detailMessageList.findIndex((item) => {
+          return item.id === id;
+        });
       this.resizablePinnedDetail.detailMessageList[detailMessageIndex].width =
         "100%";
       this.resizablePinnedDetail.detailMessageList[
@@ -385,15 +441,19 @@ export default {
       this.resizablePinnedDetail.detailMessageList[
         detailMessageIndex
       ].iconMaximize = "none";
-      if (detailMessageIndex || detailMessageIndex === 0 && detailMessageIndex !== -1) {
+      if (
+        detailMessageIndex ||
+        (detailMessageIndex === 0 && detailMessageIndex !== -1)
+      ) {
         this.openDialogWindow(detailMessageIndex);
       }
     },
     //恢复弹出窗口宽度
     restoreMizeWindow(id) {
-      let detailMessageIndex = this.resizablePinnedDetail.detailMessageList.findIndex(item=>{
-        return item.id === id
-      })
+      let detailMessageIndex =
+        this.resizablePinnedDetail.detailMessageList.findIndex((item) => {
+          return item.id === id;
+        });
       this.resizablePinnedDetail.detailMessageList[detailMessageIndex].width =
         this.detailMessageWidthList[detailMessageIndex];
       this.resizablePinnedDetail.detailMessageList[
@@ -409,9 +469,10 @@ export default {
     },
     //关闭弹出窗口
     closeWindow(id) {
-      let detailMessageIndex = this.resizablePinnedDetail.detailMessageList.findIndex(item=>{
-        return item.id === id
-      })
+      let detailMessageIndex =
+        this.resizablePinnedDetail.detailMessageList.findIndex((item) => {
+          return item.id === id;
+        });
       this.resizablePinnedDetail.detailMessageList[detailMessageIndex].display =
         "none";
       this.$bus.emit("closeDialogWindow", id);
@@ -423,10 +484,9 @@ export default {
       //   detailMessageList = JSON.parse(
       //     JSON.stringify(this.arraySort(detailMessageList, "zIndex"))
       //   );
-        this.resizablePinnedDetail.detailMessageList[
-          detailMessageIndex
-        ].zIndex = this.defaultZIndex - 10;
-        this.$bus.emit("changeDefaultZIndex", this.defaultZIndex - 10);
+      this.resizablePinnedDetail.detailMessageList[detailMessageIndex].zIndex =
+        this.defaultZIndex - 10;
+      this.$bus.emit("changeDefaultZIndex", this.defaultZIndex - 10);
       // }
       this.countOpenWindowNum();
     },
@@ -438,10 +498,10 @@ export default {
           this.openWindowNum++;
         }
       });
-      if (! this.openWindowNum) {
+      if (!this.openWindowNum) {
         this.resizablePinnedDetail.detailMessageList.forEach((item) => {
           item.zIndex = 9050;
-          item.cls = 'deactive-win'
+          item.cls = "deactive-win";
         });
         // this.$bus.emit("changeDefaultZIndex", 9050);
       }
@@ -455,54 +515,55 @@ export default {
       });
     },
     // 当固定窗口的zIndex改变时
-    fixWindowZIndexchange(){},
+    fixWindowZIndexchange() {},
+
+    // 鼠标按下弹出框窗口头部
+    mousedownWindowHeader(e, index) {
+      let el = console.log();
+      // index.left =
+      // let el = document.querySelector(
+      //   ".v-widget-window .v-window-header-wrapper"
+      // // );
+      // this.widgetFirstClick.layerX = e.layerX;
+      // this.widgetFirstClick.screenX = document.documentElement.clientWidth;
+      // this.widgetFirstClick.layerY = e.layerY;
+      // this.widgetFirstClick.screenY = document.documentElement.clientHeight;
+      document.addEventListener(
+        "mousemove",
+        this.moveWindowPosition
+      );
+      document.addEventListener(
+        "mouseup",
+        this.upWindowPosition
+      );
+      
+    },
     // 移动弹出框窗口位置
-    moveWindowPosition(e) {},
+    moveWindowPosition(e) {
+      console.log(e);
+      // console.log(this.resizablePinnedDetail.detailMessageList[index].left);
+      
+      // document.addEventListener("mouseup", () => {
+      //   console.log(1111)
+      //   
+      // });
+    },
+    // 鼠标松开
+    upWindowPosition(e){
+      document.removeEventListener(
+          "mousemove",
+          this.moveWindowPosition
+        );
+    },
     // 小图标被改变了
     menuItemChanged(menuList) {
       this.openedmenuList = menuList;
     },
   },
-
   watch: {
-    
-    defaultZIndex() {
-      // this.dialogZIndexMaxIndex =
-      //   this.resizablePinnedDetail.detailMessageList.findIndex((item) => {
-      //     return item.zIndex >= this.defaultZIndex && item.display === "block";
-      //   });
-      // if (
-      //   this.dialogZIndexMaxIndex != -1 &&
-      //   this.dialogZIndexMaxIndex != undefined
-      // ) {
-      //   let obj = {
-      //     imgUrl:
-      //       this.resizablePinnedDetail.detailMessageList[
-      //         this.dialogZIndexMaxIndex
-      //       ].titleImgUrl,
-      //     zIndex:
-      //       this.resizablePinnedDetail.detailMessageList[
-      //         this.dialogZIndexMaxIndex
-      //       ].zIndex,
-      //     spacialCls:
-      //       this.resizablePinnedDetail.detailMessageList[
-      //         this.dialogZIndexMaxIndex
-      //       ].spacialCls,
-      //     title:
-      //       this.resizablePinnedDetail.detailMessageList[
-      //         this.dialogZIndexMaxIndex
-      //       ].title,
-      //     id:
-      //       this.resizablePinnedDetail.detailMessageList[
-      //         this.dialogZIndexMaxIndex
-      //       ].id,
-      //   };
-      //   this.$bus.emit("changeDialogWindow", obj);
-      // }
+    detailMessageList() {
+      this.resizablePinnedDetail.detailMessageList = this.detailMessageList;
     },
-    detailMessageList(){
-     this.resizablePinnedDetail.detailMessageList =this.detailMessageList
-    }
   },
   beforeDestroy() {
     this.$bus.off("clickShortcutItem", this.clickShortcutItem);

+ 42 - 3
src/component/Container/DesktopAppView/index.vue

@@ -3,9 +3,10 @@
     <div>
       <!-- 主菜单界面 -->
       <div
-        class="syno-sds-appview syno-sds-appview-animate"
+        class="syno-sds-appview"
+        :class="cls"
         style="width: 100%; height: 100%"
-        :style="{ display: display }"
+        :style="{ display: display}"
       >
         <div class="syno-sds-appview-container">
           <div class="search-field" style="width: 278px">
@@ -55,7 +56,8 @@
                     <div
                       id="ext-gen50"
                       class="sds-application-notify-badge-num"
-                      v-if= "detailMessage.unReadyMessage.length"
+                      :class="detailMessage.unReadyMessageCls"
+                      v-if="detailMessage.unReadyMessage.length"
                     ></div>
                   </div>
                   <div class="text">{{ detailMessage.title }}</div>
@@ -85,9 +87,12 @@ export default {
       },
       display: "none",
       keyword: "",
+      cls: "",
+      firstOpen: true,
     };
   },
   mounted() {
+    console.log("mount");
     this.$bus.on("showAppView", this.showAppView);
     this.desktopAppViewDetail.detailMessageList = this.appViewData;
   },
@@ -97,9 +102,33 @@ export default {
       this.display = "block";
       this.$bus.emit("hiddenOrShowOtherWindow", true);
       window.addEventListener("click", this.WindowClick);
+      this.$nextTick(() => {
+        console.log(22);
+        // conso
+        // this.cls = "syno-sds-appview-animate";
+      });
+      if (this.firstOpen) {
+        this.desktopAppViewDetail.detailMessageList.forEach((item) => {
+          if (item.unReadyMessage.length) {
+            item.unReadyMessageCls = "bounce-effect";
+          }
+        });
+        setTimeout(() => {
+          this.desktopAppViewDetail.detailMessageList.forEach((item) => {
+            if (item.unReadyMessageCls === "bounce-effect") {
+              item.unReadyMessageCls = "";
+            }
+          });
+        }, 800);
+      }
+      setTimeout(()=>{
+        this.cls = "syno-sds-appview-animate";
+      },0)
+      this.firstOpen = false;
     },
     // 搜索框聚焦
     searchInputFocus(e) {
+      
       if (
         !e.srcElement.parentElement.className.includes(" search-field-focused")
       ) {
@@ -124,6 +153,7 @@ export default {
       }
       this.keyword = "";
       this.display = "none";
+      this.cls = "";
       this.desktopAppViewDetail.detailMessageList = this.appViewData;
       this.$bus.emit("hiddenOrShowOtherWindow", false);
       window.removeEventListener("click", this.WindowClick);
@@ -135,6 +165,15 @@ export default {
       this.WindowClick();
     },
   },
+  watch: {
+    desktopAppViewDetail: {
+      handler() {
+        console.log("wath");
+      },
+      deep: true,
+      immediate: true,
+    },
+  },
   components: {
     AppViewItem,
   },

+ 124 - 30
src/component/Container/index.vue

@@ -49,7 +49,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[1]
+          unReadyMessage:[1],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 1,
@@ -65,6 +68,9 @@ export default {
           iconRestore: "none",
           iconMaximize: "block",
           unReadyMessage:[1],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 2,
@@ -79,7 +85,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 3,
@@ -95,7 +104,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[1]
+          unReadyMessage:[1],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 4,
@@ -112,7 +124,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 5,
@@ -127,7 +142,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 6,
@@ -143,7 +161,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[1]
+          unReadyMessage:[1],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 7,
@@ -159,7 +180,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 8,
@@ -175,7 +199,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 9,
@@ -191,7 +218,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 10,
@@ -207,7 +237,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 11,
@@ -222,7 +255,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 12,
@@ -237,7 +273,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 13,
@@ -253,7 +292,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 14,
@@ -268,7 +310,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 15,
@@ -284,7 +329,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 16,
@@ -299,7 +347,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 17,
@@ -315,7 +366,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 18,
@@ -330,7 +384,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[1,2]
+          unReadyMessage:[1,2],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 19,
@@ -346,7 +403,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 20,
@@ -362,7 +422,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 21,
@@ -378,7 +441,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 22,
@@ -394,7 +460,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 23,
@@ -409,7 +478,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 24,
@@ -425,7 +497,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[1,2,3]
+          unReadyMessage:[1,2,3],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 25,
@@ -441,7 +516,11 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
+          
         },
         {
           id: 26,
@@ -457,7 +536,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 27,
@@ -471,7 +553,10 @@ export default {
           titleImgUrl:
             "../../../../public/image/DesktopAppView/documentViewer.png",
           zIndex: "9050",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 28,
@@ -486,7 +571,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 29,
@@ -502,7 +590,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[]
+          unReadyMessage:[],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
         {
           id: 30,
@@ -517,7 +608,10 @@ export default {
           zIndex: 9050,
           iconRestore: "none",
           iconMaximize: "block",
-          unReadyMessage:[1]
+          unReadyMessage:[1],
+          unReadyMessageCls:'',
+          left:"50%",
+          top:'50%',
         },
       ],
       userSettingData: {