2025-11-21 13:27:40 +00:00
<!DOCTYPE html>
< html lang = "zh-CN" >
< head >
< meta charset = "utf-8" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > 韬智生产管理系统< / title >
2026-03-26 02:18:20 +00:00
< link rel = "icon" type = "image/x-icon" href = "./assets/icon.ico" / >
2026-01-05 02:27:58 +00:00
<!-- Modern Professional Typography -->
< link rel = "preconnect" href = "https://fonts.googleapis.com" / >
2025-11-21 13:27:40 +00:00
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin / >
2026-01-05 02:27:58 +00:00
< link href = "https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;500;600;700&family=Poppins:wght@400;500;600;700&display=swap" rel = "stylesheet" / >
2025-11-22 08:27:41 +00:00
< link rel = "stylesheet" href = "./assets/styles.css?v=20251122" / >
2026-01-05 02:27:58 +00:00
< link rel = "stylesheet" href = "./assets/dashboard-enhancements.css" / >
2025-12-08 03:20:28 +00:00
< link rel = "stylesheet" href = "./assets/mod.css" / >
2026-01-05 07:19:13 +00:00
< link rel = "stylesheet" href = "./assets/meituan-test.css" / >
2025-11-21 13:27:40 +00:00
< / head >
< body >
2026-01-03 11:18:40 +00:00
<!-- 初始加载提示 -->
< div id = "initial-loading" style = "position:fixed;top:0;left:0;width:100%;height:100%;background:#f8f9fa;display:flex;align-items:center;justify-content:center;z-index:9999;" >
< div style = "text-align:center;" >
< div style = "width:40px;height:40px;border:3px solid #e9ecef;border-top:3px solid #007bff;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 20px;" > < / div >
< p style = "color:#666;margin:0;" > 正在加载系统...< / p >
< / div >
< / div >
< style >
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
< / style >
< div id = "app" class = "trackit-layout" style = "opacity:0;" >
2025-12-12 05:17:42 +00:00
<!-- 顶部导航栏 -->
2025-12-30 06:35:09 +00:00
< header class = "topbar sidebar" id = "sidebar" >
2025-12-12 05:17:42 +00:00
< div class = "topbar-left" >
< div class = "brand" >
2026-03-26 02:18:20 +00:00
< div class = "brand-content" >
< div class = "brand-logo" >
< img src = "./assets/icon.ico" alt = "Logo" style = "width:100%;height:100%;object-fit:contain" / >
2025-12-10 06:42:48 +00:00
< / div >
2026-03-26 02:18:20 +00:00
< span class = "brand-name" > 韬智生产管理< / span >
2025-12-10 06:42:48 +00:00
< / div >
2025-12-30 06:35:09 +00:00
< button id = "sidebar-toggle" class = "sidebar-toggle" type = "button" aria-label = "切换侧边栏" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M15 18l-6-6 6-6" / >
< / svg >
< / button >
< / div >
< div class = "sidebar-search" >
< span class = "search-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "11" cy = "11" r = "7" / >
< path d = "M20 20l-3.5-3.5" / >
< / svg >
< / span >
< input class = "sidebar-search-input" type = "text" placeholder = "搜索菜单 (Ctrl+K)" autocomplete = "off" / >
2025-12-10 06:42:48 +00:00
< / div >
2025-12-12 05:17:42 +00:00
< nav class = "topnav" id = "topnav" >
2025-12-30 06:35:09 +00:00
< a href = "#/dashboard" class = "topnav-item" data-route = "dashboard" >
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< rect x = "3" y = "3" width = "7" height = "7" rx = "2" / >
< rect x = "14" y = "3" width = "7" height = "7" rx = "2" / >
< rect x = "14" y = "14" width = "7" height = "7" rx = "2" / >
< rect x = "3" y = "14" width = "7" height = "7" rx = "2" / >
< / svg >
< / span >
< span class = "topnav-text" > 仪表盘< / span >
< / span >
< / a >
2025-12-12 05:17:42 +00:00
< div class = "topnav-item has-dropdown" data-menu = "upload" >
2025-12-30 06:35:09 +00:00
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M20 16.5a4.5 4.5 0 0 0-1.8-8.7A6 6 0 0 0 6 9a4 4 0 0 0 0 8h14" / >
< path d = "M12 12v9" / >
< path d = "M8 16l4-4 4 4" / >
< / svg >
< / span >
< span class = "topnav-text" > 上传< / span >
< / span >
2026-01-15 06:48:40 +00:00
< span class = "topnav-caret" > < / span >
2025-12-12 05:17:42 +00:00
< div class = "topnav-dropdown" >
< a href = "#/upload/mac" class = "dropdown-item" data-route = "upload-mac" > MAC与批次< / a >
< a href = "#/upload/stats" class = "dropdown-item" data-route = "upload-stats" > 良/不良统计< / a >
< a href = "#/upload/repairs" class = "dropdown-item" data-route = "upload-repairs" > 返修记录< / a >
< a href = "#/upload/shipments" class = "dropdown-item" data-route = "upload-shipments" > 发货记录< / a >
< a href = "#/upload/sop" class = "dropdown-item" data-route = "upload-sop" > SOP< / a >
2025-11-21 13:27:40 +00:00
< / div >
< / div >
2025-12-12 05:17:42 +00:00
< div class = "topnav-item has-dropdown" data-menu = "query" >
2025-12-30 06:35:09 +00:00
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "11" cy = "11" r = "7" / >
< path d = "M20 20l-3.5-3.5" / >
< / svg >
< / span >
< span class = "topnav-text" > 出货查询< / span >
< / span >
2026-01-15 06:48:40 +00:00
< span class = "topnav-caret" > < / span >
2025-12-12 05:17:42 +00:00
< div class = "topnav-dropdown" >
< a href = "#/shipments/query" class = "dropdown-item" data-route = "shipments-query" > 详细记录查询< / a >
< a href = "#/shipments/summary" class = "dropdown-item" data-route = "shipments-summary" > 汇总信息查询< / a >
2026-03-12 05:22:48 +00:00
< a href = "#/shipments/audit" class = "dropdown-item" data-route = "shipments-audit" > 审计查询< / a >
2025-11-21 14:04:43 +00:00
< / div >
< / div >
2025-12-12 05:17:42 +00:00
< div class = "topnav-item has-dropdown" data-menu = "production" >
2025-12-30 06:35:09 +00:00
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 21V9l6 3V9l6 3V9l6 3v9" / >
< path d = "M3 21h18" / >
< / svg >
< / span >
< span class = "topnav-text" > 生产管理< / span >
< / span >
2026-01-15 06:48:40 +00:00
< span class = "topnav-caret" > < / span >
2025-12-12 05:17:42 +00:00
< div class = "topnav-dropdown" >
< a href = "#/production-mgmt/work-order" class = "dropdown-item" data-route = "production-mgmt-work-order" > 生产工单下发中心< / a >
2025-11-23 05:28:53 +00:00
< / div >
< / div >
2025-12-12 05:17:42 +00:00
< div class = "topnav-item has-dropdown" data-menu = "plan" >
2025-12-30 06:35:09 +00:00
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< rect x = "3" y = "4" width = "18" height = "18" rx = "2" / >
< path d = "M16 2v4" / >
< path d = "M8 2v4" / >
< path d = "M3 10h18" / >
< / svg >
< / span >
< span class = "topnav-text" > 计划管理< / span >
< / span >
2026-01-15 06:48:40 +00:00
< span class = "topnav-caret" > < / span >
2025-12-12 05:17:42 +00:00
< div class = "topnav-dropdown" >
< a href = "#/plan-mgmt/initial-stock" class = "dropdown-item" data-route = "plan-mgmt-initial-stock" > 期初库存< / a >
< a href = "#/plan-mgmt/purchase-demand" class = "dropdown-item" data-route = "plan-mgmt-purchase-demand" > 采购需求清单< / a >
< a href = "#/plan-mgmt/customer-order" class = "dropdown-item" data-route = "plan-mgmt-customer-order" > 客户订单< / a >
< a href = "#/plan-mgmt/reconciliation" class = "dropdown-item" data-route = "plan-mgmt-reconciliation" > 对账单< / a >
2025-11-24 01:30:08 +00:00
< / div >
< / div >
2026-03-13 02:48:38 +00:00
< div class = "topnav-item has-dropdown" data-menu = "outsourcing" >
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" / >
< circle cx = "9" cy = "7" r = "4" / >
< path d = "M22 21v-2a4 4 0 0 0-3-3.87" / >
< path d = "M16 3.13a4 4 0 0 1 0 7.75" / >
< / svg >
< / span >
< span class = "topnav-text" > 委外管理< / span >
< / span >
< span class = "topnav-caret" > < / span >
< div class = "topnav-dropdown" >
< a href = "#/outsourcing-mgmt/orders" class = "dropdown-item" data-route = "outsourcing-mgmt-orders" > 委外工单< / a >
< a href = "#/outsourcing-mgmt/material-issue" class = "dropdown-item" data-route = "outsourcing-mgmt-material-issue" > 委外发料< / a >
< a href = "#/outsourcing-mgmt/finished-goods-receipt" class = "dropdown-item" data-route = "outsourcing-mgmt-finished-goods-receipt" > 成品入库< / a >
< a href = "#/outsourcing-mgmt/wip-stock" class = "dropdown-item" data-route = "outsourcing-mgmt-wip-stock" > 委外在制库存< / a >
< / div >
< / div >
2025-12-12 05:17:42 +00:00
< div class = "topnav-item has-dropdown" data-menu = "collect" >
2025-12-30 06:35:09 +00:00
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M4 19V5" / >
< path d = "M4 15c2-2 4-3 8-3s6-1 8-3" / >
< path d = "M20 19V5" / >
< / svg >
< / span >
< span class = "topnav-text" > 采集< / span >
< / span >
2026-01-15 06:48:40 +00:00
< span class = "topnav-caret" > < / span >
2025-12-12 05:17:42 +00:00
< div class = "topnav-dropdown" >
< a href = "#/devices" class = "dropdown-item" data-route = "devices" > 设备状态< / a >
< a href = "#/environment" class = "dropdown-item" data-route = "environment" > 环境参数< / a >
< a href = "#/personnel" class = "dropdown-item" data-route = "personnel" > 人员信息< / a >
< a href = "#/qa" class = "dropdown-item" data-route = "qa" > 质检报告< / a >
< a href = "#/production" class = "dropdown-item" data-route = "production" > 时间记录< / a >
2025-11-21 13:27:40 +00:00
< / div >
< / div >
2026-01-05 07:19:13 +00:00
< div class = "topnav-item has-dropdown" data-menu = "test" >
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" / >
< polyline points = "14,2 14,8 20,8" / >
< line x1 = "16" y1 = "13" x2 = "8" y2 = "13" / >
< line x1 = "16" y1 = "17" x2 = "8" y2 = "17" / >
< polyline points = "10,9 9,9 8,9" / >
< / svg >
< / span >
< span class = "topnav-text" > 基站测试< / span >
< / span >
2026-01-15 06:48:40 +00:00
< span class = "topnav-caret" > < / span >
2026-01-05 07:19:13 +00:00
< div class = "topnav-dropdown" >
< a href = "#/test/meituan" class = "dropdown-item" data-route = "test-meituan" > 美团基站测试< / a >
< / div >
< / div >
2025-12-30 06:35:09 +00:00
< a href = "#/export" class = "topnav-item" data-route = "export" >
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M12 3v10" / >
< path d = "M8 9l4 4 4-4" / >
< path d = "M4 17v3h16v-3" / >
< / svg >
< / span >
< span class = "topnav-text" > 导出< / span >
< / span >
< / a >
< a href = "#/product-intro" class = "topnav-item" data-route = "product-intro" >
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M21 16V8a2 2 0 0 0-1-1.7l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.7l7 4a2 2 0 0 0 2 0l7-4a2 2 0 0 0 1-1.7z" / >
< path d = "M3.3 7.5L12 12l8.7-4.5" / >
< path d = "M12 22V12" / >
< / svg >
< / span >
< span class = "topnav-text" > 产品< / span >
< / span >
< / a >
< a href = "#/system/operations-log" class = "topnav-item superadmin-only" data-route = "system-operations-log" style = "display:none;" >
< span class = "nav-left" >
< span class = "nav-icon" aria-hidden = "true" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" / >
< path d = "M14 2v6h6" / >
< path d = "M16 13H8" / >
< path d = "M16 17H8" / >
< / svg >
< / span >
< span class = "topnav-text" > 操作日志< / span >
< / span >
< / a >
2025-12-12 05:17:42 +00:00
< / nav >
2025-12-30 06:35:09 +00:00
< div class = "sidebar-footer" >
< div class = "sidebar-actions" >
2026-01-05 02:27:58 +00:00
<!-- 主题切换按钮已隐藏 -->
< label class = "switch" style = "display: none;" >
2025-12-30 06:35:09 +00:00
< input id = "theme-toggle-checkbox" type = "checkbox" / >
< span class = "slider" >
< div class = "star star_1" > < / div >
< div class = "star star_2" > < / div >
< div class = "star star_3" > < / div >
< svg viewBox = "0 0 16 16" class = "cloud_1 cloud" >
< path
transform="matrix(.77976 0 0 .78395-299.99-418.63)"
fill="#fff"
d="m391.84 540.91c-.421-.329-.949-.524-1.523-.524-1.351 0-2.451 1.084-2.485 2.435-1.395.526-2.388 1.88-2.388 3.466 0 1.874 1.385 3.423 3.182 3.667v.034h12.73v-.006c1.775-.104 3.182-1.584 3.182-3.395 0-1.747-1.309-3.186-2.994-3.379.007-.106.011-.214.011-.322 0-2.707-2.271-4.901-5.072-4.901-2.073 0-3.856 1.202-4.643 2.925"
>< / path >
< / svg >
< / span >
< / label >
2026-01-15 06:48:40 +00:00
< button id = "notification-bell-btn" class = "notification-bell-btn" title = "消息通知" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "20" height = "20" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" / >
< path d = "M13.73 21a2 2 0 0 1-3.46 0" / >
< / svg >
< span id = "notification-badge" class = "notification-badge" style = "display:none;" > 0< / span >
< / button >
2025-12-30 06:35:09 +00:00
< div class = "user-menu-container" >
< button id = "user-avatar-btn" class = "user-avatar-btn" >
< img id = "user-avatar-img" src = "./assets/user-avatar.svg" alt = "用户头像" class = "user-avatar-img" / >
< span id = "user-name-display" class = "user-name-display" > 未登录< / span >
< / button >
< div id = "user-dropdown" class = "user-dropdown" style = "display:none;" >
< a href = "#/settings" class = "user-dropdown-item" data-route = "settings" >
< span class = "dropdown-icon" > ⚙️< / span >
< span > 设置< / span >
< / a >
< div class = "user-dropdown-item" id = "user-dropdown-logout" >
< span class = "dropdown-icon" > 🚪< / span >
< span > 退出登录< / span >
< / div >
< / div >
2025-11-21 13:27:40 +00:00
< / div >
< / div >
< / div >
2025-12-12 05:17:42 +00:00
< / div >
< / header >
< main class = "content topbar-layout" >
2025-11-21 13:27:40 +00:00
< section id = "view" class = "view" > < / section >
< / main >
< / div >
< div id = "toast" class = "toast" > < / div >
< div id = "overlay" class = "overlay hidden" >
2026-03-13 02:33:38 +00:00
< div class = "main-container" >
< div class = "loader" >
< svg viewBox = "0 0 800 500" xmlns = "http://www.w3.org/2000/svg" >
< defs >
< linearGradient id = "chipGradient" x1 = "0" y1 = "0" x2 = "0" y2 = "1" >
< stop offset = "0%" stop-color = "#2d2d2d" > < / stop >
< stop offset = "100%" stop-color = "#0f0f0f" > < / stop >
< / linearGradient >
< linearGradient id = "textGradient" x1 = "0" y1 = "0" x2 = "0" y2 = "1" >
< stop offset = "0%" stop-color = "#eeeeee" > < / stop >
< stop offset = "100%" stop-color = "#888888" > < / stop >
< / linearGradient >
< linearGradient id = "pinGradient" x1 = "1" y1 = "0" x2 = "0" y2 = "0" >
< stop offset = "0%" stop-color = "#bbbbbb" > < / stop >
< stop offset = "50%" stop-color = "#888888" > < / stop >
< stop offset = "100%" stop-color = "#555555" > < / stop >
< / linearGradient >
< / defs >
< g id = "traces" >
< path d = "M100 100 H200 V210 H326" class = "trace-bg" > < / path >
< path d = "M100 100 H200 V210 H326" class = "trace-flow purple" > < / path >
< path d = "M80 180 H180 V230 H326" class = "trace-bg" > < / path >
< path d = "M80 180 H180 V230 H326" class = "trace-flow blue" > < / path >
< path d = "M60 260 H150 V250 H326" class = "trace-bg" > < / path >
< path d = "M60 260 H150 V250 H326" class = "trace-flow yellow" > < / path >
< path d = "M100 350 H200 V270 H326" class = "trace-bg" > < / path >
< path d = "M100 350 H200 V270 H326" class = "trace-flow green" > < / path >
< path d = "M700 90 H560 V210 H474" class = "trace-bg" > < / path >
< path d = "M700 90 H560 V210 H474" class = "trace-flow blue" > < / path >
< path d = "M740 160 H580 V230 H474" class = "trace-bg" > < / path >
< path d = "M740 160 H580 V230 H474" class = "trace-flow green" > < / path >
< path d = "M720 250 H590 V250 H474" class = "trace-bg" > < / path >
< path d = "M720 250 H590 V250 H474" class = "trace-flow red" > < / path >
< path d = "M680 340 H570 V270 H474" class = "trace-bg" > < / path >
< path d = "M680 340 H570 V270 H474" class = "trace-flow yellow" > < / path >
< / g >
< rect
x="330"
y="190"
width="140"
height="100"
rx="20"
ry="20"
fill="url(#chipGradient)"
stroke="#222"
stroke-width="3"
filter="drop-shadow(0 0 6px rgba(0,0,0,0.8))"
>< / rect >
< g >
< rect
x="322"
y="205"
width="8"
height="10"
fill="url(#pinGradient)"
rx="2"
>< / rect >
< rect
x="322"
y="225"
width="8"
height="10"
fill="url(#pinGradient)"
rx="2"
>< / rect >
< rect
x="322"
y="245"
width="8"
height="10"
fill="url(#pinGradient)"
rx="2"
>< / rect >
< rect
x="322"
y="265"
width="8"
height="10"
fill="url(#pinGradient)"
rx="2"
>< / rect >
< / g >
< g >
< rect
x="470"
y="205"
width="8"
height="10"
fill="url(#pinGradient)"
rx="2"
>< / rect >
< rect
x="470"
y="225"
width="8"
height="10"
fill="url(#pinGradient)"
rx="2"
>< / rect >
< rect
x="470"
y="245"
width="8"
height="10"
fill="url(#pinGradient)"
rx="2"
>< / rect >
< rect
x="470"
y="265"
width="8"
height="10"
fill="url(#pinGradient)"
rx="2"
>< / rect >
< / g >
< text
x="400"
y="240"
font-family="Arial, sans-serif"
font-size="22"
fill="url(#textGradient)"
text-anchor="middle"
alignment-baseline="middle"
>
Loading
< / text >
< circle cx = "100" cy = "100" r = "5" fill = "black" > < / circle >
< circle cx = "80" cy = "180" r = "5" fill = "black" > < / circle >
< circle cx = "60" cy = "260" r = "5" fill = "black" > < / circle >
< circle cx = "100" cy = "350" r = "5" fill = "black" > < / circle >
< circle cx = "700" cy = "90" r = "5" fill = "black" > < / circle >
< circle cx = "740" cy = "160" r = "5" fill = "black" > < / circle >
< circle cx = "720" cy = "250" r = "5" fill = "black" > < / circle >
< circle cx = "680" cy = "340" r = "5" fill = "black" > < / circle >
< / svg >
< / div >
2025-11-21 13:27:40 +00:00
< / div >
< / div >
2025-12-30 06:35:09 +00:00
< div id = "notification-modal" class = "notification-modal" style = "display:none;" >
< div class = "notification-modal-backdrop" data-close = "1" > < / div >
< div class = "notification-modal-content" role = "dialog" aria-modal = "true" aria-label = "🔔" >
< div class = "notification-modal-header" >
2026-01-15 06:48:40 +00:00
< div class = "notification-modal-title" > 🔔 消息通知< / div >
< div class = "notification-modal-actions" >
< button id = "modal-mark-all-read" class = "btn-text" type = "button" > 全部已读< / button >
< button id = "modal-delete-read" class = "btn-text btn-danger" type = "button" > 删除已读< / button >
< / div >
2025-12-30 06:35:09 +00:00
< button id = "notification-modal-close" class = "notification-modal-close" type = "button" aria-label = "关闭" > × < / button >
< / div >
< div id = "notification-modal-list" class = "notification-modal-list" > < / div >
< / div >
< / div >
2026-03-26 02:16:19 +00:00
< div id = "mac-history-modal" class = "notification-modal" style = "display:none;" >
< div class = "notification-modal-backdrop" data-close = "mac-history" > < / div >
< div class = "notification-modal-content" role = "dialog" aria-modal = "true" aria-label = "📋" style = "max-width:800px" >
< div class = "notification-modal-header" >
< div class = "notification-modal-title" > 📋 MAC与批次上传历史记录< / div >
< button id = "mac-history-modal-close" class = "notification-modal-close" type = "button" aria-label = "关闭" > × < / button >
< / div >
< div id = "mac-history-modal-list" class = "notification-modal-list" style = "max-height:60vh;overflow-y:auto" > < / div >
< / div >
< / div >
2026-01-03 11:18:40 +00:00
< script src = "./js/router.js" defer > < / script >
< script src = "./js/api.js" defer > < / script >
< script src = "./js/utils/memory-monitor.js" defer > < / script >
2026-03-12 05:22:48 +00:00
< script src = "./assets/xlsx.min.js" defer > < / script >
2026-01-03 11:18:40 +00:00
< script src = "./js/components/sidebar.js" defer > < / script >
< script src = "./js/components/menu-search.js" defer > < / script >
< script src = "./js/components/dashboard.js" defer > < / script >
< script src = "./js/components/ai-report.js" defer > < / script >
< script src = "./js/components/upload.js" defer > < / script >
< script src = "./js/components/shipments.js" defer > < / script >
< script src = "./js/components/shipment-query.js" defer > < / script >
< script src = "./js/components/shipment-summary.js" defer > < / script >
2026-03-12 05:22:48 +00:00
< script src = "./js/components/shipment-audit.js" defer > < / script >
2026-01-03 11:18:40 +00:00
< script src = "./js/components/defects.js" defer > < / script >
< script src = "./js/components/devices.js" defer > < / script >
< script src = "./js/components/environment.js" defer > < / script >
< script src = "./js/components/personnel.js" defer > < / script >
< script src = "./js/components/qa.js" defer > < / script >
< script src = "./js/components/production.js" defer > < / script >
< script src = "./js/components/work-order.js" defer > < / script >
< script src = "./js/components/bom.js" defer > < / script >
< script src = "./js/components/initial-stock.js" defer > < / script >
2026-03-12 05:22:48 +00:00
< script src = "./js/components/purchase-demand.js?v=20260312" defer > < / script >
2026-01-03 11:18:40 +00:00
< script src = "./js/components/customer-order.js" defer > < / script >
< script src = "./js/components/reconciliation.js" defer > < / script >
2026-03-13 02:48:38 +00:00
< script src = "./js/components/outsourcing-orders.js" defer > < / script >
< script src = "./js/components/outsourcing-material-issue.js" defer > < / script >
< script src = "./js/components/finished-goods-receipt.js" defer > < / script >
< script src = "./js/components/outsourcing-wip-stock.js" defer > < / script >
2026-01-03 11:18:40 +00:00
< script src = "./js/components/export.js" defer > < / script >
< script src = "./js/components/settings.js" defer > < / script >
< script src = "./js/components/notifications.js" defer > < / script >
2026-01-05 07:19:13 +00:00
< script src = "./js/components/meituan-test.js" defer > < / script >
2026-01-03 11:18:40 +00:00
< script src = "./js/components/operations-log.js" defer > < / script >
< script src = "./js/components/product-intro.js" defer > < / script >
< script src = "./js/app.js" defer > < / script >
2025-11-21 13:27:40 +00:00
< / body >
< / html >