效果图
导入js
<script src="js/jquery.min.js"></script>
<script src="js/echarts.min.js"></script>
<script src="js/index.js"></script>
<script src="js/china.js"></script>
<script src="js/mychart-map.js"></script>
html
<body>
<div class="viewport">
<div class="column">
<!--概览-->
<div class="overview panel">
<div class="inner">
<div class="item">
<h4>2,190</h4>
<span>
<i class="icon-dot" style="color: #006cff"></i>
设备总数
</span>
</div>
<div class="item">
<h4>190</h4>
<span>
<i class="icon-dot" style="color: #6acca3"></i>
季度新增
</span>
</div>
<div class="item">
<h4>3,001</h4>
<span>
<i class="icon-dot" style="color: #6acca3"></i>
运营设备
</span>
</div>
<div class="item">
<h4>108</h4>
<span>
<i class="icon-dot" style="color: #ed3f35"></i>
异常设备
</span>
</div>
</div>
</div>
<!--监控-->
<div class="monitor panel">
<div class="inner">
<div class="tabs">
<a href="javascript:;" data-index="0" class="active">故障设备监控</a>
<a href="javascript:;" data-index="1">异常设备监控</a>
</div>
<div class="content" style="display: block;">
<div class="head">
<span class="col">故障时间</span>
<span class="col">设备地址</span>
<span class="col">异常代码</span>
</div>
<div class="marquee-view">
<div class="marquee">
<div class="row">
<span class="col">20180701</span>
<span class="col">11北京市昌平西路金燕龙写字楼</span>
<span class="col">1000001</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190601</span>
<span class="col">北京市昌平区城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190704</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000003</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20180701</span>
<span class="col">北京市昌平区建路金燕龙写字楼</span>
<span class="col">1000004</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190701</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000005</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190701</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000006</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190701</span>
<span class="col">北京市昌平区建西路金燕龙写字楼</span>
<span class="col">1000007</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190701</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000008</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190701</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000009</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190710</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000010</span>
<span class="icon-dot"></span>
</div>
</div>
</div>
</div>
<div class="content">
<div class="head">
<span class="col">异常时间</span>
<span class="col">设备地址</span>
<span class="col">异常代码</span>
</div>
<div class="marquee-view">
<div class="marquee">
<div class="row">
<span class="col">20190701</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000001</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190701</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190703</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190704</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190705</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190706</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190707</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190708</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190709</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
<div class="row">
<span class="col">20190710</span>
<span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
<span class="col">1000002</span>
<span class="icon-dot"></span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 点位 -->
<div class="point panel">
<div class="inner">
<h3>点位分布统计</h3>
<div class="chart">
<div class="pie"></div>
<div class="data">
<div class="item">
<h4>320,11</h4>
<span>
<i class="icon-dot" style="color: #ed3f35"></i>
点位总数
</span>
</div>
<div class="item">
<h4>418</h4>
<span>
<i class="icon-dot" style="color: #eacf19"></i>
本月新增
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="column">
<!-- 地图 -->
<div class="map">
<h3>
<span class="icon-cube"></span>
设备数据统计
</h3>
<div class="chart">
<div class="geo"></div>
</div>
</div>
<!-- 用户 -->
<div class="users panel">
<div class="inner">
<h3>全国用户总量统计</h3>
<div class="chart">
<div class="bar"></div>
<div class="data">
<div class="item">
<h4>120,899</h4>
<span>
<i class="icon-dot" style="color: #ed3f35"></i>
用户总量
</span>
</div>
<div class="item">
<h4>248</h4>
<span>
<i class="icon-dot" style="color: #eacf19"></i>
本月新增
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="column">
<!-- 订单 -->
<div class="order panel">
<div class="inner">
<!-- 筛选 -->
<div class="filter">
<a href="javascript:;" data-key="day365" class="active">365天</a>
<a href="javascript:;" data-key="day90">90天</a>
<a href="javascript:;" data-key="day30">30天</a>
<a href="javascript:;" data-key="day1">24小时</a>
</div>
<!-- 数据 -->
<div class="data">
<div class="item">
<h4>20,301,987</h4>
<span>
<i class="icon-dot" style="color: #ed3f35;"></i>
订单量
</span>
</div>
<div class="item">
<h4>99834</h4>
<span>
<i class="icon-dot" style="color: #eacf19;"></i>
销售额(万元)
</span>
</div>
</div>
</div>
</div>
<!-- 销售额 -->
<div class="sales panel">
<div class="inner">
<div class="caption">
<h3>销售额统计</h3>
<a href="javascript:;" class="active" data-type="year">年</a>
<a href="javascript:;" data-type="quarter">季</a>
<a href="javascript:;" data-type="month">月</a>
<a href="javascript:;" data-type="week">周</a>
</div>
<div class="chart">
<div class="label">单位:万</div>
<div class="line"></div>
</div>
</div>
</div>
<!-- 渠道 季度 -->
<div class="wrap">
<div class="channel panel">
<div class="inner">
<h3>渠道分布</h3>
<div class="data">
<div class="item">
<h4>39 <small>%</small></h4>
<span>
<i class="icon-plane"></i>
机场
</span>
</div>
<div class="item">
<h4>28 <small>%</small></h4>
<span>
<i class="icon-bag"></i>
商场
</span>
</div>
</div>
<div class="data">
<div class="item">
<h4>20 <small>%</small></h4>
<span>
<i class="icon-train"></i>
地铁
</span>
</div>
<div class="item">
<h4>13 <small>%</small></h4>
<span>
<i class="icon-bus"></i>
火车站
</span>
</div>
</div>
</div>
</div>
<div class="quarter panel">
<div class="inner">
<h3>一季度销售进度</h3>
<div class="chart">
<div class="box">
<div class="gauge"></div>
<div class="label">75<small> %</small></div>
</div>
<div class="data">
<div class="item">
<h4>1,321</h4>
<span>
<i class="icon-dot" style="color: #6acca3"></i>
销售额(万元)
</span>
</div>
<div class="item">
<h4>150%</h4>
<span>
<i class="icon-dot" style="color: #ed3f35"></i>
同比增长
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 排行榜 -->
<div class="top panel">
<div class="inner">
<div class="all">
<h3>全国热榜</h3>
<ul>
<li>
<i class="icon-cup1" style="color: #d93f36;"></i>
可爱多
</li>
<li>
<i class="icon-cup2" style="color: #68d8fe;"></i>
娃哈啥
</li>
<li>
<i class="icon-cup3" style="color: #4c9bfd;"></i>
喜之郎
</li>
</ul>
</div>
<div class="province">
<h3>各省热销 <i class="date">// 近30日 //</i></h3>
<div class="data">
<ul class="sup">
<li>
<span>北京</span>
<span>25,179 <s class="icon-up"></s></span>
</li>
<li>
<span>河北</span>
<span>23,252 <s class="icon-down"></s></span>
</li>
<li>
<span>上海</span>
<span>20,760 <s class="icon-up"></s></span>
</li>
<li>
<span>江苏</span>
<span>23,252 <s class="icon-down"></s></span>
</li>
<li>
<span>山东</span>
<span>20,760 <s class="icon-up"></s></span>
</li>
</ul>
<ul class="sub">
<!-- <li><span></span><span> <s class="icon-up"></s></span></li> -->
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
css
/* 基础布局 */
body{
font-family: Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
font-size: 0.5rem;
line-height: 1.15;
background: url(../images/bg.jpg) no-repeat 0 0 / cover;
}
h4,h3,ul{
margin: 0;
padding: 0;
font-weight: normal;
}
ul{
list-style: none;
}
a{
text-decoration: none;
}
.viewport{
max-width: 1920px;
min-width: 1024px;
margin: 0 auto;
min-height: 780px;
padding: 3.667rem 0.833rem 0;
background: url(../images/logo.png) no-repeat 0 0 / contain;
display: flex;
}
.column{
flex: 3;
position: relative;
}
.column:nth-child(2){
flex: 4;
margin: 1.333rem 0.833rem 0;
}
/* 面板样式 */
.panel{
box-sizing: border-box;
border: 2rem solid transparent;
border-width: 2.125rem 1.583rem 0.833rem 5.5rem;
border-image: url(../images/border.png) 51 38 21 132;
margin-bottom: 0.833rem;
position: relative;
}
.panel .inner{
padding: 1rem 1.5rem;
position: absolute;
top: -2.125rem;
right: -1.583rem;
bottom: -0.833rem;
left: -5.5rem;
}
.panel h3{
font-size: 0.833rem;
color: #fff;
}
/* 概览区域 */
.overview{
height: 4.583rem;
}
.overview .inner{
display: flex;
justify-content: space-between;
}
.overview h4{
font-size: 1.167rem;
padding-left: 0.2rem;
color: #fff;
margin-bottom: 0.333rem
}
.overview span{
font-size: 0.667rem;
color: #4c9bfd;
}
/* 监控区域 */
.monitor{
height: 20rem;
}
.monitor .inner{
padding: 1rem 0;
display: flex;
flex-direction: column;
}
.monitor .tabs{
padding: 0 1.5rem;
margin-bottom: 0.75rem;
display: flex;
}
.monitor .tabs a{
color:#1950c4;
font-size: 0.75rem;
padding: 0 1.125rem;
}
.monitor .tabs a:first-child{
padding-left: 0;
border-right: 0.083rem solid #00f2f1;
}
.monitor .tabs a.active{
color: #fff;
}
.monitor .content{
flex: 1;
position: relative;
display: none;
}
.monitor .head{
display: flex;
justify-content: space-between;
line-height: 1.05;
background-color: rgba(255, 255, 255, 0.1);
padding: 0.5rem 1.5rem;
color: #68d8fe;
font-size: 0.583rem;
}
.monitor .row{
display: flex;
justify-content: space-between;
line-height: 1.05;
font-size: 0.5rem;
color: #61a8ff;
padding: 0.5rem 1.5rem;
}
.monitor .row .icon-dot{
position: absolute;
left: 0.64rem;
opacity: 0;
}
.monitor .row:hover {
background-color: rgba(255, 255, 255, 0.1);
color: #68d8fe;
}
.monitor .row:hover .icon-dot{
opacity: 1;
}
.monitor .col:first-child{
width: 3.2rem;
}
.monitor .col:nth-child(2){
width: 8.4rem;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.monitor .col:nth-child(3){
width: 3.2rem;
}
/* 动画 */
.monitor .marquee-view{
position: absolute;
width: 100%;
top: 1.6rem;
bottom: 0;
overflow: hidden;
}
.monitor .marquee{
animation: scroll-top 15s linear infinite;
}
.monitor .marquee:hover{
animation-play-state: paused;
}
@keyframes scroll-top {
0%{}
100%{
transform: translateY(-50%);
}
}
/* 点位 */
.point {
height: 14.167rem;
}
.point .chart {
display: flex;
margin-top: 1rem;
justify-content: space-between;
}
.point .pie {
width: 13rem;
height: 10rem;
margin-left: -0.4rem;
}
.point .data {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 7rem;
padding: 1.5rem 1.25rem;
box-sizing: border-box;
background-image: url(../images/rect.png);
background-size: cover;
}
.point h4 {
margin-bottom: 0.5rem;
font-size: 1.167rem;
color: #fff;
}
.point span {
display: block;
color: #4c9bfd;
font-size: 0.667rem;
}
/* 地图 */
.map {
height: 24.1rem;
margin-bottom: 0.833rem;
display: flex;
flex-direction: column;
}
.map h3 {
line-height: 1;
padding: 0.667rem 0;
margin: 0;
font-size: 0.833rem;
color: #fff;
}
.map .icon-cube {
color: #68d8fe;
}
.map .chart {
flex: 1;
background-color: rgba(255, 255, 255, 0.05);
}
.map .geo {
width: 100%;
height: 100%;
}
/* 用户模块 */
.users {
height: 14.167rem;
display: flex;
}
.users .chart {
display: flex;
margin-top: 1rem;
}
.users .bar {
width: 24.5rem;
height: 10rem;
}
.users .data {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 7rem;
padding: 1.5rem 1.25rem;
box-sizing: border-box;
background-image: url(../images/rect.png);
background-size: cover;
}
.users h4 {
margin-bottom: 0.5rem;
font-size: 1.167rem;
color: #fff;
}
.users span {
display: block;
color: #4c9bfd;
font-size: 0.667rem;
}
/* 订单 */
.order {
height: 6.167rem;
}
.order .filter {
display: flex;
}
.order .filter a {
display: block;
height: 0.75rem;
line-height: 1;
padding: 0 0.75rem;
color: #1950c4;
font-size: 0.75rem;
border-right: 0.083rem solid #00f2f1;
}
.order .filter a:first-child {
padding-left: 0;
}
.order .filter a:last-child {
border-right: none;
}
.order .filter a.active {
color: #fff;
font-size: 0.833rem;
}
.order .data {
display: flex;
margin-top: 0.833rem;
}
.order .item {
width: 50%;
}
.order h4 {
font-size: 1.167rem;
color: #fff;
margin-bottom: 0.417rem;
}
.order span {
display: block;
color: #4c9bfd;
font-size: 0.667rem;
}
/* 销售区域 */
.sales {
height: 10.333rem;
}
.sales .caption {
display: flex;
line-height: 1;
}
.sales h3 {
height: 0.75rem;
padding-right: 0.75rem;
border-right: 0.083rem solid #00f2f1;
}
.sales a {
padding: 0.167rem;
font-size: 0.667rem;
margin: -0.125rem 0 0 0.875rem;
border-radius: 0.125rem;
color: #0bace6;
}
.sales a.active {
background-color: #4c9bfd;
color: #fff;
}
.sales .inner {
display: flex;
flex-direction: column;
}
.sales .chart {
flex: 1;
padding-top: 0.6rem;
position: relative;
}
.sales .label {
position: absolute;
left: 1.75rem;
top: 0.75rem;
color: #4996f5;
font-size: 0.583rem;
}
.sales .line {
width: 100%;
height: 100%;
}
/* 渠道区块 */
.wrap {
display: flex;
}
.channel,
.quarter {
flex: 1;
height: 9.667rem;
}
.channel {
margin-right: 0.833rem;
}
.channel .data {
overflow: hidden;
}
.channel .item {
margin-top: 0.85rem;
}
.channel .item:first-child {
float: left;
}
.channel .item:last-child {
float: right;
}
.channel h4 {
color: #fff;
font-size: 1.333rem;
margin-bottom: 0.2rem;
}
.channel small {
font-size: 50%;
}
.channel span {
display: block;
color: #4c9bfd;
font-size: 0.583rem;
}
/* 季度区块 */
.quarter .inner {
display: flex;
flex-direction: column;
margin: 0 -0.25rem;
}
.quarter .chart {
flex: 1;
padding-top: 0.75rem;
}
.quarter .box {
position: relative;
}
.quarter .label {
transform: translate(-50%, -30%);
color: #fff;
font-size: 1.25rem;
position: absolute;
left: 50%;
top: 50%;
}
.quarter .label small {
font-size: 50%;
}
.quarter .gauge {
height: 3.5rem;
}
.quarter .data {
display: flex;
justify-content: space-between;
}
.quarter .item {
width: 50%;
}
.quarter h4 {
color: #fff;
font-size: 1rem;
margin-bottom: 0.4rem;
}
.quarter span {
display: block;
width: 100%;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
color: #4c9bfd;
font-size: 0.583rem;
}
/* 排行榜 */
.top {
height: 11.8rem;
}
.top .inner {
display: flex;
}
.top .all {
display: flex;
flex-direction: column;
width: 7rem;
color: #4c9bfd;
font-size: 0.6rem;
vertical-align: middle;
}
.top .all ul {
padding-left: 0.5rem;
margin-top: 0.5rem;
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-around;
}
.top .all li {
overflow: hidden;
}
.top .all [class^="icon-"] {
font-size: 1.5rem;
vertical-align: middle;
margin-right: 0.5rem;
}
.top .province {
flex: 1;
display: flex;
flex-direction: column;
color: #fff;
}
.top .province i {
padding: 0 0.5rem;
margin-top: 0.208rem;
float: right;
font-style: normal;
font-size: 0.583rem;
color: #0bace6;
}
.top .province s {
display: inline-block;
transform: scale(0.8);
text-decoration: none;
}
.top .province .icon-up {
color: #dc3c33;
}
.top .province .icon-down {
color: #36be90;
}
.top .province .data {
flex: 1;
display: flex;
margin-top: 0.6rem;
}
.top .province ul {
flex: 1;
line-height: 1;
margin-bottom: 0.25rem;
}
.top .province ul li {
display: flex;
justify-content: space-between;
}
.top .province ul span {
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.top .province ul.sup {
font-size: 0.583rem;
}
.top .province ul.sup li {
color: #4995f4;
padding: 0.5rem;
}
.top .province ul.sup li.active {
color: #a3c6f2;
background-color: rgba(10, 67, 188, 0.2);
}
.top .province ul.sub {
display: flex;
flex-direction: column;
justify-content: space-around;
font-size: 0.5rem;
background-color: rgba(10, 67, 188, 0.2);
}
.top .province ul.sub li {
color: #52ffff;
padding: 0.417rem 0.6rem;
}
.clock {
position: absolute;
top: -1.5rem;
right: 1.667rem;
font-size: 0.833rem;
color: #0bace6;
}
.clock i {
margin-right: 5px;
font-size: 0.833rem;
}
@media screen and (max-width: 1600px) {
.top span {
transform: scale(0.9);
}
.top .province ul.sup li {
padding: 0.4rem 0.5rem;
}
.top .province ul.sub li {
padding: 0.23rem 0.5rem;
}
.quarter span {
transform: scale(0.9);
}
}
// 实现rem适配
(function () {
var setFont = function () {
var html = document.documentElement
var width = html.clientWidth
if (width < 1024) width = 1024
if (width > 1920) width = 1920
var fontSize = width / 80 + 'px'
html.style.fontSize = fontSize
}
setFont()
window.onresize = function () {
setFont()
}
})();
// 实现监控滚动
(function () {
// 切换
$('.monitor').on('click', '.tabs a', function () {
$(this).addClass('active').siblings().removeClass('active')
$('.monitor .content').eq(this.dataset.index).show().siblings('.content').hide()
})
// 动画
$('.marquee').each(function () {
var $cloneList = $(this).children().clone()
$(this).append($cloneList)
})
})();
// 实现点位-饼状图
(function () {
var option = {
// 控制提示
tooltip: {
// 非轴图形,使用item的意思是放到数据对应图形上触发提示
trigger: 'item',
// 格式化提示内容:
// a 代表图表名称 b 代表数据名称 c 代表数据 d代表 当前数据/总数据的比例
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
// 控制图表
series: [
{
// 图表名称
name: '点位统计',
// 图表类型
type: 'pie',
// 南丁格尔玫瑰图 有两个圆 内圆半径10% 外圆半径70%
// 百分比基于 图表DOM容器的半径
radius: ['10%', '70%'],
// 图表中心位置 left 50% top 50% 距离图表DOM容器
center: ['50%', '50%'],
// 半径模式,另外一种是 area 面积模式
roseType: 'radius',
// 数据集 value 数据的值 name 数据的名称
data: [
{ value: 20, name: '云南' },
{ value: 26, name: '北京' },
{ value: 24, name: '山东' },
{ value: 25, name: '河北' },
{ value: 20, name: '江苏' },
{ value: 25, name: '浙江' },
{ value: 30, name: '四川' },
{ value: 42, name: '湖北' }
],
// 文字调整
label: {
fontSize: 10
},
// 引导线调整
labelLine: {
// 连接扇形图线长
length: 8,
// 连接文字线长
length2: 10
}
}
],
// 每块图标颜色
color: ['#006cff', '#60cda0', '#ed8884', '#ff9f7f', '#0096ff', '#9fe6b8', '#32c5e9', '#1d9dff']
};
var myChart = echarts.init($('.pie')[0])
myChart.setOption(option)
})();
// 用户统计-柱状图
(function () {
var item = {
name: '',
value: 1200,
// 柱子颜色
itemStyle: {
color: '#254065'
},
// 鼠标经过柱子颜色
emphasis: {
itemStyle: {
color: '#254065'
}
},
// 工具提示隐藏
tooltip: {
extraCssText: 'opacity:0'
}
}
var option = {
// 工具提示
tooltip: {
// 触发类型 经过轴触发axis 经过轴触发item
trigger: 'item',
// 轴触发提示才有效
axisPointer: {
// 默认为直线,可选为:'line' 线效果 | 'shadow' 阴影效果
type: 'shadow'
}
},
// 图表边界控制
grid: {
// 距离 上右下左 的距离
top: '3%',
right: '3%',
bottom: '3%',
left: '0%',
// 是否包含文本
containLabel: true,
// 显示边框
show: true,
// 边框颜色
borderColor: 'rgba(0, 240, 255, 0.3)'
},
// 控制x轴
xAxis: [
{
// 使用类目,必须有data属性
type: 'category',
// 使用 data 中的数据设为刻度文字
data: ['上海', '广州', '北京', '深圳', '合肥', '', '......', '', '杭州', '厦门', '济南', '成都', '重庆'],
// 刻度设置
axisTick: {
// true意思:图形在刻度中间
// false意思:图形在刻度之间
alignWithLabel: false,
show: false
},
// 文字
axisLabel: {
color: '#4c9bfd'
}
}
],
// 控制y轴
yAxis: [
{
// 使用数据的值设为刻度文字
type: 'value',
// 刻度设置
axisTick: {
show: false
},
// 文字
axisLabel: {
color: '#4c9bfd'
},
splitLine: {
lineStyle: {
color: 'rgba(0, 240, 255, 0.3)'
}
}
}
],
// 控制数据
series: [
{
// 图表数据名称
name: '用户统计',
// 图表类型
type: 'bar',
// 柱子宽度
barWidth: '60%',
// 数据
data: [2100, 1900, 1700, 1560, 1400, item, item, item, 900, 750, 600, 480, 240],
// 颜色
itemStyle: {
// 提供的工具函数生成渐变颜色
color: new echarts.graphic.LinearGradient(
// (x1,y2) 点到点 (x2,y2) 之间进行渐变
0, 0, 0, 1,
[
{ offset: 0, color: '#00fffb' }, // 0 起始颜色
{ offset: 1, color: '#0061ce' } // 1 结束颜色
]
)
}
}
]
};
var myChart = echarts.init($('.bar')[0])
myChart.setOption(option)
})();
// 订单功能
(function () {
// 1. 准备数据
var data = {
day365: { orders: '20,301,987', amount: '99834' },
day90: { orders: '301,987', amount: '9834' },
day30: { orders: '1,987', amount: '3834' },
day1: { orders: '987', amount: '834' }
}
// 获取显示 订单数量 容器
var $h4Orders = $('.order h4:eq(0)')
// 获取显示 金额数量 容器
var $h4Amount = $('.order h4:eq(1)')
$('.order').on('click', '.filter a', function () {
// 2. 点击切换激活样式
$(this).addClass('active').siblings().removeClass('active')
// 3. 点击切换数据
var currdata = data[this.dataset.key]
$h4Orders.html(currdata.orders)
$h4Amount.html(currdata.amount)
})
// 4. 开启定时器切换数据
var index = 0
var $allTab = $('.order .filter a')
setInterval(function () {
index++
if (index >= 4) index = 0
$allTab.eq(index).click()
}, 5000)
})();
(function () {
// 准备数据
var data = {
year: [
[24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
[40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]
],
quarter: [
[23, 75, 12, 97, 21, 67, 98, 21, 43, 64, 76, 38],
[43, 31, 65, 23, 78, 21, 82, 64, 43, 60, 19, 34]
],
month: [
[34, 87, 32, 76, 98, 12, 32, 87, 39, 36, 29, 36],
[56, 43, 98, 21, 56, 87, 43, 12, 43, 54, 12, 98]
],
week: [
[43, 73, 62, 54, 91, 54, 84, 43, 86, 43, 54, 53],
[32, 54, 34, 87, 32, 45, 62, 68, 93, 54, 54, 24]
]
}
var option = {
// 工具提示
tooltip: {
trigger: 'axis'
},
// 图例组件
legend: {
textStyle: {
color: '#4c9bfd',
},
right: '10%'
},
// 设置网格
grid: {
show: true,
top: '20%',
left: '3%',
right: '4%',
bottom: '3%',
borderColor: '#012f4a',
containLabel: true
},
xAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
axisTick: {
show: false
},
axisLabel: {
color: '#4c9bfd'
},
axisLine: {
show: false
},
boundaryGap: false
},
yAxis: {
type: 'value',
axisTick: {
show: false
},
axisLabel: {
color: '#4c9bfd'
},
splitLine: {
lineStyle: {
color: '#012f4a'
}
}
},
series: [{
name: '预期销售额',
data: data.year[0],
type: 'line',
smooth: true,
itemStyle: {
color: '#00f2f1'
}
}, {
name: '实际销售额',
data: data.year[1],
type: 'line',
smooth: true,
itemStyle: {
color: '#ed3f35'
}
}]
};
var myChart = echarts.init($('.line')[0])
myChart.setOption(option)
// 切换
$('.sales').on('click', '.caption a', function () {
// 样式
$(this).addClass('active').siblings().removeClass('active')
// 数据
var currData = data[this.dataset.type]
option.series[0].data = currData[0]
option.series[1].data = currData[1]
myChart.setOption(option)
})
// tab索引
var index = 0;
// 所有tab
var allTab = $('.sales .caption a')
setInterval(function () {
index++
// 大于等于4索引切换到0索引
if (index >= 4) index = 0
// 选中对应tab触发点击
allTab.eq(index).click()
}, 1000)
})();
// 销量进度-饼状图
(function () {
var option = {
series: [
{
name: '访问来源',
type: 'pie',
radius: ['130%', '150%'],
center: ['48%', '80%'],
label: {
show: false,
},
startAngle: 180,
hoverOffset: 0,
data: [
{
value: 100,
itemStyle: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 0, color: '#00c9e0' },
{ offset: 1, color: '#005fc1' }
]
}
}
},
{ value: 100, itemStyle: { color: '#12274d' } },
{ value: 200, itemStyle: { color: 'transparent' } }
]
}
]
}
var myChart = echarts.init($('.gauge')[0])
myChart.setOption(option)
})();
$(function(){
var data = [
{ name: '可爱多', num: '9,086' },
{ name: '娃哈哈', num: '8,341' },
{ name: '喜之郎', num: '7,407' },
{ name: '八喜', num: '6,080' },
{ name: '小洋人', num: '6,724' },
{ name: '好多鱼', num: '2,170' },
]
$('.province').on('mouseenter','.sup li',function(){
// 样式
$(this).addClass('active').siblings().removeClass('active')
// 打乱数据
var randomData = data.sort(function(a,b){
return 0.5 - Math.random()
})
// 拼接字符串
var html = ''
randomData.forEach(function(item){
html += `<li><span>${item.name}</span><span>${item.num} <s class="icon-up"></s></span></li>`
})
// 渲染
$('.sub').html(html)
})
// 所有的LI
var $lis = $('.province .sup li')
// 第一个默认激活
$lis.eq(0).mouseenter()
// 开启定时器 切换
var index = 0
setInterval(function () {
index++
// 大于等于5索引切换到0索引
if (index >= 5) index = 0
// 选中对应tab触发点击
$lis.eq(index).mouseenter()
}, 1000)
})
公共样式
@font-face {
font-family: 'icomoon';
src: url('icomoon.eot');
src: url('icomoon.eot#iefix') format('embedded-opentype'),
url('icomoon.ttf') format('truetype'),
url('icomoon.woff') format('woff'),
url('icomoon.svg#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'icomoon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-dot:before {
content: "\e900";
}
.icon-cup1:before {
content: "\e901";
}
.icon-cup2:before {
content: "\e902";
}
.icon-cup3:before {
content: "\e903";
}
.icon-clock:before {
content: "\e904";
}
.icon-down:before {
content: "\e905";
}
.icon-cube:before {
content: "\e906";
}
.icon-plane:before {
content: "\e907";
}
.icon-train:before {
content: "\e908";
}
.icon-bus:before {
content: "\e909";
}
.icon-bag:before {
content: "\e90a";
}
.icon-up:before {
content: "\e90b";
}
项目目录