index.html 106 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855
  1. <!doctype html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <meta name="theme-color" content="#0d1b2a" />
  7. <title>矿安通防智能管控平台</title>
  8. <link rel="icon" href="./favicon.svg" type="image/svg+xml" />
  9. <link rel="stylesheet" href="./styles.css?v=20261013-hazard-agents2" />
  10. <script src="./api.js?v=20261013-hazard-agents2" defer></script>
  11. <script src="./app.js?v=20261013-hazard-agents2" defer></script>
  12. </head>
  13. <body class="api-loading">
  14. <div class="app-shell">
  15. <aside class="sidebar" id="sidebar">
  16. <div class="brand">
  17. <div class="brand-mark" aria-hidden="true">
  18. <span data-icon="wind"></span>
  19. </div>
  20. <div class="brand-copy">
  21. <strong>矿安通防</strong>
  22. <span>智能管控平台</span>
  23. </div>
  24. <button class="icon-button sidebar-close" id="sidebarClose" type="button" aria-label="关闭导航">
  25. <span data-icon="x"></span>
  26. </button>
  27. </div>
  28. <div class="mine-switcher" id="mineSwitcher">
  29. <div class="mine-switcher-button static">
  30. <span class="mine-icon" data-icon="mountain"></span>
  31. <span class="mine-copy">
  32. <small>当前矿井</small>
  33. <strong id="currentMine">上湾煤矿</strong>
  34. </span>
  35. </div>
  36. </div>
  37. <nav class="main-nav" aria-label="主导航">
  38. <p class="nav-label">业务工作台</p>
  39. <button class="nav-item active" type="button" data-view="dashboard">
  40. <span data-icon="layout-dashboard"></span>
  41. <span class="nav-text">综合驾驶舱</span>
  42. <span class="nav-dot danger"></span>
  43. </button>
  44. <button class="nav-item" type="button" data-view="data">
  45. <span data-icon="database"></span>
  46. <span class="nav-text">数据感知</span>
  47. <span class="nav-badge">2,486</span>
  48. </button>
  49. <button class="nav-item" type="button" data-view="knowledge">
  50. <span data-icon="book-open"></span>
  51. <span class="nav-text">知识中心</span>
  52. <span class="nav-badge">2,164</span>
  53. </button>
  54. <button class="nav-item" type="button" data-view="diagnosis">
  55. <span data-icon="scan-search"></span>
  56. <span class="nav-text">隐患识别</span>
  57. <span class="nav-badge alert">18</span>
  58. </button>
  59. <button class="nav-item" type="button" data-view="evaluation">
  60. <span data-icon="chart-no-axes-combined"></span>
  61. <span class="nav-text">综合评价</span>
  62. </button>
  63. <button class="nav-item" type="button" data-view="closed-loop">
  64. <span data-icon="workflow"></span>
  65. <span class="nav-text">闭环处置</span>
  66. <span class="nav-badge">7</span>
  67. </button>
  68. <p class="nav-label nav-label-secondary">平台管理</p>
  69. <button class="nav-item" type="button" data-view="settings">
  70. <span data-icon="settings"></span>
  71. <span class="nav-text">系统配置</span>
  72. </button>
  73. </nav>
  74. <div class="sidebar-status">
  75. <div class="status-head">
  76. <span class="live-dot"></span>
  77. <span>系统运行正常</span>
  78. <strong>99.98%</strong>
  79. </div>
  80. <div class="status-track"><span style="width: 96%"></span></div>
  81. <p>最近同步:刚刚</p>
  82. </div>
  83. </aside>
  84. <div class="sidebar-scrim" id="sidebarScrim"></div>
  85. <main class="workspace">
  86. <header class="topbar">
  87. <div class="topbar-title">
  88. <button class="icon-button mobile-menu" id="mobileMenu" type="button" aria-label="打开导航">
  89. <span data-icon="menu"></span>
  90. </button>
  91. <div>
  92. <div class="title-line">
  93. <h1 id="pageTitle">综合驾驶舱</h1>
  94. <span class="status-pill"><span class="live-dot"></span>实时运行</span>
  95. </div>
  96. <p id="pageSubtitle">汇聚通防业务数据,洞察矿井通风系统运行态势</p>
  97. </div>
  98. </div>
  99. <div class="topbar-actions">
  100. <label class="global-search">
  101. <span data-icon="search"></span>
  102. <input id="globalSearch" type="search" placeholder="搜索设备、风路、知识或告警" />
  103. <kbd>⌘ K</kbd>
  104. </label>
  105. <button class="icon-button notification-button" id="notificationButton" type="button" aria-label="通知">
  106. <span data-icon="bell"></span>
  107. <i></i>
  108. </button>
  109. <button class="user-menu" type="button">
  110. <span class="avatar">李</span>
  111. <span class="user-copy">
  112. <strong>李矿长</strong>
  113. <small>通防业务负责人</small>
  114. </span>
  115. <span data-icon="chevron-down"></span>
  116. </button>
  117. </div>
  118. <div class="notification-popover" id="notificationPopover">
  119. <div class="popover-head">
  120. <strong>消息通知</strong>
  121. <button type="button" id="markRead">全部已读</button>
  122. </div>
  123. <div class="notification-item unread">
  124. <span class="notice-icon danger" data-icon="triangle-alert"></span>
  125. <div>
  126. <strong>N1202 回风巷瓦斯浓度短时超限</strong>
  127. <p>建议核查局部通风机运行状态,2 分钟前</p>
  128. </div>
  129. </div>
  130. <div class="notification-item">
  131. <span class="notice-icon warning" data-icon="wind"></span>
  132. <div>
  133. <strong>2# 风门状态异常已恢复</strong>
  134. <p>系统已自动复核并归档,18 分钟前</p>
  135. </div>
  136. </div>
  137. </div>
  138. </header>
  139. <div class="app-loading" id="appLoading" role="status" aria-live="polite">
  140. <div class="app-loading-content">
  141. <span class="loading-spinner" aria-hidden="true"></span>
  142. <strong>正在加载业务数据</strong>
  143. </div>
  144. </div>
  145. <div class="content-area">
  146. <section class="view active" id="view-dashboard" data-title="综合驾驶舱" data-subtitle="汇聚通防业务数据,洞察矿井通风系统运行态势">
  147. <div class="context-bar">
  148. <div class="context-message">
  149. <span class="context-icon" data-icon="shield-check"></span>
  150. <div>
  151. <strong>系统运行总体平稳</strong>
  152. <p>当前识别 3 项高优先级风险,均已进入处置流程。</p>
  153. </div>
  154. </div>
  155. <div class="segmented-control" data-range-control>
  156. <button type="button" data-range="今日">今日</button>
  157. <button class="active" type="button" data-range="近7天">近7天</button>
  158. <button type="button" data-range="近30天">近30天</button>
  159. </div>
  160. </div>
  161. <div class="kpi-grid">
  162. <article class="kpi-card">
  163. <div class="kpi-head">
  164. <span class="kpi-icon teal" data-icon="database"></span>
  165. <span class="trend up"><span data-icon="arrow-up-right"></span> 3.2%</span>
  166. </div>
  167. <p>实时数据点</p>
  168. <strong><span class="metric-value" data-metric="points">2,486</span><small>点</small></strong>
  169. <div class="kpi-foot">
  170. <span>在线率 97.2%</span>
  171. <span class="mini-bars" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i></span>
  172. </div>
  173. </article>
  174. <article class="kpi-card">
  175. <div class="kpi-head">
  176. <span class="kpi-icon red" data-icon="triangle-alert"></span>
  177. <span class="trend down">较昨日 -4</span>
  178. </div>
  179. <p>今日告警</p>
  180. <strong><span class="metric-value" data-metric="alerts">18</span><small>条</small></strong>
  181. <div class="kpi-foot">
  182. <span><b class="text-danger">3</b> 条高优先级</span>
  183. <span>闭环率 83%</span>
  184. </div>
  185. </article>
  186. <article class="kpi-card">
  187. <div class="kpi-head">
  188. <span class="kpi-icon amber" data-icon="scan-search"></span>
  189. <span class="trend up"><span data-icon="arrow-up-right"></span> 2.4%</span>
  190. </div>
  191. <p>诊断准确率</p>
  192. <strong><span class="metric-value" data-metric="accuracy">87.6</span><small>%</small></strong>
  193. <div class="kpi-foot">
  194. <span>五类场景平均</span>
  195. <span>样本 5,820</span>
  196. </div>
  197. </article>
  198. <article class="kpi-card">
  199. <div class="kpi-head">
  200. <span class="kpi-icon green" data-icon="award"></span>
  201. <span class="trend neutral">稳定</span>
  202. </div>
  203. <p>综合安全等级</p>
  204. <strong><span class="metric-value" data-metric="grade">A</span><small>级</small></strong>
  205. <div class="kpi-foot">
  206. <span>综合得分 <b class="text-success">92.8</b></span>
  207. <span>较上期 +1.6</span>
  208. </div>
  209. </article>
  210. </div>
  211. <div class="dashboard-grid">
  212. <article class="panel ventilation-panel">
  213. <div class="panel-head">
  214. <div>
  215. <span class="eyebrow">通风网络</span>
  216. <h2>矿井通风系统实时态势</h2>
  217. </div>
  218. <div class="panel-actions">
  219. <div class="map-legend">
  220. <span><i class="legend-dot normal"></i>正常</span>
  221. <span><i class="legend-dot warning"></i>预警</span>
  222. <span><i class="legend-dot danger"></i>异常</span>
  223. </div>
  224. <button class="icon-button small" type="button" aria-label="刷新通风网络" data-refresh>
  225. <span data-icon="refresh-cw"></span>
  226. </button>
  227. </div>
  228. </div>
  229. <div class="mine-map" id="mineMap">
  230. <div class="map-toolbar">
  231. <span><span class="live-dot"></span>数据更新于 10:42:16</span>
  232. <button type="button" data-map-layer="airflow"><span data-icon="wind"></span>风流</button>
  233. <button class="active" type="button" data-map-layer="sensors"><span data-icon="radio-tower"></span>测点</button>
  234. <button type="button" data-map-layer="facilities"><span data-icon="settings-2"></span>设施</button>
  235. </div>
  236. <svg class="ventilation-map" viewBox="0 0 900 470" role="img" aria-label="矿井通风网络拓扑图">
  237. <defs>
  238. <pattern id="mapGrid" width="32" height="32" patternUnits="userSpaceOnUse">
  239. <path d="M 32 0 L 0 0 0 32" fill="none" stroke="rgba(116, 151, 174, .12)" stroke-width="1" />
  240. </pattern>
  241. <filter id="softGlow">
  242. <feGaussianBlur stdDeviation="4" result="blur" />
  243. <feMerge>
  244. <feMergeNode in="blur" />
  245. <feMergeNode in="SourceGraphic" />
  246. </feMerge>
  247. </filter>
  248. <marker id="airArrow" markerWidth="8" markerHeight="8" refX="5" refY="3" orient="auto">
  249. <path d="M0,0 L0,6 L6,3 z" fill="#38bdf8" />
  250. </marker>
  251. </defs>
  252. <rect width="900" height="470" fill="url(#mapGrid)" />
  253. <g class="surface-labels">
  254. <text x="42" y="48">副井</text>
  255. <text x="814" y="48">回风井</text>
  256. <text x="420" y="42">北翼采区</text>
  257. <text x="424" y="438">南翼采区</text>
  258. </g>
  259. <g class="tunnel tertiary">
  260. <path d="M88 96 L246 96 L246 182 L452 182" />
  261. <path d="M88 376 L270 376 L270 300 L452 300" />
  262. <path d="M452 182 L664 182 L664 102 L808 102" />
  263. <path d="M452 300 L676 300 L676 378 L808 378" />
  264. <path d="M246 182 L246 300" />
  265. <path d="M664 182 L664 300" />
  266. </g>
  267. <g class="tunnel primary">
  268. <path d="M108 238 L788 238" />
  269. <path d="M246 96 L452 182 L788 238" />
  270. <path d="M270 376 L452 300 L788 238" />
  271. </g>
  272. <g class="air-flow" filter="url(#softGlow)">
  273. <path d="M108 238 L788 238" />
  274. <path d="M246 96 L452 182" />
  275. <path d="M270 376 L452 300" />
  276. </g>
  277. <g class="map-node normal" data-node="main-fan" tabindex="0" transform="translate(78 238)">
  278. <circle class="node-pulse" r="20" />
  279. <circle class="node-ring" r="14" />
  280. <path class="node-symbol" d="M-5,-6 L5,-6 L5,6 L-5,6 Z M-5,-2 L5,2 M-5,2 L5,-2" />
  281. <text x="-8" y="35">主通风机</text>
  282. </g>
  283. <g class="map-node normal" data-node="intake" tabindex="0" transform="translate(246 96)">
  284. <circle class="node-pulse" r="15" />
  285. <circle class="node-ring" r="10" />
  286. <circle class="node-symbol" r="3" />
  287. <text x="-16" y="29">进风井</text>
  288. </g>
  289. <g class="map-node warning" data-node="air-gate" tabindex="0" transform="translate(452 182)">
  290. <circle class="node-pulse" r="17" />
  291. <circle class="node-ring" r="12" />
  292. <path class="node-symbol" d="M-5,-5 L5,5 M5,-5 L-5,5" />
  293. <text x="-21" y="32">2#调节风门</text>
  294. </g>
  295. <g class="map-node danger" data-node="gas" tabindex="0" transform="translate(664 182)">
  296. <circle class="node-pulse" r="18" />
  297. <circle class="node-ring" r="13" />
  298. <path class="node-symbol" d="M0,-6 L6,5 L-6,5 Z M0,-2 L0,2" />
  299. <text x="-25" y="33">N1202瓦斯</text>
  300. </g>
  301. <g class="map-node normal" data-node="north-face" tabindex="0" transform="translate(788 102)">
  302. <circle class="node-pulse" r="14" />
  303. <circle class="node-ring" r="9" />
  304. <circle class="node-symbol" r="3" />
  305. <text x="-29" y="28">N1201工作面</text>
  306. </g>
  307. <g class="map-node normal" data-node="air-volume" tabindex="0" transform="translate(452 300)">
  308. <circle class="node-pulse" r="15" />
  309. <circle class="node-ring" r="10" />
  310. <path class="node-symbol" d="M-6,0 L6,0 M0,-6 L0,6" />
  311. <text x="-27" y="31">S1301测风站</text>
  312. </g>
  313. <g class="map-node warning" data-node="dust" tabindex="0" transform="translate(676 378)">
  314. <circle class="node-pulse" r="17" />
  315. <circle class="node-ring" r="12" />
  316. <path class="node-symbol" d="M-6,-2 C-3,-6 3,-6 6,-2 C4,5 -4,5 -6,-2 Z" />
  317. <text x="-25" y="33">S1302粉尘</text>
  318. </g>
  319. <g class="map-node normal" data-node="return" tabindex="0" transform="translate(808 378)">
  320. <circle class="node-pulse" r="14" />
  321. <circle class="node-ring" r="9" />
  322. <circle class="node-symbol" r="3" />
  323. <text x="-29" y="28">回风井底</text>
  324. </g>
  325. </svg>
  326. <div class="map-detail" id="mapDetail">
  327. <div class="map-detail-head">
  328. <span class="detail-status danger"></span>
  329. <strong>N1202 瓦斯监测点</strong>
  330. <button type="button" aria-label="关闭节点详情" id="closeMapDetail"><span data-icon="x"></span></button>
  331. </div>
  332. <div class="map-detail-values">
  333. <div><span>瓦斯浓度</span><strong>0.86%</strong></div>
  334. <div><span>阈值</span><strong>0.80%</strong></div>
  335. <div><span>趋势</span><strong class="text-danger">上升</strong></div>
  336. </div>
  337. <p>已关联局部通风机 T-17 与 2# 调节风门,正在执行耦合诊断。</p>
  338. <button class="text-button" type="button" data-jump-view="diagnosis">查看诊断详情 <span data-icon="arrow-right"></span></button>
  339. </div>
  340. </div>
  341. </article>
  342. <article class="panel evaluation-panel">
  343. <div class="panel-head">
  344. <div>
  345. <span class="eyebrow">综合评价</span>
  346. <h2>通防业务健康度</h2>
  347. </div>
  348. <button class="text-button" type="button" data-jump-view="evaluation">查看报告</button>
  349. </div>
  350. <div class="score-overview">
  351. <div class="score-ring" style="--score: 92.8">
  352. <div>
  353. <strong>92.8</strong>
  354. <span>综合得分</span>
  355. </div>
  356. </div>
  357. <div class="grade-copy">
  358. <span class="grade-badge">A 级</span>
  359. <strong>运行状态优良</strong>
  360. <p>安全性与可靠性表现稳定,风量分配均衡度有提升空间。</p>
  361. </div>
  362. </div>
  363. <div class="score-list">
  364. <div class="score-row">
  365. <span>安全性</span><div><i style="width: 96%"></i></div><strong>96.2</strong>
  366. </div>
  367. <div class="score-row">
  368. <span>可靠性</span><div><i style="width: 91%"></i></div><strong>91.4</strong>
  369. </div>
  370. <div class="score-row">
  371. <span>经济性</span><div><i style="width: 84%"></i></div><strong>84.7</strong>
  372. </div>
  373. <div class="score-row">
  374. <span>管理合规</span><div><i style="width: 94%"></i></div><strong>94.1</strong>
  375. </div>
  376. <div class="score-row">
  377. <span>数据质量</span><div><i style="width: 89%"></i></div><strong>89.6</strong>
  378. </div>
  379. </div>
  380. </article>
  381. <article class="panel sensor-panel">
  382. <div class="panel-head">
  383. <div>
  384. <span class="eyebrow">实时感知</span>
  385. <h2>关键参数监测</h2>
  386. </div>
  387. <span class="subtle-badge"><span class="live-dot"></span>秒级刷新</span>
  388. </div>
  389. <div class="sensor-grid">
  390. <div class="sensor-metric">
  391. <div class="sensor-label"><span class="sensor-icon gas" data-icon="flame"></span><span>瓦斯浓度</span></div>
  392. <div class="sensor-value"><strong>0.86</strong><small>%CH₄</small><span class="trend down">+0.12</span></div>
  393. <svg class="sparkline danger-line" viewBox="0 0 180 42" preserveAspectRatio="none">
  394. <path class="spark-area" d="M0,34 L0,30 L20,29 L40,31 L60,22 L80,24 L100,17 L120,19 L140,12 L160,15 L180,6 L180,42 L0,42 Z" />
  395. <path d="M0,30 L20,29 L40,31 L60,22 L80,24 L100,17 L120,19 L140,12 L160,15 L180,6" />
  396. </svg>
  397. </div>
  398. <div class="sensor-metric">
  399. <div class="sensor-label"><span class="sensor-icon blue" data-icon="wind"></span><span>工作面风量</span></div>
  400. <div class="sensor-value"><strong>1,286</strong><small>m³/min</small><span class="trend up">稳定</span></div>
  401. <svg class="sparkline blue-line" viewBox="0 0 180 42" preserveAspectRatio="none">
  402. <path class="spark-area" d="M0,24 L0,15 L20,17 L40,14 L60,18 L80,16 L100,15 L120,18 L140,16 L160,17 L180,15 L180,42 L0,42 Z" />
  403. <path d="M0,15 L20,17 L40,14 L60,18 L80,16 L100,15 L120,18 L140,16 L160,17 L180,15" />
  404. </svg>
  405. </div>
  406. <div class="sensor-metric">
  407. <div class="sensor-label"><span class="sensor-icon amber" data-icon="cloud-dust"></span><span>粉尘浓度</span></div>
  408. <div class="sensor-value"><strong>4.2</strong><small>mg/m³</small><span class="trend neutral">正常</span></div>
  409. <svg class="sparkline amber-line" viewBox="0 0 180 42" preserveAspectRatio="none">
  410. <path class="spark-area" d="M0,31 L0,25 L20,27 L40,23 L60,26 L80,21 L100,24 L120,19 L140,22 L160,18 L180,20 L180,42 L0,42 Z" />
  411. <path d="M0,25 L20,27 L40,23 L60,26 L80,21 L100,24 L120,19 L140,22 L160,18 L180,20" />
  412. </svg>
  413. </div>
  414. </div>
  415. </article>
  416. <article class="panel diagnosis-panel">
  417. <div class="panel-head">
  418. <div>
  419. <span class="eyebrow">智能诊断</span>
  420. <h2>五类场景缺陷判识</h2>
  421. </div>
  422. <div class="panel-actions">
  423. <span class="subtle-badge">模型库 v2.6.1</span>
  424. <button class="text-button" type="button" data-jump-view="diagnosis">进入隐患识别中心 <span data-icon="arrow-right"></span></button>
  425. </div>
  426. </div>
  427. <div class="diagnosis-cards">
  428. <button class="diagnosis-card danger" type="button" data-jump-view="diagnosis">
  429. <span class="diagnosis-icon" data-icon="wind"></span>
  430. <span class="diagnosis-main"><strong>局部通风</strong><small>检测到 2 项异常</small></span>
  431. <span class="diagnosis-score">91.2%</span>
  432. <span class="diagnosis-trend danger">高风险</span>
  433. </button>
  434. <button class="diagnosis-card warning" type="button" data-jump-view="diagnosis">
  435. <span class="diagnosis-icon" data-icon="door-open"></span>
  436. <span class="diagnosis-main"><strong>通风设施</strong><small>风门状态不一致</small></span>
  437. <span class="diagnosis-score">88.7%</span>
  438. <span class="diagnosis-trend warning">需核查</span>
  439. </button>
  440. <button class="diagnosis-card normal" type="button" data-jump-view="diagnosis">
  441. <span class="diagnosis-icon" data-icon="network"></span>
  442. <span class="diagnosis-main"><strong>通风系统管理</strong><small>系统运行稳定</small></span>
  443. <span class="diagnosis-score">86.5%</span>
  444. <span class="diagnosis-trend normal">正常</span>
  445. </button>
  446. <button class="diagnosis-card warning" type="button" data-jump-view="diagnosis">
  447. <span class="diagnosis-icon" data-icon="gauge"></span>
  448. <span class="diagnosis-main"><strong>风量分配</strong><small>1 个用风点偏小</small></span>
  449. <span class="diagnosis-score">89.3%</span>
  450. <span class="diagnosis-trend warning">需关注</span>
  451. </button>
  452. <button class="diagnosis-card danger" type="button" data-jump-view="diagnosis">
  453. <span class="diagnosis-icon" data-icon="shield-alert"></span>
  454. <span class="diagnosis-main"><strong>灾害防治</strong><small>瓦斯浓度越限</small></span>
  455. <span class="diagnosis-score">92.6%</span>
  456. <span class="diagnosis-trend danger">高风险</span>
  457. </button>
  458. </div>
  459. </article>
  460. <article class="panel knowledge-panel">
  461. <div class="panel-head">
  462. <div>
  463. <span class="eyebrow">知识中心</span>
  464. <h2>通防知识智能问答</h2>
  465. </div>
  466. <span class="knowledge-count">2,164 条知识</span>
  467. </div>
  468. <form class="knowledge-search" id="dashboardKnowledgeForm">
  469. <span data-icon="sparkles"></span>
  470. <textarea name="question" rows="1" data-max-height="74" placeholder="询问规程、案例或处置建议..."></textarea>
  471. <button type="submit" aria-label="发送问题"><span data-icon="arrow-up"></span></button>
  472. </form>
  473. <div class="prompt-chips">
  474. <button type="button" data-question="瓦斯超限如何处置?">瓦斯超限如何处置?</button>
  475. <button type="button" data-question="局部通风机循环风判定标准">循环风判定标准</button>
  476. <button type="button" data-question="风门漏风有哪些排查要点?">风门漏风排查</button>
  477. </div>
  478. <div class="answer-preview" id="answerPreview">
  479. <div class="answer-head"><span data-icon="bot"></span><strong>通防知识助手</strong><span>基于 3 条依据回答</span></div>
  480. <p>瓦斯浓度超限后,应立即停止作业、切断电源、撤出人员,并核查局部通风机与风筒状态。处置完成后,需复测并形成闭环记录。</p>
  481. <div class="answer-sources">
  482. <span>《煤矿安全规程》第 173 条</span>
  483. <span>瓦斯超限处置案例 2024-018</span>
  484. </div>
  485. </div>
  486. </article>
  487. <article class="panel tasks-panel">
  488. <div class="panel-head">
  489. <div>
  490. <span class="eyebrow">整改闭环</span>
  491. <h2>待处置任务</h2>
  492. </div>
  493. <button class="text-button" type="button" data-jump-view="closed-loop">全部任务 <span data-icon="arrow-right"></span></button>
  494. </div>
  495. <div class="task-list">
  496. <button class="task-row" type="button" data-jump-view="closed-loop">
  497. <span class="task-priority high">高</span>
  498. <span class="task-main"><strong>N1202 回风巷瓦斯超限处置</strong><small>责任人:王强 · 剩余 01:26:18</small></span>
  499. <span class="task-state processing">处理中</span>
  500. <span data-icon="chevron-right"></span>
  501. </button>
  502. <button class="task-row" type="button" data-jump-view="closed-loop">
  503. <span class="task-priority medium">中</span>
  504. <span class="task-main"><strong>2# 调节风门状态复核</strong><small>责任人:赵磊 · 剩余 03:42:00</small></span>
  505. <span class="task-state pending">待确认</span>
  506. <span data-icon="chevron-right"></span>
  507. </button>
  508. <button class="task-row" type="button" data-jump-view="closed-loop">
  509. <span class="task-priority medium">中</span>
  510. <span class="task-main"><strong>S1301 工作面风量复测</strong><small>责任人:刘伟 · 剩余 05:10:00</small></span>
  511. <span class="task-state processing">处理中</span>
  512. <span data-icon="chevron-right"></span>
  513. </button>
  514. <button class="task-row" type="button" data-jump-view="closed-loop">
  515. <span class="task-priority low">低</span>
  516. <span class="task-main"><strong>月度通防资料完整性检查</strong><small>责任人:陈晨 · 剩余 1 天</small></span>
  517. <span class="task-state pending">待确认</span>
  518. <span data-icon="chevron-right"></span>
  519. </button>
  520. </div>
  521. </article>
  522. </div>
  523. </section>
  524. <section class="view" id="view-data" data-title="数据感知" data-subtitle="统一接入业务资料、监测数据、视频监控与通防设施工况">
  525. <div class="view-toolbar">
  526. <div class="toolbar-copy">
  527. <span class="toolbar-icon" data-icon="database"></span>
  528. <div><strong>数据接入总览</strong><p>当前接入 12 类数据源,数据完整率 98.4%</p></div>
  529. </div>
  530. <div class="toolbar-actions">
  531. <button class="secondary-button" type="button" data-open-upload><span data-icon="upload"></span>导入资料</button>
  532. <button class="primary-button" type="button" data-toast="数据源配置面板已打开"><span data-icon="plus"></span>新增数据源</button>
  533. </div>
  534. </div>
  535. <div class="source-grid">
  536. <article class="source-card">
  537. <div class="source-head"><span class="source-icon teal" data-icon="database"></span><span class="source-status online">实时</span></div>
  538. <strong>安全监控系统</strong>
  539. <p>瓦斯、风速、温度、CO 等监测点</p>
  540. <div class="source-foot"><span>1,286 点</span><span>延迟 2.4s</span></div>
  541. </article>
  542. <article class="source-card">
  543. <div class="source-head"><span class="source-icon blue" data-icon="video"></span><span class="source-status online">在线</span></div>
  544. <strong>工业视频监控</strong>
  545. <p>覆盖风门、局部通风、采掘工作面</p>
  546. <div class="source-foot"><span>218 路</span><span>识别 12 类</span></div>
  547. </article>
  548. <article class="source-card">
  549. <div class="source-head"><span class="source-icon amber" data-icon="settings-2"></span><span class="source-status online">在线</span></div>
  550. <strong>通防设施工况</strong>
  551. <p>风门、风窗、密闭、局部通风机</p>
  552. <div class="source-foot"><span>486 台</span><span>在线率 96.8%</span></div>
  553. </article>
  554. <button class="source-card source-card-button" type="button" data-open-business aria-label="打开业务资料页面">
  555. <div class="source-head"><span class="source-icon purple" data-icon="file-text"></span><span class="source-status sync">同步中</span></div>
  556. <strong>业务资料</strong>
  557. <p>规程、措施、报表、台账与验收资料</p>
  558. <div class="source-foot"><span>7,280 份</span><span>抽取 12,406 字段</span></div>
  559. </button>
  560. </div>
  561. <div class="two-column-grid">
  562. <article class="panel">
  563. <div class="panel-head">
  564. <div><span class="eyebrow">数据质量</span><h2>数据治理监控</h2></div>
  565. <span class="subtle-badge success"><span class="live-dot"></span>质量达标</span>
  566. </div>
  567. <div class="quality-list">
  568. <div class="quality-row">
  569. <span><i class="quality-dot teal"></i>完整性</span>
  570. <div class="quality-track"><i style="width: 98.4%"></i></div>
  571. <strong>98.4%</strong>
  572. </div>
  573. <div class="quality-row">
  574. <span><i class="quality-dot blue"></i>及时性</span>
  575. <div class="quality-track"><i style="width: 96.7%"></i></div>
  576. <strong>96.7%</strong>
  577. </div>
  578. <div class="quality-row">
  579. <span><i class="quality-dot amber"></i>一致性</span>
  580. <div class="quality-track"><i style="width: 94.2%"></i></div>
  581. <strong>94.2%</strong>
  582. </div>
  583. <div class="quality-row">
  584. <span><i class="quality-dot purple"></i>有效性</span>
  585. <div class="quality-track"><i style="width: 97.1%"></i></div>
  586. <strong>97.1%</strong>
  587. </div>
  588. </div>
  589. <div class="quality-alert">
  590. <span data-icon="circle-alert"></span>
  591. <div><strong>发现 16 条待处理数据问题</strong><p>主要集中在风量报表字段缺失,已生成治理任务。</p></div>
  592. <button class="text-button" type="button">查看</button>
  593. </div>
  594. </article>
  595. <article class="panel">
  596. <div class="panel-head">
  597. <div><span class="eyebrow">智能抽取</span><h2>业务资料处理任务</h2></div>
  598. <button class="text-button" type="button" data-open-processing-records>处理记录 <span data-icon="arrow-right"></span></button>
  599. </div>
  600. <div class="extraction-list" id="documentProcessingTaskList">
  601. <div class="business-document-note">
  602. <span data-icon="refresh-cw"></span>
  603. <p>正在加载资料处理任务。</p>
  604. </div>
  605. </div>
  606. </article>
  607. </div>
  608. <article class="panel">
  609. <div class="panel-head">
  610. <div><span class="eyebrow">数据资产</span><h2>统一数据对象</h2></div>
  611. <div class="panel-actions"><span class="subtle-badge">共 18,620 个对象</span></div>
  612. </div>
  613. <div class="object-grid">
  614. <div class="object-card"><span data-icon="mountain"></span><strong>矿井</strong><b>3</b><small>3 个生产矿井</small></div>
  615. <div class="object-card"><span data-icon="pickaxe"></span><strong>采掘工作面</strong><b>18</b><small>全部完成挂接</small></div>
  616. <div class="object-card"><span data-icon="route"></span><strong>巷道</strong><b>286</b><small>已建立拓扑关系</small></div>
  617. <div class="object-card"><span data-icon="radio-tower"></span><strong>传感器</strong><b>2,486</b><small>在线率 97.2%</small></div>
  618. <div class="object-card"><span data-icon="door-open"></span><strong>通风设施</strong><b>486</b><small>含风门、风窗、密闭</small></div>
  619. </div>
  620. </article>
  621. </section>
  622. <section class="view" id="view-facility-status" data-title="通防设施工况" data-subtitle="按设备类别查看通风设施运行、报警和断开状态">
  623. <div class="view-toolbar">
  624. <div class="toolbar-copy">
  625. <button class="icon-button" type="button" data-back-view="data" aria-label="返回数据感知">
  626. <span data-icon="arrow-left"></span>
  627. </button>
  628. <div>
  629. <strong>通防设备总览</strong>
  630. <p>按设备类别汇总总数、报警数和断开数</p>
  631. </div>
  632. </div>
  633. <div class="toolbar-actions">
  634. <span class="subtle-badge"><span class="live-dot"></span>实时工况</span>
  635. <button class="secondary-button" type="button" data-refresh-facility>
  636. <span data-icon="refresh-cw"></span>刷新
  637. </button>
  638. </div>
  639. </div>
  640. <div class="facility-overview-banner">
  641. <div>
  642. <span class="eyebrow">Facility Operations</span>
  643. <h2>通防设备运行总览</h2>
  644. <p id="facilityOverviewText">正在汇总设备运行、报警和断开状态。</p>
  645. </div>
  646. <div class="facility-overview-meta">
  647. <span class="facility-live-state"><span class="live-dot"></span>实时工况</span>
  648. <strong>设备状态汇总</strong>
  649. <small>状态按设备类别归集</small>
  650. </div>
  651. </div>
  652. <div class="facility-summary-grid" id="facilitySummaryGrid"></div>
  653. <div class="facility-layout">
  654. <div class="facility-category-panel">
  655. <div class="facility-section-head">
  656. <div>
  657. <span class="eyebrow">设备分类</span>
  658. <h2>通防设备类别</h2>
  659. </div>
  660. <span class="subtle-badge" id="facilityCategoryCount">13 类</span>
  661. </div>
  662. <div class="facility-category-grid" id="facilityCategoryGrid"></div>
  663. </div>
  664. <article class="panel facility-detail-panel" id="facilityDetailPanel">
  665. <div class="business-document-note">
  666. <span data-icon="settings-2"></span>
  667. <p>请选择左侧设备类别查看详情。</p>
  668. </div>
  669. </article>
  670. </div>
  671. </section>
  672. <section class="view" id="view-safety-monitoring" data-title="KJ 安全监控系统" data-subtitle="通防监测数据接入、实时曲线与智能趋势预测">
  673. <div class="view-toolbar">
  674. <div class="toolbar-copy">
  675. <button class="icon-button" type="button" data-back-view="data" aria-label="返回数据感知">
  676. <span data-icon="arrow-left"></span>
  677. </button>
  678. <div>
  679. <strong>KJ 安全监控系统</strong>
  680. <p id="safetyMonitoringToolbarText">瓦斯、风量、粉尘、CO、温度等通防监测数据</p>
  681. </div>
  682. </div>
  683. <div class="toolbar-actions">
  684. <span class="subtle-badge success"><span class="live-dot"></span>数据接入正常</span>
  685. <button class="secondary-button" type="button" data-refresh-safety-monitoring>
  686. <span data-icon="refresh-cw"></span>刷新数据
  687. </button>
  688. </div>
  689. </div>
  690. <div class="safety-overview-strip">
  691. <div class="safety-overview-copy">
  692. <span class="eyebrow">Monitoring Network</span>
  693. <h2>通防安全监测运行总览</h2>
  694. <p id="safetyOverviewText">正在读取安全监控系统数据。</p>
  695. </div>
  696. <div class="safety-overview-status">
  697. <span class="live-dot"></span>
  698. <div><strong id="safetyOverviewSource">KJ-SAFETY</strong><small id="safetyOverviewProtocol">OPC UA · 实时接入</small></div>
  699. </div>
  700. </div>
  701. <div class="safety-summary-grid" id="safetyMonitoringSummary"></div>
  702. <div class="safety-monitoring-layout">
  703. <article class="panel safety-chart-panel">
  704. <div class="safety-chart-head">
  705. <div>
  706. <span class="eyebrow">实时趋势</span>
  707. <h2 id="safetyChartTitle">甲烷浓度</h2>
  708. <p id="safetyChartSubtitle">监测点数据与未来 2 小时趋势预测</p>
  709. </div>
  710. <div class="safety-chart-current">
  711. <span>当前值</span>
  712. <strong id="safetyCurrentValue">--</strong>
  713. <small id="safetyCurrentUnit"></small>
  714. </div>
  715. </div>
  716. <div class="safety-chart-toolbar">
  717. <div class="safety-metric-tabs" id="safetyMetricTabs"></div>
  718. <div class="segmented-control" aria-label="曲线时间范围">
  719. <button type="button" data-safety-range="6">6 小时</button>
  720. <button type="button" data-safety-range="12">12 小时</button>
  721. <button class="active" type="button" data-safety-range="24">24 小时</button>
  722. </div>
  723. </div>
  724. <div class="safety-chart-shell" id="safetyMonitoringChart"></div>
  725. <div class="safety-chart-legend">
  726. <span><i class="actual"></i>实际监测值</span>
  727. <span><i class="forecast"></i>趋势预测</span>
  728. <span><i class="threshold"></i>报警阈值</span>
  729. </div>
  730. </article>
  731. <aside class="panel safety-insight-panel">
  732. <div class="panel-head">
  733. <div><span class="eyebrow">智能分析</span><h2>风险趋势研判</h2></div>
  734. <span class="subtle-badge" id="safetyPredictionConfidence">置信度 --</span>
  735. </div>
  736. <div class="safety-risk-summary">
  737. <div class="safety-risk-ring" id="safetyRiskRing">
  738. <strong id="safetyRiskScore">--</strong>
  739. <small>风险指数</small>
  740. </div>
  741. <div>
  742. <span class="safety-risk-label" id="safetyRiskLabel">分析中</span>
  743. <p id="safetyRiskSummary">正在评估监测趋势与阈值余量。</p>
  744. </div>
  745. </div>
  746. <div class="safety-insight-block">
  747. <span data-icon="trending-up"></span>
  748. <div>
  749. <strong>趋势预测</strong>
  750. <p id="safetyPredictionText">正在计算未来 2 小时变化趋势。</p>
  751. </div>
  752. </div>
  753. <div class="safety-recommendations" id="safetyRecommendations"></div>
  754. </aside>
  755. </div>
  756. <div class="safety-bottom-grid">
  757. <article class="panel">
  758. <div class="panel-head">
  759. <div><span class="eyebrow">接入测点</span><h2>监测点运行状态</h2></div>
  760. <span class="subtle-badge" id="safetySensorCount">-- 个测点</span>
  761. </div>
  762. <div class="safety-sensor-list" id="safetySensorList"></div>
  763. </article>
  764. <article class="panel">
  765. <div class="panel-head">
  766. <div><span class="eyebrow">异常事件</span><h2>实时告警</h2></div>
  767. <span class="subtle-badge" id="safetyAlarmCount">-- 条</span>
  768. </div>
  769. <div class="safety-alarm-list" id="safetyAlarmList"></div>
  770. </article>
  771. </div>
  772. </section>
  773. <section class="view" id="view-video-platform" data-title="工业视频平台" data-subtitle="通道管理、实时视频、分屏预览与智能识别事件">
  774. <div class="view-toolbar">
  775. <div class="toolbar-copy">
  776. <button class="icon-button" type="button" data-back-view="data" aria-label="返回数据感知">
  777. <span data-icon="arrow-left"></span>
  778. </button>
  779. <div>
  780. <strong>工业视频平台</strong>
  781. <p id="videoPlatformToolbarText">正在读取视频通道与识别事件</p>
  782. </div>
  783. </div>
  784. <div class="toolbar-actions">
  785. <span class="subtle-badge success"><span class="live-dot"></span>视频服务在线</span>
  786. <button class="secondary-button" type="button" data-refresh-video-platform>
  787. <span data-icon="refresh-cw"></span>刷新
  788. </button>
  789. </div>
  790. </div>
  791. <div class="video-summary-grid" id="videoSummaryGrid"></div>
  792. <div class="video-module-tabs" id="videoModuleTabs">
  793. <button class="active" type="button" data-video-module="door"><span data-icon="door-open"></span>风门</button>
  794. <button type="button" data-video-module="local-fan"><span data-icon="wind"></span>局部风机</button>
  795. <button type="button" data-video-module="main-fan"><span data-icon="settings"></span>主风机及配电室</button>
  796. </div>
  797. <div class="video-platform-layout">
  798. <aside class="panel video-device-panel">
  799. <div class="panel-head">
  800. <div><span class="eyebrow">通道目录</span><h2>视频设备树</h2></div>
  801. <span class="subtle-badge" id="videoChannelCount">-- 路</span>
  802. </div>
  803. <label class="video-channel-search">
  804. <span data-icon="search"></span>
  805. <input id="videoChannelSearch" type="search" placeholder="搜索通道或安装地点" />
  806. </label>
  807. <div class="video-device-tree" id="videoDeviceTree"></div>
  808. </aside>
  809. <div class="video-main-column">
  810. <div class="video-primary-layout">
  811. <article class="panel video-wall-panel">
  812. <div class="panel-head">
  813. <div><span class="eyebrow">实时监控</span><h2 id="videoWallTitle">双画面监控</h2></div>
  814. <div class="segmented-control video-layout-control" aria-label="视频分屏布局">
  815. <button type="button" data-video-layout="1">单画面</button>
  816. <button class="active" type="button" data-video-layout="2">双画面</button>
  817. <button type="button" data-video-layout="4">四分屏</button>
  818. <button type="button" data-video-layout="6">六分屏</button>
  819. <button type="button" data-video-layout="9">九分屏</button>
  820. </div>
  821. </div>
  822. <div class="video-wall layout-2" id="videoWall"></div>
  823. <div class="video-stream-note">
  824. <span data-icon="circle-alert"></span>
  825. <p id="videoStreamNote">视频流地址尚未配置,当前展示通道状态与控制界面。</p>
  826. </div>
  827. </article>
  828. </div>
  829. </div>
  830. </div>
  831. <div class="video-insight-row">
  832. <article class="panel video-status-panel">
  833. <div class="panel-head">
  834. <div><span class="eyebrow">状态总览</span><h2 id="videoStatusTitle">风门状态总览</h2></div>
  835. </div>
  836. <div class="video-status-grid" id="videoStatusOverview"></div>
  837. </article>
  838. <article class="panel video-event-panel">
  839. <div class="panel-head">
  840. <div><span class="eyebrow">实时告警</span><h2>视频分析事件</h2></div>
  841. <span class="subtle-badge" id="videoEventCount">-- 条</span>
  842. </div>
  843. <div class="video-event-list" id="videoEventList"></div>
  844. <div class="video-event-pagination" id="videoEventPagination"></div>
  845. </article>
  846. <article class="panel video-records-panel">
  847. <div class="panel-head">
  848. <div><span class="eyebrow">通行与操作记录</span><h2 id="videoRecordTitle">车辆通行记录</h2></div>
  849. </div>
  850. <div class="video-record-tabs" id="videoRecordTabs"></div>
  851. <div class="video-record-table" id="videoRecordsTable"></div>
  852. </article>
  853. </div>
  854. <div class="video-bottom-layout">
  855. <article class="panel video-thumbnail-panel">
  856. <div class="panel-head">
  857. <div><span class="eyebrow">历史画面</span><h2>识别抓拍</h2></div>
  858. <span class="subtle-badge" id="videoThumbnailCount">-- 张</span>
  859. </div>
  860. <div class="video-filter-bar video-filter-bar-inline">
  861. <label><span>时间范围</span><input id="videoFilterStart" type="datetime-local" /></label>
  862. <span class="video-filter-separator">至</span>
  863. <label><input id="videoFilterEnd" type="datetime-local" /></label>
  864. <button class="active" type="button" data-video-quick-range="today">今日</button>
  865. <button type="button" data-video-quick-range="week">近7天</button>
  866. <label><span id="videoRecordFilterLabel">告警类型</span><select id="videoRecordType">
  867. <option>全部类型</option>
  868. <option>AI防夹人预警</option>
  869. <option>异物卡堵预警</option>
  870. <option>密封失效故障</option>
  871. <option>违规停留预警</option>
  872. <option>风门未关严</option>
  873. <option>车辆撞击故障</option>
  874. </select></label>
  875. <label><span id="videoScopeFilterLabel">操作类型</span><select id="videoDeviceScope">
  876. <option>全部操作</option>
  877. <option>风机调频</option>
  878. <option>风机切换</option>
  879. <option>参数调整</option>
  880. <option>复位操作</option>
  881. </select></label>
  882. <div class="video-filter-actions">
  883. <button class="primary-button" type="button" data-video-search><span data-icon="search"></span>一键检索</button>
  884. <button class="secondary-button" type="button" data-video-reset><span data-icon="refresh-cw"></span>重置</button>
  885. </div>
  886. </div>
  887. <div class="video-thumbnail-grid" id="videoThumbnailGrid"></div>
  888. </article>
  889. </div>
  890. </section>
  891. <section class="view" id="view-business-data" data-title="业务资料" data-subtitle="统一管理规程、措施、报表、台账与验收资料,实现资料智能抽取与全文检索">
  892. <div class="view-toolbar">
  893. <div class="toolbar-copy">
  894. <button class="icon-button" type="button" data-back-view="data" aria-label="返回数据感知">
  895. <span data-icon="arrow-left"></span>
  896. </button>
  897. <div>
  898. <strong>业务资料库</strong>
  899. <p>已接入 7,280 份资料,关键字段抽取平均准确率 85.7%</p>
  900. </div>
  901. </div>
  902. <div class="toolbar-actions">
  903. <button class="secondary-button" type="button" data-export-documents><span data-icon="download"></span>导出资料清单</button>
  904. <button class="primary-button" type="button" data-open-upload><span data-icon="upload"></span>上传资料</button>
  905. </div>
  906. </div>
  907. <div class="business-kpi-grid">
  908. <article class="business-kpi-card">
  909. <span class="business-kpi-icon purple" data-icon="file-text"></span>
  910. <div><strong data-business-kpi="total">7,280</strong><p>业务资料总数</p></div>
  911. <small data-business-kpi-hint="total">本月新增 126 份</small>
  912. </article>
  913. <article class="business-kpi-card">
  914. <span class="business-kpi-icon teal" data-icon="scan-search"></span>
  915. <div><strong data-business-kpi="fields">12,406</strong><p>已抽取关键字段</p></div>
  916. <small data-business-kpi-hint="fields">字段完整率 96.2%</small>
  917. </article>
  918. <article class="business-kpi-card">
  919. <span class="business-kpi-icon blue" data-icon="activity"></span>
  920. <div><strong data-business-kpi="accuracy">85.7%</strong><p>字段抽取准确率</p></div>
  921. <small data-business-kpi-hint="accuracy">较上月提升 2.1%</small>
  922. </article>
  923. <article class="business-kpi-card">
  924. <span class="business-kpi-icon amber" data-icon="refresh-cw"></span>
  925. <div><strong data-business-kpi="pending">18</strong><p>待处理抽取任务</p></div>
  926. <small data-business-kpi-hint="pending">预计 36 分钟完成</small>
  927. </article>
  928. </div>
  929. <div class="business-data-layout">
  930. <aside class="panel business-category-panel">
  931. <div class="panel-head">
  932. <div><span class="eyebrow">资料分类</span><h2>资料目录</h2></div>
  933. <span class="subtle-badge">6 类</span>
  934. </div>
  935. <div class="business-category-list" id="businessCategoryList">
  936. <button class="active" type="button" data-doc-category="all"><span><i data-icon="folder"></i>全部资料</span><b>7,280</b></button>
  937. <button type="button" data-doc-category="通风专业"><span><i data-icon="wind"></i>通风专业</span><b>1,686</b></button>
  938. <button type="button" data-doc-category="火灾防治"><span><i data-icon="flame"></i>火灾防治</span><b>986</b></button>
  939. <button type="button" data-doc-category="监测监控"><span><i data-icon="radio-tower"></i>监测监控</span><b>1,452</b></button>
  940. <button type="button" data-doc-category="粉尘防治"><span><i data-icon="cloud-dust"></i>粉尘防治</span><b>1,178</b></button>
  941. <button type="button" data-doc-category="瓦斯防治"><span><i data-icon="gauge"></i>瓦斯防治</span><b>1,324</b></button>
  942. <button type="button" data-doc-category="制度管理"><span><i data-icon="book-open"></i>制度管理</span><b>654</b></button>
  943. </div>
  944. <div class="business-storage">
  945. <div class="business-storage-head"><span>资料库空间</span><strong data-storage-percent>--</strong></div>
  946. <div class="business-storage-track"><i data-storage-bar style="width: 0%"></i></div>
  947. <p data-storage-usage>正在统计存储空间</p>
  948. </div>
  949. </aside>
  950. <article class="panel business-list-panel">
  951. <div class="panel-head">
  952. <div><span class="eyebrow">资料清单</span><h2>可检索资料</h2></div>
  953. <span class="subtle-badge success"><span class="live-dot"></span>索引已更新</span>
  954. </div>
  955. <label class="document-search">
  956. <span data-icon="search"></span>
  957. <input id="businessDocumentSearch" type="search" placeholder="全文检索资料名称、正文、字段和责任人" />
  958. <button type="button" aria-label="筛选资料"><span data-icon="filter"></span></button>
  959. </label>
  960. <div class="document-list" id="businessDocumentList">
  961. <button class="document-row active" type="button" data-document-id="n1202" data-category="通风专业">
  962. <span class="document-type pdf">PDF</span>
  963. <span class="document-main">
  964. <strong>N1202 工作面通风安全技术措施</strong>
  965. <small>编号 TF-CS-2026-086 · 42 页 · 王强</small>
  966. </span>
  967. <span class="document-extraction success"><i></i>抽取完成</span>
  968. <span class="document-fields"><b>86</b><small>字段</small></span>
  969. <span data-icon="chevron-right"></span>
  970. </button>
  971. <button class="document-row" type="button" data-document-id="resistance" data-category="通风专业">
  972. <span class="document-type doc">DOC</span>
  973. <span class="document-main">
  974. <strong>2026 年 9 月通风阻力测定报告</strong>
  975. <small>编号 TF-BB-2026-091 · 28 页 · 赵磊</small>
  976. </span>
  977. <span class="document-extraction success"><i></i>抽取完成</span>
  978. <span class="document-fields"><b>63</b><small>字段</small></span>
  979. <span data-icon="chevron-right"></span>
  980. </button>
  981. <button class="document-row" type="button" data-document-id="airlog" data-category="监测监控">
  982. <span class="document-type xls">XLS</span>
  983. <span class="document-main">
  984. <strong>矿井测风记录日报表</strong>
  985. <small>编号 TF-BB-2026-092 · 1,240 行 · 刘伟</small>
  986. </span>
  987. <span class="document-extraction running"><i></i>抽取中 76%</span>
  988. <span class="document-fields"><b>318</b><small>数据项</small></span>
  989. <span data-icon="chevron-right"></span>
  990. </button>
  991. <button class="document-row" type="button" data-document-id="s1302" data-category="粉尘防治">
  992. <span class="document-type pdf">PDF</span>
  993. <span class="document-main">
  994. <strong>S1302 工作面综合防尘设计</strong>
  995. <small>编号 TF-SJ-2026-034 · 36 页 · 陈晨</small>
  996. </span>
  997. <span class="document-extraction pending"><i></i>等待解析</span>
  998. <span class="document-fields"><b>52</b><small>字段</small></span>
  999. <span data-icon="chevron-right"></span>
  1000. </button>
  1001. <button class="document-row" type="button" data-document-id="regulation" data-category="制度管理">
  1002. <span class="document-type pdf">PDF</span>
  1003. <span class="document-main">
  1004. <strong>矿井通风管理制度汇编</strong>
  1005. <small>编号 TF-GC-2026-012 · 118 页 · 周洋</small>
  1006. </span>
  1007. <span class="document-extraction success"><i></i>抽取完成</span>
  1008. <span class="document-fields"><b>146</b><small>字段</small></span>
  1009. <span data-icon="chevron-right"></span>
  1010. </button>
  1011. <button class="document-row" type="button" data-document-id="acceptance" data-category="通风专业">
  1012. <span class="document-type doc">DOC</span>
  1013. <span class="document-main">
  1014. <strong>南翼通风系统调整验收资料</strong>
  1015. <small>编号 TF-YS-2026-021 · 22 页 · 孙敏</small>
  1016. </span>
  1017. <span class="document-extraction success"><i></i>抽取完成</span>
  1018. <span class="document-fields"><b>47</b><small>字段</small></span>
  1019. <span data-icon="chevron-right"></span>
  1020. </button>
  1021. </div>
  1022. <div class="document-list-footer">
  1023. <span>共 7,280 份资料</span>
  1024. <div><button type="button">上一页</button><button class="active" type="button">1</button><button type="button">2</button><button type="button">下一页</button></div>
  1025. </div>
  1026. </article>
  1027. <aside class="panel business-detail-panel" id="businessDetailPanel"></aside>
  1028. </div>
  1029. </section>
  1030. <section class="view" id="view-knowledge" data-title="通防知识中心" data-subtitle="融合规范标准、事故案例与专家经验,实现知识检索与智能问答">
  1031. <div class="knowledge-hero">
  1032. <div class="knowledge-hero-copy">
  1033. <span class="eyebrow">Knowledge Copilot</span>
  1034. <h2>通防专业知识助手</h2>
  1035. <p>基于 2,164 条领域知识,结合知识图谱与混合检索,为业务处置提供可追溯的答案。</p>
  1036. </div>
  1037. <div class="knowledge-hero-stats">
  1038. <div><strong>2,164</strong><span>知识条目</span></div>
  1039. <div><strong>84.6%</strong><span>检索召回率</span></div>
  1040. <div><strong>1.2s</strong><span>平均响应</span></div>
  1041. </div>
  1042. </div>
  1043. <form class="knowledge-console" id="knowledgeConsoleForm">
  1044. <span class="console-icon" data-icon="search"></span>
  1045. <textarea name="question" rows="1" data-max-height="96" placeholder="输入通防业务问题,例如:局部通风机停风后应该如何处置?"></textarea>
  1046. <button class="primary-button" type="submit"><span data-icon="sparkles"></span>智能回答</button>
  1047. </form>
  1048. <div class="two-column-grid knowledge-grid">
  1049. <article class="panel knowledge-answer-panel" id="knowledgeAnswerPanel">
  1050. <div class="panel-head">
  1051. <div><span class="eyebrow">智能问答</span><h2>回答与依据</h2></div>
  1052. <span class="subtle-badge success">知识溯源已开启</span>
  1053. </div>
  1054. <div class="ai-answer">
  1055. <div class="ai-avatar"><span data-icon="bot"></span></div>
  1056. <div class="ai-answer-body">
  1057. <p>局部通风机停风后,应当立即停止作业、撤出人员、切断电源,并设置栅栏和警示标志。恢复通风前,必须先检查瓦斯浓度,确认停风区域瓦斯浓度符合规定后,方可启动局部通风机。</p>
  1058. <div class="answer-steps">
  1059. <div><span>1</span><p>停止作业并撤出受影响区域人员</p></div>
  1060. <div><span>2</span><p>切断电源,设置栅栏与警示标志</p></div>
  1061. <div><span>3</span><p>检查瓦斯与风筒状态,确认条件后恢复通风</p></div>
  1062. </div>
  1063. <div class="source-citations">
  1064. <button type="button"><span data-icon="file-text"></span>《煤矿安全规程》第 164 条 <b>96%</b></button>
  1065. <button type="button"><span data-icon="file-text"></span>局部通风机停风处置案例 2024-032 <b>91%</b></button>
  1066. <button type="button"><span data-icon="file-text"></span>《局部通风管理标准》第 4.2 节 <b>88%</b></button>
  1067. </div>
  1068. </div>
  1069. </div>
  1070. </article>
  1071. <article class="panel">
  1072. <div class="panel-head">
  1073. <div><span class="eyebrow">知识图谱</span><h2>风险关联关系</h2></div>
  1074. <button class="icon-button small" type="button" aria-label="展开知识图谱"><span data-icon="maximize-2"></span></button>
  1075. </div>
  1076. <div class="graph-canvas">
  1077. <svg viewBox="0 0 560 360" role="img" aria-label="通防风险知识图谱">
  1078. <defs>
  1079. <marker id="graphArrow" markerWidth="8" markerHeight="8" refX="8" refY="4" orient="auto">
  1080. <path d="M0,0 L8,4 L0,8 z" fill="#93a4b8" />
  1081. </marker>
  1082. </defs>
  1083. <g class="graph-links">
  1084. <path d="M280 180 L126 88" />
  1085. <path d="M280 180 L438 92" />
  1086. <path d="M280 180 L118 280" />
  1087. <path d="M280 180 L438 282" />
  1088. <path d="M126 88 L438 92" />
  1089. <path d="M118 280 L438 282" />
  1090. </g>
  1091. <g class="graph-center" transform="translate(280 180)">
  1092. <circle r="48" />
  1093. <text y="-4">瓦斯超限</text>
  1094. <text y="16">风险事件</text>
  1095. </g>
  1096. <g class="graph-node" transform="translate(126 88)">
  1097. <circle r="34" /><text y="-4">局部通风机</text><text y="15">停风/循环风</text>
  1098. </g>
  1099. <g class="graph-node amber-node" transform="translate(438 92)">
  1100. <circle r="34" /><text y="-4">风门</text><text y="15">漏风/失效</text>
  1101. </g>
  1102. <g class="graph-node" transform="translate(118 280)">
  1103. <circle r="34" /><text y="-4">风量分配</text><text y="15">风量不足</text>
  1104. </g>
  1105. <g class="graph-node amber-node" transform="translate(438 282)">
  1106. <circle r="34" /><text y="-4">监测系统</text><text y="15">数据异常</text>
  1107. </g>
  1108. </svg>
  1109. </div>
  1110. <div class="graph-legend">
  1111. <span><i class="graph-legend-dot center"></i>风险事件</span>
  1112. <span><i class="graph-legend-dot cause"></i>关联缺陷</span>
  1113. <span><i class="graph-legend-dot data"></i>监测依据</span>
  1114. </div>
  1115. </article>
  1116. </div>
  1117. <div class="knowledge-category-grid">
  1118. <article class="category-card" role="button" tabindex="0" data-knowledge-category="standards">
  1119. <span class="category-icon blue" data-icon="book-open"></span>
  1120. <div><strong>规范标准</strong><b>628</b><p>规程、标准、办法及技术要求</p></div>
  1121. <button type="button" aria-label="查看规范标准"><span data-icon="chevron-right"></span></button>
  1122. </article>
  1123. <article class="category-card" role="button" tabindex="0" data-knowledge-category="cases">
  1124. <span class="category-icon red" data-icon="history"></span>
  1125. <div><strong>事故案例</strong><b>364</b><p>典型事故与隐患处置案例</p></div>
  1126. <button type="button" aria-label="查看事故案例"><span data-icon="chevron-right"></span></button>
  1127. </article>
  1128. <article class="category-card" role="button" tabindex="0" data-knowledge-category="expert">
  1129. <span class="category-icon amber" data-icon="user-round"></span>
  1130. <div><strong>专家经验</strong><b>512</b><p>专家规则、判识经验与处置建议</p></div>
  1131. <button type="button" aria-label="查看专家经验"><span data-icon="chevron-right"></span></button>
  1132. </article>
  1133. <article class="category-card" role="button" tabindex="0" data-knowledge-category="management">
  1134. <span class="category-icon teal" data-icon="workflow"></span>
  1135. <div><strong>管理流程</strong><b>660</b><p>业务流程、责任岗位与闭环规则</p></div>
  1136. <button type="button" aria-label="查看管理流程"><span data-icon="chevron-right"></span></button>
  1137. </article>
  1138. </div>
  1139. <div class="knowledge-catalog-modal" id="knowledgeCatalogModal" hidden>
  1140. <div class="knowledge-catalog-scrim" data-knowledge-catalog-close></div>
  1141. <section class="knowledge-catalog-dialog" role="dialog" aria-modal="true" aria-labelledby="knowledgeCatalogTitle">
  1142. <header class="knowledge-catalog-head">
  1143. <div>
  1144. <span class="eyebrow" id="knowledgeCatalogEyebrow">知识目录</span>
  1145. <h2 id="knowledgeCatalogTitle">知识列表</h2>
  1146. <p id="knowledgeCatalogSubtitle"></p>
  1147. </div>
  1148. <button class="icon-button small" type="button" aria-label="关闭知识列表" data-knowledge-catalog-close>
  1149. <span data-icon="x"></span>
  1150. </button>
  1151. </header>
  1152. <form class="knowledge-catalog-search" id="knowledgeCatalogSearch">
  1153. <span data-icon="search"></span>
  1154. <input type="search" name="keyword" placeholder="检索当前分类下的标准、标题或关键词" />
  1155. <button class="secondary-button" type="submit">检索</button>
  1156. </form>
  1157. <div class="knowledge-catalog-content" id="knowledgeCatalogContent"></div>
  1158. <footer class="knowledge-catalog-pager" id="knowledgeCatalogPager"></footer>
  1159. </section>
  1160. </div>
  1161. </section>
  1162. <section class="view" id="view-diagnosis" data-title="隐患识别中心" data-subtitle="面向五类重大安全风险,编排专业智能体完成识别、研判与风险汇聚">
  1163. <div class="view-toolbar hazard-toolbar">
  1164. <div class="toolbar-copy">
  1165. <span class="toolbar-icon red" data-icon="shield-alert"></span>
  1166. <div><strong>重大安全隐患智能识别</strong><p>五个业务场景 · 15 个专业智能体 · 风险清单持续更新</p></div>
  1167. </div>
  1168. <div class="toolbar-actions">
  1169. <button class="secondary-button" type="button" data-export-hazards><span data-icon="download"></span>导出识别报告</button>
  1170. <button class="primary-button" type="button" data-run-scene-agents><span data-icon="play"></span>运行当前场景</button>
  1171. </div>
  1172. </div>
  1173. <div class="hazard-overview">
  1174. <div class="hazard-overview-copy">
  1175. <span class="eyebrow">Risk Agent Matrix</span>
  1176. <h2>重大安全隐患识别智能体矩阵</h2>
  1177. <p>围绕局部通风、通风设施、通风系统管理、风量分配和灾害防治构建专业识别能力。</p>
  1178. </div>
  1179. <div class="hazard-overview-stats">
  1180. <div><strong id="hazardAgentTotal">15</strong><span>专业智能体</span></div>
  1181. <div><strong id="hazardSceneTotal">5</strong><span>业务场景</span></div>
  1182. <div><strong id="hazardRunCount">0</strong><span>本轮运行</span></div>
  1183. <div><strong id="hazardRiskTotal">5</strong><span>风险清单</span></div>
  1184. </div>
  1185. </div>
  1186. <div class="hazard-scenario-grid" id="hazardScenarioGrid" aria-label="隐患识别场景"></div>
  1187. <div class="hazard-console-grid">
  1188. <article class="panel hazard-agent-panel">
  1189. <div class="panel-head">
  1190. <div><span class="eyebrow">Scenario Agents</span><h2>场景智能体</h2></div>
  1191. <span class="subtle-badge" id="hazardSceneAgentCount">3 个智能体</span>
  1192. </div>
  1193. <div class="hazard-agent-grid" id="hazardAgentGrid"></div>
  1194. </article>
  1195. <aside class="panel hazard-result-panel">
  1196. <div class="panel-head">
  1197. <div><span class="eyebrow">Agent Run</span><h2>智能体运行结果</h2></div>
  1198. <span class="subtle-badge" id="hazardResultStatus">尚未执行</span>
  1199. </div>
  1200. <div class="hazard-agent-result" id="hazardAgentResult" aria-live="polite">
  1201. <div class="hazard-result-empty">
  1202. <span data-icon="bot"></span>
  1203. <strong>尚未执行</strong>
  1204. <p>当前没有可展示的识别结果。</p>
  1205. </div>
  1206. </div>
  1207. </aside>
  1208. </div>
  1209. <div class="hazard-risk-summary">
  1210. <div class="hazard-metric total"><span data-icon="scan-search"></span><div><strong id="hazardMetricTotal">5</strong><p>风险总数</p></div></div>
  1211. <div class="hazard-metric high"><span data-icon="triangle-alert"></span><div><strong id="hazardMetricHigh">2</strong><p>重大隐患</p></div></div>
  1212. <div class="hazard-metric medium"><span data-icon="circle-alert"></span><div><strong id="hazardMetricMedium">2</strong><p>一般隐患</p></div></div>
  1213. <div class="hazard-metric low"><span data-icon="shield-check"></span><div><strong id="hazardMetricLow">1</strong><p>提示风险</p></div></div>
  1214. </div>
  1215. <article class="panel hazard-risk-panel">
  1216. <div class="panel-head">
  1217. <div><span class="eyebrow">Risk Backlog</span><h2>隐患风险列表</h2></div>
  1218. <div class="hazard-risk-actions">
  1219. <div class="hazard-risk-filters" id="hazardRiskFilters">
  1220. <button class="active" type="button" data-risk-filter="all">全部</button>
  1221. <button type="button" data-risk-filter="high">高风险</button>
  1222. <button type="button" data-risk-filter="medium">中风险</button>
  1223. <button type="button" data-risk-filter="low">低风险</button>
  1224. </div>
  1225. <label class="hazard-scene-select">
  1226. <span>场景</span>
  1227. <select id="hazardRiskSceneFilter">
  1228. <option value="all">全部场景</option>
  1229. <option value="local">局部通风</option>
  1230. <option value="facility">通风设施</option>
  1231. <option value="system">通风系统管理</option>
  1232. <option value="volume">风量分配</option>
  1233. <option value="disaster">灾害防治</option>
  1234. </select>
  1235. </label>
  1236. </div>
  1237. </div>
  1238. <div class="hazard-risk-table-head">
  1239. <span>隐患事项</span><span>等级</span><span>场景 / 来源</span><span>证据</span><span>置信度</span><span>状态</span><span>操作</span>
  1240. </div>
  1241. <div class="hazard-risk-list" id="hazardRiskList"></div>
  1242. </article>
  1243. </section>
  1244. <section class="view" id="view-evaluation" data-title="综合评价" data-subtitle="建立多维度量化指标体系,结合大模型完成评价、解释与优化建议">
  1245. <div class="evaluation-banner">
  1246. <div class="evaluation-grade">
  1247. <span>本期评价结果</span>
  1248. <strong>A</strong>
  1249. <em>运行状态优良</em>
  1250. </div>
  1251. <div class="evaluation-summary-copy">
  1252. <span class="eyebrow">2026 年 10 月 08 日 · 自动评价</span>
  1253. <h2>上湾煤矿通防业务综合评价报告</h2>
  1254. <p>安全性、可靠性表现稳定,风量分配均衡度和局部通风管理为当前主要提升方向。</p>
  1255. <div class="evaluation-tags"><span>数据完整率 98.4%</span><span>专家复核通过</span><span>报告可追溯</span></div>
  1256. </div>
  1257. <button class="primary-button" type="button"><span data-icon="download"></span>下载评价报告</button>
  1258. </div>
  1259. <div class="evaluation-grid">
  1260. <article class="panel radar-panel">
  1261. <div class="panel-head">
  1262. <div><span class="eyebrow">指标画像</span><h2>五维综合评价</h2></div>
  1263. <span class="subtle-badge">综合得分 92.8</span>
  1264. </div>
  1265. <div class="radar-wrap">
  1266. <svg viewBox="0 0 420 350" role="img" aria-label="五维综合评价雷达图">
  1267. <g class="radar-grid">
  1268. <polygon points="210,34 369,151 308,338 112,338 51,151" />
  1269. <polygon points="210,74 327,162 282,305 138,305 93,162" />
  1270. <polygon points="210,114 286,173 255,273 165,273 134,173" />
  1271. <polygon points="210,154 245,184 228,240 192,240 175,184" />
  1272. <path d="M210 34 L210 338 M51 151 L369 151 M112 338 L308 338" />
  1273. </g>
  1274. <polygon class="radar-area" points="210,55 350,158 294,316 126,322 75,157" />
  1275. <polygon class="radar-line" points="210,55 350,158 294,316 126,322 75,157" />
  1276. <g class="radar-points">
  1277. <circle cx="210" cy="55" r="4" /><circle cx="350" cy="158" r="4" /><circle cx="294" cy="316" r="4" /><circle cx="126" cy="322" r="4" /><circle cx="75" cy="157" r="4" />
  1278. </g>
  1279. <g class="radar-labels">
  1280. <text x="210" y="18">安全性 96.2</text>
  1281. <text x="386" y="154">可靠性 91.4</text>
  1282. <text x="318" y="346">经济性 84.7</text>
  1283. <text x="28" y="346">管理合规 94.1</text>
  1284. <text x="12" y="154">数据质量 89.6</text>
  1285. </g>
  1286. </svg>
  1287. </div>
  1288. </article>
  1289. <article class="panel evaluation-detail-panel">
  1290. <div class="panel-head">
  1291. <div><span class="eyebrow">指标明细</span><h2>维度得分与变化</h2></div>
  1292. <button class="text-button" type="button">指标设置 <span data-icon="sliders-horizontal"></span></button>
  1293. </div>
  1294. <div class="dimension-list">
  1295. <div class="dimension-row">
  1296. <span class="dimension-icon green" data-icon="shield-check"></span>
  1297. <div><strong>安全性</strong><p>瓦斯、火灾、粉尘、通风可靠性</p></div>
  1298. <div class="dimension-score"><b>96.2</b><span class="up"><i data-icon="arrow-up"></i>1.8</span></div>
  1299. </div>
  1300. <div class="dimension-row">
  1301. <span class="dimension-icon blue" data-icon="activity"></span>
  1302. <div><strong>可靠性</strong><p>设备可用率、数据连续性、故障恢复</p></div>
  1303. <div class="dimension-score"><b>91.4</b><span class="up"><i data-icon="arrow-up"></i>0.6</span></div>
  1304. </div>
  1305. <div class="dimension-row">
  1306. <span class="dimension-icon amber" data-icon="circle-dollar-sign"></span>
  1307. <div><strong>经济性</strong><p>主通风机能耗、漏风率、运行效率</p></div>
  1308. <div class="dimension-score"><b>84.7</b><span class="down"><i data-icon="arrow-down"></i>0.9</span></div>
  1309. </div>
  1310. <div class="dimension-row">
  1311. <span class="dimension-icon purple" data-icon="clipboard-check"></span>
  1312. <div><strong>管理合规</strong><p>资料完整、制度执行、整改及时性</p></div>
  1313. <div class="dimension-score"><b>94.1</b><span class="up"><i data-icon="arrow-up"></i>2.1</span></div>
  1314. </div>
  1315. <div class="dimension-row">
  1316. <span class="dimension-icon teal" data-icon="database"></span>
  1317. <div><strong>数据质量</strong><p>完整性、及时性、一致性与有效性</p></div>
  1318. <div class="dimension-score"><b>89.6</b><span class="up"><i data-icon="arrow-up"></i>3.4</span></div>
  1319. </div>
  1320. </div>
  1321. </article>
  1322. </div>
  1323. <article class="panel evaluation-agent-panel">
  1324. <div class="agent-orb"><span data-icon="sparkles"></span></div>
  1325. <div class="agent-copy">
  1326. <span class="eyebrow">Evaluation Agent</span>
  1327. <h2>评价智能体已生成优化建议</h2>
  1328. <p>“经济性指标下降主要受北翼通风阻力上升影响。建议优先核查北翼回风巷道支护变形、堆积物和 2# 调节风门漏风情况,并对主通风机运行曲线进行复核。”</p>
  1329. <div class="agent-suggestions">
  1330. <span><i>1</i>北翼回风阻力专项排查</span>
  1331. <span><i>2</i>主通风机能效优化</span>
  1332. <span><i>3</i>S1301 风量复测与分配调整</span>
  1333. </div>
  1334. </div>
  1335. <button class="secondary-button" type="button" data-start-evaluation><span data-icon="refresh-cw"></span>重新评价</button>
  1336. </article>
  1337. <article class="panel">
  1338. <div class="panel-head">
  1339. <div><span class="eyebrow">历史趋势</span><h2>近六个月综合得分</h2></div>
  1340. <div class="chart-legend"><span><i class="legend-line teal"></i>综合得分</span><span><i class="legend-line amber"></i>安全性</span></div>
  1341. </div>
  1342. <div class="line-chart">
  1343. <div class="chart-y-axis"><span>100</span><span>90</span><span>80</span><span>70</span><span>60</span></div>
  1344. <svg viewBox="0 0 900 240" preserveAspectRatio="none" role="img" aria-label="近六个月综合得分趋势图">
  1345. <g class="chart-grid">
  1346. <path d="M0 20 L900 20" /><path d="M0 70 L900 70" /><path d="M0 120 L900 120" /><path d="M0 170 L900 170" /><path d="M0 220 L900 220" />
  1347. </g>
  1348. <path class="chart-area" d="M0,112 C75,108 116,99 180,94 C244,89 276,82 360,77 C444,72 496,65 540,55 C584,45 636,46 720,34 C804,22 846,18 900,12 L900,220 L0,220 Z" />
  1349. <path class="chart-line teal-line" d="M0,112 C75,108 116,99 180,94 C244,89 276,82 360,77 C444,72 496,65 540,55 C584,45 636,46 720,34 C804,22 846,18 900,12" />
  1350. <path class="chart-line amber-line" d="M0,90 C90,85 126,88 180,83 C270,74 306,72 360,67 C450,59 486,61 540,52 C630,38 666,42 720,31 C810,15 846,18 900,8" />
  1351. <g class="chart-points">
  1352. <circle cx="0" cy="112" r="4" /><circle cx="180" cy="94" r="4" /><circle cx="360" cy="77" r="4" /><circle cx="540" cy="55" r="4" /><circle cx="720" cy="34" r="4" /><circle cx="900" cy="12" r="4" />
  1353. </g>
  1354. </svg>
  1355. <div class="chart-x-axis"><span>5月</span><span>6月</span><span>7月</span><span>8月</span><span>9月</span><span>10月</span></div>
  1356. </div>
  1357. </article>
  1358. </section>
  1359. <section class="view" id="view-closed-loop" data-title="闭环处置" data-subtitle="将诊断与评价结果转为任务,实现整改、复核、销号和案例沉淀">
  1360. <div class="view-toolbar">
  1361. <div class="toolbar-copy">
  1362. <span class="toolbar-icon amber" data-icon="workflow"></span>
  1363. <div><strong>整改任务看板</strong><p>本月累计处置任务 86 项,闭环率 91.8%,平均处置时长 5.6 小时</p></div>
  1364. </div>
  1365. <div class="toolbar-actions">
  1366. <button class="secondary-button" type="button"><span data-icon="filter"></span>筛选</button>
  1367. <button class="primary-button" type="button" data-toast="新建任务表单已打开"><span data-icon="plus"></span>新建任务</button>
  1368. </div>
  1369. </div>
  1370. <div class="kanban-board">
  1371. <div class="kanban-column">
  1372. <div class="kanban-head"><span><i class="column-dot pending"></i>待确认 <b>3</b></span><button type="button" aria-label="添加待确认任务"><span data-icon="plus"></span></button></div>
  1373. <button class="work-card priority-high" type="button" data-toast="已打开任务:N1202 瓦斯超限处置">
  1374. <div class="work-card-head"><span class="work-tag high">高优先级</span><span>10:38</span></div>
  1375. <strong>N1202 回风巷瓦斯超限处置</strong>
  1376. <p>建议核查局部通风机与回风系统,确认撤人断电措施执行情况。</p>
  1377. <div class="work-meta"><span class="avatar mini">王</span><span>王强</span><span>剩余 01:26</span></div>
  1378. </button>
  1379. <button class="work-card priority-medium" type="button" data-toast="已打开任务:2# 调节风门状态复核">
  1380. <div class="work-card-head"><span class="work-tag medium">中优先级</span><span>10:28</span></div>
  1381. <strong>2# 调节风门状态复核</strong>
  1382. <p>视频判断风门未闭合,传感器反馈正常,需现场确认。</p>
  1383. <div class="work-meta"><span class="avatar mini">赵</span><span>赵磊</span><span>剩余 03:42</span></div>
  1384. </button>
  1385. <button class="work-card priority-low" type="button" data-toast="已打开任务:通风阻力月报复核">
  1386. <div class="work-card-head"><span class="work-tag low">常规</span><span>09:20</span></div>
  1387. <strong>通风阻力月报复核</strong>
  1388. <p>核查阻力异常点与测风记录一致性。</p>
  1389. <div class="work-meta"><span class="avatar mini">陈</span><span>陈晨</span><span>剩余 1 天</span></div>
  1390. </button>
  1391. </div>
  1392. <div class="kanban-column">
  1393. <div class="kanban-head"><span><i class="column-dot processing"></i>处理中 <b>4</b></span><button type="button" aria-label="添加处理中任务"><span data-icon="plus"></span></button></div>
  1394. <button class="work-card priority-high" type="button" data-toast="已打开任务:T-17 局部通风机异常处置">
  1395. <div class="work-card-head"><span class="work-tag high">高优先级</span><span>10:32</span></div>
  1396. <strong>T-17 局部通风机异常处置</strong>
  1397. <p>现场已到达,正在检查供电回路与风筒连接状态。</p>
  1398. <div class="progress-line"><i style="width: 62%"></i></div>
  1399. <div class="work-meta"><span class="avatar mini">刘</span><span>刘伟</span><span>62%</span></div>
  1400. </button>
  1401. <button class="work-card priority-medium" type="button" data-toast="已打开任务:S1301 风量复测">
  1402. <div class="work-card-head"><span class="work-tag medium">中优先级</span><span>09:56</span></div>
  1403. <strong>S1301 风量复测</strong>
  1404. <p>调整风窗开度后进行第二次测风。</p>
  1405. <div class="progress-line"><i style="width: 78%"></i></div>
  1406. <div class="work-meta"><span class="avatar mini">周</span><span>周洋</span><span>78%</span></div>
  1407. </button>
  1408. <button class="work-card priority-medium" type="button" data-toast="已打开任务:北翼回风巷道排查">
  1409. <div class="work-card-head"><span class="work-tag medium">中优先级</span><span>08:32</span></div>
  1410. <strong>北翼回风巷道排查</strong>
  1411. <p>排查巷道变形、堆放物与局部阻力异常点。</p>
  1412. <div class="progress-line"><i style="width: 35%"></i></div>
  1413. <div class="work-meta"><span class="avatar mini">李</span><span>李浩</span><span>35%</span></div>
  1414. </button>
  1415. </div>
  1416. <div class="kanban-column">
  1417. <div class="kanban-head"><span><i class="column-dot review"></i>待复核 <b>2</b></span><button type="button" aria-label="添加待复核任务"><span data-icon="plus"></span></button></div>
  1418. <button class="work-card priority-medium" type="button" data-toast="已打开任务:主通风机运行曲线复核">
  1419. <div class="work-card-head"><span class="work-tag medium">中优先级</span><span>昨日</span></div>
  1420. <strong>主通风机运行曲线复核</strong>
  1421. <p>已完成能效分析,等待通防科负责人确认。</p>
  1422. <div class="work-meta"><span class="avatar mini">孙</span><span>孙敏</span><span>待复核</span></div>
  1423. </button>
  1424. <button class="work-card priority-low" type="button" data-toast="已打开任务:粉尘监测点校准">
  1425. <div class="work-card-head"><span class="work-tag low">常规</span><span>昨日</span></div>
  1426. <strong>粉尘监测点校准</strong>
  1427. <p>已完成 4 个监测点校准,等待数据复验。</p>
  1428. <div class="work-meta"><span class="avatar mini">高</span><span>高杰</span><span>待复核</span></div>
  1429. </button>
  1430. </div>
  1431. <div class="kanban-column">
  1432. <div class="kanban-head"><span><i class="column-dot closed"></i>已完成 <b>12</b></span><button type="button" aria-label="添加已完成任务"><span data-icon="plus"></span></button></div>
  1433. <button class="work-card priority-low" type="button" data-toast="已打开任务:风门传感器更换">
  1434. <div class="work-card-head"><span class="work-tag closed">已销号</span><span>今日</span></div>
  1435. <strong>风门传感器更换</strong>
  1436. <p>更换后数据恢复,复核记录已归档。</p>
  1437. <div class="work-meta"><span class="avatar mini">赵</span><span>赵磊</span><span class="success-text">闭环</span></div>
  1438. </button>
  1439. <button class="work-card priority-low" type="button" data-toast="已打开任务:回风巷测风站维护">
  1440. <div class="work-card-head"><span class="work-tag closed">已销号</span><span>今日</span></div>
  1441. <strong>回风巷测风站维护</strong>
  1442. <p>清理测量断面并完成数据复核。</p>
  1443. <div class="work-meta"><span class="avatar mini">周</span><span>周洋</span><span class="success-text">闭环</span></div>
  1444. </button>
  1445. <button class="work-card priority-low" type="button" data-toast="已打开任务:月度资料完整性检查">
  1446. <div class="work-card-head"><span class="work-tag closed">已销号</span><span>昨日</span></div>
  1447. <strong>月度资料完整性检查</strong>
  1448. <p>补充 6 份资料,关键字段抽取完成。</p>
  1449. <div class="work-meta"><span class="avatar mini">陈</span><span>陈晨</span><span class="success-text">闭环</span></div>
  1450. </button>
  1451. </div>
  1452. </div>
  1453. </section>
  1454. <section class="view" id="view-settings" data-title="系统配置" data-subtitle="管理数据源、模型服务、指标规则、用户权限与平台运行参数">
  1455. <div class="settings-layout">
  1456. <div class="settings-nav">
  1457. <button class="active" type="button"><span data-icon="plug-zap"></span>数据源配置</button>
  1458. <button type="button"><span data-icon="cpu"></span>模型服务</button>
  1459. <button type="button"><span data-icon="sliders-horizontal"></span>指标与规则</button>
  1460. <button type="button"><span data-icon="users"></span>用户与权限</button>
  1461. <button type="button"><span data-icon="shield-check"></span>安全审计</button>
  1462. </div>
  1463. <div class="settings-content">
  1464. <article class="panel">
  1465. <div class="panel-head">
  1466. <div><span class="eyebrow">数据源配置</span><h2>已接入系统</h2></div>
  1467. <button class="primary-button" type="button" data-toast="新增数据源配置已打开"><span data-icon="plus"></span>新增数据源</button>
  1468. </div>
  1469. <div class="integration-list">
  1470. <div class="integration-row">
  1471. <span class="integration-icon teal" data-icon="database"></span>
  1472. <div><strong>KJ 安全监控系统</strong><p>OPC UA · 10.20.16.28:4840</p></div>
  1473. <span class="connection-status online"><i></i>已连接</span>
  1474. <button class="icon-button small" type="button" aria-label="配置 KJ 安全监控系统"><span data-icon="settings"></span></button>
  1475. </div>
  1476. <div class="integration-row">
  1477. <span class="integration-icon blue" data-icon="video"></span>
  1478. <div><strong>工业视频平台</strong><p>GB/T 28181 · 218 路视频流</p></div>
  1479. <span class="connection-status online"><i></i>已连接</span>
  1480. <button class="icon-button small" type="button" aria-label="配置工业视频平台"><span data-icon="settings"></span></button>
  1481. </div>
  1482. <div class="integration-row">
  1483. <span class="integration-icon amber" data-icon="settings-2"></span>
  1484. <div><strong>通防设施物联网平台</strong><p>MQTT · 486 台设备</p></div>
  1485. <span class="connection-status online"><i></i>已连接</span>
  1486. <button class="icon-button small" type="button" aria-label="配置通防设施物联网平台"><span data-icon="settings"></span></button>
  1487. </div>
  1488. <div class="integration-row">
  1489. <span class="integration-icon purple" data-icon="file-text"></span>
  1490. <div><strong>业务资料管理系统</strong><p>REST API · 每 15 分钟同步</p></div>
  1491. <span class="connection-status warning"><i></i>同步中</span>
  1492. <button class="icon-button small" type="button" aria-label="配置业务资料管理系统"><span data-icon="settings"></span></button>
  1493. </div>
  1494. </div>
  1495. </article>
  1496. <div class="settings-grid">
  1497. <article class="panel setting-card">
  1498. <div class="setting-icon teal" data-icon="radio-tower"></div>
  1499. <h3>数据采集频率</h3>
  1500. <p>设置不同数据源的实时采集和同步周期。</p>
  1501. <div class="setting-value"><strong>2 秒</strong><span>实时监测</span></div>
  1502. <button class="secondary-button" type="button">调整参数</button>
  1503. </article>
  1504. <article class="panel setting-card">
  1505. <div class="setting-icon amber" data-icon="cpu"></div>
  1506. <h3>诊断模型版本</h3>
  1507. <p>管理模型发布、回滚和灰度运行策略。</p>
  1508. <div class="setting-value"><strong>v2.6.1</strong><span>已发布</span></div>
  1509. <button class="secondary-button" type="button">模型管理</button>
  1510. </article>
  1511. <article class="panel setting-card">
  1512. <div class="setting-icon purple" data-icon="sliders-horizontal"></div>
  1513. <h3>评价指标权重</h3>
  1514. <p>配置安全性、可靠性、经济性等维度权重。</p>
  1515. <div class="setting-value"><strong>动态计算</strong><span>AHP + 熵权法</span></div>
  1516. <button class="secondary-button" type="button">配置权重</button>
  1517. </article>
  1518. </div>
  1519. </div>
  1520. </div>
  1521. </section>
  1522. </div>
  1523. </main>
  1524. </div>
  1525. <div class="upload-modal" id="documentProcessingRecordsModal" hidden>
  1526. <div class="upload-modal-scrim" data-records-close></div>
  1527. <section class="upload-dialog document-records-dialog" role="dialog" aria-modal="true" aria-labelledby="documentProcessingRecordsTitle">
  1528. <div class="upload-dialog-head">
  1529. <div>
  1530. <span class="eyebrow">Processing History</span>
  1531. <h2 id="documentProcessingRecordsTitle">业务资料处理记录</h2>
  1532. </div>
  1533. <button class="icon-button small" type="button" data-records-close aria-label="关闭处理记录">
  1534. <span data-icon="x"></span>
  1535. </button>
  1536. </div>
  1537. <div class="document-preview-toolbar">
  1538. <span class="subtle-badge" id="documentProcessingRecordsCount">正在加载</span>
  1539. </div>
  1540. <div class="extraction-list processing-records-list" id="documentProcessingRecordsList"></div>
  1541. </section>
  1542. </div>
  1543. <div class="upload-modal" id="documentReprocessModal" hidden>
  1544. <div class="upload-modal-scrim" data-reprocess-close></div>
  1545. <section class="upload-dialog" role="dialog" aria-modal="true" aria-labelledby="documentReprocessTitle">
  1546. <form id="documentReprocessForm">
  1547. <div class="upload-dialog-head">
  1548. <div>
  1549. <span class="eyebrow">Document Processing</span>
  1550. <h2 id="documentReprocessTitle">重新解析资料</h2>
  1551. </div>
  1552. <button class="icon-button small" type="button" data-reprocess-close aria-label="关闭重新解析窗口">
  1553. <span data-icon="x"></span>
  1554. </button>
  1555. </div>
  1556. <input name="document_id" type="hidden" />
  1557. <div class="document-reprocess-error" id="documentReprocessError" hidden>
  1558. <span data-icon="triangle-alert"></span>
  1559. <div><strong>上次处理失败</strong><p id="documentReprocessErrorText"></p></div>
  1560. </div>
  1561. <div class="upload-form-grid">
  1562. <label class="upload-field upload-field-wide">
  1563. <span>业务资料类型 / 抽取模板</span>
  1564. <select name="template_id" id="reprocessTemplateSelect">
  1565. <option value="">按文件名重新识别</option>
  1566. </select>
  1567. </label>
  1568. </div>
  1569. <fieldset class="parse-mode-fieldset">
  1570. <legend>解析模式</legend>
  1571. <div class="parse-mode-options">
  1572. <label>
  1573. <input name="parse_mode" type="radio" value="lightweight" checked />
  1574. <span>
  1575. <strong>轻量解析</strong>
  1576. <small>速度较快,适合 10 MB / 20 页以内文档</small>
  1577. </span>
  1578. </label>
  1579. <label>
  1580. <input name="parse_mode" type="radio" value="precision" />
  1581. <span>
  1582. <strong>精准解析</strong>
  1583. <small>VLM 高精度解析,适合最大 200 MB / 200 页</small>
  1584. </span>
  1585. </label>
  1586. </div>
  1587. </fieldset>
  1588. <div class="upload-dialog-actions">
  1589. <button class="secondary-button" type="button" data-reprocess-close>取消</button>
  1590. <button class="primary-button" type="submit" id="documentReprocessSubmit">
  1591. <span data-icon="refresh-cw"></span>开始重新解析
  1592. </button>
  1593. </div>
  1594. </form>
  1595. </section>
  1596. </div>
  1597. <div class="upload-modal document-preview-modal" id="documentPreviewModal" hidden>
  1598. <div class="upload-modal-scrim" data-preview-close></div>
  1599. <section class="upload-dialog document-preview-dialog" role="dialog" aria-modal="true" aria-labelledby="documentPreviewTitle">
  1600. <div class="upload-dialog-head">
  1601. <div>
  1602. <span class="eyebrow">Document Preview</span>
  1603. <h2 id="documentPreviewTitle">原文预览</h2>
  1604. </div>
  1605. <button class="icon-button small" type="button" data-preview-close aria-label="关闭原文预览">
  1606. <span data-icon="x"></span>
  1607. </button>
  1608. </div>
  1609. <div class="document-preview-toolbar">
  1610. <span class="subtle-badge" id="documentPreviewType">正在加载</span>
  1611. <button class="secondary-button" type="button" id="documentPreviewDownload">
  1612. <span data-icon="download"></span>下载原文件
  1613. </button>
  1614. </div>
  1615. <div class="document-preview-body" id="documentPreviewBody"></div>
  1616. </section>
  1617. </div>
  1618. <div class="upload-modal" id="businessUploadModal" hidden>
  1619. <div class="upload-modal-scrim" data-upload-close></div>
  1620. <section class="upload-dialog" role="dialog" aria-modal="true" aria-labelledby="businessUploadTitle">
  1621. <form id="businessUploadForm">
  1622. <div class="upload-dialog-head">
  1623. <div>
  1624. <span class="eyebrow">Document Intake</span>
  1625. <h2 id="businessUploadTitle">上传业务资料</h2>
  1626. </div>
  1627. <button class="icon-button small" type="button" data-upload-close aria-label="关闭上传窗口">
  1628. <span data-icon="x"></span>
  1629. </button>
  1630. </div>
  1631. <div class="upload-form-grid">
  1632. <label class="upload-field">
  1633. <span>资料分类</span>
  1634. <select name="category" required>
  1635. <option value="通风专业">通风专业</option>
  1636. <option value="火灾防治">火灾防治</option>
  1637. <option value="监测监控">监测监控</option>
  1638. <option value="粉尘防治">粉尘防治</option>
  1639. <option value="瓦斯防治">瓦斯防治</option>
  1640. <option value="制度管理">制度管理</option>
  1641. </select>
  1642. </label>
  1643. <label class="upload-field">
  1644. <span>资料编号</span>
  1645. <input name="code" type="text" maxlength="64" placeholder="选填" />
  1646. </label>
  1647. <label class="upload-field upload-field-wide">
  1648. <span>业务资料类型 / 抽取模板(留空则按文件名自动识别)</span>
  1649. <select name="template_id" id="businessTemplateSelect">
  1650. <option value="">自动识别(根据文件名)</option>
  1651. </select>
  1652. <small class="upload-field-error" id="businessTemplateError" hidden>当前文件名未匹配到抽取模板,请手动选择业务资料类型。</small>
  1653. </label>
  1654. <label class="upload-field">
  1655. <span>资料责任人</span>
  1656. <input name="owner_name" type="text" maxlength="128" placeholder="选填" />
  1657. </label>
  1658. <label class="upload-field">
  1659. <span>所属部门</span>
  1660. <input name="department" type="text" maxlength="128" placeholder="选填" />
  1661. </label>
  1662. </div>
  1663. <fieldset class="parse-mode-fieldset">
  1664. <legend>解析模式</legend>
  1665. <div class="parse-mode-options">
  1666. <label>
  1667. <input name="parse_mode" type="radio" value="lightweight" checked />
  1668. <span>
  1669. <strong>轻量解析</strong>
  1670. <small>速度较快,适合 10 MB / 20 页以内文档</small>
  1671. </span>
  1672. </label>
  1673. <label>
  1674. <input name="parse_mode" type="radio" value="precision" />
  1675. <span>
  1676. <strong>精准解析</strong>
  1677. <small>VLM 高精度解析,适合最大 200 MB / 200 页</small>
  1678. </span>
  1679. </label>
  1680. </div>
  1681. </fieldset>
  1682. <label class="upload-file-field">
  1683. <span data-icon="upload"></span>
  1684. <strong id="businessFileTitle">选择 Word、PDF 或 Excel 文件</strong>
  1685. <small id="businessFileDetail">支持 .doc .docx .pdf .xls .xlsx .csv,单个文件不超过 50 MB</small>
  1686. <input name="file" type="file" accept=".pdf,.doc,.docx,.xls,.xlsx,.csv" required />
  1687. </label>
  1688. <div class="upload-progress" id="businessUploadProgress" hidden>
  1689. <div>
  1690. <strong id="businessUploadStage">正在上传</strong>
  1691. <span id="businessUploadPercent">0%</span>
  1692. </div>
  1693. <div class="upload-progress-track"><i id="businessUploadProgressBar"></i></div>
  1694. </div>
  1695. <div class="upload-dialog-actions">
  1696. <button class="secondary-button" type="button" data-upload-close>取消</button>
  1697. <button class="primary-button" type="submit" id="businessUploadSubmit">
  1698. <span data-icon="upload"></span>上传并开始解析
  1699. </button>
  1700. </div>
  1701. </form>
  1702. </section>
  1703. </div>
  1704. <div class="upload-modal" id="businessEditModal" hidden>
  1705. <div class="upload-modal-scrim" data-edit-close></div>
  1706. <section class="upload-dialog" role="dialog" aria-modal="true" aria-labelledby="businessEditTitle">
  1707. <form id="businessEditForm">
  1708. <div class="upload-dialog-head">
  1709. <div>
  1710. <span class="eyebrow">Document Metadata</span>
  1711. <h2 id="businessEditTitle">编辑资料信息</h2>
  1712. </div>
  1713. <button class="icon-button small" type="button" data-edit-close aria-label="关闭编辑窗口">
  1714. <span data-icon="x"></span>
  1715. </button>
  1716. </div>
  1717. <input name="document_id" type="hidden" />
  1718. <div class="upload-form-grid">
  1719. <label class="upload-field upload-field-wide">
  1720. <span>文档名称</span>
  1721. <input name="title" type="text" required maxlength="255" />
  1722. </label>
  1723. <label class="upload-field">
  1724. <span>文档编号</span>
  1725. <input name="code" type="text" maxlength="64" />
  1726. </label>
  1727. <label class="upload-field">
  1728. <span>资料分组</span>
  1729. <select name="category" required>
  1730. <option value="通风专业">通风专业</option>
  1731. <option value="火灾防治">火灾防治</option>
  1732. <option value="监测监控">监测监控</option>
  1733. <option value="粉尘防治">粉尘防治</option>
  1734. <option value="瓦斯防治">瓦斯防治</option>
  1735. <option value="制度管理">制度管理</option>
  1736. </select>
  1737. </label>
  1738. </div>
  1739. <div class="upload-dialog-actions">
  1740. <button class="secondary-button" type="button" data-edit-close>取消</button>
  1741. <button class="primary-button" type="submit" id="businessEditSubmit">
  1742. <span data-icon="check-circle-2"></span>保存修改
  1743. </button>
  1744. </div>
  1745. </form>
  1746. </section>
  1747. </div>
  1748. <div class="toast-container" id="toastContainer" aria-live="polite"></div>
  1749. </body>
  1750. </html>