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

This commit is contained in:
zhangyu
2023-08-22 17:22:40 +08:00
23 changed files with 393 additions and 55 deletions

View File

@@ -96,25 +96,25 @@
background-color: $--color-primary !important;
}
.colorffa416 {
color: #ffa416;
color: #ffa416 !important;
}
.colorfa901c {
color: $--color-primary;
color: $--color-primary !important;
}
.colorec7f66 {
color: #ec7f66;
color: #ec7f66 !important;
}
.color535b64 {
color: #535b64;
color: #535b64 !important;
}
.color999999 {
color: #999999;
color: #999999 !important;
}
.color23bf9a {
color: #23bf9a;
color: #23bf9a !important;
}
.color969dea{
color: #969dea;
color: #969dea !important;
}
.bgFFECD9{
background: $--color-primary !important;

View File

@@ -64,6 +64,12 @@
height: 100%;
padding-bottom: 0;
}
.message-info-dashboard {
.nz-chart{
height: calc(100% - 55px);
padding-bottom: 0;
}
}
.alert-message-info-tab {
height: 61.8%;
flex: 1;
@@ -590,6 +596,11 @@
}
}
}
#viewGraphDialog {
.el-dialog.is-fullscreen {
overflow: hidden;
}
}

View File

@@ -202,4 +202,7 @@
display: inline-block;
}
}
.el-form-item__error {
padding-top: 0;
}
}

View File

