diff --git a/nezha-fronted/src/components/charts/chart-alert-list.vue b/nezha-fronted/src/components/charts/chart-alert-list.vue index 82a5bbc26..8a80f8ea5 100644 --- a/nezha-fronted/src/components/charts/chart-alert-list.vue +++ b/nezha-fronted/src/components/charts/chart-alert-list.vue @@ -374,13 +374,14 @@ export default { }); this.deleteBox.ids = ids.join(","); }, - deleteMessage(deleltebox) { + deleteMessage(deleltebox,cb) { this.$put("alert/message", deleltebox).then(res => { if (res.code === 200) { this.$message({duration: 2000, type: 'success', message: this.$t("tip.deleteSuccess")}); this.deleteBox.show = false; this.deleteBox.ids=""; this.getAlertList(); + cb(); } else { this.$message.error(res.msg); } @@ -564,7 +565,7 @@ export default { } this.requestIndex+=1; item.current=current; - if(this.requestIndex===this.tableData.length){ + if(this.requestIndex===this.storedTableData.length){ this.$set(item, "current", current); this.requestIndex=0; } diff --git a/nezha-fronted/src/components/common/alert/alertMessageTable.vue b/nezha-fronted/src/components/common/alert/alertMessageTable.vue index a96da04df..05f8db554 100644 --- a/nezha-fronted/src/components/common/alert/alertMessageTable.vue +++ b/nezha-fronted/src/components/common/alert/alertMessageTable.vue @@ -405,95 +405,97 @@ }else{ step='30m'; } - this.$refs.messageChart.startLoading(); - let axiosArr=[]; - let paramStr = JSON.stringify(this.promQueryParamConvert(this.currentMsg)); - axiosArr.push(axios.get("/prom/api/v1/query_range?query="+paramStr.substring(1, paramStr.length-1).replace(/\+/g, "%2B").replace(/ /g, "%20").replace(/\\/g, "")+"&start="+this.$stringTimeParseToUnix(start)+"&end="+this.$stringTimeParseToUnix(end)+"&step="+step)); - this.legend = []; - this.chartDatas = []; - axios.all(axiosArr).then(res =>{ - try { - res.forEach((response, promIndex) => { - if (response.status == 200) { - if (response.data.status == 'success') { - let queryData = response.data.data.result[0]; - if (queryData) { - let chartData = { - type: "line", - symbol: 'none', //去掉点 - smooth: 0.2, //曲线变平滑 - name: '', - lineStyle: { - width: 1, - opacity: 0.9 - }, - markLine: { - silent: true, - symbol: ['circle', 'circle'], - label: { - distance: this.computeDistance(chartDataFormat.getUnit(this.currentMsg.alertRule.unit ? this.currentMsg.alertRule.unit : 2).compute(this.currentMsg.alertRule.threshold)), - formatter: function (params) { - return chartDataFormat.getUnit($temp.currentMsg.alertRule.unit ? $temp.currentMsg.alertRule.unit : 2).compute(params.value) - } - }, - lineStyle: { - color:'#d64f40', - width:2, - type:'dotted' - }, - data: [{ - yAxis: Number(this.currentMsg.alertRule.threshold) - }, ] - }, - markArea:{ - itemStyle:{ - color:'#d64f40', - opacity:0.1 - }, - data:[this.returnMarkArea()] - } - }; - if(this.currentMsg.alertRule.operator=='=='||this.currentMsg.alertRule.operator=='!='){ - delete chartData.markArea; - } - chartData.name += "{"; - alias += "{"; - Object.keys(queryData.metric).forEach((item, index) => { - let label = item; - let value = queryData.metric[label]; - chartData.name += label + "='" + value + "',"; - }); - chartData.name = chartData.name.charAt(chartData.name.length - 1) == "," ? chartData.name.substr(0, chartData.name.length - 1) : chartData.name; - chartData.name += "}"; - let alias = chartData.name; - let legend = { - name: chartData.name, - alias: alias, - isGray: false - } - this.legend.push(legend); - chartData.data = queryData.values.map((dpsItem, dpsIndex) => { - return [bus.computeTimezone(dpsItem[0]) * 1000, parseFloat(dpsItem[1]).toFixed(2)]; - }); - this.chartDatas.push(chartData); - } - } else { - this.$message.error(response.data.error) - console.error(response.data) - } - } - }); - this.$nextTick(() => { - this.$refs.messageChart.setRandomColors(this.chartDatas.length); - this.$refs.messageChart.setLegend(this.legend); - this.$refs.messageChart.setSeries(this.chartDatas); - this.$refs.messageChart.endLoading(); - }); - } catch(err) { - this.$message.error(err); - this.$refs.messageChart.endLoading(); - } - }) + if(this.$refs.messageChart){ + this.$refs.messageChart.startLoading(); + let axiosArr=[]; + let paramStr = JSON.stringify(this.promQueryParamConvert(this.currentMsg)); + axiosArr.push(axios.get("/prom/api/v1/query_range?query="+paramStr.substring(1, paramStr.length-1).replace(/\+/g, "%2B").replace(/ /g, "%20").replace(/\\/g, "")+"&start="+this.$stringTimeParseToUnix(start)+"&end="+this.$stringTimeParseToUnix(end)+"&step="+step)); + this.legend = []; + this.chartDatas = []; + axios.all(axiosArr).then(res =>{ + try { + res.forEach((response, promIndex) => { + if (response.status == 200) { + if (response.data.status == 'success') { + let queryData = response.data.data.result[0]; + if (queryData) { + let chartData = { + type: "line", + symbol: 'none', //去掉点 + smooth: 0.2, //曲线变平滑 + name: '', + lineStyle: { + width: 1, + opacity: 0.9 + }, + markLine: { + silent: true, + symbol: ['circle', 'circle'], + label: { + distance: this.computeDistance(chartDataFormat.getUnit(this.currentMsg.alertRule.unit ? this.currentMsg.alertRule.unit : 2).compute(this.currentMsg.alertRule.threshold)), + formatter: function (params) { + return chartDataFormat.getUnit($temp.currentMsg.alertRule.unit ? $temp.currentMsg.alertRule.unit : 2).compute(params.value) + } + }, + lineStyle: { + color:'#d64f40', + width:2, + type:'dotted' + }, + data: [{ + yAxis: Number(this.currentMsg.alertRule.threshold) + }, ] + }, + markArea:{ + itemStyle:{ + color:'#d64f40', + opacity:0.1 + }, + data:[this.returnMarkArea()] + } + }; + if(this.currentMsg.alertRule.operator=='=='||this.currentMsg.alertRule.operator=='!='){ + delete chartData.markArea; + } + chartData.name += "{"; + alias += "{"; + Object.keys(queryData.metric).forEach((item, index) => { + let label = item; + let value = queryData.metric[label]; + chartData.name += label + "='" + value + "',"; + }); + chartData.name = chartData.name.charAt(chartData.name.length - 1) == "," ? chartData.name.substr(0, chartData.name.length - 1) : chartData.name; + chartData.name += "}"; + let alias = chartData.name; + let legend = { + name: chartData.name, + alias: alias, + isGray: false + } + this.legend.push(legend); + chartData.data = queryData.values.map((dpsItem, dpsIndex) => { + return [bus.computeTimezone(dpsItem[0]) * 1000, parseFloat(dpsItem[1]).toFixed(2)]; + }); + this.chartDatas.push(chartData); + } + } else { + this.$message.error(response.data.error) + console.error(response.data) + } + } + }); + this.$nextTick(() => { + this.$refs.messageChart.setRandomColors(this.chartDatas.length); + this.$refs.messageChart.setLegend(this.legend); + this.$refs.messageChart.setSeries(this.chartDatas); + this.$refs.messageChart.endLoading(); + }); + } catch(err) { + this.$message.error(err); + this.$refs.messageChart.endLoading(); + } + }) + } }, computeDistance:function(str){ var width = 0; @@ -572,10 +574,11 @@ this.deleteBox.show = true; }, deleteMessage() { - this.$emit('deleteMessage',this.deleteBox); + this.$emit('deleteMessage',this.deleteBox,()=>{ + this.deleteBox.ids=[]; + }); //console.log(this.deleteBox); this.deleteBox.show = false; - this.deleteBox.ids=[]; }, selectChange(s) { let ids = []; @@ -920,7 +923,7 @@ display: inline-block; } /deep/.alert-clean-pop.el-popover{ - top: -30px; + top: -30px !important; } .pointer{ cursor: pointer; diff --git a/nezha-fronted/src/components/common/bottomBox/tabs/alertMessageTab.vue b/nezha-fronted/src/components/common/bottomBox/tabs/alertMessageTab.vue index 3903ff72f..9679ed050 100644 --- a/nezha-fronted/src/components/common/bottomBox/tabs/alertMessageTab.vue +++ b/nezha-fronted/src/components/common/bottomBox/tabs/alertMessageTab.vue @@ -59,20 +59,20 @@ - -
- {{$t("project.endpoint.dialogTitle")}} -
- -
-
- -
+ + + + + + + + + + + + + + @@ -291,11 +291,13 @@ changeTab(tab) { this.$emit('changeTab', tab); }, - deleteMessage(deleteBox) { + deleteMessage(deleteBox,cb) { + console.log(deleteBox) this.$put("alert/message", deleteBox).then(res => { if (res.code === 200) { this.$message({duration: 2000, type: 'success', message: this.$t("tip.deleteSuccess")}); this.getAlertList(); + cb(); } else { this.$message.error(res.msg); } diff --git a/nezha-fronted/src/components/page/alert/list.vue b/nezha-fronted/src/components/page/alert/list.vue index 5d2ef3723..f6f65852d 100644 --- a/nezha-fronted/src/components/page/alert/list.vue +++ b/nezha-fronted/src/components/page/alert/list.vue @@ -59,35 +59,35 @@ -
- -
- -
- - -
-
-
-
- -
- {{$t("project.endpoint.dialogTitle")}} -
- -
-
- -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -554,11 +554,12 @@ } this.deleteBox.show = true; }, - deleteMessage(deleteBox) { + deleteMessage(deleteBox,cb) { this.$put("alert/message", deleteBox).then(res => { if (res.code === 200) { this.$message({duration: 2000, type: 'success', message: this.$t("tip.deleteSuccess")}); this.getAlertList(); + cb(); } else { this.$message.error(res.msg); } @@ -833,25 +834,25 @@ } this.getAlertList(); - this.$nextTick(() => { - //绑定滚动条事件,控制top按钮 - let el = this.$refs.alertListTable.$el.querySelector(".el-table__body-wrapper"); - if (el._ps_) { - el.addEventListener("ps-scroll-y", () => { - if (el._ps_.scrollbarYTop > 50) { - this.tools.showTopBtn = true; - } else { - this.tools.showTopBtn = false; - } - }); - el.addEventListener("mouseenter", () => { - this.tools.tableHover = true; - }); - el.addEventListener("mouseleave", () => { - this.tools.tableHover = false; - }); - } - }); + // this.$nextTick(() => { + // //绑定滚动条事件,控制top按钮 + // let el = this.$refs.alertListTable.$el.querySelector(".el-table__body-wrapper"); + // if (el._ps_) { + // el.addEventListener("ps-scroll-y", () => { + // if (el._ps_.scrollbarYTop > 50) { + // this.tools.showTopBtn = true; + // } else { + // this.tools.showTopBtn = false; + // } + // }); + // el.addEventListener("mouseenter", () => { + // this.tools.tableHover = true; + // }); + // el.addEventListener("mouseleave", () => { + // this.tools.tableHover = false; + // }); + // } + // }); } }