opo-任务聚焦edit icon

作者:
Fadinghaze
Fork(复制)
下载
嵌入
BUG反馈
index.html
style.css
index.js
现在支持上传本地图片了!
index.html
            
            <!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>OPO 指挥调度大屏 - 任务聚焦模式原型</title>

    <!-- 引入 Font Awesome 图标库 -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
    
    <!-- 引入 Noto Sans SC 字体 -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">

    <!-- 引入 ECharts 用于美化图表 -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.5.0/echarts.min.js"></script>

    <style>
        :root {
            --bg-color: #0A192F;
            --panel-bg: rgba(10, 25, 47, 0.85);
            --border-color: rgba(0, 175, 255, 0.2);
            --primary-color: #00AFFF;
            --success-color: #28a745;
            --warning-color: #FFC107;
            --danger-color: #DC3545;
            --muted-color: #6c757d;
            --text-color: #E0E6F1;
            --text-secondary: #8899B3;
        }
        * { box-sizing: border-box; margin: 0; padding: 0; }

        body {
            background-color: var(--bg-color);
            font-family: 'Noto Sans SC', sans-serif;
            color: var(--text-color);
            width: 1920px;
            height: 1080px;
            overflow: hidden;
            position: relative;
        }

        .screen-container {
            width: 100%;
            height: 100%;
            display: grid;
            grid-template-columns: 380px 1fr 380px;
            grid-template-rows: 80px 1fr;
            grid-template-areas:
                "header header header"
                "left-panel center-map right-panel";
            padding: 20px;
            gap: 20px;
        }

        /* --- 顶部栏 --- */
        .header {
            grid-area: header;
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0 20px;
            background: var(--panel-bg);
            border: 1px solid var(--border-color);
            border-radius: 12px;
        }
        .header .back-button {
            font-size: 18px;
            color: var(--primary-color);
            text-decoration: none;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        .header .task-title { font-size: 24px; font-weight: 700; }
        .header .system-time { font-size: 18px; font-weight: 300; }

        /* --- GIS 地图区域 --- */
        .center-map {
            grid-area: center-map;
            background: url('https://i.ibb.co/hLw20v2/layout.png') no-repeat center center; /* 替换为真实的地图截图 */
            background-size: cover;
            border-radius: 12px;
            border: 1px solid var(--border-color);
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .map-placeholder-text {
            font-size: 48px;
            font-weight: 700;
            color: rgba(255,255,255,0.3);
            text-shadow: 0 0 10px rgba(0,0,0,0.5);
        }

        /* --- 左右侧面板通用 --- */
        .side-panel {
            grid-row: 2;
            background: var(--panel-bg);
            backdrop-filter: blur(10px);
            border: 1px solid var(--border-color);
            border-radius: 12px;
            display: flex;
            flex-direction: column;
            gap: 20px;
            padding: 20px;
            height: 960px;
            overflow-y: auto;
        }
        .side-panel::-webkit-scrollbar { display: none; }

        .panel-card {
            background: rgba(0, 175, 255, 0.05);
            border: 1px solid var(--border-color);
            border-radius: 8px;
            padding: 15px;
        }
        .card-header {
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 16px;
            font-weight: 500;
            padding-bottom: 10px;
            margin-bottom: 15px;
            border-bottom: 1px solid var(--border-color);
        }
        .card-header i { color: var(--primary-color); }

        /* --- 左侧面板:任务流程与控制 --- */
        .task-summary-card .info-row,
        .context-info-card .info-row {
            display: flex; align-items: flex-start; gap: 10px;
            font-size: 14px; line-height: 1.6;
        }
        .task-summary-card .info-row i,
        .context-info-card .info-row i {
            width: 20px; text-align: center; color: var(--text-secondary); margin-top: 4px;
        }
        .task-summary-card .info-row strong,
        .context-info-card .info-row strong { font-weight: 500; color: #fff; }

        .sop-card .sop-list { list-style: none; display: flex; flex-direction: column; gap: 12px; }
        .sop-card .sop-item { display: flex; align-items: center; gap: 10px; }
        .sop-card .sop-item i { width: 20px; text-align: center; }
        .sop-card .sop-item.completed { color: var(--success-color); text-decoration: line-through; opacity: 0.7; }
        .sop-card .sop-item.active { color: var(--warning-color); font-weight: 700; }
        
        .action-card .button {
            width: 100%; padding: 15px; border: none; border-radius: 8px; color: #fff;
            font-size: 16px; font-weight: 500; cursor: pointer; transition: all 0.2s ease;
            display: flex; justify-content: center; align-items: center; gap: 10px;
        }
        .action-card .button:not(:last-child) { margin-bottom: 10px; }
        .action-card .button.primary { background-color: var(--primary-color); }
        .action-card .button.secondary { background-color: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); }
        .action-card .button:hover { opacity: 0.9; }

        /* --- 右侧面板:AI辅助与情境信息 --- */
        .ai-agent-card .recommendation {
            background: rgba(0, 175, 255, 0.1); border-radius: 6px; padding: 12px; margin-bottom: 10px;
        }
        .kpi-card .kpi-item { text-align: center; }
        .kpi-card .kpi-value { font-size: 28px; font-weight: 700; margin-bottom: 5px; }
        .kpi-card .kpi-label { font-size: 14px; color: var(--text-secondary); }
        .echarts-gauge { width: 100%; height: 150px; }

        .accordion .accordion-item {
            margin-bottom: 10px;
            border: 1px solid var(--border-color); border-radius: 6px;
        }
        .accordion .accordion-header {
            padding: 12px 15px; background: rgba(0, 175, 255, 0.1); cursor: pointer;
            display: flex; justify-content: space-between; align-items: center;
        }
        .accordion .accordion-content { padding: 15px; display: flex; flex-direction: column; gap: 12px; }

        /* --- 状态化设计 --- */
        .tab-content { display: none; }
        .tab-content.active { display: block; }
        .tabs { display: flex; justify-content: center; margin-bottom: 20px; background: rgba(0,0,0,0.2); border-radius: 8px; padding: 5px; }
        .tab-button {
            flex: 1; padding: 10px; border: none; background: transparent; color: var(--text-secondary);
            cursor: pointer; border-radius: 6px; transition: all 0.3s ease;
        }
        .tab-button.active { background: var(--primary-color); color: #fff; font-weight: 500; }

        /* 异常状态的特殊样式 */
        .alert-mode .screen-container { box-shadow: 0 0 30px rgba(220, 53, 69, 0.7), inset 0 0 30px rgba(220, 53, 69, 0.5); }
        .alert-mode .header .task-title { color: var(--danger-color); }
        .alert-banner {
            background: var(--danger-color); color: #fff; padding: 15px; font-size: 18px;
            font-weight: 700; border-radius: 8px; text-align: center; margin-bottom: 20px;
        }
        .ai-agent-card.alert-ai { background: rgba(220, 53, 69, 0.1); border-color: var(--danger-color); }
        .ai-agent-card.alert-ai .card-header i { color: var(--danger-color); }
        .action-card .button.danger { background: var(--danger-color); }

    </style>
</head>
<body id="body">

    <div class="tabs">
        <button class="tab-button active" onclick="switchTab('initiated')">待启动</button>
        <button class="tab-button" onclick="switchTab('inprogress')">进行中-正常</button>
        <button class="tab-button" onclick="switchTab('alert')">进行中-异常</button>
        <button class="tab-button" onclick="switchTab('completed')">已结束</button>
    </div>

    <div id="initiated" class="tab-content active">
        <!-- 待启动界面的 screen-container -->
        <div class="screen-container">
            <header class="header">
                <a href="#" class="back-button"><i class="fas fa-arrow-left"></i> 返回全局监控</a>
                <div class="task-title">聚焦任务: T240808-01</div>
                <div class="system-time">2024-08-08 13:50:15</div>
            </header>
    
            <!-- 左侧面板 -->
            <aside class="side-panel left-panel">
                <div class="panel-card task-summary-card">
                    <div class="card-header"><i class="fas fa-file-alt"></i>任务摘要</div>
                    <div class="info-row"><i class="fas fa-flag"></i><div><strong>类型:</strong> 器官转运</div></div>
                    <div class="info-row"><i class="fas fa-location-arrow"></i><div><strong>起点:</strong> 江苏省人民医院 - OR 3</div></div>
                    <div class="info-row"><i class="fas fa-location-dot"></i><div><strong>终点:</strong> 南京市第一医院 - OR 8</div></div>
                    <div class="info-row"><i class="fas fa-lungs"></i><div><strong>器官:</strong> 肝脏 x 1, 肾脏 x 2</div></div>
                </div>
                <div class="panel-card sop-card">
                    <div class="card-header"><i class="fas fa-tasks"></i>SOP 待办清单</div>
                    <ul class="sop-list">
                        <li class="sop-item active"><i class="fas fa-user-plus"></i>1. 分配协调员与设备</li>
                        <li class="sop-item"><i class="fas fa-running"></i>2. 协调员出发</li>
                        <li class="sop-item"><i class="fas fa-hospital"></i>3. 到达获取点</li>
                        <li class="sop-item"><i class="fas fa-box-open"></i>4. 器官获取完成</li>
                        <li class="sop-item"><i class="fas fa-route"></i>5. 开始运输</li>
                        <li class="sop-item"><i class="fas fa-flag-checkered"></i>6. 交付完成</li>
                    </ul>
                </div>
                 <div class="panel-card action-card">
                    <div class="card-header"><i class="fas fa-cogs"></i>任务操作</div>
                    <button class="button primary"><i class="fas fa-rocket"></i>指派任务</button>
                    <button class="button secondary"><i class="fas fa-times-circle"></i>取消任务</button>
                </div>
            </aside>
    
            <!-- 地图 -->
            <main class="center-map">
                <div class="map-placeholder-text">GIS 地图区域</div>
            </main>
    
            <!-- 右侧面板 -->
            <aside class="side-panel right-panel">
                <div class="panel-card ai-agent-card">
                    <div class="card-header"><i class="fas fa-brain"></i>AI 调度建议</div>
                    <div class="recommendation">
                        <strong>张三</strong> <span style="color:var(--success-color);">(最优)</span><br>
                        <small>距起点: 5.2km | ETA: 12分钟 | 经验: ICU背景</small>
                    </div>
                    <div class="recommendation">
                        <strong>李四</strong><br>
                        <small>距起点: 8.1km | ETA: 20分钟 | 经验: 神经外科</small>
                    </div>
                    <div class="recommendation">
                        <strong>王五</strong><br>
                        <small>距起点: 6.5km | ETA: 18分钟 | 经验: 肝移植协调</small>
                    </div>
                </div>
                <div class="panel-card kpi-card">
                    <div class="card-header"><i class="fas fa-tachometer-alt"></i>全局资源状态</div>
                    <div style="display:flex; justify-content: space-around;">
                        <div class="kpi-item">
                            <div class="kpi-value" style="color:var(--success-color)">12</div>
                            <div class="kpi-label">空闲协调员</div>
                        </div>
                        <div class="kpi-item">
                            <div class="kpi-value">5</div>
                            <div class="kpi-label">可用转运箱</div>
                        </div>
                    </div>
                </div>
                <div class="panel-card context-info-card accordion">
                    <div class="accordion-item">
                        <div class="accordion-header"><strong><i class="fas fa-file-signature"></i>前置文书详情</strong> <i class="fas fa-chevron-down"></i></div>
                        <div class="accordion-content">
                             <div class="info-row"><i class="fas fa-check-circle" style="color:var(--success-color)"></i><div><strong>捐赠协议:</strong> 已签署并上传</div></div>
                             <div class="info-row"><i class="fas fa-check-circle" style="color:var(--success-color)"></i><div><strong>死亡证明:</strong> 已确认</div></div>
                        </div>
                    </div>
                </div>
            </aside>
        </div>
    </div>
    
    <div id="inprogress" class="tab-content">
        <!-- 进行中-正常界面的 screen-container -->
        <div class="screen-container">
            <header class="header">
                 <a href="#" class="back-button"><i class="fas fa-arrow-left"></i> 返回全局监控</a>
                <div class="task-title" style="color:var(--success-color)">聚焦任务: T240808-02</div>
                <div class="system-time">2024-08-08 14:30:00</div>
            </header>
            <aside class="side-panel left-panel">
                 <div class="panel-card task-summary-card">
                    <div class="card-header"><i class="fas fa-file-alt"></i>任务摘要</div>
                    <div class="info-row"><i class="fas fa-flag"></i><div><strong>类型:</strong> 器官转运</div></div>
                    <div class="info-row"><i class="fas fa-location-arrow"></i><div><strong>起点:</strong> 江苏省人民医院 - OR 3</div></div>
                    <div class="info-row"><i class="fas fa-location-dot"></i><div><strong>终点:</strong> 南京市第一医院 - OR 8</div></div>
                    <div class="info-row"><i class="fas fa-lungs"></i><div><strong>器官:</strong> 肝脏 x 1, 肾脏 x 2</div></div>
                </div>
                 <div class="panel-card sop-card">
                    <div class="card-header"><i class="fas fa-tasks"></i>SOP 进度与日志</div>
                     <ul class="sop-list">
                        <li class="sop-item completed"><i class="fas fa-check-circle"></i>1. 分配协调员: 张三 (14:05)</li>
                        <li class="sop-item completed"><i class="fas fa-check-circle"></i>2. 协调员出发 (14:10)</li>
                        <li class="sop-item active"><i class="fas fa-hospital"></i>3. 到达获取点...</li>
                    </ul>
                </div>
                <div class="panel-card action-card">
                    <div class="card-header"><i class="fas fa-cogs"></i>过程干预</div>
                    <button class="button primary"><i class="fas fa-video"></i>视频通话</button>
                    <button class="button secondary"><i class="fas fa-paper-plane"></i>发送指令</button>
                </div>
            </aside>
             <main class="center-map"><div class="map-placeholder-text">GIS 地图区域</div></main>
            <aside class="side-panel right-panel">
                 <div class="panel-card ai-agent-card">
                    <div class="card-header"><i class="fas fa-shield-alt"></i>AI 质控监控</div>
                    <div class="info-row"><i class="fas fa-check-circle" style="color:var(--success-color)"></i><strong>设备状态正常:</strong> T08转运箱参数稳定。</div>
                    <div class="info-row"><i class="fas fa-check-circle" style="color:var(--success-color)"></i><strong>路线通畅:</strong> 预计将提前5分钟到达。</div>
                </div>
                <div class="panel-card kpi-card">
                    <div class="card-header"><i class="fas fa-tachometer-alt"></i>实时 KPI 监控</div>
                    <div id="gauge-chart" class="echarts-gauge"></div>
                    <div style="display:flex; justify-content: space-around;">
                        <div class="kpi-item">
                            <div class="kpi-value" style="color:var(--warning-color)">07:34:38</div>
                            <div class="kpi-label">冷缺血剩余时间</div>
                        </div>
                         <div class="kpi-item">
                            <div class="kpi-value">14:55</div>
                            <div class="kpi-label">预计到达</div>
                        </div>
                    </div>
                </div>
                 <div class="panel-card context-info-card accordion">
                     <div class="accordion-item">
                        <div class="accordion-header"><strong><i class="fas fa-user-tie"></i>协调员详情</strong> <i class="fas fa-chevron-down"></i></div>
                        <div class="accordion-content">
                            <div class="info-row"><i class="fas fa-id-badge"></i><div><strong>姓名:</strong> 张三</div></div>
                            <div class="info-row"><i class="fas fa-phone"></i><div><strong>电话:</strong> 138****5678</div></div>
                        </div>
                    </div>
                </div>
            </aside>
        </div>
    </div>
    
    <div id="alert" class="tab-content">
        <!-- 进行中-异常界面的 screen-container -->
        <div class="screen-container alert-mode">
            <header class="header">
                 <a href="#" class="back-button"><i class="fas fa-arrow-left"></i> 返回全局监控</a>
                <div class="task-title">聚焦任务: T240808-03</div>
                <div class="system-time">2024-08-08 15:10:45</div>
            </header>
            <aside class="side-panel left-panel">
                <div class="alert-banner"><i class="fas fa-exclamation-triangle"></i> 严重预警: 转运箱温度超标!</div>
                <div class="panel-card task-summary-card">
                    <div class="card-header"><i class="fas fa-file-alt"></i>任务摘要</div>
                    <div class="info-row"><i class="fas fa-flag"></i><div><strong>类型:</strong> 器官转运</div></div>
                    <div class="info-row"><i class="fas fa-location-arrow"></i><div><strong>起点:</strong> 江苏省人民医院 - OR 3</div></div>
                    <div class="info-row"><i class="fas fa-location-dot"></i><div><strong>终点:</strong> 南京市第一医院 - OR 8</div></div>
                </div>
                <div class="panel-card sop-card">
                    <div class="card-header"><i class="fas fa-tasks"></i>操作日志 (最新)</div>
                     <ul class="sop-list">
                         <li class="sop-item" style="color: var(--danger-color); font-weight:700;"><i class="fas fa-exclamation-circle"></i>15:10 [预警] T03温度达到8.2°C</li>
                         <li class="sop-item completed"><i class="fas fa-check-circle"></i>14:45 开始运输</li>
                    </ul>
                </div>
                <div class="panel-card action-card">
                     <div class="card-header"><i class="fas fa-cogs"></i>应急处置</div>
                    <button class="button danger"><i class="fas fa-siren-on"></i>启动应急预案</button>
                    <button class="button secondary"><i class="fas fa-video"></i>紧急视频通话</button>
                </div>
            </aside>
            <main class="center-map"><div class="map-placeholder-text">GIS 地图区域</div></main>
            <aside class="side-panel right-panel">
                <div class="panel-card ai-agent-card alert-ai">
                    <div class="card-header"><i class="fas fa-brain"></i>AI 紧急响应</div>
                    <div><strong>风险研判:</strong> <span style="color:var(--danger-color)">高风险</span>。原因分析: 设备故障概率75%。</div>
                    <hr style="border-color:rgba(220, 53, 69, 0.3); margin: 15px 0;">
                    <div><strong>处置建议:</strong></div>
                    <ul style="list-style:none; padding-left:10px;">
                        <li>1. 立即启动《冷链异常应急预案》。</li>
                        <li>2. 调度最近备用转运箱T11 (距15km)。</li>
                        <li>3. 规划至南京鼓楼医院进行临时交接。</li>
                    </ul>
                </div>
                <div class="panel-card kpi-card">
                     <div class="card-header"><i class="fas fa-tachometer-alt"></i>实时 KPI 监控</div>
                     <div id="gauge-chart-alert" class="echarts-gauge"></div>
                </div>
                <div class="panel-card context-info-card accordion">
                    <div class="accordion-item">
                        <div class="accordion-header"><strong><i class="fas fa-box"></i>设备实时参数</strong> <i class="fas fa-chevron-down"></i></div>
                        <div class="accordion-content">
                            <div class="info-row"><i class="fas fa-temperature-high"></i><div><strong>温度:</strong> <span style="color:var(--danger-color);font-weight:700;">8.2°C</span></div></div>
                            <div class="info-row"><i class="fas fa-tint"></i><div><strong>湿度:</strong> 65%</div></div>
                        </div>
                    </div>
                </div>
            </aside>
        </div>
    </div>

    <div id="completed" class="tab-content">
        <!-- 已结束界面的 screen-container -->
        <div class="screen-container">
            <header class="header">
                 <a href="#" class="back-button"><i class="fas fa-arrow-left"></i> 返回全局监控</a>
                <div class="task-title" style="color:var(--muted-color)">聚焦任务: T240808-04</div>
                <div class="system-time">2024-08-08 17:00:00</div>
            </header>
            <aside class="side-panel left-panel">
                <div class="panel-card task-summary-card">
                    <div class="card-header"><i class="fas fa-file-alt"></i>任务总结报告</div>
                    <div class="info-row"><i class="fas fa-check-circle" style="color:var(--success-color)"></i><div><strong>最终状态:</strong> 交付成功</div></div>
                    <div class="info-row"><i class="fas fa-calendar-check"></i><div><strong>完成时间:</strong> 16:30:00</div></div>
                    <div class="info-row"><i class="fas fa-clock"></i><div><strong>总耗时:</strong> 2小时45分钟</div></div>
                    <div class="info-row"><i class="fas fa-road"></i><div><strong>总里程:</strong> 123.5 公里</div></div>
                </div>
                <div class="panel-card sop-card">
                    <div class="card-header"><i class="fas fa-history"></i>完整操作日志</div>
                     <ul class="sop-list">
                         <li class="sop-item completed"><i class="fas fa-check-circle"></i>16:30 交付完成</li>
                         <li class="sop-item completed"><i class="fas fa-check-circle"></i>13:45 开始运输</li>
                         <li class="sop-item completed"><i class="fas fa-check-circle"></i>13:30 器官获取完成</li>
                    </ul>
                </div>
                <div class="panel-card action-card">
                    <div class="card-header"><i class="fas fa-cogs"></i>任务复盘</div>
                    <button class="button" style="background-color:var(--muted-color)"><i class="fas fa-route"></i>轨迹回放</button>
                    <button class="button secondary"><i class="fas fa-file-pdf"></i>生成详细报告</button>
                </div>
            </aside>
            <main class="center-map"><div class="map-placeholder-text">GIS 地图区域</div></main>
            <aside class="side-panel right-panel">
                <div class="panel-card ai-agent-card">
                    <div class="card-header"><i class="fas fa-chart-pie"></i>AI 绩效分析</div>
                    <div><strong>总耗时评估:</strong> <span style="color:var(--success-color)">优秀</span> (比同类任务平均快15分钟)。</div>
                    <hr style="border-color:var(--border-color); margin: 15px 0;">
                    <div><strong>运输效率:</strong> 高于平均水平。</div>
                </div>
                 <div class="panel-card context-info-card accordion">
                     <div class="accordion-item">
                        <div class="accordion-header"><strong><i class="fas fa-file-invoice"></i>交付文书回执</strong> <i class="fas fa-chevron-down"></i></div>
                        <div class="accordion-content">
                            <div class="info-row"><i class="fas fa-check-circle" style="color:var(--success-color)"></i><div><strong>器官接收确认单:</strong> 已签署并归档</div></div>
                        </div>
                    </div>
                </div>
            </aside>
        </div>
    </div>
    
    <script>
        // Tab切换逻辑
        function switchTab(tabId) {
            const tabContents = document.querySelectorAll('.tab-content');
            tabContents.forEach(content => {
                content.classList.remove('active');
            });
            document.getElementById(tabId).classList.add('active');

            const tabButtons = document.querySelectorAll('.tab-button');
            tabButtons.forEach(button => {
                button.classList.remove('active');
            });
            event.currentTarget.classList.add('active');
            
            // 切换时改变body的class,用于触发特定状态的样式
            document.getElementById('body').className = (tabId === 'alert') ? 'alert-mode' : '';
            // 重新初始化图表
            initCharts();
        }

        // ECharts 初始化
        function initCharts() {
            // 正常状态的仪表盘
            var gaugeChartDom = document.getElementById('gauge-chart');
            if (gaugeChartDom) {
                var myGaugeChart = echarts.init(gaugeChartDom);
                var gaugeOption = {
                    series: [{
                        type: 'gauge',
                        startAngle: 180, endAngle: 0,
                        center: ['50%', '75%'], radius: '90%',
                        min: 0, max: 8 * 3600, splitNumber: 8,
                        axisLine: { lineStyle: { width: 6, color: [[0.25, '#dc3545'], [0.5, '#ffc107'], [1, '#28a745']] } },
                        pointer: { icon: 'path://M12.8,0.7l12,40.1H0.7L12.8,0.7z', length: '12%', width: 20, offsetCenter: [0, '-60%'], itemStyle: { color: 'auto' } },
                        axisTick: { length: 12, lineStyle: { color: 'auto', width: 2 } },
                        splitLine: { length: 20, lineStyle: { color: 'auto', width: 5 } },
                        axisLabel: { color: '#fff', fontSize: 12, distance: -60, formatter: function (value) { return Math.round(value/3600); } },
                        title: { offsetCenter: [0, '-10%'], fontSize: 16, color: '#fff' },
                        detail: { fontSize: 0 },
                        data: [{ value: 7.5 * 3600, name: 'H' }]
                    }]
                };
                myGaugeChart.setOption(gaugeOption);
            }

            // 异常状态的仪表盘
            var gaugeAlertChartDom = document.getElementById('gauge-chart-alert');
            if(gaugeAlertChartDom){
                var myGaugeAlertChart = echarts.init(gaugeAlertChartDom);
                var gaugeAlertOption = {
                     series: [{
                        type: 'gauge',
                        startAngle: 180, endAngle: 0,
                        center: ['50%', '75%'], radius: '90%',
                        min: 0, max: 8 * 3600, splitNumber: 8,
                        axisLine: { lineStyle: { width: 6, color: [[0.25, '#dc3545'], [0.5, '#ffc107'], [1, '#28a745']] } },
                        pointer: { itemStyle: { color: '#dc3545' } },
                        axisTick: { length: 12, lineStyle: { color: 'auto', width: 2 } },
                        splitLine: { length: 20, lineStyle: { color: 'auto', width: 5 } },
                        axisLabel: { color: '#fff', fontSize: 12, distance: -60, formatter: function (value) { return Math.round(value/3600); } },
                        title: { offsetCenter: [0, '-20%'], fontSize: 20, fontWeight: 'bolder', color: '#dc3545' },
                        detail: { fontSize: 14, color: '#ffc2c2', offsetCenter: [0, '10%'], formatter: '{value} / 08:00:00'},
                        data: [{ value: '03:29:42', name: '剩余时间' }]
                    }]
                };
                // 模拟一个值来定位指针
                gaugeAlertOption.series[0].data[0].value = 3.5 * 3600;
                myGaugeAlertChart.setOption(gaugeAlertOption);
            }
        }

        // 页面加载后初始化图表
        document.addEventListener('DOMContentLoaded', function() {
            initCharts();
        });
    </script>
</body>
</html>
        
编辑器加载中
预览
控制台