From 401524fb5661d57ffb2229d683fe4de85b65fd1c Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期四, 31 八月 2023 17:54:24 +0800 Subject: [PATCH] 生产管理看板+删不需要的文件 --- src/pages/settings/components/ClusterManagement.vue | 885 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 885 insertions(+), 0 deletions(-) diff --git a/src/pages/settings/components/ClusterManagement.vue b/src/pages/settings/components/ClusterManagement.vue new file mode 100644 index 0000000..bedd193 --- /dev/null +++ b/src/pages/settings/components/ClusterManagement.vue @@ -0,0 +1,885 @@ +<template> + <div class="s-cluster-management"> + <div class="ui-top-view"> + <div class="ui-top-title">瑙嗛鍒嗘瀽闆嗙兢绠$悊</div> + </div> + <el-row> + <el-col :span="12"> + <el-tabs v-model="activeName" id="e-alaycluster" v-if="!isHasColony"> + <el-tab-pane label="鍒涘缓闆嗙兢" name="1" :disabled="isHasColony"> + <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px"> + <el-form-item label="闆嗙兢鍚嶇О" prop="clustername"> + <el-input v-model="ruleForm.clustername" placeholder="鎵嬪姩杈撳叆, 濡傗�滈泦缇鈥�" size="small"></el-input> + </el-form-item> + <el-form-item label="闆嗙兢ID"> + <el-input v-model="clusterid" placeholder="涓嶅厑璁歌緭鍏�,淇濆瓨鍚庡洖鏄�" disabled size="small"></el-input> + </el-form-item> + <el-form-item label="闆嗙兢瀵嗙爜" prop="clusterpwd"> + <el-input v-model="ruleForm.clusterpwd" placeholder="璇疯緭鍏�6浣嶅瘑鐮�,鎴栫偣鍑荤敓鎴�" size="small"> + <el-button type="text" slot="suffix" @click="generatePassword">鐢熸垚瀵嗙爜</el-button> + </el-input> + </el-form-item> + <el-form-item label="闆嗙兢IP" prop="virtualIp"> + <ip-input :ip="ruleForm.virtualIp" :on-blur="onIpBlur" class="ip-input-comp"></ip-input> + </el-form-item> + <el-form-item> + <el-button type="primary" size="small" @click="submitForm('ruleForm')">淇濆瓨</el-button> + </el-form-item> + </el-form> + </el-tab-pane> + + <!-- 鍔犲叆宸叉湁闆嗙兢 --> + <el-tab-pane label="鍔犲叆宸叉湁闆嗙兢" name="2" :disabled="isHasColony"> + <el-form + label-width="80px" + :model="joinForm" + :rules="joinRules" + ref="joinForm" + class="join-form" + v-loading="joinLoading" + > + <el-form-item label="闆嗙兢ID" style="width:440px" prop="clusterid"> + <el-input v-model="joinForm.clusterid" placeholder size="small"></el-input> + </el-form-item> + <el-form-item label="IP鍦板潃" style="width:440px" prop="clusterip"> + <el-input + v-model="joinForm.clusterip" + placeholder="璇疯緭鍏ラ泦缇ゅ唴浠绘剰IP鍦板潃" + size="small" + autocomplete="new-password" + ></el-input> + + <!-- <el-button size="mini" :disabled="searchDis" @click="searchColony">鎼滅储闆嗙兢</el-button> + <el-button size="mini" @click="stopSearch">鍋滄鎼滅储</el-button>--> + </el-form-item> + <el-form-item label="闆嗙兢瀵嗙爜" prop="clusterpwd" style="width:440px"> + <el-input + v-model="joinForm.clusterpwd" + placeholder="璇疯緭鍏ラ泦缇ゅ瘑鐮�" + show-password + size="small" + autocomplete="new-password" + > + <el-button + type="text" + slot="suffix" + v-show="!searchDis" + @click="searchColony" + >鎼滅储闆嗙兢</el-button> + <el-button type="text" slot="suffix" v-show="searchDis" @click="stopSearch"> + <i class="el-icon-loading"></i>鍋滄鎼滅储 + </el-button> + </el-input> + </el-form-item> + <el-form-item style="width:440px"> + <el-button type="primary" @click="join('joinForm')" size="small">鍔犲叆闆嗙兢</el-button> + </el-form-item> + <div class="form-tip">璇疯緭鍏ヤ互涓婁俊鎭姞鍏ラ泦缇�,鎴栬�呴�氳繃闆嗙兢瀵嗙爜鎼滅储鍚庤繘琛屽姞鍏�</div> + </el-form> + </el-tab-pane> + </el-tabs> + <!-- 鏈夐泦缇ょ殑鎯呭喌 --> + <div v-if="isHasColony" id="h-alaycluster"> + <el-form :model="ruleForm" ref="ruleForm" label-width="100px"> + <el-form-item label="闆嗙兢鍚嶇О" prop="clustername"> + <el-input v-model="ruleForm.clustername" placeholder="鎵嬪姩杈撳叆, 濡傗�滈泦缇鈥�" size="small"></el-input> + </el-form-item> + <el-form-item label="闆嗙兢ID"> + <el-input v-model="clusterid" placeholder="涓嶅厑璁歌緭鍏�,淇濆瓨鍚庡洖鏄�" disabled size="small"></el-input> + </el-form-item> + <el-form-item label="闆嗙兢瀵嗙爜" prop="clusterpwd"> + <el-input + v-model="ruleForm.clusterpwd" + disabled + placeholder="璇疯緭鍏�6浣嶅瘑鐮�,鎴栫偣鍑荤敓鎴�" + size="small" + ></el-input> + </el-form-item> + + <el-form-item label="闆嗙兢IP" prop="virtualIp"> + <ip-input :ip="ruleForm.virtualIp" :on-blur="onIpBlur" class="ip-input-comp"></ip-input> + </el-form-item> + <el-form-item style="text-align: right;"> + <el-button size="small" type="danger" @click="leave">閫�鍑洪泦缇�</el-button> + <el-button + style="margin-right:10px;" + type="primary" + size="small" + @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 && isSearch" + class="node-container" + > + <serfDiagram + ref="diagram" + :members="members" + :agent="agentName" + v-loading="loading" + :isShowHover="false" + @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> + + <!-- <div class="ui-top-view"> + <div class="ui-top-title">瀛樺偍闆嗙兢绠$悊</div> + </div> + <el-row> + <el-col :span="12"> + <el-tabs id="e-dbcluster" v-model="sActiveName"> + <el-tab-pane label="鍒涘缓闆嗙兢" name="s-first" v-if="sActiveName != 's-third1'"> + <el-button + type="primary" + style="float: left;margin: 20px 0px;" + size="small" + @click="createEsCluster()" + >鍒涘缓瀛樺偍闆嗙兢</el-button> + + </el-tab-pane> + <el-tab-pane label="鍔犲叆宸叉湁闆嗙兢" name="s-second" v-if="sActiveName != 's-third1'"> + <el-form label-width="80px"> + <el-form-item label="IP鍦板潃" style="text-align: left;width: 300px;"> + <el-input + v-model="esNodeIp" + placeholder="璇疯緭鍏ラ泦缇ゅ唴浠绘剰IP鍦板潃" + size="small" + autocomplete="off" + ></el-input> + <el-checkbox + label="涓昏妭鐐�" + v-model="esNodeType" + style="margin-left: 20px;position: absolute;" + ></el-checkbox> + </el-form-item> + <el-form-item> + <el-button + type="primary" + @click="joinESCluster()" + size="small" + style="float: left;" + >鍔犲叆闆嗙兢</el-button> + </el-form-item> + </el-form> + </el-tab-pane> + <el-tab-pane label="闆嗙兢淇℃伅" name="s-third"> + <el-table :data="esNodes" style="width: 100%"> + <el-table-column prop="nodeType" label="鑺傜偣绫诲瀷"></el-table-column> + <el-table-column prop="name" label="鑺傜偣鍚嶇О"></el-table-column> + <el-table-column prop="ip" label="鑺傜偣IP鍦板潃" min-width="90px"></el-table-column> + <el-table-column prop="buildDate" label="娉ㄥ唽鏃堕棿" min-width="120px"></el-table-column> + </el-table> + </el-tab-pane> + </el-tabs> + </el-col> + </el-row>--> + </div> +</template> + +<script> +import { + createSerfCluster, + randomPwd, + search, + getSearchNodes, + stopSearching, + findCluster, + updateClusterName, + joinCluster, + leave, + getVrrp, + setVrrp, + createESNode, + addESNode, + getEsClusterInfo +} from "@/api/clusterManage"; + +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"; +export default { + components: { + serfDiagram, + ipInput, + cloudNode + }, + data() { + const checkPwd = (rule, value, callback) => { + if (!value) { + return callback(new Error("瀵嗙爜涓嶈兘涓虹┖")); + } + setTimeout(() => { + if (value.length != 6) { + callback(new Error("瀵嗙爜搴斾负6浣�!")); + } else { + callback(); + } + }, 1000); + }; + + return { + activeName: "1", + sActiveName: "s-first", + clusterid: "", + esNodeIp: "", + esNodeType: "", + clusterpwd2: "", + sClusterip: "", + ruleForm: { + clustername: "", + clusterpwd: "", + virtualIp: "" + }, + vrIpForm: { + enable: true, + //serve_port: "", + serve_port: null, + virtual_ip: "" + }, + manageForm: { + clustername: "娴嬭瘯闆嗙兢1", + clusterpwd: "123456", + virtualip: "192.168.1.188" + }, + joinForm: { + clusterid: "", + clusterip: "", + clusterpwd: "" + }, + rules: { + clustername: [ + { required: true, message: "璇疯緭鍏ラ泦缇ゅ悕绉�", trigger: "change" } + ], + clusterpwd: [{ validator: checkPwd, trigger: "change" }], + virtualIp: [ + { required: true, validator: isIPv4, trigger: "change" } + ] + }, + // vrIpRules: { + // virtualIp: [ + // { required: true, message: "璇疯緭鍏ヨ櫄鎷烮P", trigger: "change" } + // ] + // }, + joinRules: { + clusterid: [ + { required: true, message: "璇疯緭鍏ラ泦缇D", trigger: "change" }, + ], + clusterip: [ + { required: true, validator: isIPv4, trigger: "change" } + ], + clusterpwd: [ + { validator: checkPwd, trigger: "change" } + ] + }, + esNodes: [], + scheduleId: "", + isHasColony: false, + isSearch: false, + currentCluster: {}, + searchNum: "", + loading: false, + searchDis: false, + agentName: "", + members: [], + innerNodes: [], + intervalTimer: null, + joinLoading: false, + showJoinConfirm: false + }; + }, + mounted() { + this.findCluster(); + let _this = this; + this.intervalTimer = setInterval(() => { + _this.findCluster(); + }, 30000); + //this.getEsClusterNodes(); + }, + beforeDestroy() { + clearInterval(this.intervalTimer); + }, + methods: { + checkPsd(psd) { + return psd.trim().length === 6 + }, + // cleanValue() { + // this.members = []; + // }, + // sHandleClick(tab, event) { + // console.log(tab, event); + // }, + submitForm(formName) { + this.$refs[formName].validate(valid => { + if (valid) { + //alert("submit!"); + let json = { + clusterId: this.clusterid, + clusterName: this.ruleForm.clustername, + password: this.ruleForm.clusterpwd, + virtualIp: this.ruleForm.virtualIp + }; + this.createCluster(json).then(() => { + this.findCluster(); + }); + } else { + console.log("error submit!!"); + return false; + } + }); + }, + + // saveForm(formName) { + // this.$refs[formName].validate(valid => { + // if (valid) { + // alert("submit!"); + // let json = { + // enable: this.vrIpForm.enable, + // serve_port: this.vrIpForm.serve_port, + // virtual_ip: this.vrIpForm.virtual_ip, + + // }; + // setVrrp(json).then(() => { + // this.getVrrpInfo(); + // }); + // } else { + // console.log("error submit!!"); + // return false; + // } + // }); + // }, + + join(formName) { + let _this = this; + this.$refs[formName].validate(valid => { + if (valid) { + _this.joinLoading = true; + // if (Object.keys(this.currentCluster).length === 0) { + // this.$notify({ + // type: "info", + // duration: 1000, + // message: "璇峰厛閫夋嫨涓�涓泦缇よ妭鐐�" + // }); + // _this.joinLoading = false; + // return true; + // } + let nodeIps = this.members.map(i => { + return i.Address; + }); + let json = { + //clusterId: this.currentCluster.cluster_id, + clusterId: this.joinForm.clusterid, + password: this.joinForm.clusterpwd, + nodeIps: [this.joinForm.clusterip] + }; + this.joinCluster(json).then(() => { + _this.joinLoading = false; + this.findCluster(); + }).catch(e => { + console.log(e); + _this.joinLoading = false; + }); + } else { + console.log("error submit!!"); + return false; + } + }); + }, + async createCluster(json) { + let res = await createSerfCluster(json); + console.log(res, "鍒涘缓闆嗙兢"); + this.$notify({ + title: res.success ? "鎴愬姛" : "澶辫触", + message: res.msg, + type: res.success ? "success" : "error" + }); + }, + async randomPwd() { + let res = await randomPwd(); + if (res && res.success) { + this.ruleForm.clusterpwd = res.data; + } + }, + async searchColony() { + this.isSearch = true; + this.$refs["joinForm"].clearValidate(); + this.$refs["joinForm"].validateField('clusterpwd'); + if (this.checkPsd(this.joinForm.clusterpwd)) { + this.members = []; + let json = { + password: this.joinForm.clusterpwd, + //ip: this.joinForm.clusterip + }; + + this.search(json) + .then(() => { + this.setSchedule(); + // this.searchDis = false; + // this.loading = false; + }) + .catch(() => { + this.searchDis = false; + this.loading = false; + this.isSearch = false; + }); + } else { + this.searchDis = false; + this.loading = false; + this.isSearch = false; + return false; + } + //}); + }, + async search(json) { + let res = await search(json); + if (res && res.success) { + console.log(res, "鎼滅储闆嗙兢"); + this.searchNum = res.data; + } + this.searchDis = true; + this.loading = true; + window.setTimeout(() => { + this.stopSearch(); + }, 10 * 1000); + }, + //鎼滅储闆嗙兢 + async getSearchNodes() { + let res = await getSearchNodes(); + if (res && res.success) { + let list = res.data.map(i => { + let obj = {}; + obj.cluster_id = i.clusterID ? i.clusterID : ""; + obj.create_time = i.create_time ? i.create_time : ""; + obj.id = i.nodeID ? i.nodeID : ""; + obj.node_id = i.nodeID ? i.nodeID : ""; + obj.Address = i.nodeAddress ? i.nodeAddress : ""; + obj.nodeName = i.nodeAddress ? i.nodeAddress : ""; + obj.role = i.role ? i.role : "pc"; + return obj; + }); + list.map(i => { + let found = this.members.find(element => { + return element.node_id === i.node_id; + }); + if (found === undefined) { + this.members.push(i); + } + }); + } + }, + setSchedule() { + this.scheduleId = window.setInterval(() => { + this.getSearchNodes(); + }, 1000); + }, + async stopSearch() { + if (!this.loading) { + return true; + } + stopSearching({ + searchNum: this.searchNum + }).then((res) => { + console.log(res, '姝e父缁撴潫') + this.loading = false; + this.searchDis = false; + window.clearInterval(this.scheduleId); + }).catch((err) => { + console.log(err, '鎶ラ敊缁撴潫') + this.$notify({ + type: 'error', + duration: 1000, + message: '鍋滄鎼滅储鎶ラ敊锛�' + }) + // window.setTimeout(()=>{ + // this.loading = false; + // this.searchDis = false; + // window.clearInterval(this.scheduleId); + // },2000) + }) + }, + async findCluster() { + let res = await findCluster(); + if (res && res.success) { + if (res.data && res.data.clusterId) { + this.isHasColony = true; + this.activeName = "3"; + this.clusterid = res.data.clusterId; + this.ruleForm.clustername = res.data.clusterName; + this.ruleForm.clusterpwd = '******'; + this.ruleForm.virtualIp = res.data.virtualIp + //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.cluster_id = i.cluster_id; + obj.clusterName = res.data.clusterName; + obj.create_time = i.create_time; + obj.id = i.id; + obj.node_id = i.node_id; + obj.node_ip = i.node_ip; + obj.nodeName = i.node_name; + obj.Address = i.node_ip; + obj.role = i.drift_state ? i.drift_state : "pc"; + return obj; + }); + + //this.members = this.members.concat(list); + console.log(this.members) + } else { + this.isHasColony = false; + // this.activeName = '1' + } + } + }, + // getVrrpInfo() { + // getVrrp().then(res => { + // if (res.success) { + // this.vrIpForm.virtual_ip = res.data.virtual_ip; + // this.vrIpForm.enable = res.data.enable; + // } + // }).catch(e => { + // console.log(e) + // }) + // }, + async updateCluster() { + if (this.ruleForm.clustername === "") { + this.$message({ + type: "error", + message: "闆嗙兢鍚嶇О涓嶈兘涓虹┖" + }) + + return + } + + let res = await updateClusterName({ + clusterName: this.ruleForm.clustername, + virtualIp: this.ruleForm.virtualIp + }); + this.$notify({ + title: res.success ? "鎴愬姛" : "澶辫触", + message: res.msg, + type: res.success ? "success" : "error" + }); + }, + async joinCluster(json) { + let res = await joinCluster(json); + if (res.success) { + this.members = [] + } + this.$notify({ + title: res.success ? "鎴愬姛" : "澶辫触", + message: res.msg, + type: res.success ? "success" : "error" + }); + }, + leave() { + this.$confirm(`纭畾閫�鍑洪泦缇ゅ悧?`, { + center: true, + cancelButtonClass: "comfirm-class-cancle", + confirmButtonClass: "comfirm-class-sure" + }).then(async () => { + let res = await leave(); + this.$notify({ + title: res.success ? "鎴愬姛" : "澶辫触", + message: res.msg, + type: res.success ? "success" : "error" + }); + if (res && res.success) { + this.ruleForm.clustername = ""; + this.ruleForm.clusterpwd = "" + this.clusterid = ""; + this.isHasColony = false; + this.activeName = "1"; + this.members = []; + this.innerNodes = []; + } + }).catch(() => { + this.ruleForm.clustername = ""; + this.ruleForm.clusterpwd = "" + this.clusterid = ""; + this.isHasColony = false; + this.activeName = "1"; + this.members = []; + this.innerNodes = []; + }); + + }, + joinNode(event, node) { + console.log('join', node) + let _this = this; + this.currentCluster.cluster_id = node.cluster_id; + if (this.activeName === "3") { + this.manageForm.clustername = node.clusterName; + this.clusterid = node.cluster_id; + return; + } + if (this.activeName === "2") { + if (_this.showJoinConfirm) return; + + this.$confirm("鏄惁瑕佸姞鍏ヨ妭鐐� " + node.nodeName + "?", "鍔犲叆闆嗙兢", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "success" + }) + .then(() => { + _this.showJoinConfirm = true; + let json = { + //clusterId: this.currentCluster.cluster_id, + clusterId: node.cluster_id, + password: this.joinForm.clusterpwd, + nodeIps: [node.Address] + }; + this.joinCluster(json).then(() => { + _this.showJoinConfirm = false; + this.findCluster(); + }).catch(e => { + console.log(e); + _this.showJoinConfirm = false; + }); + }).catch(e => { + console.log(e) + }); + + // this.$refs["joinForm"].validate(valid => { + // if (valid) { + // if (_this.showJoinConfirm) return; + // _this.showJoinConfirm = true; + // this.$confirm("鏄惁瑕佸姞鍏ヨ妭鐐� " + node.nodeName + "?", "鍔犲叆闆嗙兢", { + // confirmButtonText: "纭畾", + // cancelButtonText: "鍙栨秷", + // type: "success" + // }) + // .then(() => { + + // console.log(this.currentCluster, '閫夋嫨鐨勯泦缇よ妭鐐�') + // this.join("joinForm"); + // _this.showJoinConfirm = false; + // }) + // .catch(() => { + // this.$notify({ + // type: "info", + // duration: 1000, + // message: "宸插彇娑�" + // }); + // _this.showJoinConfirm = false; + // }); + // } else { + // console.log("error submit!!"); + // return false; + // } + // }); + } + }, + generatePassword() { + var chars = + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + var uuid = []; + + for (let i = 0; i < 6; i++) { + uuid[i] = chars[0 | (Math.random() * 50)]; + } + + this.ruleForm.clusterpwd = uuid.join(""); + }, + + async getEsClusterNodes() { + let rsp = await getDevInfo(); + let hostIpAddr = ""; + if (rsp && rsp.success) { + hostIpAddr = rsp.data.ip; + } + + if (hostIpAddr.length) { + rsp = await getEsClusterInfo({ ip: hostIpAddr }); + if (rsp && rsp.success) { + this.esNodes = rsp.data.map(el => { + return { + // buildDate: "2018-06-11T23:38:03.357887Z", + buildDate: el.buildDate.split("T")[0] + " " + el.buildDate.split("T")[1].slice(0, 8), + ip: el.ip, + name: el.name, + nodeType: el.nodeType, + } + }) + + if (this.esNodes.length) { + this.sActiveName = 's-third'; + } + } + } + }, + createEsCluster() { + createESNode().then(rsp => { + if (rsp && rsp.success) { + this.$message({ + type: "success", + duration: 2000, + message: "鍒涘缓鎴愬姛" + }); + + this.getSearchNodes(); + } else { + this.$message({ + type: "error", + duration: 2000, + message: rsp.msg + }); + } + }).catch(rsp => { + this.$message({ + type: "error", + duration: 2000, + message: rsp.msg + }); + }) + }, + joinESCluster() { + if (!this.esNodeIp.length) { + this.$message({ + type: "error", + duration: 2000, + message: "璇疯緭鍏ユ纭殑ip鍦板潃" + }); + return; + } + + addESNode({ ip: this.esNodeIp, option: this.esNodeType ? "1" : "2" }).then(rsp => { + if (rsp && rsp.success) { + this.$message({ + type: "success", + duration: 2000, + message: "鍔犲叆鎴愬姛" + }); + + this.getSearchNodes(); + } else { + this.$message({ + type: "error", + duration: 2000, + message: rsp.msg + }); + } + }).catch(rsp => { + this.$message({ + type: "error", + duration: 2000, + message: rsp.msg + }); + }) + }, + onIpBlur(ip) { + //this.vrIpForm.virtual_ip = ip; + this.ruleForm.virtualIp = ip; + console.log(this.ruleForm.virtualIp) + } + + }, + + created() { } + +}; +</script> +<style lang="scss"> +.s-cluster-management { + width: 100%; + height: 100%; + overflow: auto; + .el-form-item { + width: 500px; + } + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before, + .el-form-item.is-required:not(.is-no-asterisk) + .el-form-item__label-wrap + > .el-form-item__label:before { + display: none; + } + .ip-input-comp { + width: 400px; + max-width: 400px; + } + .el-button { + float: right; + } + .el-form-item__content { + text-align: left; + + input { + max-width: 400px !important; + } + } + + #e-alaycluster, + #e-dbcluster { + .el-tabs__header { + border: 0px solid #dcdfe6; + .el-tabs__item { + padding: 5px 50px; + height: 50px; + font-family: PingFangSC-Regular; + font-size: 14px; + color: #222222; + text-align: center; + border: 0px solid transparent; + } + .el-tabs__item:nth-child(2) { + padding-left: 50px; + } + .el-tabs__item:last-child { + padding-right: 50px; + } + .el-tabs__item.is-active { + color: #ff7733; + font-weight: bold; + // border-right-color: #fff; + // border-left-color: #fff; + } + .el-tabs__item:not(.is-disabled):hover { + color: #ff7733; + } + } + .el-tabs__active-bar { + background-color: #ff7733; + } + .el-form-item__content { + text-align: left; + input { + max-width: 420px; + } + } + } + + #h-alaycluster { + .el-form-item__content { + text-align: left; + // input { + // max-width: 360px; + // } + } + } +} +.ui-top-view { + height: 30px; + line-height: 30px; +} +</style> -- Gitblit v1.8.0