Authored by 王涛

Merge branch 'master-prod-xwx2' into 'master-prod'

v32迁移prod



See merge request !735
Showing 40 changed files with 1252 additions and 268 deletions
@@ -60,7 +60,7 @@ layui.define(['form','table', 'admin', 'common','sessions'], function (exports) @@ -60,7 +60,7 @@ layui.define(['form','table', 'admin', 'common','sessions'], function (exports)
60 //选择策略 60 //选择策略
61 $("#add_alarmtemplate_policy").on("click",function (){ 61 $("#add_alarmtemplate_policy").on("click",function (){
62 $('[lay-id="/baseconfig/alarmpolicy/index"]').find('.layui-tab-close').trigger('click'); 62 $('[lay-id="/baseconfig/alarmpolicy/index"]').find('.layui-tab-close').trigger('click');
63 - common.openWin("baseconfig/alarmpolicy/index","选择策略",{},["选择","取消"], function () { 63 + common.openWin("baseconfig/alarmpolicy/index","选择策略",{type:'alarmTemplate'},["选择","取消"], function () {
64 var data = layui.alarmpolicyIndex().getData(); 64 var data = layui.alarmpolicyIndex().getData();
65 createAlarmtemplatePolicyTable(data); 65 createAlarmtemplatePolicyTable(data);
66 return true; 66 return true;
@@ -101,11 +101,6 @@ layui.define(['form','table', 'admin', 'common','sessions'], function (exports) @@ -101,11 +101,6 @@ layui.define(['form','table', 'admin', 'common','sessions'], function (exports)
101 } 101 }
102 //删除 102 //删除
103 $(".delete-alarmtemplate-policy-btn").on("click",function (){ 103 $(".delete-alarmtemplate-policy-btn").on("click",function (){
104 - var tr = $("#alarmtemplate-policy-table-body").find('tr').length  
105 - if (tr <= 1){  
106 - layer.msg("告警模板至少绑定一条告警策略", { offset: '15px' , icon: 7 , time: 1000 });  
107 - return false;  
108 - }  
109 $(this).parent().parent().remove(); 104 $(this).parent().parent().remove();
110 }); 105 });
111 } 106 }
@@ -14,12 +14,14 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions' @@ -14,12 +14,14 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
14 exports('alarmtemplateIndex', function (data) { 14 exports('alarmtemplateIndex', function (data) {
15 var policyId = (data && data.policyId) ? data.policyId : ""; 15 var policyId = (data && data.policyId) ? data.policyId : "";
16 var resIdList = (data && data.resIds) ? data.resIds : ''; 16 var resIdList = (data && data.resIds) ? data.resIds : '';
  17 + var resType = (data && common.isNotEmpty(data.resType)) ? data.resType : '';
17 var sessions = layui.sessions; 18 var sessions = layui.sessions;
18 var accessToken = sessions.getToken()['access_token']; 19 var accessToken = sessions.getToken()['access_token'];
19 //获得权限列表 20 //获得权限列表
20 var checkList = common.checkPermission(accessToken); 21 var checkList = common.checkPermission(accessToken);
21 -  
22 - 22 + var alarmTempId = '';
  23 + // 业务类型Id
  24 + var busId = '';
23 //回车搜索 25 //回车搜索
24 $('#alarmtemplatekw').keydown(function (e) { 26 $('#alarmtemplatekw').keydown(function (e) {
25 if (e.keyCode === 13) { 27 if (e.keyCode === 13) {
@@ -77,7 +79,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions' @@ -77,7 +79,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
77 } 79 }
78 80
79 if (tempData && tempData.length > 0) { 81 if (tempData && tempData.length > 0) {
80 - common.openWin("baseconfig/alarmpolicy/index", "选择策略", {oldData: oldAlarmPolicyIdList}, ["选择", "取消"], function () { 82 + common.openWin("baseconfig/alarmpolicy/index", "选择策略", {oldData: oldAlarmPolicyIdList,type:'alarmTemplate'}, ["选择", "取消"], function () {
81 var policyData = layui.alarmpolicyIndex().getData(); 83 var policyData = layui.alarmpolicyIndex().getData();
82 var tempIds = [], policyIds = []; 84 var tempIds = [], policyIds = [];
83 $.each(tempData, function (i, v) { 85 $.each(tempData, function (i, v) {
@@ -108,25 +110,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions' @@ -108,25 +110,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
108 110
109 }); 111 });
110 112
111 - //配置资源  
112 - $("#alarmtemplate_configres").on("click", function () {  
113 - if ($.inArray('back:alarmtemp:resource', checkList) == -1) {  
114 - layer.msg('暂无权限!', {icon: 7, time: 3000});  
115 - return;  
116 - }  
117 - var tempIds = [];  
118 - var data = table.checkStatus('alarmtemplateTable').data;  
119 - if (data && data.length > 0) {  
120 - $.each(data, function (i, obj) {  
121 - tempIds.push(obj.alarmTempId);  
122 - });  
123 - }  
124 - if (tempIds.length != 1) {  
125 - layer.msg('请选择一条要配置的数据', {icon: 7, time: 2000});  
126 - return;  
127 - } 113 + function getOldResIdList(tempIds){
128 var oldResIdList = []; 114 var oldResIdList = [];
129 - if (tempIds.length <= 1) {  
130 admin.req({ 115 admin.req({
131 url: common.domainName + '/api-web/alarmtemplate/getResIdByTempId', 116 url: common.domainName + '/api-web/alarmtemplate/getResIdByTempId',
132 async: false, 117 async: false,
@@ -141,7 +126,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions' @@ -141,7 +126,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
141 oldResIdList = response.data.map(item => item.resId) 126 oldResIdList = response.data.map(item => item.resId)
142 } 127 }
143 }); 128 });
144 - }  
145 common.openWin("template/res/reslist", "配置资源", {oldData: oldResIdList}, ["选择", "取消"], function () { 129 common.openWin("template/res/reslist", "配置资源", {oldData: oldResIdList}, ["选择", "取消"], function () {
146 var resObj = layui.reslist().getData(); 130 var resObj = layui.reslist().getData();
147 if (resObj && resObj.length > 0) { 131 if (resObj && resObj.length > 0) {
@@ -153,21 +137,42 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions' @@ -153,21 +137,42 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
153 url: domainName + '/api-web/manage/resource/alarmTemplate?resIds=' + resIds.toString() + '&alarmTempId=' + tempIds.toString() + '&access_token=' + accessToken, 137 url: domainName + '/api-web/manage/resource/alarmTemplate?resIds=' + resIds.toString() + '&alarmTempId=' + tempIds.toString() + '&access_token=' + accessToken,
154 done: function (res) { 138 done: function (res) {
155 if (res.success) { 139 if (res.success) {
156 - layer.msg("配置成功!", {offset: '15px', icon: 1, time: 1000}, function () { 140 + layer.msg("配置成功!", {offset: '15px', icon: 1, time: 2000}, function () {
157 layer.closeAll(); 141 layer.closeAll();
158 reloadalarmtemplateTable(); 142 reloadalarmtemplateTable();
  143 +
159 }); 144 });
160 } else { 145 } else {
161 - layer.msg("配置失败,请重试或者与管理员联系!", {offset: '15px', icon: 7, time: 1000}); 146 + layer.msg("配置失败,请重试或者与管理员联系!", {offset: '15px', icon: 7, time: 2000});
162 } 147 }
163 } 148 }
164 }); 149 });
165 } else { 150 } else {
166 - layer.msg("请至少选择一条资源", {offset: '15px', icon: 7, time: 1000}); 151 + layer.msg("请至少选择一条资源", {offset: '15px', icon: 7, time: 2000});
167 return false; 152 return false;
168 } 153 }
169 return true; 154 return true;
170 }); 155 });
  156 + }
  157 +
  158 + //配置资源
  159 + $("#alarmtemplate_configres").on("click", function () {
  160 + if ($.inArray('back:alarmtemp:resource', checkList) == -1) {
  161 + layer.msg('暂无权限!', {icon: 7, time: 3000});
  162 + return;
  163 + }
  164 + var tempIds = [];
  165 + var data = table.checkStatus('alarmtemplateTable').data;
  166 + if (data && data.length > 0) {
  167 + $.each(data, function (i, obj) {
  168 + tempIds.push(obj.alarmTempId);
  169 + });
  170 + }
  171 + if (tempIds.length != 1) {
  172 + layer.msg('请选择一条要配置的数据', {icon: 7, time: 2000});
  173 + return;
  174 + }
  175 + getOldResIdList(tempIds);
171 }); 176 });
172 177
173 // 解除绑定 178 // 解除绑定
@@ -226,7 +231,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions' @@ -226,7 +231,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
226 , url: domainName + '/api-web/alarmtemplate/page' 231 , url: domainName + '/api-web/alarmtemplate/page'
227 , where: { 232 , where: {
228 access_token: accessToken, 233 access_token: accessToken,
229 - alarmTempName: $("#alarmtemplatekw").val(), 234 + keyWord: $("#alarmtemplatekw").val(),
230 policyId: policyId, 235 policyId: policyId,
231 resIdList: resIdList 236 resIdList: resIdList
232 } 237 }
@@ -354,10 +359,87 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions' @@ -354,10 +359,87 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
354 359
355 //查看告警模板的资源数量 360 //查看告警模板的资源数量
356 $(".view-alarmtemplate-res-total").on("click", function () { 361 $(".view-alarmtemplate-res-total").on("click", function () {
357 - var alarmTempId = $(this).data("id");  
358 - common.openWin("template/res/reslist", "资源列表", {alarmTempId: alarmTempId}, ["关闭"], function () {  
359 - return true;  
360 - }, null, ['90%', '80%']) 362 + alarmTempId = $(this).data("id");
  363 + layer.open({
  364 + title: ['绑定资源', 'font-size:18px;'],
  365 + type: 1,
  366 + area: ['90%','80%'],
  367 + resize:false,
  368 + btn: ['确定','取消'],
  369 + content: laytpl($('#tempResource').html()).render(JSON.stringify({})),
  370 + success: function (index, layero) {
  371 + renderResByTemp(resType)
  372 +
  373 + //新增资源权限
  374 + $('#addAuthResBtn').on('click', function () {
  375 + openResByTemp(alarmTempId,index)
  376 + })
  377 +
  378 + // 查询条件框回车查询事件
  379 + $('#res-keyword').keydown(function (e) {
  380 + if (e.keyCode === 13) {
  381 + renderResByTemp(resType);
  382 + }
  383 + });
  384 + //查询按钮事件
  385 + $('#tempResBut').unbind().on('click',function () {
  386 + renderResByTemp(resType);
  387 + });
  388 +
  389 + // 如果参数有busId
  390 + if(data && common.isNotEmpty(data.busId)){
  391 + busId = data.busId;
  392 + $("#templist_resListBizTypes").attr("disabled",true);
  393 + form.render()
  394 + }
  395 + //绑定业务下拉选择数据
  396 + common.bizTypeSelect("templist_resListBizTypes",function () {
  397 + $("#templist_resListBizTypes").val(busId);
  398 + form.render("select");
  399 + });
  400 + //绑定资源类型下拉选择
  401 + common.resTypeXmSelect({
  402 + el: '#templist_restype',
  403 + initValue: resType.split(','),
  404 + on(data) {
  405 + resType = data.arr.map(item => item.resTypeCode).join(',');
  406 + resType || (resType = 'all')
  407 + renderResByTemp(resType);
  408 + }
  409 + });
  410 + //绑定厂商下拉选择
  411 + common.providerSelect("templist_provider",function () {
  412 + form.render("select");
  413 + });
  414 +
  415 + form.render();
  416 + bindSelectEvent();
  417 + //绑定下拉搜索事件
  418 + function bindSelectEvent() {
  419 + //选择业务搜索
  420 + form.on('select(templist_resListBizTypes)', function(data){
  421 + busId = data.value;
  422 + renderResByTemp(resType);
  423 + });
  424 + // 资源状态
  425 + form.on('select(templist_resStatus)', function(data){
  426 + renderResByTemp(resType);
  427 + });
  428 + // 厂商
  429 + form.on('select(templist_provider)', function(data){
  430 + renderResByTemp(resType);
  431 + });
  432 + }
  433 +
  434 + //删除资源权限
  435 + $('#delAuthResBtn').on('click', function () {
  436 + deleteResTemp(alarmTempId)
  437 + })
  438 + },
  439 + yes: function(index, layero){
  440 + layer.close(index); //如果设定了yes回调,需进行手工关闭
  441 + }
  442 + });
361 }); 443 });
362 444
363 //设置同步 445 //设置同步
@@ -374,6 +456,119 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions' @@ -374,6 +456,119 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
374 } 456 }
375 }); 457 });
376 458
  459 + //渲染用户所有资源权限列表表格
  460 + function renderResByTemp(resType) {
  461 + temResTable = table.render({
  462 + elem: '#res_temp_table',
  463 + url: common.domainName + '/api-web/home/res-list/' + (resType ? resType : 'all'),
  464 + where: {
  465 + access_token: accessToken,
  466 + resName: $('#res-keyword').val(),
  467 + busId: $("#templist_resListBizTypes").val(),
  468 + resHealth: $("#templist_resStatus").val(),
  469 + provider:$("#templist_provider").val(),
  470 + collectorId: '',
  471 + trapCollectorId: '',
  472 + alarmTempId: alarmTempId,
  473 + cutoverId: '',
  474 + targetType: '',
  475 + protocolFlag:'',
  476 + protocol:'',
  477 + editMode: 'true',
  478 + resCategory: 'resources'
  479 + },
  480 + height: 615,
  481 + cellMinWidth: 80,
  482 + page: {
  483 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  484 + , theme: '#1E9FFF'
  485 + },
  486 + even: true,
  487 + cols: [[
  488 + {type:'checkbox'}
  489 + ,{type: 'numbers', title: '序号', align: 'center'}
  490 + , {
  491 + field: 'resName', title: '资源名称', align: 'center',sort:true,
  492 + templet: '<div><span resmanage-data-edit="{{d.resId}}" data-zymc="{{ d.resId }}" data-ip="{{ d.ip }}" data-resTypeName="{{ d.resTypeName }}" data-admin="{{ d.admin }}" data-restype="{{d.resType}}" data-name="{{d.resName}}" data-pingenable="{{d.pingEnable}}">{{ d.resName }}</span></div>'
  493 + }
  494 + , {field: 'ip', title: 'IP地址', align: 'center',sort:true,width:200}
  495 + , {field: 'port', title: '端口号', align: 'center',sort:true,width:200}
  496 + , {field: 'adminName', title: '负责人', align: 'center',sort:true,width:180}
  497 + , {field: 'resTypeName', title: '资源类型', align: 'center',sort:true,width:230}
  498 + , {field: 'state', title: '资源状态', align: 'center',sort:true,width:180, templet: function (d) {
  499 + switch (d.state) {
  500 + case "new" :
  501 + return '<button type="button" class="layui-btn layui-btn-warm layui-bg-gray layui-btn-radius layui-btn-xs p-0-15">未监控</button>'
  502 + case "monitor" :
  503 + return '<button type="button" class="layui-btn layui-btn-radius layui-bg-green layui-btn-xs p-0-15" style="background-color: #0BAC33 !important;">监控中</button>'
  504 + case "stop" :
  505 + return '<button type="button" class="layui-btn layui-btn-warm layui-bg-red layui-btn-radius layui-btn-xs p-0-15">暂停</button>'
  506 + default :
  507 + return '<button type="button" class="layui-btn layui-btn-warm layui-bg-gray layui-btn-radius layui-btn-xs p-0-15">未监控</button>'
  508 + }
  509 + }}
  510 + , {
  511 + title: '操作', fixed: 'right', align: 'center', fixed: 'right',width:100,
  512 + templet: '<div><span data-id="{{d.resId}}" class="layui-table-link tem_res_delete_btn">删除</span></div>'
  513 + }
  514 + ]],
  515 + done: function (res, curr, count) {
  516 + //删除
  517 + $('.tem_res_delete_btn').on('click', function () {
  518 + var id = $(this).data('id')
  519 + deleteResTemp(alarmTempId,id)
  520 + })
  521 + },
  522 + })
  523 + }
  524 +
  525 + //为用户添加资源权限
  526 + function openResByTemp(alarmTempId,index) {
  527 + getOldResIdList(alarmTempId);
  528 + }
  529 +
  530 + //删除对应的资源权限
  531 + function deleteResTemp(alarmTempId,id) {
  532 + if (typeof (id) != "string") {
  533 + var ids = [];
  534 + var data = table.checkStatus('res_temp_table').data;
  535 + if (data && data.length > 0) {
  536 + $.each(data, function (i, obj) {
  537 + ids.push(obj.resId);
  538 + });
  539 + }
  540 + if (ids.length == 0) {
  541 + layer.msg('请选择要删除的数据', {icon: 7, time: 2000});
  542 + return;
  543 + }
  544 + id = ids.toString();
  545 + }
  546 + //确认提示框
  547 + layer.confirm('您确定要删除绑定的该资源吗?', {
  548 + btn: ['确定', '取消'] //按钮
  549 + }, function () {
  550 + $.ajax({
  551 + url: common.domainName + '/api-web/alarmtemplate/deleteByResIdsAndTempIds?access_token=' + accessToken
  552 + , data: {
  553 + resIds: id,
  554 + tempIds: alarmTempId.toString()
  555 + }
  556 + }).done(function (res) {
  557 + layer.msg('删除成功', {
  558 + offset: '15px'
  559 + , icon: 1
  560 + , time: 2000
  561 + }, function () {
  562 + layer.closeAll();
  563 + reloadalarmtemplateTable()
  564 + });
  565 + }).error(function (error) {
  566 + console.log(error);
  567 + });
  568 + });
  569 + }
  570 +
  571 +
377 //刷新表格 572 //刷新表格
378 function reloadalarmtemplateTable() { 573 function reloadalarmtemplateTable() {
379 alarmtemplateTable.reload({ 574 alarmtemplateTable.reload({
@@ -381,7 +576,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions' @@ -381,7 +576,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
381 access_token: accessToken, 576 access_token: accessToken,
382 policyId: policyId, 577 policyId: policyId,
383 resIdList: resIdList, 578 resIdList: resIdList,
384 - alarmTempName: $("#alarmtemplatekw").val() 579 + keyWord: $("#alarmtemplatekw").val()
385 } 580 }
386 }); 581 });
387 } 582 }
@@ -27,7 +27,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function @@ -27,7 +27,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
27 , url: domainName + '/api-web/alarmtemplate/list' 27 , url: domainName + '/api-web/alarmtemplate/list'
28 , where:{ 28 , where:{
29 access_token:accessToken, 29 access_token:accessToken,
30 - alarmTempName:$("#alarmtemplatekw").val(), 30 + keyWord:$("#alarmtemplatekw").val(),
31 policyId:policyId 31 policyId:policyId
32 } 32 }
33 , height: 'full-310' 33 , height: 'full-310'
@@ -145,7 +145,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function @@ -145,7 +145,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions'], function
145 alarmtemplatelistTable.reload({ 145 alarmtemplatelistTable.reload({
146 where:{ 146 where:{
147 access_token:accessToken, 147 access_token:accessToken,
148 - alarmTempName:$("#alarmtemplatelistkw").val(), 148 + keyWord:$("#alarmtemplatelistkw").val(),
149 } 149 }
150 }); 150 });
151 } 151 }
@@ -880,7 +880,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se @@ -880,7 +880,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
880 } 880 }
881 //获取选中的数据 881 //获取选中的数据
882 function getCheckData() { 882 function getCheckData() {
883 - debugger  
884 if(mode){ 883 if(mode){
885 let arr = []; 884 let arr = [];
886 $.each($('[data-type="checkbox"] input'),function (i,v) { 885 $.each($('[data-type="checkbox"] input'),function (i,v) {
@@ -67,10 +67,10 @@ layui.define(['table', 'form', 'laydate', 'common','sessions','laydate','admin', @@ -67,10 +67,10 @@ layui.define(['table', 'form', 'laydate', 'common','sessions','laydate','admin',
67 , height: 'full-80' 67 , height: 'full-80'
68 , data: dataArr 68 , data: dataArr
69 , cols: [[ 69 , cols: [[
70 - {field: 'dirctiveName', title: '指令名称', align: 'center', width: 230 70 + {field: 'dirctiveName', title: '指令名称', align: 'center', minWidth: 230
71 ,templet:'<div><span data-id="{{d.dirctiveId}}" >{{d.dirctiveName}}</span></div>'} 71 ,templet:'<div><span data-id="{{d.dirctiveId}}" >{{d.dirctiveName}}</span></div>'}
72 , {field: 'outputNum', title: '输出指标数量', align: 'center', width: 150} 72 , {field: 'outputNum', title: '输出指标数量', align: 'center', width: 150}
73 - , {field: 'frequencyType', title: '周期时间类型', align: 'center', minWidth: 80,templet: function (d) { 73 + , {field: 'frequencyType', title: '周期时间类型', align: 'center', width:180,minWidth: 180,templet: function (d) {
74 var html = '<select name="frequencyType" lay-filter="frequency-type">' + 74 var html = '<select name="frequencyType" lay-filter="frequency-type">' +
75 '<option value="often" >常用周期</option>'+ 75 '<option value="often" >常用周期</option>'+
76 '<option value="cron">CronTab表达式</option>'+ 76 '<option value="cron">CronTab表达式</option>'+
@@ -83,7 +83,7 @@ layui.define(['table', 'form', 'laydate', 'common','sessions','laydate','admin', @@ -83,7 +83,7 @@ layui.define(['table', 'form', 'laydate', 'common','sessions','laydate','admin',
83 }) 83 })
84 return $dom.prop("outerHTML"); 84 return $dom.prop("outerHTML");
85 }} 85 }}
86 - , {field: 'collFrequency', title: '周期', align: 'center', width: 220,templet:function (d) { 86 + , {field: 'collFrequency', title: '周期', align: 'center', width: 180,templet:function (d) {
87 var selectStr = getTableSelectDom().select; 87 var selectStr = getTableSelectDom().select;
88 var inputStr = getTableSelectDom().input; 88 var inputStr = getTableSelectDom().input;
89 if(d.frequencyType == 'often'){ 89 if(d.frequencyType == 'often'){
@@ -100,7 +100,7 @@ layui.define(['table', 'form', 'laydate', 'common','sessions','laydate','admin', @@ -100,7 +100,7 @@ layui.define(['table', 'form', 'laydate', 'common','sessions','laydate','admin',
100 return $dom.prop("outerHTML"); 100 return $dom.prop("outerHTML");
101 } 101 }
102 }} 102 }}
103 - , {title: '操作', align: 'center', minWidth: 100,templet: '<div><span checkTemplate-data-delete="{{d.dirctiveId}}" class="layui-table-link">删除</span>'} 103 + , {title: '操作', align: 'center', width:100,minWidth: 100,templet: '<div><span checkTemplate-data-delete="{{d.dirctiveId}}" class="layui-table-link">删除</span>'}
104 ]], 104 ]],
105 done: function (res, curr, count) { 105 done: function (res, curr, count) {
106 form.render(); 106 form.render();
@@ -501,6 +501,261 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele @@ -501,6 +501,261 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele
501 }); 501 });
502 }); 502 });
503 }, 503 },
  504 + /**lsq 2022-07-05
  505 + *渲染环形图及链接数
  506 + * @param targetId 环形图区域ID
  507 + * @param resId 资源ID
  508 + * @param kpiId 指标ID,多个指标逗号隔开
  509 + * @param kpiname 指标名称
  510 + * @param titleName 环形图中心名称
  511 + * @param linkTargetId 链接状态区域ID
  512 + * @param linkKpiId 链接状态区域的指标ID,多个指标逗号隔开
  513 + * */
  514 + renderPieChartLink:function(targetId,resId,kpiId,kpiname,titleName,linkTargetId,linkKpiId,flag,isBasic,hasTotal){
  515 + let title='CPU';
  516 + let colorsArr=['#37bca6','#b4d43a','#e85228','#5a5487']
  517 + if(titleName){
  518 + title=titleName
  519 + }
  520 + let allKpi=kpiId;
  521 + let linkKpiIdArr=[];
  522 + var cpuPieChart = null;
  523 + if(linkKpiId){
  524 + allKpi+=','+linkKpiId;
  525 + linkKpiIdArr=linkKpiId.split(',');
  526 + }
  527 + var url = "/api-web/detail/block?resId=" + resId + "&kpiId=" + allKpi + "&hasTotal=" + hasTotal;
  528 + if (flag) {
  529 + url += '&flag=' + flag;
  530 + }
  531 + if (isBasic) {
  532 + url += '&isBasic=' + isBasic;
  533 + }
  534 + admin.req({
  535 + url: common.domainName + url
  536 + }).done(function (res) {
  537 + let linkStr='';
  538 + setTimeout(function () {
  539 + $('#' + targetId).find('.pie-circleStr').remove();
  540 + $('#' + targetId).find('.pie-legend').remove();
  541 + if (res.data && res.data.length > 0) {
  542 + var data = res.data;
  543 + let linkData = [];
  544 + let pieData = [];
  545 + let colors = [];
  546 + data.map((item, i) => {
  547 + if (linkKpiIdArr.indexOf(item.id) != -1) {
  548 + //链接数据
  549 + linkData.push(item);
  550 + } else {
  551 + //百分比数据
  552 + pieData.push(item)
  553 + colors.push(common.colorsArr[i]);
  554 + }
  555 + })
  556 + if (pieData.length > 0) {
  557 + let seriesData = [];
  558 + pieData.map(item => {
  559 + let valArr = item.value.split('%');
  560 + let obj = item;
  561 + obj.value = valArr[0];
  562 + seriesData.push(obj)
  563 + })
  564 +
  565 + // setTimeout(function () {
  566 + $('#' + targetId).find('.pie-circleStr').remove();
  567 + $('#' + targetId).find('.pie-legend').remove();
  568 + //生成环形图
  569 + var option = {
  570 + tooltip: {
  571 + trigger: 'item',
  572 + formatter: function (param) {
  573 + var tips = param.marker + " " + param.name + ":" + param.value + param.data.unit + "</br>";
  574 + return tips;
  575 + },
  576 + axisPointer: {
  577 + type: 'shadow'
  578 + }
  579 + },
  580 + legend: {
  581 + orient: 'vertical',
  582 + x: '45%',
  583 + y: 'center',
  584 + formatter: ' ',
  585 + itemHeight: '4',
  586 + textStyle: {
  587 + fontsize: "12px"
  588 + }
  589 + },
  590 + color: colorsArr,
  591 + series: [
  592 + {
  593 + type: 'pie',
  594 + radius: ['60%', '95%'],
  595 + center: ['20%', '50%'],
  596 + data: seriesData,
  597 + avoidLabelOverlap: false,
  598 + stillShowZeroSum: true,
  599 + label: {
  600 + show: false,
  601 + position: 'center'
  602 + },
  603 + itemStyle: {
  604 + borderColor: "#ffffff",
  605 + borderWidth: '3'
  606 + },
  607 + hoverAnimation: false,
  608 + emphasis: {
  609 + scale: true,
  610 + scaleSize: 10,
  611 + },
  612 + labelLine: {
  613 + show: false
  614 + },
  615 + }
  616 + ]
  617 + };
  618 + if (cpuPieChart === null) {
  619 + cpuPieChart = echarts.init(document.getElementById(targetId));
  620 + } else {
  621 + cpuPieChart.clear();
  622 + $('#' + targetId).html('');
  623 + }
  624 + cpuPieChart.setOption(option);
  625 + //中间圆圈
  626 + let circleStr = `<div class="pie-circleStr"><div class="pie-circleStr-title">` + title + `</div></div>`;
  627 + $('#' + targetId).append(circleStr);
  628 + //右侧详细内容
  629 + let legendStr = ` <div class="pie-legend">`;
  630 + pieData.map((item, i) => {
  631 + let fixedVal=Number(item.value).toFixed(2);
  632 + let paramName = item.name.replace('CPU', '')
  633 + legendStr += `<div class="pie-legend-item">
  634 + <span class="pie-legend-icon" style="background-color: ` + colorsArr[i] + `"></span>
  635 + <span class="pie-legend-label">` + paramName + `:</span>
  636 + <span class="pie-legend-num" data-kpiid="` + item.id + `"
  637 + data-name="` + item.name + `" data-warning="1" data-ident="1"
  638 + data-trend="0" data-flag="` + item.flag + `">
  639 + <span class="pie-num-val">` + fixedVal + item.unit + `</span>
  640 + <a class="detail_row_menu hide" data-id="`+item.id+`" data-kpiid="` + item.id + `"
  641 + data-name="` + item.name + `" data-kpiname="` + item.name + `" data-warning="1" data-ident="1"
  642 + data-trend="0" data-flag="` + item.flag + `" data-unit="` + item.unit + `"
  643 + data-hidem="true" data-canca="true" data-incaing="true" data-restype="` + item.resType + `">
  644 + <img style="width: 17px;height: 17px;" src="/src/style/img/icon_row_menu.png">
  645 + </a></span>
  646 + </div>`
  647 + })
  648 + legendStr += '</div>';
  649 + $('#' + targetId).append(legendStr);
  650 + $('.pie-legend-num .pie-num-val').unbind('click').click(function () {
  651 + let kpiId = $(this).parent().data('kpiid');
  652 + let flag = $(this).parent().data('flag');
  653 + let warning = $(this).parent().data('warning');
  654 + let ident = $(this).parent().data('ident');
  655 + let trend = $(this).parent().data('trend');
  656 + let name = $(this).parent().data('name');
  657 + var params = {
  658 + resId: resId,
  659 + kpiId: kpiId,
  660 + flag: flag,
  661 + warning: warning,
  662 + ident: ident,
  663 + trend: trend,
  664 + name: name
  665 + };
  666 + common.openLineChart(name, params);
  667 + })
  668 + //点击扇形区域,打开性能曲线图
  669 + cpuPieChart.on('click', function (params) {
  670 + let data = params.data;
  671 + let kpiId = data.id;
  672 + let flag = data.flag;
  673 + let warning = data.isWarning;
  674 + let ident = 1;
  675 + let trend = 0;
  676 + let name = data.name;
  677 + var params = {
  678 + resId: resId,
  679 + kpiId: kpiId,
  680 + flag: flag,
  681 + warning: warning,
  682 + ident: ident,
  683 + trend: trend,
  684 + name: name
  685 + };
  686 + common.openLineChart(name, params);
  687 + });
  688 + //监听告警压制等操作配置
  689 + $('#' + targetId).find('.pie-legend-num').hover(function () {
  690 + var $that = $(this);
  691 + var $btn = $that.find(".detail_row_menu");
  692 + if ($btn.length > 0) {
  693 + $(".layui-card-body").find(".detail_row_menu:not(.hide)").addClass("hide")
  694 + $btn.removeClass("hide");
  695 + }
  696 + });
  697 + filterSuppressMonitor(resId);
  698 +
  699 + // }, 300)
  700 + }
  701 + if (linkData.length > 0) {
  702 + linkData.map(item => {
  703 + linkStr += `<div class="lay-row-item lay-row-item-num">
  704 + <div class="lay-row-title-label">` + item.name + `</div>
  705 + <div class="lay-row-num" data-kpiid="` + item.id + `"
  706 + data-name="` + item.name + `" data-warning="1" data-ident="1"
  707 + data-trend="0" data-flag="` + item.flag + `"
  708 + ><span class="lay-row-num-val">` + Math.round(item.value) + `</span>
  709 + <a class="detail_row_menu hide" data-id="`+item.id+`" data-kpiid="` + item.id + `"
  710 + data-name="` + item.name + `" data-kpiname="` + item.name + `" data-warning="1" data-ident="1"
  711 + data-trend="0" data-flag="` + item.flag + `" data-unit="` + item.unit + `"
  712 + data-hidem="true" data-canca="true" data-incaing="true" data-restype="` + item.resType + `" >
  713 + <img style="width: 17px;height: 17px;" src="/src/style/img/icon_row_menu.png">
  714 + </a></div>
  715 + </div>`
  716 + })
  717 + }
  718 + } else {
  719 + linkStr = '';
  720 + }
  721 + $("#"+linkTargetId).html(linkStr);
  722 +
  723 + //监听编辑状态下的复选框事件
  724 + getCheckedBoxData();
  725 + //监听告警压制等操作配置
  726 + $('#' + linkTargetId).find('.lay-row-item-num .lay-row-num').hover(function () {
  727 + var $that = $(this);
  728 + var $btn = $that.find(".detail_row_menu");
  729 + if ($btn.length > 0) {
  730 + $(".layui-card-body").find(".detail_row_menu:not(.hide)").addClass("hide")
  731 + $btn.removeClass("hide");
  732 + }
  733 + });
  734 + //监听过滤压制等事件
  735 + filterSuppressMonitor(resId);
  736 + //链接数值下探 ,打开性能曲线
  737 + $(".lay-row-item-num .lay-row-num .lay-row-num-val").unbind('click').click(function () {
  738 + let kpiId=$(this).parent().data('kpiid');
  739 + let flag=$(this).parent().data('flag');
  740 + let warning=$(this).parent().data('warning');
  741 + let ident=$(this).parent().data('ident');
  742 + let trend=$(this).parent().data('trend');
  743 + let name=$(this).parent().data('name');
  744 + var params = {
  745 + resId: resId,
  746 + kpiId: kpiId,
  747 + flag: flag,
  748 + warning: warning,
  749 + ident: ident,
  750 + trend: trend,
  751 + name: name
  752 + };
  753 + common.openLineChart(name, params);
  754 + })
  755 +
  756 + })
  757 + })
  758 + },
504 /** 759 /**
505 * 渲染饼状图 760 * 渲染饼状图
506 * @param targetId 饼状图区域ID 761 * @param targetId 饼状图区域ID
@@ -34,6 +34,9 @@ layui.define(['commonDetail','common', 'admin'], function (exports) { @@ -34,6 +34,9 @@ layui.define(['commonDetail','common', 'admin'], function (exports) {
34 var diskkpi = "KPI9D22EAB6,KPI5CA7AA50,KPI98183B26,KPI66BD013F,KPI3E6ED38B,KPI97373ED0,KPI95378FE0"; 34 var diskkpi = "KPI9D22EAB6,KPI5CA7AA50,KPI98183B26,KPI66BD013F,KPI3E6ED38B,KPI97373ED0,KPI95378FE0";
35 // ogg信息 35 // ogg信息
36 var oggkpi = "KPI95C50C7C,KPIEC53A8C4,KPI03937134,KPI1A122D84,KPI16282DF0"; 36 var oggkpi = "KPI95C50C7C,KPIEC53A8C4,KPI03937134,KPI1A122D84,KPI16282DF0";
  37 + //lsq cpu百分比 2022-07-04
  38 + var cpupiekpi = "KPI1E378242,KPI41B4C1B4,KPI6AC0FB43,KPI6F620E2B";
  39 + var linkKpi = "KPI7C714058,KPID152C818,KPIA2EA1646,KPI780EFE90";
37 if (os === 'windows'){ 40 if (os === 'windows'){
38 $($("#x86server_filesysMore").parents(".lay-row-item")).hide(); 41 $($("#x86server_filesysMore").parents(".lay-row-item")).hide();
39 $($("#x86server_inodeMore").parents(".lay-row-item")).hide(); 42 $($("#x86server_inodeMore").parents(".lay-row-item")).hide();
@@ -79,6 +82,8 @@ layui.define(['commonDetail','common', 'admin'], function (exports) { @@ -79,6 +82,8 @@ layui.define(['commonDetail','common', 'admin'], function (exports) {
79 commonDetail.renderLineCharat("x86server_cpu_linechart", resId, "KPI7054BC34", "CPU使用率", "cpu"); 82 commonDetail.renderLineCharat("x86server_cpu_linechart", resId, "KPI7054BC34", "CPU使用率", "cpu");
80 //内存使用率走势(12小时) 83 //内存使用率走势(12小时)
81 commonDetail.renderLineCharat("x86server_memery_linechart", resId, "KPI31CB8D97", "内存使用率", "mem"); 84 commonDetail.renderLineCharat("x86server_memery_linechart", resId, "KPI31CB8D97", "内存使用率", "mem");
  85 + //lsq cpu百分比 2022-07-04
  86 + commonDetail.renderPieChartLink("x86server_cpupie",resId,cpupiekpi,"CPU百分比",'CPU','x86server_linkdata',linkKpi);
82 87
83 if (os === 'windows') { 88 if (os === 'windows') {
84 //磁盘使用情况 89 //磁盘使用情况
@@ -34,6 +34,9 @@ layui.define(['commonDetail','common', 'admin'], function (exports) { @@ -34,6 +34,9 @@ layui.define(['commonDetail','common', 'admin'], function (exports) {
34 // ogg信息 34 // ogg信息
35 var oggkpi = "KPI95C50C7C,KPIEC53A8C4,KPI03937134,KPI1A122D84,KPI16282DF0"; 35 var oggkpi = "KPI95C50C7C,KPIEC53A8C4,KPI03937134,KPI1A122D84,KPI16282DF0";
36 36
  37 + //lsq cpu百分比 2022-07-04
  38 + var cpupiekpi = "KPI1E378242,KPI41B4C1B4,KPI6AC0FB43,KPI6F620E2B";
  39 + var linkKpi = "KPI7C714058,KPID152C818,KPIA2EA1646,KPI780EFE90";
37 x86virtual(); 40 x86virtual();
38 function x86virtual(){ 41 function x86virtual(){
39 //资源状态 42 //资源状态
@@ -52,6 +55,8 @@ layui.define(['commonDetail','common', 'admin'], function (exports) { @@ -52,6 +55,8 @@ layui.define(['commonDetail','common', 'admin'], function (exports) {
52 commonDetail.renderLineCharat("x86virtual_cpu_linechart",resId,"KPI7054BC34","CPU使用率","cpu"); 55 commonDetail.renderLineCharat("x86virtual_cpu_linechart",resId,"KPI7054BC34","CPU使用率","cpu");
53 //内存使用率走势(12小时) 56 //内存使用率走势(12小时)
54 commonDetail.renderLineCharat("x86virtual_memery_linechart",resId,"KPI31CB8D97","内存使用率","mem"); 57 commonDetail.renderLineCharat("x86virtual_memery_linechart",resId,"KPI31CB8D97","内存使用率","mem");
  58 + //lsq cpu百分比 2022-07-04
  59 + commonDetail.renderPieChartLink("x86virtual_cpupie",resId,cpupiekpi,"CPU百分比",'CPU','x86virtual_linkdata',linkKpi);
55 60
56 //磁盘IO读速率 61 //磁盘IO读速率
57 commonDetail.renderLineCharat("x86virtual_disk_ioread_linechart",resId,"KPI97373ED0","磁盘IO读速率","disk", null, 'KPI9D22EAB6'); 62 commonDetail.renderLineCharat("x86virtual_disk_ioread_linechart",resId,"KPI97373ED0","磁盘IO读速率","disk", null, 'KPI9D22EAB6');
@@ -34,9 +34,25 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func @@ -34,9 +34,25 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func
34 }); 34 });
35 //导出 35 //导出
36 $('#exportNoticeCountBtn').on("click", function () { 36 $('#exportNoticeCountBtn').on("click", function () {
37 - var url=common.domainName + '/api-web/bAlarm/noticeExport?access_token=' + accessToken + '&type=' + tablePeriod; 37 + var url = common.domainName + '/api-web/bAlarm/noticeExport?access_token=' + accessToken + '&type=' + tablePeriod;
38 window.open(url); 38 window.open(url);
39 }); 39 });
  40 +
  41 + var alarmSendTips ;
  42 + $(".detail_base_info").hover(function() {
  43 + openMsg();
  44 + }, function() {
  45 + layer.close(alarmSendTips);
  46 + });
  47 + function openMsg() {
  48 + alarmSendTips = layer.tips("<span style='color:#585858;'>" +
  49 + "人员告警发送统计规则:<br>" +
  50 + "&nbsp;&nbsp;&nbsp;&nbsp;• 一条告警可能存在多个通知人<br>" +
  51 + "&nbsp;&nbsp;&nbsp;&nbsp;• 按照通知人统计告警发送数量<br>" +
  52 + "</span>",
  53 + '.detail_base_info',{tips:[2,'#F0F0F0'], time:0,area: ['auto', 'auto']});
  54 + }
  55 +
40 //初始化柱状图页面 56 //初始化柱状图页面
41 function initNoticeCount() { 57 function initNoticeCount() {
42 $.ajax({ 58 $.ajax({
@@ -48,7 +64,32 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func @@ -48,7 +64,32 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func
48 histogramECharts(res.map.business, 'count_notice_send_business', '业务子系统告警发送统计'); 64 histogramECharts(res.map.business, 'count_notice_send_business', '业务子系统告警发送统计');
49 //初始化人员告警发送告警统计 65 //初始化人员告警发送告警统计
50 histogramECharts(res.map.user, 'count_notice_send_user', '人员告警发送统计'); 66 histogramECharts(res.map.user, 'count_notice_send_user', '人员告警发送统计');
  67 +
  68 + $("#businessMore").unbind('click').on('click', function () {
  69 + queryData('业务子系统告警发送统计', res.map.business)
  70 + })
  71 + $("#userMore").unbind('click').on('click', function () {
  72 + queryData('人员告警发送统计', res.map.user)
  73 + })
  74 + }
51 } 75 }
  76 + })
  77 + }
  78 +
  79 + //lsq 弹框打开更多 2022-06-21
  80 + function queryData(title, data) {
  81 + let html = `
  82 + <div class="pie-chart pie-chart-custom" id="more_notice" style="height: 60vh;overflow:hidden"></div>
  83 + `
  84 + layer.open({
  85 + type: 1
  86 + , title: title //不显示标题栏
  87 + , area: ["91%", "800px"]
  88 + , id: 'moreData' //设定一个id,防止重复弹出
  89 + , btn: ['取消']
  90 + , content: html
  91 + , success: function (layero, index) {
  92 + histogramECharts(data, 'more_notice', title)
52 } 93 }
53 }) 94 })
54 } 95 }
@@ -65,7 +106,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func @@ -65,7 +106,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func
65 , page: { 106 , page: {
66 layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] 107 layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
67 , theme: '#1E9FFF'//自定义分页主题颜色 108 , theme: '#1E9FFF'//自定义分页主题颜色
68 - ,limits:[5,10,15,20] 109 + , limits: [5, 10, 15, 20]
69 } 110 }
70 , limit: '5' 111 , limit: '5'
71 , even: true 112 , even: true
@@ -97,7 +138,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func @@ -97,7 +138,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func
97 , page: { 138 , page: {
98 layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] 139 layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
99 , theme: '#1E9FFF'//自定义分页主题颜色 140 , theme: '#1E9FFF'//自定义分页主题颜色
100 - ,limits:[5,10,15,20] 141 + , limits: [5, 10, 15, 20]
101 } 142 }
102 , limit: '5' 143 , limit: '5'
103 , even: true 144 , even: true
@@ -149,7 +190,8 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func @@ -149,7 +190,8 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func
149 var row = data.row; 190 var row = data.row;
150 //列 191 //列
151 var line = data.line; 192 var line = data.line;
152 - var myChart = echarts.init(document.getElementById(id)); 193 + let el = document.getElementById(id);
  194 + var myChart = echarts.init(el);
153 var option; 195 var option;
154 option = { 196 option = {
155 tooltip: { 197 tooltip: {
@@ -169,7 +211,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func @@ -169,7 +211,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func
169 grid: { 211 grid: {
170 left: '3%', 212 left: '3%',
171 right: '4%', 213 right: '4%',
172 - bottom: '12%',//lsq 2022-03-10 214 + bottom: '12%',
173 top: '20', 215 top: '20',
174 containLabel: true 216 containLabel: true
175 }, 217 },
@@ -184,7 +226,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func @@ -184,7 +226,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func
184 color: '#000000', 226 color: '#000000',
185 show: true, 227 show: true,
186 interval: 0, 228 interval: 0,
187 - rotate: 10,//lsq 2022-03-10 x轴标签不需要角度,注释 229 + rotate: 10,
188 fontSize: '10', 230 fontSize: '10',
189 }, 231 },
190 } 232 }
@@ -197,7 +239,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func @@ -197,7 +239,7 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func
197 series: [ 239 series: [
198 { 240 {
199 type: 'bar', 241 type: 'bar',
200 - barWidth: '20',//lsq 2022-03-10 柱子宽度更改 242 + barWidth: '20',
201 data: line, 243 data: line,
202 itemStyle: { 244 itemStyle: {
203 normal: { 245 normal: {
@@ -219,17 +261,17 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func @@ -219,17 +261,17 @@ layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions'], func
219 } 261 }
220 } 262 }
221 ], 263 ],
222 - //start x轴拖动 lsq 2022-03-10 264 + //x轴拖动
223 dataZoom: [ 265 dataZoom: [
224 { 266 {
  267 + show: id == 'more_notice' ? true : false,
225 type: "slider", 268 type: "slider",
226 realtime: true, //拖动滚动条时是否动态的更新图表数据 269 realtime: true, //拖动滚动条时是否动态的更新图表数据
227 height: 25, //滚动条高度 270 height: 25, //滚动条高度
228 - start: 5, //滚动条开始位置(共100等份)  
229 - end: 55 //结束位置(共100等份) 271 + start: 0, //滚动条开始位置(共100等份)
  272 + end: 12 //结束位置(共100等份)//lsq x轴缩放距离调整 2022-05-25
230 } 273 }
231 ], 274 ],
232 - //end lsq 2022-03-10  
233 }; 275 };
234 myChart.setOption(option) 276 myChart.setOption(option)
235 } 277 }
1 //通知查询 1 //通知查询
2 -layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect', 'echarts'], function (exports) { 2 +layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect', 'echarts','laydate'], 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;
@@ -9,6 +9,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -9,6 +9,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
9 var domainName = common.domainName; 9 var domainName = common.domainName;
10 var xmSelect = layui.xmSelect; 10 var xmSelect = layui.xmSelect;
11 var echarts = layui.echarts; 11 var echarts = layui.echarts;
  12 + var laydate = layui.laydate;
12 13
13 //对外暴露的接口 14 //对外暴露的接口
14 exports('noticeIndex', function (data) { 15 exports('noticeIndex', function (data) {
@@ -23,7 +24,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -23,7 +24,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
23 var noticeUserChart = echarts.init(document.getElementById('notice_chart_user')); 24 var noticeUserChart = echarts.init(document.getElementById('notice_chart_user'));
24 var noticeTypeChart = echarts.init(document.getElementById('notice_chart_type')); 25 var noticeTypeChart = echarts.init(document.getElementById('notice_chart_type'));
25 // var noticeUserChartNew = echarts.init(document.getElementById('notice_chart_user_new')); 26 // var noticeUserChartNew = echarts.init(document.getElementById('notice_chart_user_new'));
26 - 27 + // lsq 告警指标 2022-07-05
  28 + var alarmKpi= '';
27 //回车搜索 29 //回车搜索
28 $('#notice_search_keyword').keydown(function (e) { 30 $('#notice_search_keyword').keydown(function (e) {
29 if (e.keyCode === 13) { 31 if (e.keyCode === 13) {
@@ -43,6 +45,44 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -43,6 +45,44 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
43 $('#queryMore').on('click',function(){ 45 $('#queryMore').on('click',function(){
44 queryData(); 46 queryData();
45 }); 47 });
  48 +
  49 + $('button[data-period]').on('click',function(){
  50 + var that = $(this);
  51 + that.addClass('active');
  52 + that.removeClass('layui-btn-primary');
  53 + var currentVal = that.attr('data-period');
  54 + $.each($('button[data-period]'), function(index , el){
  55 + var itemEl = $(el);
  56 + var val = itemEl.attr('data-period');
  57 + if(currentVal != val){
  58 + itemEl.addClass('layui-btn-primary');
  59 + itemEl.removeClass('active');
  60 + }
  61 + });
  62 +
  63 + // yyyy-MM-dd HH:mm:ss - yyyy-MM-dd HH:mm:ss
  64 + if(currentVal == 'custom'){
  65 + laydate.render({
  66 + elem: '#dataPeriodCustom', //指定元素
  67 + range: true,
  68 + type: 'datetime',
  69 + isInitValue: false,
  70 + isPreview: false,
  71 + value : new Date(),
  72 + format:'yyyy-MM-dd HH:mm:ss',
  73 + show: true, //直接显示
  74 + done: function(value, date, endDate){
  75 + that.attr('data-val',value);
  76 + reloadData();
  77 + }
  78 + });
  79 + return;
  80 + }
  81 + reloadData();
  82 + });
  83 +
  84 +
  85 +
46 form.render(); 86 form.render();
47 87
48 getChartData(); 88 getChartData();
@@ -56,7 +96,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -56,7 +96,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
56 busId: busId, 96 busId: busId,
57 resType: resType, 97 resType: resType,
58 usernames:userNames, 98 usernames:userNames,
59 - isSend: $('#notice_search_isSend').val() 99 + isSend: $('#notice_search_isSend').val(),
  100 + alarmKpi: $("#noticeAlarmKpiSearchBox").val(),
  101 + way:$('#noticeWaySearchBox').val(),
  102 + dataPeriod: $('button[data-period].active').attr('data-period'),
  103 + timeRange: $('button[data-period].active').attr('data-val')
60 } 104 }
61 , height: 'full-380' 105 , height: 'full-380'
62 , page: { 106 , page: {
@@ -284,10 +328,43 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -284,10 +328,43 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
284 328
285 } 329 }
286 }); 330 });
  331 + // lsq 告警指标下拉列表 2022-07-05
  332 + $.ajax({
  333 + url: common.domainName + '/api-web/manage/kpi/findKpiInAlarm?access_token='+accessToken+'&tableName=b_alarm',
  334 + type: "get",
  335 + success:function (res) {
  336 + var kpis = res.data;
  337 + var html = '<option value="">=指标名称=</option>'
  338 + $.each(kpis,function (i,e) {
  339 + html+='<option value="'+e.kpiId+'">'+e.kpiName+'</option>'
  340 + })
  341 + $("#noticeAlarmKpiSearchBox").html('');
  342 + $("#noticeAlarmKpiSearchBox").append(html);
  343 + form.render();
  344 + }
  345 + })
  346 + //lsq 通知方式下拉列表 2022-07-07
  347 + $.ajax({
  348 + url: domainName + '/api-web/manage/ddic/findSucDdics/notice_type?access_token='+accessToken,
  349 + type: "POST",
  350 + success:function (res) {
  351 + var ways = res.data;
  352 + var html = '<option value="">=通知方式=</option>'
  353 + $.each(ways,function (i,e) {
  354 + html+='<option value="'+e.ddicCode+'">'+e.ddicName+'</option>'
  355 + })
  356 + $("#noticeWaySearchBox").html('');
  357 + $("#noticeWaySearchBox").append(html);
  358 + form.render();
  359 + }
  360 + })
287 361
288 //刷新表格 362 //刷新表格
289 function reloadTable() { 363 function reloadTable() {
290 noticeTable.reload({ 364 noticeTable.reload({
  365 + page: {
  366 + curr: 1
  367 + },
291 where:{ 368 where:{
292 access_token:accessToken, 369 access_token:accessToken,
293 keyword: $('#notice_search_keyword').val(), 370 keyword: $('#notice_search_keyword').val(),
@@ -295,7 +372,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -295,7 +372,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
295 resType: resType, 372 resType: resType,
296 isSend: $('#notice_search_isSend').val(), 373 isSend: $('#notice_search_isSend').val(),
297 usernames:userNames, 374 usernames:userNames,
298 - page: 1 375 + page: 1,
  376 + alarmKpi: $("#noticeAlarmKpiSearchBox").val(),
  377 + way:$('#noticeWaySearchBox').val(),
  378 + dataPeriod: $('button[data-period].active').attr('data-period'),
  379 + timeRange: $('button[data-period].active').attr('data-val')
299 } 380 }
300 }); 381 });
301 } 382 }
@@ -504,7 +585,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -504,7 +585,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
504 left: '1%', 585 left: '1%',
505 bottom: -5, 586 bottom: -5,
506 start: 0, 587 start: 0,
507 - end: 50 //初始化滚动条 588 + end: 20 //初始化滚动条
508 } 589 }
509 ], 590 ],
510 } 591 }
@@ -529,7 +610,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -529,7 +610,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
529 keyword: $('#notice_search_keyword').val(), 610 keyword: $('#notice_search_keyword').val(),
530 busId: busId, 611 busId: busId,
531 resType: resType, 612 resType: resType,
532 - isSend: $('#notice_search_isSend').val() 613 + isSend: $('#notice_search_isSend').val(),
  614 + alarmKpi: $("#noticeAlarmKpiSearchBox").val(),
  615 + way:$('#noticeWaySearchBox').val(),
  616 + dataPeriod: $('button[data-period].active').attr('data-period'),
  617 + timeRange: $('button[data-period].active').attr('data-val')
533 }; 618 };
534 619
535 $.ajax({ 620 $.ajax({
@@ -558,7 +643,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -558,7 +643,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
558 var yData = res.map.countList; 643 var yData = res.map.countList;
559 var xData = res.map.userList; 644 var xData = res.map.userList;
560 //展示前20条数据 @Editor LH 645 //展示前20条数据 @Editor LH
561 - loadNoticeChart(noticeUserChart,xData.slice(0, 20), yData.slice(0, 20)); 646 + loadNoticeChart(noticeUserChart,xData.slice(0, 15), yData.slice(0, 15));
562 } 647 }
563 } 648 }
564 }) 649 })
@@ -583,7 +668,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect' @@ -583,7 +668,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','sessions', 'xmSelect'
583 keyword: $('#notice_search_keyword').val(), 668 keyword: $('#notice_search_keyword').val(),
584 busId: busId, 669 busId: busId,
585 resType: resType, 670 resType: resType,
586 - isSend: $('#notice_search_isSend').val() 671 + isSend: $('#notice_search_isSend').val(),
  672 + alarmKpi: $("#noticeAlarmKpiSearchBox").val(),
  673 + way:$('#noticeWaySearchBox').val(),
  674 + dataPeriod: $('button[data-period].active').attr('data-period'),
  675 + timeRange: $('button[data-period].active').attr('data-val')
587 }; 676 };
588 var noticeTypeChartNew = echarts.init(document.getElementById('notice_chart_type_new')); 677 var noticeTypeChartNew = echarts.init(document.getElementById('notice_chart_type_new'));
589 $.ajax({ 678 $.ajax({
@@ -253,33 +253,36 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'treeTabl @@ -253,33 +253,36 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'treeTabl
253 // 发送状态 1已发送,2未发送 253 // 发送状态 1已发送,2未发送
254 noticeTimely.sendState = 2;//statusChange(document.querySelector("#switch_noticeTimely_sendState").checked ? 0 : 1); 254 noticeTimely.sendState = 2;//statusChange(document.querySelector("#switch_noticeTimely_sendState").checked ? 0 : 1);
255 noticeTimely.noticeNames = userNames; 255 noticeTimely.noticeNames = userNames;
256 - var noticeStateList = [];  
257 - //获取消息状态列表  
258 - $.each($('#editNoticeTimely_add_table').find('tbody tr'), function (i, v) {  
259 - var noticeState = {};  
260 - noticeState.noticeName = $(this).find('input[name="noticeName"]').val();  
261 - noticeState.sendTime = $(this).find('input[name="sendTime"]').val();  
262 - noticeState.sendContent = $(this).find('input[name="sendContent"]').val();  
263 - noticeState.noticeState = $(this).find('select[name="noticeState"]').val();  
264 - noticeStateList.push(noticeState);  
265 - });  
266 - noticeTimely.noticeStateList = noticeStateList; 256 + // var noticeStateList = [];
  257 + // //获取消息状态列表
  258 + // $.each($('#editNoticeTimely_add_table').find('tbody tr'), function (i, v) {
  259 + // var noticeState = {};
  260 + // noticeState.noticeName = $(this).find('input[name="noticeName"]').val();
  261 + // noticeState.sendTime = $(this).find('input[name="sendTime"]').val();
  262 + // noticeState.sendContent = $(this).find('input[name="sendContent"]').val();
  263 + // noticeState.noticeState = $(this).find('select[name="noticeState"]').val();
  264 + // noticeStateList.push(noticeState);
  265 + // });
  266 + // noticeTimely.noticeStateList = noticeStateList;
267 if (!noticeTimely.noticeNames) { 267 if (!noticeTimely.noticeNames) {
268 layer.msg('请选择用户', {icon: 7, time: 3000}); 268 layer.msg('请选择用户', {icon: 7, time: 3000});
269 return false; 269 return false;
270 } 270 }
271 - if (!noticeTimely.templates) {  
272 - layer.msg('请配置自定义展示中的展示内容', {icon: 7, time: 3000});  
273 - return false;  
274 - } 271 +
275 noticeTimely.site = $('#notice_timely_select').val() + $('#notice_timely_site').val(); 272 noticeTimely.site = $('#notice_timely_select').val() + $('#notice_timely_site').val();
276 //获取配置参数 273 //获取配置参数
277 var map = getParam(); 274 var map = getParam();
278 if(!map){ 275 if(!map){
279 - return ; 276 + return false;
280 } 277 }
  278 + if(map.msgSetting && map.msgSetting != '' && map.msgSetting != null){
281 noticeTimely.msgSetting = JSON.stringify(map.msgSetting); 279 noticeTimely.msgSetting = JSON.stringify(map.msgSetting);
  280 + }
282 noticeTimely.templates = map.templates; 281 noticeTimely.templates = map.templates;
  282 + if (!noticeTimely.templates || noticeTimely.templates == '' || noticeTimely.templates == null) {
  283 + layer.msg('请配置自定义展示中的展示内容', {icon: 7, time: 3000});
  284 + return false;
  285 + }
283 layer.load(2); 286 layer.load(2);
284 admin.req({ 287 admin.req({
285 url: domainName + '/api-web/noticeTimely/save?access_token=' + accessToken, 288 url: domainName + '/api-web/noticeTimely/save?access_token=' + accessToken,
@@ -457,27 +460,28 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'treeTabl @@ -457,27 +460,28 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'treeTabl
457 460
458 //获取模板和等级 461 //获取模板和等级
459 var obj = { 462 var obj = {
460 - msgSetting: null,  
461 - templates: null 463 + msgSetting: '',
  464 + templates: $('#notice_timely_param_sql').find('textarea[name="templates"]').eq(0).val()
462 }; 465 };
463 466
464 var errMsg = ''; 467 var errMsg = '';
465 468
466 if (!$('#notice_timely_param_sql').hasClass('hide')) { 469 if (!$('#notice_timely_param_sql').hasClass('hide')) {
467 // 获取模板信息 470 // 获取模板信息
468 - var val = $('#notice_timely_param_sql').find('textarea[name="templates"]').eq(0).val(); 471 + var val = obj.templates;
469 if(!val || val == '' || val == null){ 472 if(!val || val == '' || val == null){
470 var map = getRowName(); 473 var map = getRowName();
471 - var pa = ''; 474 + var exp = [];
  475 + var templatesVal = '';
472 map.rowNameList.forEach(item => { 476 map.rowNameList.forEach(item => {
473 - pa += '#{' + item + '},'; 477 + exp.push('#{' + item + '}')
474 }) 478 })
475 - if (pa != '') {  
476 - pa = pa.substring(0, pa.length - 1); 479 +
  480 + if (exp.length > 0) {
  481 + templatesVal = exp.join(",");
477 } 482 }
478 - val = pa; 483 + val = templatesVal;
479 } 484 }
480 -  
481 obj.templates = val; 485 obj.templates = val;
482 486
483 var arr = []; 487 var arr = [];
@@ -186,45 +186,47 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'treeTabl @@ -186,45 +186,47 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'treeTabl
186 cols: [[{ 186 cols: [[{
187 type: 'checkbox' 187 type: 'checkbox'
188 }, { 188 }, {
189 - field: 'name', title: '名称', align: 'center', width: '250', 189 + field: 'name', title: '名称', align: 'center', minWidth: '100',
190 templet: 190 templet:
191 '<div>' + 191 '<div>' +
192 ' <span data-id="{{d.id}}" class="link link-noticeTimely-edit">{{d.name}}</span>' + 192 ' <span data-id="{{d.id}}" class="link link-noticeTimely-edit">{{d.name}}</span>' +
193 '</div>' 193 '</div>'
194 }, { 194 }, {
195 - field: 'details', title: '内容', align: 'left', minWidth: '650', 195 + field: 'details', title: '内容', align: 'left', width: '15%',
196 templet: function (d) { 196 templet: function (d) {
197 // return '<input type="text" class="layui-input" style= "background-color:transparent;border:0;padding-bottom: 10px" readonly="readonly" name="details" value="' + d.details + '">' 197 // return '<input type="text" class="layui-input" style= "background-color:transparent;border:0;padding-bottom: 10px" readonly="readonly" name="details" value="' + d.details + '">'
198 return '<code>' + d.details + '</code>' 198 return '<code>' + d.details + '</code>'
199 } 199 }
200 }, { 200 }, {
201 - field: 'frequency', title: '频率', align: 'center', width: '130' 201 + field: 'frequency', title: '频率', align: 'center', minWidth: '120'
202 }, { 202 }, {
203 field: 'noticeNicknames', title: '用户', align: 'center', minWidth: '180' 203 field: 'noticeNicknames', title: '用户', align: 'center', minWidth: '180'
204 }, { 204 }, {
205 - field: 'state', title: '是否启用', align: 'center', width: '100', 205 + field: 'lastSendTime', title: '最后发送时间', align: 'center', minWidth: '170',templet: function (d) {
  206 + if(d.noticeStateNew && d.noticeStateNew.sendTime){
  207 + return d.noticeStateNew.sendTime;
  208 + }
  209 + return '';
  210 + }
  211 + },{
  212 + field: 'lastSendContent', title: '最后发送内容', align: 'center', minWidth: '200',templet: function (d) {
  213 + if(d.noticeStateNew && d.noticeStateNew.sendContent){
  214 + return d.noticeStateNew.sendContent;
  215 + }
  216 + return '';
  217 + }
  218 + },{
  219 + field: 'state', title: '是否启用', align: 'center', minWidth: '60',
206 templet: function (d) { 220 templet: function (d) {
207 var checked = d.state == 2 ? 'checked' : ''; 221 var checked = d.state == 2 ? 'checked' : '';
208 return '<div><input type="checkbox" data-id="' + d.id + '" lay-filter="switch_noticeTimely_checkbox_state" name="state" lay-skin="switch" lay-text="启用|禁用" ' + checked + ' ></div>' 222 return '<div><input type="checkbox" data-id="' + d.id + '" lay-filter="switch_noticeTimely_checkbox_state" name="state" lay-skin="switch" lay-text="启用|禁用" ' + checked + ' ></div>'
209 } 223 }
210 - }, /*{  
211 - field: 'broadcast', title: '是否广播', align: 'center', width: '100',  
212 - templet: function (d) {  
213 - var checked = d.broadcast == 1 ? 'checked' : '';  
214 - return '<div><input type="checkbox" data-id="' + d.id + '" lay-filter="switch_noticeTimely_checkbox_broadcast" name="broadcast" lay-skin="switch" lay-text="是|否" ' + checked + ' ></div>'  
215 - }  
216 }, { 224 }, {
217 - field: 'retry', title: '是否轮循', align: 'center', width: '100',  
218 - templet: function (d) {  
219 - var checked = d.retry == 1 ? 'checked' : '';  
220 - return '<div><input type="checkbox" data-id="' + d.id + '" lay-filter="switch_noticeTimely_checkbox_retry" name="retry" lay-skin="switch" lay-text="重发|不重发" ' + checked + ' ></div>'  
221 - }  
222 - }, */{  
223 - title: '操作', align: 'center', minWidth: '150', fixed: 'right', 225 + title: '操作', align: 'center', minWidth: '80', fixed: 'right',
224 templet: 226 templet:
225 '<div>' + 227 '<div>' +
226 ' <button data-id="{{d.id}}" class="layui-btn layui-btn-xs layui-btn-normal link-noticeTimely-delete" lay-tips="删除"><i class="layui-icon">&#xe640;</i></button>' + 228 ' <button data-id="{{d.id}}" class="layui-btn layui-btn-xs layui-btn-normal link-noticeTimely-delete" lay-tips="删除"><i class="layui-icon">&#xe640;</i></button>' +
227 - ' <button data-id="{{d.id}}" class="layui-btn layui-btn-xs layui-btn-normal link-noticeTimely-history" lay-tips="历史记录"><i class="layui-icon">&#xe705;</i></button>' + 229 + ' <button data-id="{{d.id}}" class="layui-btn layui-btn-xs layui-btn-normal link-noticeTimely-history" lay-tips="历史记录"><i class="layui-icon">&#xe60e;</i></button>' +
228 '</div>' 230 '</div>'
229 }]], 231 }]],
230 done: function (res) { 232 done: function (res) {
  1 +layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], function (exports) {
  2 + var $ = layui.$;
  3 + var view = layui.view;
  4 + var table = layui.table;
  5 + var common = layui.common;
  6 + var laydate = layui.laydate;
  7 + var admin = layui.admin;
  8 +
  9 + //对外暴露的接口
  10 + exports('onlineUser', function () {
  11 + var sessions = layui.sessions;
  12 + var accessToken = sessions.getToken().access_token;
  13 + var loginLog = "";
  14 + var cols = [{field: 'loginTime', title: '登录时间', align: 'center'}
  15 + , {field: 'loginIp', title: 'IP地址', align: 'center'}
  16 + , {field: 'nickname', title: '登录用户', align: 'center'}
  17 + , {field: 'orgName', title: '所属部门', align: 'center'}];
  18 +
  19 + loginLogTable();
  20 +
  21 + function loginLogTable() {
  22 + loginLog = table.render({
  23 + elem: '#onlineUserTable'
  24 + , height: 'full-auto'
  25 + , cellMinWidth: 0
  26 + , page: 1
  27 + , limit: 10
  28 + , url: common.domainName + '/api-log/sysLogin/findLogUser?access_token=' + accessToken
  29 + , cols: [cols]
  30 + , done: function (res, curr, count) {
  31 + }
  32 + });
  33 + }
  34 +
  35 + //刷新表格
  36 + function reloadTable() {
  37 + loginLog.reload({
  38 + page: {
  39 + curr: 1
  40 + }
  41 + , where: {
  42 + access_token: accessToken,
  43 + username: $("#loginAccount").val(),
  44 + startTime: $("#loginLogStartdate").val(),
  45 + endTime: $("#loginLogEnddate").val(),
  46 + mark: $("#loginLonMark").val(),
  47 + orgIds: settingOrgSelect.getValue("valueStr")
  48 + }
  49 + });
  50 + }
  51 + });
  52 +});
@@ -19,8 +19,9 @@ layui.define(['admin', 'form', 'table', 'element', 'sessions', 'common', 'echart @@ -19,8 +19,9 @@ layui.define(['admin', 'form', 'table', 'element', 'sessions', 'common', 'echart
19 var currSelect = 0; 19 var currSelect = 0;
20 var list = []; 20 var list = [];
21 var dataList = []; 21 var dataList = [];
22 - var date = new Date().getFullYear();  
23 - 22 + var date = '2021';
  23 + //lsq 调用获取今年和去年年份 2022-07-04
  24 + getYearDate();
24 getChartData(); 25 getChartData();
25 // loadAlarmOverChart1(alarmTrendChart,null,'24小时趋势表'); 26 // loadAlarmOverChart1(alarmTrendChart,null,'24小时趋势表');
26 loadResourceTable('resType','overviewResTypeTable'); 27 loadResourceTable('resType','overviewResTypeTable');
@@ -41,12 +42,7 @@ layui.define(['admin', 'form', 'table', 'element', 'sessions', 'common', 'echart @@ -41,12 +42,7 @@ layui.define(['admin', 'form', 'table', 'element', 'sessions', 'common', 'echart
41 $("#overview_time button").on("click",function () { 42 $("#overview_time button").on("click",function () {
42 $("#overview_time button").removeClass("active"); 43 $("#overview_time button").removeClass("active");
43 $(this).addClass("active"); 44 $(this).addClass("active");
44 - // date = $(this).data("years");  
45 - if($(this).data("years")=='lastYear'){  
46 - date = new Date().getFullYear()-1;  
47 - }else if($(this).data("years")=='year'){  
48 - date=new Date().getFullYear();  
49 - } 45 + date = $(this).data("years");
50 if (currSelect === 0) { 46 if (currSelect === 0) {
51 loadResourceTable('resType','overviewResTypeTable'); 47 loadResourceTable('resType','overviewResTypeTable');
52 } else if (currSelect === 1) { 48 } else if (currSelect === 1) {
@@ -440,5 +436,22 @@ layui.define(['admin', 'form', 'table', 'element', 'sessions', 'common', 'echart @@ -440,5 +436,22 @@ layui.define(['admin', 'form', 'table', 'element', 'sessions', 'common', 'echart
440 alink.click(); 436 alink.click();
441 document.body.removeChild(alink); 437 document.body.removeChild(alink);
442 } 438 }
  439 +
  440 + //lsq 获取今年和去年的年份赋值给按钮 2022-07-04
  441 + function getYearDate(){
  442 + let myDate=new Date();
  443 + let thisYear=getDateTime(myDate);
  444 + myDate.setFullYear(myDate.getFullYear()-1);
  445 + let lastYear=getDateTime(myDate);
  446 + $('#thisYear').attr('data-years',thisYear);
  447 + $('#lastYear').attr('data-years',lastYear);
  448 + date=thisYear;
  449 + }
  450 + //获取时间点 转年月日的方法
  451 + function getDateTime(newDate){
  452 + let year=newDate.getFullYear();//获取年
  453 + return year;
  454 + }
  455 +
443 }); 456 });
444 }); 457 });
@@ -27,10 +27,10 @@ layui.define(['table', 'form', 'sessions', 'common', 'view', 'admin'], function @@ -27,10 +27,10 @@ layui.define(['table', 'form', 'sessions', 'common', 'view', 'admin'], function
27 } 27 }
28 }); 28 });
29 29
30 - // //按钮搜索  
31 - // $('#heartbeatQueryBtn').unbind().on('click',function (e) {  
32 - // reloadTable();  
33 - // }) 30 + //按钮搜索
  31 + $('#heartbeatQueryBtn').unbind().on('click',function (e) {
  32 + reloadTable();
  33 + })
34 34
35 35
36 // 渲染表格 36 // 渲染表格
@@ -63,10 +63,12 @@ layui.define(['table', 'form', 'sessions', 'common', 'view', 'admin'], function @@ -63,10 +63,12 @@ layui.define(['table', 'form', 'sessions', 'common', 'view', 'admin'], function
63 }, { 63 }, {
64 field: 'currTime', title: '最近心跳时间', align: 'center',sort: true, 64 field: 'currTime', title: '最近心跳时间', align: 'center',sort: true,
65 templet: function (d) { 65 templet: function (d) {
  66 + var durationVal = $('[name="durationVal"]').val();
  67 + if(!durationVal || durationVal == '' || durationVal == null){
  68 + durationVal = 10;
  69 + }
66 var beatTime = new Date(d.currTime); 70 var beatTime = new Date(d.currTime);
67 - var time = new Date();  
68 - time.setMinutes(time.getMinutes() - 10);  
69 - if (time > beatTime) { 71 + if (d.between > parseInt(durationVal)) {
70 return `<div class="red">${beatTime.format("yyyy-MM-dd HH:mm:ss")}</div>` 72 return `<div class="red">${beatTime.format("yyyy-MM-dd HH:mm:ss")}</div>`
71 } else { 73 } else {
72 return `<div>${beatTime.format("yyyy-MM-dd HH:mm:ss")}</div>` 74 return `<div>${beatTime.format("yyyy-MM-dd HH:mm:ss")}</div>`
@@ -85,7 +87,7 @@ layui.define(['table', 'form', 'sessions', 'common', 'view', 'admin'], function @@ -85,7 +87,7 @@ layui.define(['table', 'form', 'sessions', 'common', 'view', 'admin'], function
85 heartbeatTable.reload({ 87 heartbeatTable.reload({
86 where: { 88 where: {
87 access_token: accessToken, 89 access_token: accessToken,
88 - keyword: $('#condition-heartbeat-name').val(), 90 + keyword: $('#condition-heartbeat-name').val()
89 }, 91 },
90 page: { 92 page: {
91 curr: 1 93 curr: 1
@@ -38,18 +38,21 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi @@ -38,18 +38,21 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi
38 , {field: 'loginIp', title: 'IP地址', align: 'center'} 38 , {field: 'loginIp', title: 'IP地址', align: 'center'}
39 , {field: 'nickname', title: '登录用户', align: 'center'} 39 , {field: 'nickname', title: '登录用户', align: 'center'}
40 , {field: 'orgName', title: '所属部门', align: 'center'}] 40 , {field: 'orgName', title: '所属部门', align: 'center'}]
41 - url = common.domainName +'/api-log/sysLogin/findLogPage?access_token='+accessToken 41 + url = common.domainName + '/api-log/sysLogin/findLogPage?access_token=' + accessToken
42 loginLogTable() 42 loginLogTable()
43 $("#loginUserNum").unbind("click").on('click', function () { 43 $("#loginUserNum").unbind("click").on('click', function () {
44 - $("#loginLonMark").val("mark")  
45 - $("#loginAccount").val(""),  
46 - $("#loginLogStartdate").val(""),  
47 - $("#loginLogEnddate").val(""),  
48 - reloadTable(); 44 + // $("#loginLonMark").val("mark")
  45 + // $("#loginAccount").val(""),
  46 + // $("#loginLogStartdate").val(""),
  47 + // $("#loginLogEnddate").val(""),
  48 + // reloadTable();
  49 + common.openWin('setting/onlineUser', '在线用户', {}, [], function f() {
  50 +
  51 + }, null, ['60%', '45%']);
49 }) 52 })
50 } else { 53 } else {
51 $("#generalUserHeader").show(); 54 $("#generalUserHeader").show();
52 - url = common.domainName +'/api-log/sysLogin/findList?access_token='+accessToken 55 + url = common.domainName + '/api-log/sysLogin/findList?access_token=' + accessToken
53 paga = false; 56 paga = false;
54 cols = [{field: 'loginTime', title: '登录时间', align: 'center'} 57 cols = [{field: 'loginTime', title: '登录时间', align: 'center'}
55 , {field: 'loginIp', title: 'IP地址', align: 'center'} 58 , {field: 'loginIp', title: 'IP地址', align: 'center'}
@@ -121,14 +124,14 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi @@ -121,14 +124,14 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi
121 } 124 }
122 } 125 }
123 }, 126 },
124 - on: function(data){ 127 + on: function (data) {
125 setTimeout(reloadTable, 0) 128 setTimeout(reloadTable, 0)
126 }, 129 },
127 data: res.data 130 data: res.data
128 }) 131 })
129 - if(settingOrgSelect){ 132 + if (settingOrgSelect) {
130 //追加样式 133 //追加样式
131 - $('#settingOrgId').find('.xm-body').eq(0).css("width","230px"); 134 + $('#settingOrgId').find('.xm-body').eq(0).css("width", "230px");
132 } 135 }
133 } 136 }
134 }) 137 })
@@ -141,7 +144,11 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi @@ -141,7 +144,11 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi
141 reloadTable(); 144 reloadTable();
142 } 145 }
143 }); 146 });
144 - 147 + //lsq 登录日志页增加搜索按钮 2022-06-30
  148 + $('#settingQueryBtn').unbind('click').on('click', function () {
  149 + $("#loginLonMark").val("")
  150 + reloadTable();
  151 + })
