效果
后端代码
分页配置
/**
* 目的防止驼峰命名规则
* @return
*/
@Bean
public ConfigurationCustomizer configurationCustomizer(){
return new ConfigurationCustomizer(){
@Override
public void customize(Configuration configuration) {
configuration.setMapUnderscoreToCamelCase(true);
}
};
}
/**
* 使用方法直接调用这个就行
* PageHelper.startPage(1, 10);
* System.out.println("MyBatisConfiguration.pageHelper()");
* 分页插件
* @return
*/
@Bean
public PageHelper pageHelper() {
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
p.setProperty("offsetAsPageNum", "true");
p.setProperty("rowBoundsWithCount", "true");
p.setProperty("reasonable", "true");
pageHelper.setProperties(p);
return pageHelper;
}
controler
/**
* 查询报表全部数据(分页查询)
*
* @return
*/
@GetMapping("/resultList")
@ResponseBody
public Msg getEmps(@RequestParam(value = "pn", defaultValue = "1") Integer pn) {
// 引入PageHelper分页插件
// 在查询之前只需要调用,传入页码,以及每页的大小
PageHelper.startPage(pn, 5);
// startPage后面紧跟的这个查询就是一个分页查询
// List<TestResult> emps = reportTotalService.findAll();
List<ReportUi> emps = reportTotalService.findreprt();
// 使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了。
// 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
PageInfo page = new PageInfo(emps, 5);
return Msg.success().add("pageInfo", page);
}
前端代码
公共代码
<html xmlns:th="http://www.thymeleaf.org">
<!--上面头信息-->
<head th:fragment="header">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- Meta, title, CSS, favicons, etc. -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>报告展示</title>
<!-- Bootstrap -->
<link th:href="@{/static/bootstrap/vendors/bootstrap/dist/css/bootstrap.min.css}"
href="../vendors/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome -->
<link th:href="@{/static/bootstrap/vendors/font-awesome/css/font-awesome.min.css}"
href="../vendors/font-awesome/css/font-awesome.min.css" rel="stylesheet">
<!-- NProgress -->
<link th:href="@{/static/bootstrap/vendors/nprogress/nprogress.css}" href="../vendors/nprogress/nprogress.css"
rel="stylesheet">
<!-- iCheck -->
<link th:href="@{/static/bootstrap/vendors/iCheck/skins/flat/green.css}"
href="../vendors/iCheck/skins/flat/green.css"
rel="stylesheet">
<!-- bootstrap-progressbar -->
<link th:href="@{/static/bootstrap/vendors/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.min.css}"
href="../vendors/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.min.css" rel="stylesheet">
<!-- JQVMap -->
<link th:href="@{/static/bootstrap/vendors/jqvmap/dist/jqvmap.min.css}" href="../vendors/jqvmap/dist/jqvmap.min.css"
rel="stylesheet"/>
<!-- bootstrap-daterangepicker -->
<link th:href="@{/static/bootstrap/vendors/bootstrap-daterangepicker/daterangepicker.css}"
href="../vendors/bootstrap-daterangepicker/daterangepicker.css" rel="stylesheet">
<!-- Custom Theme Style -->
<link th:href="@{/static/bootstrap/build/css/custom.min.css}" href="../build/css/custom.min.css" rel="stylesheet">
<!-- <script type="text/javascript"-->
<!-- th:src="@{/static/js/jquery-1.12.4.min.js}"></script>-->
</head>
<footer th:fragment="footer">
<div class="pull-right">
Admin<a rel="nofollow" href="https://www.jd.co.th/" target="_blank" title="接口测试">接口测试实验地</a> - Collect from <a
href="https://www.jd.co.th/" title="接口测试" target="_blank">接口测试部</a>
</div>
<div class="clearfix"></div>
</footer>
<!--下面信息-->
<div th:fragment="jsinfo">
<!-- jQuery -->
<script th:src="@{/static/bootstrap/vendors/jquery/dist/jquery.min.js}"
src="../bootstrap/vendors/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap -->
<script th:src="@{/static/bootstrap/vendors/bootstrap/dist/js/bootstrap.min.js}"
src="../vendors/bootstrap/dist/js/bootstrap.min.js"></script>
<!-- FastClick -->
<script th:src="@{/static/bootstrap/vendors/fastclick/lib/fastclick.js}"
src="../vendors/fastclick/lib/fastclick.js"></script>
<!-- NProgress -->
<script th:src="@{/static/bootstrap/vendors/nprogress/nprogress.js}"
src="../vendors/nprogress/nprogress.js"></script>
<!-- Chart.js -->
<script th:src="@{/static/bootstrap/vendors/Chart.js/dist/Chart.min.js}"
src="../vendors/Chart.js/dist/Chart.min.js"></script>
<!-- gauge.js -->
<script th:src="@{/static/bootstrap/vendors/gauge.js/dist/gauge.min.js}"
src="../vendors/gauge.js/dist/gauge.min.js"></script>
<!-- bootstrap-progressbar -->
<script th:src="@{/static/bootstrap/vendors/bootstrap-progressbar/bootstrap-progressbar.min.js}"
src="../vendors/bootstrap-progressbar/bootstrap-progressbar.min.js"></script>
<!-- iCheck -->
<script th:src="@{/static/bootstrap/vendors/iCheck/icheck.min.js}" src="../vendors/iCheck/icheck.min.js"></script>
<!-- Skycons -->
<script th:src="@{/static/bootstrap/vendors/skycons/skycons.js}" src="../vendors/skycons/skycons.js"></script>
<!-- Flot -->
<script th:src="@{/static/bootstrap/vendors/Flot/jquery.flot.js}" src="../vendors/Flot/jquery.flot.js"></script>
<script th:src="@{/static/bootstrap/vendors/Flot/jquery.flot.pie.js}"
src="../vendors/Flot/jquery.flot.pie.js"></script>
<script th:src="@{/static/bootstrap/vendors/Flot/jquery.flot.time.js}"
src="../vendors/Flot/jquery.flot.time.js"></script>
<script th:src="@{/static/bootstrap/vendors/Flot/jquery.flot.stack.js}"
src="../vendors/Flot/jquery.flot.stack.js"></script>
<script th:src="@{/static/bootstrap/vendors/Flot/jquery.flot.resize.js}"
src="../vendors/Flot/jquery.flot.resize.js"></script>
<!-- Flot plugins -->
<script th:src="@{/static/bootstrap/vendors/flot.orderbars/js/jquery.flot.orderBars.js}"
src="../vendors/flot.orderbars/js/jquery.flot.orderBars.js"></script>
<script th:src="@{/static/bootstrap/vendors/flot-spline/js/jquery.flot.spline.min.js}"
src="../vendors/flot-spline/js/jquery.flot.spline.min.js"></script>
<script th:src="@{/static/bootstrap/vendors/flot.curvedlines/curvedLines.js}"
src="../vendors/flot.curvedlines/curvedLines.js"></script>
<!-- DateJS -->
<script th:src="@{/static/bootstrap/vendors/DateJS/build/date.js}" src="../vendors/DateJS/build/date.js"></script>
<!-- JQVMap -->
<script th:src="@{/static/bootstrap/vendors/jqvmap/dist/jquery.vmap.js}"
src="../vendors/jqvmap/dist/jquery.vmap.js"></script>
<script th:src="@{/static/bootstrap/vendors/jqvmap/dist/maps/jquery.vmap.world.js}"
src="../vendors/jqvmap/dist/maps/jquery.vmap.world.js"></script>
<script th:src="@{/static/bootstrap/vendors/jqvmap/examples/js/jquery.vmap.sampledata.js}"
src="../vendors/jqvmap/examples/js/jquery.vmap.sampledata.js"></script>
<!-- bootstrap-daterangepicker -->
<script th:src="@{/static/bootstrap/vendors/moment/min/moment.min.js}"
src="../vendors/moment/min/moment.min.js"></script>
<script th:src="@{/static/bootstrap/vendors/bootstrap-daterangepicker/daterangepicker.js}"
src="../vendors/bootstrap-daterangepicker/daterangepicker.js"></script>
<!-- Custom Theme Scripts -->
<script th:src="@{/static/bootstrap/build/js/custom.min.js}" src="../build/js/custom.min.js"></script>
<script th:src="@{/static/js/commons.js}" src="../build/js/custom.min.js"></script>
<script th:src="@{/static/js/highcharts.js}" src="../build/js/custom.min.js"></script>
</div>
<!--左侧栏-->
<div class="col-md-3 left_col" th:fragment="topbar">
<div class="left_col scroll-view">
<div class="navbar nav_title" style="border: 0;">
<a rel="nofollow" th:href="@{/}" href="#" class="site_title"><i class="fa fa-paw"></i> <span>报告展示平台</span></a>
</div>
<div class="clearfix"></div>
<!-- menu profile quick info -->
<div class="profile clearfix">
<div class="profile_pic">
<img th:src="@{/static/images/img.jpg}" src="../../static/images/img.jpg" alt="..."
class="img-circle profile_img">
</div>
<div class="profile_info">
<span>Welcome,</span>
<h2>admin</h2>
</div>
</div>
<!-- /menu profile quick info -->
<br/>
<!-- sidebar menu -->
<!--引入侧边栏-->
<div id="sidebar-menu" class="main_menu_side hidden-print main_menu">
<div class="menu_section">
<h3>General</h3>
<ul class="nav side-menu">
<li><a><i class="fa fa-edit"></i> 接口区 <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li><a rel="nofollow" href="#">项目管理</a></li>
<!-- <li><a rel="nofollow" th:href="@{/project_list.html}">项目管理</a></li>-->
<!-- <li><a rel="nofollow" th:href="@{/module_list}">模块管理</a></li>-->
<!-- <li><a rel="nofollow" th:href="@{/interInfo_list}">接口管理</a></li>-->
<!-- <li><a rel="nofollow" th:href="@{/test_list}">用例管理</a></li>-->
<!-- <li><a rel="nofollow" th:href="@{/config_list}">配置管理</a></li>-->
</ul>
</li>
<li><a><i class="fa fa-institution"></i> UI自动化区 <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li><a rel="nofollow" href="#">应用管理</a></li>
<li><a rel="nofollow" href="#">模块管理</a></li>
<li><a rel="nofollow" href="#">接口管理</a></li>
<li><a rel="nofollow" href="#">用例管理</a></li>
<li><a rel="nofollow" href="#">配置管理</a></li>
</ul>
</li>
<li><a><i class="fa fa-building-o"></i> 专项区 <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li><a rel="nofollow" href="#">应用管理</a></li>
<li><a rel="nofollow" href="#">模块管理</a></li>
<li><a rel="nofollow" href="#">接口管理</a></li>
<li><a rel="nofollow" href="#">用例管理</a></li>
<li><a rel="nofollow" href="#">配置管理</a></li>
</ul>
</li>
<li><a><i class="fa fa-wrench"></i> 性能测试区 <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li><a rel="nofollow" href="#">应用管理</a></li>
<li><a rel="nofollow" href="#">模块管理</a></li>
<li><a rel="nofollow" href="#">接口管理</a></li>
<li><a rel="nofollow" href="#">用例管理</a></li>
<li><a rel="nofollow" href="#">配置管理</a></li>
</ul>
</li>
<li><a><i class="fa fa-desktop"></i> 任务管理 <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li><a rel="nofollow" href="#">定时任务</a></li>
<li><a rel="nofollow" href="#">邮件设置</a></li>
<li><a rel="nofollow" href="#">任务监控</a></li>
<li><a rel="nofollow" href="#">查看报告</a></li>
</ul>
</li>
</ul>
</div>
</div>
<!-- /sidebar menu -->
<!-- /menu footer buttons -->
<div class="sidebar-footer hidden-small">
<a data-toggle="tooltip" data-placement="top" title="Settings">
<span class="glyphicon glyphicon-cog" aria-hidden="true"></span>
</a>
<a data-toggle="tooltip" data-placement="top" title="FullScreen">
<span class="glyphicon glyphicon-fullscreen" aria-hidden="true"></span>
</a>
<a data-toggle="tooltip" data-placement="top" title="Lock">
<span class="glyphicon glyphicon-eye-close" aria-hidden="true"></span>
</a>
<a rel="nofollow" data-toggle="tooltip" data-placement="top" title="Logout" href="login.html">
<span class="glyphicon glyphicon-off" aria-hidden="true"></span>
</a>
</div>
<!-- /menu footer buttons -->
</div>
</div>
<!-- top navigation -->
<div class="top_nav" id="sidebar">
<div class="nav_menu">
<nav>
<div class="nav toggle">
<a id="menu_toggle"><i class="fa fa-bars"></i></a>
</div>
<ul class="nav navbar-nav navbar-right">
<li class="">
<a rel="nofollow" href="javascript:;" class="user-profile dropdown-toggle" data-toggle="dropdown"
aria-expanded="false">
<img th:src="@{/static/images/img.jpg}" src="../../static/images/img.jpg" alt="">John Doe
<span class=" fa fa-angle-down"></span>
</a>
<ul class="dropdown-menu dropdown-usermenu pull-right">
<li><a rel="nofollow" href="javascript:;"> Profile</a></li>
<li>
<a rel="nofollow" href="javascript:;">
<span class="badge bg-red pull-right">50%</span>
<span>Settings</span>
</a>
</li>
<li><a rel="nofollow" href="javascript:;">Help</a></li>
<li><a rel="nofollow" href="login.html"><i class="fa fa-sign-out pull-right"></i> Log Out</a></li>
</ul>
</li>
<li role="presentation" class="dropdown">
<a rel="nofollow" href="javascript:;" class="dropdown-toggle info-number" data-toggle="dropdown"
aria-expanded="false">
<i class="fa fa-envelope-o"></i>
<span class="badge bg-green">6</span>
</a>
<ul id="menu1" class="dropdown-menu list-unstyled msg_list" role="menu">
<li>
<a>
<span class="image"><img th:src="@{/static/images/img.jpg}"
src="../../static/images/img.jpg"
alt="Profile Image"/></span>
<span>
<span>John Smith</span>
<span class="time">3 mins ago</span>
</span>
<span class="message">
Film festivals used to be do-or-die moments for movie makers. They were where...
</span>
</a>
</li>
<li>
<a>
<span class="image"><img th:src="@{/static/images/img.jpg}"
src="../../static/images/img.jpg"
alt="Profile Image"/></span>
<span>
<span>John Smith</span>
<span class="time">3 mins ago</span>
</span>
<span class="message">
Film festivals used to be do-or-die moments for movie makers. They were where...
</span>
</a>
</li>
<li>
<a>
<span class="image"><img th:src="@{/static/images/img.jpg}"
src="../../static/images/img.jpg"
alt="Profile Image"/></span>
<span>
<span>John Smith</span>
<span class="time">3 mins ago</span>
</span>
<span class="message">
Film festivals used to be do-or-die moments for movie makers. They were where...
</span>
</a>
</li>
<li>
<a>
<span class="image"><img th:src="@{/static/images/img.jpg}"
src="../../static/images/img.jpg"
alt="Profile Image"/></span>
<span>
<span>John Smith</span>
<span class="time">3 mins ago</span>
</span>
<span class="message">
Film festivals used to be do-or-die moments for movie makers. They were where...
</span>
</a>
</li>
<li>
<div class="text-center">
<a>
<strong>See All Alerts</strong>
<i class="fa fa-angle-right"></i>
</a>
</div>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
<!-- /top navigation -->
页码展示代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<head th:replace="commons/include::header">
</head>
<body class="nav-md">
<div class="container body">
<div class="main_container">
<!--topbar-->
<div th:replace="commons/include::topbar"></div>
<!-- top navigation -->
<div th:replace="commons/include::#sidebar"></div>
<!-- page content -->
<div class="right_col" role="main">
<!-- top tiles -->
<div class="row tile_count">
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-user"></i> 项目总计</span>
<div class="count">2500</div>
<span class="count_bottom"><i class="green">4% </i> From last Week</span>
</div>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-clock-o"></i> 模块总计</span>
<div class="count">123.50</div>
<span class="count_bottom"><i class="green"><i
class="fa fa-sort-asc"></i>3% </i> From last Week</span>
</div>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-user"></i> 接口总计</span>
<div class="count green">2,500</div>
<span class="count_bottom"><i class="green"><i
class="fa fa-sort-asc"></i>34% </i> From last Week</span>
</div>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-user"></i> 用例总计</span>
<div class="count">4,567</div>
<span class="count_bottom"><i class="red"><i
class="fa fa-sort-desc"></i>12% </i> From last Week</span>
</div>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-user"></i> 配置总计</span>
<div class="count">2,315</div>
<span class="count_bottom"><i class="green"><i
class="fa fa-sort-asc"></i>34% </i> From last Week</span>
</div>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-user"></i> 今日新增用例</span>
<div class="count">7,325</div>
<span class="count_bottom"><i class="green"><i
class="fa fa-sort-asc"></i>34% </i> From last Week</span>
</div>
</div>
<!-- /top tiles -->
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="dashboard_graph">
<div class="row x_title">
<div class="col-md-6">
<h3>日常自动化数据结果展示 </h3>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="x_panel">
<div class="x_title">
<h2>UI每日巡检 <small>在线</small></h2>
<ul class="nav navbar-right panel_toolbox">
<li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
</li>
<li class="dropdown">
<a rel="nofollow" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
aria-expanded="false"><i class="fa fa-wrench"></i></a>
<ul class="dropdown-menu" role="menu">
<li><a rel="nofollow" href="#">Settings 1</a>
</li>
<li><a rel="nofollow" href="#">Settings 2</a>
</li>
</ul>
</li>
<li><a class="close-link"><i class="fa fa-close"></i></a>
</li>
</ul>
<div class="clearfix"></div>
</div>
<div class="x_content">
<!-- <canvas id="ChartUI"></canvas>-->
<div id="ChartUI" style="width:100%; height:300px;"></div>
</div>
</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="x_panel">
<div class="x_title">
<h2>接口每日巡检 <small>在线</small></h2>
<ul class="nav navbar-right panel_toolbox">
<li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
</li>
<li class="dropdown">
<a rel="nofollow" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
aria-expanded="false"><i class="fa fa-wrench"></i></a>
<ul class="dropdown-menu" role="menu">
<li><a rel="nofollow" href="#">Settings 1</a>
</li>
<li><a rel="nofollow" href="#">Settings 2</a>
</li>
</ul>
</li>
<li><a class="close-link"><i class="fa fa-close"></i></a>
</li>
</ul>
<div class="clearfix"></div>
</div>
<div class="x_content">
<!-- <canvas id="ChartUI"></canvas>-->
<div id="container" style="width:100%; height:300px;"></div>
</div>
</div>
</div>
</div>
<br/>
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_content">
<div class="table-responsive">
<table class="table table-striped jambo_table bulk_action" id="res_table">
<thead>
<tr class="headings">
<th>
<input type="checkbox" id="check-all" class="flat">
</th>
<th class="column-title">序号</th>
<th class="column-title">测试人员</th>
<th class="column-title">开始时间</th>
<th class="column-title">结束时间</th>
<th class="column-title">运行版本</th>
<th class="column-title">系统版本</th>
<th class="column-title">回归类型</th>
<th class="column-title">成功数</th>
<th class="column-title">失败数</th>
<th class="column-title">跳过数</th>
<th class="column-title">运行用例类名字</th>
<th class="column-title">状态</th>
<th class="column-title">用例描述</th>
<th class="column-title">持续时间</th>
<th class="column-title">日志</th>
<th class="bulk-actions" colspan="7">
<a class="antoo" style="color:#fff; font-weight:500;">当前选择 ( <span
class="action-cnt"> </span> ) <i class="fa fa-chevron-down"></i></a>
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- 显示分页信息 -->
<div class="row">
<!--分页文字信息 -->
<div class="col-md-6" id="page_info_area"></div>
<!-- 分页条信息 -->
<div class="col-md-6" id="page_nav_area">
</div>
</div>
</div>
</div>
<!-- /page content -->
<!-- footer content -->
<div th:replace="commons/include::footer"></div>
<!-- /footer content -->
</div>
</div>
<!--js 信息 -->
<div th:replace="commons/include :: jsinfo"></div>
<script type="text/javascript">
/**
* 时间对象的格式化
*/
Date.prototype.format = function (format) {
/*
* format="yyyy-MM-dd hh:mm:ss";
*/
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"S": this.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4
- RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1
? o[k]
: ("00" + o[k]).substr(("" + o[k]).length));
}
}
return format;
};
function getLocalTime(nS) {
return new Date(parseInt(nS) * 1000).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");
}
var totalRecord, currentPage;
//1、页面加载完成以后,直接去发送ajax请求,要到分页数据
// console.log("这里!totalRecord!");
$(function () {
to_page(1);
//接口
init_morris_charts();
//UI
init_morric_UI();
});
function to_page(pn) {
$.ajax({
url: "/resultList",
async: true,
data: "pn=" + pn,
type: "GET",
success: function (result) {
//console.log(result);
//1、解析并显示报表数据
build_emps_table(result);
// //2、解析并显示分页信息
build_page_info(result);
// //3、解析显示分页条数据
build_page_nav(result);
}
});
}
function build_emps_table(result) {
// console.log(result);
$("#res_table tbody").empty();
var emps = result.extend.pageInfo.list;
$.each(emps, function (index, reulst) {
var table_re = $(" <td class=\"a-center \">\n" +
" <input type=\"checkbox\" class=\"flat\" name=\"table_records\">\n" +
" </td>").append("");
var empIdTd = $("<td></td>").append(reulst.id);
var testUser = $("<td></td>").append(reulst.testUser);
var startTime = $("<td></td>").append(Date.parse(reulst.startTime).format("yyyy-MM-dd hh:mm:ss"));
var endTime = $("<td></td>").append(Date.parse(reulst.endTime).format("yyyy-MM-dd hh:mm:ss"));
// var endTime = $("<td></td>").append(getLocalTime(reulst.endTime));
// var endTime = $("<td></td>").append(date("Y-m-d H:i:s",reulst.endTime));
var runVersion = $("<td></td>").append(reulst.runVersion);
var sysVersion = $("<td></td>").append(reulst.sysVersion);
var typeInfo = $("<td></td>").append(reulst.typeInfo);
var success = $("<td></td>").append(reulst.success);
var failed = $("<td></td>").append(reulst.failed);
var skipped = $("<td></td>").append(reulst.skipped);
var runMethodName = $("<td></td>").append(reulst.runMethodName);
var status = $("<td></td>").append(reulst.status);
var descriptionInfo = $("<td></td>").append(reulst.descriptionInfo);
var duration = $("<td></td>").append(reulst.duration);
var detail = $("<td></td>").append(reulst.detail);
//append方法执行完成以后还是返回原来的元素
$("<tr></tr>")
.append(table_re)
.append(empIdTd)
.append(testUser)
.append(startTime)
.append(endTime)
.append(runVersion)
.append(sysVersion)
.append(typeInfo)
.append(success)
.append(failed)
.append(skipped)
.append(runMethodName)
.append(status)
.append(descriptionInfo)
.append(duration)
.append(detail)
.appendTo("#res_table tbody");
});
}
function build_page_info(result) {
$("#page_info_area").empty();
$("#page_info_area").append("当前" + result.extend.pageInfo.pageNum + "页,总" +
result.extend.pageInfo.pages + "页,总" +
result.extend.pageInfo.total + "条记录");
totalRecord = result.extend.pageInfo.total;
currentPage = result.extend.pageInfo.pageNum;
}
function build_page_nav(result) {
//page_nav_area
$("#page_nav_area").empty();
var ul = $("<ul></ul>").addClass("pagination");
//构建元素
var firstPageLi = $("<li></li>").append($("<a></a>").append("首页").attr("href", "#"));
var prePageLi = $("<li></li>").append($("<a></a>").append("«"));
if (result.extend.pageInfo.hasPreviousPage == false) {
firstPageLi.addClass("disabled");
prePageLi.addClass("disabled");
} else {
//为元素添加点击翻页的事件
firstPageLi.click(function () {
to_page(1);
});
prePageLi.click(function () {
to_page(result.extend.pageInfo.pageNum - 1);
});
}
var nextPageLi = $("<li></li>").append($("<a></a>").append("»"));
var lastPageLi = $("<li></li>").append($("<a></a>").append("末页").attr("href", "#"));
if (result.extend.pageInfo.hasNextPage == false) {
nextPageLi.addClass("disabled");
lastPageLi.addClass("disabled");
} else {
nextPageLi.click(function () {
to_page(result.extend.pageInfo.pageNum + 1);
});
lastPageLi.click(function () {
to_page(result.extend.pageInfo.pages);
});
}
//添加首页和前一页 的提示
ul.append(firstPageLi).append(prePageLi);
//1,2,3遍历给ul中添加页码提示
$.each(result.extend.pageInfo.navigatepageNums, function (index, item) {
var numLi = $("<li></li>").append($("<a></a>").append(item));
if (result.extend.pageInfo.pageNum == item) {
numLi.addClass("active");
}
numLi.click(function () {
to_page(item);
});
ul.append(numLi);
});
//添加下一页和末页 的提示
ul.append(nextPageLi).append(lastPageLi);
//把ul加入到nav
var navEle = $("<nav></nav>").append(ul);
navEle.appendTo("#page_nav_area");
}
function init_morris_charts() {
//https://www.highcharts.com.cn/demo/highcharts
var chart = Highcharts.chart('container', {
title: {
text: '2018 ~ 2019 接口运行'
},
subtitle: {
text: '日常巡检'
},
yAxis: {
title: {
text: '接口数量'
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle'
},
plotOptions: {
series: {
label: {
connectorAllowed: false
},
pointStart: 2018
}
},
series: [{
name: '搜索',
data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434]
}, {
name: '商祥',
data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387]
}, {
name: '购物车',
data: [null, null, 7988, 12169, 15112, 22452, 34400, 34227]
}, {
name: '结算',
data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111]
}],
responsive: {
rules: [{
condition: {
maxWidth: 500
},
chartOptions: {
legend: {
layout: 'horizontal',
align: 'center',
verticalAlign: 'bottom'
}
}
}]
}
});
}
function init_morric_UI() {
var chart = Highcharts.chart('ChartUI', {
title: {
text: 'UI模块<br>占比',
align: 'center',
verticalAlign: 'middle',
y: 50
},
tooltip: {
headerFormat: '{series.name}<br>',
pointFormat: '{point.name}: <b>{point.percentage:.1f}%</b>'
},
plotOptions: {
pie: {
dataLabels: {
enabled: true,
distance: -50,
style: {
fontWeight: 'bold',
color: 'white',
textShadow: '0px 1px 2px black'
}
},
startAngle: -90, // 圆环的开始角度
endAngle: 90, // 圆环的结束角度
center: ['50%', '75%']
}
},
series: [{
type: 'pie',
name: 'UI自动化模块',
innerSize: '50%',
data: [
['商祥', 45.0], ['购物车', 26.8],
['结算', 12.8],
['搜索', 8.5],
['我京', 6.2],
{
name: '其他',
y: 0.7,
dataLabels: {
// 数据比较少,没有空间显示数据标签,所以将其关闭
enabled: false
}
}
]
}]
});
}
/**
* 和PHP一样的时间戳格式化函数
* date('Y-m-d','1350052653');//很方便的将时间戳转换成了2012-10-11
date('Y-m-d H:i:s','1350052653');//得到的结果是2012-10-12 22:37:33
* @param {string} format 格式
* @param {int} timestamp 要格式化的时间 默认为当前时间
* @return {string} 格式化的时间字符串
*/
function date(format, timestamp){
var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());
var pad = function(n, c){
if((n = n + "").length < c){
return new Array(++c - n.length).join("0") + n;
} else {
return n;
}
};
var txt_weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var txt_ordin = {1:"st", 2:"nd", 3:"rd", 21:"st", 22:"nd", 23:"rd", 31:"st"};
var txt_months = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var f = {
// Day
d: function(){return pad(f.j(), 2)},
D: function(){return f.l().substr(0,3)},
j: function(){return jsdate.getDate()},
l: function(){return txt_weekdays[f.w()]},
N: function(){return f.w() + 1},
S: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th'},
w: function(){return jsdate.getDay()},
z: function(){return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0},
// Week
W: function(){
var a = f.z(), b = 364 + f.L() - a;
var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;
if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){
return 1;
} else{
if(a <= 2 && nd >= 4 && a >= (6 - nd)){
nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");
return date("W", Math.round(nd2.getTime()/1000));
} else{
return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);
}
}
},
// Month
F: function(){return txt_months[f.n()]},
m: function(){return pad(f.n(), 2)},
M: function(){return f.F().substr(0,3)},
n: function(){return jsdate.getMonth() + 1},
t: function(){
var n;
if( (n = jsdate.getMonth() + 1) == 2 ){
return 28 + f.L();
} else{
if( n & 1 && n < 8 || !(n & 1) && n > 7 ){
return 31;
} else{
return 30;
}
}
},
// Year
L: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0},
//o not supported yet
Y: function(){return jsdate.getFullYear()},
y: function(){return (jsdate.getFullYear() + "").slice(2)},
// Time
a: function(){return jsdate.getHours() > 11 ? "pm" : "am"},
A: function(){return f.a().toUpperCase()},
B: function(){
// peter paul koch:
var off = (jsdate.getTimezoneOffset() + 60)*60;
var theSeconds = (jsdate.getHours() * 3600) + (jsdate.getMinutes() * 60) + jsdate.getSeconds() + off;
var beat = Math.floor(theSeconds/86.4);
if (beat > 1000) beat -= 1000;
if (beat < 0) beat += 1000;
if ((String(beat)).length == 1) beat = "00"+beat;
if ((String(beat)).length == 2) beat = "0"+beat;
return beat;
},
g: function(){return jsdate.getHours() % 12 || 12},
G: function(){return jsdate.getHours()},
h: function(){return pad(f.g(), 2)},
H: function(){return pad(jsdate.getHours(), 2)},
i: function(){return pad(jsdate.getMinutes(), 2)},
s: function(){return pad(jsdate.getSeconds(), 2)},
//u not supported yet
// Timezone
//e not supported yet
//I not supported yet
O: function(){
var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t;
return t;
},
P: function(){var O = f.O();return (O.substr(0, 3) + ":" + O.substr(3, 2))},
//T not supported yet
//Z not supported yet
// Full Date/Time
c: function(){return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P()},
//r not supported yet
U: function(){return Math.round(jsdate.getTime()/1000)}
};
return format.replace(/[\ ]?([a-zA-Z])/g, function(t, s){
if( t!=s ){
// escaped
ret = s;
} else if( f[s] ){
// a date function exists
ret = f[s]();
} else{
// nothing special
ret = s;
}
return ret;
});
}
////调用方法
// var time = Date.parse("你的时间字符串");
// dt = time.format("yyyy-MM-dd hh:mm:ss");
</script>
</div>
</body>
</html>