...
|
...
|
@@ -6,6 +6,8 @@ |
|
|
-moz-border-radius: 3px;
|
|
|
border-radius: 3px;
|
|
|
margin-bottom: 20px;
|
|
|
-webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.05);
|
|
|
box-shadow: 0 1px 0px rgba(0, 0, 0, 0.05);
|
|
|
}
|
|
|
|
|
|
.sm-st-icon {
|
...
|
...
|
@@ -25,6 +27,7 @@ |
|
|
}
|
|
|
|
|
|
.sm-st-info {
|
|
|
font-size: 12px;
|
|
|
padding-top: 2px;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -122,7 +125,6 @@ |
|
|
.stat .name {
|
|
|
overflow: hidden;
|
|
|
text-overflow: ellipsis;
|
|
|
margin: 5px 0;
|
|
|
}
|
|
|
|
|
|
.stat.lg .value {
|
...
|
...
|
@@ -130,9 +132,6 @@ |
|
|
line-height: 28px;
|
|
|
}
|
|
|
|
|
|
.stat-col {
|
|
|
margin:0 0 10px 0;
|
|
|
}
|
|
|
.stat.lg .name {
|
|
|
font-size: 16px;
|
|
|
}
|
...
|
...
|
@@ -156,248 +155,568 @@ |
|
|
}
|
|
|
|
|
|
#statistics .panel h5 {
|
|
|
font-size: 14px;
|
|
|
font-size: 13px;
|
|
|
}
|
|
|
</style>
|
|
|
<div class="panel panel-default panel-intro">
|
|
|
<div class="panel-heading">
|
|
|
{:build_heading(null, false)}
|
|
|
<ul class="nav nav-tabs">
|
|
|
<li class="active"><a href="#one" data-toggle="tab">{:__('Dashboard')}</a></li>
|
|
|
<li><a href="#two" data-toggle="tab">{:__('Custom')}</a></li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div class="panel-body">
|
|
|
<div id="myTabContent" class="tab-content">
|
|
|
<div class="tab-pane fade active in" id="one">
|
|
|
|
|
|
<div class="row">
|
|
|
<div class="col-sm-3 col-xs-6">
|
|
|
<div class="sm-st clearfix">
|
|
|
<span class="sm-st-icon st-red"><i class="fa fa-users"></i></span>
|
|
|
<div class="sm-st-info">
|
|
|
<span>{$totaluser}</span>
|
|
|
{:__('Total user')}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-sm-3 col-xs-6">
|
|
|
<div class="sm-st clearfix">
|
|
|
<span class="sm-st-icon st-violet"><i class="fa fa-magic"></i></span>
|
|
|
<div class="sm-st-info">
|
|
|
<span>{$totaladdon}</span>
|
|
|
{:__('Total addon')}
|
|
|
</div>
|
|
|
</style><!DOCTYPE html>
|
|
|
|
|
|
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
|
|
<script src="https://cdn.staticfile.org/jquery/2.1.4/jquery.min.js"></script>
|
|
|
<script src="https://registry.npmmirror.com/echarts/5.5.0/files/dist/echarts.min.js"></script>
|
|
|
<style>
|
|
|
body {
|
|
|
margin: 0;
|
|
|
padding: 0;
|
|
|
}
|
|
|
|
|
|
.general_console {
|
|
|
width: 100%;
|
|
|
height: 100vh;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
/*justify-content: center;*/
|
|
|
/*align-items: center;*/
|
|
|
background-color: #f2f2f2;
|
|
|
padding: 24px;
|
|
|
box-sizing: border-box;
|
|
|
}
|
|
|
|
|
|
.overview {
|
|
|
width: 100%;
|
|
|
height: 560px;
|
|
|
background-color: #fff;
|
|
|
padding: 24px;
|
|
|
box-sizing: border-box;
|
|
|
border-radius: 8px;
|
|
|
}
|
|
|
|
|
|
.overview_title {
|
|
|
font-weight: bold;
|
|
|
color: #020E1F;
|
|
|
}
|
|
|
|
|
|
.overview_main {
|
|
|
width: 100%;
|
|
|
height: 490px;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
}
|
|
|
|
|
|
.overview_main_left {
|
|
|
width: 55%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
|
|
|
#chart-container {
|
|
|
width: 100%;
|
|
|
height: 470px;
|
|
|
}
|
|
|
|
|
|
.overview_main_right {
|
|
|
width: 40%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
|
|
|
.overview_main_right_item {
|
|
|
width: 100%;
|
|
|
height: 90px;
|
|
|
padding: 12px;
|
|
|
background-color: #F7F8FA;
|
|
|
border-radius: 8px;
|
|
|
box-sizing: border-box;
|
|
|
display: flex;
|
|
|
margin-bottom: 20px;
|
|
|
}
|
|
|
|
|
|
.overview_main_right_item_left {
|
|
|
width: 60px;
|
|
|
height: 100%;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
}
|
|
|
|
|
|
.overview_main_right_item_left img {
|
|
|
width: 60px;
|
|
|
height: 60px;
|
|
|
}
|
|
|
|
|
|
.overview_main_right_item_right {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
background-color: #fff;
|
|
|
padding: 12px;
|
|
|
box-sizing: border-box;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
justify-content: space-between;
|
|
|
}
|
|
|
|
|
|
.overview_main_right_item_right_top {
|
|
|
font-weight: bold;
|
|
|
color: #020E1F;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
}
|
|
|
|
|
|
.overview_main_right_item_right_bottom {
|
|
|
font-size: 12px;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
color: #828A97;
|
|
|
}
|
|
|
|
|
|
.console_right {
|
|
|
width: 39%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
|
|
|
.user_info {
|
|
|
width: 100%;
|
|
|
height: 90px;
|
|
|
background-color: #fff;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: space-between;
|
|
|
padding: 12px;
|
|
|
box-sizing: border-box;
|
|
|
border-radius: 8px;
|
|
|
}
|
|
|
|
|
|
.user_info_avatar {
|
|
|
width: 60px;
|
|
|
height: 60px;
|
|
|
border-radius: 50%;
|
|
|
background-color: #cbcfe5;
|
|
|
display: flex;
|
|
|
line-height: 60px;
|
|
|
justify-content: center;
|
|
|
color: #ffffff;
|
|
|
}
|
|
|
|
|
|
.user_info_name {
|
|
|
padding: 10px 12px;
|
|
|
box-sizing: border-box;
|
|
|
width: 78%;
|
|
|
height: 100%;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
justify-content: space-between;
|
|
|
color: #020E1F;
|
|
|
}
|
|
|
|
|
|
.user_info_menu {
|
|
|
width: 134px;
|
|
|
height: 40px;
|
|
|
background-image: url('__CDN__/assets/img/admin_icon.png');
|
|
|
background-size: 100%;
|
|
|
line-height: 40px;
|
|
|
padding-left: 50px;
|
|
|
box-sizing: border-box;
|
|
|
font-size: 14px;
|
|
|
color: #896300;
|
|
|
font-weight: bold;
|
|
|
}
|
|
|
|
|
|
.rankings {
|
|
|
width: 100%;
|
|
|
height: calc(100% - 90px - 24px);
|
|
|
background-color: #ffffff;
|
|
|
margin-top: 24px;
|
|
|
border-radius: 8px;
|
|
|
padding: 24px;
|
|
|
box-sizing: border-box;
|
|
|
}
|
|
|
|
|
|
.rankings_title {
|
|
|
width: 100%;
|
|
|
height: 40px;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
}
|
|
|
|
|
|
.rankings_title_left {
|
|
|
color: #1D2129;
|
|
|
font-weight: 700;
|
|
|
}
|
|
|
|
|
|
.rankings_title_right {
|
|
|
width: 240px;
|
|
|
height: 32px;
|
|
|
display: flex;
|
|
|
padding: 3px;
|
|
|
box-sizing: border-box;
|
|
|
background-color: #F2F3F5;
|
|
|
border-radius: 8px;
|
|
|
}
|
|
|
|
|
|
.rankings_title_right_item {
|
|
|
width: 80px;
|
|
|
text-align: center;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
font-size: 14px;
|
|
|
cursor: pointer;
|
|
|
color: #4E5969;
|
|
|
}
|
|
|
|
|
|
.rankings_title_right_item_active {
|
|
|
width: 80px;
|
|
|
color: #165DFF;
|
|
|
background-color: #fff;
|
|
|
border-radius: 2px;
|
|
|
}
|
|
|
|
|
|
.rankings_list {
|
|
|
width: 100%;
|
|
|
height: calc(100% - 64px);
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
margin-top: 24px;
|
|
|
}
|
|
|
|
|
|
.rankings_item {
|
|
|
display: flex;
|
|
|
width: 100%;
|
|
|
height: 32px;
|
|
|
line-height: 32px;
|
|
|
font-size: 14px;
|
|
|
}
|
|
|
|
|
|
.rankings_item > div {
|
|
|
width: 33.33%;
|
|
|
text-align: center;
|
|
|
}
|
|
|
|
|
|
.rankings_item:nth-child(odd) {
|
|
|
background-color: #F7F8FA;
|
|
|
}
|
|
|
|
|
|
.console_left {
|
|
|
width: 60%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
|
|
|
.project_list {
|
|
|
width: 100%;
|
|
|
height: calc(100% - 560px - 24px);
|
|
|
background-color: #ffffff;
|
|
|
margin-top: 24px;
|
|
|
border-radius: 8px;
|
|
|
padding: 24px;
|
|
|
box-sizing: border-box;
|
|
|
}
|
|
|
|
|
|
.project_list_title {
|
|
|
width: 100%;
|
|
|
height: 32px;
|
|
|
line-height: 32px;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
font-size: 16px;
|
|
|
}
|
|
|
|
|
|
.project_list_title_left {
|
|
|
font-weight: bold;
|
|
|
}
|
|
|
|
|
|
.project_list_title_right {
|
|
|
font-size: 14px;
|
|
|
color: #1F5BFF;
|
|
|
font-weight: bold;
|
|
|
}
|
|
|
|
|
|
.project_list_main {
|
|
|
width: 100%;
|
|
|
/*height: calc(100% - 44px);*/
|
|
|
overflow: auto;
|
|
|
margin-top: 12px;
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
align-items: flex-start;
|
|
|
justify-content: flex-start;
|
|
|
}
|
|
|
|
|
|
.project_list_main_item {
|
|
|
width: 23.875%;
|
|
|
height: 94px;
|
|
|
background-color: #ffffff;
|
|
|
margin-right: 1.5%;
|
|
|
margin-bottom: 24px;
|
|
|
padding: 10px 12px;
|
|
|
box-sizing: border-box;
|
|
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
|
|
border-radius: 8px;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
justify-content: space-between;
|
|
|
border: 1px solid #EBEBEB;
|
|
|
}
|
|
|
|
|
|
.project_list_main_item:nth-child( 4n ) {
|
|
|
margin-right: 0 !important;
|
|
|
}
|
|
|
|
|
|
.project_list_main_item_top {
|
|
|
width: 100%;
|
|
|
}
|
|
|
|
|
|
.project_list_main_item_top > div:first-child {
|
|
|
font-weight: 600;
|
|
|
color: #020E1F;
|
|
|
font-size: 16px;
|
|
|
}
|
|
|
|
|
|
.project_list_main_item_top > div:last-child {
|
|
|
color: #828A97;
|
|
|
font-size: 12px;
|
|
|
}
|
|
|
|
|
|
.project_list_main_item_bottom {
|
|
|
width: 100%;
|
|
|
height: 32px;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
font-size: 14px;
|
|
|
color: #031229;
|
|
|
}
|
|
|
|
|
|
.project_list_main_item_bottom_right {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
}
|
|
|
|
|
|
.project_list_main_item_bottom_right > img {
|
|
|
width: 16px;
|
|
|
height: 16px;
|
|
|
margin-right: 4px;
|
|
|
}
|
|
|
</style>
|
|
|
<div class="general_console">
|
|
|
<div class="console_left">
|
|
|
<div class="overview">
|
|
|
<div class="overview_title">项目总览</div>
|
|
|
<div class="overview_main">
|
|
|
<div class="overview_main_left">
|
|
|
<div id="chart-container"></div>
|
|
|
</div>
|
|
|
<div class="overview_main_right">
|
|
|
{volist name="project_overview" id="vo" }
|
|
|
<div class="overview_main_right_item">
|
|
|
<div class="overview_main_right_item_left">
|
|
|
<img src="{$vo.image}" alt="">
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-sm-3 col-xs-6">
|
|
|
<div class="sm-st clearfix">
|
|
|
<span class="sm-st-icon st-blue"><i class="fa fa-leaf"></i></span>
|
|
|
<div class="sm-st-info">
|
|
|
<span>{$attachmentnums}</span>
|
|
|
{:__('Total attachment')}
|
|
|
<div class="overview_main_right_item_right">
|
|
|
<div class="overview_main_right_item_right_top">
|
|
|
<div>{$vo.project_name}</div>
|
|
|
<div>{$vo.all_working_hours}小时</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-sm-3 col-xs-6">
|
|
|
<div class="sm-st clearfix">
|
|
|
<span class="sm-st-icon st-green"><i class="fa fa-user"></i></span>
|
|
|
<div class="sm-st-info">
|
|
|
<span>{$totaladmin}</span>
|
|
|
{:__('Total admin')}
|
|
|
<div class="overview_main_right_item_right_bottom">
|
|
|
<div>负责人: {$vo.username} 开始时间:{$vo.starttime|date="Y-m-d",###}</div>
|
|
|
<div style="color: #1F5BFF;font-weight: 600;cursor: pointer;" onclick="projectinfo({$vo.id})">详情</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
{/volist}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="project_list">
|
|
|
<div class="project_list_title">
|
|
|
<div class="project_list_title_left">快捷入口</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="row">
|
|
|
<div class="col-lg-8">
|
|
|
<div id="echart" class="btn-refresh" style="height:300px;width:100%;"></div>
|
|
|
<div class="project_list_main">
|
|
|
{volist name="quick_entrance" id="vo" }
|
|
|
<div class="project_list_main_item">
|
|
|
<div class="project_list_main_item_top">
|
|
|
<div>{$vo.project_name}</div>
|
|
|
<div>{$vo.starttime|date="Y-m-d",###}</div>
|
|
|
</div>
|
|
|
<div class="col-lg-4">
|
|
|
<div class="card sameheight-item stats">
|
|
|
<div class="card-block">
|
|
|
<div class="row row-sm stats-container">
|
|
|
<div class="col-xs-6 stat-col">
|
|
|
<div class="stat-icon"><i class="fa fa-rocket"></i></div>
|
|
|
<div class="stat">
|
|
|
<div class="value"> {$todayusersignup}</div>
|
|
|
<div class="name"> {:__('Today user signup')}</div>
|
|
|
</div>
|
|
|
<div class="progress">
|
|
|
<div class="progress-bar progress-bar-success" style="width: 20%"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-xs-6 stat-col">
|
|
|
<div class="stat-icon"><i class="fa fa-vcard"></i></div>
|
|
|
<div class="stat">
|
|
|
<div class="value"> {$todayuserlogin}</div>
|
|
|
<div class="name"> {:__('Today user login')}</div>
|
|
|
</div>
|
|
|
<div class="progress">
|
|
|
<div class="progress-bar progress-bar-success" style="width: 20%"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-xs-6 stat-col">
|
|
|
<div class="stat-icon"><i class="fa fa-calendar"></i></div>
|
|
|
<div class="stat">
|
|
|
<div class="value"> {$threednu}</div>
|
|
|
<div class="name"> {:__('Three dnu')}</div>
|
|
|
</div>
|
|
|
<div class="progress">
|
|
|
<div class="progress-bar progress-bar-success" style="width: 20%"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-xs-6 stat-col">
|
|
|
<div class="stat-icon"><i class="fa fa-calendar-plus-o"></i></div>
|
|
|
<div class="stat">
|
|
|
<div class="value"> {$sevendnu}</div>
|
|
|
<div class="name"> {:__('Seven dnu')}</div>
|
|
|
</div>
|
|
|
<div class="progress">
|
|
|
<div class="progress-bar progress-bar-success" style="width: 20%"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-xs-6 stat-col">
|
|
|
<div class="stat-icon"><i class="fa fa-user-circle"></i></div>
|
|
|
<div class="stat">
|
|
|
<div class="value"> {$sevendau}</div>
|
|
|
<div class="name"> {:__('Seven dau')}</div>
|
|
|
</div>
|
|
|
<div class="progress">
|
|
|
<div class="progress-bar progress-bar-success" style="width: 20%"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-xs-6 stat-col">
|
|
|
<div class="stat-icon"><i class="fa fa-user-circle-o"></i></div>
|
|
|
<div class="stat">
|
|
|
<div class="value"> {$thirtydau}</div>
|
|
|
<div class="name"> {:__('Thirty dau')}</div>
|
|
|
</div>
|
|
|
<div class="progress">
|
|
|
<div class="progress-bar progress-bar-success" style="width: 20%"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="project_list_main_item_bottom">
|
|
|
<div>负责人:{$vo.username}</div>
|
|
|
<div class="project_list_main_item_bottom_right">
|
|
|
<img src="__CDN__/assets/img/IconGrid.png" alt="">
|
|
|
{$vo.all_working_hours}小时
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
{/volist}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="row" style="margin-top:15px;" id="statistics">
|
|
|
|
|
|
<div class="col-lg-12">
|
|
|
</div>
|
|
|
<div class="col-xs-6 col-md-3">
|
|
|
<div class="panel bg-blue-gradient no-border">
|
|
|
<div class="panel-body">
|
|
|
<div class="panel-title">
|
|
|
<span class="label label-primary pull-right">{:__('Real time')}</span>
|
|
|
<h5>{:__('Working addon count')}</h5>
|
|
|
</div>
|
|
|
<div class="panel-content">
|
|
|
<div class="row">
|
|
|
<div class="col-md-12">
|
|
|
<h1 class="no-margins">{$totalworkingaddon}</h1>
|
|
|
<div class="font-bold"><i class="fa fa-magic"></i>
|
|
|
<small>{:__('Working addon count tips')}</small>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-xs-6 col-md-3">
|
|
|
<div class="panel bg-teal-gradient no-border">
|
|
|
<div class="panel-body">
|
|
|
<div class="ibox-title">
|
|
|
<span class="label label-primary pull-right">{:__('Real time')}</span>
|
|
|
<h5>{:__('Database count')}</h5>
|
|
|
</div>
|
|
|
<div class="ibox-content">
|
|
|
<div class="row">
|
|
|
<div class="col-md-6">
|
|
|
<h1 class="no-margins">{$dbtablenums}</h1>
|
|
|
<div class="font-bold"><i class="fa fa-database"></i>
|
|
|
<small>{:__('Database table nums')}</small>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-md-6">
|
|
|
<h1 class="no-margins">{$dbsize|format_bytes=###,'',0}</h1>
|
|
|
<div class="font-bold"><i class="fa fa-filter"></i>
|
|
|
<small>{:__('Database size')}</small>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="console_right">
|
|
|
<div class="user_info">
|
|
|
<div class="user_info_avatar">
|
|
|
{$admin.nickname|htmlentities}
|
|
|
</div>
|
|
|
<div class="user_info_name">
|
|
|
<div class="user_info_name">
|
|
|
<div style="font-weight: bold;">{$admin.nickname|htmlentities}</div>
|
|
|
<div style="font-size: 14px">最近登录:{$admin.logintime|date="Y-m-d",###}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="col-xs-6 col-md-3">
|
|
|
<div class="panel bg-purple-gradient no-border">
|
|
|
<div class="panel-body">
|
|
|
<div class="ibox-title">
|
|
|
<span class="label label-primary pull-right">{:__('Real time')}</span>
|
|
|
<h5>{:__('Attachment count')}</h5>
|
|
|
</div>
|
|
|
<div class="ibox-content">
|
|
|
|
|
|
<div class="row">
|
|
|
<div class="col-md-6">
|
|
|
<h1 class="no-margins">{$attachmentnums}</h1>
|
|
|
<div class="font-bold"><i class="fa fa-files-o"></i>
|
|
|
<small>{:__('Attachment nums')}</small>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-md-6">
|
|
|
<h1 class="no-margins">{$attachmentsize|format_bytes=###,'',0}</h1>
|
|
|
<div class="font-bold"><i class="fa fa-filter"></i>
|
|
|
<small>{:__('Attachment size')}</small>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-xs-6 col-md-3">
|
|
|
<div class="panel bg-green-gradient no-border">
|
|
|
<div class="panel-body">
|
|
|
<div class="ibox-title">
|
|
|
<span class="label label-primary pull-right">{:__('Real time')}</span>
|
|
|
<h5>{:__('Picture count')}</h5>
|
|
|
</div>
|
|
|
<div class="ibox-content">
|
|
|
|
|
|
<div class="row">
|
|
|
<div class="col-md-6">
|
|
|
<h1 class="no-margins">{$picturenums}</h1>
|
|
|
<div class="font-bold"><i class="fa fa-picture-o"></i>
|
|
|
<small>{:__('Picture nums')}</small>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-md-6">
|
|
|
<h1 class="no-margins">{$picturesize|format_bytes=###,'',0}</h1>
|
|
|
<div class="font-bold"><i class="fa fa-filter"></i>
|
|
|
<small>{:__('Picture size')}</small>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="user_info_menu">
|
|
|
{if $admin.id=="1"}
|
|
|
超级管理员
|
|
|
{else/}
|
|
|
管理员
|
|
|
{/if}
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="rankings">
|
|
|
<div class="rankings_title">
|
|
|
<div class="rankings_title_left">工时统计排行</div>
|
|
|
<div class="rankings_title_right">
|
|
|
<div class="rankings_title_right_item rankings_title_right_item_active" id="project_rank" name="project_rank">项目排行</div>
|
|
|
<div class="rankings_title_right_item " id="department_rank" name="department_rank">部门排行</div>
|
|
|
<div class="rankings_title_right_item " id="employee_rank" name="employee_rank">员工排行</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="tab-pane fade" id="two">
|
|
|
<div class="row">
|
|
|
<div class="col-xs-12">
|
|
|
{:__('Custom zone')}
|
|
|
</div>
|
|
|
|
|
|
<div class="rankings_list" id="project_rank_list" name="project_rank_list">
|
|
|
{volist name="$work_hour_statistics.project_statistics" id="vo" }
|
|
|
<div class="rankings_item">
|
|
|
<div>{$vo.name}</div>
|
|
|
<div>创建时间:{$vo.starttime|date="Y-m-d",###}</div>
|
|
|
<div>{$vo.all_working_hours}小时</div>
|
|
|
</div>
|
|
|
{/volist}
|
|
|
</div>
|
|
|
<div class="rankings_list" style="display: none" id="department_rank_list" name="department_rank_list">
|
|
|
{volist name="$work_hour_statistics.department_statistics" id="vo" }
|
|
|
<div class="rankings_item">
|
|
|
<div>{$vo.name}</div>
|
|
|
<div>创建时间:{$vo.starttime|date="Y-m-d",###}</div>
|
|
|
<div>{$vo.all_working_hours}小时</div>
|
|
|
</div>
|
|
|
{/volist}
|
|
|
</div>
|
|
|
<div class="rankings_list" style="display: none" id="employee_rank_list" name="employee_rank_list">
|
|
|
{volist name="$work_hour_statistics.admin_statistics" id="vo" }
|
|
|
<div class="rankings_item">
|
|
|
<div>{$vo.name}</div>
|
|
|
<div>创建时间:{$vo.starttime|date="Y-m-d",###}</div>
|
|
|
<div>{$vo.all_working_hours}小时</div>
|
|
|
</div>
|
|
|
{/volist}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
<script>
|
|
|
function projectinfo(id){
|
|
|
layer.open({
|
|
|
type: 2,
|
|
|
title: '项目详情',
|
|
|
maxmin: true,
|
|
|
shadeClose: true, //点击遮罩关闭层
|
|
|
area : ['800px' , '520px'],
|
|
|
content: 'dashboard/projectinfo?id='+id,
|
|
|
});
|
|
|
}
|
|
|
</script>
|
|
|
<script>
|
|
|
$('#project_rank').click(function() {
|
|
|
$('#project_rank_list').show();
|
|
|
$('#department_rank_list').hide();
|
|
|
$('#employee_rank_list').hide();
|
|
|
});
|
|
|
$('#department_rank').click(function() {
|
|
|
$('#project_rank_list').hide();
|
|
|
$('#department_rank_list').show();
|
|
|
$('#employee_rank_list').hide();
|
|
|
});
|
|
|
|
|
|
$('#employee_rank').click(function() {
|
|
|
$('#project_rank_list').hide();
|
|
|
$('#department_rank_list').hide();
|
|
|
$('#employee_rank_list').show();
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
<script>
|
|
|
const dom = document.getElementById('chart-container');
|
|
|
const myChart = echarts.init(dom, null, {
|
|
|
renderer: 'canvas',
|
|
|
useDirtyRect: false
|
|
|
});
|
|
|
const app = {};
|
|
|
|
|
|
let option;
|
|
|
|
|
|
option = {
|
|
|
grid: {
|
|
|
left: "0%",
|
|
|
right: "0%",
|
|
|
top: "16%",
|
|
|
bottom: "10%",
|
|
|
containLabel: true,
|
|
|
},
|
|
|
series: [
|
|
|
{
|
|
|
name: 'Nightingale Chart',
|
|
|
type: 'pie',
|
|
|
radius: [50, 250],
|
|
|
center: ['50%', '55%'],
|
|
|
roseType: 'area',
|
|
|
itemStyle: {
|
|
|
borderRadius: 8
|
|
|
},
|
|
|
data: <?php echo json_encode($project_overview_chart); ?>
|
|
|
}
|
|
|
]
|
|
|
};
|
|
|
|
|
|
|
|
|
if (option && typeof option === 'object') {
|
|
|
myChart.setOption(option);
|
|
|
}
|
|
|
|
|
|
window.addEventListener('resize', myChart.resize);
|
|
|
|
|
|
|
|
|
const project_rank = document.getElementById('project_rank');
|
|
|
const department_rank = document.getElementById('department_rank');
|
|
|
const employee_rank = document.getElementById('employee_rank');
|
|
|
|
|
|
|
|
|
project_rank.addEventListener('click', function() {
|
|
|
project_rank.classList.add('rankings_title_right_item_active');
|
|
|
department_rank.classList.remove('rankings_title_right_item_active');
|
|
|
employee_rank.classList.remove('rankings_title_right_item_active');
|
|
|
// 事件处理代码
|
|
|
});
|
|
|
|
|
|
|
|
|
department_rank.addEventListener('click', function() {
|
|
|
project_rank.classList.remove('rankings_title_right_item_active');
|
|
|
department_rank.classList.add('rankings_title_right_item_active');
|
|
|
employee_rank.classList.remove('rankings_title_right_item_active');
|
|
|
// 事件处理代码
|
|
|
});
|
|
|
|
|
|
|
|
|
employee_rank.addEventListener('click', function() {
|
|
|
employee_rank.classList.add('rankings_title_right_item_active');
|
|
|
project_rank.classList.remove('rankings_title_right_item_active');
|
|
|
department_rank.classList.remove('rankings_title_right_item_active');
|
|
|
// 事件处理代码
|
|
|
});
|
|
|
</script> |
|
|
\ No newline at end of file |
...
|
...
|
|