From 0d3db253cad1fb49c4fae9b9a537c8c318c7172f Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期三, 29 十一月 2023 10:23:59 +0800 Subject: [PATCH] 优化应用中心卸载 --- src/pages/settings/views/clusterManagement.vue | 159 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 121 insertions(+), 38 deletions(-) diff --git a/src/pages/settings/views/clusterManagement.vue b/src/pages/settings/views/clusterManagement.vue index daf57d2..98825dc 100644 --- a/src/pages/settings/views/clusterManagement.vue +++ b/src/pages/settings/views/clusterManagement.vue @@ -5,8 +5,16 @@ <!-- <cloud-node :nodes="innerNodes"></cloud-node> --> <net-node :innerNodes="innerNodes"></net-node> - <div class="cls-bar">瑙嗛鍒嗘瀽闆嗙兢绠$悊</div> - + <div class="cls-bar"> + <div class="title">鑺傜偣鐘舵��</div> + <div class="input-area"> + <div class="text" v-show="!isFillingName"> + {{ ruleForm.state }} + </div> + <el-switch v-model="masterNode" :disabled="masterNode" style="margin-top:5px" @change="change2Master"> + </el-switch> + </div> + </div> <div class="cls-bar"> <div class="title">闆嗙兢鍚嶇О</div> <div class="input-area"> @@ -168,7 +176,8 @@ stopSearching, findCluster, updateClusterName, - joinCluster + joinCluster, + update2Master } from "@/api/clusterManage" // import cloudNode from "../components/CloudNode"; import NetNode from "../components/NetNode" @@ -195,6 +204,7 @@ } } return { + masterNode: false, innerNodes: [], intervalTimer: null, isFillingName: false, @@ -210,7 +220,9 @@ ruleForm: { clustername: "", clusterpwd: "", - virtualIp: "" + virtualIp: "", + state: "", + localId: "" }, selfForm: { virtualIp: "", @@ -222,7 +234,7 @@ clusterpwd: "" }, isSearch: false, - showCurCluster: true, + showCurCluster: false, loading: false, joinLoading: false, isHasColony: false, @@ -240,7 +252,9 @@ clusterid: [{ validator: checkID, trigger: "blur" }], clusterip: [{ validator: isIPv4, trigger: "blur" }], clusterpwd: [{ validator: checkPwd, required: true, trigger: "blur" }] - } + }, + clusterPassword: "", + clusterPasswordInput: "" } }, components: { @@ -250,9 +264,9 @@ }, mounted() { this.findCluster() - this.intervalTimer = setInterval(() => { - this.findCluster() - }, 30000) + // this.intervalTimer = setInterval(() => { + // this.findCluster() + // }, 30000) }, beforeDestroy() { clearInterval(this.intervalTimer) @@ -350,25 +364,27 @@ }, join(formName) { let _this = this + _this.joinLoading = true + let data = { + clusterId: _this.joinForm.clusterid, + password: _this.joinForm.clusterpwd, + nodeIps: [_this.joinForm.clusterip] + } + _this + .joinCluster(data) + .then(() => { + _this.joinLoading = false + _this.findCluster() + }) + .catch((e) => { + _this.joinLoading = false + }) + this.$refs[formName].validate((valid) => { + console.log("join") if (valid) { - _this.joinLoading = true - let data = { - clusterId: _this.joinForm.clusterid, - password: _this.joinForm.clusterpwd, - nodeIps: [_this.joinForm.clusterip] - } - debugger - _this - .joinCluster(data) - .then(() => { - _this.joinLoading = false - _this.findCluster() - }) - .catch((e) => { - _this.joinLoading = false - }) } else { + onsole.log("鍙傛暟閿欒") return false } }) @@ -467,7 +483,7 @@ exitCluster() { const h = this.$createElement let res = {} - + this.clusterPasswordInput = "" this.$msgbox({ title: "", message: h( @@ -478,9 +494,14 @@ [ h("span", { class: "icon iconfont warn-icon" }, "\ue71c"), h("span", { class: "warn-title" }, "閫�鍑洪泦缇�"), - h("span", { class: "warn-dec" }, "纭畾閫�鍑洪泦缇ゅ悧锛�") + h("input", { + attrs: { placeholder: "璇疯緭鍏ラ泦缇ゅ瘑鐮�", id: "cluster-password", class: "warn-title" }, + value: "", + on: { input: this.onQuitInputChange } + }) ] ), + // showInput: true, showCancelButton: true, showClose: true, confirmButtonText: "纭畾", @@ -491,10 +512,10 @@ // this.showCurCluster = false; // } async () => { + clearInterval(this.intervalTimer) try { - res = await leave() + res = await leave({ password: this.clusterPasswordInput }) if (res && res.success) { - clearInterval(this.intervalTimer) this.showCurCluster = false this.ruleForm.virtualIp = "" this.ruleForm.clustername = "" @@ -515,16 +536,11 @@ message: err.msg }) } - }, - (err) => { - clearInterval(this.intervalTimer) - this.showCurCluster = false - this.ruleForm.virtualIp = "" - this.ruleForm.clustername = "" - this.ruleForm.clusterpwd = "" - this.clusterid = "" } ) + }, + onQuitInputChange() { + this.clusterPasswordInput = document.getElementById("cluster-password").value }, clearInput(typ) { if (typ == 1) { @@ -586,6 +602,7 @@ if (res && res.success) { if (res.data && res.data.clusterId) { this.isHasColony = true + this.showCurCluster = true this.clusterid = res.data.clusterId this.ruleForm.clustername = res.data.clusterName this.ruleForm.clusterpwd = "******" @@ -605,6 +622,13 @@ obj.nodeName = i.node_name obj.Address = i.node_ip obj.role = i.drift_state ? i.drift_state : "pc" + obj.online = i.online + + if (obj.id == res.data.localId) { + this.ruleForm.state = i.drift_state + this.ruleForm.localId = res.data.localId + this.masterNode = i.drift_state === "master" + } return obj }) } else { @@ -614,6 +638,65 @@ }, clearInnerNodes() { this.innerNodes = [] + }, + async change2Master() { + const h = this.$createElement + this.clusterPasswordInput = "" + this.$msgbox({ + title: "", + message: h( + "div", + { + style: "display: flex; flex-direction: column; justify-content: center; align-items: center;" + }, + [ + h("span", { class: "icon iconfont warn-icon" }, "\ue71c"), + h("span", { class: "warn-title" }, "鍒囨崲涓昏妭鐐�"), + h("input", { + attrs: { placeholder: "璇疯緭鍏ラ泦缇ゅ瘑鐮�", id: "cluster-password", class: "warn-title" }, + value: "", + on: { input: this.onQuitInputChange } + }) + ] + ), + // showInput: true, + showCancelButton: true, + showClose: true, + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + customClass: "del-account-message-box" + }) + .then( + // () => { + // this.showCurCluster = false; + // } + async () => { + clearInterval(this.intervalTimer) + try { + let res = await update2Master({ + clusterId: this.clusterid, + nodeId: this.ruleForm.localId, + password: this.clusterPasswordInput + }) + if (res && res.success) { + this.$message.success("鍒囨崲鎴愬姛") + this.findCluster() + } else { + this.$message.warning("鍒囨崲澶辫触, 璇锋鏌ュ瘑鐮�") + this.masterNode = false + } + } catch (err) { + console.log(err) + this.$notify.error({ + title: "澶辫触", + message: err.msg + }) + } + } + ) + .catch(() => { + this.masterNode = false + }) } } } @@ -625,7 +708,7 @@ } .cluster-guanli { margin: 0 auto; - width: 760px; + // width: 760px; padding: 0 10px; .btns { margin-top: 30px !important; -- Gitblit v1.8.0