|
|
//告警策略
|
|
|
layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], function (exports) {
|
|
|
layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], function (exports) {
|
|
|
var $ = layui.$;
|
|
|
var form = layui.form;
|
|
|
var laydate = layui.laydate;
|
...
|
...
|
@@ -18,34 +18,65 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
, async: false
|
|
|
}).done(function (res) {
|
|
|
let radioData = res.data;
|
|
|
let htmlRadio = '';
|
|
|
let htmlRadio = ' <option value="">=策略类型=</option>';
|
|
|
if (radioData && radioData.length > 0) {
|
|
|
radioData.map(item => {
|
|
|
$('#alarmpolicy_policyType_add').append(`<input type="radio" data-sort="`+item.ddicSort+`" name="policyType" value="`+item.ddicSort+`" title="`+item.ddicName+`">`)
|
|
|
htmlRadio += `<option value="` + item.ddicSort + `">` + item.ddicName + '</option>'
|
|
|
})
|
|
|
}
|
|
|
$('#alarmpolicy_policyType_add [data-sort]:nth-child(2)').attr("checked",true);
|
|
|
;
|
|
|
$('#alarmpolicy_policyType_add').html(htmlRadio);
|
|
|
});
|
|
|
//编辑
|
|
|
if (data && data.id) {
|
|
|
// 获取通知合并策略的表达式
|
|
|
admin.req({
|
|
|
url: domainName + '/api-web/policyMerge/get?noticeMergePolicyId=' + data.id
|
|
|
, async: false
|
|
|
, done: function (res) {
|
|
|
$("#noticeMergeFlagExpr").val(res.data[0].noticeMergeExpr);
|
|
|
}
|
|
|
});
|
|
|
var policyType = '';
|
|
|
admin.req({
|
|
|
url: domainName + '/api-web/alarmPolicy/getbyId/' + data.id
|
|
|
, async: false
|
|
|
, done: function (res) {
|
|
|
exprToChar(res.object, 'alarmContentExpr');
|
|
|
exprToChar(res.object, 'cleanPolicy');
|
|
|
exprToChar(res.object, 'commonlyExpr');
|
|
|
exprToChar(res.object, 'importantExpr');
|
|
|
exprToChar(res.object, 'seriousExpr');
|
|
|
$("#alarm-policy-kpiName").val(res.object.kpiId + " " + res.object.kpiName);
|
|
|
$("#seriousTimes").val(res.object.seriousTimes);
|
|
|
$("#alarmpolicy_policyType_add").val(res.object.policyType);
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
$("#alarmpolicy_policyType_add").val('1');
|
|
|
$("#seriousTimes").val('00:00:00 - 23:59:59');
|
|
|
}
|
|
|
form.render(null, 'add-alarmpolicy-form');
|
|
|
//初始化日期组件
|
|
|
laydate.render({
|
|
|
elem: '#seriousTimes'
|
|
|
,type: 'time'
|
|
|
,range: true
|
|
|
, type: 'time'
|
|
|
, range: true
|
|
|
});
|
|
|
var resType = localStorage.getItem("currentResType");
|
|
|
var NoticeMergeFlag = 'off';
|
|
|
// 获取合并通知开关是否开启
|
|
|
getNoticeMergeFlag();
|
|
|
function getNoticeMergeFlag(){
|
|
|
|
|
|
function getNoticeMergeFlag() {
|
|
|
admin.req({
|
|
|
url: common.domainName + '/api-web/manage/ddic/findSucDdics/noticeMergeFlag'
|
|
|
, method: 'POST'
|
|
|
, async: false
|
|
|
, success: function (res) {
|
|
|
$.each(res.data, function (i, v) {
|
|
|
if(v.ddicCode == 'on'){
|
|
|
NoticeMergeFlag= 'on';
|
|
|
if (v.ddicCode == 'on') {
|
|
|
NoticeMergeFlag = 'on';
|
|
|
$('#noticeMergeTab').show();
|
|
|
}
|
|
|
});
|
...
|
...
|
@@ -53,46 +84,19 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
})
|
|
|
}
|
|
|
|
|
|
//编辑
|
|
|
if(data && data.id){
|
|
|
admin.req({
|
|
|
url:domainName + '/api-web/alarmPolicy/getbyId/'+data.id
|
|
|
,done:function (res){
|
|
|
exprToChar(res.object, 'alarmContentExpr');
|
|
|
exprToChar(res.object, 'cleanPolicy');
|
|
|
exprToChar(res.object, 'commonlyExpr');
|
|
|
exprToChar(res.object, 'importantExpr');
|
|
|
exprToChar(res.object, 'seriousExpr');
|
|
|
form.val("add-alarmpolicy-form",res.object);
|
|
|
$("#alarm-policy-kpiName").val(res.object.kpiId +" "+ res.object.kpiName);
|
|
|
$("#seriousTimes").val(res.object.seriousTimes);
|
|
|
$("#alarmPolicyType").val(res.object.policyType);
|
|
|
}
|
|
|
});
|
|
|
// 获取通知合并策略的表达式
|
|
|
admin.req({
|
|
|
url:domainName + '/api-web/policyMerge/get?noticeMergePolicyId='+data.id
|
|
|
,done:function (res){
|
|
|
$("#noticeMergeFlagExpr").val(res.data[0].noticeMergeExpr);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
}else{
|
|
|
$("#seriousTimes").val('00:00:00 - 23:59:59');
|
|
|
}
|
|
|
$('#btn-alarmpolicy-expr-add').unbind('click').on('click', function () {
|
|
|
editNoticeExpr();
|
|
|
return false;
|
|
|
});
|
|
|
//全天
|
|
|
$(".allday").on("click",function (){
|
|
|
$(".allday").on("click", function () {
|
|
|
var id = $(this).data("flag");
|
|
|
$("#"+id).val('00:00:00 - 23:59:59');
|
|
|
$("#" + id).val('00:00:00 - 23:59:59');
|
|
|
});
|
|
|
//工作时间
|
|
|
$(".worktime").on("click",function (){
|
|
|
$(".worktime").on("click", function () {
|
|
|
var id = $(this).data("flag");
|
|
|
$("#"+id).val('08:00:00 - 19:59:59');
|
|
|
$("#" + id).val('08:00:00 - 19:59:59');
|
|
|
});
|
|
|
$('.noticeExpr').unbind('click').on('click', function () {
|
|
|
var id = $(this).prop('id');
|
...
|
...
|
@@ -104,7 +108,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
editNoticeExpr($(this).val(), alarmTimes, id);
|
|
|
});
|
|
|
//指标信息
|
|
|
if(data.kpiId){
|
|
|
if (data.kpiId) {
|
|
|
$("#alarm-policy-kpiId").val(data.kpiId);
|
|
|
$("#alarm-policy-kpiName").val(data.kpiId + " " + data.name);
|
|
|
}
|
...
|
...
|
@@ -112,48 +116,48 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
//告警规则类型切换事件
|
|
|
form.on('radio(alarm-policy-rule-type)', function (data) {
|
|
|
var flag = $(data.elem).data("flag");
|
|
|
if(data.value == '1'){
|
|
|
if (data.value == '1') {
|
|
|
$(`.${flag}-tab-item`).find("div.cont-base").show();
|
|
|
}else{
|
|
|
} else {
|
|
|
$(`.${flag}-tab-item`).find("div.cont-base").hide();
|
|
|
$(`#${flag}Policy`).val('');
|
|
|
}
|
|
|
});
|
|
|
//选择指标
|
|
|
$("#alarmpolicy-form-select-kpi, #alarm-policy-kpiName").unbind('click').on("click",function (){
|
|
|
common.openWin("template/res/reskpilist","选择指标", {resType:null},["选择","取消"], function () {
|
|
|
$("#alarmpolicy-form-select-kpi, #alarm-policy-kpiName").unbind('click').on("click", function () {
|
|
|
common.openWin("template/res/reskpilist", "选择指标", {resType: null}, ["选择", "取消"], function () {
|
|
|
var data = layui.reskpilist().getData();
|
|
|
if(data && data.length != 1){
|
|
|
layer.msg('只能选择一个指标!', {icon: 7,time:3000});
|
|
|
if (data && data.length != 1) {
|
|
|
layer.msg('只能选择一个指标!', {icon: 7, time: 3000});
|
|
|
return false;
|
|
|
}
|
|
|
if(data && data.length > 0){
|
|
|
if (data && data.length > 0) {
|
|
|
$("#alarm-policy-kpiId").val(data[0].kpiId);
|
|
|
$("#alarm-policy-kpiName").val(data[0].kpiId + " " + data[0].kpiName);
|
|
|
$("#alarmPolicyName").val(data[0].kpiName + "告警策略");
|
|
|
|
|
|
var arry = [ "base", "cpu", "mem"];
|
|
|
var arry = ["base", "cpu", "mem"];
|
|
|
return true;
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
|
|
|
//增加一行策略表达式输入框
|
|
|
$("i.policy-input-add").off("click").on("click",function (){
|
|
|
$("i.policy-input-add").off("click").on("click", function () {
|
|
|
var id = $(this).data("id");
|
|
|
clonePolicyDoms(id);
|
|
|
});
|
|
|
//删除告警策略规则行
|
|
|
$("i.policy-input-del").on("click",function (){
|
|
|
$("i.policy-input-del").on("click", function () {
|
|
|
var id = $(this).data("id");
|
|
|
$(`#${id}`).remove();
|
|
|
});
|
|
|
|
|
|
|
|
|
//生成策略
|
|
|
$("a.createpolicybtn").on("click",function (){
|
|
|
$("a.createpolicybtn").on("click", function () {
|
|
|
var kpiId = $("#alarm-policy-kpiId").val();
|
|
|
if(!kpiId){
|
|
|
if (!kpiId) {
|
|
|
layer.msg("请先选择指标!", {
|
|
|
icon: 7
|
|
|
, time: 3000
|
...
|
...
|
@@ -161,30 +165,44 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
return false;
|
|
|
}
|
|
|
var policyFlag = $(this).data("flag");
|
|
|
var conOjb = {"0":">","1":"<","2":"=","3":">=","4":"<=","5":"equals","6":"contains","7":"startsWith","8":"endsWith"};
|
|
|
var conOjb = {
|
|
|
"0": ">",
|
|
|
"1": "<",
|
|
|
"2": "=",
|
|
|
"3": ">=",
|
|
|
"4": "<=",
|
|
|
"5": "equals",
|
|
|
"6": "contains",
|
|
|
"7": "startsWith",
|
|
|
"8": "endsWith"
|
|
|
};
|
|
|
var doms = $(`[id^=${policyFlag}-policy-box]`);
|
|
|
var policyStr = '';
|
|
|
$(doms).each(function(i,v){
|
|
|
$(doms).each(function (i, v) {
|
|
|
var domId = $(v).attr("id");
|
|
|
if(domId.indexOf("condition") != -1){//条件
|
|
|
if (domId.indexOf("condition") != -1) {//条件
|
|
|
var open = $(v).find('.layui-form-switch').hasClass("layui-form-onswitch");
|
|
|
if(open){ policyStr += "||" }else{ policyStr += "&&" }
|
|
|
}else{ //值
|
|
|
var conditon = $(v).find("."+policyFlag+"_condition").val();
|
|
|
var cls = policyFlag +"_value";
|
|
|
var conval = $(v).find('[flag="'+cls+'"]').val().trim();
|
|
|
if(conval){
|
|
|
if(conditon < 5){ //数字类的
|
|
|
if (open) {
|
|
|
policyStr += "||"
|
|
|
} else {
|
|
|
policyStr += "&&"
|
|
|
}
|
|
|
} else { //值
|
|
|
var conditon = $(v).find("." + policyFlag + "_condition").val();
|
|
|
var cls = policyFlag + "_value";
|
|
|
var conval = $(v).find('[flag="' + cls + '"]').val().trim();
|
|
|
if (conval) {
|
|
|
if (conditon < 5) { //数字类的
|
|
|
policyStr += `Double.parseDouble([${kpiId},kpiValue])${conOjb[conditon]}${conval}`;
|
|
|
}else{ //字符串类的
|
|
|
} else { //字符串类的
|
|
|
policyStr += `[${kpiId},kpiValue].${conOjb[conditon]}("${conval}")`;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
if(policyStr){
|
|
|
if (policyStr) {
|
|
|
$(`#${policyFlag}Policy`).val(policyStr);
|
|
|
}else{
|
|
|
} else {
|
|
|
layer.msg("请先输入策略值!", {
|
|
|
icon: 7
|
|
|
, time: 3000
|
...
|
...
|
@@ -194,7 +212,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
});
|
|
|
|
|
|
//保存策略
|
|
|
$("#alarmpolicy-form-save-id").on("click",function (){
|
|
|
$("#alarmpolicy-form-save-id").on("click", function () {
|
|
|
var data = form.val("add-alarmpolicy-form");
|
|
|
//移除非数进性的属性
|
|
|
delete data['serious-policy-type'];
|
...
|
...
|
@@ -208,7 +226,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
data.commonlyTimes = $("#seriousTimes").val();
|
|
|
var that = this;
|
|
|
|
|
|
if(!data.kpiId){
|
|
|
if (!data.kpiId) {
|
|
|
layer.msg("请先选择指标!", {
|
|
|
icon: 7
|
|
|
, time: 3000
|
...
|
...
|
@@ -216,7 +234,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if(!data.kpiId || data.kpiId == ''){
|
|
|
if (!data.kpiId || data.kpiId == '') {
|
|
|
layer.msg("请先选择指标!", {
|
|
|
icon: 7
|
|
|
, time: 3000
|
...
|
...
|
@@ -232,7 +250,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if(!data.alarmContentExpr || data.alarmContentExpr == ''){
|
|
|
if (!data.alarmContentExpr || data.alarmContentExpr == '') {
|
|
|
layer.msg("请先填写告警内容描述表达式!", {
|
|
|
icon: 7
|
|
|
, time: 3000
|
...
|
...
|
@@ -244,7 +262,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
var importantPolicy = data.seriousPolicy;
|
|
|
var importantExpr = data.importantPolicy;
|
|
|
var commonlyPolicy = data.commonlyPolicy;
|
|
|
if((!importantPolicy || importantPolicy == '') && (!importantExpr || importantExpr == '') && (!commonlyPolicy || commonlyPolicy == '')){
|
|
|
if ((!importantPolicy || importantPolicy == '') && (!importantExpr || importantExpr == '') && (!commonlyPolicy || commonlyPolicy == '')) {
|
|
|
layer.msg("严重、重要和一般告警的表达式必须有一项不为空!", {
|
|
|
icon: 7
|
|
|
, time: 3000
|
...
|
...
|
@@ -252,8 +270,8 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if(NoticeMergeFlag && NoticeMergeFlag == 'on'){
|
|
|
if(!data.noticeMergeFlagExpr || data.noticeMergeFlagExpr == ''){
|
|
|
if (NoticeMergeFlag && NoticeMergeFlag == 'on') {
|
|
|
if (!data.noticeMergeFlagExpr || data.noticeMergeFlagExpr == '') {
|
|
|
layer.msg("请先填写通知合并策略描述表达式!", {
|
|
|
icon: 7
|
|
|
, time: 3000
|
...
|
...
|
@@ -266,7 +284,8 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
* 保存通知合并策略
|
|
|
*/
|
|
|
var noticeMergeFlagExpr = $("#noticeMergeFlagExpr").val()
|
|
|
function saveNoticeMerge(id){
|
|
|
|
|
|
function saveNoticeMerge(id) {
|
|
|
var noticeMergeData = {
|
|
|
"mergePolicyId": id,
|
|
|
"mergePolicyName": data.alarmPolicyName,
|
...
|
...
|
@@ -276,44 +295,45 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
"kpiId": data.kpiId
|
|
|
}
|
|
|
admin.req({
|
|
|
url : domainName + '/api-web/policyMerge/save?access_token='+accessToken
|
|
|
,data:JSON.stringify(noticeMergeData)
|
|
|
,type:'post'
|
|
|
,contentType: "application/json; charset=utf-8"
|
|
|
,done:function (res){
|
|
|
if(!res.success){
|
|
|
layer.msg(res.msg ? res.msg : '通知合并策略保存失败', { offset: '15px' , icon: 7 , time: 1000 });
|
|
|
url: domainName + '/api-web/policyMerge/save?access_token=' + accessToken
|
|
|
, data: JSON.stringify(noticeMergeData)
|
|
|
, type: 'post'
|
|
|
, contentType: "application/json; charset=utf-8"
|
|
|
, done: function (res) {
|
|
|
if (!res.success) {
|
|
|
layer.msg(res.msg ? res.msg : '通知合并策略保存失败', {offset: '15px', icon: 7, time: 1000});
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
charToExpr(data, 'alarmContentExpr');
|
|
|
charToExpr(data, 'cleanPolicy');
|
|
|
charToExpr(data, 'commonlyExpr');
|
|
|
charToExpr(data, 'importantExpr');
|
|
|
charToExpr(data, 'seriousExpr');
|
|
|
|
|
|
form.on('submit(add-alarmpolicy-form)',function () {
|
|
|
form.on('submit(add-alarmpolicy-form)', function () {
|
|
|
delete data.noticeMergeFlagExpr;
|
|
|
admin.req({
|
|
|
url : domainName + '/api-web/alarmPolicy/save?access_token='+accessToken
|
|
|
,data:JSON.stringify(data)
|
|
|
,type:'post'
|
|
|
,contentType: "application/json; charset=utf-8"
|
|
|
,done:function (res){
|
|
|
if(res.success){
|
|
|
url: domainName + '/api-web/alarmPolicy/save?access_token=' + accessToken
|
|
|
, data: JSON.stringify(data)
|
|
|
, type: 'post'
|
|
|
, contentType: "application/json; charset=utf-8"
|
|
|
, done: function (res) {
|
|
|
if (res.success) {
|
|
|
// 保存通知合并策略
|
|
|
saveNoticeMerge(res.str);
|
|
|
|
|
|
localStorage.setItem("detailPageOfcustomPolicyId",res.str)
|
|
|
layer.msg(res.msg, { offset: '15px' , icon: 1 , time: 1000 },function (){
|
|
|
localStorage.setItem("detailPageOfcustomPolicyId", res.str)
|
|
|
layer.msg(res.msg, {offset: '15px', icon: 1, time: 1000}, function () {
|
|
|
localStorage.removeItem("currentResType");
|
|
|
if(layui.alarmpolicyIndex && layui.alarmpolicyIndex()){
|
|
|
if (layui.alarmpolicyIndex && layui.alarmpolicyIndex()) {
|
|
|
layui.alarmpolicyIndex().reloadAlarmPolicy()
|
|
|
}
|
|
|
});
|
|
|
}else{
|
|
|
layer.msg(res.msg, { offset: '15px' , icon: 7 , time: 1000 });
|
|
|
} else {
|
|
|
layer.msg(res.msg, {offset: '15px', icon: 7, time: 1000});
|
|
|
}
|
|
|
}
|
|
|
});
|
...
|
...
|
@@ -323,24 +343,24 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
});
|
|
|
|
|
|
//克隆告警策略元素
|
|
|
function clonePolicyDoms(id){
|
|
|
function clonePolicyDoms(id) {
|
|
|
var times = new Date().getTime()
|
|
|
var cond = `<div class="layui-form-item cont-base" id="${id}-${times}-condition">
|
|
|
<input type="checkbox" checked="" lay-skin="switch" lay-text="或|且">
|
|
|
</div>`;
|
|
|
var clone = $(`#${id}`).clone();
|
|
|
clone.attr("id",id+"-"+times).find("i.policy-input-add").addClass("hide")
|
|
|
.parent().parent().find("i.policy-input-del").attr("data-id",id + "-"+times).removeClass("hide")
|
|
|
clone.attr("id", id + "-" + times).find("i.policy-input-add").addClass("hide")
|
|
|
.parent().parent().find("i.policy-input-del").attr("data-id", id + "-" + times).removeClass("hide")
|
|
|
.parent().parent().find("input.layui-input").val("");
|
|
|
$(`#${id}`).after(clone).after(cond);
|
|
|
|
|
|
form.render();
|
|
|
//渲染新增事件
|
|
|
$("i.policy-input-add").off("click").on("click",function (){
|
|
|
$("i.policy-input-add").off("click").on("click", function () {
|
|
|
clonePolicyDoms($(this).data("id"));
|
|
|
});
|
|
|
//删除告警策略规则行
|
|
|
$("i.policy-input-del").off("click").on("click",function (){
|
|
|
$("i.policy-input-del").off("click").on("click", function () {
|
|
|
var id = $(this).data("id");
|
|
|
$(`#${id}`).remove();
|
|
|
$(`#${id}-condition`).remove();
|
...
|
...
|
@@ -370,7 +390,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun |
|
|
//如果是详情页过来的,则不能改变指标和默认状态
|
|
|
if (data && data.from === 'detail') {
|
|
|
$("#alarmpolicy-form-select-kpi, #alarm-policy-kpiName").off('click');
|
|
|
$('#add-alarmpolicy-form').find('[name="policyType"]').attr("disabled","disabled");
|
|
|
$('#add-alarmpolicy-form').find('[name="policyType"]').attr("disabled", "disabled");
|
|
|
}
|
|
|
});
|
|
|
}); |
...
|
...
|
|