Authored by zhangtianqi

告警订阅 改用 日志的地址接口

... ... @@ -67,7 +67,8 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
var id = $(this).data("flag");
$("#"+id).val('08:00:00 - 19:59:59');
});
$('.noticeExpr').unbind('click').on('click', function () {
// zhangtianqi 2022-06-22
/*$('.noticeExpr').unbind('click').on('click', function () {
var id = $(this).prop('id');
var alarmTimes = '';
if (['seriousExpr', 'importantExpr', 'commonlyExpr'].includes(id)) {
... ... @@ -75,7 +76,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
alarmTimes = $('#' + id + 'Times').val();
}
editNoticeExpr($(this).val(), alarmTimes, id);
});
});*/
//指标信息
if(data.kpiId){
$("#alarm-policy-kpiId").val(data.kpiId);
... ...
... ... @@ -86,7 +86,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions','xmSelect',
policyType:$('#alarmpolicy_policyType').val(),
resName: resName
}
, height: 'full-200'
, height: 'full-110'
, page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
,theme: '#1E9FFF'//自定义分页主题颜色
... ...
//告警订阅
layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function (exports) {
layui.define(['table', 'form', 'admin', 'layer', 'common','sessions','tree'], function (exports) {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
... ... @@ -24,6 +24,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
var accessToken = sessions.getToken()['access_token'];
//获得权限列表
var checkList = common.checkPermission(accessToken);
var tree = layui.tree;
//回车搜索
$('#alarmsubscribekw').keydown(function (e) {
... ... @@ -205,7 +206,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
resIdList: resIdList,
busId: busId
}
, height: 'full-200'
, height: 'full-110'
, page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
,theme: '#1E9FFF'//自定义分页主题颜色
... ... @@ -265,7 +266,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
return `<div>
<!--<span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-target">${d.useTotal}</span> / -->
<span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-resource" lay-tips="资源订阅">${d.resSubTotal}</span> /
<span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-kpi" lay-tips="指标订阅">${d.kpiSubTotal}</span> /
<!-- <span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-kpi" lay-tips="指标订阅">${d.kpiSubTotal}</span> /-->
<span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-resType" lay-tips="资源类型">${d.resTypeSubTotal}</span> /
<span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-busId" lay-tips="业务系统">${d.busSubTotal}</span>
</div>`;
... ... @@ -310,9 +311,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
'<div>' +
'<button data-id="{{d.subId}}" lay-tips="删除" type="button" class="layui-btn layui-btn-xs layui-btn-normal delete-alarmsubscribe-btn"><i class="layui-icon layui-icon-delete"></i></button>' +
'<button data-id="{{d.subId}}" lay-tips="资源订阅" type="button" class="layui-btn layui-btn-xs layui-btn-normal alarmsubscribe-resource-btn"><i class="iconfont">&#XE523;</i></button>' +
'<button data-id="{{d.subId}}" lay-tips="指标订阅" type="button" class="layui-btn layui-btn-xs layui-btn-normal alarmsubscribe-kpi-btn"><i class="iconfont">&#XE520;</i></button>' +
'<button data-id="{{d.subId}}" lay-tips="资源类型订阅" type="button" class="layui-btn layui-btn-xs layui-btn-normal alarmsubscribe-resType-btn"><i class="iconfont">&#XE521;</i></button>' +
'<button data-id="{{d.subId}}" lay-tips="业务类型订阅" type="button" class="layui-btn layui-btn-xs layui-btn-normal alarmsubscribe-busId-btn"><i class="iconfont">&#XE522;</i></button>' +
// '<button data-id="{{d.subId}}" lay-tips="指标订阅" type="button" class="layui-btn layui-btn-xs layui-btn-normal alarmsubscribe-kpi-btn"><i class="iconfont">&#XE520;</i></button>' +
'<button data-id="{{d.subId}}" lay-tips="设备分类" type="button" class="layui-btn layui-btn-xs layui-btn-normal alarmsubscribe-resType-btn"><i class="iconfont">&#XE521;</i></button>' +//资源类型订阅
'<button data-id="{{d.subId}}" lay-tips="业务分类" type="button" class="layui-btn layui-btn-xs layui-btn-normal alarmsubscribe-busId-btn"><i class="iconfont">&#XE522;</i></button>' + //业务类型订阅
'<button data-id="{{d.subId}}" lay-tips="订阅指标、资源排除配置" type="button" class="layui-btn layui-btn-xs layui-btn-normal alarmsubscribe-exclude-kpi"><i class="layui-icon layui-icon-templeate-1"></i>' +
'</div>'
}
... ... @@ -817,7 +818,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
}
var resIds = [];
$.each(data,function (i,v){
resIds.push(v.resId);
// resIds.push(v.resId);
resIds.push(v.id);
})
admin.req({
... ... @@ -947,7 +949,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
//找到选择的所有业务 并且订阅
var bustype = layui.bustype({"busIds": list});
var data = bustype.getData();
insertResTypeOrBusId(data, 1, subId);
console.log(data);
insertResTypeOrBusId(data, 1, subId);
});
});
... ... @@ -969,12 +972,12 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
//添加或修改 资源类型订阅或业务订阅
function insertResTypeOrBusId(data, type, subId, id) {
let targetId = type === 0 ? data.filter(item => item.forbidden === 0).map(item => item.resTypeCode ? item.resTypeCode : item.busId).toString() : data.map(item => item.busId).toString();
//let targetId = type === 0 ? data.filter(item => item.forbidden === 0).map(item => item.resTypeCode ? item.resTypeCode : item.busId).toString() : data.map(item => item.busId).toString();
let typeSubscribe = {
id: id,
subId: subId,
type: type,
targetId: targetId
targetId: data
};
admin.req({
url: common.domainName + '/api-web/bTypeSubscribe/insertOrChange?access_token=' + accessToken,
... ...
... ... @@ -649,6 +649,7 @@ layui.define(['xmSelect', 'md5'], function (exports) {
},
//打开弹框
openWin: function (url, name, params, btns, fn, cancelfn, area, done, layerParams) {
console.log(fn);
if (!name) {
name = "信息";
}
... ... @@ -666,6 +667,7 @@ layui.define(['xmSelect', 'md5'], function (exports) {
id: id,
content: laytpl(res.body).render(JSON.stringify(params)),
success: function (layero, index) {
console.log(layero, index);
if(done) {
if (typeof done === "function") {
done(layero, index);
... ...
//资源列表
layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'], function (exports) {
layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect', 'cascader'], function (exports) {
var $ = layui.$;
var form = layui.form;
var table = layui.table;
var xmSelect = layui.table;
// var xmSelect = layui.table;
var common = layui.common;
var resListSelectIds = [];
let protocolList = [];
var cascader = layui.cascader;
//对外暴露的接口
exports('reslist', function (data) {
var sessions = layui.sessions;
var router = layui.router();
var accessToken = sessions.getToken().access_token;
var accessToken = '187e56d0-e408-4982-8d9c-fb3d52c5de13' //sessions.getToken().access_token;
var resType = (data && common.isNotEmpty(data.resType)) ? data.resType : '';
var table_data = [];
// 业务类型Id
... ... @@ -38,6 +40,87 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
if (router.search.resType) {
resType = router.search.resType;
}
// 设备类型 下拉选
$.ajax({
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) {
res.data.map(item=>{
item.label = item.name;
item.value = item.id;
})
var data = handleTree(res.data,'id','pId','children','label')
cascader({
elem: "#devType",
data: data,
showLastLevels: true,
success: function (valData,labelData) {
console.log(valData,labelData);
let data = valData[valData.length-1];
reloadTable(data);
}
});
}
}
})
/**
* 构造树型结构数据
* zhangtianqi
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
*/
function handleTree(data, id, parentId, children, title) {
let config = {
id: id || 'id',
parentId: parentId || 'parentId',
childrenList: children || 'children',
title: title || 'title'
};
var childrenListMap = {};
var nodeIds = {};
var tree = [];
for (let d of data) {
let parentId = d[config.parentId];
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = [];
}
nodeIds[d[config.id]] = d;
childrenListMap[parentId].push(d);
}
for (let d of data) {
let parentId = d[config.parentId];
if (nodeIds[parentId] == null) {
tree.push(d);
}
}
for (let t of tree) {
adaptToChildrenList(t);
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]];
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c);
}
}else{
delete o[config.childrenList]
}
}
return tree;
};
// 如果参数有busId
if(data && common.isNotEmpty(data.busId)){
busId = data.busId;
... ... @@ -49,6 +132,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
$("#reslist_resListBizTypes").val(busId);
form.render("select");
});
//绑定资源类型下拉选择
common.resTypeXmSelect({
el: '#reslist_restype',
... ... @@ -77,10 +161,34 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
//回车搜索
$('#reslist_keyword').keydown(function (e) {
if (e.keyCode === 13) {
reloadTable(resType);
// reloadTable(resType);
reloadTable()
}
});
$.ajax({
url: `http://192.168.0.44:8080/log-deploy/v1/lm2_protocol?access_token=${accessToken}`,
method:"get",
success(res){
protocolList = res.data;
// 设置协议类型 下拉选
let options = "<option value=''>=所属业务=</option>";
$.each(protocolList, function (i, v) {
options += '<option value="' + v.id + '">' + v.protocolType + '</option>';
});
$('#protocolType').html(options);
},
})
// 回显表格协议类型字段
function agreementType(agreementId) {
var agreementType = '';
protocolList.forEach(v => {
if (v.id == agreementId) {
agreementType = v.protocolType;
}
});
return agreementType;
};
//选择框搜索事件
bindSelectEvent();
... ... @@ -88,7 +196,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
resType || (resType = 'all')
var reslisTable = table.render({
elem: '#reslist_resListTable'
, url: common.domainName + '/api-web/home/res-list/' + resType
/*, url: common.domainName + '/api-web/home/res-list/' + resType
, where: {
access_token: accessToken,
resName: $("#reslist_keyword").val(),
... ... @@ -109,6 +217,16 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
os:$("#resManageIndexForm").find("select[id='reslist_os']").val(),
collProtocolList:$("#resManageIndexForm").find("select[id='collProtocol']").val(),
pageName:'reslist'
}*/
, url: 'http://192.168.0.44:8080/log-access/v1/lm2_join_device'
,where:{
access_token: accessToken,
protocolType: '',
_condition_: undefined,
_sort_:'-join_time',
devType: '',
noType: undefined,
joinType: undefined,
}
, height: 'full-350'
, cellMinWidth: 80
... ... @@ -121,13 +239,38 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
, cols: [[
{type: 'checkbox'},
{type: 'numbers', title: '序号', align: 'center'}
, {field: 'resName', title: '资源名称', minWidth: 300, align: 'center'}
, {field: 'ip', title: 'IP地址', align: 'center'}
, {field: 'os', title: 'os', align: 'center'}
, {field: 'collProtocol', title: '采集协议', align: 'center'}
, {field: 'adminName', title: '负责人', align: 'center'}
, {field: 'resTypeName', title: '资源类型', align: 'center'}
, {field: 'healthDesc', title: '资源状态', align: 'center'}
, {field: 'ipAddr', title: 'IP地址', align: 'center'}
, {field: 'devIdent', title: '设备标识', align: 'center'}
, {field: 'logfmtDirName', title: '设备类型', align: 'center'}
, {field: 'lm2LogjoinDirDTOS', title: '业务类型', align: 'center',
templet(e){
if (e.lm2LogjoinDirDTOS){
let el=''
$.each(e.lm2LogjoinDirNameStrs,(i,v)=>{
el += `<span>${v}</span><br>`
})
return el
}else{
return ``
}
}
}
, {field: 'protocolType', title: '协议类型', align: 'center',
templet:function (e){
return `${agreementType(e.protocolType)}`
}}
, {field: 'joinType', title: '设备来源', align: 'center',
templet(e){
if (e.joinType == 0) {
return "自动上报"
} else if (e.joinType == 1) {
return "手动录入"
} else {
return ""
}
}
}
, {field: 'joinTime', title: '接入时间', align: 'center'}
]],
done: function (res) {
table_data = res.data;
... ... @@ -156,6 +299,18 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
});
//绑定下拉搜索事件
function bindSelectEvent() {
//协议类型搜索
form.on('select(protocolType)', function(data){
// reloadTable(resType);
reloadTable()
});
//设备来源搜索
form.on('select(joinType)', function(data){
// reloadTable(resType);
reloadTable()
});
//选择业务搜索
form.on('select(reslist_resListBizTypes)', function(data){
reloadTable(resType);
... ... @@ -197,8 +352,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
//刷新表格
function reloadTable(resType) {
reslisTable.reload({
url: common.domainName + '/api-web/home/res-list/' + (resType ? resType : 'all')
, where: {
//url: common.domainName + '/api-web/home/res-list/' + (resType ? resType : 'all')
url:"http://192.168.0.44:8080/log-access/v1/lm2_join_device"
/*, where: {
access_token: accessToken,
resName: $("#reslist_keyword").val(),
busId: $("#reslist_resListBizTypes").val(),
... ... @@ -216,8 +372,18 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
os:$("#resManageIndexForm").find("select[id='reslist_os']").val(),
collProtocolList:$("#resManageIndexForm").find("select[id='collProtocol']").val(),
editMode: 'true'
},
page: {
},*/
,where:{
currentPage: 1,
pageLimit: 10,
protocolType: $('#protocolType').val(),
_condition_: $('#reslist_keyword').val(),
_sort_:'-join_time',
devType: resType?resType:'',
noType: undefined,
joinType: $('#joinType').val(),
}
,page: {
curr: 1 //重新从第 1 页开始
},
done: function (res) {
... ...
// 资源类型管理
layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', 'treeTable', 'xmSelect', 'userlist'], function (exports) {
layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', 'treeTable', 'xmSelect', 'userlist','tree',], function (exports) {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
... ... @@ -20,8 +20,10 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions',
var resource_view = '';
var biz_view = '';
var collTypeSelect = '';
var tree = layui.tree;
//传递参数
let resTypes = data && data.resTypes ? data.resTypes : [];
console.log(resTypes);
let showType = data && data.showType==0 ? data.showType : 1;
if(showType == 0){
$('#resourceType-forbidden-type option[value="2"]').removeAttr("selected");
... ... @@ -49,6 +51,87 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions',
$('.layui-inline-resourceType-forbidden').hide();
}
initShowType();
// 设备树
$.ajax({
url:common.domainName+"/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
})
let option = handleTree(res.data, 'id', 'pId','children','name');
tree.render({
elem: '#resmanagetree',
id:"resmanagetree",
showLine: false,
data: option,
showCheckbox: true,
})
}
}
})
/**
* 构造树型结构数据
* zhangtianqi
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
*/
function handleTree(data, id, parentId, children, title) {
let config = {
id: id || 'id',
parentId: parentId || 'parentId',
childrenList: children || 'children',
title: title || 'title'
};
var childrenListMap = {};
var nodeIds = {};
var tree = [];
for (let d of data) {
let parentId = d[config.parentId];
let title = d[config.title]
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = [];
}
d.title = title;
nodeIds[d[config.id]] = d;
childrenListMap[parentId].push(d);
}
for (let d of data) {
let parentId = d[config.parentId];
let title = d[config.title]
d.title = title;
if (nodeIds[parentId] == null) {
tree.push(d);
}
}
for (let t of tree) {
adaptToChildrenList(t);
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]];
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c);
}
}
}
return tree;
};
//获取采集类型字典
admin.req({
url: domainName + '/api-web/manage/ddic/findSucDdics/collType'
... ... @@ -1321,13 +1404,38 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions',
return cols;
}
function getResTypeChecks() {
var res=restypeTable.checkStatus(false);
/*var res=restypeTable.checkStatus(false);
$.each(res,function (i,v) {
if(v.resTypeCode=='HOST_X86SERVER'){
v.showType=$('#resourceType_showType')?$('#resourceType_showType').val():null;
}
});
return restypeTable.checkStatus(false);
return restypeTable.checkStatus(false);*/
var data = tree.getChecked('resmanagetree');
var nodeIds = new Array();
nodeIds = getCheckedId(data)
return nodeIds;
}
//获取所有选中的节点id
function getCheckedId(data) {
var id = "";
$.each(data, function (index, item) {
if (id != "") {
id = id + "," + item.id;
}
else {
id = item.id;
}
//item 没有children属性
if (item.children != null) {
var i = getCheckedId(item.children);
if (i != "") {
id = id + "," + i;
}
}
});
return id;
}
return {getResTypeChecks: getResTypeChecks}
... ...
... ... @@ -19,7 +19,8 @@
<input type="text" class="layui-input" lay-verify="required" lay-reqtext="请输入策略名称" name="alarmPolicyName" id="alarmPolicyName">
</div>
</div>
<div class="layui-inline">
<!--zhangtianqi 2022-06-22-->
<div class="layui-inline hide">
<label class="layui-form-label">是否默认</label>
<div class="layui-input-inline padding-left-10">
<input type="radio" name="policyType" value="1" title="默认">
... ... @@ -66,8 +67,10 @@
<li>严重</li>
<li>重要</li>
<li>一般</li>
<li>过滤</li>
<li>消除</li>
<!--zhangtianqi 2022-06-22-->
<li class="hide">过滤</li>
<li class="hide">消除</li>
<!-- <li>告警内容表达式</li>-->
</ul>
<div class="layui-tab-content">
... ... @@ -78,7 +81,8 @@
<div class="box-group-right">
<div class="layui-form-item">
<div class="layui-input-block">
<textarea placeholder="请输入内容" class="layui-textarea noticeExpr" readonly id="alarmContentExpr" name="alarmContentExpr"></textarea>
<textarea placeholder="请输入内容" class="layui-textarea noticeExpr" id="alarmContentExpr" name="alarmContentExpr"></textarea>
<!-- readonly --> <!--zhangtianqi 2022-06-22-->
</div>
</div>
</div>
... ...
... ... @@ -12,7 +12,8 @@
<input type="text" id="alarmpolicykw" name="alarmpolicykw" lay-tips="关键字检索包含 </br>策略名称" placeholder="输入关键字,回车搜索" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<!-- zhangtianqi 2022-6-22 -->
<div class="layui-inline hide">
<div class="layui-input-inline layui-input-inline--long">
<select lay-filter="alarmpolicy_category" id="alarmpolicy_category">
<option value="">=指标分类=</option>
... ... @@ -32,12 +33,12 @@
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline">
<div id="alarmpolicy_kpi_resName"></div>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline layui-input-inline--long">
<select lay-filter="alarmpolicy_policyType" id="alarmpolicy_policyType">
<option value="">=策略类型=</option>
... ...
... ... @@ -13,9 +13,9 @@
<div class="layui-input-inline">
<select name="subType" lay-filter="alarm-subscribe-subype">
<option value="1">告警订阅</option>
<option value="2">报表订阅</option>
<option value="3">系统通知订阅</option>
<option value="4">采集器异常订阅</option>
<!-- <option value="2">报表订阅</option>-->
<!-- <option value="3">系统通知订阅</option>-->
<!-- <option value="4">采集器异常订阅</option>-->
</select>
</div>
</div>
... ... @@ -120,14 +120,16 @@
<!-- <i class="layui-icon form-btn-icon" lay-tips="订阅绑定用户、部门及组" id="alarmsubscirbe-form-select-users">&#xe615;</i>-->
</div>
</div>
<div class="layui-form-item">
<!-- zhangtianqi 2022-6-22 -->
<div class="layui-form-item hide">
<label class="layui-form-label">接收部门</label>
<div class="layui-input-block tags-input">
<div class="tags" id="selecte_org_content_id"></div>
<div class="layui-form-mid layui-word-aux" style="padding: 0!important;position: relative;top: -28px;left: 98%"></div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-item hide">
<label class="layui-form-label">接收组</label>
<div class="layui-input-block tags-input">
<div class="tags" id="selecte_group_content_id"></div>
... ... @@ -135,7 +137,7 @@
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-item hide">
<label class="layui-form-label textarea-label">订阅描述</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="subDesc"></textarea>
... ...
... ... @@ -13,10 +13,11 @@
</div>
</div>
<!--订阅类型-->
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline layui-input-inline--long alarmsubscribe_type multi-query">
</div>
</div>
<!-- <div class="layui-inline">-->
<!-- <div class="layui-input-inline layui-input-inline&#45;&#45;long">-->
<!-- <select name="subType" lay-filter="alarmsubscribe_type">-->
... ... @@ -29,10 +30,11 @@
<!-- </div>-->
<!-- </div>-->
<!--通知方式-->
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline layui-input-inline--long alarmsubscribe_noticeway multi-query">
</div>
</div>
<!-- <div class="layui-inline">-->
<!-- <div class="layui-input-inline layui-input-inline&#45;&#45;long">-->
<!-- <select name="subWay" lay-filter="alarmsubscribe_noticeway">-->
... ... @@ -70,7 +72,7 @@
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline layui-input-inline--long">
<select name="alarmsubscribe_noticeway" lay-filter="alarmsubscribe_noticeway">
<option value="">=报表类型=</option>
... ...
... ... @@ -2,7 +2,7 @@
<article class="page-container">
<div class="page-panel">
<div class="main">
<div class="layui-card">
<div class="layui-card hide">
<div class="layui-card-header">
<div class="layui-status">
<form class="layui-form layui-card-header layuiadmin-card-header-auto">
... ... @@ -53,10 +53,18 @@
<table id="restype-table" lay-filter="restypetable"></table>
</div>
</div>
<div class="layui-card">
<div class="layui-card">
<div class="layui-card-body">
<div id="resmanagetree" class="demo-tree demo-tree-box"></div>
</div>
</div>
</div>
</div>
</div>
</article>
<!--新增/编辑弹出框-->
<script type="text/html" id="resTypeEdit">
<form class="layui-form layui-form-pane" action="" lay-filter="form-restype-edit">
... ...
... ... @@ -9,15 +9,44 @@
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input id="reslist_keyword" type="text" name="title" placeholder="输入关键字,回车搜索" class="layui-input">
<input id="reslist_keyword" type="text" name="title" placeholder="请输入设备标识/IP地址" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="protocolType" id="protocolType" lay-filter="protocolType" lay-verify="required">
<option value="">=协议类型=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id="devType" class="layui-input" placeholder="请输入设备类型">
<!-- <select name="reslist_resStatus" id="devType" lay-filter="reslist_resStatus" lay-verify="required">-->
<!-- <option value="">=设备类型=</option>-->
<!-- </select>-->
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="joinType" id="joinType" lay-filter="joinType" lay-verify="required">
<option value="">=设备来源=</option>
<option value="0">自动上报</option>
<option value="1">手动录入</option>
</select>
</div>
</div>
<div class="layui-inline hide">
<div class="layui-input-inline layui-input-inline--long">
<div id="reslist_restype"></div>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline">
<select name="reslist_resStatus" id="reslist_resStatus" lay-filter="reslist_resStatus" lay-verify="required">
<option value="">=资源健康状态=</option>
... ... @@ -27,14 +56,14 @@
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline">
<select name="label" id="reslist_resListBizTypes" lay-filter="reslist_resListBizTypes" lay-search>
<option value="">=选择业务=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline">
<select name="state" lay-filter="state">
<option value="">=资源监控状态=</option>
... ... @@ -45,14 +74,14 @@
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline">
<select name="provider" id="reslist_provider" lay-filter="reslist_provider" lay-search>
<option value="">=选择厂商=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline">
<select name="collectionState" lay-filter="resManageCollectionState">
<option value="">=任务绑定状态=</option>
... ... @@ -61,14 +90,14 @@
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline">
<select id="reslist_os" lay-filter="reslist_os" lay-search>
<option value="">=选择系统=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-inline hide">
<div class="layui-input-inline">
<select id="collProtocol" name="collProtocol" lay-filter="collProtocol">
<option value="">=采集协议=</option>
... ...
... ... @@ -6,7 +6,7 @@
<div class="layui-input-block" style="margin-left: 0px">
<input type="checkbox" lay-filter="type" value="user" name="type" title="用户">
<input type="checkbox" lay-filter="type" value="org" name="type" title="部门">
<input type="checkbox" lay-filter="type" value="group" name="type" title="组">
<!-- <input type="checkbox" lay-filter="type" value="group" name="type" title="组">-->
</div>
</div>
<div class="layui-form-item userDiv hide">
... ...
// 业务类型管理
layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', 'commonDetail', 'treeTable', 'xmSelect', 'userlist', 'reslist'], function (exports) {
layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', 'commonDetail', 'treeTable', 'xmSelect', 'userlist', 'reslist', 'tree'], function (exports) {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
... ... @@ -16,6 +16,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
var busTypeTable;
// 对外暴露的接口
exports('bustype', function (data) {
var tree = layui.tree;
var sessions = layui.sessions;
var accessToken = sessions.getToken()['access_token'];
... ... @@ -31,13 +32,91 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
var dataBusType=[];
initShowType();
// 业务树
$.ajax({
url: common.domainName + "/log-access/v1/lm2_logjoin_dirs/queryTreeList?access_token="+accessToken,
method:"get",
success(res){
if (res.code==200){
res.data.map(item=>{
item.checked = false
})
let option = handleTree(res.data, 'id', 'pId','children','name');
tree.render({
elem: '#resmanagetree',
id:"resmanagetree",
showLine: false,
data: option,
showCheckbox: true,
})
}
}
})
/**
* 构造树型结构数据
* zhangtianqi
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
*/
function handleTree(data, id, parentId, children, title) {
let config = {
id: id || 'id',
parentId: parentId || 'parentId',
childrenList: children || 'children',
title: title || 'title'
};
var childrenListMap = {};
var nodeIds = {};
var tree = [];
for (let d of data) {
let parentId = d[config.parentId];
let title = d[config.title]
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = [];
}
d.title = title;
nodeIds[d[config.id]] = d;
childrenListMap[parentId].push(d);
}
for (let d of data) {
let parentId = d[config.parentId];
let title = d[config.title]
d.title = title;
if (nodeIds[parentId] == null) {
tree.push(d);
}
}
for (let t of tree) {
adaptToChildrenList(t);
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]];
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c);
}
}
}
return tree;
};
// 查询条件
var conditions = {busTypeName: ''};
// 加载遮罩
var loading;
var checkList = common.checkPermission(accessToken);
loadBusTypeTable();
// loadBusTypeTable();
// 查询条件框回车查询事件
$('#condition-bustype-name').keydown(function (e) {
if (e.keyCode === 13) {
... ... @@ -914,7 +993,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
}
//获取选中的数据
function getCheckData() {
if(mode){
/*if(mode){
//获取改变的值
var str='';
var $tr=$('#bustype-table').next().find('tbody tr');
... ... @@ -931,8 +1010,33 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
return str;
}else{
return busTypeTable.checkStatus(false);
}
}*/
var data = tree.getChecked('resmanagetree');
var nodeIds = new Array();
nodeIds = getCheckedId(data)
return nodeIds;
}
//获取所有选中的节点id
function getCheckedId(data) {
var id = "";
$.each(data, function (index, item) {
if (id != "") {
id = id + "," + item.id;
}
else {
id = item.id;
}
//item 没有children属性
if (item.children != null) {
var i = getCheckedId(item.children);
if (i != "") {
id = id + "," + i;
}
}
});
return id;
}
return {getData: getCheckData};
... ...
... ... @@ -4,7 +4,7 @@
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-status">
<div class="layui-status hide">
<form class="layui-card-header layuiadmin-card-header-auto layui-form" lay-filter="bustype-query-form">
<div class="layui-form-item">
<div class="layui-inline">
... ... @@ -22,7 +22,7 @@
</div>
</div>
<div class="layui-card-body">
<div class="warn-btns">
<div class="warn-btns hide">
<button class="layui-btn layui-btn-sm layui-btn-normal" id="bustype-create">
<i class="layui-icon">&#xe654;</i>新增
</button>
... ... @@ -37,7 +37,8 @@
</button>
<span class="auto-flush" id="span-bustype-total">共 0 个业务</span>
</div>
<table id="bustype-table" lay-filter="bustypetable"></table>
<table id="bustype-table" class="hide" lay-filter="bustypetable"></table>
<div id="resmanagetree" class="demo-tree demo-tree-box"></div>
</div>
</div>
</div>
... ...