<!DOCTYPE html>  
<html lang="zh-CN">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>智能物流系统 - 异常处理</title>  
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">  
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js"></script>  
    <style>  
        * {  
            margin: 0;  
            padding: 0;  
            box-sizing: border-box;  
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;  
        }  
  
        body {  
            display: flex;  
            background-color: #f5f7fa;  
            color: #333;  
            min-height: 100vh;  
        }  
  
        .sidebar {  
            background-color: #2c3e50;  
            color: white;  
            width: 250px;  
            height: 100vh;  
            padding: 20px;  
            position: fixed;  
            left: 0;  
            top: 0;  
        }  
  
        .logo {  
            margin-bottom: 30px;  
            font-size: 20px;  
            font-weight: bold;  
            display: flex;  
            align-items: center;  
            padding: 10px 0;  
            border-bottom: 1px solid #34495e;  
        }  
  
        .logo i {  
            margin-right: 10px;  
            font-size: 24px;  
        }  
  
        .sidebar ul {  
            list-style: none;  
            padding: 0;  
        }  
  
        .sidebar li {  
            padding: 12px 15px;  
            margin-bottom: 5px;  
            cursor: pointer;  
            border-radius: 4px;  
            transition: all 0.3s ease;  
            display: flex;  
            align-items: center;  
        }  
  
        .sidebar li:hover {  
            background-color: #34495e;  
        }  
  
        .sidebar li.active {  
            background-color: #3498db;  
        }  
  
        .sidebar li i {  
            margin-right: 10px;  
            width: 20px;  
            text-align: center;  
        }  
  
        .main-content {  
            flex: 1;  
            margin-left: 250px;  
            padding: 30px;  
        }  
  
        .header {  
            display: flex;  
            justify-content: space-between;  
            align-items: center;  
            margin-bottom: 30px;  
            padding-bottom: 15px;  
            border-bottom: 1px solid #e0e6ed;  
        }  
  
        .header h1 {  
            color: #2c3e50;  
            font-size: 28px;  
            display: flex;  
            align-items: center;  
        }  
  
        .header h1 i {  
            margin-right: 12px;  
            color: #e74c3c;  
        }  
  
        .time-display {  
            background-color: #fff;  
            padding: 8px 15px;  
            border-radius: 20px;  
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);  
            font-weight: 500;  
            color: #7f8c8d;  
        }  
  
        .dashboard {  
            display: grid;  
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));  
            gap: 25px;  
            margin-bottom: 30px;  
        }  
  
        .card {  
            background: white;  
            border-radius: 10px;  
            box-shadow: 0 4px 12px rgba(0,0,0,0.05);  
            padding: 20px;  
            transition: transform 0.3s ease;  
        }  
  
        .card:hover {  
            transform: translateY(-5px);  
        }  
  
        .card-header {  
            display: flex;  
            justify-content: space-between;  
            align-items: center;  
            margin-bottom: 15px;  
            padding-bottom: 10px;  
            border-bottom: 1px solid #eee;  
        }  
  
        .card-title {  
            font-size: 18px;  
            font-weight: 600;  
            color: #2c3e50;  
        }  
  
        .card-icon {  
            width: 40px;  
            height: 40px;  
            border-radius: 50%;  
            display: flex;  
            align-items: center;  
            justify-content: center;  
            font-size: 18px;  
        }  
  
        .stat-value {  
            font-size: 28px;  
            font-weight: 700;  
            margin: 10px 0;  
        }  
  
        .stat-label {  
            color: #7f8c8d;  
            font-size: 14px;  
        }  
  
        .chart-container {  
            height: 250px;  
            width: 100%;  
        }  
  
        .exception-list {  
            background: white;  
            border-radius: 10px;  
            box-shadow: 0 4px 12px rgba(0,0,0,0.05);  
            overflow: hidden;  
        }  
  
        .list-header {  
            display: flex;  
            justify-content: space-between;  
            align-items: center;  
            padding: 20px;  
            background-color: #f8f9fa;  
            border-bottom: 1px solid #e9ecef;  
        }  
  
        .list-title {  
            font-size: 20px;  
            font-weight: 600;  
            color: #2c3e50;  
        }  
  
        .filter-controls {  
            display: flex;  
            gap: 15px;  
        }  
  
        .filter-btn {  
            padding: 8px 15px;  
            border-radius: 20px;  
            background: #ecf0f1;  
            border: none;  
            cursor: pointer;  
            font-size: 14px;  
            transition: all 0.3s ease;  
        }  
  
        .filter-btn.active {  
            background: #3498db;  
            color: white;  
        }  
  
        .exception-table {  
            width: 100%;  
            border-collapse: collapse;  
        }  
  
        .exception-table th {  
            text-align: left;  
            padding: 15px 20px;  
            background-color: #f8f9fa;  
            color: #7f8c8d;  
            font-weight: 600;  
            border-bottom: 1px solid #e9ecef;  
        }  
  
        .exception-table td {  
            padding: 15px 20px;  
            border-bottom: 1px solid #e9ecef;  
        }  
  
        .exception-type {  
            display: flex;  
            align-items: center;  
        }  
  
        .type-icon {  
            width: 30px;  
            height: 30px;  
            border-radius: 50%;  
            display: flex;  
            align-items: center;  
            justify-content: center;  
            margin-right: 10px;  
            font-size: 14px;  
        }  
  
        .priority-high {  
            background-color: #e74c3c;  
            color: white;  
        }  
  
        .priority-medium {  
            background-color: #f39c12;  
            color: white;  
        }  
  
        .priority-low {  
            background-color: #3498db;  
            color: white;  
        }  
  
        .status-badge {  
            padding: 5px 12px;  
            border-radius: 20px;  
            font-size: 13px;  
            font-weight: 500;  
        }  
  
        .status-pending {  
            background-color: #fef9e7;  
            color: #f39c12;  
        }  
  
        .status-processing {  
            background-color: #eaf2f8;  
            color: #3498db;  
        }  
  
        .status-resolved {  
            background-color: #eafaf1;  
            color: #27ae60;  
        }  
  
        .action-buttons {  
            display: flex;  
            gap: 10px;  
        }  
  
        .btn {  
            padding: 8px 15px;  
            border-radius: 4px;  
            border: none;  
            cursor: pointer;  
            font-weight: 500;  
            transition: all 0.3s ease;  
        }  
  
        .btn-primary {  
            background-color: #3498db;  
            color: white;  
        }  
  
        .btn-secondary {  
            background-color: #ecf0f1;  
            color: #7f8c8d;  
        }  
  
        .btn:hover {  
            opacity: 0.9;  
            transform: translateY(-2px);  
        }  
  
        .recommendation {  
            background-color: #f8f9fa;  
            padding: 15px;  
            border-left: 3px solid #3498db;  
            margin-top: 10px;  
            border-radius: 0 4px 4px 0;  
        }  
  
        .recommendation-title {  
            font-weight: 600;  
            margin-bottom: 8px;  
            color: #2c3e50;  
        }  
  
        .recommendation-content {  
            color: #7f8c8d;  
            line-height: 1.5;  
        }  
    </style>  
