Merge branch 'master-joke' into 'master'
feat:H3Cpc服务器详情页调整 feat:H3Cpc服务器详情页调整 See merge request !1121
Showing
9 changed files
with
532 additions
and
72 deletions
@@ -871,6 +871,52 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | @@ -871,6 +871,52 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | ||
871 | }, | 871 | }, |
872 | 872 | ||
873 | /** | 873 | /** |
874 | + * 资源状态 带告警信息 | ||
875 | + * @param targetId 资源状体区域ID | ||
876 | + * @param resId | ||
877 | + * 返回报文: {"code":"0","data":{"yz":"3","icon":"worst","yb":"0","state":"差","zy":"0"}} | ||
878 | + */ | ||
879 | + renderResHealthForH3cBmc: function (targetId, resId) { | ||
880 | + var url = "/api-web/detail/resouce/health?resId=" + resId; | ||
881 | + admin.req({ | ||
882 | + url: common.domainName + url | ||
883 | + }).done(function (res) { | ||
884 | + var data = res.data; | ||
885 | + var clas = 'res-state-pie--good'; | ||
886 | + if (data.icon == 'worst') { | ||
887 | + clas = 'res-state-pie--bad'; | ||
888 | + } | ||
889 | + if (data.icon == 'worse') { | ||
890 | + clas = 'res-state-pie--middle'; | ||
891 | + } | ||
892 | + var reslt = "优", yz = '0', yb = '0', zy = '0'; | ||
893 | + if (data.state) { | ||
894 | + reslt = data.state; | ||
895 | + } | ||
896 | + if (data.yz) { | ||
897 | + yz = data.yz=='null'||''?0:data.yz; | ||
898 | + } | ||
899 | + if (data.zy) { | ||
900 | + zy = data.zy=='null'||''?0:data.zy; | ||
901 | + } | ||
902 | + if (data.yb) { | ||
903 | + yb = data.yb=='null'||''?0:data.yb; | ||
904 | + } | ||
905 | + var html = '<div class="res-state-pie ' + clas + '" style="margin: auto">' + reslt + '</div>' + | ||
906 | + ' <div>' + | ||
907 | + ' <ul style="margin: 135px 100px 20px 0px">' + | ||
908 | + ' <li>严重告警:' + yz + '</li>' + | ||
909 | + ' <li>重要告警:' + zy + '</li>' + | ||
910 | + ' <li>一般告警:' + yb + '</li>' + | ||
911 | + ' </ul>' + | ||
912 | + ' </div>'; | ||
913 | + | ||
914 | + $("#" + targetId).html(html); | ||
915 | + | ||
916 | + }); | ||
917 | + }, | ||
918 | + | ||
919 | + /** | ||
874 | * 资源状态 | 920 | * 资源状态 |
875 | * @param targetId 资源状体区域ID | 921 | * @param targetId 资源状体区域ID |
876 | * @param resId | 922 | * @param resId |
@@ -2460,6 +2506,253 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | @@ -2460,6 +2506,253 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | ||
2460 | }, | 2506 | }, |
2461 | 2507 | ||
2462 | /** | 2508 | /** |
2509 | + * 动态渲染表格 | ||
2510 | + * @param tableId 表格所在区域ID | ||
2511 | + * @param page 是否分页 true/false | ||
2512 | + * @param resId 资源Id | ||
2513 | + * @param kpiId 指标Id,多个id,以逗号隔开 | ||
2514 | + * @param flagPrifix 二级标识(flag)共性部分(前缀) | ||
2515 | + * @param colWidth 各个列宽度设置,可以只设置前边的,设置百分比 | ||
2516 | + */ | ||
2517 | + renderTableForH3cBmc: function (tableId, page, resId, kpiId, title, flagPrifix, sortBy, order, size,colWidth) { | ||
2518 | + var editFlag = localStorage.getItem("editFlag");//是否编辑状态 | ||
2519 | + //start lsq 状态信息的状态也增加下探 202-06-08 | ||
2520 | + let statusF=false;//是否为状态信息 | ||
2521 | + //end lsq 2022-06-08 | ||
2522 | + if (!size) { | ||
2523 | + size = 5; | ||
2524 | + } | ||
2525 | + var url = "/api-web/detail/table/page?resId=" + resId + "&kpiId=" + kpiId + "&page=1&size=" + size; | ||
2526 | + if(sortBy){ | ||
2527 | + url += '&sortBy=' + sortBy; | ||
2528 | + } | ||
2529 | + if(order){ | ||
2530 | + url += '&order=' + order; | ||
2531 | + } | ||
2532 | + //如果是编辑状态,则进行分页展示 | ||
2533 | + if (editFlag && editFlag == "true") { | ||
2534 | + page = true; | ||
2535 | + } | ||
2536 | + if (page) {//分页获取 | ||
2537 | + url = "/api-web/detail/table/notpage?resId=" + resId + "&kpiId=" + kpiId; | ||
2538 | + } | ||
2539 | + if (flagPrifix) { | ||
2540 | + url = url + "&flagPrifix="+flagPrifix; | ||
2541 | + } | ||
2542 | + admin.req({ | ||
2543 | + url: common.domainName + url | ||
2544 | + }).done(function (res) { | ||
2545 | + var data = res.data[0]; | ||
2546 | + var header = data.header; | ||
2547 | + var content = data.content; | ||
2548 | + // 如果有数据,展示 | ||
2549 | + if(content.length) { | ||
2550 | + $('#' + tableId + 'Hide').removeClass('hide'); | ||
2551 | + } | ||
2552 | + //如果是端口存活拨测,并且没有返回值时,隐藏该展示区域 | ||
2553 | + if(tableId.indexOf("_port_detection_id") != -1 && content.length < 1){ | ||
2554 | + $("#"+tableId).parent().hide(); | ||
2555 | + }else if(tableId === 'mysql_primary_slave_id' && content.length <1){ // joke add 20210303 如果时mysql主从信息,并且没有返回值时,隐藏该展示区域 | ||
2556 | + $("#"+tableId).parent().hide(); | ||
2557 | + }else{ | ||
2558 | + //如果数据在10个及以内则不进行分页展示 | ||
2559 | + if(content.length < 11){ | ||
2560 | + page = false; | ||
2561 | + }else{ | ||
2562 | + page = true; | ||
2563 | + } | ||
2564 | + var datas = []; | ||
2565 | + var list = data.data; | ||
2566 | + if (list && list.length > 0) { | ||
2567 | + datas = list; | ||
2568 | + } | ||
2569 | + var resType=""; | ||
2570 | + var provider = "" | ||
2571 | + //获取资源类型 | ||
2572 | + admin.req({ | ||
2573 | + url: common.domainName + "/api-web/manage/resource/findById?resId="+resId, | ||
2574 | + async: false | ||
2575 | + }).done(function (res) { | ||
2576 | + if(res && res.success && res.obj && res.obj.bean && res.obj.bean.resType){ | ||
2577 | + resType=res.obj.bean.resType; | ||
2578 | + provider = res.obj.bean.provider; | ||
2579 | + } | ||
2580 | + }); | ||
2581 | + layui.use(['admin', 'table', 'common'], function () { | ||
2582 | + var table = layui.table; | ||
2583 | + var $ = layui.$; | ||
2584 | + var cols = []; | ||
2585 | + var fisttd = ""; | ||
2586 | + | ||
2587 | + $.each(header, function (i, v) { | ||
2588 | + if (i == 0) { | ||
2589 | + fisttd = v.id; | ||
2590 | + } | ||
2591 | + var columnObj = { | ||
2592 | + field: v.id, title: v.name, templet: function (d) { | ||
2593 | + var kpiname = ""; | ||
2594 | + if (d[fisttd] && d[fisttd].kpiName) { | ||
2595 | + kpiname = d[fisttd].kpiName; | ||
2596 | + } | ||
2597 | + if (d[v.id] && d[v.id].kpiId) { | ||
2598 | + var value = d[v.id]; | ||
2599 | + var resStyle = obj.alarmEleMatchStyle(value.flag, v.id); | ||
2600 | + //start lsq 判断当前kpiId是否在状态指标数据列表中 2022-06-08 | ||
2601 | + let status=statusKpiList.indexOf(d[v.id].kpiId); | ||
2602 | + if(status!=-1){ | ||
2603 | + statusF=true; | ||
2604 | + } | ||
2605 | + //end lsq 2022-06-08 | ||
2606 | + //拼接表空间名称、文件系统名称等等,如果是性能指标或者趋势指标,则可以下探 徐毫杰还原 | ||
2607 | + if (value.kpiIdent == '1') { | ||
2608 | + var chbox = ''; | ||
2609 | + if (editFlag && editFlag == "true" && value.kpiIdent == '1') { | ||
2610 | + chbox = '<input lay-filter="kpicheckboxfilter" type="checkbox" lay-skin="primary" name="identKpiCheckbox" ' + | ||
2611 | + 'data-id="' + v.id + '" data-kpiname="' + v.name + '" data-flag="' + value.flag + '" data-name="' + kpiname + '" data-unit="' + v.unit + '">'; | ||
2612 | + } | ||
2613 | + return chbox + '<a class="link showlinechart_' + tableId + '" style="padding-left:5px;' + resStyle + '" ' + 'data-isWarning="' + value.isWarning + '" data-ident="' + value.kpiIdent + '"' + | ||
2614 | + 'data-trend="' + value.isTrend + '" data-id="' + v.id + '" data-kpiname="' + kpiname + '" data-name="' + v.name + '" data-flag="' + value.flag + '">' + value.kpiValue + '</a>' + | ||
2615 | + '<a class="detail_row_menu hide" data-statusf="'+statusF+'" data-isWarning="' + value.isWarning + '" data-ident="' + value.kpiIdent + '" data-trend="' + value.isTrend + '" ' + | ||
2616 | + 'data-id="' + v.id + '" data-kpiname="' + kpiname + '" data-name="' + v.name + '" data-flag="' + value.flag + '"' + | ||
2617 | + 'data-canca="' + value.canCA + '" data-incaing="' + value.inCAing + '" data-restype="' + resType + '"' + | ||
2618 | + '>' + | ||
2619 | + '<img style="width: 20px;height: 20px;" src="/src/style/img/icon_row_menu.png"></a>'; | ||
2620 | + | ||
2621 | + } else { | ||
2622 | + var $html = ""; | ||
2623 | + if (resType == 'HOST_X86SERVER' && provider == 'H3C' ){ | ||
2624 | + $html = addTableCellButton(value); | ||
2625 | + if ($html == ''){ | ||
2626 | + $html = '<a data-id="' + v.id + '"data-flag="' + value.flag + '">' + $html + value.kpiValue + '</a>'; | ||
2627 | + } | ||
2628 | + return $html; | ||
2629 | + }else{ | ||
2630 | + $html = addIconByValue(value.kpiValue); | ||
2631 | + //根据资源类型判断 修改样式 | ||
2632 | + if ($html != "" && resType != "" && resType == "HOST_X86SERVER" && $html == '<i class="iconfont icon-size serious">\ue668</i>') { | ||
2633 | + $html = '<i class="iconfont icon-size grayColor">\ue61e</i>'; | ||
2634 | + } | ||
2635 | + return '<a data-id="' + v.id + '"data-flag="' + value.flag + '">' + $html + value.kpiValue + '</a>'; | ||
2636 | + } | ||
2637 | + | ||
2638 | + } | ||
2639 | + } else { | ||
2640 | + return d[v.id]; | ||
2641 | + } | ||
2642 | + } | ||
2643 | + }; | ||
2644 | + if (colWidth && colWidth[i]){ | ||
2645 | + columnObj.width = colWidth[i]; | ||
2646 | + } | ||
2647 | + | ||
2648 | + // <i class="iconfont good">\ue659</i> | ||
2649 | + if(tableId == 'databaseoracle_mcx'){ | ||
2650 | + if(columnObj['field'] == 'KPI709D6F5A'){ | ||
2651 | + columnObj['width'] = 1000; | ||
2652 | + columnObj['align'] = 'left'; | ||
2653 | + }else{ | ||
2654 | + columnObj['width'] = 200; | ||
2655 | + } | ||
2656 | + } | ||
2657 | + | ||
2658 | + cols.push(columnObj); | ||
2659 | + }); | ||
2660 | + //添加排序 | ||
2661 | + if(tableId == 'nethardware_portlist' && flagPrifix == 'port'){ | ||
2662 | + $.each(cols,function (i,v) { | ||
2663 | + v['sort']=true; | ||
2664 | + }); | ||
2665 | + } | ||
2666 | + //封装content数据 | ||
2667 | + if (content && content.length > 0) { | ||
2668 | + $.each(content, function (indx, con) { | ||
2669 | + var kpi = {}; | ||
2670 | + $.each(con, function (inx, item) { | ||
2671 | + if (item.kpiValue || item.kpiValue === 0) { | ||
2672 | + kpi[item.kpiId] = item; | ||
2673 | + } else { | ||
2674 | + kpi[item.kpiId] = {}; | ||
2675 | + } | ||
2676 | + }); | ||
2677 | + datas.push(kpi); | ||
2678 | + }); | ||
2679 | + } | ||
2680 | + var pagePro = page; | ||
2681 | + if (page) { | ||
2682 | + pagePro = { | ||
2683 | + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] | ||
2684 | + , theme: '#1E9FFF' | ||
2685 | + } | ||
2686 | + } | ||
2687 | + if (cols.length > 0) { | ||
2688 | + table.render({ | ||
2689 | + elem: '#' + tableId | ||
2690 | + , data: datas | ||
2691 | + , cols: [cols] | ||
2692 | + , even: true | ||
2693 | + , page: pagePro//是否显示分页 | ||
2694 | + , limit: 10 | ||
2695 | + , done: function () { | ||
2696 | + //性能指标下探 | ||
2697 | + $("a.showlinechart_" + tableId).unbind("click").on("click", function () { | ||
2698 | + var id = $(this).data("id"); | ||
2699 | + var flag = $(this).data("flag"); | ||
2700 | + var name = $(this).data("name"); | ||
2701 | + var kpiName = $(this).data("kpiname"); | ||
2702 | + var isWarning = $(this).data("iswarning"); | ||
2703 | + var ident = $(this).data("ident"); | ||
2704 | + var trend = $(this).data("trend"); | ||
2705 | + var unit = $(this).data("unit"); | ||
2706 | + if (flag) { | ||
2707 | + flag = flag.replace(/^\s+|\s+$/g, ""); | ||
2708 | + } | ||
2709 | + var params = { | ||
2710 | + resId: resId, | ||
2711 | + kpiId: id, | ||
2712 | + flag: flag, | ||
2713 | + warning:isWarning, | ||
2714 | + ident:ident, | ||
2715 | + trend:trend, | ||
2716 | + unit:unit, | ||
2717 | + // Start Wang 2022/2/8 14:28 BUG#273 【性能曲线】测试名称重复 | ||
2718 | + name:kpiName, | ||
2719 | + | ||
2720 | + }; | ||
2721 | + // common.openLineChart(kpiName + " " + name, params); | ||
2722 | + common.openLineChart(kpiName, params); | ||
2723 | + // End Wang 2022/2/8 14:29 | ||
2724 | + }); | ||
2725 | + //更多点击事件 | ||
2726 | + $("#" + tableId + "More").unbind("click").on("click", function () { | ||
2727 | + obj.openMoreTableList(title, resId, kpiId, flagPrifix, sortBy, order,colWidth,true); | ||
2728 | + }); | ||
2729 | + //下载点击事件 | ||
2730 | + $("#" + tableId + "Download").unbind("click").on("click", function () { | ||
2731 | + obj.downloadTableList(title, resId, kpiId, flagPrifix, sortBy, order); | ||
2732 | + }); | ||
2733 | + $("[lay-id='"+tableId+"']").find(".layui-table-cell").hover(function () { | ||
2734 | + var $that = $(this) | ||
2735 | + var $btn = $that.find(".detail_row_menu"); | ||
2736 | + if ($btn.length > 0) { | ||
2737 | + //$(".layui-table-view").find(".layui-table-cell .detail_row_menu:not(.hide)").addClass("hide") | ||
2738 | + $(".layui-card-body").find(".detail_row_menu:not(.hide)").addClass("hide") | ||
2739 | + $btn.removeClass("hide"); | ||
2740 | + } | ||
2741 | + }) | ||
2742 | + //监听过滤压制事件 | ||
2743 | + filterSuppressMonitor(resId); | ||
2744 | + //监听编辑状态下的复选框事件 | ||
2745 | + getCheckedBoxData(); | ||
2746 | + } | ||
2747 | + }); | ||
2748 | + } | ||
2749 | + }); | ||
2750 | + } | ||
2751 | + | ||
2752 | + }); | ||
2753 | + }, | ||
2754 | + | ||
2755 | + /** | ||
2463 | * 柱状图+折线图 | 2756 | * 柱状图+折线图 |
2464 | * @params targetId 目标dom | 2757 | * @params targetId 目标dom |
2465 | * @return | 2758 | * @return |
@@ -3135,7 +3428,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | @@ -3135,7 +3428,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | ||
3135 | * @param title | 3428 | * @param title |
3136 | * @param params | 3429 | * @param params |
3137 | */ | 3430 | */ |
3138 | - openMoreTableList: function (title, resId, kpiId, flag, sortBy, order,colWidth) { | 3431 | + openMoreTableList: function (title, resId, kpiId, flag, sortBy, order,colWidth,isH3cbmc) { |
3139 | if (!title) { | 3432 | if (!title) { |
3140 | title = "更多"; | 3433 | title = "更多"; |
3141 | } | 3434 | } |
@@ -3147,6 +3440,9 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | @@ -3147,6 +3440,9 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | ||
3147 | "order": order, | 3440 | "order": order, |
3148 | "colWidth": colWidth | 3441 | "colWidth": colWidth |
3149 | }; | 3442 | }; |
3443 | + if (isH3cbmc == true){ | ||
3444 | + params.isH3cbmc = isH3cbmc; | ||
3445 | + } | ||
3150 | view('commonViewModel').render("template/detail/detail_more").then(function (res) { | 3446 | view('commonViewModel').render("template/detail/detail_more").then(function (res) { |
3151 | layer.open({ | 3447 | layer.open({ |
3152 | title: [title, 'font-size:18px;'], | 3448 | title: [title, 'font-size:18px;'], |
@@ -3934,6 +4230,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | @@ -3934,6 +4230,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | ||
3934 | setKPIAlarmConfig: setKPIAlarmConfig, | 4230 | setKPIAlarmConfig: setKPIAlarmConfig, |
3935 | setKpiFilter: setKpiFilter, | 4231 | setKpiFilter: setKpiFilter, |
3936 | addIconByValue: addIconByValue, | 4232 | addIconByValue: addIconByValue, |
4233 | + addTableCellButton: addTableCellButton, | ||
3937 | bindTips:function () { | 4234 | bindTips:function () { |
3938 | // 基本信息悬浮提示 | 4235 | // 基本信息悬浮提示 |
3939 | $(".detail_base_info").mouseenter(function () { | 4236 | $(".detail_base_info").mouseenter(function () { |
@@ -4269,6 +4566,35 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | @@ -4269,6 +4566,35 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | ||
4269 | return $html; | 4566 | return $html; |
4270 | } | 4567 | } |
4271 | 4568 | ||
4569 | + function addTableCellButton(kpi) { | ||
4570 | + var $html = ''; | ||
4571 | + //h3c bmc指定转换状态指标id | ||
4572 | + var filterKpiIds = "KPIF4362E32,KPI8ED105CD,KPI32A0A858,KPIF5D53796"; | ||
4573 | + var kpiId = kpi.kpiId; | ||
4574 | + if (filterKpiIds.indexOf(kpiId) == -1){ | ||
4575 | + return $html; | ||
4576 | + } | ||
4577 | + var kpiValue = kpi.kpiValue; | ||
4578 | + var value = kpi.kpiValue; | ||
4579 | + if(value && typeof(value) == 'string'){ | ||
4580 | + value = value.trim().toLowerCase(); | ||
4581 | + } | ||
4582 | + var colorClass = 'buttonUnknown'; | ||
4583 | + if (value === 'ok'){ | ||
4584 | + colorClass = 'buttonOk'; | ||
4585 | + }else if (value === 'mlnor'){ | ||
4586 | + colorClass = 'buttonMlnor'; | ||
4587 | + }else if (value === 'major'){ | ||
4588 | + colorClass = 'buttonMajor'; | ||
4589 | + }else if (value === 'critical'){ | ||
4590 | + colorClass = 'buttonCritical'; | ||
4591 | + }else if (value === 'absence'){ | ||
4592 | + colorClass = 'buttonAbsence'; | ||
4593 | + } | ||
4594 | + $html = '<button type="button" class="layui-btn layui-btn-radius '+colorClass+' layui-btn-xs p-0-15 cant-click" style="font-size: 14px">'+kpiValue+'</button>'; | ||
4595 | + return $html; | ||
4596 | + } | ||
4597 | + | ||
4272 | /** | 4598 | /** |
4273 | * 取消容量预测 | 4599 | * 取消容量预测 |
4274 | * @param pararms | 4600 | * @param pararms |
@@ -14,6 +14,7 @@ layui.define(['table', 'admin', 'layer', 'common', 'commonDetail'], function (ex | @@ -14,6 +14,7 @@ layui.define(['table', 'admin', 'layer', 'common', 'commonDetail'], function (ex | ||
14 | var sortBy = data.sortBy; | 14 | var sortBy = data.sortBy; |
15 | var order = data.order; | 15 | var order = data.order; |
16 | var colWidth = data.colWidth; | 16 | var colWidth = data.colWidth; |
17 | + var isH3cbmc = data.isH3cbmc; | ||
17 | var url = "/api-web/detail/table/notpage?resId=" + resId + "&kpiId=" + kpiId; | 18 | var url = "/api-web/detail/table/notpage?resId=" + resId + "&kpiId=" + kpiId; |
18 | 19 | ||
19 | var resType=""; | 20 | var resType=""; |
@@ -70,13 +71,26 @@ layui.define(['table', 'admin', 'layer', 'common', 'commonDetail'], function (ex | @@ -70,13 +71,26 @@ layui.define(['table', 'admin', 'layer', 'common', 'commonDetail'], function (ex | ||
70 | 'data-id="' + v.id + '" data-kpiname="' + kpiname + '" data-name="' + v.name + '" data-flag="' + value[2] + '">' + | 71 | 'data-id="' + v.id + '" data-kpiname="' + kpiname + '" data-name="' + v.name + '" data-flag="' + value[2] + '">' + |
71 | '<img style="width: 20px;height: 20px;" src="/src/style/img/icon_row_menu.png"></a>'; | 72 | '<img style="width: 20px;height: 20px;" src="/src/style/img/icon_row_menu.png"></a>'; |
72 | } else { | 73 | } else { |
73 | - var $html = commonDetail.addIconByValue(value[0]); | ||
74 | - //根据资源类型判断 修改样式 | ||
75 | - if($html!="" && resType!="" && resType=="HOST_X86SERVER" && $html=='<i class="iconfont icon-size serious">\ue668</i>'){ | ||
76 | - $html='<i class="iconfont icon-size grayColor">\ue61e</i>'; | 74 | + //增加h3cbmc的更多弹出优化,如果是对应如下的几个状态指标,则处理样式 joke modify 20230427 |
75 | + var filterKpiIds = "KPIF4362E32,KPI8ED105CD,KPI32A0A858,KPIF5D53796"; | ||
76 | + if (isH3cbmc == true && filterKpiIds.indexOf(v.id) != -1){ | ||
77 | + var kpi = { | ||
78 | + kpiId : v.id, | ||
79 | + kpiValue : value[0] | ||
80 | + } | ||
81 | + $html = commonDetail.addTableCellButton(kpi); | ||
82 | + if ($html == ''){ | ||
83 | + $html = '<a data-id="' + v.id + '"data-flag="' + value.flag + '">' + $html + value.kpiValue + '</a>'; | ||
84 | + } | ||
85 | + return $html; | ||
86 | + }else{ | ||
87 | + var $html = commonDetail.addIconByValue(value[0]); | ||
88 | + //根据资源类型判断 修改样式 | ||
89 | + if($html!="" && resType!="" && resType=="HOST_X86SERVER" && $html=='<i class="iconfont icon-size serious">\ue668</i>'){ | ||
90 | + $html='<i class="iconfont icon-size grayColor">\ue61e</i>'; | ||
91 | + } | ||
92 | + return '<a data-id="' + v.id + '"data-flag="' + value[2] + '">' + $html + value[0] + '</a>'; | ||
77 | } | 93 | } |
78 | - | ||
79 | - return '<a data-id="' + v.id + '"data-flag="' + value[2] + '">' + $html + value[0] + '</a>'; | ||
80 | } | 94 | } |
81 | } else { | 95 | } else { |
82 | return d[v.id]; | 96 | return d[v.id]; |
@@ -20,52 +20,104 @@ layui.define(['commonDetail','common', 'admin'], function (exports) { | @@ -20,52 +20,104 @@ layui.define(['commonDetail','common', 'admin'], function (exports) { | ||
20 | os = data.os; | 20 | os = data.os; |
21 | } | 21 | } |
22 | 22 | ||
23 | - //基本信息 | ||
24 | - var jbxxKpi = "KPIE13DD9A3,KPIF74D9D2B,KPIF9BA6573,KPI9F694F60"; | 23 | + //基本信息:设备健康度、设备名称、序列号、电源功率 |
24 | + var jbxxKpi = "KPID3DD6605,KPI9F694F60,KPI4419E8A1,KPI74DB2138"; | ||
25 | + //设置信息 | ||
26 | + var deviceKpi = "KPI9F694F60,KPI4419E8A1,KPI74DB2138"; | ||
25 | //cpu信息 | 27 | //cpu信息 |
26 | - var cpukpi = "KPI6232CA8F,KPIF4362E32,KPI899DBD7B,KPIDDBCCA5A"; | 28 | + var cpukpi = "KPI6232CA8F,KPI70AEFC6A,KPI0990CD44,KPIF4362E32,KPIBDB60856,KPI15358CE3"; |
27 | //磁盘信息 | 29 | //磁盘信息 |
28 | - var diskkpi = "KPI9D22EAB6,KPI32A0A858,KPI8546BDCF"; | ||
29 | - //逻辑磁盘信息 | ||
30 | - var logicDiskKpi = "KPIE95E8B51,KPIB13D1D4A,KPIC98EA1B0,KPIC3ED81ED"; | 30 | + var diskkpi = "KPI9D22EAB6,KPI4419E8A1,KPI29D42042,KPI7B6A062F,KPI44C90B87,KPI32A0A858"; |
31 | //内存信息 | 31 | //内存信息 |
32 | - var memkpi = "KPI4E7CD5C9,KPI8ED105CD,KPI1584BE1C,KPI0990CD44"; | ||
33 | - //内存容量信息 | ||
34 | - //var memSummarykpi = "KPID4D2A668,KPI1584BE1C,KPIDC7E789B,KPI0990CD44,KPIA2DC1868"; | ||
35 | - //传感器信息 | ||
36 | - //var sensorkpi = "KPI7DCEAE85,KPI7F80B0C4,KPIFF55D32A,KPIF2996845"; | ||
37 | - //电源 | ||
38 | - var powerkpi="KPI83E76634,KPI8BCBCA98"; | ||
39 | - //风扇 | ||
40 | - var fankpi="KPI28C9A37D,KPIF5D53796"; | 32 | + var memkpi = "KPI4E7CD5C9,KPI70AEFC6A,KPIC8EAE5A2,KPI8ED105CD,KPI4419E8A1"; |
33 | + //风扇信息 | ||
34 | + var fanKpi = "KPI28C9A37D,KPI1A9360B6,KPIF5D53796"; | ||
41 | commonDetail.bindTips(); | 35 | commonDetail.bindTips(); |
42 | 36 | ||
43 | renderPageInfo(); | 37 | renderPageInfo(); |
44 | 38 | ||
45 | 39 | ||
40 | + //获取设备信息,左上角数据回填 | ||
41 | + function getDeviceInfo(resId) { | ||
42 | + var url = "/api-web/detail/block?resId=" + resId + "&kpiId=" + jbxxKpi + "&hasTotal=null&isBasic=true"; | ||
43 | + admin.req({ | ||
44 | + url: common.domainName + url | ||
45 | + }).done(function (res) { | ||
46 | + $.each(res.data,function (i,e){ | ||
47 | + //设备名称 | ||
48 | + if (e.id == 'KPI9F694F60'){ | ||
49 | + $('#deviceName').html(e.value) | ||
50 | + } | ||
51 | + if (e.name == '设备型号'){ | ||
52 | + $('#deviceModel').html(e.value) | ||
53 | + } | ||
54 | + }) | ||
55 | + }); | ||
56 | + } | ||
57 | + | ||
58 | + /** | ||
59 | + * 计算表格数据的总数及在位数 | ||
60 | + * */ | ||
61 | + function setSumaryByType(resId,targetId,kpiIds,flagPrifix) { | ||
62 | + var url = "/api-web/detail/table/page?resId=" + resId + "&kpiId=" + kpiIds + "&page=1&size=1000"; | ||
63 | + | ||
64 | + if (flagPrifix) { | ||
65 | + url = url + "&flagPrifix="+flagPrifix; | ||
66 | + } | ||
67 | + admin.req({ | ||
68 | + url: common.domainName + url | ||
69 | + }).done(function (res) { | ||
70 | + var data = res.data[0]; | ||
71 | + var content = data.content; | ||
72 | + var summaryCount = content.length; | ||
73 | + var summaryIn = content.length; | ||
74 | + $.each(content,function (ind,val) { | ||
75 | + $.each(val,function (i,v) { | ||
76 | + var kpiValue = ''; | ||
77 | + if (flagPrifix.indexOf('cpu') != -1 && v.kpiId === 'KPIF4362E32'){ | ||
78 | + kpiValue = v.kpiValue; | ||
79 | + }else if (flagPrifix.indexOf('mem')!= -1 && v.kpiId === 'KPI8ED105CD'){ | ||
80 | + kpiValue = v.kpiValue; | ||
81 | + }else if (flagPrifix.indexOf('disk')!= -1 && v.kpiId === 'KPI32A0A858'){ | ||
82 | + kpiValue = v.kpiValue; | ||
83 | + }else if (flagPrifix.indexOf('fan')!= -1 && v.kpiId === 'KPIF5D53796'){ | ||
84 | + kpiValue = v.kpiValue; | ||
85 | + } | ||
86 | + if (kpiValue === 'absence'){ | ||
87 | + summaryIn = summaryIn-1; | ||
88 | + } | ||
89 | + }) | ||
90 | + }) | ||
91 | + $('#'+targetId).html('总数: '+summaryCount + '<br/><br/>在位: '+summaryIn) | ||
92 | + }); | ||
93 | + } | ||
46 | 94 | ||
47 | //渲染页面 | 95 | //渲染页面 |
48 | function renderPageInfo() { | 96 | function renderPageInfo() { |
97 | + //填充cpu总数及在位数 | ||
98 | + setSumaryByType(resId,'cpuSummaryInfo',cpukpi,'cpu-'); | ||
99 | + //填充内存总数及在位数 | ||
100 | + setSumaryByType(resId,'memSummaryInfo',memkpi,'mem-'); | ||
101 | + //填充磁盘总数及在位数 | ||
102 | + setSumaryByType(resId,'diskSummaryInfo',diskkpi,'disk-'); | ||
103 | + //填充风扇总数及在位数 | ||
104 | + setSumaryByType(resId,'fanSummaryInfo',fanKpi,'fan-'); | ||
105 | + //填充左上角设备信息 | ||
106 | + getDeviceInfo(resId,deviceKpi); | ||
49 | //资源状态 | 107 | //资源状态 |
50 | - commonDetail.renderResHealth("host_bmc_h3c_health_state",resId); | ||
51 | - //基本信息 | ||
52 | - commonDetail.renderText("host_bmc_h3c_baseinfo",resId,jbxxKpi,null,null,null,"true"); | 108 | + commonDetail.renderResHealthForH3cBmc("host_bmc_h3c_health_state",resId); |
109 | + //基本信息,此处的kpiId传入一个,是因为左侧已经有其他信息,防止展示与左侧的重复 | ||
110 | + commonDetail.renderText("host_bmc_h3c_baseinfo",resId,'KPID3DD6605',null,null,null,"true"); | ||
111 | + //设备信息 | ||
112 | + commonDetail.renderText("host_bmc_h3c_device_info",resId,deviceKpi,null,null,null); | ||
53 | //cpu信息 | 113 | //cpu信息 |
54 | - commonDetail.renderTable("host_bmc_h3c_cpuinfo",false,resId,cpukpi,'CPU信息','bmccpu-','KPI6232CA8F','ASC'); | ||
55 | - //磁盘信息 | ||
56 | - commonDetail.renderTable("host_bmc_h3c_diskinfo",false,resId,diskkpi,'磁盘信息','bmcdisk-','KPI9D22EAB6','ASC'); | ||
57 | - //逻辑磁盘信息 | ||
58 | - commonDetail.renderTable("host_bmc_h3c_logic_diskinfo",false,resId,logicDiskKpi,'磁盘信息','raid-','KPIE95E8B51','ASC'); | 114 | + commonDetail.renderTableForH3cBmc("host_bmc_h3c_cpuinfo",false,resId,cpukpi,'CPU信息','cpu-','KPI6232CA8F','ASC'); |
59 | //内存信息 | 115 | //内存信息 |
60 | - commonDetail.renderTable("host_bmc_h3c_meminfo",false,resId,memkpi,'内存信息','bmcmem-','KPI4E7CD5C9','ASC'); | ||
61 | - //电源信息 | ||
62 | - commonDetail.renderTable("host_bmc_h3c_powerinfo",false,resId,powerkpi,'电源信息','power','KPI83E76634','ASC'); | 116 | + commonDetail.renderTableForH3cBmc("host_bmc_h3c_meminfo",false,resId,memkpi,'内存信息','mem-','KPI4E7CD5C9','ASC'); |
117 | + //磁盘信息 | ||
118 | + commonDetail.renderTableForH3cBmc("host_bmc_h3c_diskinfo",false,resId,diskkpi,'磁盘信息','disk-','KPI9D22EAB6','ASC'); | ||
63 | //风扇信息 | 119 | //风扇信息 |
64 | - commonDetail.renderTable("host_bmc_h3c_faninfo",false,resId,fankpi,'风扇信息','fan','KPI28C9A37D','ASC'); | ||
65 | - //内存容量信息 | ||
66 | - //commonDetail.renderTable("host_bmc_h3c_memSummaryinfo",false,resId,memSummarykpi,'电源信息','memSummary'); | ||
67 | - //传感器信息 | ||
68 | - //commonDetail.renderTable("host_bmc_h3c_sensorinfo",false,resId,sensorkpi,'传感器信息','sensor'); | 120 | + commonDetail.renderTableForH3cBmc("host_bmc_h3c_faninfo",false,resId,fanKpi,'风扇信息','fan-','KPI28C9A37D','ASC'); |
69 | //活动告警 | 121 | //活动告警 |
70 | commonDetail.renderActiveAlarms("host_bmc_h3c_active_alarm",resId); | 122 | commonDetail.renderActiveAlarms("host_bmc_h3c_active_alarm",resId); |
71 | } | 123 | } |

4.53 KB

3.37 KB

5.06 KB
@@ -4,63 +4,89 @@ | @@ -4,63 +4,89 @@ | ||
4 | <div class="main"> | 4 | <div class="main"> |
5 | <div class="layui-card template_detail_content"> | 5 | <div class="layui-card template_detail_content"> |
6 | <div class="layui-card-body"> | 6 | <div class="layui-card-body"> |
7 | - <div class="lay-row"> | ||
8 | - <div class="lay-row-item lay-row-item--small"> | ||
9 | - <h5 class="lay-row-title">资源状态</h5> | ||
10 | - <div class="res-state" id="host_bmc_h3c_health_state"></div> | 7 | + <div class="lay-row" style="height: 340px"> |
8 | + <div class="lay-row-item lay-row-item--auto-width"> | ||
9 | + <div style="height: 200px;" class="imgDiv"> | ||
10 | + <div style="float: left;width: 50%"> | ||
11 | + <div style="padding: 70px 10px;color: white"> | ||
12 | + <h1 style="margin-bottom: 15px;margin-left: 10px" id="deviceModel"></h1> | ||
13 | + <label style="margin-left: 10px">主机名: <span id="deviceName"></span></label> | ||
14 | + </div> | ||
15 | + </div> | ||
16 | + <div style="float: right;width: 50%"> | ||
17 | + <div style="margin: 60px 10px;"> | ||
18 | + <img class="h3c_bmc_img" src="src/style/img/detail/h3c_bmc.png"> | ||
19 | + </div> | ||
20 | + </div> | ||
21 | + </div> | ||
22 | + <h5 class="lay-row-title">设备信息</h5> | ||
23 | + <div class="info-table" id="host_bmc_h3c_device_info"></div> | ||
11 | </div> | 24 | </div> |
12 | <div class="lay-row-item lay-row-item--small"> | 25 | <div class="lay-row-item lay-row-item--small"> |
13 | <h5 class="lay-row-title">基本信息<i data-id="host_bmc_h3c_baseinfo" class="iconfont detail_base_info"></i></h5> | 26 | <h5 class="lay-row-title">基本信息<i data-id="host_bmc_h3c_baseinfo" class="iconfont detail_base_info"></i></h5> |
14 | <ul class="info-table" id="host_bmc_h3c_baseinfo"></ul> | 27 | <ul class="info-table" id="host_bmc_h3c_baseinfo"></ul> |
15 | </div> | 28 | </div> |
16 | -<!-- <div class="lay-row-item">--> | ||
17 | -<!-- <h5 class="lay-row-title">内存容量信息<span id="host_bmc_h3c_memSummaryinfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_memSummaryinfoMore" class="layui-table-link">更多</span></h5>--> | ||
18 | -<!-- <div id="host_bmc_h3c_memSummaryinfo"></div>--> | ||
19 | -<!-- </div>--> | ||
20 | - <div class="lay-row-item"> | ||
21 | - <h5 class="lay-row-title">电源信息<span id="host_bmc_h3c_powerinfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_powerinfoMore" class="layui-table-link">更多</span></h5> | ||
22 | - <div id="host_bmc_h3c_powerinfo"></div> | 29 | + <div class="border1" style="width: 400px;margin: 5px"> |
30 | + <h5 class="lay-row-title">设备健康度</h5> | ||
31 | + <div class="res-state" style="padding-top: 20px" id="host_bmc_h3c_health_state"></div> | ||
23 | </div> | 32 | </div> |
24 | </div> | 33 | </div> |
25 | <div class="lay-row"> | 34 | <div class="lay-row"> |
26 | - <div class="lay-row-item"> | 35 | + <div class="border1 summaryDiv"> |
36 | + <div class="summaryDivImg"> | ||
37 | + <img src="src/style/img/detail/cpu.png"> | ||
38 | + </div> | ||
39 | + <div> | ||
40 | + <p id="cpuSummaryInfo">总数:2</p> | ||
41 | + </div> | ||
42 | + </div> | ||
43 | + <div style="float: right" class="lay-row-item"> | ||
27 | <h5 class="lay-row-title">CPU信息<span id="host_bmc_h3c_cpuinfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_cpuinfoMore" class="layui-table-link">更多</span></h5> | 44 | <h5 class="lay-row-title">CPU信息<span id="host_bmc_h3c_cpuinfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_cpuinfoMore" class="layui-table-link">更多</span></h5> |
28 | <div id="host_bmc_h3c_cpuinfo"></div> | 45 | <div id="host_bmc_h3c_cpuinfo"></div> |
29 | </div> | 46 | </div> |
30 | </div> | 47 | </div> |
31 | <div class="lay-row"> | 48 | <div class="lay-row"> |
32 | - <div class="lay-row-item"> | ||
33 | - <h5 class="lay-row-title">磁盘信息<span id="host_bmc_h3c_diskinfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_diskinfoMore" class="layui-table-link">更多</span></h5> | ||
34 | - <div id="host_bmc_h3c_diskinfo"></div> | 49 | + <div class="border1 summaryDiv"> |
50 | + <div class="summaryDivImg"> | ||
51 | + <img src="src/style/img/detail/mem.png"> | ||
52 | + </div> | ||
53 | + <div> | ||
54 | + <p id="memSummaryInfo"></p> | ||
55 | + </div> | ||
35 | </div> | 56 | </div> |
36 | - </div> | ||
37 | - <div class="lay-row"> | ||
38 | - <div class="lay-row-item"> | ||
39 | - <h5 class="lay-row-title">逻辑磁盘信息<span id="host_bmc_h3c_logic_diskinfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_logic_diskinfoMore" class="layui-table-link">更多</span></h5> | ||
40 | - <div id="host_bmc_h3c_logic_diskinfo"></div> | 57 | + <div style="float: right" class="lay-row-item"> |
58 | + <h5 class="lay-row-title">内存信息<span id="host_bmc_h3c_meminfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_meminfoMore" class="layui-table-link">更多</span></h5> | ||
59 | + <div id="host_bmc_h3c_meminfo"></div> | ||
41 | </div> | 60 | </div> |
42 | </div> | 61 | </div> |
43 | <div class="lay-row"> | 62 | <div class="lay-row"> |
44 | - <div class="lay-row-item"> | ||
45 | - <h5 class="lay-row-title">内存信息<span id="host_bmc_h3c_meminfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_meminfoMore" class="layui-table-link">更多</span></h5> | ||
46 | - <div id="host_bmc_h3c_meminfo"></div> | 63 | + <div class="border1 summaryDiv"> |
64 | + <div class="summaryDivImg"> | ||
65 | + <img src="src/style/img/detail/disk.png"> | ||
66 | + </div> | ||
67 | + <div> | ||
68 | + <p id="diskSummaryInfo"></p> | ||
69 | + </div> | ||
70 | + </div> | ||
71 | + <div style="float: right" class="lay-row-item"> | ||
72 | + <h5 class="lay-row-title">磁盘信息<span id="host_bmc_h3c_diskinfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_diskinfoMore" class="layui-table-link">更多</span></h5> | ||
73 | + <div id="host_bmc_h3c_diskinfo"></div> | ||
47 | </div> | 74 | </div> |
48 | </div> | 75 | </div> |
49 | <div class="lay-row"> | 76 | <div class="lay-row"> |
50 | - <div class="lay-row-item"> | 77 | + <div class="border1 summaryDiv"> |
78 | + <div class="summaryDivImg"> | ||
79 | + <img src="src/style/img/detail/fan.png"> | ||
80 | + </div> | ||
81 | + <div> | ||
82 | + <p id="fanSummaryInfo"></p> | ||
83 | + </div> | ||
84 | + </div> | ||
85 | + <div style="float: right" class="lay-row-item"> | ||
51 | <h5 class="lay-row-title">风扇信息<span id="host_bmc_h3c_faninfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_faninfoMore" class="layui-table-link">更多</span></h5> | 86 | <h5 class="lay-row-title">风扇信息<span id="host_bmc_h3c_faninfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_faninfoMore" class="layui-table-link">更多</span></h5> |
52 | <div id="host_bmc_h3c_faninfo"></div> | 87 | <div id="host_bmc_h3c_faninfo"></div> |
53 | </div> | 88 | </div> |
54 | </div> | 89 | </div> |
55 | -<!-- <div class="lay-row">--> | ||
56 | -<!-- --> | ||
57 | -<!-- </div>--> | ||
58 | -<!-- <div class="lay-row">--> | ||
59 | -<!-- <div class="lay-row-item">--> | ||
60 | -<!-- <h5 class="lay-row-title">传感器信息<span id="host_bmc_h3c_sensorinfoDownload" class="layui-table-link" style="margin-left: 10px;">下载</span><span id="host_bmc_h3c_sensorinfoMore" class="layui-table-link">更多</span></h5>--> | ||
61 | -<!-- <div id="host_bmc_h3c_sensorinfo"></div>--> | ||
62 | -<!-- </div>--> | ||
63 | -<!-- </div>--> | ||
64 | <div class="lay-row"> | 90 | <div class="lay-row"> |
65 | <div class="lay-row-item"> | 91 | <div class="lay-row-item"> |
66 | <h5 class="lay-row-title">实时告警动态</h5> | 92 | <h5 class="lay-row-title">实时告警动态</h5> |
@@ -83,4 +109,46 @@ | @@ -83,4 +109,46 @@ | ||
83 | fn(JSON.parse(parm)); | 109 | fn(JSON.parse(parm)); |
84 | } | 110 | } |
85 | }); | 111 | }); |
86 | -</script> | ||
112 | +</script> | ||
113 | +<style> | ||
114 | + .imgDiv{ | ||
115 | + background-color: #536ead; | ||
116 | + } | ||
117 | + .h3c_bmc_img{ | ||
118 | + max-width:99%;margin-right:auto;margin-left:auto; | ||
119 | + } | ||
120 | + .template .lay-row-item .info-table li span:nth-child(2), .template .lay-row-item .info-table li span:nth-child(4) { | ||
121 | + text-align: right; !important; | ||
122 | + } | ||
123 | + .border1{ | ||
124 | + border: 1px solid rgba(151, 151, 151, 0.13); | ||
125 | + } | ||
126 | + .buttonUnknown{ | ||
127 | + background-color: #424242; !important; | ||
128 | + } | ||
129 | + .buttonOk{ | ||
130 | + background-color: #84cb3a; !important; | ||
131 | + } | ||
132 | + .buttonMlnor{ | ||
133 | + background-color: #4c9df8; !important; | ||
134 | + } | ||
135 | + .buttonMajor{ | ||
136 | + background-color: #e9a944; !important; | ||
137 | + } | ||
138 | + .buttonCritical{ | ||
139 | + background-color: #c63520; !important; | ||
140 | + } | ||
141 | + .buttonAbsence{ | ||
142 | + background-color: #c5c5c5; !important; | ||
143 | + } | ||
144 | + .summaryDiv{ | ||
145 | + justify-content: space-evenly; | ||
146 | + align-items: center; | ||
147 | + display: flex; | ||
148 | + width: 200px; | ||
149 | + margin: 5px; | ||
150 | + } | ||
151 | + .summaryDiv .summaryDivImg{ | ||
152 | + width: 50px; | ||
153 | + } | ||
154 | +</style> |
-
Please register or login to post a comment