@@ -10,7 +10,7 @@ function none (value, index) {
if (!numberWithEConvent(scientificNotationValue)) {
return scientificNotationValue
}
if (isNaN(value) || value=== null) {
if (isNaN(value) || value === null) {
return value
}
return keepDoubleNumber(value)
@@ -55,12 +55,19 @@ function localFormat (value, index) {
return result
}
function bits (value, index, type = 1, dot = 0) {
const num = value / 8
if (value < 8) {
return value + 'b'
}
if (num < 1024) {
return num + 'B'
}
if (type == 1) {
return asciiCompute(value, 1024, ['b', 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], 0)
return asciiCompute(num, 1024, ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], 0)
} else if (type == -1) {
return asciiCompute(value, 1024, ['b', 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], dot)
return asciiCompute(num, 1024, ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], dot)
} else {
return asciiCompute(value, 1024, ['b', 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], 2)
return asciiCompute(num, 1024, ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], 2)
}
}
function bytes (value, index, type = 1, dot) {

View File

@@ -47,7 +47,7 @@
<span v-show="chartInfo.param.collapse" class="collapse-content">({{chartData ? chartData.length : 0}} charts)</span>
</div>
<div class="temp"></div>
<div class="chart-header__tools" v-if="chartInfo.type !== 'endpointInfo' && chartInfo.type !== 'assetInfo' && !isExportHtml">
<div class="chart-header__tools" v-if="chartInfo.type !== 'endpointInfo' && chartInfo.type !== 'assetInfo' && !isExportHtml && showTool">
<span v-if="chartInfo.param.link" :title="$t('overall.link')" class="chart-header__tool" @click="openUrl">
<i class="nz-icon nz-icon-more-app tool__icon"></i>
</span>
@@ -80,13 +80,13 @@
<i class="nz-icon nz-icon-edit" style="font-size: 16px;"></i>
<span>{{$t('overall.edit')}}</span>
</li>
<li v-has="'main_delete'" class="el-dropdown-menu__item" @click="removeChart">
<i class="nz-icon nz-icon-delete" style="font-size: 16px;"></i>
<span>{{$t('overall.delete')}}</span>
</li>
<li v-has="'main_add'" class="el-dropdown-menu__item" @click="duplicate">
<i class="el-icon-copy-document" style="font-size: 16px;"></i>
<span>{{$t('overall.duplicate')}}</span>
</li>
<li v-has="'main_delete'" class="el-dropdown-menu__item" @click="removeChart">
<i class="nz-icon nz-icon-delete" style="font-size: 16px;"></i>
<span>{{$t('overall.delete')}}</span>
</li>
<li v-if="from !== this.$CONSTANTS.fromRoute.chartTemp && chartInfo.pid" v-has="'main_edit'" class="el-dropdown-menu__item" @click="sync">
<i class="nz-icon nz-icon-sync" style="font-size: 16px;"></i>

View File

@@ -6,7 +6,7 @@
<alert-message-info-detail :info-data="infoData"/>
</div>
<div v-else-if="item.key === 'dashboard' && activeName === 'dashboard'" class="alert-message-info-dashboard">
<dashboard :temp-id="infoData.alertRule.dashboardId" :showImport="false" :showName="false" :url-type="'dashboard'" :time="timeRange" :from="fromRoute.dashboard"></dashboard>
<dashboard :temp-id="infoData.alertRule.dashboardId" :showImport="false" :showName="false" :url-type="'dashboard'" :time="timeRange" class="message-info-dashboard" :from="fromRoute.dashboard"></dashboard>
</div>
<div v-else-if="(activeName === item.key) && infoData[item.key]" class="no-position-alert-label">
<!-- <searchItemInfo :obj="findData(item.key)" :severityData="severityData" :fa-loading="false"></searchItemInfo>-->

View File

@@ -0,0 +1,223 @@
<template>
<div
:class="calcHeight(alertLabelData.position, alertLabelData)"
style="position: relative"
class="alert-label__border"
ref="alertLabels"
>
<div class="alert-label-header-title">
<span style="margin-right: 5px"><i class="nz-icon" :class="statusClass(alertLabelData.status)" style="font-size: 16px"/></span>
<div class="alert-label-header-name">
{{getRemoteText(alertLabelData)}}
</div>
</div>
<div
class="alert-label-info"
v-my-loading="loading"
>
<div class="alert-label-box">
<div class="alert-label-title">ID</div>
<div class="alert-label-value">
{{ alertLabelData && alertLabelData.id ? alertLabelData.id : "--" }}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('config.terminallog.SessionID')}}</div>
<div class="alert-label-value">
{{ alertLabelData && alertLabelData.uuid ? alertLabelData.uuid.substring(0, 8).toUpperCase(): "--" }}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('config.terminallog.sourceUser')}}</div>
<div class="alert-label-value">
{{ alertLabelData && alertLabelData.username ? alertLabelData.username: "--" }}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('ping.sourceIp')}}</div>
<div class="alert-label-value">
{{ alertLabelData && alertLabelData.remoteAddr ? alertLabelData.remoteAddr: "--" }}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('config.terminallog.loginUser')}}</div>
<div class="alert-label-value">
{{ alertLabelData && alertLabelData.loginUser ? alertLabelData.loginUser: "--" }}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('config.terminallog.loginHost')}}</div>
<div class="alert-label-value">
{{ alertLabelData && alertLabelData.host ? alertLabelData.host: "--" }}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('config.terminallog.remote')}}</div>
<div class="alert-label-value">
{{getRemoteText(alertLabelData)}}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('webshell.protocol')}}</div>
<div class="alert-label-value">
{{ alertLabelData && alertLabelData.protocol ? alertLabelData.protocol: "--" }}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('overall.startTime')}}</div>
<div class="alert-label-value">
{{utcTimeToTimezoneStr(alertLabelData.startTime)}}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('config.terminallog.duration')}}</div>
<div class="alert-label-value">
{{getDuration(alertLabelData)}}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('config.terminallog.authtype')}}</div>
<div class="alert-label-value">
<span v-if="alertLabelData.authType == 1">{{$t('login.pin')}}</span>
<span v-else-if="alertLabelData.authType == 2">{{$t('config.terminallog.key')}}</span>
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('terminal.sftp')}}</div>
<div class="alert-label-value">
{{ alertLabelData && alertLabelData.sftpNum ? alertLabelData.sftpNum: 0 }}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('config.terminallog.cmd.cmd')}}</div>
<div class="alert-label-value">
{{ alertLabelData && alertLabelData.cmdNum ? alertLabelData.cmdNum: 0 }}
</div>
</div>
<div class="alert-label-box">
<div class="alert-label-title">{{$t('overall.state')}}</div>
<div class="alert-label-value">
<span><i class="nz-icon" :class="statusClass(alertLabelData.status)" style="font-size: 14px"/> {{getStatusText(alertLabelData.status)}}</span>
</div>
</div>
</div>
</div>
</template>
<script>
import trendMixin from './trendMixins'
import { calcDurationByStringTimeB } from '@/components/common/js/tools'
import { terminalLog as terminalLogStatus } from '@/components/common/js/constants'
export default {
name: 'alertLabel',
mixins: [trendMixin],
props: {
alertLabelData: {},
detailList: {
type: Boolean,
default: false
}
},
data () {
return {
loading: true,
heightList: 0,
boxWidth: 0
}
},
watch: {
alertLabelData: {
immediate: true,
deep: true,
handler (n) {
this.init()
}
},
LRTriangle: {
immediate: true,
deep: true,
handler (n) {}
}
},
computed: {
calcHeight () {
const self = this
return function (position) {
const clientHeight =
document.body.clientHeight < document.documentElement.clientHeight
? document.body.clientHeight
: document.documentElement.clientHeight
const elHeight =
self.type === 'asset' ? 318 : self.type === 'project' ? 70 : 70
if (position.top + elHeight > clientHeight) {
return 'alert-labelUp'
} else {
return 'alert-label'
}
}
}
},
methods: {
init () {
this.loading = false
console.log(this.alertLabelData)
},
getRemoteText (record) {
return `${record.loginUser}@${record.host}:${record.port}`
},
selectIcon (type) {
switch (type) {
case 'asset':
return 'nz-icon-overview-project'
case 'dc':
return 'nz-icon-Datacenter2'
case 'project':
return 'nz-icon-project'
case 'module':
return 'nz-icon-overview-module'
case 'endpoint':
return 'nz-icon-overview-endpoint'
case 'alertrule':
return 'nz-icon-Alertrule'
}
return 'nz-icon-module5'
},
statusClass (status) {
switch (Number(status)) {
case 0:
return 'nz-icon-connecting color23bf9a'
case 1:
return 'nz-icon-failed colorffa416'
case 2:
return 'nz-icon-over color999999'
case 3:
return 'nz-icon-stop colorec7f66'
case 4:
return 'nz-icon-unknown-error color535b64'
}
},
getDuration (record) {
if (record.endTime) {
return calcDurationByStringTimeB(record.startTime, record.endTime)
}
return ''
},
getStatusText (status) {
const self = this
return self.$t(terminalLogStatus.status[status])
}
},
mounted () {
if (this.$refs.alertLabels) {
this.heightList = this.$refs.alertLabels.getBoundingClientRect().height
this.boxWidth = this.$refs.alertLabels.getBoundingClientRect().width
} else {
this.heightList = 0
this.boxWidth = 0
}
},
beforeDestroy () {}
}
</script>
<style>
</style>

