Authored by 袁晋鹏

告警策略功能优化

//告警策略
layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], function (exports) {
layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist','table','xmSelect'], function (exports) {
var $ = layui.$;
var form = layui.form;
var laydate = layui.laydate;
var admin = layui.admin;
var common = layui.common;
var domainName = common.domainName;
var table = layui.table;
var xmSelect = layui.xmSelect;
//对外暴露的接口
exports('alarmpolicyAdd', function (data) {
var sessions = layui.sessions;
var accessToken = sessions.getToken()['access_token'];
console.log(data)
var seriousInkeySelect ;
var options = '';
var defaultoptions = '';
var conditionoptions = "<option value=\"2\">等于</option>\n" +
" <option value=\"6\">包含</option>\n" +
" <option value=\"9\">不包含</option>";
var seriousresIds = [];
var importantresIds = [];
var commonlyresIds = [];
var seriousresTypes = [];
var importantresTypes = [];
var commonlyresTypes = [];
var seriousJoinTypes = [];
var importantJoinTypes = [];
var commonlyJoinTypes = [];
var seriousInkeys = '';
var importantInkeys = '';
var commonlyInkeys = '';
var policyConfigItems = [];
form.render(null, 'add-alarmpolicy-form');
//初始化日期组件
laydate.render({
... ... @@ -29,7 +49,6 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
,type: 'time'
,range: true
});
var resType = localStorage.getItem("currentResType");
//编辑
if(data && data.id){
admin.req({
... ... @@ -42,10 +61,144 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
exprToChar(res.object, 'seriousExpr');
form.val("add-alarmpolicy-form",res.object);
$("#alarm-policy-kpiName").val(res.object.kpiId +" "+ res.object.kpiName);
$("#serious_policy_param_val").val(res.object.kpiId);
$("#important_policy_param_val").val(res.object.kpiId);
$("#commonly_policy_param_val").val(res.object.kpiId);
$("#seriousTimes").val(res.object.seriousTimes);
$("#importantTimes").val(res.object.importantTimes);
$("#commonlyTimes").val(res.object.commonlyTimes);
$("#alarmPolicyType").val(res.object.policyType);
if(res.data && res.data.length>0){
let seriousItems = res.data.filter(item=>item.policyFlag === 'serious');
let importantItems = res.data.filter(item=>item.policyFlag === 'important');
let commonlyItems = res.data.filter(item=>item.policyFlag === 'commonly');
seriouspolicyItems =seriousItems;
importantpolicyItems = importantItems;
commonlypolicyItems = commonlyItems;
if(seriousItems && seriousItems.length>0){
var timeobj ={}
for (let i = 0; i < seriousItems.length; i++) {
var times = new Date().getTime();
timeobj['time'+i] =times;
var cond = '';
if(seriousItems[i].relationSymbol && seriousItems[i].relationSymbol == '0'){
cond = `<div class="layui-form-item cont-base" id="serious-policy-box-${times}-condition">
<input type="checkbox" lay-skin="switch" lay-text="或|且" value="是">
</div>`;
}else if(seriousItems[i].relationSymbol && seriousItems[i].relationSymbol == '1'){
cond = `<div class="layui-form-item cont-base" id="serious-policy-box-${times}-condition">
<input type="checkbox" lay-skin="switch" lay-text="或|且" checked value="否">
</div>`;
}
var clone = ""
if(i<seriousItems.length-1) {
clone = $(`#serious-policy-box`).clone();
clone.attr("id", "serious-policy-box-" + times).find("i.policy-input-add").addClass("hide")
.parent().parent().find("i.policy-input-del").attr("data-id", "serious-policy-box-" + times).removeClass("hide")
.parent().parent().find("div.paramval").addClass("hide")
.parent().parent().find("input.layui-input").val("");
clone.find("select.policyparam").html(options);
clone.find("select.condition").html(conditionoptions);
clone.find("input[type=tel]").val('');
}
if(i==0) {
$(`#serious-policy-box`).after(clone).after(cond);
$("#serious-policy-box select.condition").val(seriousItems[0].operatorSymbol);
$("#serious-policy-box input[type=tel]").val(seriousItems[0].operatorValue);
}else{
var timestr =timeobj['time'+(i-1)];
$(`#serious-policy-box-${timestr}`).after(clone).after(cond);
$(`#serious-policy-box-${timestr} select.policyparam`).val(seriousItems[i].confNo);
$(`#serious-policy-box-${timestr} select.condition`).val(seriousItems[i].operatorSymbol);
$(`#serious-policy-box-${timestr} input[type=tel]`).val(seriousItems[i].operatorValue);
}
form.render();
}
}
if(importantItems && importantItems.length>0){
var timeobj ={}
for (let i = 0; i < importantItems.length; i++) {
var times = new Date().getTime();
timeobj['time'+i] =times;
var cond = '';
if(importantItems[i].relationSymbol && importantItems[i].relationSymbol == '0'){
cond = `<div class="layui-form-item cont-base" id="important-policy-box-${times}-condition">
<input type="checkbox" lay-skin="switch" lay-text="或|且" value="是">
</div>`;
}else if(importantItems[i].relationSymbol && importantItems[i].relationSymbol == '1'){
cond = `<div class="layui-form-item cont-base" id="important-policy-box-${times}-condition">
<input type="checkbox" checked lay-skin="switch" lay-text="或|且" value="否">
</div>`;
}
var clone = ""
if(i<importantItems.length-1) {
clone = $(`#important-policy-box`).clone();
clone.attr("id", "important-policy-box-" + times).find("i.policy-input-add").addClass("hide")
.parent().parent().find("i.policy-input-del").attr("data-id", "important-policy-box-" + times).removeClass("hide")
.parent().parent().find("div.paramval").addClass("hide")
.parent().parent().find("input.layui-input").val("");
clone.find("select.policyparam").html(options);
clone.find("select.condition").html(conditionoptions);
clone.find("input[type=tel]").val('');
}
if(i==0) {
$(`#important-policy-box`).after(clone).after(cond);
$("#important-policy-box select.condition").val(importantItems[0].operatorSymbol);
$("#important-policy-box input[type=tel]").val(importantItems[0].operatorValue);
}else{
var timestr =timeobj['time'+(i-1)];
$(`#important-policy-box-${timestr}`).after(clone).after(cond);
$(`#important-policy-box-${timestr} select.policyparam`).val(importantItems[i].confNo);
$(`#important-policy-box-${timestr} select.condition`).val(importantItems[i].operatorSymbol);
$(`#important-policy-box-${timestr} input[type=tel]`).val(importantItems[i].operatorValue);
}
form.render();
}
}
if(commonlyItems && commonlyItems.length>0){
var timeobj ={}
for (let i = 0; i < commonlyItems.length; i++) {
var times = new Date().getTime();
timeobj['time'+i] =times;
var cond = '';
if(commonlyItems[i].relationSymbol && commonlyItems[i].relationSymbol == '0'){
cond = `<div class="layui-form-item cont-base" id="commonly-policy-box-${times}-condition">
<input type="checkbox" lay-skin="switch" lay-text="或|且" value="是">
</div>`;
}else if(commonlyItems[i].relationSymbol && commonlyItems[i].relationSymbol == '1'){
cond = `<div class="layui-form-item cont-base" id="commonly-policy-box-${times}-condition">
<input type="checkbox" checked lay-skin="switch" lay-text="或|且" value="否">
</div>`;
}
var clone = ""
if(i<commonlyItems.length-1) {
clone = $(`#commonly-policy-box`).clone();
clone.attr("id", "commonly-policy-box-" + times).find("i.policy-input-add").addClass("hide")
.parent().parent().find("i.policy-input-del").attr("data-id", "commonly-policy-box-" + times).removeClass("hide")
.parent().parent().find("div.paramval").addClass("hide")
.parent().parent().find("input.layui-input").val("");
clone.find("select.policyparam").html(options);
clone.find("select.condition").html(conditionoptions);
clone.find("input[type=tel]").val('');
}
if(i==0) {
$(`#commonly-policy-box`).after(clone).after(cond);
$("#commonly-policy-box select.condition").val(commonlyItems[0].operatorSymbol);
$("#commonly-policy-box input[type=tel]").val(commonlyItems[0].operatorValue);
}else{
var timestr =timeobj['time'+(i-1)];
$(`#commonly-policy-box-${timestr}`).after(clone).after(cond);
$(`#commonly-policy-box-${timestr} select.policyparam`).val(commonlyItems[i].confNo);
$(`#commonly-policy-box-${timestr} select.condition`).val(commonlyItems[i].operatorSymbol);
$(`#commonly-policy-box-${timestr} input[type=tel]`).val(commonlyItems[i].operatorValue);
}
form.render();
}
}
}
}
});
}else{
... ... @@ -67,21 +220,376 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
var id = $(this).data("flag");
$("#"+id).val('08:00:00 - 19:59:59');
});
// zhangtianqi 2022-06-22
/*$('.noticeExpr').unbind('click').on('click', function () {
var id = $(this).prop('id');
var alarmTimes = '';
if (['seriousExpr', 'importantExpr', 'commonlyExpr'].includes(id)) {
id = id.substring(0, id.length - 4);
alarmTimes = $('#' + id + 'Times').val();
}
editNoticeExpr($(this).val(), alarmTimes, id);
});*/
//指标信息
if(data.kpiId){
$("#alarm-policy-kpiId").val(data.kpiId);
$("#alarm-policy-kpiName").val(data.kpiId + " " + data.name);
}
initpolicyParam();
function initpolicyParam() {
admin.req({
url: `${domainName}/api-web/manage/ddic/findSucDdics/alarmpolicy_param?access_token=${accessToken}`,
method: 'POST',
async: false,
success: function (res) {
var ddiclist = res.data;
$.each(ddiclist, function (i, v) {
if(v.ddicCode=="current_kpi") {
defaultoptions += '<option value="' + v.ddicCode + '">' + v.ddicName + '</option>';
$('select[name=serious_policy_param]').html(defaultoptions);
$('select[name=important_policy_param]').html(defaultoptions);
$('select[name=commonly_policy_param]').html(defaultoptions);
}else {
options += '<option value="' + v.ddicCode + '">' + v.ddicName + '</option>';
}
});
form.render('select');
}
});
}
form.on('select(serious_policy_param)', function(data){
if (data.value != ''){
//加载对应的参数
if(data.value == "device_id"){
var device_id = $(this).closest(".cont-base").find("input[type=tel]");
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
common.openWin("template/res/reslist", "选择设备", {oldData: seriousresIds}, ["选择"], function () {
var data = table.checkStatus('reslist_resListTable').data;
if (data.length == 0) {
layer.msg("请至少选择一条数据!", {icon: 7, time: 3000});
return false;
}
seriousresIds = [];
var device = ''
$.each(data, function (i, v) {
seriousresIds.push(v.id);
device +=v.id + ',';
})
if(device.length>0){
device = device.substring(0,device.length-1)
}
console.log(device_id)
device_id.val(device);
return device;
})
})
}else if(data.value== "dev_type"){
var dev_type = $(this).closest(".cont-base").find("input[type=tel]");
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
//回填数据
common.openWin("baseconfig/resourcetype/index", "选择设备类型",
{
"resTypes": seriousresTypes
}, ["选择"], function () {
//找到选择的资源类型 并且订阅
var resourcetype = layui.resourcetype({"resTypes": seriousresTypes});
var data = resourcetype.getResTypeChecks();
var resTypes = ''
seriousresTypes = [];
if(data.length>0){
resTypes = data.substring(1,data.length)
}
seriousresTypes.push(resTypes.split(",")[0])
dev_type.val(resTypes);
return resTypes;
});
});
}else if(data.value == "join_type"){
var join_type= $(this).closest(".cont-base").find("input[type=tel]");
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
//回填数据
common.openWin("baseconfig/bustype/index", "选择业务类型",
{
"busIds": seriousJoinTypes
}, ["选择"], function () {
//找到选择的所有业务 并且订阅
var bustype = layui.bustype({"busIds": seriousJoinTypes});
var data = bustype.getData();
var joinTypes = ''
seriousJoinTypes = [];
if(data.length>0){
joinTypes = data.substring(1,data.length)
}
seriousJoinTypes.push(joinTypes.split(",")[0]);
join_type.val(joinTypes);
return joinTypes
});
});
}else if(data.value == "inKey"){
//绑定资源类型下拉选择
$(this).closest(".cont-base").find("input[type=tel]").before('<div id="seriousvalue" class="xm-select-demo"></div>');
var inkeys= $(this).closest(".cont-base").find("input[type=tel]");
var seriousvalue =$(this).closest(".cont-base").find("div#seriousvalue");
//inkeys.hide();
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
admin.req({
url: 'http://192.168.0.44:8080' + '/log-access/v1/lm2_logjoin_info_views?access_token=' + accessToken,
async: false,
success: function (res) {
// 资源类型下拉框
var logjoinList = res.data;
xmSelect.render({
el: '#seriousvalue',
tips: '=inKey=',
filterable: true,
//radio: false,
clickClose: false,
initValue: [seriousInkeys.split(",")[0]],
layVerify: 'required',
autoRow: true,
toolbar: {
show: true,
list: ['CLEAR']
},
height: '300px',
data: logjoinList,
on: function (data) {
seriousInkeys = data.arr.map(item => item.inKey).join(',');
inkeys.val(seriousInkeys);
if(data && data.isAdd) {
seriousvalue.remove();
inkeys.show();
}
return seriousInkeys
}
});
}
});
})
}
}
});
form.on('select(important_policy_param)', function(data){
if (data.value != ''){
//加载对应的参数
if(data.value == "device_id"){
var device_id = $(this).closest(".cont-base").find("input[type=tel]");
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
common.openWin("template/res/reslist", "选择设备", {oldData: importantresIds}, ["选择"], function () {
var data = table.checkStatus('reslist_resListTable').data;
if (data.length == 0) {
layer.msg("请至少选择一条数据!", {icon: 7, time: 3000});
return false;
}
importantresIds = [];
var device = ''
$.each(data, function (i, v) {
importantresIds.push(v.id);
device +=v.id + ',';
})
if(device.length>0){
device = device.substring(0,device.length-1)
}
console.log(device_id)
device_id.val(device);
return device;
})
})
}else if(data.value== "dev_type"){
var dev_type = $(this).closest(".cont-base").find("input[type=tel]");
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
//回填数据
common.openWin("baseconfig/resourcetype/index", "选择设备类型",
{
"resTypes": importantresTypes
}, ["选择"], function () {
//找到选择的资源类型 并且订阅
var resourcetype = layui.resourcetype({"resTypes": importantresTypes});
var data = resourcetype.getResTypeChecks();
var resTypes = ''
importantresTypes = [];
if(data.length>0){
resTypes = data.substring(1,data.length)
}
importantresTypes.push(resTypes.split(",")[0])
dev_type.val(resTypes);
return resTypes;
});
});
}else if(data.value == "join_type"){
var join_type= $(this).closest(".cont-base").find("input[type=tel]");
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
//回填数据
common.openWin("baseconfig/bustype/index", "选择业务类型",
{
"busIds": importantJoinTypes
}, ["选择"], function () {
//找到选择的所有业务 并且订阅
var bustype = layui.bustype({"busIds": importantJoinTypes});
var data = bustype.getData();
var joinTypes = ''
importantJoinTypes = [];
if(data.length>0){
joinTypes = data.substring(1,data.length)
}
importantJoinTypes.push(joinTypes.split(",")[0]);
join_type.val(joinTypes);
return joinTypes
});
});
}else if(data.value == "inKey"){
//绑定资源类型下拉选择
$(this).closest(".cont-base").find("input[type=tel]").before('<div id="importantvalue" class="xm-select-demo"></div>');
var inkeys= $(this).closest(".cont-base").find("input[type=tel]");
var importantvalue =$(this).closest(".cont-base").find("div#importantvalue");
//inkeys.hide();
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
admin.req({
url: 'http://192.168.0.44:8080' + '/log-access/v1/lm2_logjoin_info_views?access_token=' + accessToken,
async: false,
success: function (res) {
// 资源类型下拉框
var logjoinList = res.data;
xmSelect.render({
el: '#importantvalue',
tips: '=inKey=',
filterable: true,
//radio: false,
clickClose: false,
initValue: [importantInkeys.split(",")[0]],
layVerify: 'required',
autoRow: true,
toolbar: {
show: true,
list: [ 'CLEAR']
},
height: '300px',
data: logjoinList,
on: function (data) {
importantInkeys = data.arr.map(item => item.inKey).join(',');
inkeys.val(importantInkeys);
if(data && data.isAdd) {
importantvalue.remove();
inkeys.show();
}
return importantInkeys
}
});
}
});
})
}
}
});
form.on('select(commonly_policy_param)', function(data){
if (data.value != ''){
//加载对应的参数
if(data.value == "device_id"){
var device_id = $(this).closest(".cont-base").find("input[type=tel]");
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
common.openWin("template/res/reslist", "选择设备", {oldData: commonlyresIds}, ["选择"], function () {
var data = table.checkStatus('reslist_resListTable').data;
if (data.length == 0) {
layer.msg("请至少选择一条数据!", {icon: 7, time: 3000});
return false;
}
commonlyresIds = [];
var device = ''
$.each(data, function (i, v) {
commonlyresIds.push(v.id);
device +=v.id + ',';
})
if(device.length>0){
device = device.substring(0,device.length-1)
}
//console.log(device_id)
device_id.val(device);
return device;
})
})
}else if(data.value== "dev_type"){
var dev_type = $(this).closest(".cont-base").find("input[type=tel]");
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
//回填数据
common.openWin("baseconfig/resourcetype/index", "选择设备类型",
{
"resTypes": commonlyresTypes
}, ["选择"], function () {
//找到选择的资源类型 并且订阅
var resourcetype = layui.resourcetype({"resTypes": commonlyresTypes});
var data = resourcetype.getResTypeChecks();
var resTypes = ''
commonlyresTypes = [];
if(data.length>0){
resTypes = data.substring(1,data.length)
}
commonlyresTypes.push(resTypes.split(",")[0])
dev_type.val(resTypes);
return resTypes;
});
});
}else if(data.value == "join_type"){
var join_type= $(this).closest(".cont-base").find("input[type=tel]");
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
//回填数据
common.openWin("baseconfig/bustype/index", "选择业务类型",
{
"busIds": commonlyJoinTypes
}, ["选择"], function () {
//找到选择的所有业务 并且订阅
var bustype = layui.bustype({"busIds": commonlyJoinTypes});
var data = bustype.getData();
var joinTypes = ''
commonlyJoinTypes = [];
if(data.length>0){
joinTypes = data.substring(1,data.length)
}
commonlyJoinTypes.push(joinTypes.split(",")[0]);
join_type.val(joinTypes);
return joinTypes
});
});
}else if(data.value == "inKey"){
//绑定资源类型下拉选择
$(this).closest(".cont-base").find("input[type=tel]").before('<div id="commonlyvalue" class="xm-select-demo"></div>');
var inkeys= $(this).closest(".cont-base").find("input[type=tel]");
var commonlyvalue =$(this).closest(".cont-base").find("div#commonlyvalue");
//inkeys.hide();
$(this).closest(".cont-base").find("input[type=tel]").unbind('click').on("click",function () {
admin.req({
url: 'http://192.168.0.44:8080' + '/log-access/v1/lm2_logjoin_info_views?access_token=' + accessToken,
async: false,
success: function (res) {
// 资源类型下拉框
var logjoinList = res.data;
xmSelect.render({
el: '#commonlyvalue',
tips: '=inKey=',
filterable: true,
//radio: false,
clickClose: false,
initValue: [commonlyInkeys.split(",")[0]],
layVerify: 'required',
autoRow: true,
toolbar: {
show: true,
list: ['CLEAR']
},
height: '300px',
data: logjoinList,
on: function (data) {
commonlyInkeys = data.arr.map(item => item.inKey).join(',');
inkeys.val(commonlyInkeys);
if(data && data.isAdd) {
commonlyvalue.remove();
inkeys.show();
}
return commonlyInkeys
}
});
}
});
})
}
}
});
//告警规则类型切换事件
form.on('radio(alarm-policy-rule-type)', function (data) {
... ... @@ -105,7 +613,9 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
$("#alarm-policy-kpiId").val(data[0].kpiId);
$("#alarm-policy-kpiName").val(data[0].kpiId + " " + data[0].kpiName);
$("#alarmPolicyName").val(data[0].kpiName + "告警策略");
$("#serious_policy_param_val").val(data[0].kpiId);
$("#important_policy_param_val").val(data[0].kpiId);
$("#commonly_policy_param_val").val(data[0].kpiId);
var arry = [ "base", "cpu", "mem"];
return true;
}
... ... @@ -123,7 +633,9 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
$(`#${id}`).remove();
});
var seriouspolicyItems = [];
var importantpolicyItems = [];
var commonlypolicyItems = [];
//生成策略
$("a.createpolicybtn").on("click",function (){
var kpiId = $("#alarm-policy-kpiId").val();
... ... @@ -135,27 +647,200 @@ 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","9":"nocontains"};
var doms = $(`[id^=${policyFlag}-policy-box]`);
var policyStr = '';
$(doms).each(function(i,v){
var domId = $(v).attr("id");
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){ //数字类的
policyStr += `Double.parseDouble([${kpiId},kpiValue])${conOjb[conditon]}${conval}`;
}else{ //字符串类的
policyStr += `[${kpiId},kpiValue].${conOjb[conditon]}("${conval}")`;
var relationobj = {"1": 0,"3":1,"5":2,"7":3,"9":4,"11":5,"13":6,"15":7}
if(policyFlag.indexOf("serious")!=-1) {
seriouspolicyItems = [];
$(doms).each(function (i, v) {
var domId = $(v).attr("id");
if (domId.indexOf("condition") != -1) {//条件
var j = relationobj[''+i+''];
console.log(j);
var open = $(v).find('.layui-form-switch').hasClass("layui-form-onswitch");
if (open) {
policyStr += "||"
seriouspolicyItems[j].relationSymbol= "1"
} else {
policyStr += "&&"
seriouspolicyItems[j].relationSymbol= "0"
}
} else { //值
var conditon = $(v).find(".condition").val();
var cls = policyFlag + "_value";
var paramflag = policyFlag + "_policy_param"
var conval = $(v).find('[flag="' + cls + '"]').val().trim();
var param = $(v).find('[name="' + paramflag + '"]').val().trim();
if (conval && param) {
if (param == "current_kpi") {
var itemObj = {
"confNo":kpiId,
"kpiId" :kpiId,
"type":param,
"operatorSymbol":conditon,
'operatorValue':conval,
"relationSymbol": '',
"isTermOver": 0,
"sort": 0,
"policyFlag":policyFlag
}
seriouspolicyItems.push(itemObj);
if (conditon < 5) { //数字类的
policyStr += `Double.parseDouble([${kpiId},kpiValue])${conOjb[conditon]}${conval}`;
} else { //字符串类的
policyStr += `[${kpiId},kpiValue]${conOjb[conditon]}("${conval}")`;
}
} else {
var itemObj = {
"confNo":param,
"kpiId" :kpiId,
"type":param,
"operatorSymbol":conditon,
'operatorValue':conval,
"relationSymbol": '',
"isTermOver": 0,
"sort": i-1,
"policyFlag":policyFlag
}
seriouspolicyItems.push(itemObj);
if (conditon < 5) {
policyStr += `[${param}]${conOjb[conditon]}"${conval}"`;
} else {
policyStr += `[${param}]${conOjb[conditon]}("${conval}")`;
}
}
}
}
}
});
});
}else if(policyFlag.indexOf("important")!=-1){
importantpolicyItems = [];
$(doms).each(function (i, v) {
var domId = $(v).attr("id");
if (domId.indexOf("condition") != -1) {//条件
var j = relationobj[''+i+''];
var open = $(v).find('.layui-form-switch').hasClass("layui-form-onswitch");
if (open) {
policyStr += "||"
importantpolicyItems[j].relationSymbol= "1"
} else {
policyStr += "&&"
importantpolicyItems[j].relationSymbol= "0"
}
} else { //值
var conditon = $(v).find(".condition").val();
var cls = policyFlag + "_value";
var paramflag = policyFlag + "_policy_param"
var conval = $(v).find('[flag="' + cls + '"]').val().trim();
var param = $(v).find('[name="' + paramflag + '"]').val().trim();
if (conval && param) {
if (param == "current_kpi") {
var itemObj = {
"confNo":kpiId,
"kpiId" :kpiId,
"type":param,
"operatorSymbol": conditon,
'operatorValue': conval,
"relationSymbol": '',
"isTermOver": 0,
"sort": 0,
"policyFlag":policyFlag
}
importantpolicyItems.push(itemObj);
if (conditon < 5) { //数字类的
policyStr += `Double.parseDouble([${kpiId},kpiValue])${conOjb[conditon]}${conval}`;
} else { //字符串类的
policyStr += `[${kpiId},kpiValue]${conOjb[conditon]}("${conval}")`;
}
} else {
var itemObj = {
"confNo":param,
"kpiId" :kpiId,
"type":param,
"operatorSymbol": conditon,
'operatorValue': conval,
"relationSymbol": '',
"isTermOver": 0,
"sort": i-1,
"policyFlag":policyFlag
}
importantpolicyItems.push(itemObj);
if (conditon < 5) {
policyStr += `[${param}]${conOjb[conditon]}"${conval}"`;
} else {
policyStr += `[${param}]${conOjb[conditon]}("${conval}")`;
}
}
}
}
});
}else if(policyFlag.indexOf("commonly")!=-1){
commonlypolicyItems = [];
$(doms).each(function (i, v) {
var domId = $(v).attr("id");
if (domId.indexOf("condition") != -1) {//条件
var j = relationobj[''+i+''];
var open = $(v).find('.layui-form-switch').hasClass("layui-form-onswitch");
if (open) {
policyStr += "||"
commonlypolicyItems[j].relationSymbol= "1";
} else {
policyStr += "&&"
commonlypolicyItems[j].relationSymbol= "0";
}
} else { //值
var conditon = $(v).find(".condition").val();
var cls = policyFlag + "_value";
var paramflag = policyFlag + "_policy_param"
var conval = $(v).find('[flag="' + cls + '"]').val().trim();
var param = $(v).find('[name="' + paramflag + '"]').val().trim();
if (conval && param) {
if (param == "current_kpi") {
var itemObj = {
"confNo":kpiId,
"kpiId" :kpiId,
"type":param,
"operatorSymbol":conditon,
'operatorValue':conval,
"relationSymbol": '',
"isTermOver": 0,
"sort": 0,
"policyFlag":policyFlag
}
commonlypolicyItems.push(itemObj);
if (conditon < 5) { //数字类的
policyStr += `Double.parseDouble([${kpiId},kpiValue])${conOjb[conditon]}${conval}`;
} else { //字符串类的
policyStr += `[${kpiId},kpiValue]${conOjb[conditon]}("${conval}")`;
}
} else {
var itemObj = {
"confNo":param,
"kpiId" :kpiId,
"type":param,
"operatorSymbol":conditon,
'operatorValue': conval,
"relationSymbol": '',
"isTermOver": 0,
"sort": i-1,
"policyFlag":policyFlag
}
commonlypolicyItems.push(itemObj);
if (conditon < 5) {
policyStr += `[${param}]${conOjb[conditon]}"${conval}"`;
} else {
policyStr += `[${param}]${conOjb[conditon]}("${conval}")`;
}
}
}
}
});
}
if(policyStr){
$(`#${policyFlag}Policy`).val(policyStr);
}else{
... ... @@ -186,11 +871,33 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
charToExpr(data, 'commonlyExpr');
charToExpr(data, 'importantExpr');
charToExpr(data, 'seriousExpr');
var params = {};
var policyConfigObj ={}
policyConfigObj.seriousPolicyDesc = data["seriousPolicy"];
policyConfigObj.importantPolicyDesc = data["importantPolicy"];
policyConfigObj.commonlyPolicyDesc = data["commonlyPolicy"];
if(seriouspolicyItems.length>0) {
for (let i = 0; i < seriouspolicyItems.length; i++) {
policyConfigItems.push(seriouspolicyItems[i]);
}
}
if(importantpolicyItems.length>0){
for (let i = 0; i < importantpolicyItems.length; i++) {
policyConfigItems.push(importantpolicyItems[i]);
}
}
if(commonlypolicyItems.length>0){
for (let i = 0; i < commonlypolicyItems.length; i++) {
policyConfigItems.push(commonlypolicyItems[i]);
}
}
params.data = JSON.stringify(data);
params.policyConfigObj =JSON.stringify(policyConfigObj);
params.policyConfigItems = policyConfigItems;
form.on('submit(add-alarmpolicy-form)',function () {
admin.req({
url : domainName + '/api-web/alarmPolicy/save?access_token='+accessToken
,data:JSON.stringify(data)
,data:JSON.stringify(params)
,type:'post'
,contentType: "application/json; charset=utf-8"
,done:function (res){
... ... @@ -198,9 +905,9 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
localStorage.setItem("detailPageOfcustomPolicyId",res.str)
layer.msg(res.msg, { offset: '15px' , icon: 1 , time: 1000 },function (){
localStorage.removeItem("currentResType");
if(layui.alarmpolicyIndex && layui.alarmpolicyIndex()){
layui.alarmpolicyIndex().reloadAlarmPolicy()
}
// if(layui.alarmpolicyIndex && layui.alarmpolicyIndex()){
// layui.alarmpolicyIndex().reloadAlarmPolicy()
// }
});
}else{
layer.msg(res.msg, { offset: '15px' , icon: 7 , time: 1000 });
... ... @@ -221,9 +928,13 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
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")
.parent().parent().find("div.paramval").addClass("hide")
.parent().parent().find("input.layui-input").val("");
//console.log(clone.find("select.policyparam").html(options))
clone.find("select.policyparam").html(options);
clone.find("select.condition").html(conditionoptions);
clone.find("input[type=tel]").val('');
$(`#${id}`).after(clone).after(cond);
form.render();
//渲染新增事件
$("i.policy-input-add").off("click").on("click",function (){
... ...
... ... @@ -45,7 +45,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
// 设备类型 下拉选
$.ajax({
url: common.domainName + '/log-access/v1/lm2_logfmt_dirs/queryTreeList?access_token='+ accessToken,
url: 'http://192.168.0.44:8080' + '/log-access/v1/lm2_logfmt_dirs/queryTreeList?access_token='+ accessToken,
type: 'get',
success: function (res) {
if (res && res.data) {
... ... @@ -176,7 +176,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
});
$.ajax({
url: common.domainName + `/log-deploy/v1/lm2_protocol?access_token=${accessToken}`,
url: 'http://192.168.0.44:8080' + `/log-deploy/v1/lm2_protocol?access_token=${accessToken}`,
method:"get",
success(res){
protocolList = res.data;
... ... @@ -204,7 +204,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
resType || (resType = 'all')
var reslisTable = table.render({
elem: '#reslist_resListTable'
, url: common.domainName + '/log-access/v1/lm2_join_device'
, url: 'http://192.168.0.44:8080' + '/log-access/v1/lm2_join_device'
,where:{
access_token: accessToken,
protocolType: '',
... ... @@ -365,7 +365,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
//刷新表格
function reloadTable(resType) {
reslisTable.reload({
url:common.domainName + "/log-access/v1/lm2_join_device"
url: 'http://192.168.0.44:8080' + "/log-access/v1/lm2_join_device"
,where:{
currentPage: 1,
pageLimit: 20,
... ...
... ... @@ -54,17 +54,22 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions',
// 设备树
$.ajax({
url:common.domainName +"/log-access/v1/lm2_logfmt_dirs/queryTreeList?access_token="+accessToken,
url:'http://192.168.0.44:8080' +"/log-access/v1/lm2_logfmt_dirs/queryTreeList?access_token="+accessToken,
method:"get",
success(res){
if (res.code==200){
res.data.map(item=>{
item.checked = false
if(resTypes.includes(item.id)){
item.checked = true
}else {
item.checked = false
}
})
let option = handleTree(res.data, 'id', 'pId','children','name');
tree.render({
elem: '#resmanagetree',
id:"resmanagetree",
checkChild:true,
showLine: false,
data: option,
showCheckbox: true,
... ...
... ... @@ -8,6 +8,8 @@
<div class="layui-inline">
<label class="layui-form-label">指标</label>
<div class="layui-input-inline" style="flex: 4.5">
<!-- //指标组信息保存-->
<input type="hidden" id="alarm-policy-flagId" name="flagId" class="layui-input">
<input type="hidden" id="alarm-policy-kpiId" name="kpiId" class="layui-input">
<input type="text" id="alarm-policy-kpiName" lay-verify="required" lay-reqtext="请选择指标" class="layui-input" readonly>
</div>
... ... @@ -102,7 +104,15 @@
</div>
<div class="layui-form-item cont-base" id="serious-policy-box">
<div class="layui-input-inline smallwith">
<select class="serious_condition">
<select name="serious_policy_param" class="policyparam" lay-filter="serious_policy_param">
</select>
</div>
<div class="layui-input-inline smallwith paramval">
<input type="text" class="layui-input" id = "serious_policy_param_val" name="serious_policy_param_val"/>
</div>
<div class="layui-input-inline smallwith">
<select class="condition">
<option value="">运算符</option>
<option value="0">大于</option>
<option value="1">小于</option>
<option value="2">等于</option>
... ... @@ -115,7 +125,7 @@
</select>
</div>
<div class="layui-input-inline smallwith">
<input type="tel" autocomplete="off" class="layui-input" flag="serious_value">
<input type="tel" autocomplete="off" class="layui-input seriousvalue" flag="serious_value" >
</div>
<div class="layui-form-mid layui-word-aux"><i data-id="serious-policy-box" class="layui-icon oper-icon policy-input-add">&#xe624;</i></div>
<div class="layui-form-mid layui-word-aux"><i data-id="serious-policy-box" class="layui-icon oper-icon policy-input-del hide">&#xe67e;</i></div>
... ... @@ -171,7 +181,15 @@
</div>
<div class="layui-form-item cont-base" id="important-policy-box">
<div class="layui-input-inline smallwith">
<select class="important_condition">
<select name="important_policy_param" class="policyparam" lay-filter="important_policy_param">
</select>
</div>
<div class="layui-input-inline smallwith paramval">
<input type="text" class="layui-input" id = "important_policy_param_val" name="important_policy_param_val"/>
</div>
<div class="layui-input-inline smallwith">
<select class="condition">
<option value="">运算符</option>
<option value="0">大于</option>
<option value="1">小于</option>
<option value="2">等于</option>
... ... @@ -184,7 +202,7 @@
</select>
</div>
<div class="layui-input-inline smallwith">
<input type="tel" autocomplete="off" class="layui-input" flag="important_value">
<input type="tel" autocomplete="off" class="layui-input importantvalue" flag="important_value" >
</div>
<div class="layui-form-mid layui-word-aux"><i data-id="important-policy-box" class="layui-icon oper-icon policy-input-add">&#xe624;</i></div>
<div class="layui-form-mid layui-word-aux"><i data-id="important-policy-box" class="layui-icon oper-icon policy-input-del hide">&#xe67e;</i></div>
... ... @@ -240,7 +258,15 @@
</div>
<div class="layui-form-item cont-base" id="commonly-policy-box">
<div class="layui-input-inline smallwith">
<select class="commonly_condition">
<select name="commonly_policy_param" class="policyparam" lay-filter="commonly_policy_param">
</select>
</div>
<div class="layui-input-inline smallwith paramval">
<input type="text" class="layui-input" id = "commonly_policy_param_val" name="commonly_policy_param_val">
</div>
<div class="layui-input-inline smallwith">
<select class="condition">
<option value="">运算符</option>
<option value="0">大于</option>
<option value="1">小于</option>
<option value="2">等于</option>
... ... @@ -253,7 +279,7 @@
</select>
</div>
<div class="layui-input-inline smallwith">
<input type="tel" autocomplete="off" class="layui-input" flag="commonly_value">
<input type="tel" autocomplete="off" class="layui-input commonlyvalue" flag="commonly_value">
</div>
<div class="layui-form-mid layui-word-aux"><i data-id="commonly-policy-box" class="layui-icon oper-icon policy-input-add">&#xe624;</i></div>
<div class="layui-form-mid layui-word-aux"><i data-id="commonly-policy-box" class="layui-icon oper-icon policy-input-del hide">&#xe67e;</i></div>
... ... @@ -412,4 +438,14 @@
layui.use('alarmpolicyAdd', function (fn) {
fn({{d}});
});
</script>
\ No newline at end of file
</script>
<style type="text/css">
input[type=tel]{
width: 280px;
min-width: 280px;
}
.layui-word-aux{
left: 110px;
}
</style>
\ No newline at end of file
... ...
... ... @@ -30,21 +30,30 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
//展示类型
var showTypeList=[];
var dataBusType=[];
let busIds = data && data.busIds ? data.busIds : [];
console.log(busIds)
initShowType();
// 业务树
$.ajax({
url: domainName + "/log-access/v1/lm2_logjoin_dirs/queryTreeList?access_token="+accessToken,
url: 'http://192.168.0.44:8080' + "/log-access/v1/lm2_logjoin_dirs/queryTreeList?access_token="+accessToken,
method:"get",
success(res){
if (res.code==200){
//res.data.filter(item => !busIds.includes(item.id));
res.data.map(item=>{
item.checked = false
if(busIds.includes(item.id)){
item.checked = true
}else {
item.checked = false
}
})
let option = handleTree(res.data, 'id', 'pId','children','name');
tree.render({
elem: '#resmanagetree',
id:"resmanagetree",
checkChild:true,
showLine: false,
data: option,
showCheckbox: true,
... ...