diff --git a/nezha-fronted/src/assets/stylus/main.scss b/nezha-fronted/src/assets/stylus/main.scss index 949a52caf..1ef024e7a 100644 --- a/nezha-fronted/src/assets/stylus/main.scss +++ b/nezha-fronted/src/assets/stylus/main.scss @@ -2373,15 +2373,26 @@ li{ } .right-box-form .nz-icon-minus-medium{ padding: 2px 6px; - background: rgba(236,127,102,.1); + background-color: rgba(236,127,102,.1); border-radius: 2px; cursor: pointer; } -.right-box-form .form-row-item .nz-icon-minus-position{ +.nz-icon-copy { + padding: 2px 6px; + color: $global-text-color-active; + background-color: #FDF5E9; + border-radius: 2px; + cursor: pointer; +} +.nz-icon-minus-position{ + display: inline-flex; + flex-direction: column; position: absolute; + right: -40px; top: 50%; - right: -55px; - transform: translate(-50%,-50%); + transform: translateY(-50%); + height: 70px; + justify-content: space-around; } .right-box-form>.el-form-item.half-form-item-other{ display: inline-block; diff --git a/nezha-fronted/src/components/common/js/tools.js b/nezha-fronted/src/components/common/js/tools.js index dad0b1f85..3813df98e 100644 --- a/nezha-fronted/src/components/common/js/tools.js +++ b/nezha-fronted/src/components/common/js/tools.js @@ -464,7 +464,6 @@ export const tableSet = { //是否需要排序 sortableShow(prop,from){ switch(prop){ - case 'id': case 'alertRule': case 'severity': case 'startAt': @@ -504,7 +503,13 @@ export const tableSet = { case 'alertNum': return'custom'; case 'state': - if( from === 'operationlog'){ + if( from === 'operationlog' ){ + return false + }else{ + return'custom' + } + case 'id': + if( from === 'alertSilence' ){ return false }else{ return'custom' diff --git a/nezha-fronted/src/components/common/language/cn.js b/nezha-fronted/src/components/common/language/cn.js index 8d88e7dd6..784fd149d 100644 --- a/nezha-fronted/src/components/common/language/cn.js +++ b/nezha-fronted/src/components/common/language/cn.js @@ -923,7 +923,12 @@ const cn = { matcher:'Matcher', reason:'原因', selectTime:'请选择时间', - selectMather:'必填项' + selectMather:'必填项', + datacenter:'数据中心', + project:'项目', + module:'模块', + endpoint:'endpoint', + asset:'资产', }, P1Rule:'P1: 万分紧急,可导致业务瘫痪的告警', P2Rule:'P2: 急需处理,但不影响业务的告警', diff --git a/nezha-fronted/src/components/common/language/en.js b/nezha-fronted/src/components/common/language/en.js index b92ef109f..62eaae402 100644 --- a/nezha-fronted/src/components/common/language/en.js +++ b/nezha-fronted/src/components/common/language/en.js @@ -928,7 +928,13 @@ const en = { matcher:'Matcher', reason:'Reason', selectTime:'Please select time', - selectMather:'Required' + selectMather:'Required', + datacenter:'datacenter', + project:'project', + module:'module', + endpoint:'endpoint', + asset:'asset', + }, P1Rule:'P1: Critical, alarm that can cause business paralysis', P2Rule:'P2: Major, alarm that do not affect the business', diff --git a/nezha-fronted/src/components/common/project/L5/CanvasProps.vue b/nezha-fronted/src/components/common/project/L5/CanvasProps.vue index 1b389ba29..0ba81dd9d 100644 --- a/nezha-fronted/src/components/common/project/L5/CanvasProps.vue +++ b/nezha-fronted/src/components/common/project/L5/CanvasProps.vue @@ -71,9 +71,14 @@ - - - +
+ + + + + + +
@@ -1564,6 +1569,17 @@ }); } }, + copyExpression(index) { + this.selection.pen.data.expressArr.push(this.selection.pen.data.expressArr[index]); + this.selection.pen.data.legends.push(this.selection.pen.data.legends[index]); + this.$nextTick(() => { + this.expressions.forEach((ex, index) => { + if (ex) { + this.$refs[`promql-${index}`][0].metricChange(ex); + } + }); + }); + }, valueMappingAdd(){ if(this.selection.pen.data.valueMappingSort==='desc'){ this.selection.pen.data.valueMapping.push({ @@ -1835,8 +1851,12 @@ width: calc(100% - 120px); padding: 20px 20px 20px 0; } - - .form-row-item .nz-icon-minus-position { + .form-row-item .nz-icon-minus-position .nz-icon-minus-medium { + background: rgba(236, 127, 102, 0.1); + padding: 2px 6px; + color: #EC7F66; + } + /*.form-row-item .nz-icon-minus-position { position: absolute; top: 50%; right: -55px; @@ -1849,7 +1869,7 @@ .nz-icon-minus { color: #EC7F66; } - } + }*/ .tooltip-box { padding-left: 10px; diff --git a/nezha-fronted/src/components/common/rightBox/alertSilenceBox.vue b/nezha-fronted/src/components/common/rightBox/alertSilenceBox.vue index ab6c02b75..d75da0e8a 100644 --- a/nezha-fronted/src/components/common/rightBox/alertSilenceBox.vue +++ b/nezha-fronted/src/components/common/rightBox/alertSilenceBox.vue @@ -232,7 +232,7 @@ } }); }else{ - this.$post('/alert/silence',params).then(response=>{ + this.$post('alert/silence',params).then(response=>{ this.prevent_opt.save=false; if(response.code===200){ this.$message({duration:1000,type:'success',message:this.$t("tip.saveSuccess")}); @@ -273,7 +273,7 @@ }); }, getRuleList(){ - this.$get('/alert/rule',{pageNo:1,pageSize:-1}).then(response=>{ + this.$get('alert/rule',{pageNo:1,pageSize:-1}).then(response=>{ if(response.code==200){ this.ruleList=response.data.list; } @@ -333,7 +333,7 @@ this.editAlertSilence.linkId=linkId?linkId:''; this.editAlertSilence.name=''; if(val==='datacenter'){ - this.$get('/idc',{pageNo:1,pageSize:-1}).then(response=>{ + this.$get('idc',{pageNo:1,pageSize:-1}).then(response=>{ if(response.code==200){ firstArr=response.data.list; if(linkId){ @@ -347,7 +347,7 @@ } if(val==='asset'){ - this.$get('/asset?pageNo=1&pageSize=-1').then(res=>{ + this.$get('asset?pageNo=1&pageSize=-1').then(res=>{ if(res.code==200){ let arr=[]; res.data.list.forEach(asset=>{ @@ -372,7 +372,7 @@ } if(val==='project'){ - this.$get('/project',{pageNo:1,pageSize:-1}).then(response=>{ + this.$get('project',{pageNo:1,pageSize:-1}).then(response=>{ if(response.code==200){ firstArr=response.data.list; if(linkId){ @@ -387,7 +387,7 @@ if(val==='module'){ - this.$get('/module?pageNo=1&pageSize=-1').then(res=>{ + this.$get('module?pageNo=1&pageSize=-1').then(res=>{ if(res.code==200){ let arr=[]; res.data.list.forEach(module=>{ @@ -411,7 +411,7 @@ } if(val==='endpoint'){ - this.$get('/endpoint?pageNo=1&pageSize=-1').then(res=>{ + this.$get('endpoint?pageNo=1&pageSize=-1').then(res=>{ if(res.code=200){ let arr=[]; res.data.list.forEach(item=>{ diff --git a/nezha-fronted/src/components/page/alert/silence.vue b/nezha-fronted/src/components/page/alert/silence.vue index dc7315183..798464d69 100644 --- a/nezha-fronted/src/components/page/alert/silence.vue +++ b/nezha-fronted/src/components/page/alert/silence.vue @@ -453,7 +453,7 @@ cancelButtonText:this.$t("tip.no"), type:'warning' }).then(()=>{ - this.$delete("/alert/silence?ids="+row.id).then(response=>{ + this.$delete("alert/silence?ids="+row.id).then(response=>{ this.prevent_opt.save=false; if(response.code===200){ this.$message({type:'success',message:this.$t("tip.deleteSuccess")}); @@ -477,7 +477,7 @@ cancelButtonText:this.$t("tip.no"), type:'warning' }).then(()=>{ - this.$delete("/alert/silence?ids="+row.id).then(response=>{ + this.$delete("alert/silence?ids="+row.id).then(response=>{ this.prevent_opt.save=false; if(response.code===200){ this.$message({type:'success',message:this.$t("tip.deleteSuccess")}); diff --git a/nezha-fronted/src/components/page/dashboard/chartBox.vue b/nezha-fronted/src/components/page/dashboard/chartBox.vue index 31e1daeb5..ddd7b1209 100644 --- a/nezha-fronted/src/components/page/dashboard/chartBox.vue +++ b/nezha-fronted/src/components/page/dashboard/chartBox.vue @@ -323,20 +323,25 @@ > --> - - {{$t('dashboard.panel.chartForm.legend')}}  - -
{{$t('dashboard.panel.chartForm.legendTip')}}
- -
-
- - - + + {{$t('dashboard.panel.chartForm.legend')}}  + +
{{$t('dashboard.panel.chartForm.legendTip')}}
+ +
+
+ + +
- - - +
+ + + + + + +
@@ -739,6 +744,20 @@ }); } }, + copyExpression(index) { + this.expressions.push(this.expressions[index]); + this.legends.push(this.legends[index]); + this.promqlKeys.push(getUUID()); + this.elementIds.push(""); + this.promqlCount++; + this.$nextTick(() => { + this.expressions.forEach((ex, index) => { + if (ex) { + this.$refs[`promql-${index}`][0].metricChange(ex); + } + }); + }); + }, save() { this.$refs['chartForm'].validate((valid) => { if (valid) {