400 lines
12 KiB
HTML
400 lines
12 KiB
HTML
<!doctype html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<!--设置是否为缩放模式 -->
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<!-- 新 Bootstrap 核心 CSS 文件 -->
|
||
<link rel="stylesheet" type="text/css" href="https://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css">
|
||
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
|
||
<script src="js/jquery.min.js"></script>
|
||
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
|
||
<script src="js/bootstrap.min.js"></script>
|
||
<!--echarts JS-->
|
||
<script src="js/echarts.min.js"></script>
|
||
<!-- 轮播swiper文件 -->
|
||
<link rel="stylesheet" type="text/css" href="css/swiper.min.css">
|
||
<script src="js/swiper.min.js"></script>
|
||
<!--界面样式-->
|
||
<script src="js/visual.js"></script>
|
||
<script src="js/china.js"></script>
|
||
<script src="js/chartMap.js"></script>
|
||
<link rel="stylesheet" type="text/css" href="css/visual.css">
|
||
|
||
</head>
|
||
<body class="ksh">
|
||
<div id="load">
|
||
<div class="load_img"><!-- 加载动画 -->
|
||
<img class="jzxz1" src="images/jzxz1.png">
|
||
<img class="jzxz2" src="images/jzxz2.png">
|
||
</div>
|
||
</div>
|
||
<div class="head_top">
|
||
<div class="head_logo">牛只管理系统</div>
|
||
<img class="head_decor" src="images/header.png" alt="标题装饰">
|
||
</div>
|
||
<div class="visual">
|
||
<div class="visual_left">
|
||
<div class="visual_box">
|
||
<div class="visual_title">
|
||
<span>交通流量</span>
|
||
<img src="images/ksh33.png">
|
||
</div>
|
||
<div class="visual_chart" id="main1">
|
||
|
||
</div>
|
||
</div>
|
||
<div class="visual_box">
|
||
<div class="visual_title">
|
||
<span>交通工具流量</span>
|
||
<img src="images/ksh33.png">
|
||
</div>
|
||
<div class="visual_chart" id="main2">
|
||
|
||
</div>
|
||
</div>
|
||
<div class="visual_box">
|
||
<div class="visual_title">
|
||
<span>收费站车流量</span>
|
||
<img src="images/ksh33.png">
|
||
</div>
|
||
<div class="visual_chart sfzcll">
|
||
<a>运输方式</a>
|
||
<a>客运量</a>
|
||
<a>货运量</a>
|
||
<div class="sfzcll_pos_box">
|
||
<div class="sfzcll_box">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<label><img src="images/ksh35.png">公路运输</label>
|
||
<div class="sfzcll_smallBk">
|
||
<div class="ygl">
|
||
<span>4347.2万</span>人
|
||
</div>
|
||
</div>
|
||
<div class="sfzcll_smallBk">
|
||
<div class="ygh">
|
||
<span>4347.2万</span>人
|
||
</div>
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
<div class="sfzcll_box">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<label><img src="images/ksh35.png">公路运输</label>
|
||
<div class="sfzcll_smallBk">
|
||
<div class="ygl">
|
||
<span>4347.2万</span>人
|
||
</div>
|
||
</div>
|
||
<div class="sfzcll_smallBk">
|
||
<div class="ygh">
|
||
<span>4347.2万</span>人
|
||
</div>
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
<div class="sfzcll_box">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<img class="sfzcll_bkJk" src="images/ksh34.png">
|
||
<label><img src="images/ksh35.png">公路运输</label>
|
||
<div class="sfzcll_smallBk">
|
||
<div class="ygl">
|
||
<span>4347.2万</span>人
|
||
</div>
|
||
</div>
|
||
<div class="sfzcll_smallBk">
|
||
<div class="ygh">
|
||
<span>4347.2万</span>人
|
||
</div>
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="visual_con">
|
||
<div class="visual_conTop">
|
||
<div class="visual_conTop_box visual_conTop1">
|
||
<div class="stat-card">
|
||
<h3>采购总额</h3>
|
||
<p class="stat-value" data-field="toalProcurementAmount">--</p>
|
||
</div>
|
||
</div>
|
||
<div class="visual_conTop_box visual_conTop1">
|
||
<div class="stat-card">
|
||
<h3>销售总额</h3>
|
||
<p class="stat-value" data-field="toalSalesAmount">--</p>
|
||
</div>
|
||
</div>
|
||
<div class="visual_conTop_box visual_conTop1">
|
||
<div class="stat-card">
|
||
<h3>利润</h3>
|
||
<p class="stat-value" data-field="profits">--</p>
|
||
</div>
|
||
</div>
|
||
<div class="visual_conTop_box visual_conTop1">
|
||
<div class="stat-card">
|
||
<h3>应收货款</h3>
|
||
<p class="stat-value" data-field="accountsReceivable">--</p>
|
||
</div>
|
||
</div>
|
||
<div class="visual_conTop_box visual_conTop1">
|
||
<div class="stat-card">
|
||
<h3>未收货款</h3>
|
||
<p class="stat-value" data-field="uncollectedPayment">--</p>
|
||
</div>
|
||
</div>
|
||
<div class="visual_conTop_box visual_conTop1">
|
||
<div class="stat-card">
|
||
<h3>实收货款</h3>
|
||
<p class="stat-value" data-field="actualPayment">--</p>
|
||
</div>
|
||
</div>
|
||
<div class="visual_conTop_box visual_conTop1">
|
||
<div class="stat-card">
|
||
<h3>采购头数</h3>
|
||
<p class="stat-value" data-field="totalPurchase">--</p>
|
||
</div>
|
||
</div>
|
||
<div class="visual_conTop_box visual_conTop1">
|
||
<div class="stat-card">
|
||
<h3>采购单数</h3>
|
||
<p class="stat-value" data-field="totalOrder">--</p>
|
||
</div>
|
||
</div>
|
||
<div class="visual_conTop_box visual_conTop1">
|
||
<div class="stat-card">
|
||
<h3>销售单数</h3>
|
||
<p class="stat-value" data-field="totalSales">--</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="visual_conBot">
|
||
<img class="visual_conBot_l" src="images/ksh42.png">
|
||
<img class="visual_conBot_2" src="images/ksh43.png">
|
||
<img class="visual_conBot_3" src="images/ksh44.png">
|
||
<img class="visual_conBot_4" src="images/ksh45.png">
|
||
|
||
<div class="visual_chart" id="main8"></div>
|
||
<div class="visual_conBot_bot">
|
||
<div class="visualSssf_left">
|
||
<h3>今日实时收费</h3>
|
||
<a style="display:block">全省数据</a>
|
||
<a>大同北</a>
|
||
<a>大同南</a>
|
||
<a>朔州</a>
|
||
<a>吕梁北</a>
|
||
<a>吕梁南</a>
|
||
<a>太原</a>
|
||
<a class="active">晋中</a>
|
||
<a>太旧</a>
|
||
<a>长治</a>
|
||
</div>
|
||
<div class="visualSssf_right">
|
||
<div class="visualSssf_right_box" id="main5"></div>
|
||
<div class="visualSssf_right_box" id="main6"></div>
|
||
<div class="visualSssf_right_box" id="main7"></div>
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="visual_right">
|
||
<div class="visual_box">
|
||
<div class="visual_title">
|
||
<span>本月发生事件</span>
|
||
<img src="images/ksh33.png">
|
||
</div>
|
||
<div class="swiper-container visual_swiper1 visual_chart">
|
||
<div class="swiper-wrapper">
|
||
<div class="swiper-slide" id="main3"></div>
|
||
<div class="swiper-slide" id="main31"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="visual_box visualSfzsfl">
|
||
<div class="visual_title">
|
||
<span>收费站收费量</span>
|
||
<img src="images/ksh33.png">
|
||
</div>
|
||
<div class="visual_chart" id="main9">
|
||
|
||
</div>
|
||
<div class="visual_table">
|
||
<table>
|
||
<tr>
|
||
<td>小型车</td>
|
||
<td>中型车</td>
|
||
<td>大型车</td>
|
||
</tr>
|
||
<tr>
|
||
<td>2486万</td>
|
||
<td>2486万</td>
|
||
<td>2486万</td>
|
||
</tr>
|
||
<tr>
|
||
<td>2486万</td>
|
||
<td>2486万</td>
|
||
<td>2486万</td>
|
||
</tr>
|
||
<tr>
|
||
<td>2486万</td>
|
||
<td>2486万</td>
|
||
<td>2486万</td>
|
||
</tr>
|
||
<tr>
|
||
<td>2486万</td>
|
||
<td>2486万</td>
|
||
<td>2486万</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<div class="visual_box">
|
||
<div class="visual_title">
|
||
<span>收费站收费排行</span>
|
||
<img src="images/ksh33.png">
|
||
</div>
|
||
<div class="swiper-container visual_swiper2 visual_chart">
|
||
<div class="swiper-wrapper">
|
||
<div class="swiper-slide" id="main4"></div>
|
||
<div class="swiper-slide" id="main41"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
<script type="text/javascript">
|
||
// 公共接口域名(建议由前端/网关同域反向代理到目标域,避免浏览器 CORS)
|
||
const API_BASE = '/api';
|
||
|
||
$(function(){
|
||
var a=$('.visualSssf_left a')
|
||
for(var i=0;i<a.length;i++){
|
||
a[i].index=i;
|
||
a[i].onclick=function(){
|
||
for(var i=0;i<a.length;i++){
|
||
a[i].className=''
|
||
}
|
||
this.className='active'
|
||
}
|
||
}
|
||
|
||
var sfzcllH=$('.sfzcll_box').height()
|
||
var sfzcllHtwo=sfzcllH-2
|
||
$('.sfzcll_box').css('line-height',sfzcllH+'px')
|
||
$('.sfzcll_smallBk>div').css('line-height',sfzcllHtwo+'px')
|
||
|
||
//删除加载动画
|
||
$('#load').fadeOut(1000)
|
||
setTimeout(function(){
|
||
$('#load').remove()
|
||
}
|
||
,1100);
|
||
|
||
// 销售概览数据
|
||
const fieldMap = {
|
||
toalProcurementAmount: '采购总额',
|
||
actualPayment: '实收货款',
|
||
profits: '利润',
|
||
toalSalesAmount: '销售总额',
|
||
accountsReceivable: '应收货款',
|
||
totalOrder: '采购单数',
|
||
totalPurchase: '采购头数',
|
||
totalSales: '销售单数',
|
||
uncollectedPayment: '未收货款'
|
||
};
|
||
|
||
const formatNumber = (val) => {
|
||
if (val === undefined || val === null || val === '') return '--';
|
||
const num = Number(val);
|
||
if (Number.isNaN(num)) return val;
|
||
if (Math.abs(num) >= 10000) return (num / 10000).toFixed(2) + '万';
|
||
return num.toLocaleString();
|
||
};
|
||
|
||
const renderSalesOverview = (payload = {}) => {
|
||
$('.stat-value').each(function() {
|
||
const field = $(this).data('field');
|
||
const value = payload[field];
|
||
$(this).text(formatNumber(value));
|
||
if (fieldMap[field]) {
|
||
$(this).attr('title', fieldMap[field]);
|
||
}
|
||
});
|
||
};
|
||
|
||
const fetchSalesOverview = () => {
|
||
$.ajax({
|
||
url: API_BASE + '/salesoverview/list',
|
||
method: 'GET',
|
||
success: function(res) {
|
||
const list = res && (res.data || res.rows || res.result || res.list || res);
|
||
const first = Array.isArray(list) ? list[0] : list;
|
||
renderSalesOverview(first || {});
|
||
},
|
||
error: function() {
|
||
renderSalesOverview({});
|
||
}
|
||
});
|
||
};
|
||
|
||
fetchSalesOverview();
|
||
})
|
||
|
||
//交通流量
|
||
var myChart1 = echarts.init(document.getElementById('main1'));
|
||
myChart1.setOption(option1);
|
||
//交通工具流量
|
||
var myChart2 = echarts.init(document.getElementById('main2'));
|
||
myChart2.setOption(option2);
|
||
//本月发生事件
|
||
var myChart3 = echarts.init(document.getElementById('main3'));
|
||
myChart3.setOption(option3);
|
||
var myChart31 = echarts.init(document.getElementById('main31'));
|
||
myChart31.setOption(option31);
|
||
var mySwiper1 = new Swiper('.visual_swiper1', {
|
||
autoplay: true,//可选选项,自动滑动
|
||
speed:800,//可选选项,滑动速度
|
||
autoplay: {
|
||
delay: 5000,//1秒切换一次
|
||
},
|
||
})
|
||
//收费站收费排行
|
||
var myChart4 = echarts.init(document.getElementById('main4'));
|
||
myChart4.setOption(option4);
|
||
var myChart41 = echarts.init(document.getElementById('main41'));
|
||
myChart41.setOption(option41);
|
||
var mySwiper2 = new Swiper('.visual_swiper2', {
|
||
autoplay: true,//可选选项,自动滑动
|
||
direction : 'vertical',//可选选项,滑动方向
|
||
speed:2000,//可选选项,滑动速度
|
||
})
|
||
//今日实时收费
|
||
var myChart5 = echarts.init(document.getElementById('main5'));
|
||
myChart5.setOption(option5);
|
||
var myChart6 = echarts.init(document.getElementById('main6'));
|
||
myChart6.setOption(option6);
|
||
var myChart7 = echarts.init(document.getElementById('main7'));
|
||
myChart7.setOption(option7);
|
||
//中间地图
|
||
var myChart8 = echarts.init(document.getElementById('main8'));
|
||
myChart8.setOption(option8);
|
||
//收费站收费量
|
||
var myChart9 = echarts.init(document.getElementById('main9'));
|
||
myChart9.setOption(option9);
|
||
</script>
|
||
</body>
|
||
</html>
|