Files
cattleTransportation/datav/index.html
2025-12-11 17:30:38 +08:00

391 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.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">
<img class="decor_bar decor_left_outer" src="images/ksh31.png" alt="">
<div class="head_logo">牛只在途监管系统</div>
<img class="decor_bar decor_right_outer" src="images/ksh32.png" alt="">
<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 order_list_container">
<div class="order_list_header">
<span>序号</span>
<span>运单号</span>
<span>起始地</span>
<span>目的地</span>
<span>状态</span>
<span>预计送达</span>
</div>
<div class="order_list_content">
</div>
</div>
</div>
<div class="visual_box">
<div class="visual_title">
<span>牛只概况</span>
<img src="images/ksh33.png">
</div>
<div class="visual_chart" id="cattle_overview_container">
</div>
</div>
<div class="visual_box">
<div class="visual_title">
<span>出肉率</span>
<img src="images/ksh33.png">
</div>
<div class="visual_chart" id="meat_yield_chart"></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">423536.29元</p>
</div>
</div>
<div class="visual_conTop_box visual_conTop1">
<div class="stat-card">
<h3>销售总额</h3>
<p class="stat-value" data-field="toalSalesAmount">417832.33元</p>
</div>
</div>
<div class="visual_conTop_box visual_conTop1">
<div class="stat-card">
<h3>利润</h3>
<p class="stat-value" data-field="profits">31525元</p>
</div>
</div>
<div class="visual_conTop_box visual_conTop1">
<div class="stat-card">
<h3>应收货款</h3>
<p class="stat-value" data-field="accountsReceivable">215215.25元</p>
</div>
</div>
<div class="visual_conTop_box visual_conTop1">
<div class="stat-card">
<h3>未收货款</h3>
<p class="stat-value" data-field="uncollectedPayment">564231.321元</p>
</div>
</div>
<div class="visual_conTop_box visual_conTop1">
<div class="stat-card">
<h3>实收货款</h3>
<p class="stat-value" data-field="actualPayment">335421.56元</p>
</div>
</div>
<div class="visual_conTop_box visual_conTop1">
<div class="stat-card">
<h3>采购头数</h3>
<p class="stat-value" data-field="totalPurchase">2200头</p>
</div>
</div>
<div class="visual_conTop_box visual_conTop1">
<div class="stat-card">
<h3>采购单数</h3>
<p class="stat-value" data-field="totalOrder">35车</p>
</div>
</div>
<div class="visual_conTop_box visual_conTop1">
<div class="stat-card">
<h3>销售单数</h3>
<p class="stat-value" data-field="totalSales">55单</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>
<div class="visual_conStatus">
<div class="status_item">
<div class="status_label">准备中</div>
<div class="status_value_group">
<span class="stat-value" data-field="status_pending">--</span>
<span class="status_unit"></span>
</div>
<div class="status_base">
<div class="status_ring"></div>
<div class="status_light"></div>
</div>
</div>
<div class="status_item">
<div class="status_label">运输中</div>
<div class="status_value_group">
<span class="stat-value" data-field="status_shipping">--</span>
<span class="status_unit"></span>
</div>
<div class="status_base">
<div class="status_ring"></div>
<div class="status_light"></div>
</div>
</div>
<div class="status_item">
<div class="status_label">已结束</div>
<div class="status_value_group">
<span class="stat-value" data-field="status_done">--</span>
<span class="status_unit"></span>
</div>
<div class="status_base">
<div class="status_ring"></div>
<div class="status_light"></div>
</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="visual_chart market_list_container">
<div class="market_list_header">
<span>序号</span>
<span>省份</span>
<span>地区</span>
<span>品种</span>
<span>单价(元/斤)</span>
</div>
<div class="market_list_content">
</div>
</div>
</div>
<div class="visual_box">
<div class="visual_title">
<span>屠宰场概况</span>
<img src="images/ksh33.png">
</div>
<div class="visual_chart" id="slaughterhouse_overview_container"></div>
</div>
<div class="visual_box">
<div class="visual_title">
<span>合计总数</span>
<img src="images/ksh33.png">
</div>
<div class="visual_chart total_layout">
<div class="total_row">
<div class="total_icon_wrapper">
<span class="glyphicon glyphicon-list-alt"></span>
</div>
<div class="total_text_wrapper">
<div class="total_label">合计总数</div>
<div class="total_data">
<span class="stat-value" data-field="totalCattle">--</span>
<span class="total_unit"></span>
</div>
</div>
</div>
<div class="total_row">
<div class="total_icon_wrapper">
<span class="glyphicon glyphicon-home"></span>
</div>
<div class="total_text_wrapper">
<div class="total_label">在栏总数</div>
<div class="total_data">
<span class="stat-value" data-field="deliveredCattle">--</span>
<span class="total_unit"></span>
</div>
</div>
</div>
<div class="total_row">
<div class="total_icon_wrapper">
<span class="glyphicon glyphicon-send"></span>
</div>
<div class="total_text_wrapper">
<div class="total_label">在途总数</div>
<div class="total_data">
<span class="stat-value" data-field="inTransitCattle">--</span>
<span class="total_unit"></span>
</div>
</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;
const data = first || {};
// 模拟测试数据(如果接口未返回)
if (data.toalProcurementAmount === undefined) data.toalProcurementAmount = 423536.29;
if (data.toalSalesAmount === undefined) data.toalSalesAmount = 417832.33;
if (data.profits === undefined) data.profits = 31525;
if (data.accountsReceivable === undefined) data.accountsReceivable = 215215.25;
if (data.uncollectedPayment === undefined) data.uncollectedPayment = 564231.32;
if (data.actualPayment === undefined) data.actualPayment = 335421.56;
if (data.totalPurchase === undefined) data.totalPurchase = 2200;
if (data.totalOrder === undefined) data.totalOrder = 35;
if (data.totalSales === undefined) data.totalSales = 55;
// 模拟合计总数数据
if (data.totalCattle === undefined) data.totalCattle = 12580;
if (data.inTransitCattle === undefined) data.inTransitCattle = 1250;
if (data.deliveredCattle === undefined) data.deliveredCattle = 11330;
// 模拟订单状态数据
if (data.uncompletedOrders === undefined) data.uncompletedOrders = 28;
if (data.notArrivedOrders === undefined) data.notArrivedOrders = 28;
if (data.unsoldOrders === undefined) data.unsoldOrders = 6;
if (data.completedOrders === undefined) data.completedOrders = 22;
renderSalesOverview(data);
},
error: function() {
const data = {};
// 模拟测试数据
data.toalProcurementAmount = 423536.29;
data.toalSalesAmount = 417832.33;
data.profits = 31525;
data.accountsReceivable = 215215.25;
data.uncollectedPayment = 564231.32;
data.actualPayment = 335421.56;
data.totalPurchase = 2200;
data.totalOrder = 35;
data.totalSales = 55;
// 模拟合计总数数据
data.totalCattle = 12580;
data.inTransitCattle = 1250;
data.deliveredCattle = 11330;
// 模拟订单状态数据
data.uncompletedOrders = 28;
data.notArrivedOrders = 28;
data.unsoldOrders = 6;
data.completedOrders = 22;
renderSalesOverview(data);
}
});
};
fetchSalesOverview();
})
//中间地图
var myChart8 = echarts.init(document.getElementById('main8'));
myChart8.setOption(option8);
window.addEventListener("resize", function () {
myChart8.resize();
});
</script>
</body>
</html>