NEZ-592 fix: 数据中心细节问题修复
This commit is contained in:
@@ -171,12 +171,12 @@ export default {
|
|||||||
},
|
},
|
||||||
dc: {
|
dc: {
|
||||||
cabinet: [
|
cabinet: [
|
||||||
{ prop: 'asset', name: this.$t('asset.assets'), active: false },
|
{ prop: 'cabinet', name: this.$t('config.dc.cabinets'), active: true },
|
||||||
{ prop: 'cabinet', name: this.$t('config.dc.cabinets'), active: true }
|
{ prop: 'asset', name: this.$t('asset.assets'), active: false }
|
||||||
],
|
],
|
||||||
asset: [
|
asset: [
|
||||||
{ prop: 'asset', name: this.$t('asset.assets'), active: true },
|
{ prop: 'cabinet', name: this.$t('config.dc.cabinets'), active: false },
|
||||||
{ prop: 'cabinet', name: this.$t('config.dc.cabinets'), active: false }
|
{ prop: 'asset', name: this.$t('asset.assets'), active: true }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -691,7 +691,7 @@ const en = {
|
|||||||
area: 'Area',
|
area: 'Area',
|
||||||
dcName: 'Data center name',
|
dcName: 'Data center name',
|
||||||
selectArea: 'Select area',
|
selectArea: 'Select area',
|
||||||
cabinetNum: 'Cabinet number',
|
cabinetNum: 'Cabinet',
|
||||||
assets: 'Assets',
|
assets: 'Assets',
|
||||||
remark: 'Remark',
|
remark: 'Remark',
|
||||||
cabinets: 'Cabinets',
|
cabinets: 'Cabinets',
|
||||||
|
|||||||
@@ -170,7 +170,6 @@ export default {
|
|||||||
this.$refs.assetTypeForm.validate((valid) => {
|
this.$refs.assetTypeForm.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (this.editAssetType.id) {
|
if (this.editAssetType.id) {
|
||||||
console.log(this.editAssetType);
|
|
||||||
this.$put(this.url, this.editAssetType).then(res => {
|
this.$put(this.url, this.editAssetType).then(res => {
|
||||||
this.prevent_opt.save = false
|
this.prevent_opt.save = false
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
@@ -198,7 +197,6 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
selectWalk (walk) {
|
selectWalk (walk) {
|
||||||
console.log(walk);
|
|
||||||
if (this.editModule.walk.indexOf(walk) != -1) {
|
if (this.editModule.walk.indexOf(walk) != -1) {
|
||||||
this.editModule.walk.splice(this.editModule.walk.indexOf(walk), 1)
|
this.editModule.walk.splice(this.editModule.walk.indexOf(walk), 1)
|
||||||
} else {
|
} else {
|
||||||
@@ -208,7 +206,6 @@ export default {
|
|||||||
assetType(){
|
assetType(){
|
||||||
this.$get('asset/typeConf').then(res => {
|
this.$get('asset/typeConf').then(res => {
|
||||||
this.assetTypeList = res.data.list
|
this.assetTypeList = res.data.list
|
||||||
console.log(this.assetTypeList);
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,7 +125,6 @@ export default {
|
|||||||
this.$refs.modelForm.validate((valid) => {
|
this.$refs.modelForm.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (this.editModel.id) {
|
if (this.editModel.id) {
|
||||||
console.log(this.editModel)
|
|
||||||
this.$put(this.url, this.editModel).then(res => {
|
this.$put(this.url, this.editModel).then(res => {
|
||||||
this.prevent_opt.save = false
|
this.prevent_opt.save = false
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
@@ -170,7 +169,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
selectWalk (walk) {
|
selectWalk (walk) {
|
||||||
console.log(walk)
|
|
||||||
if (this.editModule.walk.indexOf(walk) != -1) {
|
if (this.editModule.walk.indexOf(walk) != -1) {
|
||||||
this.editModule.walk.splice(this.editModule.walk.indexOf(walk), 1)
|
this.editModule.walk.splice(this.editModule.walk.indexOf(walk), 1)
|
||||||
} else {
|
} else {
|
||||||
@@ -191,7 +189,6 @@ export default {
|
|||||||
/* 获取chart列表数据 */
|
/* 获取chart列表数据 */
|
||||||
ChartTemplateList () {
|
ChartTemplateList () {
|
||||||
this.$get('visual/panel/chart', { pageSize: -1, varType: 1, panelId: 0 }).then(res => {
|
this.$get('visual/panel/chart', { pageSize: -1, varType: 1, panelId: 0 }).then(res => {
|
||||||
console.log(res)
|
|
||||||
this.chartlList = res.data.list
|
this.chartlList = res.data.list
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,65 +1,61 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-clickoutside="{obj:editPromServer,func:clickOutside}" class="right-box right-box-prom">
|
<div v-clickoutside="{obj:editPromServer,func:clickOutside}" class="right-box right-box-prom">
|
||||||
<!-- begin--顶部按钮-->
|
|
||||||
<div class="right-box-top-btns right-box-form-delete">
|
|
||||||
<button v-if="editPromServer.id" id="promServer-edit-del" v-has="'prom_delete'" class="nz-btn nz-btn-size-normal nz-btn-size-alien"
|
|
||||||
type="button"
|
|
||||||
@click="del">
|
|
||||||
<span class="right-box-top-btn-icon"><i class="nz-icon nz-icon-delete"></i></span>
|
|
||||||
<span class="right-box-top-btn-txt">{{$t('overall.delete')}}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<!-- end--顶部按钮-->
|
|
||||||
|
|
||||||
<!-- begin--标题-->
|
<!-- begin--标题-->
|
||||||
<div class="right-box__header">{{editPromServer.id ? ($t("config.promServer.editProm") + " ID:" + editPromServer.id) : $t("config.promServer.createProm")}}</div>
|
<div class="right-box__header">
|
||||||
|
<div class="right-box__header">{{editPromServer.id ? ($t("config.promServer.editProm") + " ID:" + editPromServer.id) : $t("config.promServer.createProm")}}</div>
|
||||||
|
<div class="header__operation">
|
||||||
|
<span v-cancel="{obj: editPromServer, func: esc}"><i class="nz-icon nz-icon-close"></i></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- end--标题-->
|
<!-- end--标题-->
|
||||||
|
|
||||||
<!-- begin--表单-->
|
<!-- begin--表单-->
|
||||||
<div class="right-box__container">
|
<div class="right-box__container">
|
||||||
<el-form ref="promServerForm" :model="editPromServer" :rules="rules" class="right-box-form right-box-form-left" label-position = "top" label-width="120px">
|
<div class="container__form">
|
||||||
<!--DC-->
|
<el-form ref="promServerForm" :model="editPromServer" :rules="rules" label-position = "top" label-width="120px">
|
||||||
<el-form-item :label="$t('config.dc.dc')" prop="dc.name">
|
<!--DC-->
|
||||||
<div class="right-box-form-content">
|
<el-form-item :label="$t('config.dc.dc')" prop="dc.name">
|
||||||
<el-select id="prom-box-input-dc" v-model="editPromServer.dc" placeholder="" class="right-box__select" popper-class="right-box-select-dropdown prevent-clickoutside" size="small" value-key="id">
|
<div class="right-box-form-content">
|
||||||
<el-option v-for="item in dcData" :id="'prom-edit-dc-op-'+item.id" :key="item.id" :label="item.name" :value="item">
|
<el-select id="prom-box-input-dc" v-model="editPromServer.dc" placeholder="" class="right-box__select" popper-class="right-box-select-dropdown prevent-clickoutside" size="small" value-key="id">
|
||||||
<span class="config-dropdown-label-txt">{{item.name}}</span>
|
<el-option v-for="item in dcData" :id="'prom-edit-dc-op-'+item.id" :key="item.id" :label="item.name" :value="item">
|
||||||
|
<span class="config-dropdown-label-txt">{{item.name}}</span>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--host-->
|
||||||
|
<el-form-item label="Host" prop="host">
|
||||||
|
<el-input id="prom-box-input-host" v-model="editPromServer.host" placeholder="" size="small" type="text"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<!--Port-->
|
||||||
|
<el-form-item label="Port" prop="port">
|
||||||
|
<el-input id="prom-box-input-port" v-model.number="editPromServer.port" placeholder="" size="small" type="text"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<!--type-->
|
||||||
|
<el-form-item :label="$t('config.promServer.type')" prop="type">
|
||||||
|
<!-- <el-cascader-->
|
||||||
|
<!-- id="prom-box-input-type"-->
|
||||||
|
<!-- style="width: 100%"-->
|
||||||
|
<!-- v-model="editPromServer.type"-->
|
||||||
|
<!-- placeholder=""-->
|
||||||
|
<!-- size="small"-->
|
||||||
|
<!-- :options="$CONSTANTS.promServer.theData"-->
|
||||||
|
<!-- :props="{ multiple: false, checkStrictly: false ,emitPath:false}"-->
|
||||||
|
<!-- clearable></el-cascader>-->
|
||||||
|
<el-select v-model="editPromServer.type" :disabled="editPromServer.id != null&& editPromServer.id != ''" placeholder="" class="right-box__select" popper-class="right-box-select-dropdown prevent-clickoutside" size="small" value-key="value">
|
||||||
|
<el-option v-for="item in agent2.theData" :key="item.value" :label="item.label" :value="item.value" :disabled="federationEnabled && item.value == 2">
|
||||||
|
<span class="panel-dropdown-label-txt" >{{item.label}}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</el-form-item>
|
||||||
</el-form-item>
|
<el-form-item label="Token" prop="token">
|
||||||
|
<el-input id="prom-box-input-token" v-model="editPromServer.token" class="right-box-row-with-btn" placeholder="" size="small" type="text">
|
||||||
<!--host-->
|
<i slot="suffix" class="nz-icon nz-icon-refresh" @click="refreshToken"></i>
|
||||||
<el-form-item label="Host" prop="host">
|
</el-input>
|
||||||
<el-input id="prom-box-input-host" v-model="editPromServer.host" placeholder="" size="small" type="text"></el-input>
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-form>
|
||||||
<!--Port-->
|
</div>
|
||||||
<el-form-item label="Port" prop="port">
|
|
||||||
<el-input id="prom-box-input-port" v-model.number="editPromServer.port" placeholder="" size="small" type="text"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<!--type-->
|
|
||||||
<el-form-item :label="$t('config.promServer.type')" prop="type">
|
|
||||||
<!-- <el-cascader-->
|
|
||||||
<!-- id="prom-box-input-type"-->
|
|
||||||
<!-- style="width: 100%"-->
|
|
||||||
<!-- v-model="editPromServer.type"-->
|
|
||||||
<!-- placeholder=""-->
|
|
||||||
<!-- size="small"-->
|
|
||||||
<!-- :options="$CONSTANTS.promServer.theData"-->
|
|
||||||
<!-- :props="{ multiple: false, checkStrictly: false ,emitPath:false}"-->
|
|
||||||
<!-- clearable></el-cascader>-->
|
|
||||||
<el-select v-model="editPromServer.type" :disabled="editPromServer.id != null&& editPromServer.id != ''" placeholder="" class="right-box__select" popper-class="right-box-select-dropdown prevent-clickoutside" size="small" value-key="value">
|
|
||||||
<el-option v-for="item in agent2.theData" :key="item.value" :label="item.label" :value="item.value" :disabled="federationEnabled && item.value == 2">
|
|
||||||
<span class="panel-dropdown-label-txt" >{{item.label}}</span>
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="Token" prop="token">
|
|
||||||
<el-input id="prom-box-input-token" v-model="editPromServer.token" class="right-box-row-with-btn" placeholder="" size="small" type="text">
|
|
||||||
<i slot="suffix" class="nz-icon nz-icon-refresh" @click="refreshToken"></i>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- end--表单-->
|
<!-- end--表单-->
|
||||||
<!--底部按钮-->
|
<!--底部按钮-->
|
||||||
|
|||||||
@@ -1,59 +1,54 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="right-box right-box-dc" v-clickoutside="{obj:editDc,func:clickOutside}">
|
<div class="right-box right-box-dc" v-clickoutside="{obj:editDc,func:clickOutside}">
|
||||||
<!-- begin--顶部按钮-->
|
|
||||||
<div class="right-box-top-btns right-box-form-delete">
|
|
||||||
<button @click="del" class="nz-btn nz-btn-size-normal nz-btn-size-alien" id="dc-del" type="button" v-has="'dc_delete'" v-if="editDc.id">
|
|
||||||
<span class="right-box-top-btn-icon"><i class="nz-icon nz-icon-delete"></i></span>
|
|
||||||
<span class="right-box-top-btn-txt">{{$t('overall.delete')}}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<!-- end--顶部按钮-->
|
|
||||||
|
|
||||||
<!-- begin--标题-->
|
<!-- begin--标题-->
|
||||||
<div class="right-box__header">{{editDc.id ? ($t("config.dc.editDc") + " ID:" + editDc.id) : $t("config.dc.createDc")}}</div>
|
<div class="right-box__header">
|
||||||
<!-- end--标题-->
|
<div class="right-box__header">{{editDc.id ? ($t("config.dc.editDc") + " ID:" + editDc.id) : $t("config.dc.createDc")}}</div>
|
||||||
|
<div class="header__operation">
|
||||||
|
<span v-cancel="{obj: editDc, func: esc}"><i class="nz-icon nz-icon-close"></i></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- begin--表单-->
|
<!-- begin--表单-->
|
||||||
<div class="right-box__container">
|
<div class="right-box__container">
|
||||||
<el-form class="right-box-form right-box-form-left" label-width="120px" size="small" :model="editDc" label-position = "top" :rules="rules" ref="dcForm">
|
<div class="container__form">
|
||||||
<el-form-item :label='$t("overall.name")' prop="name">
|
<el-form label-width="120px" size="small" :model="editDc" label-position = "top" :rules="rules" ref="dcForm">
|
||||||
<el-input placeholder="" maxlength="64" show-word-limit v-model="editDc.name" size="small" id="dc-box-input-name"></el-input>
|
<el-form-item :label='$t("overall.name")' prop="name">
|
||||||
</el-form-item>
|
<el-input placeholder="" maxlength="64" show-word-limit v-model="editDc.name" size="small" id="dc-box-input-name"></el-input>
|
||||||
<el-form-item :label='$t("asset.location")' prop="location">
|
</el-form-item>
|
||||||
<el-input placeholder="" v-model="editDc.location" size="small" id="dc-box-input-location"></el-input>
|
<el-form-item :label='$t("asset.location")' prop="location">
|
||||||
</el-form-item>
|
<el-input placeholder="" v-model="editDc.location" size="small" id="dc-box-input-location"></el-input>
|
||||||
<el-form-item :label='$t("asset.tel")' prop="tel">
|
</el-form-item>
|
||||||
<el-input placeholder="" v-model="editDc.tel" size="small" id="dc-box-input-tel"></el-input>
|
<el-form-item :label='$t("asset.tel")' prop="tel">
|
||||||
</el-form-item>
|
<el-input placeholder="" v-model="editDc.tel" size="small" id="dc-box-input-tel"></el-input>
|
||||||
<el-form-item :label='$t("asset.principal")' prop="principal">
|
</el-form-item>
|
||||||
<el-select value-key="id" class="right-box__select" popper-class="right-box-select-dropdown prevent-clickoutside" v-model="editDc.principal" placeholder="" size="small" id="dc-box-input-principal">
|
<el-form-item :label='$t("asset.principal")' prop="principal">
|
||||||
<el-option v-for="item in userData" :id="'dc-principal-op-'+item.userId" :key="item.userId" :label="item.username" :value="item.userId">
|
<el-select value-key="id" class="right-box__select" popper-class="right-box-select-dropdown prevent-clickoutside" v-model="editDc.principal" placeholder="" size="small" id="dc-box-input-principal">
|
||||||
<span>{{item.username}}</span>
|
<el-option v-for="item in userData" :id="'dc-principal-op-'+item.userId" :key="item.userId" :label="item.username" :value="item.userId">
|
||||||
</el-option>
|
<span>{{item.username}}</span>
|
||||||
</el-select>
|
</el-option>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
<!--<el-form-item :label='$t("config.dc.area")' prop="area">-->
|
</el-form-item>
|
||||||
<!--<select-area ref="selectArea" :areaData="areaData" :placement="'bottom-start'" @selectArea="selectArea" :currentArea="editDc.area.id">-->
|
<!--<el-form-item :label='$t("config.dc.area")' prop="area">-->
|
||||||
<!--<template v-slot:trigger>-->
|
<!--<select-area ref="selectArea" :areaData="areaData" :placement="'bottom-start'" @selectArea="selectArea" :currentArea="editDc.area.id">-->
|
||||||
<!--<el-input placeholder="" v-model="editDc.area.name" size="small" readonly="readonly" @click.native="toSelectArea"></el-input>-->
|
<!--<template v-slot:trigger>-->
|
||||||
<!--</template>-->
|
<!--<el-input placeholder="" v-model="editDc.area.name" size="small" readonly="readonly" @click.native="toSelectArea"></el-input>-->
|
||||||
<!--</select-area>-->
|
<!--</template>-->
|
||||||
<!--</el-form-item>-->
|
<!--</select-area>-->
|
||||||
<el-form-item :label="$t('config.dc.lnglat')" prop="state">
|
<!--</el-form-item>-->
|
||||||
<latlng-picker ref="latlngPicker" :append-to-body="false" :show-zoom="false"></latlng-picker>
|
<el-form-item :label="$t('config.dc.lnglat')" prop="state">
|
||||||
</el-form-item>
|
<latlng-picker ref="latlngPicker" :append-to-body="false" :show-zoom="false"></latlng-picker>
|
||||||
<el-form-item :label='$t("config.dc.state")' prop="state">
|
</el-form-item>
|
||||||
<el-switch
|
<el-form-item :label='$t("config.dc.state")' prop="state">
|
||||||
id="dc-box-input-name"
|
<el-switch
|
||||||
v-model="editDc.state"
|
id="dc-box-input-name"
|
||||||
active-value="ON"
|
v-model="editDc.state"
|
||||||
inactive-value="OFF"
|
active-value="ON"
|
||||||
active-color="#ee9d3f"
|
inactive-value="OFF"
|
||||||
>
|
active-color="#ee9d3f"
|
||||||
</el-switch>
|
>
|
||||||
</el-form-item>
|
</el-switch>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--底部按钮-->
|
<!--底部按钮-->
|
||||||
|
|||||||
@@ -1,68 +1,60 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-clickoutside="{obj:editExprTemp,func:clickOutside}" class="right-box right-box-alert-config">
|
<div v-clickoutside="{obj:editExprTemp,func:clickOutside}" class="right-box right-box-alert-config">
|
||||||
<!-- begin--顶部按钮-->
|
|
||||||
<div class="right-box-top-btns right-box-form-delete">
|
|
||||||
<button v-if="editExprTemp.id" id="alert-box-del" v-has="'alert_silence_delete'" class="nz-btn nz-btn-size-normal nz-btn-size-alien"
|
|
||||||
type="button" @click="del">
|
|
||||||
<span class="right-box-top-btn-icon"><i class="nz-icon nz-icon-delete"></i></span>
|
|
||||||
<span class="right-box-top-btn-txt">{{$t('overall.delete')}}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<!-- end--顶部按钮-->
|
|
||||||
|
|
||||||
<!-- begin--标题-->
|
<!-- begin--标题-->
|
||||||
<div class="right-box__header">{{editExprTemp.id ? $t("config.exprTemp.edit") + " ID:" + editExprTemp.id :
|
<div class="right-box__header">
|
||||||
|
<div class="right-box__header">{{editExprTemp.id ? $t("config.exprTemp.edit") + " ID:" + editExprTemp.id :
|
||||||
$t("config.exprTemp.create")}}
|
$t("config.exprTemp.create")}}
|
||||||
</div>
|
</div>
|
||||||
<!-- end--标题-->
|
<div class="header__operation">
|
||||||
|
<span v-cancel="{obj: editExprTemp, func: esc}"><i class="nz-icon nz-icon-close"></i></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- begin--表单-->
|
<!-- begin--表单-->
|
||||||
<div class="right-box__container">
|
<div class="right-box__container">
|
||||||
<el-form ref="ExprTempForm" :model="editExprTemp" :rules="rules"
|
<div class="container__form">
|
||||||
class="right-box-form right-box-form-left" label-position="top" label-width="120px">
|
<el-form ref="ExprTempForm" :model="editExprTemp" :rules="rules" label-position="top" label-width="120px">
|
||||||
<el-form-item :label="$t('config.exprTemp.name')" prop="name">
|
<el-form-item :label="$t('config.exprTemp.name')" prop="name">
|
||||||
<el-input v-model="editExprTemp.name" :placeholder="$t('overall.placeHolder')" size="small"></el-input>
|
<el-input v-model="editExprTemp.name" :placeholder="$t('overall.placeHolder')" size="small"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('config.exprTemp.gname')" prop="gname">
|
<el-form-item :label="$t('config.exprTemp.gname')" prop="gname">
|
||||||
<!--<el-input v-model="editExprTemp.gname" size="small" :placeholder="$t('overall.placeHolder')"></el-input>-->
|
<!--<el-input v-model="editExprTemp.gname" size="small" :placeholder="$t('overall.placeHolder')"></el-input>-->
|
||||||
<el-autocomplete
|
<el-autocomplete
|
||||||
v-model="editExprTemp.gname"
|
v-model="editExprTemp.gname"
|
||||||
:fetch-suggestions="querySearch"
|
:fetch-suggestions="querySearch"
|
||||||
:placeholder="$t('overall.placeHolder')"
|
:placeholder="$t('overall.placeHolder')"
|
||||||
class="inline-input"
|
class="inline-input"
|
||||||
size="small"
|
size="small"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
></el-autocomplete>
|
></el-autocomplete>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('config.exprTemp.expression')" prop="expression">
|
<el-form-item :label="$t('config.exprTemp.expression')" prop="expression">
|
||||||
<!--<el-input v-model="editExprTemp.expression" size="small" :placeholder="$t('overall.placeHolder')"></el-input>-->
|
<!--<el-input v-model="editExprTemp.expression" size="small" :placeholder="$t('overall.placeHolder')"></el-input>-->
|
||||||
<promql-input
|
<promql-input
|
||||||
:id="'promqlKeys0'"
|
:id="'promqlKeys0'"
|
||||||
:key="'promqlKeys0'"
|
:key="'promqlKeys0'"
|
||||||
:expression-list="editExprTemp.expression"
|
:expression-list="editExprTemp.expression"
|
||||||
:index="0"
|
:index="0"
|
||||||
:plugins="['metric-selector', 'metric-input', 'remove']"
|
:plugins="['metric-selector', 'metric-input', 'remove']"
|
||||||
:show-temp="false"
|
:show-temp="false"
|
||||||
:showRemove="false"
|
:showRemove="false"
|
||||||
:styleType="2"
|
:styleType="2"
|
||||||
@change="expressionChange"
|
@change="expressionChange"
|
||||||
></promql-input>
|
></promql-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('config.exprTemp.remark')" prop="remark">
|
<el-form-item :label="$t('config.exprTemp.remark')" prop="remark">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="editExprTemp.remark"
|
v-model="editExprTemp.remark"
|
||||||
:placeholder="$t('alert.description')"
|
:placeholder="$t('alert.description')"
|
||||||
maxlength="512"
|
maxlength="512"
|
||||||
show-word-limit
|
show-word-limit
|
||||||
size="small"
|
size="small"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- end--表单-->
|
<!-- end--表单-->
|
||||||
|
|
||||||
<!--底部按钮-->
|
<!--底部按钮-->
|
||||||
<div class="right-box-bottom-btns">
|
<div class="right-box-bottom-btns">
|
||||||
<button id="alert-box-esc" v-cancel="{obj:editExprTemp,func:esc}"
|
<button id="alert-box-esc" v-cancel="{obj:editExprTemp,func:esc}"
|
||||||
|
|||||||
@@ -1,51 +1,47 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="right-box right-box-mib" v-clickoutside="{obj:editMib,func:clickOutside}" >
|
<div class="right-box right-box-mib" v-clickoutside="{obj:editMib,func:clickOutside}" >
|
||||||
<!-- begin--顶部按钮-->
|
|
||||||
<div class="right-box-top-btns right-box-form-delete">
|
|
||||||
<button @click="del" class="nz-btn nz-btn-size-normal nz-btn-size-alien" id="mib-del" type="button" v-has="'snmp_file_delete'" v-if="editMib.id">
|
|
||||||
<span class="right-box-top-btn-icon"><i class="nz-icon nz-icon-delete"></i></span>
|
|
||||||
<span class="right-box-top-btn-txt">{{$t('overall.delete')}}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<!-- end--顶部按钮-->
|
|
||||||
|
|
||||||
<!-- begin--标题-->
|
<!-- begin--标题-->
|
||||||
<div class="right-box__header">{{editMib.id ? ($t("config.mib.editMib") + " ID:" + editMib.id) : $t("config.mib.createMib")}}</div>
|
<div class="right-box__header">
|
||||||
<!-- end--标题-->
|
<div class="right-box__header">{{editMib.id ? ($t("config.mib.editMib") + " ID:" + editMib.id) : $t("config.mib.createMib")}}</div>
|
||||||
|
<div class="header__operation">
|
||||||
|
<span v-cancel="{obj: editMib, func: esc}"><i class="nz-icon nz-icon-close"></i></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- begin--表单-->
|
<!-- begin--表单-->
|
||||||
<div class="right-box__container">
|
<div class="right-box__container">
|
||||||
<el-form class="right-box-form right-box-form-left" :model="editMib" label-position = "top" label-width="120px" :rules="rules" ref="mibForm">
|
<div class="container__form">
|
||||||
<el-form-item :label='$t("config.mib.models")' prop="models" :rules="[{validator:checkModels,trigger:'change'}]" >
|
<el-form :model="editMib" label-position = "top" label-width="120px" :rules="rules" ref="mibForm">
|
||||||
<el-cascader
|
<el-form-item :label='$t("config.mib.models")' prop="models" :rules="[{validator:checkModels,trigger:'change'}]" >
|
||||||
id="mib-input-selected-models"
|
<el-cascader
|
||||||
:options="modelOptions"
|
id="mib-input-selected-models"
|
||||||
:props="modelProps"
|
:options="modelOptions"
|
||||||
:show-all-levels="false"
|
:props="modelProps"
|
||||||
v-model="selectedModels"
|
:show-all-levels="false"
|
||||||
@change="selectedModelChange"
|
v-model="selectedModels"
|
||||||
ref="modelSelector"
|
@change="selectedModelChange"
|
||||||
collapse-tags
|
ref="modelSelector"
|
||||||
:placeholder="$t('config.mib.modelTip')"
|
collapse-tags
|
||||||
size="small"
|
:placeholder="$t('config.mib.modelTip')"
|
||||||
class="right-box__select"
|
size="small"
|
||||||
popper-class="right-box-select-dropdown prevent-clickoutside"
|
class="right-box__select"
|
||||||
clearable></el-cascader>
|
popper-class="right-box-select-dropdown prevent-clickoutside"
|
||||||
</el-form-item>
|
clearable></el-cascader>
|
||||||
<el-form-item :label="$t('config.mib.remark')" prop="remark">
|
</el-form-item>
|
||||||
<el-input maxlength="512" rows="4" show-word-limit type="textarea" placeholder="" v-model="editMib.remark" size="small" id="mib-box-input-remark"></el-input>
|
<el-form-item :label="$t('config.mib.remark')" prop="remark">
|
||||||
</el-form-item>
|
<el-input maxlength="512" rows="4" show-word-limit type="textarea" placeholder="" v-model="editMib.remark" size="small" id="mib-box-input-remark"></el-input>
|
||||||
<el-form-item :label="$t('config.mib.mibFiles')" prop="file" :rules="[{validator:checkMibFile,trigger:'change'}]" :class="{'add-required':!editMib.id}">
|
</el-form-item>
|
||||||
<el-upload drag :multiple="false" action="" :file-list="uploadFileList" :on-change="uploadChange" :auto-upload="false" accept="" :on-remove="afterClearFile" ref="mibFileUpload" class="mib-upload right-box-form-row" id="mib-box-input-file">
|
<el-form-item :label="$t('config.mib.mibFiles')" prop="file" :rules="[{validator:checkMibFile,trigger:'change'}]" :class="{'add-required':!editMib.id}">
|
||||||
<div slot="tip" class="el-upload__tip" >
|
<el-upload drag :multiple="false" action="" :file-list="uploadFileList" :on-change="uploadChange" :auto-upload="false" accept="" :on-remove="afterClearFile" ref="mibFileUpload" class="mib-upload right-box-form-row" id="mib-box-input-file">
|
||||||
<span v-if="editMib.fileName">{{editMib.fileName}}</span>
|
<div slot="tip" class="el-upload__tip" >
|
||||||
<span v-if="uploadErrorMsg" style="color: #F56C6C"><br>{{uploadErrorMsg}}</span>
|
<span v-if="editMib.fileName">{{editMib.fileName}}</span>
|
||||||
</div>
|
<span v-if="uploadErrorMsg" style="color: #F56C6C"><br>{{uploadErrorMsg}}</span>
|
||||||
<i class="nz-icon nz-icon-upload"></i>
|
</div>
|
||||||
<div class="el-upload__text">{{$t('overall.dragFileTip')}},{{$t('overall.or')}} <em>{{$t('overall.clickUpload')}}</em></div>
|
<i class="nz-icon nz-icon-upload"></i>
|
||||||
</el-upload>
|
<div class="el-upload__text">{{$t('overall.dragFileTip')}},{{$t('overall.or')}} <em>{{$t('overall.clickUpload')}}</em></div>
|
||||||
</el-form-item>
|
</el-upload>
|
||||||
</el-form>
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--底部按钮-->
|
<!--底部按钮-->
|
||||||
|
|||||||
@@ -1,78 +1,74 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="right-box right-box-credential" v-clickoutside="{obj:editCredential,func:clickOutside}">
|
<div class="right-box right-box-credential" v-clickoutside="{obj:editCredential,func:clickOutside}">
|
||||||
<!-- begin--顶部按钮-->
|
|
||||||
<div class="right-box-top-btns right-box-form-delete">
|
|
||||||
<button @click="del" class="nz-btn nz-btn-size-normal nz-btn-size-alien" id="credential-del" type="button" v-has="'credential_delete'" v-if="editCredential.id">
|
|
||||||
<span class="right-box-top-btn-icon"><i class="nz-icon nz-icon-delete"></i></span>
|
|
||||||
<span class="right-box-top-btn-txt">{{$t('overall.delete')}}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<!-- end--顶部按钮-->
|
|
||||||
|
|
||||||
<!-- begin--标题-->
|
<!-- begin--标题-->
|
||||||
<div class="right-box__header">{{editCredential.id ? ($t("config.mib.credential.edit") + " ID:" + editCredential.id) : $t("config.mib.credential.create")}}</div>
|
<div class="right-box__header">
|
||||||
<!-- end--标题-->
|
<div class="right-box__header">{{editCredential.id ? ($t("config.mib.credential.edit") + " ID:" + editCredential.id) : $t("config.mib.credential.create")}}</div>
|
||||||
|
<div class="header__operation">
|
||||||
|
<span v-cancel="{obj: editCredential, func: esc}"><i class="nz-icon nz-icon-close"></i></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- begin--表单-->
|
<!-- begin--表单-->
|
||||||
<div class="right-box__container">
|
<div class="right-box__container">
|
||||||
<el-form class="right-box-form right-box-form-left" label-width="120px" size="small" :model="editCredential" label-position = "top" :rules="rules" ref="credentialForm">
|
<div class="container__form">
|
||||||
<el-form-item :label='$t("overall.name")' prop="name">
|
<el-form label-width="120px" size="small" :model="editCredential" label-position = "top" :rules="rules" ref="credentialForm">
|
||||||
<el-input placeholder="" maxlength="64" show-word-limit v-model="editCredential.name" size="small" id="credential-box-input-name"></el-input>
|
<el-form-item :label='$t("overall.name")' prop="name">
|
||||||
</el-form-item>
|
<el-input placeholder="" maxlength="64" show-word-limit v-model="editCredential.name" size="small" id="credential-box-input-name"></el-input>
|
||||||
<el-form-item :label='$t("config.mib.credential.remark")' prop="remark">
|
</el-form-item>
|
||||||
<el-input placeholder="" v-model="editCredential.remark" size="small" id="credential-box-input-remark"></el-input>
|
<el-form-item :label='$t("config.mib.credential.remark")' prop="remark">
|
||||||
</el-form-item>
|
<el-input placeholder="" v-model="editCredential.remark" size="small" id="credential-box-input-remark"></el-input>
|
||||||
<el-form-item :label='$t("config.mib.credential.type")' prop="type" class="half-form-item">
|
</el-form-item>
|
||||||
<el-select v-model="editCredential.type" class="right-box-row-with-btn" placeholder="" id="credential-box-input-type" popper-class="chart-box-dropdown-small" @change="typeChange">
|
<el-form-item :label='$t("config.mib.credential.type")' prop="type" class="half-form-item">
|
||||||
<el-option v-for="item in $CONSTANTS.snmpProtocolTypes" :key="item.value" :label="item.label" :value="item.value">
|
<el-select v-model="editCredential.type" class="right-box-row-with-btn" placeholder="" id="credential-box-input-type" popper-class="chart-box-dropdown-small" @change="typeChange">
|
||||||
<span class="panel-dropdown-label-txt" >{{item.label}}</span>
|
<el-option v-for="item in $CONSTANTS.snmpProtocolTypes" :key="item.value" :label="item.label" :value="item.value">
|
||||||
</el-option>
|
<span class="panel-dropdown-label-txt" >{{item.label}}</span>
|
||||||
</el-select>
|
</el-option>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
<el-form-item :label='$t("config.mib.credential.port")' prop="port" class="half-form-item" >
|
</el-form-item>
|
||||||
<el-input placeholder="" v-model.number="editCredential.port" size="small" id="credential-box-input-port"></el-input>
|
<el-form-item :label='$t("config.mib.credential.port")' prop="port" class="half-form-item" >
|
||||||
</el-form-item>
|
<el-input placeholder="" v-model.number="editCredential.port" size="small" id="credential-box-input-port"></el-input>
|
||||||
<el-form-item label='Read community' prop="readCommunity" v-if="editCredential.type ===1 || editCredential.type === 2">
|
</el-form-item>
|
||||||
<el-input placeholder="" v-model="editCredential.config.readCommunity" size="small" id="credential-box-input-readCommunity"></el-input>
|
<el-form-item label='Read community' prop="readCommunity" v-if="editCredential.type ===1 || editCredential.type === 2">
|
||||||
</el-form-item>
|
<el-input placeholder="" v-model="editCredential.config.readCommunity" size="small" id="credential-box-input-readCommunity"></el-input>
|
||||||
<el-form-item label='Write community' prop="writeCommunity" v-if="editCredential.type ===1 || editCredential.type === 2">
|
</el-form-item>
|
||||||
<el-input placeholder="" v-model="editCredential.config.writeCommunity" size="small" id="credential-box-input-writeCommunity" type="password" show-password></el-input>
|
<el-form-item label='Write community' prop="writeCommunity" v-if="editCredential.type ===1 || editCredential.type === 2">
|
||||||
</el-form-item>
|
<el-input placeholder="" v-model="editCredential.config.writeCommunity" size="small" id="credential-box-input-writeCommunity" type="password" show-password></el-input>
|
||||||
<el-form-item label="Username" prop="username" v-if="editCredential.type === 3" class="half-form-item">
|
</el-form-item>
|
||||||
<el-input placeholder="" v-model="editCredential.config.username" size="small" id="credential-box-input-username"></el-input>
|
<el-form-item label="Username" prop="username" v-if="editCredential.type === 3" class="half-form-item">
|
||||||
</el-form-item>
|
<el-input placeholder="" v-model="editCredential.config.username" size="small" id="credential-box-input-username"></el-input>
|
||||||
<el-form-item label="Content name" prop="contextname" v-if="editCredential.type === 3" class="half-form-item">
|
</el-form-item>
|
||||||
<el-input placeholder="" v-model="editCredential.config.contextname" size="small" id="credential-box-input-contextname"></el-input>
|
<el-form-item label="Content name" prop="contextname" v-if="editCredential.type === 3" class="half-form-item">
|
||||||
</el-form-item>
|
<el-input placeholder="" v-model="editCredential.config.contextname" size="small" id="credential-box-input-contextname"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<div class="right-box-sub-title" v-if="editCredential.type === 3">{{$t('config.mib.credential.auth')}}</div>
|
<div class="right-box-sub-title" v-if="editCredential.type === 3">{{$t('config.mib.credential.auth')}}</div>
|
||||||
<div style="margin-bottom: 20px;width: 100%"></div>
|
<div style="margin-bottom: 20px;width: 100%"></div>
|
||||||
|
|
||||||
<el-form-item :label='$t("config.mib.credential.method")' prop="authProtocol" v-if="editCredential.type === 3" class="half-form-item">
|
<el-form-item :label='$t("config.mib.credential.method")' prop="authProtocol" v-if="editCredential.type === 3" class="half-form-item">
|
||||||
<el-select v-model="editCredential.config.authProtocol" class="right-box-row-with-btn" placeholder="" id="credential-box-input-type" popper-class="chart-box-dropdown-small">
|
<el-select v-model="editCredential.config.authProtocol" class="right-box-row-with-btn" placeholder="" id="credential-box-input-type" popper-class="chart-box-dropdown-small">
|
||||||
<el-option v-for="item in $CONSTANTS.snmpAuthMethod" :key="item.value" :label="item.label" :value="item.value">
|
<el-option v-for="item in $CONSTANTS.snmpAuthMethod" :key="item.value" :label="item.label" :value="item.value">
|
||||||
<span class="panel-dropdown-label-txt" >{{item.label}}</span>
|
<span class="panel-dropdown-label-txt" >{{item.label}}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label='$t("config.mib.credential.pin")' prop="authPin" v-if="editCredential.type === 3" class="half-form-item">
|
<el-form-item :label='$t("config.mib.credential.pin")' prop="authPin" v-if="editCredential.type === 3" class="half-form-item">
|
||||||
<el-input placeholder="" v-model="editCredential.config.authPin" size="small" id="credential-box-input-authPin" type="password" show-password></el-input>
|
<el-input placeholder="" v-model="editCredential.config.authPin" size="small" id="credential-box-input-authPin" type="password" show-password></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<div class="right-box-sub-title" v-if="editCredential.type === 3">{{$t('config.mib.credential.encryption')}}</div>
|
<div class="right-box-sub-title" v-if="editCredential.type === 3">{{$t('config.mib.credential.encryption')}}</div>
|
||||||
<div style="margin-bottom: 20px;width: 100%"></div>
|
<div style="margin-bottom: 20px;width: 100%"></div>
|
||||||
|
|
||||||
<el-form-item :label='$t("config.mib.credential.method")' prop="privProtocol" v-if="editCredential.type === 3" class="half-form-item">
|
<el-form-item :label='$t("config.mib.credential.method")' prop="privProtocol" v-if="editCredential.type === 3" class="half-form-item">
|
||||||
<el-select v-model="editCredential.config.privProtocol" class="right-box-row-with-btn" placeholder="" id="credential-box-input-type" popper-class="chart-box-dropdown-small" :disabled="!editCredential.config.authProtocol || editCredential.config.authProtocol === ''">
|
<el-select v-model="editCredential.config.privProtocol" class="right-box-row-with-btn" placeholder="" id="credential-box-input-type" popper-class="chart-box-dropdown-small" :disabled="!editCredential.config.authProtocol || editCredential.config.authProtocol === ''">
|
||||||
<el-option v-for="item in $CONSTANTS.snmpEncryptionMethod" :key="item.value" :label="item.label" :value="item.value">
|
<el-option v-for="item in $CONSTANTS.snmpEncryptionMethod" :key="item.value" :label="item.label" :value="item.value">
|
||||||
<span class="panel-dropdown-label-txt" >{{item.label}}</span>
|
<span class="panel-dropdown-label-txt" >{{item.label}}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label='$t("config.mib.credential.pin")' prop="privPin" v-if="editCredential.type === 3" class="half-form-item">
|
<el-form-item :label='$t("config.mib.credential.pin")' prop="privPin" v-if="editCredential.type === 3" class="half-form-item">
|
||||||
<el-input placeholder="" v-model="editCredential.config.privPin" size="small" id="credential-box-input-privPin" :disabled="!editCredential.config.authProtocol || editCredential.config.authProtocol === ''" type="password" show-password></el-input>
|
<el-input placeholder="" v-model="editCredential.config.privPin" size="small" id="credential-box-input-privPin" :disabled="!editCredential.config.authProtocol || editCredential.config.authProtocol === ''" type="password" show-password></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--底部按钮-->
|
<!--底部按钮-->
|
||||||
<div class="right-box-bottom-btns">
|
<div class="right-box-bottom-btns">
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template v-else-if="item.prop === 'assetNum'">
|
<template v-else-if="item.prop === 'assetNum'">
|
||||||
<span class="endpoint-num" @click="showBottomBox('asset', scope.row)">
|
<span class="endpoint-num" @click="showBottomBox('asset', scope.row)">
|
||||||
<i class="nz-icon nz-icon-asset" :class="scope.row[item.prop]>0?'color23BF9A':'color23BF9A'"/>
|
<i class="nz-icon nz-icon-overview-project" :class="scope.row[item.prop]>0?'color23BF9A':'color23BF9A'"/>
|
||||||
{{scope.row[item.prop]}}
|
{{scope.row[item.prop]}}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
|
|
||||||
<template v-else-if="item.prop === 'cabinetNum'">
|
<template v-else-if="item.prop === 'cabinetNum'">
|
||||||
<span class="alert-num" @click="showBottomBox('cabinet', scope.row)">
|
<span class="alert-num" @click="showBottomBox('cabinet', scope.row)">
|
||||||
<i class="nz-icon nz-icon-Cabinet" :class="scope.row[item.prop]>0?'color23BF9A':'colorEF7458'"/>
|
<i class="nz-icon nz-icon-cabinet" :class="scope.row[item.prop]>0?'color23BF9A':'colorEF7458'"/>
|
||||||
{{scope.row[item.prop]}}
|
{{scope.row[item.prop]}}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div style="height: 100%">
|
||||||
<nz-data-list
|
<nz-data-list
|
||||||
v-if="showTab === 'file'"
|
v-if="showTab === 'file'"
|
||||||
ref="dataList"
|
ref="dataList"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div style="hight: 100%">
|
||||||
<mib-file :show-tab="showTab" v-if="showTab == 'file'" @changeShowTab="changeShowTab" @toCredentialTab="changeTab(['mib','credentials'],'credentials')" @toBrowserTab="changeTab(['mib','browser'],'browser')"></mib-file>
|
<mib-file :show-tab="showTab" v-if="showTab == 'file'" @changeShowTab="changeShowTab" @toCredentialTab="changeTab(['mib','credentials'],'credentials')" @toBrowserTab="changeTab(['mib','browser'],'browser')"></mib-file>
|
||||||
<mib-browser :show-tab="showTab" v-if="showTab == 'browser'" @changeShowTab="changeShowTab" @toFileTab="changeTab(['mib','file'],'file')" @toCredentialTab="changeTab(['mib','credentials'],'credentials')"></mib-browser>
|
<mib-browser :show-tab="showTab" v-if="showTab == 'browser'" @changeShowTab="changeShowTab" @toFileTab="changeTab(['mib','file'],'file')" @toCredentialTab="changeTab(['mib','credentials'],'credentials')"></mib-browser>
|
||||||
<credentials :show-tab="showTab" v-if="showTab == 'credentials'" @changeShowTab="changeShowTab" @toFileTab="changeTab(['mib','file'],'file')" @toBrowserTab="changeTab(['mib','browser'],'browser')"></credentials>
|
<credentials :show-tab="showTab" v-if="showTab == 'credentials'" @changeShowTab="changeShowTab" @toFileTab="changeTab(['mib','file'],'file')" @toBrowserTab="changeTab(['mib','browser'],'browser')"></credentials>
|
||||||
|
|||||||
Reference in New Issue
Block a user