From 7eab75b9e971524990228d1910e97d9f0bb0f6d3 Mon Sep 17 00:00:00 2001 From: hanbaoshan <hanbaoshan@aiotlink.com> Date: 星期一, 19 十月 2020 15:29:28 +0800 Subject: [PATCH] 集群云大小在一定范围内跟随节点数量变化 --- src/pages/settings/components/ClusterManagement.vue | 86 ++++++++++++++++++++++++++++++------------ 1 files changed, 61 insertions(+), 25 deletions(-) diff --git a/src/pages/settings/components/ClusterManagement.vue b/src/pages/settings/components/ClusterManagement.vue index 8ab8f83..51173b1 100644 --- a/src/pages/settings/components/ClusterManagement.vue +++ b/src/pages/settings/components/ClusterManagement.vue @@ -94,22 +94,34 @@ style="margin-right:10px;" type="primary" size="small" - @click="submitForm('manageForm')" + @click="updateCluster('manageForm')" >淇濆瓨</el-button> </el-form-item> </el-form> </div> </el-col> - <el-col :span="12" style="height: 100%;" v-if="members.length !== 0"> + <el-col + :span="12" + style="height: 100%;" + v-if="members.length !== 0 && isSearch" + class="node-container" + > <serfDiagram ref="diagram" :members="members" - :searchNodes="nodes" :agent="agentName" v-loading="loading" @selected-node="joinNode" class="nodes-svg" ></serfDiagram> + </el-col> + <el-col + :span="12" + style="height: 100%;" + v-if="innerNodes.length !== 0 && !isSearch" + class="node-container" + > + <cloud-node :nodes="innerNodes"></cloud-node> </el-col> </el-row> @@ -164,7 +176,6 @@ </el-tabs> </el-col> </el-row> - </div> </template> @@ -189,14 +200,15 @@ import { getDevInfo } from "@/api/system"; - +import cloudNode from "./CloudNode"; import serfDiagram from "@/components/serfDiagram"; import ipInput from "@/components/subComponents/IPInput"; -import {isIPv4} from "@/scripts/validate"; +import { isIPv4 } from "@/scripts/validate"; export default { components: { serfDiagram, - ipInput + ipInput, + cloudNode }, data() { const checkPwd = (rule, value, callback) => { @@ -216,7 +228,7 @@ } }, 1000); }; - + return { activeName: "1", sActiveName: "s-first", @@ -268,18 +280,27 @@ esNodes: [], scheduleId: "", isHasColony: false, + isSearch: false, currentCluster: {}, searchNum: "", loading: false, searchDis: false, agentName: "", members: [], - nodes: [], + innerNodes: [], + intervalTimer: null, }; }, mounted() { this.findCluster(); + let _this = this; + this.intervalTimer = setInterval(()=>{ + _this.findCluster(); + },30000); this.getEsClusterNodes(); + }, + beforeDestroy(){ + clearInterval(this.intervalTimer); }, methods: { cleanValue() { @@ -327,8 +348,8 @@ } }); }, - - join (formName) { + + join(formName) { this.$refs[formName].validate(valid => { if (valid) { if (Object.keys(this.currentCluster).length === 0) { @@ -372,6 +393,7 @@ } }, async searchColony() { + this.isSearch = true; this.$refs["joinForm"].validate(valid => { if (valid) { this.members = []; @@ -389,10 +411,12 @@ .catch(() => { this.searchDis = false; this.loading = false; + this.isSearch = false; }); } else { this.searchDis = false; this.loading = false; + this.isSearch = false; return false; } }); @@ -429,8 +453,7 @@ return element.node_id === i.node_id; }); if (found === undefined) { - //this.members.push(i); - this.nodes.push(i); + this.members.push(i); } }); } @@ -475,12 +498,13 @@ this.ruleForm.clustername = res.data.clusterName; this.ruleForm.clusterpwd = res.data.clusterpwd this.ruleForm.virtualIp = res.data.virtualIp - let list = res.data.nodes.map(i => { - debugger + //let list = res.data.nodes.map(i => { + this.isSearch = false; + this.innerNodes = res.data.nodes.map(i => { let obj = {}; obj.device_type = i.device_type; - obj.workType = i.device_type.substr(2,2); - obj.hardwareType = i.device_type.substr(4,2); + obj.workType = i.device_type.substr(2, 2); + obj.hardwareType = i.device_type.substr(4, 2); obj.cluster_id = i.cluster_id; obj.clusterName = res.data.clusterName; obj.create_time = i.create_time; @@ -489,10 +513,11 @@ obj.node_ip = i.node_ip; obj.nodeName = i.node_name; obj.Address = i.node_ip; - obj.role = i.role ? i.role : "pc"; + obj.role = i.drift_state ? i.drift_state : "pc"; return obj; }); - this.members = this.members.concat(list); + + //this.members = this.members.concat(list); console.log(this.members) } else { this.isHasColony = false; @@ -510,9 +535,19 @@ console.log(e) }) }, - async updateClusterName() { + async updateCluster() { + if (this.ruleForm.clustername === "") { + this.$message({ + type: "error", + message: "闆嗙兢鍚嶇О涓嶈兘涓虹┖" + }) + + return + } + let res = await updateClusterName({ - clusterName: this.mangeForm.colonyName + clusterName: this.ruleForm.clustername, + virtualIp: this.ruleForm.virtualIp }); this.$notify({ title: res.success ? "鎴愬姛" : "澶辫触", @@ -550,6 +585,7 @@ this.isHasColony = false; this.activeName = "1"; this.members = []; + this.innerNodes = []; } }).catch(() => { }); @@ -696,7 +732,7 @@ }); }) }, - onIpBlur (ip) { + onIpBlur(ip) { //this.vrIpForm.virtual_ip = ip; this.ruleForm.virtualIp = ip; console.log(this.ruleForm.virtualIp) @@ -704,7 +740,7 @@ }, - created () { } + created() { } }; </script> @@ -777,7 +813,7 @@ height: 30px; line-height: 30px; } -.nodes-svg{ - background-color: rgba(127, 255, 212, 0.459); +.nodes-svg { + background-color: rgba(127, 172, 255, 0.459); } </style> -- Gitblit v1.8.0