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> <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-info" v-if="type==='asset'" v-loading="loading">
<div class="alert-label-box"> <div class="alert-label-box">
<div class="alert-label-title">ID</div> <div class="alert-label-title">ID</div>
@@ -204,12 +204,12 @@ export default {
const elHeight = self.type === 'asset' ? 318 : (self.type === 'project' ? 70 : 70) const elHeight = self.type === 'asset' ? 318 : (self.type === 'project' ? 70 : 70)
if (position.top + elHeight > clientHeight) { if (position.top + elHeight > clientHeight) {
return { return {
left: `${position.left + position.width + 20}px`, left: `${position.left + position.width + 120}px`,
top: `${position.top - elHeight - 20}px` top: `${position.top - elHeight - 20}px`
} }
} else { } else {
return { return {
left: `${position.left + position.width + 20}px`, left: `${position.left + position.width + 120}px`,
top: `${position.top - 20}px` top: `${position.top - 20}px`
} }
} }

View File

@@ -32,32 +32,49 @@
@selectionChange="selectionChange" @selectionChange="selectionChange"
@showBottomBox="(target, item) => { $refs.dataList.showBottomBox(target, item) }" @showBottomBox="(target, item) => { $refs.dataList.showBottomBox(target, item) }"
@toDelete="toDeleteMessage" @toDelete="toDeleteMessage"
@messageDetail="messageDetail"
></alertMessageTable> ></alertMessageTable>
</template> </template>
<template v-slot:pagination> <template v-slot:pagination>
<Pagination ref="Pagination" :pageObj="pageObj" :tableId="tableId" @pageNo='pageNo' @pageSize='pageSize'></Pagination> <Pagination ref="Pagination" :pageObj="pageObj" :tableId="tableId" @pageNo='pageNo' @pageSize='pageSize'></Pagination>
</template> </template>
</nz-bottom-data-list> </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> </div>
</template> </template>
<script> <script>
import { getTime } from '@/components/common/js/tools'
import dataListMixin from '@/components/common/mixin/dataList' import dataListMixin from '@/components/common/mixin/dataList'
import subDataListMixin from '@/components/common/mixin/subDataList' import subDataListMixin from '@/components/common/mixin/subDataList'
import nzBottomDataList from '@/components/common/bottomBox/nzBottomDataList' import nzBottomDataList from '@/components/common/bottomBox/nzBottomDataList'
import axios from 'axios' import axios from 'axios'
import bus from '@/libs/bus' import bus from '@/libs/bus'
import alertMessageTable from '@/components/common/table/alert/alertMessageTable.vue' 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 { alertMessage as alertMessageConstant, fromRoute } from '@/components/common/js/constants'
// import {getTime} from "@/components/common/js/tools";
// import chartDataFormat from "@/components/charts/chartDataFormat";
export default { export default {
name: 'alertMessageTab', name: 'alertMessageTab',
mixins: [dataListMixin, subDataListMixin], mixins: [dataListMixin, subDataListMixin],
components: { components: {
nzBottomDataList, nzBottomDataList,
alertMessageTable alertMessageTable,
chart
}, },
props: { props: {
from: String from: String
@@ -161,8 +178,10 @@ export default {
}, },
queryChartDate () { queryChartDate () {
const $temp = this const $temp = this
const start = this.searchTime[0] ? this.searchTime[0] : getTime(-1, 'h') // const start = this.searchTime[0] ? this.searchTime[0] : getTime(-1, 'h')
const end = this.searchTime[1] ? this.searchTime[1] : getTime(0, '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] this.searchTime = [start, end]
const timeDiff = (new Date(end).getTime() - new Date(start).getTime()) / 1000 / (24 * 60 * 60) const timeDiff = (new Date(end).getTime() - new Date(start).getTime()) / 1000 / (24 * 60 * 60)
let step = '15s' let step = '15s'
@@ -387,6 +406,13 @@ export default {
} }
this.deleteBox.show = true this.deleteBox.show = true
}, },
messageDetail (row) {
this.currentMsg = { ...row }
this.graphShow = true
this.$nextTick(() => {
this.queryChartDate()
})
},
deleteMessage () { deleteMessage () {
this.$refs.remarkForm.validate(valid => { this.$refs.remarkForm.validate(valid => {
if (valid) { if (valid) {

View File

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

View File

@@ -264,7 +264,8 @@ export const terminalLog = {
dangerCmd: ['chmod', 'chown', 'kill', 'rm', 'su', 'sudo'], dangerCmd: ['chmod', 'chown', 'kill', 'rm', 'su', 'sudo'],
infoCmd: ['exit'] 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 = { export const fromRoute = {
panel: 'panel', panel: 'panel',

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
<div class="interval-refresh"> <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> <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"/> <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"> <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"> <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; <i class="global-active-color nz-icon nz-icon-refresh" style="font-size: 14px"></i>&nbsp;

View File

@@ -185,11 +185,11 @@
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer"> <div class="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"> <button v-cancel="{obj:endpoint,func:esc}" id="ep-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span> <span>{{$t('overall.cancel')}}</span>
</button> </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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </div>

View File

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

View File

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

View File

@@ -97,13 +97,13 @@
<!-- end--表单--> <!-- 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" <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> <span>{{$t('overall.cancel')}}</span>
</button> </button>
<button :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" @click="save" <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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </div>
@@ -225,6 +225,8 @@ export default {
} }
const params = { ...this.editAlertSilence, matchers: JSON.stringify(this.editAlertSilence.matchers) } const params = { ...this.editAlertSilence, matchers: JSON.stringify(this.editAlertSilence.matchers) }
if (valid) { 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) { if (this.editAlertSilence.id) {
this.$put('/alert/silence', params).then(response => { this.$put('/alert/silence', params).then(response => {
this.prevent_opt.save = false this.prevent_opt.save = false

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -98,11 +98,11 @@
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer"> <div class="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"> <button v-cancel="{obj:endpoint,func:esc}" id="ep-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span> <span>{{$t('overall.cancel')}}</span>
</button> </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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </div>

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
<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--标题--> <!-- begin--标题-->
<div class="right-box__header"> <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")}} $t("config.exprTemp.create")}}
</div> </div>
<div class="header__operation"> <div class="header__operation">
@@ -56,13 +56,13 @@
</div> </div>
<!-- end--表单--> <!-- end--表单-->
<!--底部按钮--> <!--底部按钮-->
<div class="right-box-bottom-btns"> <div class="right-box__footer">
<button id="alert-box-esc" v-cancel="{obj:editExprTemp,func:esc}" <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> <span>{{$t('overall.cancel')}}</span>
</button> </button>
<button id="alert-box-save" :class="{'nz-btn-disabled':prevent_opt.save}" :disabled="prevent_opt.save" <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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </div>

View File

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

View File

@@ -2,7 +2,7 @@
<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--标题--> <!-- begin--标题-->
<div class="right-box__header"> <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"> <div class="header__operation">
<span v-cancel="{obj: editMib, func: esc}"><i class="nz-icon nz-icon-close"></i></span> <span v-cancel="{obj: editMib, func: esc}"><i class="nz-icon nz-icon-close"></i></span>
</div> </div>
@@ -23,7 +23,7 @@
collapse-tags collapse-tags
:placeholder="$t('config.mib.modelTip')" :placeholder="$t('config.mib.modelTip')"
size="small" size="small"
class="right-box__select" class="right-box__select"
popper-class="right-box-select-dropdown prevent-clickoutside" popper-class="right-box-select-dropdown prevent-clickoutside"
clearable></el-cascader> clearable></el-cascader>
</el-form-item> </el-form-item>
@@ -45,11 +45,11 @@
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="right-box-bottom-btns"> <div class="right-box__footer">
<button v-cancel="{obj:editMib,func:esc}" id="model-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new"> <button v-cancel="{obj:editMib,func:esc}" id="model-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span> <span>{{$t('overall.cancel')}}</span>
</button> </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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </div>

View File

@@ -10,7 +10,7 @@
<!-- end--顶部按钮--> <!-- end--顶部按钮-->
<!-- begin--标题--> <!-- 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--标题--> <!-- end--标题-->
<!-- begin--表单--> <!-- begin--表单-->
@@ -74,11 +74,11 @@
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="right-box-bottom-btns"> <div class="right-box__footer">
<button v-cancel="{obj:editModel,func:esc}" id="model-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new"> <button v-cancel="{obj:editModel,func:esc}" id="model-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span> <span>{{$t('overall.cancel')}}</span>
</button> </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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </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-input placeholder="" maxlength="64" show-word-limit v-model="editModule.name" size="small" id="module-box-input-name"></el-input>
</el-form-item> </el-form-item>
<!--project--> <!--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-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-option :id="'module-project-'+item.id" v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
@@ -237,11 +237,11 @@
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer"> <div class="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"> <button v-cancel="{obj:editModule,func:esc}" id="module-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span> <span>{{$t('overall.cancel')}}</span>
</button> </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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </div>

View File

@@ -1,21 +1,12 @@
<template> <template>
<transition name="right-box-580"> <transition name="right-box-580">
<div class="right-box right-box-panel z-top" v-if="rightBox.show" v-clickoutside="{obj:panel,func:clickos}"> <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--标题--> <!-- begin--标题-->
<div class="right-box-title">{{rightBox.title}}</div> <div class="right-box-title right-box__header">{{rightBox.title}}</div>
<!-- end--标题--> <!-- end--标题-->
<!-- begin--表单--> <!-- 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 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-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> <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--表单--> <!-- end--表单-->
<!-- begin--底部按钮--> <!-- begin--底部按钮-->
<div class="right-box-bottom-btns"> <div class="right-box__footer">
<button v-cancel="{obj:panel,func:esc}" id="panel-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new"> <button v-cancel="{obj:panel,func:esc}" id="panel-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span> <span>{{$t('overall.cancel')}}</span>
</button> </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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </div>

View File

@@ -2,7 +2,7 @@
<div class="right-box right-box-project" v-clickoutside="{obj:editProject,func:clickOutside}"> <div class="right-box right-box-project" v-clickoutside="{obj:editProject,func:clickOutside}">
<div class="right-box__header"> <div class="right-box__header">
<!-- begin--标题--> <!-- 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--标题--> <!-- end--标题-->
<div class="header__operation"> <div class="header__operation">
@@ -22,11 +22,11 @@
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="right-box-bottom-btns right-box__footer"> <div class="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"> <button v-cancel="{obj:editProject,func:esc}" id="project-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span> <span>{{$t('overall.cancel')}}</span>
</button> </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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </div>

View File

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

View File

@@ -2,7 +2,7 @@
<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--标题--> <!-- begin--标题-->
<div class="right-box__header"> <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"> <div class="header__operation">
<span v-cancel="{obj: editCredential, func: esc}"><i class="nz-icon nz-icon-close"></i></span> <span v-cancel="{obj: editCredential, func: esc}"><i class="nz-icon nz-icon-close"></i></span>
</div> </div>
@@ -71,11 +71,11 @@
</div> </div>
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="right-box-bottom-btns"> <div class="right-box__footer">
<button v-cancel="{obj:editCredential,func:esc}" id="credential-box-esc" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new"> <button v-cancel="{obj:editCredential,func:esc}" id="credential-box-esc" class="footer__btn footer__btn--light">
<span>{{$t('overall.cancel')}}</span> <span>{{$t('overall.cancel')}}</span>
</button> </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> <span>{{$t('overall.save')}}</span>
</button> </button>
</div> </div>

View File

@@ -12,7 +12,7 @@
<!-- end--顶部按钮--> <!-- end--顶部按钮-->
<!-- begin--标题--> <!-- 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--标题--> <!-- end--标题-->
<!-- begin--表单--> <!-- begin--表单-->
@@ -75,14 +75,14 @@
</div> </div>
<!-- end--表单--> <!-- end--表单-->
<!--底部按钮--> <!--底部按钮-->
<div class="right-box-bottom-btns"> <div class="right-box__footer">
<button id="account-esc" v-cancel="{obj:editUser,func:esc}" <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> <span>{{$t('overall.cancel')}}</span>
</button> </button>
<button id="account-save" :class="{'nz-btn-disabled':prevent_opt.save}" <button id="account-save" :class="{'nz-btn-disabled':prevent_opt.save}"
: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> <span>{{$t('overall.save')}}</span>
</button> </button>

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
<el-table <el-table
id="endpointTable" id="endpointTable"
ref="dataTable" ref="dataTable"
:data="tableData" :data="currentTableData"
v-loading="loading" v-loading="loading"
:height="'100%'" :height="'100%'"
border border
@@ -46,6 +46,9 @@
min-width="180"> min-width="180">
</el-table-column> </el-table-column>
</el-table> </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" <el-dialog class="line-chart-block-modal nz-dialog endpoint-dialog"
:title="$t('project.endpoint.dialogTitle')" :title="$t('project.endpoint.dialogTitle')"
:visible.sync="graphShow" :visible.sync="graphShow"
@@ -56,7 +59,7 @@
@close="dialogClose"> @close="dialogClose">
<div slot="title"> <div slot="title">
{{$t("project.endpoint.dialogTitle")}} {{$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> <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> <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> </div>
@@ -74,6 +77,7 @@ import chartBox from '@/components/page/dashboard/chartBox'
import axios from 'axios' import axios from 'axios'
import bus from '../../../../libs/bus' import bus from '../../../../libs/bus'
import chart from '@/components/page/dashboard/overview/chart' import chart from '@/components/page/dashboard/overview/chart'
import { sameLabels } from '@/components/common/js/constants'
export default { export default {
name: 'endpointTable', name: 'endpointTable',
@@ -115,16 +119,23 @@ export default {
data () { data () {
return { return {
tableData: [], tableData: [],
currentTableData: [],
batchDeleteObjs: [], batchDeleteObjs: [],
currentEndpoint: {}, currentEndpoint: {},
sameLabels: ['instance', 'module', 'project', 'asset', 'endpoint', 'datacenter'], sameLabels: sameLabels,
loading: false, loading: false,
panelData: {}, panelData: {},
graphShow: false, graphShow: false,
chartUnit: 5, chartUnit: 5,
rightBox: { show: false }, rightBox: { show: false },
minusTime: 0, 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: { methods: {
@@ -139,16 +150,18 @@ export default {
this.tableData = [] this.tableData = []
this.tableDataCopy = '' this.tableDataCopy = ''
setTimeout(() => { 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 this.loading = false
if (response.status === 'success') { if (response.status === 'success') {
const results = response.data.result const results = response.data.result
this.queryData = JSON.parse(JSON.stringify(results)) this.queryData = JSON.parse(JSON.stringify(results))
this.tableData = this.handlerTableData(results) this.tableData = this.handlerTableData(results)
this.tableDataCopy = JSON.stringify(this.tableData) this.tableDataCopy = JSON.stringify(this.tableData)
this.pageObj.total = this.tableData.length
this.$nextTick(this.$refs.dataTable.doLayout()) this.$nextTick(this.$refs.dataTable.doLayout())
if (!this.scrollbarWrap) { if (!this.scrollbarWrap) {
this.$nextTick(() => { this.$nextTick(() => {
this.handleCurrentChange()
// this.scrollbarWrap = this.$refs.dataTable.$refs.singleTable.bodyWrapper // this.scrollbarWrap = this.$refs.dataTable.$refs.singleTable.bodyWrapper
// this.toTopBtnHandler(this.scrollbarWrap) // this.toTopBtnHandler(this.scrollbarWrap)
}) })
@@ -253,6 +266,8 @@ export default {
const element = temp.hideSameLabels ? item.simpleElement : item.element const element = temp.hideSameLabels ? item.simpleElement : item.element
return element.indexOf(this.queryExpression) !== -1 return element.indexOf(this.queryExpression) !== -1
}) })
this.pageObj.pageNo = 1
this.handleCurrentChange()
}, },
dragend () { dragend () {
this.$nextTick(() => { this.$nextTick(() => {
@@ -448,7 +463,7 @@ export default {
this.$refs.endpointChart.endLoading() this.$refs.endpointChart.endLoading()
} }
setTimeout(() => { setTimeout(() => {
this.$refs.endpointChart.resize() // this.$refs.endpointChart.resize()
}, 100) }, 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: { computed: {
}, },
created () { created () {
// this.getPanelData() // this.getPanelData()
const pageSize = localStorage.getItem('nz-pageSize-' + localStorage.getItem('nz-username') + '-' + this.tableId)
this.pageObj.pageSize = pageSize || 20
} }
} }
</script> </script>
@@ -523,4 +556,24 @@ export default {
padding-bottom: 0!important; padding-bottom: 0!important;
width: calc(100% - 40px)!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> </style>

View File

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

View File

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

View File

@@ -147,6 +147,34 @@ export default {
this.importBox.show = false this.importBox.show = false
this.deleteBox.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 () { add () {
this.blackObject.startAt = bus.timeFormate(bus.getOffsetTimezoneData(), 'yyyy-MM-dd hh:mm:ss') 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') this.blackObject.endAt = bus.timeFormate(bus.getOffsetTimezoneData(1), 'yyyy-MM-dd hh:mm:ss')
@@ -158,7 +186,9 @@ export default {
if (response.code === 200) { if (response.code === 200) {
this.object = { this.object = {
...response.data, ...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 this.rightBox.show = true
} }

View File

@@ -40,7 +40,7 @@
</template> </template>
</nz-data-list> </nz-data-list>
<transition name="right-box"> <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> </transition>
<el-dialog :title="$t('config.agent.agent.title')" :visible.sync="showAgentDownload" append-to-body class="nz-dialog agent-dialog" width="800px" @close="closeDialog"> <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"> <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-form-item :label="$t('setup.alertPath')" prop="alertPath" key="sysalertPath" >
<el-input v-model="system.alertPath"></el-input> <el-input v-model="system.alertPath"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('setup.promentheusFederationEnabled')" prop="prometheusFederationEnabled" key="sysprometheusFederationEnabled" > <el-form-item :label="$t('setup.system.federation')" prop="prometheusFederationEnabled" key="sysprometheusFederationEnabled" >
<el-select v-model="system.prometheusFederationEnabled" style="width: 100%" placeholder="Enable"> <el-select v-model="system.prometheusFederationEnabled" style="width: 100%" >
<el-option label="Enable" value="1"></el-option> <el-option :label="$t('setup.system.federationEnable')" :value="1"></el-option>
<el-option label="Close" value="0"></el-option> <el-option :label="$t('setup.system.federationDisable')" :value="0"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item :label="$t('setup.alertPrefix')" prop="alertPrefix" key="sysalertPrefix"> <!-- <el-form-item :label="$t('setup.alertPrefix')" prop="alertPrefix" key="sysalertPrefix">
@@ -251,14 +251,13 @@ export default {
alertPrefix: '', alertPrefix: '',
haMode: 1, haMode: 1,
haVip: '', haVip: '',
prometheusFederationEnabled:'', prometheusFederationEnabled:1,
}, },
sysRules: { sysRules: {
username: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }], username: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
pin: [{ 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' }], alertPath: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
haVip: [{ 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, reloadTime: 5000,
reloadTimeout: null, reloadTimeout: null,
@@ -615,7 +614,7 @@ export default {
line-height: 46px; line-height: 46px;
/* padding-left: 20px !important; /* padding-left: 20px !important;
height: 46px !important; */ height: 46px !important; */
} }
/deep/ .el-step .el-step__main .el-step__title{ /deep/ .el-step .el-step__main .el-step__title{
padding: 0 0 0 20px ; padding: 0 0 0 20px ;
font-family: Roboto-Medium; font-family: Roboto-Medium;

View File

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