From dff9fb32c1bac52d378a6d196f670b92610c01d3 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期四, 16 十二月 2021 17:21:49 +0800
Subject: [PATCH] 自适应2
---
src/pages/settings/views/clusterManagement.vue | 349 +++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 260 insertions(+), 89 deletions(-)
diff --git a/src/pages/settings/views/clusterManagement.vue b/src/pages/settings/views/clusterManagement.vue
index 9910df1..34d0f46 100644
--- a/src/pages/settings/views/clusterManagement.vue
+++ b/src/pages/settings/views/clusterManagement.vue
@@ -1,9 +1,13 @@
<template>
<div class="all">
- <div class="cluster-guanli" v-if="showCurCluster&& isHasColony">
- <cloud-node :nodes="innerNodes"></cloud-node>
+ <!-- -->
+ <div class="cluster-guanli" v-if="showCurCluster && isHasColony">
+ <!-- <cloud-node :nodes="innerNodes"></cloud-node> -->
+ <net-node :innerNodes="innerNodes"></net-node>
- <div class="bar">
+ <div class="cls-bar">瑙嗛鍒嗘瀽闆嗙兢绠$悊</div>
+
+ <div class="cls-bar">
<div class="title">闆嗙兢鍚嶇О</div>
<div class="input-area">
<div class="text" v-show="!isFillingName">
@@ -22,32 +26,34 @@
></span
>
<span
- class="icon iconfont" style="font-size:21px;"
+ class="icon iconfont"
+ style="font-size: 18px"
@click="clearInput(1)"
v-show="isFillingName"
- ></span
+ ></span
>
- <span
- class="icon iconfont" style="font-size:20px;"
+ <span
+ class="icon iconfont"
+ style="font-size: 20px; color: var(--colorCard)"
@click="updateCluster(1)"
v-show="isFillingName"
></span
>
</div>
</div>
- <div class="bar">
+ <div class="cls-bar">
<div class="title">闆嗙兢ID</div>
<div class="input-area">
<div class="text">{{ clusterid }}</div>
</div>
</div>
- <div class="bar">
+ <div class="cls-bar">
<div class="title">闆嗙兢瀵嗙爜</div>
<div class="input-area">
<div class="text">{{ ruleForm.clusterpwd }}</div>
</div>
</div>
- <div class="bar">
+ <div class="cls-bar">
<div class="title">闆嗙兢IP</div>
<div class="input-area">
<div class="text" v-show="!isFillingIp">{{ ruleForm.virtualIp }}</div>
@@ -65,51 +71,54 @@
></span
>
<span
- class="icon iconfont" style="font-size:21px;"
+ class="icon iconfont"
+ style="font-size: 18px"
@click="clearInput(2)"
v-show="isFillingIp"
- ></span
+ ></span
>
<span
class="icon iconfont"
- @click="updateCluster(2)" style="font-size:20px;"
+ @click="updateCluster(2)"
+ style="font-size: 20px; color: var(--colorCard)"
v-show="isFillingIp"
></span
>
</div>
</div>
-
- <div class="exit" @click="exitCluster">閫�鍑洪泦缇�</div>
+ <div class="btns">
+ <div class="ok" @click="updateCluster">淇濆瓨</div>
+ <div class="exit" @click="exitCluster">閫�鍑洪泦缇�</div>
+ </div>
</div>
-
- <div class="cluster-content">
- <div class="cluster-center" ref="left" v-if="!showCurCluster|| !isHasColony">
+ <!-- !showCurCluster || !isHasColony -->
+ <div class="cluster-content" v-if="!showCurCluster || !isHasColony">
+ <div class="cluster-center" ref="left" v-if="!showCurCluster || !isHasColony">
<div
class="menu-item"
:class="activePage == i ? 'menu-item-active' : ''"
v-for="(item, i) in tabList"
:key="i"
- @click="openRight(item, i)"
+ @click="openRight(i)"
>
+ <span class="icon iconfont" v-if="activePage == 0"></span>
+ <span class="icon iconfont" v-if="activePage == 1"></span>
{{ item }}
</div>
</div>
<div class="cluster-right" v-if="!showCurCluster || !isHasColony">
<div class="create-new" v-if="activePage == 0">
- <el-form
- :model="ruleForm"
- :rules="rules"
- ref="ruleForm"
- label-width="150px"
- >
- <el-form-item label="闆嗙兢鍚嶇О" prop="clustername">
+ <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
+ <el-form-item prop="clustername">
+ <div class="p-title">闆嗙兢鍚嶇О</div>
<el-input
v-model="ruleForm.clustername"
placeholder="鎵嬪姩杈撳叆, 濡傗�滈泦缇鈥�"
size="small"
></el-input>
</el-form-item>
- <el-form-item label="闆嗙兢ID">
+ <el-form-item>
+ <div class="p-title">闆嗙兢ID</div>
<el-input
v-model="clusterid"
placeholder="涓嶅厑璁歌緭鍏�,淇濆瓨鍚庡洖鏄�"
@@ -117,7 +126,8 @@
size="small"
></el-input>
</el-form-item>
- <el-form-item label="闆嗙兢瀵嗙爜" prop="clusterpwd">
+ <el-form-item prop="clusterpwd">
+ <div class="p-title">闆嗙兢瀵嗙爜</div>
<el-input
v-model="ruleForm.clusterpwd"
placeholder="璇疯緭鍏�6浣嶅瘑鐮�,鎴栫偣鍑荤敓鎴�"
@@ -128,7 +138,8 @@
>
</el-input>
</el-form-item>
- <el-form-item label="闆嗙兢IP" prop="virtualIp">
+ <el-form-item prop="virtualIp">
+ <div class="p-title">闆嗙兢IP</div>
<ip-input
:ip="ruleForm.virtualIp"
:on-blur="onIpBlur"
@@ -136,7 +147,9 @@
></ip-input>
</el-form-item>
</el-form>
- <div class="save-btn" @click="saveCluster('ruleForm')">淇濆瓨</div>
+ <div class="btns">
+ <div class="ok" @click="saveCluster('ruleForm')">淇濆瓨</div>
+ </div>
</div>
<div class="join-exist" v-if="activePage == 1">
@@ -145,14 +158,16 @@
:rules="joinExistRules"
ref="joinForm"
class="join-form"
- label-width="150px"
+
v-loading="joinLoading"
>
- <el-form-item label="闆嗙兢ID" prop="clusterid">
+ <el-form-item prop="clusterid">
+ <div class="p-title">闆嗙兢ID</div>
<el-input v-model="joinForm.clusterid" size="small"></el-input>
</el-form-item>
- <el-form-item label="IP鍦板潃" prop="clusterip">
+ <el-form-item prop="clusterip">
+ <div class="p-title">IP鍦板潃</div>
<el-input
v-model="joinForm.clusterip"
placeholder="璇疯緭鍏ラ泦缇ゅ唴浠绘剰IP鍦板潃"
@@ -160,7 +175,8 @@
autocomplete="new-password"
></el-input>
</el-form-item>
- <el-form-item label="闆嗙兢瀵嗙爜" prop="clusterpwd">
+ <el-form-item prop="clusterpwd">
+ <div class="p-title">闆嗙兢瀵嗙爜</div>
<el-input
v-model="joinForm.clusterpwd"
placeholder="璇疯緭鍏ラ泦缇ゅ瘑鐮�"
@@ -186,8 +202,9 @@
</el-input>
</el-form-item>
</el-form>
-
- <div class="save-btn" @click="join('joinForm')">鍔犲叆闆嗙兢</div>
+ <div class="btns">
+ <div class="ok" @click="join('joinForm')">鍔犲叆闆嗙兢</div>
+ </div>
</div>
</div>
</div>
@@ -206,8 +223,9 @@
updateClusterName,
joinCluster,
} from "@/api/clusterManage";
-import cloudNode from "../components/CloudNode";
-import ipInput from "@/components/subComponents/IPInput";
+// import cloudNode from "../components/CloudNode";
+import NetNode from '../components/NetNode'
+import ipInput from "../components/IPInput";
import { isIPv4 } from "@/scripts/validate";
export default {
@@ -224,11 +242,11 @@
}
}, 1000);
};
- const checkID= (rule, value, callback) => {
+ const checkID = (rule, value, callback) => {
if (!value) {
return callback(new Error("瀵嗙爜涓嶈兘涓虹┖"));
}
- }
+ };
return {
innerNodes: [],
intervalTimer: null,
@@ -280,8 +298,9 @@
};
},
components: {
- cloudNode,
- ipInput,
+ // cloudNode,
+ NetNode,
+ ipInput
},
mounted() {
this.findCluster();
@@ -338,9 +357,12 @@
});
},
join(formName) {
+ debugger
let _this = this;
this.$refs[formName].validate((valid) => {
+ debugger
if (valid) {
+ debugger
_this.joinLoading = true;
let nodeIps = _this.members.map((i) => {
return i.Address;
@@ -405,7 +427,7 @@
this.stopSearch();
}, 10 * 1000);
},
- openRight(item, i) {
+ openRight(i) {
this.activePage = i;
},
async stopSearch() {
@@ -457,7 +479,28 @@
this.ruleForm.clusterpwd = uuid.join("");
},
exitCluster() {
- this.$confirm("纭畾閫�鍑洪泦缇ゅ悧锛�","鎻愮ず").then(async () => {
+ const h = this.$createElement;
+ 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("span", { class: "warn-dec" }, "纭畾閫�鍑洪泦缇ゅ悧锛�"),
+ ]
+ ),
+ showCancelButton: true,
+ showClose: true,
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ customClass: "del-account-message-box",
+ }).then(
+ async () => {
let res = await leave();
this.$notify({
title: res.success ? "鎴愬姛" : "澶辫触",
@@ -472,14 +515,16 @@
this.ruleForm.clusterpwd = "";
this.clusterid = "";
}
- },(err) => {
- clearInterval(this.intervalTimer);
- this.showCurCluster = false;
- this.ruleForm.virtualIp = "";
- this.ruleForm.clustername = "";
- this.ruleForm.clusterpwd = "";
- this.clusterid = "";
- })
+ },
+ (err) => {
+ clearInterval(this.intervalTimer);
+ this.showCurCluster = false;
+ this.ruleForm.virtualIp = "";
+ this.ruleForm.clustername = "";
+ this.ruleForm.clusterpwd = "";
+ this.clusterid = "";
+ }
+ );
},
clearInput(typ) {
if (typ == 1) {
@@ -509,7 +554,7 @@
this.ruleForm.virtualIp = ip;
},
async updateCluster(v) {
- if (v == 1) {
+ if (v == 1 || v == undefined) {
this.ruleForm.clustername = this.selfForm.clustername;
}
if (this.ruleForm.clustername === "") {
@@ -527,6 +572,7 @@
if (res.success) {
this.findCluster();
}
+
this.$notify({
title: res.success ? "鎴愬姛" : "澶辫触",
message: res.msg,
@@ -575,32 +621,92 @@
<style lang="scss">
.all {
width: 100%;
+ background: #f2f2f7;
}
.cluster-guanli {
margin: 0 auto;
- width: 520px;
- .bar {
- height: 40px;
- background-color: rgba(248, 248, 248, 1);
- margin-bottom: 10px;
+width: 760px;
+ padding: 0 10px;
+ .btns {
+ margin-top: 30px !important;
+
+ .exit {
+ width: 188px;
+ height: 40px;
+ cursor: pointer;
+ border-radius: 25px;
+ background-color: #fe6d68;
+ color: #fff;
+ line-height: 40px;
+ font-weight: bold;
+ font-size: 16px;
+ margin-left: 60px;
+ margin-top: 0;
+ }
+ }
+ .cloud {
+ width: 100%;
+ display: flex;
+ height: 255px;
+ border-radius: 8px;
+ background: linear-gradient(
+ 180deg,
+ #ffffff 0%,
+ rgba(255, 255, 255, 0) 100%
+ );
+ .inner {
+ background: url(/images/settings/easy-cloud.png) no-repeat;
+ background-size: contain;
+ margin: 0 auto;
+ width: 240px;
+ .rect {
+ position: relative;
+ margin: 0;
+ height: 100%;
+ }
+ }
+ }
+ .cls-bar {
+ height: 48px;
+ background-color: #ffffff;
+ margin-bottom: 6px;
display: flex;
box-sizing: border-box;
- padding: 0 20px;
+ padding: 0 30px;
justify-content: space-between;
align-items: center;
- .title{
- font-size: 14px;
+ border-radius: 8px;
+ font-weight: bold;
+ font-size: 14px;
+ color: #333333;
+ .title {
+ font-size: 14px;
}
.input-area {
display: flex;
- width: 340px;
+ width: 540px;
height: 30px;
line-height: 30px;
justify-content: inherit;
box-sizing: border-box;
- .icon{
+ background: #f2f2f7;
+ border-radius: 20px;
+ padding: 0 30px;
+ .el-input--mini .el-input__inner {
+ height: 24px;
+ line-height: 24px;
+ /* border: 1px solid transparent; */
+ background: inherit;
+ padding-left: 0;
+ border: none;
+ border-radius: 0px;
+ font-size: 14px;
+ }
+
+ .icon {
cursor: pointer;
- // font-size: 18px;
+ font-size: 14px;
+ margin-left: 10px;
}
}
}
@@ -624,6 +730,8 @@
flex: 1;
flex-basis: auto;
box-sizing: border-box;
+ background: #fbfaff;
+
.cluster-center {
height: 100%;
width: 280px;
@@ -631,26 +739,31 @@
box-sizing: border-box;
flex-shrink: 0;
padding: 10px;
- border-right: 5px solid #f8f8f8;
+ padding-top: 6px;
+ border-right: 4px solid #f2f2f7;
+ border-left: 4px solid #f2f2f7;
+ border-top: 4px solid #f2f2f7;
.menu-item {
- background-color: #f8f8f8; cursor: pointer;
- height: 50px;
+ background-color: #f8f8f8;
+ cursor: pointer;
+ height: 56px;
margin-bottom: 10px;
border-radius: 8px;
- line-height: 50px;
- font-size: 15px;
+ line-height: 56px;
text-align: left;
box-sizing: border-box;
padding: 0 20px;
+ font-weight: bold;
+ font-size: 16px;
}
.menu-item-active {
- background-color: #3d68e1;
+ background-color: var(--colorCard);
color: white;
}
- .menu-item:hover {
- background-color: #3d68e1;
- color: white;
- }
+ // .menu-item:hover {
+ // background-color: var(--colorCard);
+ // color: white;
+ // }
}
.cluster-right {
flex: 1;
@@ -658,7 +771,9 @@
overflow: auto;
box-sizing: border-box;
position: relative;
+ border-top: 4px solid #f2f2f7;
padding: 20px 40px;
+ padding-top: 16px;
.el-form-item.is-required:not(.is-no-asterisk)
> .el-form-item__label:before,
.el-form-item.is-required:not(.is-no-asterisk)
@@ -666,26 +781,82 @@
> .el-form-item__label:before {
display: none;
}
- .el-form-item {
- margin-bottom: 10px;
- height: 50px;
- background: #f8f8f8;
- padding: 4px 20px;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- border-radius: 10px;
- .el-form-item__label {
- text-align: left;
- line-height: 42px;
+
+ .el-form-item__content {
+ line-height: 48px;
+ display: flex;
+ align-items: center;
+ background: #f2f2f7;
+ border-radius: 8px;
+ padding: 0 15px 0 20px;
+ .el-select-dropdown__item {
+ color: #333333;
+ height: 32px;
+ font-size: 12px;
+ line-height: 32px;
+ text-align: center;
+ }
+ .el-popper {
+ margin-top: 0;
+ background: #fbfaff;
+ box-shadow: 0px 2px 6px rgb(0 0 0 / 18%);
+ border-radius: 2px;
+ .el-select-dropdown__item.hover,
+ .el-select-dropdown__item:hover {
+ background-color: #f2f2f7;
+ color: var(--colorCard);
+ }
}
}
- .el-form-item__content {
- line-height: 40px;
- position: relative;
- font-size: 14px;
+ .el-form-item__error {
+ line-height: 0.7;
+ left: 20px;
+ }
+ .el-form-item {
+ margin-bottom: 10px;
+ .el-input__inner {
+ background-color: #ffffff;
+ border: 2px solid transparent;
+ border-radius: 20px;
+ height: 32px;
+ line-height: 32px;
+ padding: 0 15px;
+ font-size: 14px;
+ font-weight: bold;
+ }
+ .el-input__inner:focus {
+ border: 2px solid var(--colorCard);
+ }
+ .el-input__inner::placeholder {
+ color: #c0c4cc;
+ font-size: 12px;
+ font-weight: normal;
+ }
+ .el-select {
+ width: 100%;
+ }
+ .el-select .el-input .el-select__caret {
+ color: #333333;
+ font-size: 14px;
+ font-weight: 600;
+ }
+ }
+ .p-title {
+ height: 48px;
+ text-align: left;
+ line-height: 48px;
+ width: 90px;
+ font-weight: 600;
}
.ip-input-container {
max-width: none !important;
+ height: 32px;
+ line-height: normal;
+ box-sizing: border-box;
+ // background-color: #f2f2f7;
+ text-align: left;
+ border-radius: 20px;
+ border: 2px solid transparent;
}
.ntp-bar {
height: 40px;
--
Gitblit v1.8.0