From ccee429d379e0108b7445f72ade8d97c110a6fb3 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期二, 09 十一月 2021 18:01:59 +0800
Subject: [PATCH] 问题修复

---
 src/components/serfDiagram/index.vue |  121 +++++++++++++++++++++++----------------
 1 files changed, 71 insertions(+), 50 deletions(-)

diff --git a/src/components/serfDiagram/index.vue b/src/components/serfDiagram/index.vue
index f8ad4fd..945e15d 100644
--- a/src/components/serfDiagram/index.vue
+++ b/src/components/serfDiagram/index.vue
@@ -1,5 +1,7 @@
 <template lang='pug'>
   .net
+    .arrow_box(:style="toolTipStyle")
+      p {{toolTipAddr}}
     d3-network(
        ref='net'
       :startX="startX"
@@ -10,14 +12,14 @@
       @drag-start='dragStart'
       @node-click='nodeClick'
       @node-hover='nodeHover'
-      @node-out='nodeOut'     
+      @node-out='nodeOut'
     )
 </template>
  
 <script>
 import D3Network from "./vue-d3-network";
 import RoleIcon from "./icons.js";
- 
+
 export default {
   name: "SerfDiagram",
   components: {
@@ -28,7 +30,8 @@
     members: Array,
     sizeX: Number,
     sizeY: Number,
-    startX: Number
+    startX: Number,
+    isShowHover: Boolean
   },
   data() {
     return {
@@ -38,7 +41,8 @@
       toolTipStyle: {
         display: "none",
         height: "30px",
-        width: "120px"
+        width: "186px",
+        borderColor: "#ccc"
       }
     };
   },
@@ -51,21 +55,20 @@
           name: v.nodeName,
           svgSym: RoleIcon[v.role],
           _color:
-            this.agent === v.nodeName
-              ? "red"
-              : v.role === "master"
-                ? "orange"
-                : ""
+            v.role === "master"
+              ? "orange"
+              : ""
+
         });
       });
- 
+
       return n;
     },
     links() {
       let arr = new Array();
       let dup = new Array(); // Deduplicate to ensure that two nodes have only one line
       const count = this.members.length;
- 
+
       switch (count) {
         case 0:
         case 1:
@@ -85,7 +88,7 @@
                 // is me? skip
                 continue;
               }
- 
+
               if (!dup["d" + target + i]) {
                 arr.push({ sid: i, tid: target });
                 dup["d" + i + target] = 1;
@@ -93,7 +96,7 @@
             }
           }
       }
- 
+
       return arr;
     },
     options() {
@@ -123,13 +126,33 @@
       console.log(node);
       node._opacity = 1;
       node._size = 28;
-      let width = document.body.clientWidth;
-      this.toolTipStyle.display = "block";
-      this.toolTipStyle.top = node.y - 10 + "px";
-      this.toolTipStyle.left = node.x + width / 2 - 30 + "px";
- 
-      this.toolTipNode = this.members[node.id].nodeName;
-      this.toolTipAddr = this.members[node.id].Address;
+      //let width = document.body.clientWidth;
+      if (this.isShowHover) {
+        this.toolTipStyle.display = "block";
+        this.toolTipStyle.top = node.y - 60 + "px";
+        this.toolTipStyle.left = node.x + "px";
+        console.log(this.members[node.id]);
+        let workName = '';
+        switch (this.members[node.id].workType) {
+          case '01':
+            workName = '鍒嗘瀽'
+            break;
+          case '02':
+            workName = '瀛樺偍'
+            break;
+          case '03':
+            workName = '鍒嗘瀽+瀛樺偍'
+            break;
+          case '04':
+            workName = '搴旂敤'
+            break;
+          default:
+            return;
+        }
+        this.toolTipNode = this.members[node.id].nodeName;
+        this.toolTipAddr = `${this.members[node.id].Address}(${workName})`;
+      }
+
     },
     nodeOut(event, node) {
       node._opacity = node.opacity;
@@ -142,17 +165,6 @@
       }
     },
     nodeClick(event, node) {
-      // if (this.nodeSelected[node.id]) {
-      //   this.unSelectNode(node.id)
-      //   // is not nodeSelected
-      // } else {
-      //   this.selectNode(node)
- 
-      // }
-      // this.selectNodesLinks()
-      // this.$set(this.nodes, node.index, node)
-      console.log(event,node)
-      debugger
       if (event.timeStamp - this.movement < 200) {
         this.$emit("selected-node", event, this.members[node.id]);
       }
@@ -197,8 +209,9 @@
 .net {
   height: 100%;
   margin: 0;
+  position: relative;
 }
- 
+
 .node {
   /* stroke: rgba(18, 120, 98, 0.7); */
   stroke: rgba(76, 78, 78, 0.7);
@@ -208,70 +221,70 @@
   /* fill: #dcfaf3; */
   fill: #e3e4e4;
 }
- 
+
 .node.selected {
   stroke: #caa455;
 }
- 
+
 .node.pinned {
   stroke: rgba(190, 56, 93, 0.6);
 }
- 
+
 .link {
   stroke: rgba(18, 120, 98, 0.3);
 }
- 
+
 .link,
 .node {
   stroke-linecap: round;
 }
- 
+
 .link:hover,
 .node:hover {
   stroke: #df8108;
   stroke-width: 1px;
   cursor: pointer;
 }
- 
+
 .link.selected {
   stroke: rgba(202, 164, 85, 0.6);
 }
- 
+
 .curve {
   fill: none;
 }
- 
+
 .link-label,
 .node-label {
   /* fill: #127862; */
   fill: rgba(76, 78, 78, 0.7);
 }
- 
+
 .link-label {
   -webkit-transform: translateY(-0.5em);
   transform: translateY(-0.5em);
   text-anchor: middle;
 }
- 
+
 .arrow_box {
   position: absolute;
   background: #fff;
   /* border: 1px solid #127862; */
-  border: 1px solid rgba(76, 78, 78, 0.7);
+  border: 1px solid #ccc;
   font-size: 11px;
   padding-left: 5px;
 }
- 
+
 .arrow_box p {
   height: 30px;
   line-height: 30px;
-  width: 100px;
+  width: 100%;
   overflow: hidden;
 }
 .arrow_box:after,
 .arrow_box:before {
-  right: 100%;
-  top: 50%;
+  right: 50%;
+  top: 100%;
   border: solid transparent;
   content: " ";
   height: 0;
@@ -279,17 +292,25 @@
   position: absolute;
   pointer-events: none;
 }
- 
+
 .arrow_box:after {
   border-color: rgba(136, 183, 213, 0);
   border-right-color: #fff;
+  border-width: 5px;
+  margin-top: -5px;
+  transform: translateY(6px) rotateZ(-90deg);
+}
+.arrow_box:before {
+  border-color: rgba(194, 225, 245, 0);
+  border-right-color: #323333;
   border-width: 5px;
   margin-top: -5px;
 }
 .arrow_box:before {
   border-color: rgba(194, 225, 245, 0);
   border-right-color: #323333;
-  border-width: 6px;
-  margin-top: -6px;
+  border-width: 5px;
+  margin-top: -5px;
+  transform: translateY(6px) rotateZ(-90deg);
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0