From 04e5d9e5447fcbbd96aa5778c73b1291082d5886 Mon Sep 17 00:00:00 2001
From: hanbaoshan <hanbaoshan@aiotlink.com>
Date: 星期六, 01 八月 2020 12:17:17 +0800
Subject: [PATCH] 应用最小化前保存应用快照用于桌面头部鼠标移入显示

---
 src/pages/desktop/img/trash.png               |    0 
 src/pages/desktop/img/desktop.png             |    0 
 src/pages/desktop/index/components/DFrame.vue |   37 +++++++++++++++++++++++++++++--------
 package.json                                  |    1 +
 src/pages/desktop/img/circle.png              |    0 
 src/pages/desktop/index/components/Tools.vue  |   17 ++++++++++++++++-
 src/pages/desktop/img/main.jpg                |    0 
 7 files changed, 46 insertions(+), 9 deletions(-)

diff --git a/package.json b/package.json
index 93e95c3..dcf0022 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
     "echarts": "^4.8.0",
     "echarts-liquidfill": "^2.0.6",
     "element-ui": "^2.13.2",
+    "html2canvas": "^1.0.0-rc.5",
     "less-loader": "^6.2.0",
     "moment": "^2.27.0",
     "pug": "^3.0.0",
diff --git a/src/pages/desktop/desktop/circle.png b/src/pages/desktop/img/circle.png
similarity index 100%
rename from src/pages/desktop/desktop/circle.png
rename to src/pages/desktop/img/circle.png
Binary files differ
diff --git a/src/pages/desktop/desktop/desktop.png b/src/pages/desktop/img/desktop.png
similarity index 100%
rename from src/pages/desktop/desktop/desktop.png
rename to src/pages/desktop/img/desktop.png
Binary files differ
diff --git a/src/pages/desktop/desktop/main.jpg b/src/pages/desktop/img/main.jpg
similarity index 100%
rename from src/pages/desktop/desktop/main.jpg
rename to src/pages/desktop/img/main.jpg
Binary files differ
diff --git a/src/pages/desktop/desktop/trash.png b/src/pages/desktop/img/trash.png
similarity index 100%
rename from src/pages/desktop/desktop/trash.png
rename to src/pages/desktop/img/trash.png
Binary files differ
diff --git a/src/pages/desktop/index/components/DFrame.vue b/src/pages/desktop/index/components/DFrame.vue
index 72e5d61..d172a75 100644
--- a/src/pages/desktop/index/components/DFrame.vue
+++ b/src/pages/desktop/index/components/DFrame.vue
@@ -8,7 +8,7 @@
     <div class="d-frame-title" v-drag @click="frameClick()">
       <div class="d-frame-title-operation">
         <i class="fa fa-circle d-frame-operation-close" @click="closeFrame()"></i>
-        <i class="fa fa-circle d-frame-operation-minus" @click="minFrame()"></i>
+        <i class="fa fa-circle d-frame-operation-minus" @click="minFrame(data)"></i>
         <i class="fa fa-circle d-frame-operation-full" @click="changeFullScreen()"></i>
       </div>
       <slot name="d-frame-title-content">
@@ -27,6 +27,7 @@
 </template>
 
 <script>
+import html2canvas from 'html2canvas'
 export default {
   name: "DFrame",
   props: {
@@ -60,13 +61,30 @@
     frameClick: function () {
       this.$store.commit('desktop/refreshFrame', this.data);
     },
-    minFrame: function () {
-      this.$store.commit('desktop/addMinDock', {
-        id: this.data.id,
-        src: this.data.icon,
-        alt: this.data.title,
-        type: "3"
-      });
+    minFrame: function (data) {
+      debugger
+      //鎵惧埌褰撳墠鐨刬frame
+      let curIframe = Array.from(document.querySelectorAll('iframe')).find(iframe => iframe.src.indexOf(data.url) >= 0);
+      debugger
+      //淇濆瓨褰撳墠搴旂敤蹇収
+      html2canvas(curIframe.contentWindow.document.body,{
+        dpi: window.devicePixelRatio*4,
+        logging: true, //鏌ョ湅html2canvas鍐呴儴鎵ц娴佺▼
+        removeContainer: true,
+        imageTimeout : 0, 
+        useCORS : true //寮�鍚法鍩熼厤缃�
+      }).then(canvas => {
+        let shotSrc = canvas.toDataURL();
+        debugger;
+        this.$store.commit('desktop/addMinDock', {
+          id: this.data.id,
+          src: this.data.icon,
+          alt: this.data.title,
+          type: "3",
+          screenshot: shotSrc
+        });
+      })
+
       //this.refreshDock();
     },
     refreshDock: function () {
@@ -131,6 +149,9 @@
 </script>
 
 <style scoped>
+html,body{
+  heiht: 100%;
+}
 .d-frame {
   position: fixed;
 }
diff --git a/src/pages/desktop/index/components/Tools.vue b/src/pages/desktop/index/components/Tools.vue
index 72b59ef..d49df91 100644
--- a/src/pages/desktop/index/components/Tools.vue
+++ b/src/pages/desktop/index/components/Tools.vue
@@ -15,8 +15,9 @@
     </div>
     <div class="tools-middle">
       <div v-for="dock in this.$store.state.desktop.minDocks" :key="dock.id" class="dock-item-wrap">
-        <a @click="dockClick(dock)">
+        <a @click="dockClick(dock)" >
           <img class="dock-item" :src="dock.src" :alt="dock.alt" />
+          <img class="dock-shot" :src="dock.screenshot" :alt="dock.name">
         </a>
       </div>
     </div>
@@ -144,6 +145,7 @@
 .tools .tools-middle {
   float: left;
   position: relative;
+  
 }
 .tools .tools-middle::before {
   width: 1px;
@@ -161,6 +163,7 @@
   line-height: 54px;
   margin-right: 1px;
   border-bottom: 2px solid transparent;
+  position: relative;
 }
 .tools .tools-middle .dock-item-wrap:hover,
 .tools .tools-middle .dock-item-wrap.clicked {
@@ -176,6 +179,18 @@
   width: auto;
   height: 70%;
 }
+.dock-item-wrap .dock-shot{
+  visibility: hidden;
+  width: 100px;
+  height: 46px;
+  position: absolute;
+  top: 44px;
+  left: -50%;
+}
+.tools .tools-middle .dock-item-wrap:hover .dock-shot,
+.tools .tools-middle .dock-item-wrap.clicked .dock-shot{
+  visibility: visible;
+}    
 .tools-icon {
   text-align: center;
   height: 100%;

--
Gitblit v1.8.0