aps-agent/aps-frontend/pages/system-interfaces.html

92 lines
5.0 KiB
HTML
Raw Permalink Normal View History

2026-07-21 11:05:57 +08:00
<!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="../css/common.css">
</head>
<body>
<div id="app">
<header class="header" id="header"></header>
<div class="body">
<aside class="sidebar" id="sidebar"></aside>
<main class="main">
<h1 class="page-title">系统集成接口</h1>
<div class="tabs">
<div class="tab active" onclick="switchTab(this,'mes')">聚制云 MES</div>
<div class="tab" onclick="switchTab(this,'erp')">外部 ERP/OMS</div>
<div class="tab" onclick="switchTab(this,'wms')">WMS 仓储</div>
<div class="tab" onclick="switchTab(this,'eam')">EAM/IoT 设备</div>
</div>
<div class="card">
<div class="card-header flex justify-between"><span id="ifTitle">聚制云 MES 接口</span><button class="btn btn-sm btn-primary" onclick="testConnection()">测试连接</button></div>
<div class="card-body table-wrap">
<table id="ifTable"><thead><tr><th>接口编号</th><th>接口名称</th><th>方向</th><th>路径/说明</th><th>状态</th></tr></thead><tbody></tbody></table>
</div>
</div>
</main>
</div>
</div>
<script src="../js/data.js"></script>
<script src="../js/common.js"></script>
<script>
initPage('system-interfaces');
let tab = 'mes';
const dataMap = {
mes: {
title: '聚制云 MES 接口',
rows: [
{ code: 'MES-01', name: '查询工厂模型', dir: '← 查询', path: 'GET /api/mes/v1/factory-model/{factory_id}', status: 'NORMAL' },
{ code: 'MES-02', name: '查询工艺路线', dir: '← 查询', path: 'GET /api/mes/v1/routing/{product_id}', status: 'NORMAL' },
{ code: 'MES-03', name: '查询 BOM', dir: '← 查询', path: 'GET /api/mes/v1/bom/{product_id}', status: 'NORMAL' },
{ code: 'MES-10', name: '推送生产订单', dir: '→ 推送', path: 'POST /api/mes/v1/production-orders/batch', status: 'NORMAL' },
{ code: 'MES-11', name: '推送工单', dir: '→ 推送', path: 'POST /api/mes/v1/work-orders/batch', status: 'NORMAL' },
{ code: 'MES-13', name: '接收执行反馈', dir: '← 回调', path: 'POST /api/aps/v1/execution-feedback', status: 'NORMAL' }
]
},
erp: {
title: '外部 ERP/OMS 接口',
rows: [
{ code: 'EXT-01', name: '创建销售订单', dir: 'POST', path: '/api/v1/sales-orders', status: 'NORMAL' },
{ code: 'EXT-05', name: '触发排产', dir: 'POST', path: '/api/v1/scheduling/run', status: 'NORMAL' },
{ code: 'EXT-06', name: '查询排产结果', dir: 'GET', path: '/api/v1/scheduling/results/{job_id}', status: 'NORMAL' },
{ code: 'EXT-09', name: '工单执行反馈', dir: 'POST', path: '/api/v1/work-orders/{id}/feedback', status: 'NORMAL' },
{ code: 'EXT-11', name: 'Webhook 注册', dir: 'POST', path: '/api/v1/webhooks', status: 'NORMAL' }
]
},
wms: {
title: 'WMS 仓储接口',
rows: [
{ code: 'WMS-01', name: '查询库存', dir: '← 查询', path: 'GET /api/wms/v1/inventory/{material_id}', status: 'NORMAL' },
{ code: 'WMS-02', name: '查询在途', dir: '← 查询', path: 'GET /api/wms/v1/in-transit/{material_id}', status: 'NORMAL' },
{ code: 'WMS-03', name: '齐套检查', dir: '← 查询', path: 'POST /api/wms/v1/kitting-check', status: 'NORMAL' },
{ code: 'WMS-04', name: '备料指令', dir: '→ 推送', path: 'POST /api/wms/v1/picking-orders', status: 'NORMAL' }
]
},
eam: {
title: 'EAM/IoT 设备接口',
rows: [
{ code: 'EAM-01', name: '查询设备台账', dir: '← 查询', path: 'GET /api/eam/v1/equipment', status: 'NORMAL' },
{ code: 'EAM-02', name: '查询维保计划', dir: '← 查询', path: 'GET /api/eam/v1/maintenance', status: 'NORMAL' },
{ code: 'IoT-01', name: '查询设备状态', dir: '← 查询', path: 'GET /api/iot/v1/equipment/{id}/status', status: 'NORMAL' },
{ code: 'IoT-02', name: '设备状态变更订阅', dir: '← 监听', path: 'WebSocket /ws/v1/equipment', status: 'NORMAL' }
]
}
};
function switchTab(el, key) { $$('.tab').forEach(t => t.classList.remove('active')); el.classList.add('active'); tab = key; render(); }
function render() {
const d = dataMap[tab];
document.getElementById('ifTitle').textContent = d.title;
document.querySelector('#ifTable tbody').innerHTML = d.rows.map(r => `
<tr><td>${r.code}</td><td>${r.name}</td><td>${r.dir}</td><td class="text-muted">${r.path}</td><td>${r.status === 'NORMAL' ? '<span class="badge badge-success">正常</span>' : '<span class="badge badge-danger">异常</span>'}</td></tr>
`).join('');
}
function testConnection() {
showToast('连接测试', `${dataMap[tab].title} 连接正常`, 'success');
}
render();
</script>
</body>
</html>