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

---
 src/pages/systemSettings/components/CloudNode.vue |  149 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 149 insertions(+), 0 deletions(-)

diff --git a/src/pages/systemSettings/components/CloudNode.vue b/src/pages/systemSettings/components/CloudNode.vue
new file mode 100644
index 0000000..800651a
--- /dev/null
+++ b/src/pages/systemSettings/components/CloudNode.vue
@@ -0,0 +1,149 @@
+<template>
+  <div class="cloud">
+    <div class="inner">
+      <div class="rect">
+        <serfDiagram
+          ref="inside-nodes"
+          :members="insideNodes"
+          :agent="agentName"
+          :sizeX="insideSizeX"
+          :sizeY="insideSizeY"
+          :startX="insideStartX"
+          :isShowHover="true"
+          class="inside-nodes"
+        ></serfDiagram>
+      </div>
+    </div>
+    <div class="outer" v-if="outsideNodes.length">
+      <serfDiagram
+        ref="outer-nodes"
+        :members="outsideNodes"
+        :agent="agentName"
+        :sizeX="280"
+        :sizeY="370"
+        :startX="60"
+        class="outer-nodes"
+      ></serfDiagram>
+    </div>
+  </div>
+</template>
+<script>
+import SerfDiagram from "@/components/serfDiagram";
+export default {
+  name: "cloudNode",
+  props: {
+    nodes: Array,
+  },
+  components: {
+    SerfDiagram,
+  },
+  data() {
+    return {
+      agentName: "",
+      nodeIcons: [],
+      //insideNodes: [],
+      BaseWidth: 150,
+      BaseHeight: 70,
+      minWidth: 0,
+      minHeight: 0,
+    };
+  },
+  mounted() {
+    console.log(this.nodes);
+    //this.getInsideNodes();
+  },
+  methods: {
+    getRandom(index) {
+      if (index % 2 == 0) {
+        return Math.random() * 20;
+      } else {
+        return Math.random() * 50;
+      }
+    },
+    getInsideNodes() {
+      let arr = this.nodes.filter(
+        (item) => item.hardwareType == "01" || item.hardwareType == "02"
+      );
+      let len = arr.length;
+      let lefts = [];
+      let tops = [];
+      this.insideNodes = arr.map((item, index) => {
+        lefts.push((20 - len) * (index + 1) + this.getRandom(index));
+        tops.push(30 * (index + 1));
+        return {
+          l: 10 + this.getRandom(index),
+          t: 30 * (index + 1),
+          nodeName: item.nodeName,
+          id: item.id,
+          workType: item.workType,
+        };
+      });
+      this.minWidth = Math.max(...lefts) - Math.min(...lefts);
+      this.minHeight = Math.max(...tops) - Math.min(...tops);
+      console.log("w,h", this.minWidth, this.minHeight);
+    },
+  },
+  computed: {
+    cloudPic() {
+      return "/images/settings/cloud.png";
+    },
+    insideNodes() {
+      return this.nodes.filter(
+        (item) => item.hardwareType == "01" || item.hardwareType == "02"
+      );
+    },
+    insideSizeX() {
+      return 160 + 200 * 0.2 * this.insideNodes.length <= 400
+        ? 160 + 200 * 0.2 * this.insideNodes.length
+        : 400;
+    },
+    insideSizeY() {
+      return 140 + 200 * 0.2 * this.insideNodes.length <= 380
+        ? 140 + 200 * 0.2 * this.insideNodes.length
+        : 380;
+    },
+    insideStartX() {
+      return this.insideSizeX / 3;
+    },
+    outsideNodes() {
+      return this.nodes.filter((item) => item.hardwareType == "03");
+    },
+  },
+};
+</script>
+<style lang="scss">
+.cloud {
+  width: 100%;
+  display: flex;
+  .inner {
+    background: url("/images/settings/easy-cloud.png") no-repeat;
+    background-size: 100%;
+    margin-top: -55px;
+    margin-left: 55px;
+
+    .rect {
+      position: relative;
+      margin: 130px 100px 70px;
+      .node {
+        position: absolute;
+        .node-icon {
+          width: 40px;
+          height: 40px;
+        }
+        .node-name {
+          font-size: 14px;
+          color: #333;
+        }
+      }
+    }
+  }
+  .outer {
+    width: 40%;
+    position: relative;
+    text-align: left;
+    .node {
+      position: absolute;
+    }
+  }
+}
+</style>
\ No newline at end of file

--
Gitblit v1.8.0