145 $('[data-setting-pwd]').click(function () { 152 $('[data-setting-pwd]').click(function () {
146 view('data-setting-pwd').render('template/user/password').then(function (res) { 153 view('data-setting-pwd').render('template/user/password').then(function (res) {
147 layer.open({ 154 layer.open({
@@ -154,7 +161,7 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi @@ -154,7 +161,7 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi
154 }); 161 });
155 162
156 function loginLogTable() { 163 function loginLogTable() {
157 - if (localStorage.getItem("lgn") === 'admin' || localStorage.getItem("lgn") === 'root' ){ 164 + if (localStorage.getItem("lgn") === 'admin' || localStorage.getItem("lgn") === 'root') {
158 loginLog = table.render({ 165 loginLog = table.render({
159 elem: '#settingLoginRecord' 166 elem: '#settingLoginRecord'
160 , height: 'full-170' 167 , height: 'full-170'
@@ -168,12 +175,12 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi @@ -168,12 +175,12 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi
168 if (res && res.data && res.data.length > 0) { 175 if (res && res.data && res.data.length > 0) {
169 $('#lastLogin').text(res.data[0].loginTime); 176 $('#lastLogin').text(res.data[0].loginTime);
170 } 177 }
171 - if(res.object){ 178 + if (res.object) {
172 $('#loginUserNum').text(res.object); 179 $('#loginUserNum').text(res.object);
173 } 180 }
174 } 181 }
175 }); 182 });
176 - }else{ 183 + } else {
177 loginLog = table.render({ 184 loginLog = table.render({
178 elem: '#settingLoginRecord' 185 elem: '#settingLoginRecord'
179 , height: 'full-170' 186 , height: 'full-170'
@@ -187,7 +194,7 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi @@ -187,7 +194,7 @@ layui.define(['table', 'laydate', 'admin', 'view', 'common', 'sessions'], functi
187 if (res && res.data && res.data.length > 0) { 194 if (res && res.data && res.data.length > 0) {
188 $('#lastLogin').text(res.data[0].loginTime); 195 $('#lastLogin').text(res.data[0].loginTime);
189 } 196 }
190 - if(res.object){ 197 + if (res.object) {
191 $('#loginUserNum').text(res.object); 198 $('#loginUserNum').text(res.object);
192 } 199 }
193 } 200 }
@@ -42,7 +42,20 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -42,7 +42,20 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
42 42
43 //按钮搜索 43 //按钮搜索
44 $('#systemNoticeQueryBtn').unbind().on('click',function (e) { 44 $('#systemNoticeQueryBtn').unbind().on('click',function (e) {
45 - reloadTable(); 45 + if(!noticeTable){
  46 + return;
  47 + }
  48 + conditions.noticeTempName = $('#condition-template-noticeTempName').val().trim();
  49 + conditions.startTime = $('#condition-template-startTime').val().trim();
  50 + conditions.endTime = $('#condition-template-endTime').val().trim();
  51 + conditions.access_token = accessToken
  52 + // 刷新表格
  53 + noticeTable.reload({
  54 + where: conditions,
  55 + page: {
  56 + curr: 1
  57 + }
  58 + });
46 }) 59 })
47 60
48 // 新增按钮 61 // 新增按钮
@@ -83,6 +96,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -83,6 +96,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
83 conditions.startTime = $('#condition-template-startTime').val().trim(); 96 conditions.startTime = $('#condition-template-startTime').val().trim();
84 conditions.endTime = $('#condition-template-endTime').val().trim(); 97 conditions.endTime = $('#condition-template-endTime').val().trim();
85 noticeTable = table.render({ 98 noticeTable = table.render({
  99 + id:'systemNoticeNoticeTable',
86 elem: '#notice-table', 100 elem: '#notice-table',
87 url: domainName + '/api-web/manage/noticetemp/page?access_token=' + accessToken, 101 url: domainName + '/api-web/manage/noticetemp/page?access_token=' + accessToken,
88 where: conditions, 102 where: conditions,
@@ -96,7 +110,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -96,7 +110,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
96 cols: [[{ 110 cols: [[{
97 type: 'checkbox' 111 type: 'checkbox'
98 }, { 112 }, {
99 - field: 'noticeTempName', title: '模板名称', align: 'left',minWidth:400, 113 + field: 'noticeTempName', title: '模板名称', align: 'left',minWidth:400, sort: true,
100 templet: 114 templet:
101 '<div>' + 115 '<div>' +
102 ' <span' + 116 ' <span' +
@@ -129,33 +143,31 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -129,33 +143,31 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
129 // } 143 // }
130 // } 144 // }
131 , { 145 , {
132 - field: 'subPersonSum', title: '订阅人数', align: 'center', 146 + field: 'subPersonSum', title: '订阅用户', align: 'center',
133 templet: function (d) { 147 templet: function (d) {
134 if (!d.noticeTempUserList) { 148 if (!d.noticeTempUserList) {
135 return ''; 149 return '';
136 } else { 150 } else {
137 var userList = []; 151 var userList = [];
138 - var userName = ''  
139 $.each(d.noticeTempUserList,function (i,v) { 152 $.each(d.noticeTempUserList,function (i,v) {
140 userList.push(v.nickname); 153 userList.push(v.nickname);
141 }) 154 })
142 - userName = userList.toString();  
143 // return '<span data-subid="' + d.subId + '" class="layui-table-link link-notice-temp-view-user" style="width: 100%;">' + userName + '</span>'; 155 // return '<span data-subid="' + d.subId + '" class="layui-table-link link-notice-temp-view-user" style="width: 100%;">' + userName + '</span>';
144 - return '<span>' + userName + '</span>'; 156 + return userList.join(",");
145 } 157 }
146 } 158 }
147 - }, {  
148 - field: 'lastNoticeTime', title: '最后一次通知时间', align: 'center', templet: function (d) { 159 + }, /*{
  160 + field: 'lastNoticeTime', title: '最后一次通知时间', align: 'center', sort: true, templet: function (d) {
149 if (d.alarmNoticeHis.updateTime) { 161 if (d.alarmNoticeHis.updateTime) {
150 return '<span class="layui-table-link link-notice-temp-view-notice" data-subid="' + d.subId + '" data-index="' + d.LAY_TABLE_INDEX + '">' + d.alarmNoticeHis.updateTime + '</span>' 162 return '<span class="layui-table-link link-notice-temp-view-notice" data-subid="' + d.subId + '" data-index="' + d.LAY_TABLE_INDEX + '">' + d.alarmNoticeHis.updateTime + '</span>'
151 } else { 163 } else {
152 return '' 164 return ''
153 } 165 }
154 } 166 }
  167 + },*/ {
  168 + field: 'frequency', title: '通知频率', align: 'center',sort:true
155 }, { 169 }, {
156 - field: 'frequency', title: '通知频率', align: 'center'  
157 - }, {  
158 - field: 'tempStatus', title: '状态', align: 'center', 170 + field: 'tempStatus', title: '状态', align: 'center',sort: true,
159 templet: function (d) { 171 templet: function (d) {
160 var checked = ''; 172 var checked = '';
161 if(d.enable == '1'){ //默认 173 if(d.enable == '1'){ //默认
@@ -178,6 +190,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -178,6 +190,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
178 templet: 190 templet:
179 '<div>' + 191 '<div>' +
180 ' <button data-id="{{d.noticeTempId}}" lay-tips="删除" type="button" class="layui-btn layui-btn-xs layui-btn-normal link-notice-temp-delete"><i class="layui-icon layui-icon-delete"></i></button>' + 192 ' <button data-id="{{d.noticeTempId}}" lay-tips="删除" type="button" class="layui-btn layui-btn-xs layui-btn-normal link-notice-temp-delete"><i class="layui-icon layui-icon-delete"></i></button>' +
  193 + ' <button data-id="{{d.noticeTempId}}" data-subId="{{d.subId}}" lay-tips="发送" type="button" class="layui-btn layui-btn-xs layui-btn-normal link-notice-temp-send"><i class="layui-icon layui-icon-release"></i></button>' +
181 '</div>' 194 '</div>'
182 }]], 195 }]],
183 done: function (res) { 196 done: function (res) {
@@ -214,6 +227,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -214,6 +227,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
214 saveNotice($(this).data('id'),$(this).data("subid"),res.data[$(this).data('index')]); 227 saveNotice($(this).data('id'),$(this).data("subid"),res.data[$(this).data('index')]);
215 }); 228 });
216 229
  230 + // 手动发送
  231 + $('.link-notice-temp-send').click(function () {
  232 + openUserWindow($(this).data('subid'),res.data[$(this).data('index')]);
  233 + });
  234 +
217 // 绑定订阅事件 235 // 绑定订阅事件
218 $('.link-notice-temp-bind-sub').click(function () { 236 $('.link-notice-temp-bind-sub').click(function () {
219 var noticeTempId = $(this).data('id'); 237 var noticeTempId = $(this).data('id');
@@ -391,6 +409,22 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -391,6 +409,22 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
391 // }); 409 // });
392 } 410 }
393 }); 411 });
  412 +
  413 +
  414 + //触发排序事件
  415 + table.on('sort(notice-table)', function(obj){
  416 + var type = !obj.type ? 'desc' : obj.type;
  417 +
  418 + conditions.orderKey = ` ${obj.field} ${type}`
  419 + //尽管我们的 table 自带排序功能,但并没有请求服务端。
  420 + //有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,从而实现服务端排序,如:
  421 + table.reload('systemNoticeNoticeTable', {
  422 + initSort: obj //记录初始排序,如果不设的话,将无法标记表头的排序状态。
  423 + ,where: conditions
  424 + });
  425 +
  426 + //layer.msg('服务端排序。order by '+ obj.field + ' ' + obj.type);
  427 + });
394 } 428 }
395 429
396 //发送通知弹窗 430 //发送通知弹窗
@@ -1056,7 +1056,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'upload', 'common', 'sessions', @@ -1056,7 +1056,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'upload', 'common', 'sessions',
1056 btn: ['完成'], 1056 btn: ['完成'],
1057 content: laytpl(res.body).render(JSON.stringify({username:usernames})), 1057 content: laytpl(res.body).render(JSON.stringify({username:usernames})),
1058 yes: function (index, layero) {//保存业务授权 1058 yes: function (index, layero) {//保存业务授权
1059 - debugger  
1060 var busType = layui.bustype({username:usernames[0], mode: 'bind'}); 1059 var busType = layui.bustype({username:usernames[0], mode: 'bind'});
1061 var busTypeData = busType.getData(); 1060 var busTypeData = busType.getData();
1062 var loding = layer.load(2); 1061 var loding = layer.load(2);
@@ -8044,3 +8044,94 @@ form[lay-filter="activewarning-form"] .layui-inline { @@ -8044,3 +8044,94 @@ form[lay-filter="activewarning-form"] .layui-inline {
8044 text-decoration: underline; 8044 text-decoration: underline;
8045 } 8045 }
8046 /*end lsq 2022-06-28*/ 8046 /*end lsq 2022-06-28*/
  8047 +/*lsq 指令模板编辑指令时的指令名称样式 2022-07-04*/
  8048 +.table-edit.table-edit-textoverflow td[data-field="dirctiveName"] .layui-table-cell{
  8049 + overflow: hidden;
  8050 + text-overflow: ellipsis;
  8051 + white-space: nowrap;
  8052 +
  8053 +}
  8054 +/*lsq x86新增指标在详情页下的样式 2022-07-04*/
  8055 +.template .lay-row-item-num {
  8056 + background-color: #f8f8f8;
  8057 + display: flex;
  8058 + justify-content: space-around;
  8059 + align-items: center;
  8060 + min-height: 64px;
  8061 +}
  8062 +.template .lay-row-item-num .lay-row-num{
  8063 + text-decoration: underline;
  8064 + font-size: 32px;
  8065 + cursor: pointer;
  8066 +}
  8067 +.cpupie_chart{
  8068 + width:100%;
  8069 +}
  8070 +.cpupie_chart div:first-child{
  8071 + z-index: 99;
  8072 +}
  8073 +.pie-circleStr{
  8074 + position: absolute;
  8075 + top: 0;
  8076 + left: 0;
  8077 + right: 60%;
  8078 + bottom: 0px;
  8079 + display: flex;
  8080 + align-items: center;
  8081 + justify-content: center;
  8082 + font-size: 16px;
  8083 + z-index: 9;
  8084 +}
  8085 +.pie-circleStr-title{
  8086 + border: 1px solid #CCCCCC;
  8087 + height: 55px;
  8088 + width: 55px;
  8089 + border-radius: 50%;
  8090 + display: flex;
  8091 + justify-content: center;
  8092 + align-items: center;
  8093 +}
  8094 +.pie-legend{
  8095 + position: absolute;
  8096 + top: 0;
  8097 + right: 0;
  8098 + left: 55%;
  8099 + height: 115px;
  8100 + display: flex;
  8101 + flex-flow: column;
  8102 + justify-content: center;
  8103 + z-index: 100;
  8104 +}
  8105 +.pie-legend-item{
  8106 + display:flex;
  8107 + align-items: center;
  8108 + font-size: 12px;
  8109 + line-height: 23px;
  8110 +}
  8111 +.pie-legend-icon{
  8112 + width:20px;
  8113 + height:4px;
  8114 + margin-right: 3px;
  8115 + display: none;
  8116 +}
  8117 +.pie-legend-num{
  8118 + cursor: pointer;
  8119 + color:#1e9fff;
  8120 + text-decoration: underline;
  8121 +}
  8122 +/*lsq 通知查询搜索栏 2022-07-05*/
  8123 +.search_button_group{
  8124 + display: flex;
  8125 + justify-content: space-between;
  8126 + padding:6px;
  8127 +}
  8128 +.card_header_search_button{
  8129 + width:330px;
  8130 +}
  8131 +.quick_search span{
  8132 + background-color: #1e9fff;
  8133 + border-radius: 8px;
  8134 + padding: 5px;
  8135 + color: #fff;
  8136 + cursor: pointer;
  8137 +}
@@ -69,8 +69,8 @@ @@ -69,8 +69,8 @@
69 <li>业务系统</li> 69 <li>业务系统</li>
70 <li>业务域</li> 70 <li>业务域</li>
71 <div class="layui-btn-group time-group" id="overview_time" style="margin-left: 60%"> 71 <div class="layui-btn-group time-group" id="overview_time" style="margin-left: 60%">
72 - <button type="button" class="layui-btn layui-btn-primary layui-btn-sm" data-years="lastYear">去年</button>  
73 - <button type="button" class="layui-btn layui-btn-primary layui-btn-sm active" data-years="year">今年</button> 72 + <button type="button" class="layui-btn layui-btn-primary layui-btn-sm" id="lastYear" data-years="2020">去年</button>
  73 + <button type="button" class="layui-btn layui-btn-primary layui-btn-sm active" id="thisYear" data-years="2021">今年</button>
74 </div> 74 </div>
75 <button class="layui-btn layui-btn-sm layui-btn-normal tab-button" id="btn_overview_export_excel"> 75 <button class="layui-btn layui-btn-sm layui-btn-normal tab-button" id="btn_overview_export_excel">
76 <i class="layui-icon">&#xe60a;</i>导出到Excel 76 <i class="layui-icon">&#xe60a;</i>导出到Excel
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
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 type="text" id="alarmtemplatekw" lay-tips="关键字检索包含 </br>模板名称" name="alarmtemplatekw" placeholder="输入关键字,回车搜索" autocomplete="off" class="layui-input"> 12 + <input type="text" id="alarmtemplatekw" lay-tips="关键字检索包含 </br>模板名称</br>资源名称" name="alarmtemplatekw" placeholder="输入关键字,回车搜索" autocomplete="off" class="layui-input">
13 </div> 13 </div>
14 </div> 14 </div>
15 <div class="layui-inline"> 15 <div class="layui-inline">
@@ -57,6 +57,78 @@ @@ -57,6 +57,78 @@
57 </div> 57 </div>
58 <textarea class="hide" id="alarmtemplate-params">{{d}}</textarea> 58 <textarea class="hide" id="alarmtemplate-params">{{d}}</textarea>
59 </article> 59 </article>
  60 +
  61 +<script id="tempResource" type="text/html">
  62 + <article class="page-container">
  63 + <div class="page-panel">
  64 + <div class="main">
  65 + <div class="layui-card">
  66 + <div class="layui-card-header">
  67 + <div class="layui-status">
  68 + <form class="layui-form layui-card-header layuiadmin-card-header-auto">
  69 + <div class="layui-form-item">
  70 + <div class="layui-inline">
  71 + <div class="layui-input-inline layui-input-inline--long">
  72 + <input type="text" id="res-keyword" placeholder="输入名称,回车搜索" autocomplete="off"
  73 + lay-tips="关键字检索包含: </br>资源名称</br>ip地址"
  74 + class="layui-input">
  75 + </div>
  76 + </div>
  77 + <div class="layui-inline">
  78 + <div class="layui-input-inline layui-input-inline--long">
  79 + <div id="templist_restype"></div>
  80 + </div>
  81 + </div>
  82 +
  83 + <div class="layui-inline">
  84 + <div class="layui-input-inline">
  85 + <select name="reslist_resStatus" id="templist_resStatus" lay-filter="templist_resStatus" lay-verify="required">
  86 + <option value="">=资源状态=</option>
  87 + <option value="1"></option>
  88 + <option value="2"></option>
  89 + <option value="3"></option>
  90 + </select>
  91 + </div>
  92 + </div>
  93 + <div class="layui-inline">
  94 + <div class="layui-input-inline">
  95 + <select name="label" id="templist_resListBizTypes" lay-filter="templist_resListBizTypes" lay-search>
  96 + <option value="">=选择业务=</option>
  97 + </select>
  98 + </div>
  99 + </div>
  100 + <div class="layui-inline">
  101 + <div class="layui-input-inline">
  102 + <select name="provider" id="templist_provider" lay-filter="templist_provider" lay-search>
  103 + <option value="">=选择厂商=</option>
  104 + </select>
  105 + </div>
  106 + </div>
  107 + <div class="layui-inline">
  108 + <button id="tempResBut" type="button" class="layui-btn layui-btn-normal" ><i
  109 + class="layui-icon layui-icon-search"></i>查
  110 + </button>
  111 + </div>
  112 + </div>
  113 + </form>
  114 + </div>
  115 + </div>
  116 + <div class="layui-card-body">
  117 + <div class="warn-btns">
  118 + <button id="addAuthResBtn" type="button" class="layui-btn layui-btn-sm layui-btn-normal"><i
  119 + class="layui-icon">&#xe654;</i>新增资
  120 + </button>
  121 + <button id="delAuthResBtn" type="button" class="layui-btn layui-btn-sm layui-btn-normal"><i
  122 + class="layui-icon">&#xe640;</i>删除资
  123 + </button>
  124 + </div>
  125 + <table id="res_temp_table"></table>
  126 + </div>
  127 + </div>
  128 + </div>
  129 + </div>
  130 + </article>
  131 +</script>
60 <!--<script template lay-done="layui.data.sendParams(d.params)"></script>--> 132 <!--<script template lay-done="layui.data.sendParams(d.params)"></script>-->
61 <script> 133 <script>
62 var params = document.getElementById("alarmtemplate-params").value; 134 var params = document.getElementById("alarmtemplate-params").value;
@@ -36,7 +36,7 @@ @@ -36,7 +36,7 @@
36 <a class="layui-btn layui-btn-xs layui-btn-normal" id="checkTemplateChooseKpi"><i class="layui-icon">&#xe624;</i></a> 36 <a class="layui-btn layui-btn-xs layui-btn-normal" id="checkTemplateChooseKpi"><i class="layui-icon">&#xe624;</i></a>
37 </legend> 37 </legend>
38 </fieldset> 38 </fieldset>
39 - <div class="layui-form-item table-edit"> 39 + <div class="layui-form-item table-edit table-edit-textoverflow">
40 <table id="checkTemplate_add_table"></table> 40 <table id="checkTemplate_add_table"></table>
41 </div> 41 </div>
42 </form> 42 </form>
@@ -17,9 +17,9 @@ @@ -17,9 +17,9 @@
17 <div class="page-panel"> 17 <div class="page-panel">
18 <div class="main"> 18 <div class="main">
19 <div class="layui-card" style="overflow: hidden"> 19 <div class="layui-card" style="overflow: hidden">
20 - <div class="layui-card-header"> 20 + <div class="layui-card-header" style=" padding: 0 3px;">
21 <div class="layui-status search_panel"> 21 <div class="layui-status search_panel">
22 - <form class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="notice_search_form"> 22 + <form style="padding:5px 0 0 0;" class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="notice_search_form">
23 <div class="layui-form-item"> 23 <div class="layui-form-item">
24 <div class="layui-inline"> 24 <div class="layui-inline">
25 <div class="layui-input-inline layui-input-inline--long"> 25 <div class="layui-input-inline layui-input-inline--long">
@@ -45,13 +45,36 @@ @@ -45,13 +45,36 @@
45 </div> 45 </div>
46 </div> 46 </div>
47 <!--发送状态--> 47 <!--发送状态-->
48 - <div class="layui-inline">  
49 - <div class="layui-input-inline layui-input-inline--long"> 48 + <!--<div class="layui-inline">
  49 + <div class="layui-input-inline layui-input-inline&#45;&#45;long">
50 <select id="notice_search_isSend" lay-filter="notice_search_isSend"> 50 <select id="notice_search_isSend" lay-filter="notice_search_isSend">
51 <option value="1">已发送</option> 51 <option value="1">已发送</option>
52 <option value="">待发送</option> 52 <option value="">待发送</option>
53 </select> 53 </select>
54 </div> 54 </div>
  55 + </div>-->
  56 + <!--lsq 告警指标 2022-07-05-->
  57 + <div class="layui-inline">
  58 + <div class="layui-input-inline">
  59 + <select name="alarmKpi" lay-filter="alarmKpiSearch" lay-search="" id="noticeAlarmKpiSearchBox">
  60 + </select>
  61 + </div>
  62 + </div>
  63 + <!--lsq 通知方式 2022-07-05-->
  64 + <div class="layui-inline">
  65 + <div class="layui-input-inline">
  66 + <select name="way" lay-filter="noticeWaySearch" llay-search="" id="noticeWaySearchBox">
  67 + </select>
  68 + </div>
  69 + </div>
  70 + <div class="layui-inline">
  71 + <div class="layui-btn-group">
  72 + <button type="button" class="layui-btn layui-btn-primary" data-period="all">全部</button>
  73 + <button type="button" class="layui-btn active" data-period="today">今天</button>
  74 + <button type="button" class="layui-btn layui-btn-primary" data-period="week">本周</button>
  75 + <button type="button" class="layui-btn layui-btn-primary" data-period="month">本月</button>
  76 + <button type="button" class="layui-btn layui-btn-primary" data-period="custom" id="dataPeriodCustom">自定义</button>
  77 + </div>
55 </div> 78 </div>
56 <div class="layui-inline"> 79 <div class="layui-inline">
57 <button id="noticeSearchQueryBtn" type="button" class="layui-btn layui-btn-normal" ><i 80 <button id="noticeSearchQueryBtn" type="button" class="layui-btn layui-btn-normal" ><i
@@ -60,6 +83,7 @@ @@ -60,6 +83,7 @@
60 </div> 83 </div>
61 </div> 84 </div>
62 </form> 85 </form>
  86 +
63 </div> 87 </div>
64 </div> 88 </div>
65 <div style="display: flex" class="layui-card-echart"> 89 <div style="display: flex" class="layui-card-echart">
@@ -86,9 +86,9 @@ @@ -86,9 +86,9 @@
86 <select name="type" id="noticeTimely_type" lay-filter="noticeTimely_type"> 86 <select name="type" id="noticeTimely_type" lay-filter="noticeTimely_type">
87 <option value="SQL">监控数据库</option> 87 <option value="SQL">监控数据库</option>
88 <option value="TEXT">文本</option> 88 <option value="TEXT">文本</option>
89 - <!-- <option value="es">es</option>  
90 - <option value="influxdb">时序</option>  
91 - <option value="tdEngine">tdEngine</option>--> 89 + <option value="ES">es</option>
  90 + <option value="INFLUXDB">时序</option>
  91 + <!-- <option value="tdEngine">tdEngine</option>-->
92 </select> 92 </select>
93 <div style="padding: 3px"> 93 <div style="padding: 3px">
94 文本支持:#{now} 当前时间格式:yyyy-MM-dd HH:mm:ss 94 文本支持:#{now} 当前时间格式:yyyy-MM-dd HH:mm:ss
@@ -13,8 +13,7 @@ @@ -13,8 +13,7 @@
13 </div> 13 </div>
14 </div> 14 </div>
15 <div class="layui-inline"> 15 <div class="layui-inline">
16 - <button id="noticeTimelyQueryBtn" type="button" class="layui-btn layui-btn-normal" ><i  
17 - class="layui-icon layui-icon-search"></i>查询 16 + <button id="noticeTimelyQueryBtn" type="button" class="layui-btn layui-btn-normal" >查询
18 </button> 17 </button>
19 </div> 18 </div>
20 </div> 19 </div>
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
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">
9 - <div class="layui-form-item"> 9 + <div class="layui-form-item" style="display: inline-flex;">
10 <div class="layui-inline"> 10 <div class="layui-inline">
11 <div class="layui-input-inline layui-input-inline--long" style="width: 180px;"> 11 <div class="layui-input-inline layui-input-inline--long" style="width: 180px;">
12 <input type="text" id="condition-heartbeat-name" 12 <input type="text" id="condition-heartbeat-name"
@@ -14,11 +14,15 @@ @@ -14,11 +14,15 @@
14 placeholder="输入关键字,回车搜索" autocomplete="off" class="layui-input"> 14 placeholder="输入关键字,回车搜索" autocomplete="off" class="layui-input">
15 </div> 15 </div>
16 </div> 16 </div>
17 -<!-- <div class="layui-inline">-->  
18 -<!-- <button id="heartbeatQueryBtn" type="button" class="layui-btn layui-btn-normal" ><i-->  
19 -<!-- class="layui-icon layui-icon-search"></i>查询-->  
20 -<!-- </button>-->  
21 -<!-- </div>--> 17 + <div class="layui-inline" style="display: flex;flex-wrap: nowrap;width: 250px">
  18 + <div>超过最近心跳范围:</div>
  19 + <input type="number" name="durationVal" style="width: 80px"
  20 + lay-tips="超过最近心跳时间(单位:分钟)的心跳,<br/>在表格最近心跳列中文字颜色使用<span style='color:red'>红色</span>字体标识" placeholder="最近心跳时间" value="10" class="layui-input">
  21 + <div>分钟</div>
  22 + </div>
  23 + <div class="layui-inline">
  24 + <button id="heartbeatQueryBtn" type="button" class="layui-btn layui-btn-normal">查询</button>
  25 + </div>
22 </div> 26 </div>
23 </form> 27 </form>
24 </div> 28 </div>
@@ -163,7 +163,10 @@ @@ -163,7 +163,10 @@
163 <p class="biz-count">业务总数<span id="bizTotal">0</span></p> 163 <p class="biz-count">业务总数<span id="bizTotal">0</span></p>
164 </div> 164 </div>
165 <div class="layui-card-body"> 165 <div class="layui-card-body">
166 - <input type="text" placeholder="搜索..." autocomplete="off" class="layui-input layui-input-search"> 166 + <div>
  167 + <input type="search" placeholder="搜索..." lay-tips="关键字检索包含: </br>资源名称</br>ip地址</br>资源类型</br>操作系统类型" id="bizInputSearch" autocomplete="off" class="layui-input layui-input-search" style="width: 180px">
  168 + <button class="layui-btn layui-btn-sm layui-btn-normal" id="bizSearch" style="width: 50px;height: 30px;margin-top: -6px;">查询</button>
  169 + </div>
167 <div id="bizindextree"></div> 170 <div id="bizindextree"></div>
168 </div> 171 </div>
169 </div> 172 </div>
@@ -18,12 +18,21 @@ @@ -18,12 +18,21 @@
18 <div class="layui-card-body noticeCount-ECharts" id="count_notice_send"> 18 <div class="layui-card-body noticeCount-ECharts" id="count_notice_send">
19 <div class="layui-noticeCount-ECharts"> 19 <div class="layui-noticeCount-ECharts">
20 <div> 20 <div>
21 - <h5 class="lay-row-title" style="color: #666;">业务子系统告警发送统计</h5>  
22 - <div class="pie-chart pie-chart-custom" id="count_notice_send_business" style="height: 30vh"></div> 21 + <h5 class="lay-row-title">
  22 + 业务子系统告警发送统计
  23 + <span id="businessMore">查看更多</span>
  24 +
  25 + </h5>
  26 + <div class="pie-chart pie-chart-custom" id="count_notice_send_business"
  27 + style="height: 30vh"></div>
23 </div> 28 </div>
24 <div> 29 <div>
25 - <h5 class="lay-row-title" style="color: #666;">人员告警发送统计</h5>  
26 - <div class="pie-chart pie-chart-custom" id="count_notice_send_user" style="height: 30vh"></div> 30 + <h5 class="lay-row-title">人员告警发送统计
  31 + <i class="iconfont detail_base_info" style="color:rgb(30,159,255);">&#xe61e;</i>
  32 + <span id="userMore">查看更多</span>
  33 + </h5>
  34 + <div class="pie-chart pie-chart-custom" id="count_notice_send_user"
  35 + style="height: 30vh"></div>
27 </div> 36 </div>
28 </div> 37 </div>
29 </div> 38 </div>
@@ -274,9 +274,10 @@ @@ -274,9 +274,10 @@
274 <div class="layui-card"> 274 <div class="layui-card">
275 275
276 <div class="layui-card-body"> 276 <div class="layui-card-body">
277 - <!--  
278 - <input type="text" placeholder="搜索..." autocomplete="off" class="layui-input layui-input-search">  
279 - --> 277 + <div>
  278 + <input type="search" placeholder="搜索..." autocomplete="off" lay-tips="关键字检索包含: </br>资源名称</br>ip地址</br>资源类型</br>操作系统类型" id="inputSearch" class="layui-input layui-input-search" style="width: 180px">
  279 + <button class="layui-btn layui-btn-sm layui-btn-normal" id="resSearch" style="width: 50px;height: 30px;margin-top: -6px;">查询</button>
  280 + </div>
280 <div id="resindextree"></div> 281 <div id="resindextree"></div>
281 </div> 282 </div>
282 </div> 283 </div>
@@ -2,12 +2,12 @@ @@ -2,12 +2,12 @@
2 2
3 <article class="page-container setting"> 3 <article class="page-container setting">
4 <div class="page-panel"> 4 <div class="page-panel">
5 - <div class="main"> 5 + <div class="main commonDiv">
6 <div class="layui-card"> 6 <div class="layui-card">
7 <div class="setting-main" id="generalUserHeader"> 7 <div class="setting-main" id="generalUserHeader">
8 <div class="setting-item"> 8 <div class="setting-item">
9 <h5 class="setting-item-title">登录历史<br><span>以下为您最近10次登录记录,若存在异常情况,请在核实后尽快 <span 9 <h5 class="setting-item-title">登录历史<br><span>以下为您最近10次登录记录,若存在异常情况,请在核实后尽快 <span
10 - data-setting-pwd class="link">修改密码</span></span></h5> 10 + class="link" data-setting-pwd>修改密码</span></span></h5>
11 <!-- <div id="settingLoginRecord"></div>--> 11 <!-- <div id="settingLoginRecord"></div>-->
12 </div> 12 </div>
13 </div> 13 </div>
@@ -18,21 +18,21 @@ @@ -18,21 +18,21 @@
18 <div class="layui-form-item"> 18 <div class="layui-form-item">
19 <div class="layui-inline"> 19 <div class="layui-inline">
20 <div class="layui-input-inline layui-input-inline--long"> 20 <div class="layui-input-inline layui-input-inline--long">
21 - <input type="text" id="loginAccount" name="loginAccount"  
22 - placeholder="登录用户" autocomplete="off" class="layui-input"> 21 + <input autocomplete="off" class="layui-input" id="loginAccount"
  22 + name="loginAccount" placeholder="登录用户" type="text">
23 </div> 23 </div>
24 </div> 24 </div>
25 <div class="layui-inline"> 25 <div class="layui-inline">
26 <div class="layui-input-inline layui-input-inline--long"> 26 <div class="layui-input-inline layui-input-inline--long">
27 - <input type="text" class="layui-input" id="loginLogStartdate"  
28 - placeholder="开始时间"> 27 + <input class="layui-input" id="loginLogStartdate" placeholder="开始时间"
  28 + type="text">
29 </div> 29 </div>
30 </div> 30 </div>
31 <div class="layui-inline layui-inline--sm">-</div> 31 <div class="layui-inline layui-inline--sm">-</div>
32 <div class="layui-inline"> 32 <div class="layui-inline">
33 <div class="layui-input-inline layui-input-inline--long"> 33 <div class="layui-input-inline layui-input-inline--long">
34 - <input type="text" class="layui-input" id="loginLogEnddate"  
35 - placeholder="结束时间"> 34 + <input class="layui-input" id="loginLogEnddate" placeholder="结束时间"
  35 + type="text">
36 </div> 36 </div>
37 </div> 37 </div>
38 <div class="layui-inline"> 38 <div class="layui-inline">
@@ -40,12 +40,16 @@ @@ -40,12 +40,16 @@
40 <div id="settingOrgId"></div> 40 <div id="settingOrgId"></div>
41 </div> 41 </div>
42 </div> 42 </div>
  43 + <button class="layui-btn layui-btn-normal" id="settingQueryBtn" type="button">
  44 + 查询
  45 + </button>
43 </div> 46 </div>
44 </form> 47 </form>
45 - <div class="layui-form-item" style="display: block;"> 48 + <div class="layui-form-item" style="display: block;margin-bottom: 0;">
46 <input id="loginLonMark" type="hidden"> 49 <input id="loginLonMark" type="hidden">
47 <div class="layui-input-inline" style="width: 200px;font-size: 18px"> 50 <div class="layui-input-inline" style="width: 200px;font-size: 18px">
48 - <p class="ordering_header_right">当前在线用户数:<label id="loginUserNum" class="link">0</label></p> 51 + <p class="ordering_header_right">当前在线用户数:<label class="link" id="loginUserNum">0</label>
  52 +</p>
49 </div> 53 </div>
50 </div> 54 </div>
51 </div> 55 </div>
@@ -55,25 +59,25 @@ @@ -55,25 +59,25 @@
55 </div> 59 </div>
56 </div> 60 </div>
57 </div> 61 </div>
58 -<!-- <div class="left">-->  
59 -<!-- <div class="layui-card">-->  
60 -<!-- <div class="layui-card-body">-->  
61 -<!-- <div class="user-info">-->  
62 -<!-- <div class="user-head">-->  
63 -<!-- <img src="/src/style/res/header.jpg">-->  
64 -<!-- <span id="nickname">管理员</span>-->  
65 -<!-- </div>-->  
66 -<!-- <p class="user-date">最后一次登录:<label id="lastLogin"></label></p>-->  
67 -<!-- <ul class="user-setting">-->  
68 -<!-- <li>快速通道</li>-->  
69 -<!-- <li data-setting-pwd class="link">修改密码</li>-->  
70 -<!-- <li>手机:<label id="mobile"></label></li>-->  
71 -<!-- &lt;!&ndash;<li>手机: 152****9999<span data-setting-phone class="link">修改</span></li>&ndash;&gt;-->  
72 -<!-- </ul>-->  
73 -<!-- </div>-->  
74 -<!-- </div>-->  
75 -<!-- </div>-->  
76 -<!-- </div>--> 62 + <!-- <div class="left">-->
  63 + <!-- <div class="layui-card">-->
  64 + <!-- <div class="layui-card-body">-->
  65 + <!-- <div class="user-info">-->
  66 + <!-- <div class="user-head">-->
  67 + <!-- <img src="/src/style/res/header.jpg">-->
  68 + <!-- <span id="nickname">管理员</span>-->
  69 + <!-- </div>-->
  70 + <!-- <p class="user-date">最后一次登录:<label id="lastLogin"></label></p>-->
  71 + <!-- <ul class="user-setting">-->
  72 + <!-- <li>快速通道</li>-->
  73 + <!-- <li data-setting-pwd class="link">修改密码</li>-->
  74 + <!-- <li>手机:<label id="mobile"></label></li>-->
  75 + <!-- &lt;!&ndash;<li>手机: 152****9999<span data-setting-phone class="link">修改</span></li>&ndash;&gt;-->
  76 + <!-- </ul>-->
  77 + <!-- </div>-->
  78 + <!-- </div>-->
  79 + <!-- </div>-->
  80 + <!-- </div>-->
77 </div> 81 </div>
78 </article> 82 </article>
79 83
  1 +<div class="layui-card-body">
  2 + <table id="onlineUserTable"></table>
  3 +</div>
  4 +<style>
  5 +
  6 +</style>
  7 +<script>
  8 + layui.use('onlineUser', function (fn) {
  9 + fn({{ d }});
  10 + })
  11 +</script>
@@ -63,6 +63,12 @@ @@ -63,6 +63,12 @@
63 63
64 <div class="lay-row"> 64 <div class="lay-row">
65 <div class="lay-row-item"> 65 <div class="lay-row-item">
  66 + <h5 class="lay-row-title">CPU百分比
  67 + </h5>
  68 + <div id="x86server_cpupie" class="pie-wrap dasboard cpupie_chart">
  69 + </div>
  70 + </div>
  71 + <div class="lay-row-item">
66 <h5 class="lay-row-title">CPU使用率 72 <h5 class="lay-row-title">CPU使用率
67 <a class="detail_row_menu hide"> 73 <a class="detail_row_menu hide">
68 <img style="width: 17px;height: 17px;" src="/src/style/img/icon_row_menu.png"> 74 <img style="width: 17px;height: 17px;" src="/src/style/img/icon_row_menu.png">
@@ -62,6 +62,12 @@ @@ -62,6 +62,12 @@
62 </div> 62 </div>
63 <div class="lay-row"> 63 <div class="lay-row">
64 <div class="lay-row-item"> 64 <div class="lay-row-item">
  65 + <h5 class="lay-row-title">CPU百分比
  66 + </h5>
  67 + <div id="x86virtual_cpupie" class="pie-wrap dasboard cpupie_chart">
  68 + </div>
  69 + </div>
  70 + <div class="lay-row-item">
65 <h5 class="lay-row-title">CPU使用率 71 <h5 class="lay-row-title">CPU使用率
66 <a class="detail_row_menu hide"> 72 <a class="detail_row_menu hide">
67 <img style="width: 17px;height: 17px;" src="/src/style/img/icon_row_menu.png"> 73 <img style="width: 17px;height: 17px;" src="/src/style/img/icon_row_menu.png">
@@ -106,6 +112,25 @@ @@ -106,6 +112,25 @@
106 </ul> 112 </ul>
107 </div> 113 </div>
108 </div> 114 </div>
  115 + <!--lsq x86新增的指标信息 2022-07-04-->
  116 + <div class="lay-row" id="x86virtual_linkdata">
  117 + <!--<div class="lay-row-item lay-row-item-num">
  118 + <div class="lay-row-title-label">总链接数</div>
  119 + <div class="lay-row-num">23</div>
  120 + </div>
  121 + <div class="lay-row-item lay-row-item-num">
  122 + <div class="lay-row-title-label">保持状态链接数</div>
  123 + <div class="lay-row-num"></div>
  124 + </div>
  125 + <div class="lay-row-item lay-row-item-num">
  126 + <div class="lay-row-title-label">time_wait状态链接数</div>
  127 + <div class="lay-row-num"></div>
  128 + </div>
  129 + <div class="lay-row-item lay-row-item-num">
  130 + <div class="lay-row-title-label">close_wait状态链接数</div>
  131 + <div class="lay-row-num"></div>
  132 + </div>-->
  133 + </div>
109 <div class="lay-row"> 134 <div class="lay-row">
110 <div class="lay-row-item"> 135 <div class="lay-row-item">
111 <h5 class="lay-row-title">文件系统<span id="x86virtual_filesysDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="x86virtual_filesysMore" class="layui-table-link">更多</span></h5> 136 <h5 class="lay-row-title">文件系统<span id="x86virtual_filesysDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="x86virtual_filesysMore" class="layui-table-link">更多</span></h5>
@@ -383,6 +383,7 @@ @@ -383,6 +383,7 @@
383 ,trigger: 'focus' //呼出控件的事件 383 ,trigger: 'focus' //呼出控件的事件
384 ,show: false //是否直接显示,如果设置true,则默认直接显示控件 384 ,show: false //是否直接显示,如果设置true,则默认直接显示控件
385 ,showBottom: true //是否显示底部栏 385 ,showBottom: true //是否显示底部栏
  386 + ,isPreview: true //是否显示值预览
386 ,btns: ['clear', 'now', 'confirm'] //右下角显示的按钮,会按照数组顺序排列 387 ,btns: ['clear', 'now', 'confirm'] //右下角显示的按钮,会按照数组顺序排列
387 ,lang: 'cn' //语言,只支持cn/en,即中文和英文 388 ,lang: 'cn' //语言,只支持cn/en,即中文和英文
388 ,theme: 'default' //主题 389 ,theme: 'default' //主题
@@ -843,7 +844,7 @@ @@ -843,7 +844,7 @@
843 844
844 ,elem = that.bindElem || options.elem[0] 845 ,elem = that.bindElem || options.elem[0]
845 ,valType = that.isInput(elem) ? 'val' : 'html' 846 ,valType = that.isInput(elem) ? 'val' : 'html'
846 - ,value = that.isInput(elem) ? elem.value : (options.position === 'static' ? '' : elem.innerHTML) 847 + ,value = that.isInput(elem) ? elem.value : (options.position === 'static' ? '' : '')
847 848
848 //校验日期有效数字 849 //校验日期有效数字
849 ,checkValid = function(dateTime){ 850 ,checkValid = function(dateTime){
@@ -1411,6 +1412,9 @@ @@ -1411,6 +1412,9 @@
1411 ,elem = that.bindElem || options.elem[0] 1412 ,elem = that.bindElem || options.elem[0]
1412 ,valType = that.isInput(elem) ? 'val' : 'html' 1413 ,valType = that.isInput(elem) ? 'val' : 'html'
1413 1414
  1415 + if(!options.isPreview){
  1416 + return this;
  1417 + }
1414 options.position === 'static' || lay(elem)[valType](value || ''); 1418 options.position === 'static' || lay(elem)[valType](value || '');
1415 return this; 1419 return this;
1416 }; 1420 };
@@ -12,7 +12,7 @@ server: @@ -12,7 +12,7 @@ server:
12 key-store-password: Hg0801.. 12 key-store-password: Hg0801..
13 key-password: Hg0801.. 13 key-password: Hg0801..
14 url: 14 url:
15 - gateway: http://192.168.0.104:9200 15 + gateway: https://192.168.0.69:8080
16 inspection_web: http://127.0.0.1:8082 16 inspection_web: http://127.0.0.1:8082
17 assetsweb: http://127.0.0.1:8082 17 assetsweb: http://127.0.0.1:8082
18 mxgraph_editor: http://127.0.0.1:8085 18 mxgraph_editor: http://127.0.0.1:8085
@@ -36,6 +36,8 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -36,6 +36,8 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
36 var bizParentList; 36 var bizParentList;
37 // 资源视图表格 37 // 资源视图表格
38 var bizListTable; 38 var bizListTable;
  39 + var busHealthKeyWord = '';
  40 + var busIndexKeyWord = '';
39 //点击卡片 41 //点击卡片
40 $('#bizindexTable').unbind('click').on('click', '[data-biz-card]', function () { 42 $('#bizindexTable').unbind('click').on('click', '[data-biz-card]', function () {
41 var resType = $(this).data("biz-card"); 43 var resType = $(this).data("biz-card");
@@ -58,9 +60,16 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -58,9 +60,16 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
58 common.viewBizTopo($(this).data('busid')); 60 common.viewBizTopo($(this).data('busid'));
59 return false; 61 return false;
60 }); 62 });
  63 +
  64 + //搜索按钮
  65 + $('#bizSearch').unbind('click').on('click',function (){
  66 + busIndexKeyWord = $('#bizInputSearch').val();
  67 + loadBizTree(busIndexKeyWord)
  68 + })
61 //回车搜索 69 //回车搜索
62 $('#bizindex_keyword').keydown(function (e) { 70 $('#bizindex_keyword').keydown(function (e) {
63 if (e.keyCode === 13) { 71 if (e.keyCode === 13) {
  72 + busIndexKeyWord = $(this).val();
64 // renderList(busId, curBizResType); 73 // renderList(busId, curBizResType);
65 reloadTable(); 74 reloadTable();
66 return false; 75 return false;
@@ -93,6 +102,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -93,6 +102,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
93 $('#biztreeTableContent').hide(); 102 $('#biztreeTableContent').hide();
94 $('#bizDetailContent').empty(); 103 $('#bizDetailContent').empty();
95 $('#bizDetailContent').hide(); 104 $('#bizDetailContent').hide();
  105 + // $('#bizindex_keyword').val(busIndexKeyWord)
96 var bizindexTable = $('#bizindexTable'); 106 var bizindexTable = $('#bizindexTable');
97 autoHeight(bizindexTable); 107 autoHeight(bizindexTable);
98 window.setResizeEvents('autoHeight', autoHeight); 108 window.setResizeEvents('autoHeight', autoHeight);
@@ -117,8 +127,9 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -117,8 +127,9 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
117 autoHeight(bizindexTable); 127 autoHeight(bizindexTable);
118 window.setResizeEvents('autoHeight', autoHeight); 128 window.setResizeEvents('autoHeight', autoHeight);
119 admin.req({ 129 admin.req({
120 - url: common.domainName + '/api-web/home/resource/countResourceGroupByBusType',  
121 - }).done(function (res) { 130 + url: common.domainName + '/api-web/home/resource/countResourceGroupByBusType?keyword='+busHealthKeyWord,
  131 + sync: true
  132 + }).always(function (res) {
122 layer.close(loading); 133 layer.close(loading);
123 laytpl($('#bizindexTpl').html()).render({list: res.data, isBiz: true}, function (html) { 134 laytpl($('#bizindexTpl').html()).render({list: res.data, isBiz: true}, function (html) {
124 bizindexTable.html(html); 135 bizindexTable.html(html);
@@ -171,6 +182,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -171,6 +182,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
171 if (val == '' || val == null || val == undefined) { 182 if (val == '' || val == null || val == undefined) {
172 val = ''; 183 val = '';
173 } 184 }
  185 + busHealthKeyWord = val;
174 admin.req({ 186 admin.req({
175 url: common.domainName + '/api-web/home/business/getBusTree?keyword=' + val + '&notExist=machineroom', 187 url: common.domainName + '/api-web/home/business/getBusTree?keyword=' + val + '&notExist=machineroom',
176 sync: true, 188 sync: true,
@@ -183,6 +195,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -183,6 +195,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
183 showLine: false, 195 showLine: false,
184 data: data, 196 data: data,
185 click: function (node) { 197 click: function (node) {
  198 + // $('#bizindex_keyword').val(busIndexKeyWord)
186 if (node && node.data && node.data.children && node.data.children.length == 1) { 199 if (node && node.data && node.data.children && node.data.children.length == 1) {
187 $('[data-id="' + node.data.children[0].id + '"]').find('.layui-tree-iconClick:first').click() 200 $('[data-id="' + node.data.children[0].id + '"]').find('.layui-tree-iconClick:first').click()
188 } 201 }
@@ -262,6 +275,8 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -262,6 +275,8 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
262 $(".layui-input-search").keyup(function (e) { 275 $(".layui-input-search").keyup(function (e) {
263 if (e.keyCode === 13) { 276 if (e.keyCode === 13) {
264 loadBizTree($(this).val()) 277 loadBizTree($(this).val())
  278 + busIndexKeyWord = $(this).val();
  279 + busHealthKeyWord = $(this).val();
265 } 280 }
266 }); 281 });
267 282
@@ -371,7 +386,6 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -371,7 +386,6 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
371 $('#biztreeTableContent').hide(); 386 $('#biztreeTableContent').hide();
372 387
373 //清除查询条件 388 //清除查询条件
374 - $("#bizindex_keyword").val("");  
375 $("#biz_resStatus").val(""); 389 $("#biz_resStatus").val("");
376 $("#biz_res_colony").val(""); 390 $("#biz_res_colony").val("");
377 $("#biz_res_cluster").val(""); 391 $("#biz_res_cluster").val("");
@@ -407,7 +421,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -407,7 +421,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
407 , url: common.domainName + '/api-web/home/res-list/' + resTypeList.toString() 421 , url: common.domainName + '/api-web/home/res-list/' + resTypeList.toString()
408 , where: { 422 , where: {
409 access_token: accessToken, 423 access_token: accessToken,
410 - resName: $("#bizindex_keyword").val(), 424 + resName:busIndexKeyWord,
411 resHealth: $("#biz_resStatus").val(), 425 resHealth: $("#biz_resStatus").val(),
412 busId: busId, 426 busId: busId,
413 colonlyId: $("#biz_res_colony").val(), 427 colonlyId: $("#biz_res_colony").val(),
@@ -466,11 +480,12 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -466,11 +480,12 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
466 $('#biztreeTableContent').hide(); 480 $('#biztreeTableContent').hide();
467 $('#bizDetailContent').empty(); 481 $('#bizDetailContent').empty();
468 $('#bizDetailContent').hide(); 482 $('#bizDetailContent').hide();
  483 + // $('#bizindex_keyword').val(busIndexKeyWord)
469 var bizindexTable = $('#bizindexTable'); 484 var bizindexTable = $('#bizindexTable');
470 autoHeight(bizindexTable); 485 autoHeight(bizindexTable);
471 window.setResizeEvents('autoHeight', autoHeight); 486 window.setResizeEvents('autoHeight', autoHeight);
472 admin.req({ 487 admin.req({
473 - url: common.domainName + "/api-web/datavis/getResTotal/?busId=" + bizId 488 + url: common.domainName + "/api-web/datavis/getResTotal/?busId=" + bizId +"&keyWord="+busHealthKeyWord
474 , done: function (res) { 489 , done: function (res) {
475 laytpl($('#bizindexTpl').html()).render({list: res.data}, function (html) { 490 laytpl($('#bizindexTpl').html()).render({list: res.data}, function (html) {
476 bizindexTable.html(html); 491 bizindexTable.html(html);
@@ -506,7 +521,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -506,7 +521,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
506 , drag: {toolbar: false} 521 , drag: {toolbar: false}
507 , where: { 522 , where: {
508 access_token: accessToken, 523 access_token: accessToken,
509 - resName: $("#bizindex_keyword").val(), 524 + resName: busIndexKeyWord,
510 resHealth: $("#biz_resStatus").val(), 525 resHealth: $("#biz_resStatus").val(),
511 busId: busId, 526 busId: busId,
512 colonlyId: $("#biz_res_colony").val(), 527 colonlyId: $("#biz_res_colony").val(),
@@ -566,7 +581,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -566,7 +581,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
566 $('#bizDetailContent').empty(); 581 $('#bizDetailContent').empty();
567 $('#bizDetailContent').hide(); 582 $('#bizDetailContent').hide();
568 $('#biztreeTableContent').hide(); 583 $('#biztreeTableContent').hide();
569 - 584 + // $('#bizindex_keyword').val(busIndexKeyWord)
570 renderBizSerach(resType, busId); 585 renderBizSerach(resType, busId);
571 586
572 form.render(null, 'biz-list-form'); 587 form.render(null, 'biz-list-form');
@@ -589,7 +604,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -589,7 +604,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
589 , url: common.domainName + '/api-web/home/res-list/' + resType 604 , url: common.domainName + '/api-web/home/res-list/' + resType
590 , where: { 605 , where: {
591 access_token: accessToken, 606 access_token: accessToken,
592 - resName: $("#bizindex_keyword").val(), 607 + resName: busIndexKeyWord,
593 resHealth: $("#biz_resStatus").val(), 608 resHealth: $("#biz_resStatus").val(),
594 busId: busId, 609 busId: busId,
595 colonlyId: $("#biz_res_colony").val(), 610 colonlyId: $("#biz_res_colony").val(),
@@ -841,7 +856,6 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -841,7 +856,6 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
841 //加载资源池、集群等查询条件 856 //加载资源池、集群等查询条件
842 function renderBizSerach(resType, busId, subflag) { 857 function renderBizSerach(resType, busId, subflag) {
843 //清空查询条件 joke add 20200409 开始 858 //清空查询条件 joke add 20200409 开始
844 - $('#bizindex_keyword').val('');  
845 $('#biz_resStatus').val(''); 859 $('#biz_resStatus').val('');
846 $('#biz_res_colony').val(''); 860 $('#biz_res_colony').val('');
847 $('#biz_res_cluster').val(''); 861 $('#biz_res_cluster').val('');
@@ -993,7 +1007,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols @@ -993,7 +1007,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
993 } 1007 }
994 ,where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式) 1008 ,where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
995 access_token: accessToken, 1009 access_token: accessToken,
996 - resName: $("#bizindex_keyword").val(), 1010 + resName: busIndexKeyWord,
997 resHealth: $("#biz_resStatus").val(), 1011 resHealth: $("#biz_resStatus").val(),
998 busId: busId, 1012 busId: busId,
999 colonlyId: $("#biz_res_colony").val(), 1013 colonlyId: $("#biz_res_colony").val(),
@@ -262,6 +262,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common', @@ -262,6 +262,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
262 } 262 }
263 , {field: 'updateTime', title: '告警时间', align: 'center', minWidth: 180, sort: true} 263 , {field: 'updateTime', title: '告警时间', align: 'center', minWidth: 180, sort: true}
264 , {field: 'alarmTime', title: '首次告警时间', align: 'center', minWidth: 180, sort: true} 264 , {field: 'alarmTime', title: '首次告警时间', align: 'center', minWidth: 180, sort: true}
  265 + , {field: 'clearTime', title: '消除时间', align: 'center', width: 190}
265 , {field: 'durationStr', title: '持续时间', align: 'center', width: 190} 266 , {field: 'durationStr', title: '持续时间', align: 'center', width: 190}
266 , { 267 , {
267 title: '操作', align: 'center', minWidth: 100, 268 title: '操作', align: 'center', minWidth: 100,
@@ -19,7 +19,8 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -19,7 +19,8 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
19 var admin = layui.admin; 19 var admin = layui.admin;
20 var commonDetail = layui.commonDetail; 20 var commonDetail = layui.commonDetail;
21 var domainName = common.domainName; 21 var domainName = common.domainName;
22 - 22 + var resHealthKeyWord = '';
  23 + var resindexKeyword = '';
23 var resTypeSelectExclude = ['HOST_MINICOMPUTER', 'HOST_MINICOMPUTER_SERVER', 'HOST_BMC', 'HOST_X86SERVER'] 24 var resTypeSelectExclude = ['HOST_MINICOMPUTER', 'HOST_MINICOMPUTER_SERVER', 'HOST_BMC', 'HOST_X86SERVER']
24 25
25 var curTreeNode = ''; 26 var curTreeNode = '';
@@ -55,8 +56,8 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -55,8 +56,8 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
55 $('#resindexTable').on('click', '[data-res-card]', function () { 56 $('#resindexTable').on('click', '[data-res-card]', function () {
56 var nodeId = $(this).attr("data-res-card"); 57 var nodeId = $(this).attr("data-res-card");
57 currentResType = nodeId;//将当前点击的资源类型付给参数 58 currentResType = nodeId;//将当前点击的资源类型付给参数
58 - selectedTreeNode('[data-id="' + currentResType + '"]','[data-id="' + currentResType.split('_')[0] + '"]');  
59 - renderList(currentResType,''); 59 + selectedTreeNode('[data-id="' + currentResType + '"]', '[data-id="' + currentResType.split('_')[0] + '"]');
  60 + renderList(currentResType, '');
60 // renderList($(this).data("res-card")); 61 // renderList($(this).data("res-card"));
61 // $("div[data-id='"+nodeId+"']").find(".layui-tree-entry:first span.layui-tree-txt").trigger("click") 62 // $("div[data-id='"+nodeId+"']").find(".layui-tree-entry:first span.layui-tree-txt").trigger("click")
62 }); 63 });
@@ -126,7 +127,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -126,7 +127,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
126 $('#resDetailContent').empty(); 127 $('#resDetailContent').empty();
127 $('#resDetailContent').hide(); 128 $('#resDetailContent').hide();
128 $('#treeTableContent').hide(); 129 $('#treeTableContent').hide();
129 - 130 + // $('#resindex_keyword').val(resindexKeyword)
130 //如果是阿里云,则显示阿里云的列表 131 //如果是阿里云,则显示阿里云的列表
131 if(resType && resType == 'ALI_CLOUD_PLAT'){ 132 if(resType && resType == 'ALI_CLOUD_PLAT'){
132 $(".resindexlist").show(); 133 $(".resindexlist").show();
@@ -141,7 +142,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -141,7 +142,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
141 142
142 window.setResizeEvents('autoHeight', autoHeight); 143 window.setResizeEvents('autoHeight', autoHeight);
143 admin.req({ 144 admin.req({
144 - url: common.domainName + '/api-web/home/resource/healthByResType?pResType=' + resType, 145 + url: common.domainName + '/api-web/home/resource/healthByResType?pResType=' + resType +'&keyword=' + resHealthKeyWord,
145 }).done(function (res) { 146 }).done(function (res) {
146 laytpl($('#resindexTpl').html()).render({list: res.data}, function (html) { 147 laytpl($('#resindexTpl').html()).render({list: res.data}, function (html) {
147 resindexTable.html(html); 148 resindexTable.html(html);
@@ -149,40 +150,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -149,40 +150,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
149 }); 150 });
150 } 151 }
151 152
152 - admin.req({  
153 - url: common.domainName + '/api-web/home/resType/getTree?notExist=machineroom&table=resources&exist=HOST_MINICOMPUTER_SERVER',  
154 - type: 'get',  
155 - sync: true,  
156 - done: function (res) {  
157 - layer.close(loading);  
158 - loadResTree(res.data);  
159 - //joke add 20200407,如果没有资源树,则默认资源页给提示无数据 开始  
160 - if (res.data.length === 0) {  
161 - var resindexTable = $('#resindexTable');  
162 - autoHeight(resindexTable);  
163 - laytpl($('#resindexTpl').html()).render({list: res.data}, function (html) {  
164 - resindexTable.html(html);  
165 - });  
166 - }  
167 - loadParamSelect();  
168 - //joke add 20200407,如果没有资源树,则默认资源页给提示无数据 开始  
169 - }  
170 - }).error(function () {  
171 - layer.close(loading);  
172 - //joke add 20200407  
173 - //树无数据提示  
174 - tree.render({  
175 - elem: '#resindextree',  
176 - showLine: false,  
177 - data: new Array()  
178 - });  
179 - //右侧无数据提示  
180 - var resindexTable = $('#resindexTable');  
181 - autoHeight(resindexTable);  
182 - laytpl($('#resindexTpl').html()).render({list: new Array()}, function (html) {  
183 - resindexTable.html(html);  
184 - });  
185 - }); 153 +
186 154
187 //不带分页的列表 155 //不带分页的列表
188 function renderTableList(resType) { 156 function renderTableList(resType) {
@@ -243,7 +211,45 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -243,7 +211,45 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
243 }); 211 });
244 } 212 }
245 //左侧树 213 //左侧树
246 - function loadResTree(data) { 214 + function loadResTree(val) {
  215 + admin.req({
  216 + url: common.domainName + '/api-web/home/resType/getTree?notExist=machineroom&table=resources&exist=HOST_MINICOMPUTER_SERVER&keyword='+val,
  217 + type: 'get',
  218 + sync: true,
  219 + done: function (res) {
  220 + layer.close(loading);
  221 + treeList(res.data);
  222 + //joke add 20200407,如果没有资源树,则默认资源页给提示无数据 开始
  223 + if (res.data.length === 0) {
  224 + var resindexTable = $('#resindexTable');
  225 + autoHeight(resindexTable);
  226 + laytpl($('#resindexTpl').html()).render({list: res.data}, function (html) {
  227 + resindexTable.html(html);
  228 + });
  229 + renderIndex('')
  230 + }
  231 + loadParamSelect();
  232 + //joke add 20200407,如果没有资源树,则默认资源页给提示无数据 开始
  233 + }
  234 + }).error(function () {
  235 + layer.close(loading);
  236 + //joke add 20200407
  237 + //树无数据提示
  238 + tree.render({
  239 + elem: '#resindextree',
  240 + showLine: false,
  241 + data: new Array()
  242 + });
  243 + //右侧无数据提示
  244 + var resindexTable = $('#resindexTable');
  245 + autoHeight(resindexTable);
  246 + laytpl($('#resindexTpl').html()).render({list: new Array()}, function (html) {
  247 + resindexTable.html(html);
  248 + });
  249 + });
  250 + }
  251 +
  252 + function treeList(data){
247 //默认展开全部一级节点 253 //默认展开全部一级节点
248 $.each(data,function (i,v) { 254 $.each(data,function (i,v) {
249 v.spread = true; 255 v.spread = true;
@@ -309,7 +315,6 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -309,7 +315,6 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
309 } 315 }
310 } 316 }
311 } 317 }
312 -  
313 //回选树节点 318 //回选树节点
314 function selectedTreeNode(target,parentTarget) { 319 function selectedTreeNode(target,parentTarget) {
315 var el = $(target).find('.layui-tree-txt').eq(0); 320 var el = $(target).find('.layui-tree-txt').eq(0);
@@ -687,12 +692,27 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -687,12 +692,27 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
687 //回车搜索 692 //回车搜索
688 $('#resindex_keyword').keydown(function (e) { 693 $('#resindex_keyword').keydown(function (e) {
689 if (e.keyCode === 13) { 694 if (e.keyCode === 13) {
  695 + resindexKeyword = $(this).val();
690 // renderList(currentResType); 696 // renderList(currentResType);
691 reloadTable(); 697 reloadTable();
692 return false; 698 return false;
693 } 699 }
694 }); 700 });
  701 + $(".layui-input-search").keydown(function (e) {
  702 + if (e.keyCode === 13) {
  703 + resHealthKeyWord = $(this).val();
  704 + resindexKeyword = $(this).val();
  705 + loadResTree($(this).val());
695 706
  707 + }
  708 + });
  709 + //搜索按钮
  710 + $('#resSearch').unbind('click').on('click',function (){
  711 + resindexKeyword = $('#inputSearch').val();
  712 + resHealthKeyWord = $('#inputSearch').val();
  713 + loadResTree(resindexKeyword)
  714 + })
  715 + loadResTree('');
696 //资源详细信息 716 //资源详细信息
697 function renderDetail(resId, resType) { 717 function renderDetail(resId, resType) {
698 $('#resIndexContent').hide(); 718 $('#resIndexContent').hide();
@@ -950,7 +970,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -950,7 +970,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
950 , url: common.domainName + '/api-web/home/res-list/' + resType 970 , url: common.domainName + '/api-web/home/res-list/' + resType
951 , where: { 971 , where: {
952 access_token: accessToken, 972 access_token: accessToken,
953 - resName: $("#resindex_keyword").val(), 973 + resName: resindexKeyword,
954 busId: bizId, 974 busId: bizId,
955 resHealth: $("#resStatus").val(), 975 resHealth: $("#resStatus").val(),
956 colonlyId: $("#res_colony").val(), 976 colonlyId: $("#res_colony").val(),
@@ -1040,6 +1060,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -1040,6 +1060,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
1040 $('#resDetailContent').empty(); 1060 $('#resDetailContent').empty();
1041 $('#resDetailContent').hide(); 1061 $('#resDetailContent').hide();
1042 $('#treeTableContent').hide(); 1062 $('#treeTableContent').hide();
  1063 + // $('#resindex_keyword').val(resindexKeyword)
1043 //加载查询条件 1064 //加载查询条件
1044 renderSerach(resType); 1065 renderSerach(resType);
1045 1066
@@ -1077,7 +1098,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -1077,7 +1098,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
1077 , url: common.domainName + '/api-web/home/res-list/' + resType 1098 , url: common.domainName + '/api-web/home/res-list/' + resType
1078 , where: { 1099 , where: {
1079 access_token: accessToken, 1100 access_token: accessToken,
1080 - resName: $("#resindex_keyword").val() !== '' ? $("#resindex_keyword").val() : id, 1101 + resName: resindexKeyword !== '' ? resindexKeyword : id,
1081 busId: bizId, 1102 busId: bizId,
1082 resHealth: $("#resStatus").val(), 1103 resHealth: $("#resStatus").val(),
1083 colonlyId: $("#res_colony").val(), 1104 colonlyId: $("#res_colony").val(),
@@ -1108,8 +1129,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -1108,8 +1129,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
1108 resTopo(); 1129 resTopo();
1109 1130
1110 commonCols.colsClickEvent(editFlag); 1131 commonCols.colsClickEvent(editFlag);
1111 -  
1112 - loadRightResTypeSelectEvent(curTreeNode.data.id, "normal", res.obj); 1132 + loadRightResTypeSelectEvent(curTreeNode.id ? curTreeNode.id : curTreeNode.data.id, "normal", res.obj);
1113 1133
1114 //表格排序监听 joke add 20200408 1134 //表格排序监听 joke add 20200408
1115 table.on('sort(resListTable)', function (obj) { 1135 table.on('sort(resListTable)', function (obj) {
@@ -1164,7 +1184,6 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -1164,7 +1184,6 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
1164 //加载资源池、集群等查询条件 1184 //加载资源池、集群等查询条件
1165 function renderSerach(resType,subflag) { 1185 function renderSerach(resType,subflag) {
1166 //清空查询条件 joke add 20200409 开始 1186 //清空查询条件 joke add 20200409 开始
1167 - $('#resindex_keyword').val('');  
1168 $('#resStatus').val(''); 1187 $('#resStatus').val('');
1169 // $('#resListBizTypes').val(''); 1188 // $('#resListBizTypes').val('');
1170 if(xmSelect.get("#resListBizTypes") && xmSelect.get("#resListBizTypes")[0]){ 1189 if(xmSelect.get("#resListBizTypes") && xmSelect.get("#resListBizTypes")[0]){
@@ -1398,7 +1417,6 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -1398,7 +1417,6 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
1398 //加载右侧资源类型下拉框 1417 //加载右侧资源类型下拉框
1399 function loadRightResTypeSelectEvent(resType, type, obj) { 1418 function loadRightResTypeSelectEvent(resType, type, obj) {
1400 layer.closeAll('tips'); 1419 layer.closeAll('tips');
1401 -  
1402 var str = ''; 1420 var str = '';
1403 var domStr = 'resListContent' 1421 var domStr = 'resListContent'
1404 var fun = reloadTable; 1422 var fun = reloadTable;
@@ -1440,10 +1458,10 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -1440,10 +1458,10 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
1440 } 1458 }
1441 1459
1442 }); 1460 });
1443 - if(resType == 'HOST_MINICOMPUTER' || resType=='HUAWEI_CLOUD_CLUSTER' || resType=='HUAWEI_CLOUD_COLONY' || resType=='HUAWEI_CLOUD_PHYSICSHOST' || 1461 + if (resType == 'HOST_MINICOMPUTER' || resType == 'HUAWEI_CLOUD_CLUSTER' || resType == 'HUAWEI_CLOUD_COLONY' || resType == 'HUAWEI_CLOUD_PHYSICSHOST' ||
1444 resType == 'HUAWEI_CLOUD_STORAGE' || resType == 'HUAWEI_CLOUD_SWITCHBOARD' || resType == 'HUAWEI_CLOUD_FIREWALL' || resType == 'ALI_CLOUD_RDS' 1462 resType == 'HUAWEI_CLOUD_STORAGE' || resType == 'HUAWEI_CLOUD_SWITCHBOARD' || resType == 'HUAWEI_CLOUD_FIREWALL' || resType == 'ALI_CLOUD_RDS'
1445 - || resType == 'ALI_CLOUD_SLB' || resType == 'ALI_CLOUD_OSS'||resType=='VIRTUALIZATION_VMWARE_VHOST'||resType=='MIDDLEWARE_WEBLOGIC'  
1446 - ){//屏蔽连接状态 1463 + || resType == 'ALI_CLOUD_SLB' || resType == 'ALI_CLOUD_OSS' || resType == 'VIRTUALIZATION_VMWARE_VHOST' || resType == 'MIDDLEWARE_WEBLOGIC'
  1464 + ) {//屏蔽连接状态
1447 $('.info-box-count').eq(3).hide(); 1465 $('.info-box-count').eq(3).hide();
1448 $('#link_state_div').hide(); 1466 $('#link_state_div').hide();
1449 } 1467 }
@@ -1459,7 +1477,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', ' @@ -1459,7 +1477,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
1459 } 1477 }
1460 , where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式) 1478 , where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
1461 access_token: accessToken, 1479 access_token: accessToken,
1462 - resName: $("#resindex_keyword").val(), 1480 + resName: resindexKeyword,
1463 busId: bizId, 1481 busId: bizId,
1464 resHealth: $("#resStatus").val(), 1482 resHealth: $("#resStatus").val(),
1465 colonlyId: $("#res_colony").val(), 1483 colonlyId: $("#res_colony").val(),