Authored by zhangtianqi

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

@@ -67,7 +67,8 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun @@ -67,7 +67,8 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
67 var id = $(this).data("flag"); 67 var id = $(this).data("flag");
68 $("#"+id).val('08:00:00 - 19:59:59'); 68 $("#"+id).val('08:00:00 - 19:59:59');
69 }); 69 });
70 - $('.noticeExpr').unbind('click').on('click', function () { 70 + // zhangtianqi 2022-06-22
  71 + /*$('.noticeExpr').unbind('click').on('click', function () {
71 var id = $(this).prop('id'); 72 var id = $(this).prop('id');
72 var alarmTimes = ''; 73 var alarmTimes = '';
73 if (['seriousExpr', 'importantExpr', 'commonlyExpr'].includes(id)) { 74 if (['seriousExpr', 'importantExpr', 'commonlyExpr'].includes(id)) {
@@ -75,7 +76,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun @@ -75,7 +76,7 @@ layui.define(['form', 'admin', 'laydate', 'common','sessions','reskpilist'], fun
75 alarmTimes = $('#' + id + 'Times').val(); 76 alarmTimes = $('#' + id + 'Times').val();
76 } 77 }
77 editNoticeExpr($(this).val(), alarmTimes, id); 78 editNoticeExpr($(this).val(), alarmTimes, id);
78 - }); 79 + });*/
79 //指标信息 80 //指标信息
80 if(data.kpiId){ 81 if(data.kpiId){
81 $("#alarm-policy-kpiId").val(data.kpiId); 82 $("#alarm-policy-kpiId").val(data.kpiId);
@@ -86,7 +86,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions','xmSelect', @@ -86,7 +86,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions','xmSelect',
86 policyType:$('#alarmpolicy_policyType').val(), 86 policyType:$('#alarmpolicy_policyType').val(),
87 resName: resName 87 resName: resName
88 } 88 }
89 - , height: 'full-200' 89 + , height: 'full-110'
90 , page: { 90 , page: {
91 layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] 91 layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
92 ,theme: '#1E9FFF'//自定义分页主题颜色 92 ,theme: '#1E9FFF'//自定义分页主题颜色
1 //告警订阅 1 //告警订阅
2 -layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function (exports) { 2 +layui.define(['table', 'form', 'admin', 'layer', 'common','sessions','tree'], function (exports) {
3 var $ = layui.$; 3 var $ = layui.$;
4 var form = layui.form; 4 var form = layui.form;
5 var layer = layui.layer; 5 var layer = layui.layer;
@@ -24,6 +24,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function @@ -24,6 +24,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
24 var accessToken = sessions.getToken()['access_token']; 24 var accessToken = sessions.getToken()['access_token'];
25 //获得权限列表 25 //获得权限列表
26 var checkList = common.checkPermission(accessToken); 26 var checkList = common.checkPermission(accessToken);
  27 + var tree = layui.tree;
27 28
28 //回车搜索 29 //回车搜索
29 $('#alarmsubscribekw').keydown(function (e) { 30 $('#alarmsubscribekw').keydown(function (e) {
@@ -205,7 +206,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function @@ -205,7 +206,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
205 resIdList: resIdList, 206 resIdList: resIdList,
206 busId: busId 207 busId: busId
207 } 208 }
208 - , height: 'full-200' 209 + , height: 'full-110'
209 , page: { 210 , page: {
210 layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] 211 layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
211 ,theme: '#1E9FFF'//自定义分页主题颜色 212 ,theme: '#1E9FFF'//自定义分页主题颜色
@@ -265,7 +266,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function @@ -265,7 +266,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
265 return `<div> 266 return `<div>
266 <!--<span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-target">${d.useTotal}</span> / --> 267 <!--<span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-target">${d.useTotal}</span> / -->
267 <span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-resource" lay-tips="资源订阅">${d.resSubTotal}</span> / 268 <span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-resource" lay-tips="资源订阅">${d.resSubTotal}</span> /
268 - <span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-kpi" lay-tips="指标订阅">${d.kpiSubTotal}</span> / 269 +<!-- <span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-kpi" lay-tips="指标订阅">${d.kpiSubTotal}</span> /-->
269 <span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-resType" lay-tips="资源类型">${d.resTypeSubTotal}</span> / 270 <span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-resType" lay-tips="资源类型">${d.resTypeSubTotal}</span> /
270 <span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-busId" lay-tips="业务系统">${d.busSubTotal}</span> 271 <span data-id="${d.subId}" class="layui-table-link view-alarmsubscribe-busId" lay-tips="业务系统">${d.busSubTotal}</span>
271 </div>`; 272 </div>`;
@@ -310,9 +311,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function @@ -310,9 +311,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
310 '<div>' + 311 '<div>' +
311 '<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>' + 312 '<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>' +
312 '<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>' + 313 '<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>' +
313 - '<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>' +  
314 - '<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>' +  
315 - '<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>' + 314 + // '<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>' +
  315 + '<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>' +//资源类型订阅
  316 + '<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>' + //业务类型订阅
316 '<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>' + 317 '<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>' +
317 '</div>' 318 '</div>'
318 } 319 }
@@ -817,7 +818,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function @@ -817,7 +818,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
817 } 818 }
818 var resIds = []; 819 var resIds = [];
819 $.each(data,function (i,v){ 820 $.each(data,function (i,v){
820 - resIds.push(v.resId); 821 + // resIds.push(v.resId);
  822 + resIds.push(v.id);
821 }) 823 })
822 824
823 admin.req({ 825 admin.req({
@@ -947,7 +949,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function @@ -947,7 +949,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
947 //找到选择的所有业务 并且订阅 949 //找到选择的所有业务 并且订阅
948 var bustype = layui.bustype({"busIds": list}); 950 var bustype = layui.bustype({"busIds": list});
949 var data = bustype.getData(); 951 var data = bustype.getData();
950 - insertResTypeOrBusId(data, 1, subId); 952 + console.log(data);
  953 + insertResTypeOrBusId(data, 1, subId);
951 }); 954 });
952 }); 955 });
953 956
@@ -969,12 +972,12 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function @@ -969,12 +972,12 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
969 972
970 //添加或修改 资源类型订阅或业务订阅 973 //添加或修改 资源类型订阅或业务订阅
971 function insertResTypeOrBusId(data, type, subId, id) { 974 function insertResTypeOrBusId(data, type, subId, id) {
972 - 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(); 975 + //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();
973 let typeSubscribe = { 976 let typeSubscribe = {
974 id: id, 977 id: id,
975 subId: subId, 978 subId: subId,
976 type: type, 979 type: type,
977 - targetId: targetId 980 + targetId: data
978 }; 981 };
979 admin.req({ 982 admin.req({
980 url: common.domainName + '/api-web/bTypeSubscribe/insertOrChange?access_token=' + accessToken, 983 url: common.domainName + '/api-web/bTypeSubscribe/insertOrChange?access_token=' + accessToken,
@@ -649,6 +649,7 @@ layui.define(['xmSelect', 'md5'], function (exports) { @@ -649,6 +649,7 @@ layui.define(['xmSelect', 'md5'], function (exports) {
649 }, 649 },
650 //打开弹框 650 //打开弹框
651 openWin: function (url, name, params, btns, fn, cancelfn, area, done, layerParams) { 651 openWin: function (url, name, params, btns, fn, cancelfn, area, done, layerParams) {
  652 + console.log(fn);
652 if (!name) { 653 if (!name) {
653 name = "信息"; 654 name = "信息";
654 } 655 }
@@ -666,6 +667,7 @@ layui.define(['xmSelect', 'md5'], function (exports) { @@ -666,6 +667,7 @@ layui.define(['xmSelect', 'md5'], function (exports) {
666 id: id, 667 id: id,
667 content: laytpl(res.body).render(JSON.stringify(params)), 668 content: laytpl(res.body).render(JSON.stringify(params)),
668 success: function (layero, index) { 669 success: function (layero, index) {
  670 + console.log(layero, index);
669 if(done) { 671 if(done) {
670 if (typeof done === "function") { 672 if (typeof done === "function") {
671 done(layero, index); 673 done(layero, index);
1 //资源列表 1 //资源列表
2 -layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'], function (exports) { 2 +layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect', 'cascader'], function (exports) {
3 var $ = layui.$; 3 var $ = layui.$;
4 var form = layui.form; 4 var form = layui.form;
5 var table = layui.table; 5 var table = layui.table;
6 - var xmSelect = layui.table; 6 + // var xmSelect = layui.table;
7 var common = layui.common; 7 var common = layui.common;
8 var resListSelectIds = []; 8 var resListSelectIds = [];
  9 + let protocolList = [];
  10 + var cascader = layui.cascader;
9 //对外暴露的接口 11 //对外暴露的接口
10 exports('reslist', function (data) { 12 exports('reslist', function (data) {
11 var sessions = layui.sessions; 13 var sessions = layui.sessions;
12 var router = layui.router(); 14 var router = layui.router();
13 - var accessToken = sessions.getToken().access_token; 15 + var accessToken = '187e56d0-e408-4982-8d9c-fb3d52c5de13' //sessions.getToken().access_token;
14 var resType = (data && common.isNotEmpty(data.resType)) ? data.resType : ''; 16 var resType = (data && common.isNotEmpty(data.resType)) ? data.resType : '';
15 var table_data = []; 17 var table_data = [];
16 // 业务类型Id 18 // 业务类型Id
@@ -38,6 +40,87 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -38,6 +40,87 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
38 if (router.search.resType) { 40 if (router.search.resType) {
39 resType = router.search.resType; 41 resType = router.search.resType;
40 } 42 }
  43 +
  44 + // 设备类型 下拉选
  45 + $.ajax({
  46 + url: 'http://192.168.0.44:8080/log-access/v1/lm2_logfmt_dirs/queryTreeList?access_token='+ accessToken,
  47 + type: 'get',
  48 + success: function (res) {
  49 + if (res && res.data) {
  50 + res.data.map(item=>{
  51 + item.label = item.name;
  52 + item.value = item.id;
  53 + })
  54 + var data = handleTree(res.data,'id','pId','children','label')
  55 + cascader({
  56 + elem: "#devType",
  57 + data: data,
  58 + showLastLevels: true,
  59 + success: function (valData,labelData) {
  60 + console.log(valData,labelData);
  61 + let data = valData[valData.length-1];
  62 + reloadTable(data);
  63 + }
  64 + });
  65 + }
  66 + }
  67 + })
  68 +
  69 + /**
  70 + * 构造树型结构数据
  71 + * zhangtianqi
  72 + * @param {*} data 数据源
  73 + * @param {*} id id字段 默认 'id'
  74 + * @param {*} parentId 父节点字段 默认 'parentId'
  75 + * @param {*} children 孩子节点字段 默认 'children'
  76 + */
  77 + function handleTree(data, id, parentId, children, title) {
  78 + let config = {
  79 + id: id || 'id',
  80 + parentId: parentId || 'parentId',
  81 + childrenList: children || 'children',
  82 + title: title || 'title'
  83 + };
  84 +
  85 + var childrenListMap = {};
  86 + var nodeIds = {};
  87 + var tree = [];
  88 +
  89 + for (let d of data) {
  90 + let parentId = d[config.parentId];
  91 + if (childrenListMap[parentId] == null) {
  92 + childrenListMap[parentId] = [];
  93 + }
  94 + nodeIds[d[config.id]] = d;
  95 + childrenListMap[parentId].push(d);
  96 + }
  97 +
  98 + for (let d of data) {
  99 + let parentId = d[config.parentId];
  100 + if (nodeIds[parentId] == null) {
  101 + tree.push(d);
  102 + }
  103 + }
  104 +
  105 + for (let t of tree) {
  106 + adaptToChildrenList(t);
  107 + }
  108 +
  109 + function adaptToChildrenList(o) {
  110 + if (childrenListMap[o[config.id]] !== null) {
  111 + o[config.childrenList] = childrenListMap[o[config.id]];
  112 + }
  113 + if (o[config.childrenList]) {
  114 + for (let c of o[config.childrenList]) {
  115 + adaptToChildrenList(c);
  116 + }
  117 + }else{
  118 + delete o[config.childrenList]
  119 + }
  120 + }
  121 + return tree;
  122 + };
  123 +
41 // 如果参数有busId 124 // 如果参数有busId
42 if(data && common.isNotEmpty(data.busId)){ 125 if(data && common.isNotEmpty(data.busId)){
43 busId = data.busId; 126 busId = data.busId;
@@ -49,6 +132,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -49,6 +132,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
49 $("#reslist_resListBizTypes").val(busId); 132 $("#reslist_resListBizTypes").val(busId);
50 form.render("select"); 133 form.render("select");
51 }); 134 });
  135 +
52 //绑定资源类型下拉选择 136 //绑定资源类型下拉选择
53 common.resTypeXmSelect({ 137 common.resTypeXmSelect({
54 el: '#reslist_restype', 138 el: '#reslist_restype',
@@ -77,10 +161,34 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -77,10 +161,34 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
77 //回车搜索 161 //回车搜索
78 $('#reslist_keyword').keydown(function (e) { 162 $('#reslist_keyword').keydown(function (e) {
79 if (e.keyCode === 13) { 163 if (e.keyCode === 13) {
80 - reloadTable(resType); 164 + // reloadTable(resType);
  165 + reloadTable()
81 } 166 }
82 }); 167 });
83 168
  169 + $.ajax({
  170 + url: `http://192.168.0.44:8080/log-deploy/v1/lm2_protocol?access_token=${accessToken}`,
  171 + method:"get",
  172 + success(res){
  173 + protocolList = res.data;
  174 + // 设置协议类型 下拉选
  175 + let options = "<option value=''>=所属业务=</option>";
  176 + $.each(protocolList, function (i, v) {
  177 + options += '<option value="' + v.id + '">' + v.protocolType + '</option>';
  178 + });
  179 + $('#protocolType').html(options);
  180 + },
  181 + })
  182 + // 回显表格协议类型字段
  183 + function agreementType(agreementId) {
  184 + var agreementType = '';
  185 + protocolList.forEach(v => {
  186 + if (v.id == agreementId) {
  187 + agreementType = v.protocolType;
  188 + }
  189 + });
  190 + return agreementType;
  191 + };
84 192
85 //选择框搜索事件 193 //选择框搜索事件
86 bindSelectEvent(); 194 bindSelectEvent();
@@ -88,7 +196,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -88,7 +196,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
88 resType || (resType = 'all') 196 resType || (resType = 'all')
89 var reslisTable = table.render({ 197 var reslisTable = table.render({
90 elem: '#reslist_resListTable' 198 elem: '#reslist_resListTable'
91 - , url: common.domainName + '/api-web/home/res-list/' + resType 199 + /*, url: common.domainName + '/api-web/home/res-list/' + resType
92 , where: { 200 , where: {
93 access_token: accessToken, 201 access_token: accessToken,
94 resName: $("#reslist_keyword").val(), 202 resName: $("#reslist_keyword").val(),
@@ -109,6 +217,16 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -109,6 +217,16 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
109 os:$("#resManageIndexForm").find("select[id='reslist_os']").val(), 217 os:$("#resManageIndexForm").find("select[id='reslist_os']").val(),
110 collProtocolList:$("#resManageIndexForm").find("select[id='collProtocol']").val(), 218 collProtocolList:$("#resManageIndexForm").find("select[id='collProtocol']").val(),
111 pageName:'reslist' 219 pageName:'reslist'
  220 + }*/
  221 + , url: 'http://192.168.0.44:8080/log-access/v1/lm2_join_device'
  222 + ,where:{
  223 + access_token: accessToken,
  224 + protocolType: '',
  225 + _condition_: undefined,
  226 + _sort_:'-join_time',
  227 + devType: '',
  228 + noType: undefined,
  229 + joinType: undefined,
112 } 230 }
113 , height: 'full-350' 231 , height: 'full-350'
114 , cellMinWidth: 80 232 , cellMinWidth: 80
@@ -121,13 +239,38 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -121,13 +239,38 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
121 , cols: [[ 239 , cols: [[
122 {type: 'checkbox'}, 240 {type: 'checkbox'},
123 {type: 'numbers', title: '序号', align: 'center'} 241 {type: 'numbers', title: '序号', align: 'center'}
124 - , {field: 'resName', title: '资源名称', minWidth: 300, align: 'center'}  
125 - , {field: 'ip', title: 'IP地址', align: 'center'}  
126 - , {field: 'os', title: 'os', align: 'center'}  
127 - , {field: 'collProtocol', title: '采集协议', align: 'center'}  
128 - , {field: 'adminName', title: '负责人', align: 'center'}  
129 - , {field: 'resTypeName', title: '资源类型', align: 'center'}  
130 - , {field: 'healthDesc', title: '资源状态', align: 'center'} 242 + , {field: 'ipAddr', title: 'IP地址', align: 'center'}
  243 + , {field: 'devIdent', title: '设备标识', align: 'center'}
  244 + , {field: 'logfmtDirName', title: '设备类型', align: 'center'}
  245 + , {field: 'lm2LogjoinDirDTOS', title: '业务类型', align: 'center',
  246 + templet(e){
  247 + if (e.lm2LogjoinDirDTOS){
  248 + let el=''
  249 + $.each(e.lm2LogjoinDirNameStrs,(i,v)=>{
  250 + el += `<span>${v}</span><br>`
  251 + })
  252 + return el
  253 + }else{
  254 + return ``
  255 + }
  256 + }
  257 + }
  258 + , {field: 'protocolType', title: '协议类型', align: 'center',
  259 + templet:function (e){
  260 + return `${agreementType(e.protocolType)}`
  261 + }}
  262 + , {field: 'joinType', title: '设备来源', align: 'center',
  263 + templet(e){
  264 + if (e.joinType == 0) {
  265 + return "自动上报"
  266 + } else if (e.joinType == 1) {
  267 + return "手动录入"
  268 + } else {
  269 + return ""
  270 + }
  271 + }
  272 + }
  273 + , {field: 'joinTime', title: '接入时间', align: 'center'}
131 ]], 274 ]],
132 done: function (res) { 275 done: function (res) {
133 table_data = res.data; 276 table_data = res.data;
@@ -156,6 +299,18 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -156,6 +299,18 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
156 }); 299 });
157 //绑定下拉搜索事件 300 //绑定下拉搜索事件
158 function bindSelectEvent() { 301 function bindSelectEvent() {
  302 + //协议类型搜索
  303 + form.on('select(protocolType)', function(data){
  304 + // reloadTable(resType);
  305 + reloadTable()
  306 + });
  307 + //设备来源搜索
  308 + form.on('select(joinType)', function(data){
  309 + // reloadTable(resType);
  310 + reloadTable()
  311 + });
  312 +
  313 +
159 //选择业务搜索 314 //选择业务搜索
160 form.on('select(reslist_resListBizTypes)', function(data){ 315 form.on('select(reslist_resListBizTypes)', function(data){
161 reloadTable(resType); 316 reloadTable(resType);
@@ -197,8 +352,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -197,8 +352,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
197 //刷新表格 352 //刷新表格
198 function reloadTable(resType) { 353 function reloadTable(resType) {
199 reslisTable.reload({ 354 reslisTable.reload({
200 - url: common.domainName + '/api-web/home/res-list/' + (resType ? resType : 'all')  
201 - , where: { 355 + //url: common.domainName + '/api-web/home/res-list/' + (resType ? resType : 'all')
  356 + url:"http://192.168.0.44:8080/log-access/v1/lm2_join_device"
  357 + /*, where: {
202 access_token: accessToken, 358 access_token: accessToken,
203 resName: $("#reslist_keyword").val(), 359 resName: $("#reslist_keyword").val(),
204 busId: $("#reslist_resListBizTypes").val(), 360 busId: $("#reslist_resListBizTypes").val(),
@@ -216,8 +372,18 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -216,8 +372,18 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
216 os:$("#resManageIndexForm").find("select[id='reslist_os']").val(), 372 os:$("#resManageIndexForm").find("select[id='reslist_os']").val(),
217 collProtocolList:$("#resManageIndexForm").find("select[id='collProtocol']").val(), 373 collProtocolList:$("#resManageIndexForm").find("select[id='collProtocol']").val(),
218 editMode: 'true' 374 editMode: 'true'
219 - },  
220 - page: { 375 + },*/
  376 + ,where:{
  377 + currentPage: 1,
  378 + pageLimit: 10,
  379 + protocolType: $('#protocolType').val(),
  380 + _condition_: $('#reslist_keyword').val(),
  381 + _sort_:'-join_time',
  382 + devType: resType?resType:'',
  383 + noType: undefined,
  384 + joinType: $('#joinType').val(),
  385 + }
  386 + ,page: {
221 curr: 1 //重新从第 1 页开始 387 curr: 1 //重新从第 1 页开始
222 }, 388 },
223 done: function (res) { 389 done: function (res) {
1 // 资源类型管理 1 // 资源类型管理
2 -layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', 'treeTable', 'xmSelect', 'userlist'], function (exports) { 2 +layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', 'treeTable', 'xmSelect', 'userlist','tree',], function (exports) {
3 var $ = layui.$; 3 var $ = layui.$;
4 var form = layui.form; 4 var form = layui.form;
5 var layer = layui.layer; 5 var layer = layui.layer;
@@ -20,8 +20,10 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', @@ -20,8 +20,10 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions',
20 var resource_view = ''; 20 var resource_view = '';
21 var biz_view = ''; 21 var biz_view = '';
22 var collTypeSelect = ''; 22 var collTypeSelect = '';
  23 + var tree = layui.tree;
23 //传递参数 24 //传递参数
24 let resTypes = data && data.resTypes ? data.resTypes : []; 25 let resTypes = data && data.resTypes ? data.resTypes : [];
  26 + console.log(resTypes);
25 let showType = data && data.showType==0 ? data.showType : 1; 27 let showType = data && data.showType==0 ? data.showType : 1;
26 if(showType == 0){ 28 if(showType == 0){
27 $('#resourceType-forbidden-type option[value="2"]').removeAttr("selected"); 29 $('#resourceType-forbidden-type option[value="2"]').removeAttr("selected");
@@ -49,6 +51,87 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', @@ -49,6 +51,87 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions',
49 $('.layui-inline-resourceType-forbidden').hide(); 51 $('.layui-inline-resourceType-forbidden').hide();
50 } 52 }
51 initShowType(); 53 initShowType();
  54 +
  55 + // 设备树
  56 + $.ajax({
  57 + url:common.domainName+"/log-access/v1/lm2_logfmt_dirs/queryTreeList?access_token="+accessToken,
  58 + method:"get",
  59 + success(res){
  60 + if (res.code==200){
  61 + res.data.map(item=>{
  62 + item.checked = false
  63 + })
  64 + let option = handleTree(res.data, 'id', 'pId','children','name');
  65 + tree.render({
  66 + elem: '#resmanagetree',
  67 + id:"resmanagetree",
  68 + showLine: false,
  69 + data: option,
  70 + showCheckbox: true,
  71 + })
  72 + }
  73 + }
  74 + })
  75 +
  76 + /**
  77 + * 构造树型结构数据
  78 + * zhangtianqi
  79 + * @param {*} data 数据源
  80 + * @param {*} id id字段 默认 'id'
  81 + * @param {*} parentId 父节点字段 默认 'parentId'
  82 + * @param {*} children 孩子节点字段 默认 'children'
  83 + */
  84 + function handleTree(data, id, parentId, children, title) {
  85 + let config = {
  86 + id: id || 'id',
  87 + parentId: parentId || 'parentId',
  88 + childrenList: children || 'children',
  89 + title: title || 'title'
  90 + };
  91 +
  92 + var childrenListMap = {};
  93 + var nodeIds = {};
  94 + var tree = [];
  95 +
  96 + for (let d of data) {
  97 + let parentId = d[config.parentId];
  98 + let title = d[config.title]
  99 + if (childrenListMap[parentId] == null) {
  100 + childrenListMap[parentId] = [];
  101 + }
  102 + d.title = title;
  103 + nodeIds[d[config.id]] = d;
  104 + childrenListMap[parentId].push(d);
  105 + }
  106 +
  107 + for (let d of data) {
  108 + let parentId = d[config.parentId];
  109 + let title = d[config.title]
  110 + d.title = title;
  111 + if (nodeIds[parentId] == null) {
  112 + tree.push(d);
  113 + }
  114 + }
  115 +
  116 + for (let t of tree) {
  117 + adaptToChildrenList(t);
  118 + }
  119 +
  120 + function adaptToChildrenList(o) {
  121 + if (childrenListMap[o[config.id]] !== null) {
  122 + o[config.childrenList] = childrenListMap[o[config.id]];
  123 + }
  124 + if (o[config.childrenList]) {
  125 + for (let c of o[config.childrenList]) {
  126 + adaptToChildrenList(c);
  127 + }
  128 + }
  129 + }
  130 +
  131 + return tree;
  132 + };
  133 +
  134 +
52 //获取采集类型字典 135 //获取采集类型字典
53 admin.req({ 136 admin.req({
54 url: domainName + '/api-web/manage/ddic/findSucDdics/collType' 137 url: domainName + '/api-web/manage/ddic/findSucDdics/collType'
@@ -1321,13 +1404,38 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', @@ -1321,13 +1404,38 @@ layui.define(['form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions',
1321 return cols; 1404 return cols;
1322 } 1405 }
1323 function getResTypeChecks() { 1406 function getResTypeChecks() {
1324 - var res=restypeTable.checkStatus(false); 1407 + /*var res=restypeTable.checkStatus(false);
1325 $.each(res,function (i,v) { 1408 $.each(res,function (i,v) {
1326 if(v.resTypeCode=='HOST_X86SERVER'){ 1409 if(v.resTypeCode=='HOST_X86SERVER'){
1327 v.showType=$('#resourceType_showType')?$('#resourceType_showType').val():null; 1410 v.showType=$('#resourceType_showType')?$('#resourceType_showType').val():null;
1328 } 1411 }
1329 }); 1412 });
1330 - return restypeTable.checkStatus(false); 1413 + return restypeTable.checkStatus(false);*/
  1414 +
  1415 + var data = tree.getChecked('resmanagetree');
  1416 + var nodeIds = new Array();
  1417 + nodeIds = getCheckedId(data)
  1418 + return nodeIds;
  1419 + }
  1420 + //获取所有选中的节点id
  1421 + function getCheckedId(data) {
  1422 + var id = "";
  1423 + $.each(data, function (index, item) {
  1424 + if (id != "") {
  1425 + id = id + "," + item.id;
  1426 + }
  1427 + else {
  1428 + id = item.id;
  1429 + }
  1430 + //item 没有children属性
  1431 + if (item.children != null) {
  1432 + var i = getCheckedId(item.children);
  1433 + if (i != "") {
  1434 + id = id + "," + i;
  1435 + }
  1436 + }
  1437 + });
  1438 + return id;
1331 } 1439 }
1332 1440
1333 return {getResTypeChecks: getResTypeChecks} 1441 return {getResTypeChecks: getResTypeChecks}
@@ -19,7 +19,8 @@ @@ -19,7 +19,8 @@
19 <input type="text" class="layui-input" lay-verify="required" lay-reqtext="请输入策略名称" name="alarmPolicyName" id="alarmPolicyName"> 19 <input type="text" class="layui-input" lay-verify="required" lay-reqtext="请输入策略名称" name="alarmPolicyName" id="alarmPolicyName">
20 </div> 20 </div>
21 </div> 21 </div>
22 - <div class="layui-inline"> 22 + <!--zhangtianqi 2022-06-22-->
  23 + <div class="layui-inline hide">
23 <label class="layui-form-label">是否默认</label> 24 <label class="layui-form-label">是否默认</label>
24 <div class="layui-input-inline padding-left-10"> 25 <div class="layui-input-inline padding-left-10">
25 <input type="radio" name="policyType" value="1" title="默认"> 26 <input type="radio" name="policyType" value="1" title="默认">
@@ -66,8 +67,10 @@ @@ -66,8 +67,10 @@
66 <li>严重</li> 67 <li>严重</li>
67 <li>重要</li> 68 <li>重要</li>
68 <li>一般</li> 69 <li>一般</li>
69 - <li>过滤</li>  
70 - <li>消除</li> 70 + <!--zhangtianqi 2022-06-22-->
  71 + <li class="hide">过滤</li>
  72 + <li class="hide">消除</li>
  73 +
71 <!-- <li>告警内容表达式</li>--> 74 <!-- <li>告警内容表达式</li>-->
72 </ul> 75 </ul>
73 <div class="layui-tab-content"> 76 <div class="layui-tab-content">
@@ -78,7 +81,8 @@ @@ -78,7 +81,8 @@
78 <div class="box-group-right"> 81 <div class="box-group-right">
79 <div class="layui-form-item"> 82 <div class="layui-form-item">
80 <div class="layui-input-block"> 83 <div class="layui-input-block">
81 - <textarea placeholder="请输入内容" class="layui-textarea noticeExpr" readonly id="alarmContentExpr" name="alarmContentExpr"></textarea> 84 + <textarea placeholder="请输入内容" class="layui-textarea noticeExpr" id="alarmContentExpr" name="alarmContentExpr"></textarea>
  85 + <!-- readonly --> <!--zhangtianqi 2022-06-22-->
82 </div> 86 </div>
83 </div> 87 </div>
84 </div> 88 </div>
@@ -12,7 +12,8 @@ @@ -12,7 +12,8 @@
12 <input type="text" id="alarmpolicykw" name="alarmpolicykw" lay-tips="关键字检索包含 </br>策略名称" placeholder="输入关键字,回车搜索" autocomplete="off" class="layui-input"> 12 <input type="text" id="alarmpolicykw" name="alarmpolicykw" lay-tips="关键字检索包含 </br>策略名称" placeholder="输入关键字,回车搜索" autocomplete="off" class="layui-input">
13 </div> 13 </div>
14 </div> 14 </div>
15 - <div class="layui-inline"> 15 + <!-- zhangtianqi 2022-6-22 -->
  16 + <div class="layui-inline hide">
16 <div class="layui-input-inline layui-input-inline--long"> 17 <div class="layui-input-inline layui-input-inline--long">
17 <select lay-filter="alarmpolicy_category" id="alarmpolicy_category"> 18 <select lay-filter="alarmpolicy_category" id="alarmpolicy_category">
18 <option value="">=指标分类=</option> 19 <option value="">=指标分类=</option>
@@ -32,12 +33,12 @@ @@ -32,12 +33,12 @@
32 </select> 33 </select>
33 </div> 34 </div>
34 </div> 35 </div>
35 - <div class="layui-inline"> 36 + <div class="layui-inline hide">
36 <div class="layui-input-inline"> 37 <div class="layui-input-inline">
37 <div id="alarmpolicy_kpi_resName"></div> 38 <div id="alarmpolicy_kpi_resName"></div>
38 </div> 39 </div>
39 </div> 40 </div>
40 - <div class="layui-inline"> 41 + <div class="layui-inline hide">
41 <div class="layui-input-inline layui-input-inline--long"> 42 <div class="layui-input-inline layui-input-inline--long">
42 <select lay-filter="alarmpolicy_policyType" id="alarmpolicy_policyType"> 43 <select lay-filter="alarmpolicy_policyType" id="alarmpolicy_policyType">
43 <option value="">=策略类型=</option> 44 <option value="">=策略类型=</option>
@@ -13,9 +13,9 @@ @@ -13,9 +13,9 @@
13 <div class="layui-input-inline"> 13 <div class="layui-input-inline">
14 <select name="subType" lay-filter="alarm-subscribe-subype"> 14 <select name="subType" lay-filter="alarm-subscribe-subype">
15 <option value="1">告警订阅</option> 15 <option value="1">告警订阅</option>
16 - <option value="2">报表订阅</option>  
17 - <option value="3">系统通知订阅</option>  
18 - <option value="4">采集器异常订阅</option> 16 +<!-- <option value="2">报表订阅</option>-->
  17 +<!-- <option value="3">系统通知订阅</option>-->
  18 +<!-- <option value="4">采集器异常订阅</option>-->
19 </select> 19 </select>
20 </div> 20 </div>
21 </div> 21 </div>
@@ -120,14 +120,16 @@ @@ -120,14 +120,16 @@
120 <!-- <i class="layui-icon form-btn-icon" lay-tips="订阅绑定用户、部门及组" id="alarmsubscirbe-form-select-users">&#xe615;</i>--> 120 <!-- <i class="layui-icon form-btn-icon" lay-tips="订阅绑定用户、部门及组" id="alarmsubscirbe-form-select-users">&#xe615;</i>-->
121 </div> 121 </div>
122 </div> 122 </div>
123 - <div class="layui-form-item"> 123 +
  124 + <!-- zhangtianqi 2022-6-22 -->
  125 + <div class="layui-form-item hide">
124 <label class="layui-form-label">接收部门</label> 126 <label class="layui-form-label">接收部门</label>
125 <div class="layui-input-block tags-input"> 127 <div class="layui-input-block tags-input">
126 <div class="tags" id="selecte_org_content_id"></div> 128 <div class="tags" id="selecte_org_content_id"></div>
127 <div class="layui-form-mid layui-word-aux" style="padding: 0!important;position: relative;top: -28px;left: 98%"></div> 129 <div class="layui-form-mid layui-word-aux" style="padding: 0!important;position: relative;top: -28px;left: 98%"></div>
128 </div> 130 </div>
129 </div> 131 </div>
130 - <div class="layui-form-item"> 132 + <div class="layui-form-item hide">
131 <label class="layui-form-label">接收组</label> 133 <label class="layui-form-label">接收组</label>
132 <div class="layui-input-block tags-input"> 134 <div class="layui-input-block tags-input">
133 <div class="tags" id="selecte_group_content_id"></div> 135 <div class="tags" id="selecte_group_content_id"></div>
@@ -135,7 +137,7 @@ @@ -135,7 +137,7 @@
135 </div> 137 </div>
136 </div> 138 </div>
137 139
138 - <div class="layui-form-item"> 140 + <div class="layui-form-item hide">
139 <label class="layui-form-label textarea-label">订阅描述</label> 141 <label class="layui-form-label textarea-label">订阅描述</label>
140 <div class="layui-input-block"> 142 <div class="layui-input-block">
141 <textarea class="layui-textarea" name="subDesc"></textarea> 143 <textarea class="layui-textarea" name="subDesc"></textarea>
@@ -13,10 +13,11 @@ @@ -13,10 +13,11 @@
13 </div> 13 </div>
14 </div> 14 </div>
15 <!--订阅类型--> 15 <!--订阅类型-->
16 - <div class="layui-inline"> 16 + <div class="layui-inline hide">
17 <div class="layui-input-inline layui-input-inline--long alarmsubscribe_type multi-query"> 17 <div class="layui-input-inline layui-input-inline--long alarmsubscribe_type multi-query">
18 </div> 18 </div>
19 </div> 19 </div>
  20 +
20 <!-- <div class="layui-inline">--> 21 <!-- <div class="layui-inline">-->
21 <!-- <div class="layui-input-inline layui-input-inline&#45;&#45;long">--> 22 <!-- <div class="layui-input-inline layui-input-inline&#45;&#45;long">-->
22 <!-- <select name="subType" lay-filter="alarmsubscribe_type">--> 23 <!-- <select name="subType" lay-filter="alarmsubscribe_type">-->
@@ -29,10 +30,11 @@ @@ -29,10 +30,11 @@
29 <!-- </div>--> 30 <!-- </div>-->
30 <!-- </div>--> 31 <!-- </div>-->
31 <!--通知方式--> 32 <!--通知方式-->
32 - <div class="layui-inline"> 33 + <div class="layui-inline hide">
33 <div class="layui-input-inline layui-input-inline--long alarmsubscribe_noticeway multi-query"> 34 <div class="layui-input-inline layui-input-inline--long alarmsubscribe_noticeway multi-query">
34 </div> 35 </div>
35 </div> 36 </div>
  37 +
36 <!-- <div class="layui-inline">--> 38 <!-- <div class="layui-inline">-->
37 <!-- <div class="layui-input-inline layui-input-inline&#45;&#45;long">--> 39 <!-- <div class="layui-input-inline layui-input-inline&#45;&#45;long">-->
38 <!-- <select name="subWay" lay-filter="alarmsubscribe_noticeway">--> 40 <!-- <select name="subWay" lay-filter="alarmsubscribe_noticeway">-->
@@ -70,7 +72,7 @@ @@ -70,7 +72,7 @@
70 </select> 72 </select>
71 </div> 73 </div>
72 </div> 74 </div>
73 - <div class="layui-inline"> 75 + <div class="layui-inline hide">
74 <div class="layui-input-inline layui-input-inline--long"> 76 <div class="layui-input-inline layui-input-inline--long">
75 <select name="alarmsubscribe_noticeway" lay-filter="alarmsubscribe_noticeway"> 77 <select name="alarmsubscribe_noticeway" lay-filter="alarmsubscribe_noticeway">
76 <option value="">=报表类型=</option> 78 <option value="">=报表类型=</option>
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 <article class="page-container"> 2 <article class="page-container">
3 <div class="page-panel"> 3 <div class="page-panel">
4 <div class="main"> 4 <div class="main">
5 - <div class="layui-card"> 5 + <div class="layui-card hide">
6 <div class="layui-card-header"> 6 <div class="layui-card-header">
7 <div class="layui-status"> 7 <div class="layui-status">
8 <form class="layui-form layui-card-header layuiadmin-card-header-auto"> 8 <form class="layui-form layui-card-header layuiadmin-card-header-auto">
@@ -53,10 +53,18 @@ @@ -53,10 +53,18 @@
53 <table id="restype-table" lay-filter="restypetable"></table> 53 <table id="restype-table" lay-filter="restypetable"></table>
54 </div> 54 </div>
55 </div> 55 </div>
  56 + <div class="layui-card">
  57 + <div class="layui-card">
  58 + <div class="layui-card-body">
  59 + <div id="resmanagetree" class="demo-tree demo-tree-box"></div>
  60 + </div>
  61 + </div>
  62 + </div>
56 </div> 63 </div>
57 </div> 64 </div>
58 </article> 65 </article>
59 66
  67 +
60 <!--新增/编辑弹出框--> 68 <!--新增/编辑弹出框-->
61 <script type="text/html" id="resTypeEdit"> 69 <script type="text/html" id="resTypeEdit">
62 <form class="layui-form layui-form-pane" action="" lay-filter="form-restype-edit"> 70 <form class="layui-form layui-form-pane" action="" lay-filter="form-restype-edit">
@@ -9,15 +9,44 @@ @@ -9,15 +9,44 @@
9 <div class="layui-form-item"> 9 <div class="layui-form-item">
10 <div class="layui-inline"> 10 <div class="layui-inline">
11 <div class="layui-input-inline layui-input-inline--long"> 11 <div class="layui-input-inline layui-input-inline--long">
12 - <input id="reslist_keyword" type="text" name="title" placeholder="输入关键字,回车搜索" class="layui-input"> 12 + <input id="reslist_keyword" type="text" name="title" placeholder="请输入设备标识/IP地址" class="layui-input">
13 </div> 13 </div>
14 </div> 14 </div>
15 <div class="layui-inline"> 15 <div class="layui-inline">
  16 + <div class="layui-input-inline">
  17 + <select name="protocolType" id="protocolType" lay-filter="protocolType" lay-verify="required">
  18 + <option value="">=协议类型=</option>
  19 + </select>
  20 + </div>
  21 + </div>
  22 + <div class="layui-inline">
  23 + <div class="layui-input-inline">
  24 + <input type="text" id="devType" class="layui-input" placeholder="请输入设备类型">
  25 +<!-- <select name="reslist_resStatus" id="devType" lay-filter="reslist_resStatus" lay-verify="required">-->
  26 +<!-- <option value="">=设备类型=</option>-->
  27 +<!-- </select>-->
  28 + </div>
  29 + </div>
  30 + <div class="layui-inline">
  31 + <div class="layui-input-inline">
  32 + <select name="joinType" id="joinType" lay-filter="joinType" lay-verify="required">
  33 + <option value="">=设备来源=</option>
  34 + <option value="0">自动上报</option>
  35 + <option value="1">手动录入</option>
  36 + </select>
  37 + </div>
  38 + </div>
  39 +
  40 +
  41 +
  42 +
  43 +
  44 + <div class="layui-inline hide">
16 <div class="layui-input-inline layui-input-inline--long"> 45 <div class="layui-input-inline layui-input-inline--long">
17 <div id="reslist_restype"></div> 46 <div id="reslist_restype"></div>
18 </div> 47 </div>
19 </div> 48 </div>
20 - <div class="layui-inline"> 49 + <div class="layui-inline hide">
21 <div class="layui-input-inline"> 50 <div class="layui-input-inline">
22 <select name="reslist_resStatus" id="reslist_resStatus" lay-filter="reslist_resStatus" lay-verify="required"> 51 <select name="reslist_resStatus" id="reslist_resStatus" lay-filter="reslist_resStatus" lay-verify="required">
23 <option value="">=资源健康状态=</option> 52 <option value="">=资源健康状态=</option>
@@ -27,14 +56,14 @@ @@ -27,14 +56,14 @@
27 </select> 56 </select>
28 </div> 57 </div>
29 </div> 58 </div>
30 - <div class="layui-inline"> 59 + <div class="layui-inline hide">
31 <div class="layui-input-inline"> 60 <div class="layui-input-inline">
32 <select name="label" id="reslist_resListBizTypes" lay-filter="reslist_resListBizTypes" lay-search> 61 <select name="label" id="reslist_resListBizTypes" lay-filter="reslist_resListBizTypes" lay-search>
33 <option value="">=选择业务=</option> 62 <option value="">=选择业务=</option>
34 </select> 63 </select>
35 </div> 64 </div>
36 </div> 65 </div>
37 - <div class="layui-inline"> 66 + <div class="layui-inline hide">
38 <div class="layui-input-inline"> 67 <div class="layui-input-inline">
39 <select name="state" lay-filter="state"> 68 <select name="state" lay-filter="state">
40 <option value="">=资源监控状态=</option> 69 <option value="">=资源监控状态=</option>
@@ -45,14 +74,14 @@ @@ -45,14 +74,14 @@
45 </select> 74 </select>
46 </div> 75 </div>
47 </div> 76 </div>
48 - <div class="layui-inline"> 77 + <div class="layui-inline hide">
49 <div class="layui-input-inline"> 78 <div class="layui-input-inline">
50 <select name="provider" id="reslist_provider" lay-filter="reslist_provider" lay-search> 79 <select name="provider" id="reslist_provider" lay-filter="reslist_provider" lay-search>
51 <option value="">=选择厂商=</option> 80 <option value="">=选择厂商=</option>
52 </select> 81 </select>
53 </div> 82 </div>
54 </div> 83 </div>
55 - <div class="layui-inline"> 84 + <div class="layui-inline hide">
56 <div class="layui-input-inline"> 85 <div class="layui-input-inline">
57 <select name="collectionState" lay-filter="resManageCollectionState"> 86 <select name="collectionState" lay-filter="resManageCollectionState">
58 <option value="">=任务绑定状态=</option> 87 <option value="">=任务绑定状态=</option>
@@ -61,14 +90,14 @@ @@ -61,14 +90,14 @@
61 </select> 90 </select>
62 </div> 91 </div>
63 </div> 92 </div>
64 - <div class="layui-inline"> 93 + <div class="layui-inline hide">
65 <div class="layui-input-inline"> 94 <div class="layui-input-inline">
66 <select id="reslist_os" lay-filter="reslist_os" lay-search> 95 <select id="reslist_os" lay-filter="reslist_os" lay-search>
67 <option value="">=选择系统=</option> 96 <option value="">=选择系统=</option>
68 </select> 97 </select>
69 </div> 98 </div>
70 </div> 99 </div>
71 - <div class="layui-inline"> 100 + <div class="layui-inline hide">
72 <div class="layui-input-inline"> 101 <div class="layui-input-inline">
73 <select id="collProtocol" name="collProtocol" lay-filter="collProtocol"> 102 <select id="collProtocol" name="collProtocol" lay-filter="collProtocol">
74 <option value="">=采集协议=</option> 103 <option value="">=采集协议=</option>
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 <div class="layui-input-block" style="margin-left: 0px"> 6 <div class="layui-input-block" style="margin-left: 0px">
7 <input type="checkbox" lay-filter="type" value="user" name="type" title="用户"> 7 <input type="checkbox" lay-filter="type" value="user" name="type" title="用户">
8 <input type="checkbox" lay-filter="type" value="org" name="type" title="部门"> 8 <input type="checkbox" lay-filter="type" value="org" name="type" title="部门">
9 - <input type="checkbox" lay-filter="type" value="group" name="type" title="组"> 9 +<!-- <input type="checkbox" lay-filter="type" value="group" name="type" title="组">-->
10 </div> 10 </div>
11 </div> 11 </div>
12 <div class="layui-form-item userDiv hide"> 12 <div class="layui-form-item userDiv hide">
1 // 业务类型管理 1 // 业务类型管理
2 -layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', 'commonDetail', 'treeTable', 'xmSelect', 'userlist', 'reslist'], function (exports) { 2 +layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'sessions', 'commonDetail', 'treeTable', 'xmSelect', 'userlist', 'reslist', 'tree'], function (exports) {
3 var $ = layui.$; 3 var $ = layui.$;
4 var form = layui.form; 4 var form = layui.form;
5 var layer = layui.layer; 5 var layer = layui.layer;
@@ -16,6 +16,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se @@ -16,6 +16,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
16 var busTypeTable; 16 var busTypeTable;
17 // 对外暴露的接口 17 // 对外暴露的接口
18 exports('bustype', function (data) { 18 exports('bustype', function (data) {
  19 + var tree = layui.tree;
19 var sessions = layui.sessions; 20 var sessions = layui.sessions;
20 var accessToken = sessions.getToken()['access_token']; 21 var accessToken = sessions.getToken()['access_token'];
21 22
@@ -31,13 +32,91 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se @@ -31,13 +32,91 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
31 var dataBusType=[]; 32 var dataBusType=[];
32 initShowType(); 33 initShowType();
33 34
  35 + // 业务树
  36 + $.ajax({
  37 + url: common.domainName + "/log-access/v1/lm2_logjoin_dirs/queryTreeList?access_token="+accessToken,
  38 + method:"get",
  39 + success(res){
  40 + if (res.code==200){
  41 + res.data.map(item=>{
  42 + item.checked = false
  43 + })
  44 + let option = handleTree(res.data, 'id', 'pId','children','name');
  45 + tree.render({
  46 + elem: '#resmanagetree',
  47 + id:"resmanagetree",
  48 + showLine: false,
  49 + data: option,
  50 + showCheckbox: true,
  51 + })
  52 + }
  53 + }
  54 + })
  55 +
  56 + /**
  57 + * 构造树型结构数据
  58 + * zhangtianqi
  59 + * @param {*} data 数据源
  60 + * @param {*} id id字段 默认 'id'
  61 + * @param {*} parentId 父节点字段 默认 'parentId'
  62 + * @param {*} children 孩子节点字段 默认 'children'
  63 + */
  64 + function handleTree(data, id, parentId, children, title) {
  65 + let config = {
  66 + id: id || 'id',
  67 + parentId: parentId || 'parentId',
  68 + childrenList: children || 'children',
  69 + title: title || 'title'
  70 + };
  71 +
  72 + var childrenListMap = {};
  73 + var nodeIds = {};
  74 + var tree = [];
  75 +
  76 + for (let d of data) {
  77 + let parentId = d[config.parentId];
  78 + let title = d[config.title]
  79 + if (childrenListMap[parentId] == null) {
  80 + childrenListMap[parentId] = [];
  81 + }
  82 + d.title = title;
  83 + nodeIds[d[config.id]] = d;
  84 + childrenListMap[parentId].push(d);
  85 + }
  86 +
  87 + for (let d of data) {
  88 + let parentId = d[config.parentId];
  89 + let title = d[config.title]
  90 + d.title = title;
  91 + if (nodeIds[parentId] == null) {
  92 + tree.push(d);
  93 + }
  94 + }
  95 +
  96 + for (let t of tree) {
  97 + adaptToChildrenList(t);
  98 + }
  99 +
  100 + function adaptToChildrenList(o) {
  101 + if (childrenListMap[o[config.id]] !== null) {
  102 + o[config.childrenList] = childrenListMap[o[config.id]];
  103 + }
  104 + if (o[config.childrenList]) {
  105 + for (let c of o[config.childrenList]) {
  106 + adaptToChildrenList(c);
  107 + }
  108 + }
  109 + }
  110 + return tree;
  111 + };
  112 +
34 // 查询条件 113 // 查询条件
35 var conditions = {busTypeName: ''}; 114 var conditions = {busTypeName: ''};
36 // 加载遮罩 115 // 加载遮罩
37 var loading; 116 var loading;
38 var checkList = common.checkPermission(accessToken); 117 var checkList = common.checkPermission(accessToken);
39 118
40 - loadBusTypeTable(); 119 + // loadBusTypeTable();
41 // 查询条件框回车查询事件 120 // 查询条件框回车查询事件
42 $('#condition-bustype-name').keydown(function (e) { 121 $('#condition-bustype-name').keydown(function (e) {
43 if (e.keyCode === 13) { 122 if (e.keyCode === 13) {
@@ -914,7 +993,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se @@ -914,7 +993,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
914 } 993 }
915 //获取选中的数据 994 //获取选中的数据
916 function getCheckData() { 995 function getCheckData() {
917 - if(mode){ 996 + /*if(mode){
918 //获取改变的值 997 //获取改变的值
919 var str=''; 998 var str='';
920 var $tr=$('#bustype-table').next().find('tbody tr'); 999 var $tr=$('#bustype-table').next().find('tbody tr');
@@ -931,8 +1010,33 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se @@ -931,8 +1010,33 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
931 return str; 1010 return str;
932 }else{ 1011 }else{
933 return busTypeTable.checkStatus(false); 1012 return busTypeTable.checkStatus(false);
934 - } 1013 + }*/
  1014 +
  1015 + var data = tree.getChecked('resmanagetree');
  1016 + var nodeIds = new Array();
  1017 + nodeIds = getCheckedId(data)
  1018 + return nodeIds;
  1019 + }
935 1020
  1021 + //获取所有选中的节点id
  1022 + function getCheckedId(data) {
  1023 + var id = "";
  1024 + $.each(data, function (index, item) {
  1025 + if (id != "") {
  1026 + id = id + "," + item.id;
  1027 + }
  1028 + else {
  1029 + id = item.id;
  1030 + }
  1031 + //item 没有children属性
  1032 + if (item.children != null) {
  1033 + var i = getCheckedId(item.children);
  1034 + if (i != "") {
  1035 + id = id + "," + i;
  1036 + }
  1037 + }
  1038 + });
  1039 + return id;
936 } 1040 }
937 1041
938 return {getData: getCheckData}; 1042 return {getData: getCheckData};
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <div class="main"> 4 <div class="main">
5 <div class="layui-card"> 5 <div class="layui-card">
6 <div class="layui-card-header"> 6 <div class="layui-card-header">
7 - <div class="layui-status"> 7 + <div class="layui-status hide">
8 <form class="layui-card-header layuiadmin-card-header-auto layui-form" lay-filter="bustype-query-form"> 8 <form class="layui-card-header layuiadmin-card-header-auto layui-form" lay-filter="bustype-query-form">
9 <div class="layui-form-item"> 9 <div class="layui-form-item">
10 <div class="layui-inline"> 10 <div class="layui-inline">
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 </div> 22 </div>
23 </div> 23 </div>
24 <div class="layui-card-body"> 24 <div class="layui-card-body">
25 - <div class="warn-btns"> 25 + <div class="warn-btns hide">
26 <button class="layui-btn layui-btn-sm layui-btn-normal" id="bustype-create"> 26 <button class="layui-btn layui-btn-sm layui-btn-normal" id="bustype-create">
27 <i class="layui-icon">&#xe654;</i>新增 27 <i class="layui-icon">&#xe654;</i>新增
28 </button> 28 </button>
@@ -37,7 +37,8 @@ @@ -37,7 +37,8 @@
37 </button> 37 </button>
38 <span class="auto-flush" id="span-bustype-total">共 0 个业务</span> 38 <span class="auto-flush" id="span-bustype-total">共 0 个业务</span>
39 </div> 39 </div>
40 - <table id="bustype-table" lay-filter="bustypetable"></table> 40 + <table id="bustype-table" class="hide" lay-filter="bustypetable"></table>
  41 + <div id="resmanagetree" class="demo-tree demo-tree-box"></div>
41 </div> 42 </div>
42 </div> 43 </div>
43 </div> 44 </div>