</head>  
<body>  
    <!-- 侧边栏 -->  
    <div class='sidebar'>  
        <div class='logo'>  
            <i class='fas fa-truck'></i>智能物流系统  
        </div>  
        <ul>  
            <li><i class='fas fa-home'></i>首页</li>  
            <li><i class='fas fa-map-marked-alt'></i>路径规划</li>  
            <li><i class='fas fa-chart-line'></i>数据分析</li>  
            <li><i class='fas fa-truck-moving'></i>车辆监控</li>  
            <li class='active'><i class='fas fa-exclamation-triangle'></i>异常处理</li>  
            <li><i class='fas fa-cog'></i>系统设置</li>  
            <li><i class='fas fa-user'></i>个人中心</li>  
            <li><i class='fas fa-sign-out-alt'></i>退出登录</li>  
        </ul>  
    </div>  
  
    <!-- 主内容区 -->  
    <div class="main-content">  
        <div class="header">  
            <h1><i class="fas fa-exclamation-triangle"></i>异常事件处理</h1>  
            <div class="time-display" id="current-time">2023年5月15日 10:30:25</div>  
        </div>  
  
        <div class="dashboard">  
            <div class="card">  
                <div class="card-header">  
                    <div class="card-title">待处理异常</div>  
                    <div class="card-icon" style="background-color: #fef9e7; color: #f39c12;">  
                        <i class="fas fa-clock"></i>  
                    </div>  
                </div>  
                <div class="stat-value">18</div>  
                <div class="stat-label">较昨日 +2</div>  
            </div>  
  
            <div class="card">  
                <div class="card-header">  
                    <div class="card-title">处理中异常</div>  
                    <div class="card-icon" style="background-color: #eaf2f8; color: #3498db;">  
                        <i class="fas fa-sync-alt"></i>  
                    </div>  
                </div>  
                <div class="stat-value">7</div>  
                <div class="stat-label">平均处理时间 35分钟</div>  
            </div>  
  
            <div class="card">  
                <div class="card-header">  
                    <div class="card-title">今日已解决</div>  
                    <div class="card-icon" style="background-color: #eafaf1; color: #27ae60;">  
                        <i class="fas fa-check-circle"></i>  
                    </div>  
                </div>  
                <div class="stat-value">24</div>  
                <div class="stat-label">解决率 92%</div>  
            </div>  
  
            <div class="card">  
                <div class="card-header">  
                    <div class="card-title">异常类型分布</div>  
                    <div class="card-icon" style="background-color: #f5eef8; color: #9b59b6;">  
                        <i class="fas fa-chart-pie"></i>  
                    </div>  
                </div>  
                <div class="chart-container" id="type-chart"></div>  
            </div>  
        </div>  
  
        <div class="exception-list">  
            <div class="list-header">  
                <div class="list-title">异常事件列表</div>  
                <div class="filter-controls">  
                    <button class="filter-btn active">全部</button>  
                    <button class="filter-btn">高优先级</button>  
                    <button class="filter-btn">交通异常</button>  
                    <button class="filter-btn">车辆故障</button>  
                </div>  
            </div>  
  
            <table class="exception-table">  
                <thead>  
                    <tr>  
                        <th style="width: 15%;">异常类型</th>  
                        <th style="width: 15%;">发生时间</th>  
                        <th style="width: 30%;">异常描述</th>  
                        <th style="width: 15%;">状态</th>  
                        <th style="width: 25%;">操作</th>  
                    </tr>  
                </thead>  
                <tbody>  
                    <tr>  
                        <td>  
                            <div class="exception-type">  
                                <div class="type-icon priority-high">  
                                    <i class="fas fa-traffic-light"></i>  
                                </div>  
                                <div>交通拥堵</div>  
                            </div>  
                        </td>  
                        <td>10:15:23</td>  
                        <td>  
                            <div>车辆在XX路段遭遇严重拥堵,预计延误1小时</div>  
                            <div class="recommendation">  
                                <div class="recommendation-title">处理建议</div>  
                                <div class="recommendation-content">建议重新规划路线,避开拥堵路段</div>  
                            </div>  
                        </td>  
                        <td><span class="status-badge status-pending">未处理</span></td>  
                        <td>  
                            <div class="action-buttons">  
                                <button class="btn btn-primary">立即处理</button>  
                                <button class="btn btn-secondary">忽略</button>  
                            </div>  
                        </td>  
                    </tr>  
  
                    <tr>  
                        <td>  
                            <div class="exception-type">  
                                <div class="type-icon priority-medium">  
                                    <i class="fas fa-truck-loading"></i>  
                                </div>  
                                <div>装载异常</div>  
                            </div>  
                        </td>  
                        <td>09:42:11</td>  
                        <td>  
                            <div>车辆装载重量超出限制5%,存在安全隐患</div>  
                            <div class="recommendation">  
                                <div class="recommendation-title">处理建议</div>  
                                <div class="recommendation-content">建议检查货物分布,重新分配或卸下部分货物</div>  
                            </div>  
                        </td>  
                        <td><span class="status-badge status-processing">处理中</span></td>  
                        <td>  
                            <div class="action-buttons">  
                                <button class="btn btn-primary">查看进度</button>  
                                <button class="btn btn-secondary">通知司机</button>  
                            </div>  
                        </td>  
                    </tr>  
  
                    <tr>  
                        <td>  
                            <div class="exception-type">  
                                <div class="type-icon priority-high">  
                                    <i class="fas fa-car-battery"></i>  
                                </div>  
                                <div>车辆故障</div>  
                            </div>  
                        </td>  
                        <td>08:55:30</td>  
                        <td>  
                            <div>车辆发动机温度异常升高,存在故障风险</div>  
                            <div class="recommendation">  
                                <div class="recommendation-title">处理建议</div>  
                                <div class="recommendation-content">建议立即停车检查,派遣维修人员前往</div>  
                            </div>  
                        </td>  
                        <td><span class="status-badge status-pending">未处理</span></td>  
                        <td>  
                            <div class="action-buttons">  
                                <button class="btn btn-primary">立即处理</button>  
                                <button class="btn btn-secondary">忽略</button>  
                            </div>  
                        </td>  
                    </tr>  
  
                    <tr>  
                        <td>  
                            <div class="exception-type">  
                                <div class="type-icon priority-low">  
                                    <i class="fas fa-route"></i>  
                                </div>  
                                <div>路线偏离</div>  
                            </div>  
                        </td>  
                        <td>08:20:45</td>  
                        <td>  
                            <div>车辆偏离预定路线超过3公里,可能绕行</div>  
                            <div class="recommendation">  
                                <div class="recommendation-title">处理建议</div>  
                                <div class="recommendation-content">建议联系司机确认情况,更新路线规划</div>  
                            </div>  
                        </td>  
                        <td><span class="status-badge status-resolved">已解决</span></td>  
                        <td>  
                            <div class="action-buttons">  
                                <button class="btn btn-secondary">查看详情</button>  
                            </div>  
                        </td>  
                    </tr>  
                </tbody>  
            </table>  
        </div>  
    </div>  
  
    <script>  
        // 更新时间显示(提前一个月)  
        function updateTime() {  
            const now = new Date();  
            now.setMonth(now.getMonth() - 1); // 提前一个月  
  
            const year = now.getFullYear();  
            const month = String(now.getMonth() + 1).padStart(2, '0');  
            const day = String(now.getDate()).padStart(2, '0');  
            const hours = String(now.getHours()).padStart(2, '0');  
            const minutes = String(now.getMinutes()).padStart(2, '0');  
            const seconds = String(now.getSeconds()).padStart(2, '0');  
  
            document.getElementById('current-time').textContent =  
                `${year}${month}${day}${hours}:${minutes}:${seconds}`;  
        }  
  
        // 初始化时间  
        updateTime();  
        setInterval(updateTime, 1000);  
  
        // 初始化图表  
        document.addEventListener('DOMContentLoaded', function() {  
            const chartDom = document.getElementById('type-chart');  
            const myChart = echarts.init(chartDom);  
  
            const option = {  
                tooltip: {  
                    trigger: 'item',  
                    formatter: '{a} <br/>{b}: {c} ({d}%)'  
                },  
                legend: {  
                    orient: 'vertical',  
                    right: 10,  
                    top: 'center',  
                    data: ['交通异常', '车辆故障', '路线偏离', '装载异常', '其他']  
                },  
                series: [  
                    {  
                        name: '异常类型',  
                        type: 'pie',  
                        radius: ['40%', '70%'],  
                        avoidLabelOverlap: false,  
                        itemStyle: {  
                            borderRadius: 10,  
                            borderColor: '#fff',  
                            borderWidth: 2  
                        },  
                        label: {  
                            show: false,  
                            position: 'center'  
                        },  
                        emphasis: {  
                            label: {  
                                show: true,  
                                fontSize: '18',  
                                fontWeight: 'bold'  
                            }  
                        },  
                        labelLine: {  
                            show: false  
                        },  
                        data: [  
                            { value: 12, name: '交通异常', itemStyle: { color: '#e74c3c' } },  
                            { value: 8, name: '车辆故障', itemStyle: { color: '#f39c12' } },  
                            { value: 6, name: '路线偏离', itemStyle: { color: '#3498db' } },  
                            { value: 5, name: '装载异常', itemStyle: { color: '#9b59b6' } },  
                            { value: 3, name: '其他', itemStyle: { color: '#95a5a6' } }  
                        ]  
                    }  
                ]  
            };  
  
            myChart.setOption(option);  
  
            // 响应式调整  
            window.addEventListener('resize', function() {  
                myChart.resize();  
            });  
        });  
    </script>  
</body>  
</html>  
问题反馈