|
@@ -7,90 +7,97 @@
|
|
|
@getSearchData="getSearchData"
|
|
|
@clearSearchData="clearSearchData"
|
|
|
>
|
|
|
- <button
|
|
|
- class="btnAdd"
|
|
|
- @click="(dialogAddShow = true), (upName = '新增')"
|
|
|
- >
|
|
|
- 新增
|
|
|
- </button>
|
|
|
+ <button class="btnAdd" @click="newadd()">新增</button>
|
|
|
</Search>
|
|
|
</div>
|
|
|
<div class="gateway-circuit-break-content">
|
|
|
<template v-if="circuitBreakList.length">
|
|
|
- <el-row :gutter="24">
|
|
|
+ <el-row :gutter="24" v-infinite-scroll="load">
|
|
|
<el-col
|
|
|
- v-for="(
|
|
|
- {
|
|
|
- searchId,
|
|
|
- name,
|
|
|
- fusingtime,
|
|
|
- businessouttime,
|
|
|
- maxerror,
|
|
|
- interfaceBinding,
|
|
|
- },
|
|
|
- index
|
|
|
- ) in circuitBreakList"
|
|
|
- :key="searchId"
|
|
|
+ v-for="(item, index) in circuitBreakList"
|
|
|
+ :key="index"
|
|
|
:xs="24"
|
|
|
:md="12"
|
|
|
:lg="6"
|
|
|
:xl="6"
|
|
|
>
|
|
|
<NormalCard
|
|
|
- :title="name"
|
|
|
- :flag.sync="circuitBreakList[index].flag"
|
|
|
- @update="update(searchId, circuitBreakList[index].flag)"
|
|
|
- @close-click="removeCard(searchId)"
|
|
|
- @editdate="editClickHandler(searchId)"
|
|
|
+ :title="item.fusingname"
|
|
|
+ :flag="item.fusingstatus == 0 ? false : true"
|
|
|
+ @close-click="removeCard(item.fusingid)"
|
|
|
+ @editdate="editClickHandler(item.fusingid)"
|
|
|
>
|
|
|
<template #default>
|
|
|
<el-row :gutter="16">
|
|
|
<el-col :span="7" class="card-content-left"
|
|
|
>熔断时间:</el-col
|
|
|
>
|
|
|
- <el-col :span="5" class="card-content-right">{{
|
|
|
- fusingtime
|
|
|
+ <el-col :span="15" class="card-content-right">{{
|
|
|
+ item.fusingtime
|
|
|
}}</el-col>
|
|
|
- <el-col :span="7" class="card-content-left"
|
|
|
+ <!-- <el-col :span="7" class="card-content-left"
|
|
|
>接口关联:</el-col
|
|
|
>
|
|
|
<el-col :span="5" class="card-content-right">{{
|
|
|
- interfaceBinding
|
|
|
- }}</el-col>
|
|
|
+ item.interfaceBinding
|
|
|
+ }}</el-col> -->
|
|
|
<el-col :span="7" class="card-content-left"
|
|
|
>超时时间:</el-col
|
|
|
>
|
|
|
<el-col :span="17" class="card-content-right">{{
|
|
|
- businessouttime
|
|
|
+ item.businessouttime
|
|
|
}}</el-col>
|
|
|
<el-col :span="7" class="card-content-left"
|
|
|
>熔断标准:</el-col
|
|
|
>
|
|
|
<el-col :span="17" class="card-content-right">{{
|
|
|
- maxerror
|
|
|
+ item.maxerror
|
|
|
}}</el-col>
|
|
|
</el-row>
|
|
|
+ <div class="card-switch">
|
|
|
+ <p :class="item.fusingstatus == 1 ? 'start_up' : 'close'">
|
|
|
+ {{ item.fusingstatus == 1 ? "开启" : "关闭" }}
|
|
|
+ </p>
|
|
|
+ <el-switch
|
|
|
+ v-model="item.fusingstatuse"
|
|
|
+ active-color="#6F81BC"
|
|
|
+ @change="update(item.fusingid, item.fusingstatuse)"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</template>
|
|
|
</NormalCard>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
- <el-empty description="暂无数据" />
|
|
|
+ <!-- <el-empty description="暂无数据" /> -->
|
|
|
</template>
|
|
|
</div>
|
|
|
<Dialog
|
|
|
:flag="dialogAddShow"
|
|
|
- width="630px"
|
|
|
+ width="800px"
|
|
|
@close-dialog="dialogAddShow = false"
|
|
|
>
|
|
|
<div class="dialog-add-title">{{ upName }}熔断配置</div>
|
|
|
<div class="dialog-add-content">
|
|
|
- <el-form :model="circuitBreakAddForm" label-width="auto">
|
|
|
+ <el-form
|
|
|
+ :model="circuitBreakAddForm"
|
|
|
+ label-width="auto"
|
|
|
+ ref="circuitBreakAddForm"
|
|
|
+ >
|
|
|
<el-row :gutter="24">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="熔断名称">
|
|
|
+ <el-input
|
|
|
+ v-model="circuitBreakAddForm.fusingname"
|
|
|
+ placeholder="请输入熔断名称"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="熔断时间">
|
|
|
<el-input
|
|
|
+ oninput="value=value.replace(/^\.+|[^\d.]/g,'')"
|
|
|
v-model="circuitBreakAddForm.circuitBreakDuration"
|
|
|
placeholder="请输入熔断时间"
|
|
|
/>
|
|
@@ -99,6 +106,7 @@
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="服务超时时间">
|
|
|
<el-input
|
|
|
+ oninput="value=value.replace(/^\.+|[^\d.]/g,'')"
|
|
|
v-model="circuitBreakAddForm.timeoutPeriod"
|
|
|
placeholder="请输入服务超时时间"
|
|
|
/>
|
|
@@ -107,6 +115,7 @@
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="达成熔断标准">
|
|
|
<el-input
|
|
|
+ oninput="value=value.replace(/^\.+|[^\d.]/g,'')"
|
|
|
v-model="circuitBreakAddForm.circuitBreakStandard"
|
|
|
placeholder="请输入次数(次)"
|
|
|
/>
|
|
@@ -120,7 +129,7 @@
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
+ <!-- <el-col :span="12">
|
|
|
<el-form-item label="是否启用">
|
|
|
<el-radio-group
|
|
|
v-model="circuitBreakAddForm.enable"
|
|
@@ -130,7 +139,7 @@
|
|
|
<el-radio :label="false">否</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
- </el-col>
|
|
|
+ </el-col> -->
|
|
|
</el-row>
|
|
|
<el-form-item label="熔断规则描述">
|
|
|
<el-input
|
|
@@ -139,6 +148,46 @@
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
+ <div class="routing-protocol">
|
|
|
+ <div class="dialog-add-title">熔断策略-绑定路由协议</div>
|
|
|
+ <el-input
|
|
|
+ @clear="clearSearch"
|
|
|
+ clearable
|
|
|
+ v-model="searchInfos"
|
|
|
+ @keyup.enter.native="searchUp"
|
|
|
+ style="width: 40%"
|
|
|
+ >
|
|
|
+ <el-button slot="prepend" icon="el-icon-search"></el-button>
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ class="table"
|
|
|
+ :data="interfaceDatas"
|
|
|
+ height="380px"
|
|
|
+ stripe
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column prop="" width="90">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-checkbox
|
|
|
+ v-model="scope.row.start"
|
|
|
+ @change="upstart(scope.row)"
|
|
|
+ ></el-checkbox>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="businessname" label="路由名称">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="businessmethod" label="方法" width="150">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="businessrequesttype"
|
|
|
+ label="请求方式"
|
|
|
+ width="90"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="businesstime" label="创建时间">
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
</div>
|
|
|
<div class="dialog-add-bottom fc">
|
|
|
<el-button
|
|
@@ -148,9 +197,7 @@
|
|
|
class="r24 blubtn"
|
|
|
>提交</el-button
|
|
|
>
|
|
|
- <el-button size="medium" class="wbtn" @click="dialogAddShow = false"
|
|
|
- >取消</el-button
|
|
|
- >
|
|
|
+ <el-button size="medium" class="wbtn" @click="deles()">取消</el-button>
|
|
|
</div>
|
|
|
</Dialog>
|
|
|
<Dialog :flag="dialogVisible">
|
|
@@ -181,6 +228,9 @@ import {
|
|
|
DeleteFusingInfo,
|
|
|
UpdateFusingStatusPatch,
|
|
|
GetFusingById,
|
|
|
+ GateWayBusinessGetList,
|
|
|
+ ChangeBusinessFusingRelation,
|
|
|
+ GetBusinessByFusing,
|
|
|
} from "@/api/fusing";
|
|
|
|
|
|
export default {
|
|
@@ -192,19 +242,10 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- circuitBreakList: [
|
|
|
- {
|
|
|
- searchId: 0,
|
|
|
- name: "熔断规则名称",
|
|
|
- fusingtime: 2,
|
|
|
- businessouttime: 2,
|
|
|
- maxerror: 3,
|
|
|
- businesserrorresponse: 2,
|
|
|
- fusingdescribe: 2,
|
|
|
- flag: true,
|
|
|
- },
|
|
|
- ],
|
|
|
+ circuitBreakList: [],
|
|
|
circuitBreakAddForm: {
|
|
|
+ fusingid: "",
|
|
|
+ fusingname: "",
|
|
|
circuitBreakDuration: "",
|
|
|
timeoutPeriod: "",
|
|
|
circuitBreakStandard: "",
|
|
@@ -220,8 +261,16 @@ export default {
|
|
|
pages: null,
|
|
|
loading: false,
|
|
|
searchInfo: "",
|
|
|
+ searchInfos: "",
|
|
|
searchId: "",
|
|
|
upName: "",
|
|
|
+ input: "",
|
|
|
+ interfaceDatas: [],
|
|
|
+ selectedList: [],
|
|
|
+ selectedLister: [],
|
|
|
+ delList: [],
|
|
|
+ delLister: [],
|
|
|
+ fusingider: "",
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
@@ -231,11 +280,14 @@ export default {
|
|
|
// 查询
|
|
|
getSearchData(val) {
|
|
|
this.searchInfo = val;
|
|
|
+ this.circuitBreakList = [];
|
|
|
this.pageInit();
|
|
|
},
|
|
|
// 清除查询
|
|
|
clearSearchData() {
|
|
|
this.searchInfo = "";
|
|
|
+ this.circuitBreakList = [];
|
|
|
+ this.pageInit();
|
|
|
},
|
|
|
// 滚动加载
|
|
|
load() {
|
|
@@ -245,7 +297,7 @@ export default {
|
|
|
// 回到第一页
|
|
|
pageInit() {
|
|
|
this.PageIndex = 1;
|
|
|
- this.accountArr = [];
|
|
|
+ this.circuitBreakList = [];
|
|
|
this.accountList();
|
|
|
},
|
|
|
//查询熔断列表
|
|
@@ -257,12 +309,12 @@ export default {
|
|
|
PageIndex: this.PageIndex,
|
|
|
PageSize: this.PageSize,
|
|
|
});
|
|
|
- if (result.code === 0) {
|
|
|
+ if (result.success) {
|
|
|
this.loading = false;
|
|
|
- const newDatas = result.returnData.data;
|
|
|
- // console.log(newDatas[0])
|
|
|
+ const newDatas = result.data;
|
|
|
// this.pages = result.returnData.pages;
|
|
|
newDatas.forEach((element) => {
|
|
|
+ element.fusingstatuse = element.fusingstatus == 1 ? true : false;
|
|
|
this.circuitBreakList.push(element);
|
|
|
});
|
|
|
} else {
|
|
@@ -272,6 +324,12 @@ export default {
|
|
|
console.log("出错了", error);
|
|
|
}
|
|
|
},
|
|
|
+ //新增——弹窗
|
|
|
+ async newadd() {
|
|
|
+ this.dialogAddShow = true;
|
|
|
+ this.upName = "新增";
|
|
|
+ this.routList();
|
|
|
+ },
|
|
|
//新增熔断
|
|
|
async onSubmit() {
|
|
|
try {
|
|
@@ -279,16 +337,15 @@ export default {
|
|
|
fusingid: this.circuitBreakAddForm.fusingid
|
|
|
? this.circuitBreakAddForm.fusingid
|
|
|
: "",
|
|
|
+ fusingname: this.circuitBreakAddForm.fusingname,
|
|
|
fusingtime: this.circuitBreakAddForm.circuitBreakDuration,
|
|
|
businessouttime: this.circuitBreakAddForm.timeoutPeriod,
|
|
|
maxerror: this.circuitBreakAddForm.circuitBreakStandard,
|
|
|
businesserrorresponse: this.circuitBreakAddForm.errorCode,
|
|
|
fusingdescribe: this.circuitBreakAddForm.description,
|
|
|
});
|
|
|
- if (result.code === 0) {
|
|
|
- this.dialogAddShow = false;
|
|
|
- this.circuitBreakAddForm = {};
|
|
|
- this.pageInit();
|
|
|
+ if (result.success) {
|
|
|
+ this.relationRou(result.data);
|
|
|
} else {
|
|
|
this.$message.error(result.message);
|
|
|
}
|
|
@@ -296,10 +353,32 @@ export default {
|
|
|
console.log("出错了", error);
|
|
|
}
|
|
|
},
|
|
|
+ //情空
|
|
|
+ empty() {
|
|
|
+ this.circuitBreakAddForm = {
|
|
|
+ fusingid: "",
|
|
|
+ fusingname: "",
|
|
|
+ circuitBreakDuration: "",
|
|
|
+ timeoutPeriod: "",
|
|
|
+ circuitBreakStandard: "",
|
|
|
+ errorCode: "",
|
|
|
+ enable: true,
|
|
|
+ description: "",
|
|
|
+ };
|
|
|
+ this.delList = [];
|
|
|
+ this.delLister = [];
|
|
|
+ this.selectedList = [];
|
|
|
+ this.selectedLister = [];
|
|
|
+ this.fusingider = "";
|
|
|
+ },
|
|
|
+ deles() {
|
|
|
+ this.dialogAddShow = false;
|
|
|
+ this.empty();
|
|
|
+ },
|
|
|
//删除-弹窗
|
|
|
- removeCard(searchId) {
|
|
|
+ removeCard(fusingid) {
|
|
|
this.dialogVisible = true;
|
|
|
- this.searchId = searchId;
|
|
|
+ this.searchId = fusingid;
|
|
|
// this.circuitBreakList.splice(index, 1);
|
|
|
},
|
|
|
//删除-接口
|
|
@@ -308,7 +387,7 @@ export default {
|
|
|
const result = await DeleteFusingInfo({
|
|
|
searchId: this.searchId,
|
|
|
});
|
|
|
- if (result.code === 0) {
|
|
|
+ if (result.success) {
|
|
|
this.dialogVisible = false;
|
|
|
this.pageInit();
|
|
|
} else {
|
|
@@ -319,13 +398,13 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
//状态变更
|
|
|
- async update(searchId, data) {
|
|
|
+ async update(fusingid, fusingstatus) {
|
|
|
try {
|
|
|
const result = await UpdateFusingStatusPatch({
|
|
|
- edittype: data ? 1 : 0,
|
|
|
- idlist: [searchId],
|
|
|
+ edittype: fusingstatus == true ? 1 : 0,
|
|
|
+ idlist: [fusingid],
|
|
|
});
|
|
|
- if (result.code === 0) {
|
|
|
+ if (result.success) {
|
|
|
this.pageInit();
|
|
|
} else {
|
|
|
this.$message.error(result.message);
|
|
@@ -335,14 +414,16 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
//编辑详情
|
|
|
- async editClickHandler(searchId) {
|
|
|
+ async editClickHandler(fusingid) {
|
|
|
+ this.fusingider = fusingid;
|
|
|
this.upName = "编辑";
|
|
|
this.dialogAddShow = true;
|
|
|
try {
|
|
|
const result = await GetFusingById({
|
|
|
- searchId: searchId,
|
|
|
+ searchId: fusingid,
|
|
|
});
|
|
|
- if (result.code === 0) {
|
|
|
+ if (result.success) {
|
|
|
+ this.circuitBreakAddForm.fusingname = result.data.fusingname;
|
|
|
this.circuitBreakAddForm.circuitBreakDuration =
|
|
|
result.data.fusingtime;
|
|
|
this.circuitBreakAddForm.timeoutPeriod = result.data.businessouttime;
|
|
@@ -351,6 +432,148 @@ export default {
|
|
|
result.data.businesserrorresponse;
|
|
|
this.circuitBreakAddForm.description = result.data.fusingdescribe;
|
|
|
this.circuitBreakAddForm.fusingid = result.data.fusingid;
|
|
|
+ this.selectRoute(fusingid);
|
|
|
+ } else {
|
|
|
+ this.$message.error(result.message);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log("出错了", error);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //编辑-路由列表
|
|
|
+ async selectRoute(fusingid) {
|
|
|
+ try {
|
|
|
+ const rel = await GetBusinessByFusing({
|
|
|
+ searchId: fusingid,
|
|
|
+ keyword: this.searchInfos,
|
|
|
+ PageIndex: this.PageIndex,
|
|
|
+ PageSize: this.PageSize,
|
|
|
+ });
|
|
|
+ if (rel.success) {
|
|
|
+ rel.data.forEach((element) => {
|
|
|
+ if (element.relation == 1) {
|
|
|
+ element.start = true;
|
|
|
+ } else {
|
|
|
+ element.start = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (this.selectedList.length > 0) {
|
|
|
+ this.selectedList.forEach((element) => {
|
|
|
+ rel.data.forEach((res) => {
|
|
|
+ if (res.businessid == element) {
|
|
|
+ res.start = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ } else if (this.selectedList.length == 0) {
|
|
|
+ this.interfaceDatas.forEach((element) => {
|
|
|
+ if (element.relation == 1) {
|
|
|
+ this.selectedList.push(element.businessid);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ this.interfaceDatas = rel.data;
|
|
|
+ } else {
|
|
|
+ this.$message.error(rel.message);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log("出错了", error);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ clearSearch() {
|
|
|
+ this.searchInfos = "";
|
|
|
+ this.routList();
|
|
|
+ },
|
|
|
+ searchUp() {
|
|
|
+ if (this.upName == "新增") {
|
|
|
+ this.routList();
|
|
|
+ } else {
|
|
|
+ this.selectRoute(this.fusingider);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //新增-路由列表
|
|
|
+ async routList() {
|
|
|
+ try {
|
|
|
+ const result = await GateWayBusinessGetList({
|
|
|
+ keyword: this.searchInfos,
|
|
|
+ PageIndex: this.PageIndex,
|
|
|
+ PageSize: this.PageSize,
|
|
|
+ });
|
|
|
+ if (result.success) {
|
|
|
+ result.data.forEach((element) => {
|
|
|
+ element.start = false;
|
|
|
+ });
|
|
|
+ if (this.selectedList.length > 0) {
|
|
|
+ this.selectedList.forEach((element) => {
|
|
|
+ result.data.forEach((res) => {
|
|
|
+ if (res.businessid == element) {
|
|
|
+ res.start = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ this.interfaceDatas = result.data;
|
|
|
+ } else {
|
|
|
+ this.$message.error(result.message);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log("出错了", error);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //选中
|
|
|
+ upstart(row) {
|
|
|
+ if (this.upName == "新增") {
|
|
|
+ if (row.start == true) {
|
|
|
+ this.selectedList.push(row.businessid);
|
|
|
+ } else {
|
|
|
+ this.selectedList = this.selectedList.filter(
|
|
|
+ (i) => i != row.businessid
|
|
|
+ );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.selectedLister = [];
|
|
|
+ if (row.start == true) {
|
|
|
+ this.selectedList.push(row.businessid);
|
|
|
+ } else {
|
|
|
+ this.selectedList = this.selectedList.filter(
|
|
|
+ (i) => i != row.businessid
|
|
|
+ );
|
|
|
+ }
|
|
|
+ let arr = [];
|
|
|
+ arr = this.interfaceDatas.filter(
|
|
|
+ (i) => i.relation == 0 && i.start == true
|
|
|
+ );
|
|
|
+ this.selectedLister = [];
|
|
|
+ arr.forEach((element) => {
|
|
|
+ this.selectedLister.push(element.businessid);
|
|
|
+ });
|
|
|
+ // this.selectedList = Array.from(new Set(this.selectedLister));
|
|
|
+ let arrs = [];
|
|
|
+ arrs = this.interfaceDatas.filter(
|
|
|
+ (i) => i.relation == 1 && i.start == false
|
|
|
+ );
|
|
|
+ this.delList = [];
|
|
|
+ arrs.forEach((element) => {
|
|
|
+ this.delList.push(element.businessid);
|
|
|
+ });
|
|
|
+ // this.delList = Array.from(new Set(this.delLister));
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //关联路由
|
|
|
+ async relationRou(data) {
|
|
|
+ try {
|
|
|
+ const result = await ChangeBusinessFusingRelation({
|
|
|
+ bindingid: data.toString(),
|
|
|
+ businesslist:
|
|
|
+ this.upName == "新增" ? this.selectedList : this.selectedLister,
|
|
|
+ businessbindedlist: this.delList,
|
|
|
+ });
|
|
|
+ if (result.success) {
|
|
|
+ this.dialogAddShow = false;
|
|
|
+ this.empty();
|
|
|
+ // this.circuitBreakAddForm = {};
|
|
|
+ this.pageInit();
|
|
|
+ this.$message.success(result.message);
|
|
|
} else {
|
|
|
this.$message.error(result.message);
|
|
|
}
|
|
@@ -377,6 +600,35 @@ export default {
|
|
|
::v-deep .el-button--primary {
|
|
|
border-color: #6f80bc;
|
|
|
}
|
|
|
+::v-deep .table {
|
|
|
+ .el-table__header {
|
|
|
+ th {
|
|
|
+ background-color: #5c6789;
|
|
|
+ color: #fff;
|
|
|
+ border-right: none;
|
|
|
+ &:first-child {
|
|
|
+ border-radius: 8px 0 0 0;
|
|
|
+ }
|
|
|
+ &:last-child {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ &:nth-last-child(2) {
|
|
|
+ border-radius: 0 8px 0 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.routing-protocol {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding-bottom: 24px;
|
|
|
+ ::v-deep .el-input__inner {
|
|
|
+ border-left: none !important;
|
|
|
+ border-radius: 0 !important;
|
|
|
+ padding: 0;
|
|
|
+ font-size: 16px;
|
|
|
+ }
|
|
|
+}
|
|
|
.gateway-circuit-break-content {
|
|
|
margin-top: 32px;
|
|
|
height: calc(100vh - 224px);
|