Authored by 王涛

Merge branch 'master-v32-xwx' into 'master'

告警策略类型改为从字典获取



See merge request !854
//告警策略
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();
... ... @@ -348,7 +368,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
}
function editNoticeExpr(noticeExpr, alarmTimes, noticeType) {
var title = `<a class="layui-icon layui-icon-edit win_title_icon"></a>编辑通知表达式`;
var title = `<a class="layui-icon layui-icon-edit win_title_icon"></a>编辑通知表达式`;
common.openWin('baseconfig/alarmpolicy/noticeExprEdit', title, {
noticeExpr,
noticeType
... ... @@ -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");
}
});
});
... ...
... ... @@ -21,7 +21,9 @@
</div>
<div class="layui-inline">
<label class="layui-form-label">是否默认</label>
<div class="layui-input-inline padding-left-10" id="alarmpolicy_policyType_add">
<div class="layui-input-inline">
<select lay-filter="alarmpolicy_policyType_add" id="alarmpolicy_policyType_add">
</select>
</div>
</div>
</div>
... ...