Merge branch 'dev-2.0' of https://git.mesalab.cn/nezha/nezha-fronted into dev-2.0

This commit is contained in:
@changcode
2021-05-11 16:46:32 +08:00
42 changed files with 347 additions and 245 deletions

View File

@@ -1,5 +1,5 @@
<template>
<div :class="['alert-labelUp',LRTriangle?'left-triangle':'right-triangle']" :style="{top:that.position.top+'px',left:that.position.left+'px','--mt': that.position.mt+'px',}" ref="alertLabels">
<div ref="alertLabels" :class="['alert-labelUp',LRTriangle?'left-triangle':'right-triangle']" :style="{top:that.position.top,left:that.position.left,'--mt': that.position.mt+'px',}">
<div class="alert-label-info" v-if="type==='asset'" v-loading="loading">
<div class="alert-label-box">
<div class="alert-label-title">ID</div>
@@ -204,12 +204,12 @@ export default {
const elHeight = self.type === 'asset' ? 318 : (self.type === 'project' ? 70 : 70)
if (position.top + elHeight > clientHeight) {
return {
left: `${position.left + position.width + 20}px`,
left: `${position.left + position.width + 120}px`,
top: `${position.top - elHeight - 20}px`
}
} else {
return {
left: `${position.left + position.width + 20}px`,
left: `${position.left + position.width + 120}px`,
top: `${position.top - 20}px`
}
}

View File

@@ -32,32 +32,49 @@
@selectionChange="selectionChange"
@showBottomBox="(target, item) => { $refs.dataList.showBottomBox(target, item) }"
@toDelete="toDeleteMessage"
@messageDetail="messageDetail"
></alertMessageTable>
</template>
<template v-slot:pagination>
<Pagination ref="Pagination" :pageObj="pageObj" :tableId="tableId" @pageNo='pageNo' @pageSize='pageSize'></Pagination>
</template>
</nz-bottom-data-list>
<el-dialog id="viewGraphDialog"
:modal-append-to-body='false'
:title="$t('overall.detail')"
:visible.sync="graphShow"
class="line-chart-block-modal nz-dialog endpoint-dialog"
width="90%"
@close="dialogClose">
<div slot="title">
{{$t("project.endpoint.dialogTitle")}}
<div class="float-right panel-calendar dialog-tool" style="display: flex">
<pick-time v-model="searchTime" :refresh-data-func="queryChartDate" :use-chart-unit="false" :use-refresh="false" style="height: 28px;" @unitChange="chartUnitChange"></pick-time>
</div>
</div>
<chart ref="messageChart" :unit="chartUnit" name="alertMessageChart"></chart>
</el-dialog>
</div>
</template>
<script>
import { getTime } from '@/components/common/js/tools'
import dataListMixin from '@/components/common/mixin/dataList'
import subDataListMixin from '@/components/common/mixin/subDataList'
import nzBottomDataList from '@/components/common/bottomBox/nzBottomDataList'
import axios from 'axios'
import bus from '@/libs/bus'
import alertMessageTable from '@/components/common/table/alert/alertMessageTable.vue'
import chart from '@/components/page/dashboard/overview/chart'
import { alertMessage as alertMessageConstant, fromRoute } from '@/components/common/js/constants'
// import {getTime} from "@/components/common/js/tools";
// import chartDataFormat from "@/components/charts/chartDataFormat";
export default {
name: 'alertMessageTab',
mixins: [dataListMixin, subDataListMixin],
components: {
nzBottomDataList,
alertMessageTable
alertMessageTable,
chart
},
props: {
from: String
@@ -161,8 +178,10 @@ export default {
},
queryChartDate () {
const $temp = this
const start = this.searchTime[0] ? this.searchTime[0] : getTime(-1, 'h')
const end = this.searchTime[1] ? this.searchTime[1] : getTime(0, 'h')
// const start = this.searchTime[0] ? this.searchTime[0] : getTime(-1, 'h')
// const end = this.searchTime[1] ? this.searchTime[1] : getTime(0, 'h')
const start = this.currentMsg.startAt
const end = this.currentMsg.endAt
this.searchTime = [start, end]
const timeDiff = (new Date(end).getTime() - new Date(start).getTime()) / 1000 / (24 * 60 * 60)
let step = '15s'
@@ -387,6 +406,13 @@ export default {
}
this.deleteBox.show = true
},
messageDetail (row) {
this.currentMsg = { ...row }
this.graphShow = true
this.$nextTick(() => {
this.queryChartDate()
})
},
deleteMessage () {
this.$refs.remarkForm.validate(valid => {
if (valid) {

View File

@@ -6,6 +6,7 @@
:search-msg="searchMsg"
:tabs="tabs"
:targetTab="targetTab"
:showPagination="false"
@changeTab="changeTab"
:customTool="true"
class="full-width-height"
@@ -221,4 +222,10 @@ export default {
width: 100%;
height: 100%;
}
/deep/ .nz-table2{
padding: 0 !important;
}
/deep/ .sub-container {
box-sizing: border-box;
}
</style>

View File

@@ -264,7 +264,8 @@ export const terminalLog = {
dangerCmd: ['chmod', 'chown', 'kill', 'rm', 'su', 'sudo'],
infoCmd: ['exit']
}
// 需要隐藏的内置label
export const sameLabels = ['instance', 'module', 'project', 'asset', 'endpoint', 'datacenter', 'datacenter_id', 'endpoint_id', 'module_id', 'nz_agent_id', 'project_id']
// 公共组件的跳转来源
export const fromRoute = {
panel: 'panel',

View File

@@ -55,7 +55,7 @@ const cn = {
createUser: '新增用户',
createRole: '新增角色',
createTemplate: '新增模板',
createPrometheusServer: '新增prometheus服务',
createPrometheusServer: '新增Agent',
createDatacenter: '新增数据中心',
active: '活跃',
type: '类别',
@@ -133,7 +133,10 @@ const cn = {
},
system: {
configTitle: '系统配置',
configTip: '请输入管理员的用户名和密码并设置Nezha WEB模块的安装信息如IP:port'
configTip: '请输入管理员的用户名和密码并设置Nezha WEB模块的安装信息如IP:port',
federation:'联邦',
federationEnable:'可用',
federationDisable:'不可用',
},
name: '数据库名称',
username: '用户名',
@@ -666,7 +669,7 @@ const cn = {
promServerList: 'Prometheus服务',
promId: 'Prometheus服务ID',
createProm: '新增Prometheus服务',
editProm: '修改Prometheus服务',
editProm: '修改Agent',
type: '类别',
checkTime: '检查时间',
dataCenter: '数据中心',
@@ -1174,7 +1177,8 @@ const cn = {
editEndpoint: '编辑 Endpoint',
createEndpoint: '新增Endpoint',
batchEndpoint: '批量 Endpoint',
endpointName: 'Endpoint name'
endpointName: 'Endpoint name',
name: '名称'
},
endpoint: {
createEndpoint: '新增Endpoint',

View File

@@ -60,7 +60,7 @@ const en = {
createAlertRule: 'New alert rule',
createUser: 'New user',
createRole: 'New role',
createPrometheusServer: 'New prometheus server',
createPrometheusServer: 'New agent',
createDatacenter: 'New Data center',
createCabinet: 'New cabinet',
createModel: 'New model',
@@ -109,6 +109,7 @@ const en = {
parent: 'Parent',
dc: 'Data center',
labels: 'Labels',
moreOption: 'More option',
silence: 'Silence'
},
pageSize: '/page',
@@ -140,7 +141,11 @@ const en = {
},
system: {
configTitle: 'System configuration',
configTip: 'Please enter username and password for administrator ,and set the Nezha WEB module install information,like IP:port'
configTip: 'Please enter username and password for administrator ,and set the Nezha WEB module install information,like IP:port',
federation:'Federation',
federationEnable:'Enable',
federationDisable:'Disable',
},
name: 'Database name',
username: 'Username',
@@ -671,9 +676,9 @@ const en = {
},
agent: {
// 侧滑框
promId: 'Prometheus server ID', // "Prometheus Server ID"
createProm: 'New prometheus server', // "新增Prometheus Server"
editProm: 'Edit prometheus server', // "修改Prometheus Server"
promId: 'Agent ID', // "Prometheus Server ID"
createProm: 'New agent', // "新增Prometheus Server"
editProm: 'Edit agent', // "修改Prometheus Server"
type: 'Type', // "类别"
checkTime: 'Check time',
dataCenter: 'Data center',
@@ -1161,7 +1166,7 @@ const en = {
endpointInfo: 'Endpoint information'
},
project: {
project: 'Project', // "系统"
project: 'Name', // "系统"
projectName: 'Project name', // "系统名称"
editProject: 'Edit project', // "编辑系统"
description: 'Description', // "描述"
@@ -1169,7 +1174,7 @@ const en = {
},
module: {
module: 'Module', // "组件"
moduleName: 'Module name', // "组件名称"
moduleName: 'Name', // "组件名称"
editModule: 'Edit module', // "编辑组件"
description: 'Description', // "描述"
createModule: 'New module', // "新增组件"
@@ -1191,6 +1196,7 @@ const en = {
createEndpoint: 'New endpoint',
batchEndpoint: 'Batch Endpoint',
endpointName: 'Endpoint name',
name: 'Name',
tip: {
defaultEndpointSet: 'Default endpoint settings', // "默认的Endpoint设置"
relation: 'Module associated Endpoint will configure the following ports/paths/parameters by default'// "组件关联的Endpoint将默认配置以下端口/路径/参数"

View File

@@ -15,7 +15,7 @@
line-height:28px;
padding-left:5px;
margin-left:0px;
margin-top: 0px !important;
margin-top: -3px !important;
text-align:left;
border-radius:2px;
min-width:80px;
@@ -57,6 +57,7 @@
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 4px;
}
.compare-box{
/*line-height: 50px;*/

View File

@@ -2,7 +2,7 @@
<div class="interval-refresh">
<time-picker v-if="showTimePicker" ref="timePicker" v-model="searchTime" :default-pick="defaultPick" :show-empty="showEmpty" class="time-picker margin-r-10" size="small" @change="dateChange"></time-picker>
<multipleTime ref="multipleTime" v-if="showMultiple" :stepSearchTime="searchTime" @change="dateChange(searchTime)" class="multiple-time"/>
<chart-unit v-model="unit" v-if="useChartUnit"></chart-unit>
<chart-unit v-model="unit" v-if="useChartUnit" style="margin-left: 10px"></chart-unit>
<div v-show="useRefresh" class="top-tool-btn-group margin-r-10">
<button :id="id+'-refresh'" class="top-tool-btn top-tool-btn--text" @click="refreshDataFunc">
<i class="global-active-color nz-icon nz-icon-refresh" style="font-size: 14px"></i>&nbsp;

View File

@@ -185,11 +185,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer">
<button v-cancel="{obj:endpoint,func:esc}" id="ep-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:endpoint,func:esc}" id="ep-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="ep-add">
<button @click="save" class="footer__btn" id="ep-add">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -2,7 +2,7 @@
<div v-clickoutside="{obj:editPromServer,func:clickOutside}" class="right-box right-box-prom">
<!-- begin--标题-->
<div class="right-box__header">
<div class="header__title">{{editPromServer.id ? ($t("config.agent.editProm") + " ID" + editPromServer.id) : $t("config.agent.createProm")}}</div>
<div class="header__title">{{editPromServer.id ? ($t("config.agent.editProm")) : $t("config.agent.createProm")}}</div>
<div class="header__operation">
<span v-cancel="{obj: editPromServer, func: esc}"><i class="nz-icon nz-icon-close"></i></span>
</div>
@@ -13,7 +13,7 @@
<div class="container__form">
<el-form ref="agentForm" :model="editPromServer" :rules="rules" label-position = "top" label-width="120px">
<!--DC-->
<el-form-item :label="$t('config.agent.name')" prop="name">
<el-form-item :label="$t('config.dc.dc')" prop="dc.name">
<div class="right-box-form-content">
<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">
<el-option v-for="item in dcData" :id="'prom-edit-dc-op-'+item.id" :key="item.id" :label="item.name" :value="item">
@@ -59,13 +59,13 @@
</div>
<!-- end--表单-->
<!--底部按钮-->
<div class="right-box-bottom-btns">
<div class="right-box__footer">
<button id="prom-esc" v-cancel="{obj:editPromServer,func:esc}"
class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button id="prom-save" :class="{'nz-btn-disabled':prevent_opt.save}"
:disabled="prevent_opt.save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" @click="save">
:disabled="prevent_opt.save" class="footer__btn" @click="save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -108,11 +108,11 @@
<!-- end--表单-->
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button id="alert-box-esc" v-cancel="{obj:editAlertRule,func:esc}" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button id="alert-box-esc" v-cancel="{obj:editAlertRule,func:esc}" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button id="alert-box-save" :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" @click="save">
<button id="alert-box-save" :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" class="footer__btn" @click="save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -97,13 +97,13 @@
<!-- end--表单-->
<!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer">
<div class="right-box__footer">
<button v-cancel="{obj:editAlertSilence,func:esc}" id="alert-box-esc"
class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save"
class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="alert-box-save">
class="footer__btn" id="alert-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>
@@ -225,6 +225,8 @@ export default {
}
const params = { ...this.editAlertSilence, matchers: JSON.stringify(this.editAlertSilence.matchers) }
if (valid) {
params.startAt = bus.timeFormate(new Date(this.timezoneToUtcTime(params.startAt)))
params.endAt = bus.timeFormate(new Date(this.timezoneToUtcTime(params.endAt)))
if (this.editAlertSilence.id) {
this.$put('/alert/silence', params).then(response => {
this.prevent_opt.save = false

View File

@@ -9,7 +9,7 @@
</button>
</div>
<div class="right-box-title">{{editAsset.id ? ($t("asset.editAsset") + " ID" + editAsset.id) : $t("asset.createAsset")}}</div>
<div class="right-box-title">{{editAsset.id ? ($t("asset.editAsset")) : $t("asset.createAsset")}}</div>
<div class="right-box-form-box">
<el-form ref="assetEditForm" :model="editAsset" label-width="120px" class="right-box-form right-box-form-left" :rules="rules" label-position = "top">
@@ -149,11 +149,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editAsset,func:esc}" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new" id="asset-edit-cancel">
<div class="right-box__footer">
<button v-cancel="{obj:editAsset,func:esc}" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="asset-edit-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="asset-edit-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -3,8 +3,7 @@
<div class="right-box right-box-asset" v-clickoutside="{obj:editAssetMeta,func:clickOutside}">
<!-- begin--标题-->
<div class="right-box__header">
<div class="header__title">{{editAssetMeta.id ? $t("config.assetLabel.editMeta") + " ID" + editAssetMeta.id :
$t("config.assetLabel.addMeta")}}
<div class="header__title">{{editAssetMeta.id ? $t("config.assetLabel.editMeta"): $t("config.assetLabel.addMeta")}}
</div>
<div class="header__operation">
<span v-cancel="{obj: editAssetMeta, func: esc}"><i class="nz-icon nz-icon-close"></i></span>
@@ -127,11 +126,11 @@
<!-- end--表单-->
<!-- begin--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editAssetMeta,func:esc}" id="editAssetMeta-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editAssetMeta,func:esc}" id="editAssetMeta-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="editAssetMeta-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="editAssetMeta-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -12,7 +12,7 @@
<!-- end--顶部按钮-->
<!-- begin--标题-->
<div class="right-box-title">{{editMetaGroup.id ? $t("config.assetMeta.editGroup") + " ID" + editMetaGroup.id :
<div class="right-box-title">{{editMetaGroup.id ? $t("config.assetMeta.editGroup") :
$t("config.assetMeta.addGroup")}}
</div>
<!-- end--标题-->
@@ -31,11 +31,11 @@
<!-- end--表单-->
<!-- begin--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editMetaGroup,func:esc}" id="editMetaGroup-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editMetaGroup,func:esc}" id="editMetaGroup-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="editMetaGroup-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="editMetaGroup-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -12,7 +12,7 @@
<!-- end--顶部按钮-->
<!-- begin--标题-->
<div class="right-box-title">{{editAssetState.id ? ($t("config.assetState.editAssetState") + " ID" + editAssetState.id) : $t("config.assetState.createAssetState")}}</div>
<div class="right-box-title">{{editAssetState.id ? ($t("config.assetState.editAssetState")) : $t("config.assetState.createAssetState")}}</div>
<!-- end--标题-->
<!-- begin--表单-->
@@ -48,12 +48,12 @@
</div>
<!-- end--表单-->
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new" id="asset-state-esc"
<div class="right-box__footer">
<button class="footer__btn footer__btn--light" id="asset-state-esc"
v-cancel="{obj: editAssetState, func: esc}">
<span>{{$t('overall.cancel')}}</span>
</button>
<button @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new"
<button @click="save" class="footer__btn"
id="asset-state-save"
>
<span>{{$t('overall.save')}}</span>

View File

@@ -242,11 +242,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editAsset,func:esc}" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new" id="asset-edit-cancel">
<div class="right-box__footer">
<button v-cancel="{obj:editAsset,func:esc}" class="footer__btn footer__btn--light" id="asset-edit-cancel">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="asset-edit-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="asset-edit-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -98,11 +98,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer">
<button v-cancel="{obj:endpoint,func:esc}" id="ep-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:endpoint,func:esc}" id="ep-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="ep-add">
<button @click="save" class="footer__btn" id="ep-add">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -10,7 +10,7 @@
<!-- end--顶部按钮-->
<!-- begin--标题-->
<div class="right-box-title">{{editCabinet.id ? $t("config.dc.editCabinet") + " ID: " + editCabinet.id : $t("overall.createCabinet")}}</div>
<div class="right-box-title">{{editCabinet.id ? $t("config.dc.editCabinet") : $t("overall.createCabinet")}}</div>
<!-- end--标题-->
<!-- begin--表单-->
@@ -32,11 +32,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editCabinet,func:esc}" id="cab-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editCabinet,func:esc}" id="cab-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="cab-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="cab-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -2,7 +2,7 @@
<div class="right-box right-box-dc" v-clickoutside="{obj:editDc,func:clickOutside}">
<!-- begin--标题-->
<div class="right-box__header">
<div class="header__title">{{editDc.id ? ($t("config.dc.editDc") + " ID" + editDc.id) : $t("config.dc.createDc")}}</div>
<div class="header__title">{{editDc.id ? ($t("config.dc.editDc")) : $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>
@@ -51,11 +51,11 @@
</div>
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editDc,func:esc}" id="dc-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editDc,func:esc}" id="dc-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="dc-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="dc-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -124,11 +124,11 @@
<!-- end--表单-->
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editEndpoint,func:esc}" id="ep-edit-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editEndpoint,func:esc}" id="ep-edit-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="ep-edit-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="ep-edit-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -4,7 +4,7 @@
<!-- begin--标题-->
<div class="right-box-title">
<span v-if="optionType === 'edit'">
{{ $t("project.module.editEndpoint")}} {{editEndpoint.id}}
{{ $t("project.module.editEndpoint")}}
</span>
<span v-if="optionType === 'batch'">
{{ $t("project.module.batchEndpoint")}}
@@ -23,7 +23,7 @@
<div class="right-box-form-box right-box__container" ref="scrollbar">
<el-form class="right-box-form right-box-form-left" :model="editEndpoint" label-position = "top" label-width="120px" :rules="rules" ref="moduleForm">
<!--name-->
<el-form-item :label='$t("project.module.endpointName")' prop="name" label-width="125px" v-if="optionType!=='batch'">
<el-form-item :label='$t("project.module.name")' prop="name" label-width="125px" v-if="optionType!=='batch'">
<el-input placeholder="" maxlength="64" show-word-limit v-model="editEndpoint.name" size="small" id="module-box-input-name"></el-input>
</el-form-item>
<!--project-->
@@ -244,11 +244,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer">
<button v-cancel="{obj:editEndpoint,func:esc}" id="module-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editEndpoint,func:esc}" id="module-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" v-has="'monitor_endpoint_edit'" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="module-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" v-has="'monitor_endpoint_edit'" class="footer__btn" id="module-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>
@@ -462,7 +462,7 @@ export default {
this.$nextTick(() => {
this.$refs.moduleForm.validate((valid) => {
if (valid) {
if (this.type === 'add') {
if (this.optionType === 'add') {
this.prevent_opt.save = true
if (this.editEndpoint.assetId) {
this.$emit('close', true, this.editEndpoint, false)
@@ -471,7 +471,7 @@ export default {
this.$emit('close', true, this.editEndpoint, true)
this.prevent_opt.save = false
}
} else if (this.type === 'edit') {
} else if (this.optionType === 'edit') {
if (this.editEndpoint.id) {
this.$put('monitor/endpoint', [params]).then(response => {
if (response.code === 200) {

View File

@@ -2,7 +2,7 @@
<div v-clickoutside="{obj:editExprTemp,func:clickOutside}" class="right-box right-box-alert-config">
<!-- begin--标题-->
<div class="right-box__header">
<div class="header__title">{{editExprTemp.id ? $t("config.exprTemp.edit") + " ID" + editExprTemp.id :
<div class="header__title">{{editExprTemp.id ? $t("config.exprTemp.edit"):
$t("config.exprTemp.create")}}
</div>
<div class="header__operation">
@@ -56,13 +56,13 @@
</div>
<!-- end--表单-->
<!--底部按钮-->
<div class="right-box-bottom-btns">
<div class="right-box__footer">
<button id="alert-box-esc" v-cancel="{obj:editExprTemp,func:esc}"
class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button id="alert-box-save" :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save"
class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" @click="save">
class="footer__btn" @click="save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -12,7 +12,7 @@
<!-- end--顶部按钮-->
<!-- begin--标题-->
<div class="right-box-title">{{editMenu.id ? ($t("config.menus.editMenu") + " ID" + editMenu.id) : $t("config.menus.createMenu")}}</div>
<div class="right-box-title">{{editMenu.id ? ($t("config.menus.editMenu")) : $t("config.menus.createMenu")}}</div>
<!-- end--标题-->
<!-- begin--表单-->
@@ -68,12 +68,12 @@
</div>
<!-- end--表单-->
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editMenu,func:esc}" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new"
<div class="right-box__footer">
<button v-cancel="{obj:editMenu,func:esc}" class="footer__btn footer__btn--light"
id="menus-esc">
<span>{{$t('overall.cancel')}}</span>
</button>
<button @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new"
<button @click="save" class="footer__btn"
id="menus-save">
<span>{{$t('overall.save')}}</span>
</button>

View File

@@ -2,7 +2,7 @@
<div class="right-box right-box-mib" v-clickoutside="{obj:editMib,func:clickOutside}" >
<!-- begin--标题-->
<div class="right-box__header">
<div class="header__title">{{editMib.id ? ($t("config.mib.editMib") + " ID" + editMib.id) : $t("config.mib.createMib")}}</div>
<div class="header__title">{{editMib.id ? ($t("config.mib.editMib")) : $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>
@@ -45,11 +45,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editMib,func:esc}" id="model-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editMib,func:esc}" id="model-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="model-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="model-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -10,7 +10,7 @@
<!-- end--顶部按钮-->
<!-- begin--标题-->
<div class="right-box-title">{{editModel.id ? ($t("config.model.editModel") + " ID" + editModel.id) : $t("config.model.createModel")}}</div>
<div class="right-box-title">{{editModel.id ? ($t("config.model.editModel")) : $t("config.model.createModel")}}</div>
<!-- end--标题-->
<!-- begin--表单-->
@@ -74,11 +74,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editModel,func:esc}" id="model-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editModel,func:esc}" id="model-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="model-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="model-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -17,7 +17,7 @@
<el-input placeholder="" maxlength="64" show-word-limit v-model="editModule.name" size="small" id="module-box-input-name"></el-input>
</el-form-item>
<!--project-->
<el-form-item :label='$t("project.project.project")' prop="projectId">
<el-form-item :label='$t("project.project.projectName")' prop="projectId">
<el-select value-key="id" popper-class="config-dropdown" v-model="editModule.projectId" placeholder="" size="small" id="module-box-input-project" :disabled="!!editModule.id">
<el-option :id="'module-project-'+item.id" v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
@@ -237,11 +237,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer">
<button v-cancel="{obj:editModule,func:esc}" id="module-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editModule,func:esc}" id="module-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" v-has="'monitor_module_add'" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="module-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" v-has="'monitor_module_add'" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="module-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -1,21 +1,12 @@
<template>
<transition name="right-box-580">
<div class="right-box right-box-panel z-top" v-if="rightBox.show" v-clickoutside="{obj:panel,func:clickos}">
<!-- begin--顶部按钮-->
<div class="right-box-top-btns right-box-form-delete">
<button @click="del(panel)" class="nz-btn nz-btn-size-normal nz-btn-size-alien nz-btn-min-width-82" type="button" v-has="'panel_delete'" v-if="panel.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--标题-->
<div class="right-box-title">{{rightBox.title}}</div>
<div class="right-box-title right-box__header">{{rightBox.title}}</div>
<!-- end--标题-->
<!-- begin--表单-->
<div class="right-box-form-box">
<div class="right-box-form-box right-box__container">
<el-form class="right-box-form right-box-form-left" label-width="120px" :model="panel" label-position = "top" ref="panelForm">
<el-form-item :label='$t("overall.name")' prop="name" :rules="{required: true, message: $t('validate.required'), trigger: 'blur'}">
<el-input placeholder="" maxlength="64" show-word-limit v-model="panel.name" size="small" id="panel-box-input-name"></el-input>
@@ -25,11 +16,11 @@
<!-- end--表单-->
<!-- begin--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:panel,func:esc}" id="panel-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:panel,func:esc}" id="panel-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="panel-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="panel-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -2,7 +2,7 @@
<div class="right-box right-box-project" v-clickoutside="{obj:editProject,func:clickOutside}">
<div class="right-box__header">
<!-- begin--标题-->
<div class="right-box-title">{{editProject.id ? $t("project.project.editProject") + " ID" + editProject.id : $t("overall.createProject")}}</div>
<div class="right-box-title">{{editProject.id ? $t("project.project.editProject") : $t("overall.createProject")}}</div>
<!-- end--标题-->
<div class="header__operation">
@@ -22,11 +22,11 @@
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer">
<button v-cancel="{obj:editProject,func:esc}" id="project-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editProject,func:esc}" id="project-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" v-has="'project_add'" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="project-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" v-has="'project_add'" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="project-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -12,7 +12,7 @@
<!-- end--顶部按钮-->
<!-- begin--标题-->
<div class="right-box-title">{{editRole.id ? ($t("config.roles.editRole") + " ID" + editRole.id) : $t("config.roles.createRole")}}</div>
<div class="right-box-title">{{editRole.id ? ($t("config.roles.editRole")) : $t("config.roles.createRole")}}</div>
<!-- end--标题-->
<!-- begin--表单-->
@@ -46,12 +46,12 @@
</div>
<!-- end--表单-->
<!--底部按钮-->
<div class="right-box-bottom-btns" v-if="!detail">
<button v-cancel="{obj:editRole,func:esc}" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new"
<div class="right-box__footer" v-if="!detail">
<button v-cancel="{obj:editRole,func:esc}" class="footer__btn footer__btn--light"
id="roles-esc">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new"
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn"
id="roles-save">
<span>{{$t('overall.save')}}</span>
</button>

View File

@@ -2,7 +2,7 @@
<div class="right-box right-box-credential" v-clickoutside="{obj:editCredential,func:clickOutside}">
<!-- begin--标题-->
<div class="right-box__header">
<div class="header__title">{{editCredential.id ? ($t("config.mib.credential.edit") + " ID" + editCredential.id) : $t("config.mib.credential.create")}}</div>
<div class="header__title">{{editCredential.id ? ($t("config.mib.credential.edit")) : $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>
@@ -71,11 +71,11 @@
</div>
</div>
<!--底部按钮-->
<div class="right-box-bottom-btns">
<button v-cancel="{obj:editCredential,func:esc}" id="credential-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
<div class="right-box__footer">
<button v-cancel="{obj:editCredential,func:esc}" id="credential-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span>
</button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" id="credential-box-save">
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" class="footer__btn" id="credential-box-save">
<span>{{$t('overall.save')}}</span>
</button>
</div>

View File

@@ -12,7 +12,7 @@
<!-- end--顶部按钮-->
<!-- begin--标题-->
<div class="right-box-title">{{editUser.id ? ($t("config.account.editAccount") + " ID" + editUser.id) : $t("config.account.createAccount")}}</div>
<div class="right-box-title">{{editUser.id ? ($t("config.account.editAccount")) : $t("config.account.createAccount")}}</div>
<!-- end--标题-->
<!-- begin--表单-->
@@ -75,14 +75,14 @@
</div>
<!-- end--表单-->
<!--底部按钮-->
<div class="right-box-bottom-btns">
<div class="right-box__footer">
<button id="account-esc" v-cancel="{obj:editUser,func:esc}"
class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new">
class="footer__btn">
<span>{{$t('overall.cancel')}}</span>
</button>
<button id="account-save" :class="{'nz-btn-disabled':prevent_opt.save}"
:disabled="prevent_opt.save"
class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" @click="save"
class="footer__btn" @click="save"
>
<span>{{$t('overall.save')}}</span>
</button>

View File

@@ -1444,7 +1444,7 @@ export default {
this.getAssetStateData()
}
if (this.$route.path === '/agent') {
this.getDcData()
// this.getDcData()
}
if (this.$route.path === '/model') {
this.getBrandData()

View File

@@ -128,7 +128,7 @@ import table from '@/components/common/mixin/table'
import nzAlertTag from '../../../page/alert/nzAlertTag'
import chartDataFormat from '../../../charts/chartDataFormat'
import alertRuleInfo from '../../alert/alertRuleInfo'
import alertLabel from '../../alert/alertLabel'
import alertLabel from '../../alert/alertLabel2'
import { calcDurationByStringTimeB } from '../../js/tools'
export default {
name: 'alertMessageTable',
@@ -260,9 +260,9 @@ export default {
delete labels[key]
}
}
Object.keys(labels).sort().forEach(key => {
/* Object.keys(labels).sort().forEach(key => {
result.push({ label: key, value: labels[key] })
})
}) */
return result
},
chartUnitChange: function (unit) {

View File

@@ -38,7 +38,7 @@
<el-tooltip :disabled="!scope.row.endAt" effect="light" placement="right">
<div slot="content">
{{$t('config.terminallog.endTime')}}<br/>
{{scope.row.endAt}}
{{utcTimeToTimezoneStr(scope.row.endAt)}}
</div>
<span>{{getDuration(scope.row)}}</span>
</el-tooltip>
@@ -69,13 +69,16 @@
</span>
</template>
<template v-else-if="item.prop === 'state'">
<span v-if="scope.row.state===1" class="silence-pending">pending</span>
<span v-if="scope.row.state===2" class="silence-active">active</span>
<span v-if="scope.row.state===1" class="silence-active">active</span>
<span v-if="scope.row.state===2" class="silence-pending">pending</span>
<span v-if="scope.row.state===3" class="silence-expired">expired</span>
</template>
<template v-else-if="item.prop === 'utime'">
{{utcTimeToTimezoneStr(scope.row[item.prop])}}
</template>
<template v-else-if="item.prop === 'startAt'">
{{utcTimeToTimezoneStr(scope.row[item.prop])}}
</template>
<span v-else-if="scope.row[item.prop]">{{scope.row[item.prop] || '-'}}</span>
<template v-else>-</template>
</template>

View File

@@ -3,7 +3,7 @@
<el-table
id="endpointTable"
ref="dataTable"
:data="tableData"
:data="currentTableData"
v-loading="loading"
:height="'100%'"
border
@@ -46,6 +46,9 @@
min-width="180">
</el-table-column>
</el-table>
<div class="query-page-option">
<Pagination ref="Pagination" :pageObj="pageObj" :tableId="tableId" @pageNo='pageNo' @pageSize='pageSize'></Pagination>
</div>
<el-dialog class="line-chart-block-modal nz-dialog endpoint-dialog"
:title="$t('project.endpoint.dialogTitle')"
:visible.sync="graphShow"
@@ -56,7 +59,7 @@
@close="dialogClose">
<div slot="title">
{{$t("project.endpoint.dialogTitle")}}
<div class="float-right panel-calendar dialog-tool" style="display: flex">
<div class="float-right panel-calendar dialog-tool" style="display: flex;margin-right: 30px">
<pick-time :refresh-data-func="queryChartDate" :use-refresh="false" v-model="searchTime" style="height: 28px;" @unitChange="chartUnitChange" id="endpoint-query-full-chart" :show-multiple="true" ref="pickTime"></pick-time>
<button @click="saveChart" class="nz-btn nz-btn-size-large nz-btn-style-normal-new" v-has="'panel_chart_add'" id="endpoint-query-full-chart-save">{{$t('dashboard.metric.saveChart')}}</button>
</div>
@@ -74,6 +77,7 @@ import chartBox from '@/components/page/dashboard/chartBox'
import axios from 'axios'
import bus from '../../../../libs/bus'
import chart from '@/components/page/dashboard/overview/chart'
import { sameLabels } from '@/components/common/js/constants'
export default {
name: 'endpointTable',
@@ -115,16 +119,23 @@ export default {
data () {
return {
tableData: [],
currentTableData: [],
batchDeleteObjs: [],
currentEndpoint: {},
sameLabels: ['instance', 'module', 'project', 'asset', 'endpoint', 'datacenter'],
sameLabels: sameLabels,
loading: false,
panelData: {},
graphShow: false,
chartUnit: 5,
rightBox: { show: false },
minusTime: 0,
searchTime: [new Date().setHours(new Date().getHours() - 1), new Date()]
searchTime: [new Date().setHours(new Date().getHours() - 1), new Date()],
tableId: 'endpointQueryTable',
pageObj: {
pageSize: 20,
pageNo: 1,
total: 0
}
}
},
methods: {
@@ -139,16 +150,18 @@ export default {
this.tableData = []
this.tableDataCopy = ''
setTimeout(() => {
this.$get("/prom/api/v1/query?query={endpoint='" + this.currentEndpoint.id + "'}&time=" + new Date(this.formatTime).getTime()).then(response => {
this.$get("/prom/api/v1/query?query={endpoint_id='" + this.currentEndpoint.id + "'}&time=" + this.$stringTimeParseToUnix(new Date(this.formatTime).getTime())).then(response => {
this.loading = false
if (response.status === 'success') {
const results = response.data.result
this.queryData = JSON.parse(JSON.stringify(results))
this.tableData = this.handlerTableData(results)
this.tableDataCopy = JSON.stringify(this.tableData)
this.pageObj.total = this.tableData.length
this.$nextTick(this.$refs.dataTable.doLayout())
if (!this.scrollbarWrap) {
this.$nextTick(() => {
this.handleCurrentChange()
// this.scrollbarWrap = this.$refs.dataTable.$refs.singleTable.bodyWrapper
// this.toTopBtnHandler(this.scrollbarWrap)
})
@@ -253,6 +266,8 @@ export default {
const element = temp.hideSameLabels ? item.simpleElement : item.element
return element.indexOf(this.queryExpression) !== -1
})
this.pageObj.pageNo = 1
this.handleCurrentChange()
},
dragend () {
this.$nextTick(() => {
@@ -448,7 +463,7 @@ export default {
this.$refs.endpointChart.endLoading()
}
setTimeout(() => {
this.$refs.endpointChart.resize()
// this.$refs.endpointChart.resize()
}, 100)
})
})
@@ -504,12 +519,30 @@ export default {
}
})
})
},
pageNo (val) {
this.pageObj.pageNo = val
this.handleCurrentChange()
},
pageSize (val) {
this.pageObj.pageSize = val
localStorage.setItem('nz-pageSize-' + localStorage.getItem('nz-username') + '-' + this.tableId, val)
this.handleCurrentChange()
},
handleCurrentChange () {
this.pageObj.total = this.tableData.length
this.currentTableData = this.tableData.slice(
(this.pageObj.pageNo - 1) * this.pageObj.pageSize,
this.pageObj.pageNo * this.pageObj.pageSize
)
}
},
computed: {
},
created () {
// this.getPanelData()
const pageSize = localStorage.getItem('nz-pageSize-' + localStorage.getItem('nz-username') + '-' + this.tableId)
this.pageObj.pageSize = pageSize || 20
}
}
</script>
@@ -523,4 +556,24 @@ export default {
padding-bottom: 0!important;
width: calc(100% - 40px)!important;
}
.query-page-option{
width: 100%;
position: absolute;
background: #fff;
bottom: -34px;
}
/deep/ .pagination{
padding-top: 0;
}
/deep/ .top-tool-btn--text{
background: #fff;
border-radius: 2px 0 0 2px;
outline: none;
height: 32px;
border: 1px solid #d8dce1;
border-right: none;
line-height: 30px;
margin-right: -5px;
padding: 0 5px;
}
</style>

View File

@@ -177,6 +177,7 @@
</transition>
<!--web-->
<el-dropdown>
<el-dropdown-menu></el-dropdown-menu>
<div id="header-open-cli" @click="cli">
</div>
</el-dropdown>
@@ -208,11 +209,11 @@
</div>
</template>
<script>
import DcBox from "@/components/common/rightBox/dcBox";
import AgentBox from '../../common/rightBox/agentBox';
import AssetBox from '../../common/rightBox/asset/assetBox';
import dataListMixin from '@/components/common/mixin/dataList';
import projectBox from '@/components/common/rightBox/projectBox';
import DcBox from '@/components/common/rightBox/dcBox'
import AgentBox from '../../common/rightBox/agentBox'
import AssetBox from '../../common/rightBox/asset/assetBox'
import dataListMixin from '@/components/common/mixin/dataList'
import projectBox from '@/components/common/rightBox/projectBox'
import moduleBox from '@/components/common/rightBox/moduleBox'
import addEndpointBox from '@/components/common/rightBox/addEndpointBox'
import alertRuleBox from '@/components/common/rightBox/alertRuleBox'
@@ -242,9 +243,9 @@ export default {
addEndpointBox,
alertRuleBox,
cabinetBox,
'export-excel': exportXLSX,
'export-excel': exportXLSX
},
mixins: [dataListMixin,table],
mixins: [dataListMixin, table],
computed: {
wgetUrl () {
return 'wget -qO- --header="Authorization:' + this.token + '" ' + this.ipAddr + '/agent/' + this.agentParam.dc + '/' + this.agentParam.type + '/install.sh | bash'
@@ -253,7 +254,7 @@ export default {
return 'curl -o- -H "Authorization:' + this.token + '" ' + this.ipAddr + '/agent/' + this.agentParam.dc + '/' + this.agentParam.type + '/install.sh | bash'
}
},
data() {
data () {
return {
// dc
userData: [],
@@ -285,7 +286,7 @@ export default {
agent2: agent2,
showAgentDownload: false,
// import
importBox: { show: false, title: this.$t('overall.importExcel') , type: 1},
importBox: { show: false, title: this.$t('overall.importExcel'), type: 1 },
importFile: null,
importFileList: [],
importResult: null,
@@ -452,11 +453,11 @@ export default {
param: {
url: '',
threshold: ''
},
}
};
}
}
},
mounted() {
mounted () {
this.getStateData()
this.getTypeTreeData()
this.getDcData()
@@ -465,68 +466,67 @@ export default {
},
methods: {
// Datacenter
addDatacenter() {
addDatacenter () {
this.rightBox.dc.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
addCabinet() {
addCabinet () {
this.rightBox.cabinet.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
// Angebt
addAgent() {
addAgent () {
this.rightBox.agents.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
DownloadAgent() {
this.$emit("update:show", false);
DownloadAgent () {
this.$emit('update:show', false)
this.toDownloadAgent()
},
// Asset
addAsset() {
addAsset () {
this.rightBox.asset.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
importAsset() {
importAsset () {
this.showImportBox(1)
this.$emit("update:show", false);
this.$emit('update:show', false)
},
webTerminal() {
webTerminal () {
this.cli()
this.$emit("update:show", false);
this.$emit('update:show', false)
},
// Monitor
addPeoject() {
addPeoject () {
this.rightBox.project.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
addModule() {
addModule () {
this.rightBox.module.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
addEndpoint() {
addEndpoint () {
this.rightBox.endpoint.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
importEndpoint() {
importEndpoint () {
this.showImportBox(1)
this.$emit("update:show", false);
this.$emit('update:show', false)
},
// Visualization
addPanel() {
addPanel () {
// this.rightBox.panel.show = true
this.rightBox.charts.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
addCharts() {
addCharts () {
this.rightBox.charts.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
// Alert
addAlertRule() {
console.log(id)
addAlertRule () {
this.rightBox.alert.show = true
this.$emit("update:show", false);
this.$emit('update:show', false)
},
cli () {
this.$store.commit('openConsole')
@@ -972,7 +972,7 @@ export default {
}
}
form.append('language', localStorage.getItem('nz-language') ? localStorage.getItem('nz-language') : 'en')
if (this.assetimportUrl){
if (this.assetimportUrl) {
this.$post(this.assetimportUrl, form, { 'Content-Type': 'multipart/form-data' }).then(response => {
if (response.code == 200 && response.msg == 'success') {
this.importResult = response.data
@@ -984,7 +984,7 @@ export default {
}
this.prevent_opt.import = false
})
}else if (this.endpointimportUrl){
} else if (this.endpointimportUrl) {
this.$post(this.endpointimportUrl, form, { 'Content-Type': 'multipart/form-data' }).then(response => {
if (response.code == 200 && response.msg == 'success') {
this.importResult = response.data
@@ -1069,7 +1069,7 @@ export default {
watch: {
}
};
}
</script>
<style lang="scss">
.el-dialog__body {

View File

@@ -106,12 +106,14 @@ import deleteButton from '@/components/common/deleteButton'
import nzDataList from '@/components/common/table/nzDataList'
import dataListMixin from '@/components/common/mixin/dataList'
import chartDataFormat from '@/components/charts/chartDataFormat'
import chart from '@/components/page/dashboard/overview/chart'
import { alertMessage as alertMessageConstant } from '@/components/common/js/constants'
export default {
name: 'alertList',
components: {
alertMessageTable,
pickTime,
chart,
nzDataList,
deleteButton
},
@@ -226,7 +228,10 @@ export default {
},
messageDetail (row) {
this.currentMsg = { ...row }
this.graphShow = true
this.$nextTick(() => {
this.queryChartDate()
})
},
queryMessage (alertMessage) {
if (!this.hasButton('alertMessage_view')) {
@@ -236,8 +241,10 @@ export default {
},
queryChartDate () {
const $temp = this
const start = this.searchTime[0] ? this.searchTime[0] : getTime(-1, 'h')
const end = this.searchTime[1] ? this.searchTime[1] : getTime(0, 'h')
// const start = this.searchTime[0] ? this.searchTime[0] : getTime(-1, 'h')
// const end = this.searchTime[1] ? this.searchTime[1] : getTime(0, 'h')
const start = this.currentMsg.startAt
const end = this.currentMsg.endAt
this.searchTime = [start, end]
const timeDiff = (new Date(end).getTime() - new Date(start).getTime()) / 1000 / (24 * 60 * 60)
let step = '15s'
@@ -260,8 +267,8 @@ export default {
axios.all(axiosArr).then(res => {
try {
res.forEach((response, promIndex) => {
if (response.status == 200) {
if (response.data.status == 'success') {
if (response.status === 200) {
if (response.data.status === 'success') {
const queryData = response.data.data.result[0]
if (queryData) {
const chartData = {

View File

@@ -147,6 +147,34 @@ export default {
this.importBox.show = false
this.deleteBox.show = false
},
getTableData (params) {
if (params && Object.keys(params).length > 0) {
for (const key in params) {
this.$set(this.searchLabel, key, params[key])
}
}
this.$set(this.searchLabel, 'pageNo', this.pageObj.pageNo)
this.$set(this.searchLabel, 'pageSize', this.pageObj.pageSize)
this.tools.loading = true
this.$get(this.url, { ...this.searchLabel, ...this.searchCheckBox }).then(response => {
this.tools.loading = false
if (response.code === 200) {
for (let i = 0; i < response.data.list.length; i++) {
response.data.list[i].status = response.data.list[i].status + ''
// response.data.list[i].startAt = bus.UTCTimeToConfigTimezone(response.data.list[i].startAt)
// response.data.list[i].endAt = bus.UTCTimeToConfigTimezone(response.data.list[i].endAt)
}
this.tableData = response.data.list
this.pageObj.total = response.data.total
if (!this.scrollbarWrap) {
this.$nextTick(() => {
this.scrollbarWrap = this.$refs.dataTable.$refs.dataTable.bodyWrapper
this.toTopBtnHandler(this.scrollbarWrap)
})
}
}
})
},
add () {
this.blackObject.startAt = bus.timeFormate(bus.getOffsetTimezoneData(), 'yyyy-MM-dd hh:mm:ss')
this.blackObject.endAt = bus.timeFormate(bus.getOffsetTimezoneData(1), 'yyyy-MM-dd hh:mm:ss')
@@ -158,7 +186,9 @@ export default {
if (response.code === 200) {
this.object = {
...response.data,
matchers: JSON.parse(response.data.matchers)
matchers: JSON.parse(response.data.matchers),
startAt: bus.UTCTimeToConfigTimezone(response.data.startAt),
endAt: bus.UTCTimeToConfigTimezone(response.data.endAt)
}
this.rightBox.show = true
}

View File

@@ -40,7 +40,7 @@
</template>
</nz-data-list>
<transition name="right-box">
<agent-box v-if="rightBox.show" :prom-server="object" @close="closeRightBox"></agent-box>
<agent-box v-if="rightBox.show" :agent="object" @close="closeRightBox"></agent-box>
</transition>
<el-dialog :title="$t('config.agent.agent.title')" :visible.sync="showAgentDownload" append-to-body class="nz-dialog agent-dialog" width="800px" @close="closeDialog">
<div v-if="showAgentDownload" class="agent-box">

View File

@@ -150,10 +150,10 @@
<el-form-item :label="$t('setup.alertPath')" prop="alertPath" key="sysalertPath" >
<el-input v-model="system.alertPath"></el-input>
</el-form-item>
<el-form-item :label="$t('setup.promentheusFederationEnabled')" prop="prometheusFederationEnabled" key="sysprometheusFederationEnabled" >
<el-select v-model="system.prometheusFederationEnabled" style="width: 100%" placeholder="Enable">
<el-option label="Enable" value="1"></el-option>
<el-option label="Close" value="0"></el-option>
<el-form-item :label="$t('setup.system.federation')" prop="prometheusFederationEnabled" key="sysprometheusFederationEnabled" >
<el-select v-model="system.prometheusFederationEnabled" style="width: 100%" >
<el-option :label="$t('setup.system.federationEnable')" :value="1"></el-option>
<el-option :label="$t('setup.system.federationDisable')" :value="0"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item :label="$t('setup.alertPrefix')" prop="alertPrefix" key="sysalertPrefix">
@@ -251,14 +251,13 @@ export default {
alertPrefix: '',
haMode: 1,
haVip: '',
prometheusFederationEnabled:'',
prometheusFederationEnabled:1,
},
sysRules: {
username: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
pin: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
alertPath: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
haVip: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
prometheusFederationEnabled: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }]
},
reloadTime: 5000,
reloadTimeout: null,

View File

@@ -291,6 +291,7 @@ export default {
this.dropDownVisible = false
this.$emit('change', value)
this.$forceUpdate()
this.cascaderValue = ''
},
metricKeyDown (val) {
if (this.required) {
@@ -431,18 +432,18 @@ export default {
getAllOptins (key, arr) {
switch (key) {
case 'asset':
this.$get('asset', { pageNo: 1, pageSize: -1 }).then(response => {
this.$get('asset/asset', { pageNo: 1, pageSize: -1 }).then(response => {
if (response.code == 200) {
const arr = []
response.data.list.forEach(asset => {
asset.name = asset.sn
const idcF = arr.find(idc => idc.id === asset.idc.id)
if (idcF) {
idcF.children.push(asset)
const dcF = arr.find(dc => dc.id === asset.dc.id)
if (dcF) {
dcF.children.push(asset)
} else {
const idc = { ...asset.idc }
idc.children = [asset]
arr.push(idc)
const dc = { ...asset.dc }
dc.children = [asset]
arr.push(dc)
}
})
this.assetOption = arr
@@ -450,56 +451,28 @@ export default {
})
break
case 'module':
this.$get('module', { pageNo: 1, pageSize: -1 }).then(response => {
this.$get('monitor/module/tree', { pageNo: 1, pageSize: -1 }).then(response => {
if (response.code == 200) {
const arr = []
response.data.list.forEach(module => {
const projectF = arr.find(project => project.id === module.project.id)
if (projectF) {
projectF.children.push(module)
} else {
const project = { ...module.project }
project.children = [module]
arr.push(project)
}
})
this.moduleOption = arr
this.moduleOption = response.data.list
}
})
break
case 'endpoint':
this.$get('endpoint', { pageNo: 1, pageSize: -1 }).then(response => {
this.$get('monitor/endpoint/tree', { pageNo: 1, pageSize: -1 }).then(response => {
if (response.code == 200) {
const arr = []
response.data.list.forEach(item => {
item.name = item.host
const projectF = arr.find(project => item.project.id === project.id)
if (projectF) {
const moduleF = projectF.children.find(module => module.id === item.module.id)
if (moduleF) {
moduleF.children.push(item)
} else {
projectF.children.push({ ...item.module, children: [item] })
}
} else {
const project = { ...item.project }
project.children = [{ ...item.module, children: [item] }]
arr.push(project)
}
})
this.endpointOption = arr
this.endpointOption = response.data.list
}
})
break
case 'datacenter':
this.$get('idc', { pageNo: 1, pageSize: -1 }).then(response => {
this.$get('dc', { pageNo: 1, pageSize: -1 }).then(response => {
if (response.code == 200) {
this.datacenterOption = response.data.list
}
})
break
case 'project':
this.$get('project', { pageNo: 1, pageSize: -1 }).then(response => {
this.$get('monitor/project', { pageNo: 1, pageSize: -1 }).then(response => {
if (response.code == 200) {
this.projectOption = response.data.list
}