View File

@@ -6,8 +6,8 @@
</div>
<div class="top-tool-right" v-if="!customTool">
<div v-if="layout.indexOf('searchInput') > -1" class="top-tool-search margin-r-20">
<search-input v-if="targetTab!== 'alertMessageTab' && searchInputShow" :searchMsg="searchMsg" :position="'bottom' + targetTab + obj.id" @search="search" :targetTab="targetTab"></search-input>
<search-box v-if="targetTab == 'alertMessageTab'" :from="from" :position="'bottom' + targetTab + obj.id" :targetTab="targetTab" :searchMsg="searchMsg" @search="search"></search-box>
<search-input v-if="!showSearchBox && searchInputShow " :searchMsg="searchMsg" :position="'bottom' + targetTab + obj.id" @search="search" :targetTab="targetTab"></search-input>
<search-box v-if="showSearchBox" :from="from" :position="'bottom' + targetTab + obj.id" :targetTab="targetTab" :searchMsg="searchMsg" @search="search"></search-box>
</div>
<slot name="top-tool-right"></slot>
<button v-if="layout.indexOf('elementSet') > -1" id="account-column-setting" class="top-tool-btn margin-r-20"
@@ -132,6 +132,10 @@ export default {
},
showDeleteTableRel () {
return this.$store.getters.getShowDeleteTableRel
},
showSearchBox () {
const flag = (this.targetTab === 'alertMessageTab' || this.targetTab === 'moduleAlertMessage' || this.targetTab === 'endpointAlertMessage' || this.targetTab === 'alertRuleAlertMessage')
return flag
}
},
data () {

View File

@@ -292,7 +292,7 @@ export default {
sameLabels: ['instance', 'module', 'project', 'asset', 'endpoint', 'datacenter'],
legend: [],
searchTime: [],
searchTimeHeader: [bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setHours(new Date(bus.computeTimezone(new Date().getTime())).getHours() - 24 * 7)), bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())))],
searchTimeHeader: [bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setHours(new Date(bus.computeTimezone(new Date().getTime())).getHours() - 24 * 7)), bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime()))), '7d'],
searchTimeSelect: bus.getTimezontDateRange(),
currentMsg: {},
chartUnit: 5,
@@ -313,7 +313,7 @@ export default {
if (this.from === fromRoute.alertSilence) {
this.searchMsg = this.searchMsgSilence
}
this.renderDefaultParams()
this.$route.query.bottomSelectArr && this.renderDefaultParams()
},
methods: {
renderDefaultParams () {

View File

@@ -20,10 +20,12 @@
<li
v-for="(item,index) in tableData"
:key="index"
class="detail-row"
class="detail-row"
:id="'globalSearch' + item.id"
:class="item.id === detailViewRightObj.id ? 'selected' : ''"
@click="detailViewRightShow(item)"
@mouseenter="labelHover(item, 'other', true, false, $event)"
@mouseleave="labelHover(item, 'other', false, false,)"
>
<div class="detail-row-info" :title="getRemoteText(item)">
<div class="asset-manageIp" :title="getRemoteText(item)">
@@ -41,6 +43,26 @@
</div>
</li>
</ul>
<nzTooltip
v-if="alertLabelShow"
:id="alertLabelId"
:that="alertLabelObj"
:detailList="true"
:type="alertLabelType"
@tipHover='tipHover'
ref="nzTooltip"
class="data-column__"
style="padding: 0;border: none !important;"
>
<div style="word-break: break-all">
<div name="default">
<terminalLogInfo
:alertLabelData="alertLabelObj"
:detailList="false"
></terminalLogInfo>
</div>
</div>
</nzTooltip>
</div>
</template>
@@ -50,11 +72,16 @@ import detailViewLeftMixin from '@/components/common/mixin/detailViewLeftMixin'
import alertLabel from '@/components/common/alert/alertLabel'
import { terminalLog } from '@/components/common/js/constants'
import { calcDurationByStringTimeB } from '@/components/common/js/tools'
import alertLabelMixin from '@/components/common/mixin/alertLabelMixin'
import terminalLogInfo from '@/components/common/alert/terminalLogInfo'
import nzTooltip from '@/components/common/alert/nzTooltip'
export default {
name: 'terminalLogDetail',
mixins: [detailViewLeftMixin],
mixins: [detailViewLeftMixin, alertLabelMixin],
components: {
alertLabel
alertLabel,
nzTooltip,
terminalLogInfo
},
computed: {
getStatusText () {
@@ -153,16 +180,6 @@ export default {
}
},
methods: {
// label 鼠标划入
labelHover (item, type, loading, e) {
if (e) {
const dom = e.currentTarget
const position = dom.getBoundingClientRect()
this.$set(item, 'position', position)
}
this.$set(item, 'loading', loading)
// this.$set(this.tableData,index,item);// 调用父组件
}
}
}
</script>

View File

@@ -107,7 +107,7 @@ import deleteButton from '@/components/common/deleteButton'
import diagnosisTab from '@/components/common/diagnosisTab'
import configSync from '@/components/common/configSync'
export default {
name: 'nzDataList',
name: 'nzDetailView',
components: {
detailViewRight,
panelChart,
@@ -181,6 +181,7 @@ export default {
return {
fromRoute: fromRoute,
/* 二级页面相关 */
api: '',
bottomBox: {
object: {},
mainResizeShow: true, // dom高度改变时是否展示|隐藏

View File

@@ -64,6 +64,7 @@ export default {
case 'recordRule':
case 'response':
case 'params':
case 'other':
return false
default: return true
}

View File

@@ -298,7 +298,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item style="margin-top: -15px;">
<el-form-item style="margin-top: -5px;">
<el-time-picker
style="width: calc(50% - 5px);display: inline-block"
:value-format="'HH:mm'"

View File

@@ -152,8 +152,8 @@
</div>
<el-dropdown-menu slot="dropdown" class="right-box-select-top right-public-box-dropdown-top">
<el-dropdown-item v-if="!scope.row.buildIn" v-has="'alertRule_edit'" :command="['edit', scope.row]"><i class="nz-icon nz-icon-edit"></i><span class="operation-dropdown-text">{{$t('overall.edit')}}</span></el-dropdown-item>
<el-dropdown-item v-if="!scope.row.buildIn" v-has="'alertRule_delete'" :command="['delete-rel', scope.row, {forceDeleteShow:false, single:true, deleteTitle:'alert.alertRule',from:'alertRule'}]"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-if="!scope.row.buildIn" v-has="'alertRule_edit'" :command="['copy', scope.row]"><i class="nz-icon nz-icon-override"></i><span class="operation-dropdown-text">{{$t('overall.duplicate')}}</span></el-dropdown-item>
<el-dropdown-item v-if="!scope.row.buildIn" v-has="'alertRule_delete'" :command="['delete-rel', scope.row, {forceDeleteShow:false, single:true, deleteTitle:'alert.alertRule',from:'alertRule'}]"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'alertSilence_add'" :command="['fastSilence', scope.row, 'alertRule']"><i class="nz-icon nz-icon-fast-silence"></i><span class="operation-dropdown-text">{{$t('overall.silenceAlert')}}</span></el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

View File

@@ -65,17 +65,17 @@
<div v-else-if="scope.row[item.prop] === 0">Disabled</div>
</div>
<div v-else-if=" item.prop === 'type' ">
<div v-if="scope.row[item.prop].toUpperCase() == 'TEXT'"><i class="nz-icon nz-icon-text"></i>&nbsp;&nbsp;TEXT</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'MULTITEXT'"><i class="nz-icon nz-icon-multitext"></i>&nbsp;&nbsp;MULTITEXT</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'TEXTAREA'"><i class="nz-icon nz-icon-textarea"></i>&nbsp;&nbsp;TEXTAREA</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'RADIO'"><i class="nz-icon nz-icon-radio"></i>&nbsp;&nbsp;RADI0</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'CHECKBOX'"><i class="nz-icon nz-icon-checkbox"></i>&nbsp;&nbsp;CHECKBOX</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'SELECT'"><i class="nz-icon nz-icon-xialaxuanze"></i>&nbsp;&nbsp;SELECT</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'INTEGER'"><i class="nz-icon nz-icon-integer"></i>&nbsp;&nbsp;INTEGER</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'DOUBLE'"><i class="nz-icon nz-icon-double"></i>&nbsp;&nbsp;DOUBLE</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'DATETIME'"><i class="nz-icon nz-icon-dingshishijian"></i>&nbsp;&nbsp;DATETIME</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'EMAIL'"><i class="nz-icon nz-icon-email"></i>&nbsp;&nbsp;EMAIL</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'PASSWORD'"><i class="nz-icon nz-icon-password"></i>&nbsp;&nbsp;PASSWORD</div>
<div v-if="scope.row[item.prop].toUpperCase() == 'TEXT'"><i class="nz-icon nz-icon-text"></i>&nbsp;&nbsp;{{typeData[0].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'MULTITEXT'"><i class="nz-icon nz-icon-multitext"></i>&nbsp;&nbsp;{{typeData[1].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'TEXTAREA'"><i class="nz-icon nz-icon-textarea"></i>&nbsp;&nbsp;{{typeData[1].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'RADIO'"><i class="nz-icon nz-icon-radio"></i>&nbsp;&nbsp;{{typeData[2].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'CHECKBOX'"><i class="nz-icon nz-icon-checkbox"></i>&nbsp;&nbsp;{{typeData[3].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'SELECT'"><i class="nz-icon nz-icon-xialaxuanze"></i>&nbsp;&nbsp;{{typeData[4].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'INTEGER'"><i class="nz-icon nz-icon-integer"></i>&nbsp;&nbsp;{{typeData[5].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'DOUBLE'"><i class="nz-icon nz-icon-double"></i>&nbsp;&nbsp;{{typeData[6].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'PASSWORD'"><i class="nz-icon nz-icon-password"></i>&nbsp;&nbsp;{{typeData[7].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'DATETIME'"><i class="nz-icon nz-icon-dingshishijian"></i>&nbsp;&nbsp;{{typeData[8].name}}</div>
<div v-else-if="scope.row[item.prop].toUpperCase() == 'EMAIL'"><i class="nz-icon nz-icon-email"></i>&nbsp;&nbsp;{{typeData[9].name}}</div>
</div>
<span v-else-if="scope.row[item.prop]">{{scope.row[item.prop] || '-'}}</span>
<template v-else>-</template>
@@ -177,7 +177,75 @@ export default {
minWidth: 200,
show: true
}
]
],
typeData: [
{
icon: 'nz-icon nz-icon-text',
disabled: true,
value: 'TEXT',
name: this.$t('config.assetLabel.text')
},
// {
// icon: 'nz-icon nz-icon-multitext',
// disabled: true,
// value: 'MULTITEXT',
// name: this.$t('config.assetLabel.multitext')
// },
{
icon: 'nz-icon nz-icon-textarea',
disabled: true,
value: 'TEXTAREA',
name: this.$t('config.assetLabel.textarea')
},
{
icon: 'nz-icon nz-icon-radio',
disabled: true,
value: 'RADIO',
name: this.$t('config.assetLabel.radio')
},
{
icon: 'nz-icon nz-icon-checkbox',
disabled: true,
value: 'CHECKBOX',
name: this.$t('config.assetLabel.checkbox')
},
{
icon: 'nz-icon nz-icon-xialaxuanze',
disabled: true,
value: 'SELECT',
name: this.$t('config.assetLabel.select')
},
{
icon: 'nz-icon nz-icon-integer',
disabled: true,
value: 'INTEGER',
name: this.$t('config.assetLabel.integer')
},
{
icon: 'nz-icon nz-icon-double',
disabled: true,
value: 'DOUBLE',
name: this.$t('config.assetLabel.double')
},
{
icon: 'nz-icon nz-icon-password',
disabled: true,
value: 'PASSWORD',
name: this.$t('login.pin')
},
{
icon: 'nz-icon nz-icon-dingshishijian',
disabled: true,
value: 'DATETIME',
name: this.$t('config.assetLabel.datetime')
},
{
icon: 'nz-icon nz-icon-email',
disabled: true,
value: 'EMAIL',
name: this.$t('config.assetLabel.email')
}
],
}
},
methods: {

View File

@@ -165,9 +165,9 @@
</div>
<el-dropdown-menu slot="dropdown" class="right-box-select-top right-public-box-dropdown-top">
<el-dropdown-item v-if="!assetTab" v-has="'asset_edit'" :command="['edit', scope.row]"><i class="nz-icon nz-icon-edit"></i><span class="operation-dropdown-text">{{$t('overall.edit')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'asset_connect'" :command="['cli', scope.row]" :disabled="!scope.row.authUsername"><i class="nz-icon nz-icon-cli"></i><span class="operation-dropdown-text">{{$t('config.system.terminal.terminal')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'asset_add'" :command="['duplicate', scope.row, ]"><i class="nz-icon nz-icon-override"></i><span class="operation-dropdown-text">{{$t('overall.duplicate')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'asset_delete'" :command="['delete-rel', scope.row, {forceDeleteShow:true, single:true,from:'asset'}]"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'asset_connect'" :command="['cli', scope.row]" :disabled="!scope.row.authUsername"><i class="nz-icon nz-icon-cli"></i><span class="operation-dropdown-text">{{$t('config.system.terminal.terminal')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'alertSilence_add'" :command="['fastSilence', scope.row, 'asset']"><i class="nz-icon nz-icon-fast-silence"></i><span class="operation-dropdown-text">{{$t('overall.silenceAlert')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'asset_add'" :command="['topology', scope.row, 'asset']"><i class="nz-icon nz-icon-Topology"></i><span class="operation-dropdown-text">{{$t('overall.topology')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'asset_add'" :command="['diagnosis', scope.row,{from:'asset'}]"><i class="nz-icon nz-icon-diagnosis"></i><span class="operation-dropdown-text">{{$t('overall.diagnosis')}}</span></el-dropdown-item>

View File

@@ -65,8 +65,8 @@
</div>
<el-dropdown-menu slot="dropdown" class="right-box-select-top right-public-box-dropdown-top">
<el-dropdown-item v-has="'dashboard_temp_edit'" :command="['edit', scope.row]"><i class="nz-icon nz-icon-edit"></i><span class="operation-dropdown-text">{{$t('overall.edit')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'dashboard_temp_delete'" :command="['delete-rel', scope.row, {forceDeleteShow:false, single:true,from:'dashboardTemp'}]"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'dashboard_temp_add'" :command="['copy', scope.row]"><i class="nz-icon nz-icon-override"></i><span class="operation-dropdown-text">{{$t('overall.duplicate')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'dashboard_temp_delete'" :command="['delete-rel', scope.row, {forceDeleteShow:false, single:true,from:'dashboardTemp'}]"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'dashboard_temp_edit'" :command="['sync', scope.row]"><i class="nz-icon nz-icon-sync"></i><span class="operation-dropdown-text">{{$t('overall.syncChart')}}</span></el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

View File

@@ -182,8 +182,8 @@
<el-dropdown-menu slot="dropdown" class="right-box-select-top right-public-box-dropdown-top">
<!-- <el-dropdown-item v-if="!endpointTab" :command="['endpointQuery', scope.row]"><i class="nz-icon nz-icon-search"></i><span class="operation-dropdown-text">{{$t('overall.query')}}</span></el-dropdown-item>-->
<el-dropdown-item v-if="!endpointTab" v-has="'monitor_endpoint_edit'" :command="['edit', scope.row]"><i class="nz-icon nz-icon-edit"></i><span class="operation-dropdown-text">{{$t('overall.edit')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'monitor_endpoint_delete'" :command="['delete-rel', scope.row, {forceDeleteShow:false, single:true,from:'endpoint'}]"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'monitor_endpoint_edit'" :command="['copy', scope.row, 'project']"><i class="nz-icon nz-icon-override"></i><span class="operation-dropdown-text">{{$t('overall.duplicate')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'monitor_endpoint_delete'" :command="['delete-rel', scope.row, {forceDeleteShow:false, single:true,from:'endpoint'}]"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'alertSilence_add'" :command="['fastSilence', scope.row, 'endpoint']"><i class="nz-icon nz-icon-fast-silence"></i><span class="operation-dropdown-text">{{$t('overall.silenceAlert')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'asset_add'" :command="['topology', scope.row, 'endpoint']"><i class="nz-icon nz-icon-Topology"></i><span class="operation-dropdown-text">{{$t('overall.topology')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'monitor_endpoint_add'" :command="['diagnosis', scope.row,{from:'endpoint'}]"><i class="nz-icon nz-icon-diagnosis"></i><span class="operation-dropdown-text">{{$t('overall.diagnosis')}}</span></el-dropdown-item>

View File

@@ -102,8 +102,8 @@
</div>
<el-dropdown-menu slot="dropdown" class="right-box-select-top right-public-box-dropdown-top">
<el-dropdown-item v-has="'monitor_module_edit'" :command="['edit', scope.row]"><i class="nz-icon nz-icon-edit"></i><span class="operation-dropdown-text">{{$t('overall.edit')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'monitor_module_delete'" :command="['delete-rel', scope.row, {forceDeleteShow:true, single:true,from:'module'}]"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'monitor_module_edit'" :command="['copy', scope.row, 'module']"><i class="nz-icon nz-icon-override"></i><span class="operation-dropdown-text">{{$t('overall.duplicate')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'monitor_module_delete'" :command="['delete-rel', scope.row, {forceDeleteShow:true, single:true,from:'module'}]"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'main_edit'" :command="['sync', scope.row]"><i class="nz-icon nz-icon-sync"></i><span class="operation-dropdown-text">{{$t('overall.syncChart')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'alertSilence_add'" :command="['fastSilence', scope.row, 'module']"><i class="nz-icon nz-icon-fast-silence"></i><span class="operation-dropdown-text">{{$t('overall.silenceAlert')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'asset_add'" :command="['topology', scope.row, 'module']"><i class="nz-icon nz-icon-Topology"></i><span class="operation-dropdown-text">{{$t('overall.topology')}}</span></el-dropdown-item>

View File

@@ -89,8 +89,8 @@
</div>
<el-dropdown-menu slot="dropdown" class="right-box-select-top right-public-box-dropdown-top">
<el-dropdown-item :command="['edit', scope.row]" v-has="'project_edit'"><i class="nz-icon nz-icon-edit"></i><span class="operation-dropdown-text">{{$t('overall.edit')}}</span></el-dropdown-item>
<el-dropdown-item :command="['delete-rel', scope.row, {forceDeleteShow:true, single:true,from:'project'}]" v-has="'project_delete'"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'project_edit'" :command="['copy', scope.row, 'project']"><i class="nz-icon nz-icon-override"></i><span class="operation-dropdown-text">{{$t('overall.duplicate')}}</span></el-dropdown-item>
<el-dropdown-item :command="['delete-rel', scope.row, {forceDeleteShow:true, single:true,from:'project'}]" v-has="'project_delete'"><i class="nz-icon nz-icon-delete"></i><span class="operation-dropdown-text">{{$t('overall.delete')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'alertSilence_add'" :command="['fastSilence', scope.row, 'project']"><i class="nz-icon nz-icon-fast-silence"></i><span class="operation-dropdown-text">{{$t('overall.silenceAlert')}}</span></el-dropdown-item>
<el-dropdown-item v-has="'asset_add'" :command="['topology', scope.row, 'project']"><i class="nz-icon nz-icon-Topology"></i><span class="operation-dropdown-text">{{$t('overall.topology')}}</span></el-dropdown-item>
</el-dropdown-menu>

View File

@@ -232,7 +232,7 @@ export default {
chartDatas: [],
sameLabels: ['instance', 'module', 'project', 'asset', 'endpoint', 'datacenter'],
legend: [],
searchTime: [bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setHours(new Date(bus.computeTimezone(new Date().getTime())).getHours() - 24 * 30)), bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime()))), '7d'],
searchTime: [bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setHours(new Date(bus.computeTimezone(new Date().getTime())).getHours() - 24 * 7)), bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime()))), '7d'],
searchTimeDialog: [],
searchTimeSelect: bus.getTimezontDateRange(),
currentMsg: {},

View File

@@ -285,6 +285,7 @@ export default {
this.$post('/sys/license/upload', form).then(res => {
if (res.code == 200) {
this.licenseGetStatus()
this.$message.success(this.$t('overall.result.success'))
} else {
this.$message.error(res.msg)
}

View File

@@ -3953,6 +3953,8 @@ export default {
} else {
if (response.error) {
this.$refs['promql-' + promqlIndex][0].setError(response.error)
} else if(response.msg) {
this.$refs['promql-' + promqlIndex][0].setError(response.msg)
} else {
this.$refs['promql-' + promqlIndex][0].setError(response)
}