整体的效果
概览区域
< div class = " panel overview" >
< div class = " inner" >
< ul>
< li>
< h4> 2190</ h4>
< span>
< i class = " icon-dot" > </ i>
设备总数
</ span>
</ li>
< li class = " item" >
< h4> 190</ h4>
< span>
< i class = " icon-dot" style = " color : #6acca3" > </ i>
季度新增
</ span>
</ li>
< li>
< h4> 3,001</ h4>
< span>
< i class = " icon-dot" style = " color : #6acca3" > </ i>
运营设备
</ span>
</ li>
< li>
< h4> 108</ h4>
< span>
< i class = " icon-dot" style = " color : #ed3f35" > </ i>
异常设备
</ span>
</ li>
</ ul>
</ div>
</ div>
公共样式设置
* {
margin : 0;
padding : 0;
box-sizing : border-box;
}
em,
i {
font-style : normal;
}
li {
list-style : none;
}
img {
border : 0;
vertical-align : middle;
}
button {
cursor : pointer;
}
a {
color : #666;
text-decoration : none;
}
a:hover {
color : #e33333;
}
h4 {
font-weight : 400;
}
body {
background : url ( ../images/bg.jpg) no-repeat 0 0 / cover;
}
@media screen and ( max-width : 1024px) {
html {
font-size : 42.66px !important ;
}
}
@media screen and ( min-width : 1920px) {
html {
font-size : 80px !important ;
}
}
.viewport {
display : flex;
min-width : 1024px;
max-width : 1920px;
margin : 0 auto;
padding : 1.625rem 0.25rem 0;
background : url ( ../images/logo.png) no-repeat 0 0 / contain;
min-height : 780px;
}
.viewport .column {
flex : 3;
}
.viewport .column:nth-child(2) {
flex : 4;
margin : 0.4rem 0.25rem 0;
}
.panel {
position : relative;
border : 15px solid transparent;
border-width : .6375rem 0.475rem 0.25rem 1.65rem;
border-image-source : url ( ../images/border.png) ;
border-image-slice : 51 38 20 132;
margin-bottom : 0.25rem;
}
.inner {
position : absolute;
top : -0.6375rem;
left : -1.65rem;
right : -0.475rem;
bottom : -0.25rem;
padding : 0.3rem 0.45rem;
}
.panel h3 {
font-size : 0.25rem;
color : #fff;
font-weight : 400;
}
.overview {
height : 1.375rem;
}
.overview ul {
display : flex;
justify-content : space-between;
}
.overview ul li h4 {
font-size : .35rem;
color : #fff;
margin : 0 0 .1rem .06rem;
}
.overview ul li span {
font-size : .2rem;
color : #4c9bfd;
}
监控区域
< div class = " panel monitor" >
< div class = " inner" >
< div class = " tabs" >
< a href = " javascript:;" class = " active" > 故障设备监控</ a>
< a href = " javascript:;" > 异常设备监控</ 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>
.monitor {
height : 6rem;
}
.monitor .inner {
padding : 0.3rem 0;
display : flex;
flex-direction : column;
}
.monitor .tabs {
padding : 0 0.45rem;
margin-bottom : 0.225rem;
display : flex;
}
.monitor .tabs a {
color : #1950c4;
font-size : 0.225rem;
padding : 0 0.3375rem;
}
.monitor .tabs a:first-child {
padding-left : 0;
border-right : 0.025rem 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.15rem 0.45rem;
color : #68d8fe;
font-size : 0.175rem;
}
.monitor .marquee-view {
position : absolute;
top : 0.5rem;
bottom : 0;
width : 100%;
overflow : hidden;
}
.monitor .row {
display : flex;
justify-content : space-between;
line-height : 1.05;
font-size : 0.15rem;
color : #61a8ff;
padding : 0.15rem 0.45rem;
}
.monitor .row .icon-dot {
position : absolute;
left : 0.2rem;
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 : 1rem;
}
.monitor .col:nth-child(2) {
width : 2.5rem;
white-space : nowrap;
text-overflow : ellipsis;
overflow : hidden;
}
.monitor .col:nth-child(3) {
width : 1rem;
}
.marquee-view .marquee {
animation : move 15s linear infinite;
}
@keyframes move {
0% {
}
100% {
transform : translateY ( -50%) ;
}
}
.marquee-view .marquee:hover {
animation-play-state : paused;
}
( function ( ) {
$ ( ".monitor .tabs" ) . on ( "click" , "a" , function ( ) {
$ ( this )
. addClass ( "active" )
. siblings ( "a" )
. removeClass ( "active" ) ;
$ ( ".monitor .content" )
. eq ( $ ( this ) . index ( ) )
. show ( )
. siblings ( ".content" )
. hide ( ) ;
} ) ;
$ ( ".marquee-view .marquee" ) . each ( function ( ) {
var rows = $ ( this )
. children ( )
. clone ( ) ;
$ ( this ) . append ( rows) ;
} ) ;
} ) ( ) ;
点位模块
< 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>
.point {
height : 4.25rem;
}
.point .chart {
display : flex;
margin-top : 0.3rem;
justify-content : space-between;
}
.point .pie {
width : 3.9rem;
height : 3rem;
margin-left : -0.125rem;
}
.point .data {
display : flex;
flex-direction : column;
justify-content : space-between;
width : 2.1rem;
padding : .45rem .375rem;
box-sizing : border-box;
background-image : url ( ../images/rect.png) ;
background-size : cover;
}
.point h4 {
margin-bottom : 0.15rem;
font-size : .35rem;
color : #fff;
}
.point span {
display : block;
color : #4c9bfd;
font-size : .2rem;
}
( function ( ) {
var myChart = echarts. init ( document.
querySelector ( ".pie" ) ) ;
var option = {
tooltip : {
trigger : "item" ,
formatter : "{a} <br/>{b} : {c} ({d}%)"
} ,
color : [
"#006cff" ,
"#60cda0" ,
"#ed8884" ,
"#ff9f7f" ,
"#0096ff" ,
"#9fe6b8" ,
"#32c5e9" ,
"#1d9dff"
] ,
series : [
{
name : "点位统计" ,
type : "pie" ,
radius : [ "10%" , "70%" ] ,
center : [ "50%" , "50%" ] ,
roseType : "radius" ,
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 : 6 ,
length2 : 8
}
}
]
} ;
myChart. setOption ( option) ;
window. addEventListener ( 'resize' , function ( ) {
myChart. resize ( ) ;
} )
} ) ( ) ;
用户模块
< 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>
.users {
height : 4.25rem;
display : flex;
}
.users .chart {
display : flex;
margin-top : .3rem;
}
.users .bar {
width : 7.35rem;
height : 3rem;
}
.users .data {
display : flex;
flex-direction : column;
justify-content : space-between;
width : 2.1rem;
padding : .45rem .375rem;
box-sizing : border-box;
background-image : url ( ../images/rect.png) ;
background-size : cover;
}
.users h4 {
margin-bottom : .15rem;
font-size : .35rem;
color : #fff;
}
.users span {
display : block;
color : #4c9bfd;
font-size : 0.2rem;
}
( function ( ) {
var item = {
name : '' ,
value : 1200 ,
itemStyle : {
color : "#254065"
} ,
emphasis : {
itemStyle : {
color : "#254065"
}
} ,
tooltip : {
extraCssText : "opacity:0"
}
} ;
var myChart = echarts. init ( document. querySelector ( ".bar" ) ) ;
var option = {
color : new echarts. graphic. LinearGradient (
0 , 0 , 0 , 1 ,
[
{ offset : 0 , color : '#00fffb' } ,
{ offset : 1 , color : '#0061ce' }
]
) ,
tooltip : {
trigger : 'item' ,
} ,
grid : {
left : '0%' ,
right : '3%' ,
bottom : '3%' ,
top : '3%' ,
containLabel : true ,
show : true ,
borderColor : 'rgba(0,240,255,0.3)'
} ,
xAxis : [
{
type : "category" ,
data : [
"上海" ,
"广州" ,
"北京" ,
"深圳" ,
"合肥" ,
"" ,
"......" ,
"" ,
"杭州" ,
"厦门" ,
"济南" ,
"成都" ,
"重庆"
] ,
axisTick : {
alignWithLabel : false ,
show : false
} ,
axisLabel : {
interval : 0 ,
color : "#4c9bfd"
} ,
axisLine : {
lineStyle : {
color : 'rgba(0,240,255,0.3)'
}
}
}
] ,
yAxis : [
{
type : 'value' ,
axisTick : {
alignWithLabel : false ,
show : false
} ,
axisLabel : {
color : "#4c9bfd"
} ,
axisLine : {
lineStyle : {
color : 'rgba(0,240,255,0.3)'
}
} ,
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
] ,
}
]
} ;
myChart. setOption ( option) ;
window. addEventListener ( "resize" , function ( ) {
myChart. resize ( )
} )
} ) ( ) ;
订单模块
< div class = " order panel" >
< div class = " inner" >
< div class = " filter" >
< a href = " javascript:;" class = " active" > 365天</ a>
< a href = " javascript:;" > 90天</ a>
< a href = " javascript:;" > 30天</ a>
< a href = " javascript:;" > 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>
.order {
height : 1.875rem;
}
.order .filter {
display : flex;
}
.order .filter a {
display : block;
height : 0.225rem;
line-height : 1;
padding : 0 0.225rem;
color : #1950c4;
font-size : 0.225rem;
border-right : 0.025rem 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.25rem;
}
.order .data {
display : flex;
margin-top : 0.25rem;
}
.order .item {
width : 50%;
}
.order h4 {
font-size : 0.35rem;
color : #fff;
margin-bottom : 0.125rem;
}
.order span {
display : block;
color : #4c9bfd;
font-size : 0.2rem;
}
( function ( ) {
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 ( ) {
$ ( this ) . addClass ( 'active' ) . siblings ( ) . removeClass ( 'active' )
var currdata = data[ this . dataset. key]
$h4Orders. html ( currdata. orders)
$h4Amount. html ( currdata. amount)
} )
var index = 0
var $allTab = $ ( '.order .filter a' )
setInterval ( function ( ) {
index ++
if ( index >= 4 ) index = 0
$allTab. eq ( index) . click ( )
} , 5000 )
} ) ( ) ;
销售额统计模块
< 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>
.sales {
height : 3.1rem;
}
.sales .caption {
display : flex;
line-height : 1;
}
.sales h3 {
height : 0.225rem;
padding-right : 0.225rem;
border-right : 0.025rem solid #00f2f1;
}
.sales a {
padding : 0.05rem;
font-size : 0.2rem;
margin : -0.0375rem 0 0 0.2625rem;
border-radius : 0.0375rem;
color : #0bace6;
}
.sales a.active {
background-color : #4c9bfd;
color : #fff;
}
.sales .inner {
display : flex;
flex-direction : column;
}
.sales .chart {
flex : 1;
padding-top : 0.1875rem;
position : relative;
}
.sales .label {
position : absolute;
left : 0.525rem;
top : 0.225rem;
color : #4996f5;
font-size : 0.175rem;
}
.sales .line {
width : 100%;
height : 100%;
}
( 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 myChart = echarts. init ( document. querySelector ( ".line" ) ) ;
var option = {
color : [ '#00f2f1' , '#ed3f35' ] ,
tooltip : {
trigger : "axis"
} ,
legend : {
right : "19%" ,
textStyle : {
color : "#4c9bfd" ,
} ,
} ,
grid : {
top : "20%" ,
left : "3%" ,
right : "4%" ,
bottom : "3%" ,
show : true ,
borderColor : "#012f4a" ,
containLabel : true
} ,
xAxis : {
type : "category" ,
boundaryGap : false ,
data : [ '1月' , '2月' , '3月' , '4月' , '5月' , '6月' , '7月' , '8月' , '9月' , '10月' , '11月' , '12月' ] ,
axisTick : {
show : false ,
} ,
axisLabel : {
interval : 0 ,
color : "#4c9bfd" ,
} ,
axisLine : {
show : false ,
}
} ,
yAxis : {
type : "value" ,
axisTick : {
show : false ,
} ,
axisLabel : {
interval : 0 ,
color : "#4c9bfd" ,
} ,
splitLine : {
lineStyle : {
color : "012f4a"
}
}
} ,
series : [
{
name : "预期销售额" ,
type : "line" ,
stack : "总量" ,
smooth : true ,
data : data. year[ 0 ]
} ,
{
name : "实际销售额" ,
type : "line" ,
stack : "总量" ,
smooth : true ,
data : data. year[ 1 ]
}
]
} ;
myChart. setOption ( option) ;
window. addEventListener ( "resize" , function ( ) {
myChart. resize ( )
} )
$ ( ".sales .caption" ) . on ( "click" , "a" , function ( ) {
index = $ ( this ) . index ( ) - 1 ;
$ ( this )
. addClass ( "active" )
. siblings ( "a" )
. removeClass ( "active" )
var arr = data[ this . dataset. type] ;
option. series[ 0 ] . data = arr[ 0 ] ;
option. series[ 1 ] . data = arr[ 1 ] ;
myChart. setOption ( option) ;
} ) ;
var as = $ ( ".sales .caption a" ) ;
var index = 0 ;
var timer = setInterval ( function ( ) {
index++ ;
if ( index>= 4 ) index= 0 ;
as . eq ( index) . click ( ) ;
} , 1000 ) ;
$ ( '.sales' ) . hover ( function ( ) {
clearInterval ( timer) ;
} , function ( ) {
clearInterval ( timer) ;
timer = setInterval ( function ( ) {
index++ ;
if ( index>= 4 ) index= 0 ;
as . eq ( index) . click ( ) ;
} , 1000 ) ;
} )
} ) ( ) ;
渠道分布与季度模块
< div class = " wrap" >
< div class = " channel panel" >
< div class = " inner" >
< h3> 渠道分布</ h3>
< div class = " data" >
< div class = " radar" > </ 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>
.wrap {
display : flex;
}
.channel,
.quarter {
flex : 1;
height : 2.9rem;
}
.channel {
margin-right : 0.25rem;
}
.channel .data {
overflow : hidden;
}
.channel .data .radar {
height : 2.1rem;
width : 100%;
}
.channel h4 {
color : #fff;
font-size : 0.4rem;
margin-bottom : 0.0625rem;
}
.channel small {
font-size : 50%;
}
.channel span {
display : block;
color : #4c9bfd;
font-size : 0.175rem;
}
.quarter .inner {
display : flex;
flex-direction : column;
margin : 0 -0.075rem;
}
.quarter .chart {
flex : 1;
padding-top : 0.225rem;
}
.quarter .box {
position : relative;
}
.quarter .label {
transform : translate ( -50%, -30%) ;
color : #fff;
font-size : 0.375rem;
position : absolute;
left : 50%;
top : 50%;
}
.quarter .label small {
font-size : 50%;
}
.quarter .gauge {
height : 1.05rem;
}
.quarter .data {
display : flex;
justify-content : space-between;
}
.quarter .item {
width : 50%;
}
.quarter h4 {
color : #fff;
font-size : 0.3rem;
margin-bottom : 0.125rem;
}
.quarter span {
display : block;
width : 100%;
white-space : nowrap;
text-overflow : ellipsis;
overflow : hidden;
color : #4c9bfd;
font-size : 0.175rem;
}
( function ( ) {
var myChart = echarts. init ( document. querySelector ( '.radar' ) ) ;
var option = {
tooltip : {
show : true ,
position : [ "20%" , "5%" ]
} ,
radar : {
indicator : [
{ name : '机场' , max : 100 } ,
{ name : '商场' , max : 100 } ,
{ name : '火车站' , max : 100 } ,
{ name : '汽车站' , max : 100 } ,
{ name : '地铁' , max : 100 }
] ,
radius : "60%" ,
shape : "circle" ,
splitNumber : 4 ,
name : {
textStyle : {
color : "#4c9bfd"
}
} ,
splitLine : {
lineStyle : {
color : "rgba(255,255,255,0.5)"
}
} ,
splitArea : {
show : false
} ,
axisLine : {
lineStyle : {
color : "rgba(255,255,255,0.5)"
}
}
} ,
series : [
{
name : "北京" ,
type : "radar" ,
lineStyle : {
normal : {
color : "#fff" ,
width : 1 ,
opacity : 0.5
}
} ,
data : [ [ 155 , 39 , 156 , 0.46 , 88 , 6 , 100 ] ] ,
symbol : "circle" ,
symbolSize : 5 ,
itemStyle : {
color : "#fff"
} ,
label : {
show : true ,
fontSize : 10
} ,
areaStyle : {
color : "rgba(238,197,102,0.6)" ,
}
}
]
} ;
myChart. setOption ( option) ;
window. addEventListener ( "resize" , function ( ) {
myChart. resize ( )
} )
} ) ( ) ;
( function ( ) {
var myChart = echarts. init ( document. querySelector ( ".gauge" ) ) ;
var option = {
series : [
{
name : "销售进度" ,
type : "pie" ,
radius : [ "130%" , "150%" ] ,
center : [ "48%" , "80%" ] ,
labelLine : {
normal : {
show : false
}
} ,
startAngle : 180 ,
hoverOffset : 0 ,
data :
[
{ value : 100 ,
itemStyle : {
color : new echarts. graphic. LinearGradient (
0 , 0 , 0 , 1 ,
[
{ offset : 0 , color : '#00fffb' } ,
{ offset : 1 , color : '#0061ce' }
]
) ,
}
} ,
{ value : 100 ,
itemStyle : {
color : "#12274d"
}
} ,
{ value : 200 ,
itemStyle : {
color : "transparent"
}
}
]
}
]
} ;
myChart. setOption ( option) ;
window. addEventListener ( "resize" , function ( ) {
myChart. resize ( )
} )
} ) ( ) ;
排行榜模块
< 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" >
</ ul>
< ul class = " sub" >
</ ul>
</ div>
</ div>
</ div>
</ div>
.top {
height : 3.5rem;
}
.top .inner {
display : flex;
}
.top .all {
display : flex;
flex-direction : column;
width : 2.1rem;
color : #4c9bfd;
font-size : 0.175rem;
vertical-align : middle;
}
.top .all ul {
padding-left : 0.15rem;
margin-top : 0.15rem;
flex : 1;
display : flex;
flex-direction : column;
justify-content : space-around;
}
.top .all li {
overflow : hidden;
}
.top .all [class^="icon-"] {
font-size : 0.45rem;
vertical-align : middle;
margin-right : 0.15rem;
}
.top .province {
flex : 1;
display : flex;
flex-direction : column;
color : #fff;
}
.top .province i {
padding : 0 0.15rem;
margin-top : 0.0625rem;
float : right;
font-style : normal;
font-size : 0.175rem;
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.175rem;
}
.top .province ul {
flex : 1;
line-height : 1;
margin-bottom : 0.175rem;
}
.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.175rem;
}
.top .province ul.sup li {
color : #4995f4;
padding : 0.15rem;
}
.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.15rem;
background-color : rgba ( 10, 67, 188, 0.2) ;
}
.top .province ul.sub li {
color : #52ffff;
padding : 0.125rem 0.175rem;
}
.clock {
position : absolute;
top : -0.45rem;
right : 0.5rem;
font-size : 0.25rem;
color : #0bace6;
}
.clock i {
margin-right : 5px;
font-size : 0.25rem;
}
@media screen and ( max-width : 1600px) {
.top span {
transform : scale ( 0.9) ;
}
.top .province ul.sup li {
padding : 0.125rem 0.15rem;
}
.top .province ul.sub li {
padding : 0.0625rem 0.15rem;
}
.quarter span {
transform : scale ( 0.9) ;
}
}
( function ( ) {
var hotData = [
{
city : '北京' ,
sales : '25, 179' ,
flag : true ,
brands : [
{ name : '可爱多' , num : '9,086' , flag : true } ,
{ name : '娃哈哈' , num : '8,341' , flag : true } ,
{ name : '喜之郎' , num : '7,407' , flag : false } ,
{ name : '八喜' , num : '6,080' , flag : false } ,
{ name : '小洋人' , num : '6,724' , flag : false } ,
{ name : '好多鱼' , num : '2,170' , flag : true } ,
]
} ,
{
city : '河北' ,
sales : '23,252' ,
flag : false ,
brands : [
{ name : '可爱多' , num : '3,457' , flag : false } ,
{ name : '娃哈哈' , num : '2,124' , flag : true } ,
{ name : '喜之郎' , num : '8,907' , flag : false } ,
{ name : '八喜' , num : '6,080' , flag : true } ,
{ name : '小洋人' , num : '1,724' , flag : false } ,
{ name : '好多鱼' , num : '1,170' , flag : false } ,
]
} ,
{
city : '上海' ,
sales : '20,760' ,
flag : true ,
brands : [
{ name : '可爱多' , num : '2,345' , flag : true } ,
{ name : '娃哈哈' , num : '7,109' , flag : true } ,
{ name : '喜之郎' , num : '3,701' , flag : false } ,
{ name : '八喜' , num : '6,080' , flag : false } ,
{ name : '小洋人' , num : '2,724' , flag : false } ,
{ name : '好多鱼' , num : '2,998' , flag : true } ,
]
} ,
{
city : '江苏' ,
sales : '23,252' ,
flag : false ,
brands : [
{ name : '可爱多' , num : '2,156' , flag : false } ,
{ name : '娃哈哈' , num : '2,456' , flag : true } ,
{ name : '喜之郎' , num : '9,737' , flag : true } ,
{ name : '八喜' , num : '2,080' , flag : true } ,
{ name : '小洋人' , num : '8,724' , flag : true } ,
{ name : '好多鱼' , num : '1,770' , flag : false } ,
]
} ,
{
city : '山东' ,
sales : '20,760' ,
flag : true ,
brands : [
{ name : '可爱多' , num : '9,567' , flag : true } ,
{ name : '娃哈哈' , num : '2,345' , flag : false } ,
{ name : '喜之郎' , num : '9,037' , flag : false } ,
{ name : '八喜' , num : '1,080' , flag : true } ,
{ name : '小洋人' , num : '4,724' , flag : false } ,
{ name : '好多鱼' , num : '9,999' , flag : true } ,
]
}
]
var supHTML = ""
$. each ( hotData, function ( index, item ) {
supHTML += ` <li>
<span> ${ item. city} </span>
<span> ${ item. sales} <s class= ${ item. flag? "icon-up" : "icon-down" } ></s></span>
</li> ` ;
} ) ;
$ ( ".sup" ) . html ( supHTML) ;
$ ( ".province .sup" ) . on ( "mouseenter" , "li" , function ( ) {
index = $ ( this ) . index ( ) ;
render ( $ ( this ) ) ;
} ) ;
function render ( that ) {
that
. addClass ( "active" )
. siblings ( )
. removeClass ( ) ;
var subHTML = "" ;
$. each ( hotData[ that. index ( ) ] . brands, function ( index, item ) {
subHTML += ` <li><span> ${ item. name} </span><span> ${ item. num} <s class=
${ item. flag ? "icon-up" : "icon-down" }
></s></span></li> ` ;
} ) ;
$ ( ".sub" ) . html ( subHTML) ;
}
var lis = $ ( ".province .sup li" ) ;
lis. eq ( 0 ) . mouseenter ( ) ;
var index = 0 ;
var timer = setInterval ( function ( ) {
index++ ;
if ( index >= 5 ) index = 0 ;
render ( lis. eq ( index) ) ;
} , 2000 ) ;
$ ( ".province .sup" ) . hover (
function ( ) {
clearInterval ( timer) ;
} ,
function ( ) {
clearInterval ( timer) ;
timer = setInterval ( function ( ) {
index++ ;
if ( index >= 5 ) index = 0 ;
render ( lis. eq ( index) ) ;
} , 2000 ) ;
}
) ;
} ) ( ) ;