config.html 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <!DOCTYPE html>
  2. <html lang="zh-CN" data-bs-theme="light">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>配置-SIMANC TCS</title>
  7. <!-- 在页面加载前应用保存的主题设置,避免闪烁 -->
  8. <script src="../js/themePreSet.js"></script>
  9. <!-- 预渲染导航栏,减少延迟 -->
  10. <script src="../js/headerPreRender.js"></script>
  11. <!-- Tabler Core CSS -->
  12. <link href="../assets/css/app.css" rel="stylesheet" />
  13. </head>
  14. <body>
  15. <div class="page">
  16. <!-- 顶部导航栏容器 -->
  17. <div id="tcs-header-container" class="tcs-header-container"></div>
  18. <!-- 页面内容 -->
  19. <div class="page-wrapper">
  20. <div class="tcs-config-container">
  21. <div class="tcs-config-left">
  22. <div class="container-fluid py-4">
  23. <nav class="docs-menu space-y scrollbar">
  24. <ul role="list" class="docs-menu">
  25. <li class="docs-menu-group">
  26. <div class="docs-menu-header">
  27. 服务器
  28. <span class="docs-menu-header-toggle open">
  29. <svg
  30. xmlns="http://www.w3.org/2000/svg"
  31. class="icon"
  32. width="24"
  33. height="24"
  34. viewBox="0 0 24 24"
  35. stroke-width="2"
  36. stroke="currentColor"
  37. fill="none"
  38. stroke-linecap="round"
  39. stroke-linejoin="round"
  40. >
  41. <polyline points="9 6 15 12 9 18"></polyline>
  42. </svg>
  43. </span>
  44. </div>
  45. <div class="docs-menu-submenu">
  46. <a class="docs-menu-item active">服务器配置</a>
  47. </div>
  48. </li>
  49. <li class="docs-menu-group">
  50. <div class="docs-menu-header">
  51. 车辆
  52. <span class="docs-menu-header-toggle open">
  53. <svg
  54. xmlns="http://www.w3.org/2000/svg"
  55. class="icon"
  56. width="24"
  57. height="24"
  58. viewBox="0 0 24 24"
  59. stroke-width="2"
  60. stroke="currentColor"
  61. fill="none"
  62. stroke-linecap="round"
  63. stroke-linejoin="round"
  64. >
  65. <polyline points="9 6 15 12 9 18"></polyline>
  66. </svg>
  67. </span>
  68. </div>
  69. <div class="docs-menu-submenu">
  70. <a class="docs-menu-item">基本配置</a>
  71. <a class="docs-menu-item">ACR配置</a>
  72. <a class="docs-menu-item">ROS配置1</a>
  73. <a class="docs-menu-item">ROS配置2</a>
  74. </div>
  75. </li>
  76. </ul>
  77. </nav>
  78. </div>
  79. </div>
  80. <div class="tcs-config-right">
  81. <!-- 面包屑 -->
  82. <div class="container-fluid py-4">
  83. <nav aria-label="breadcrumb">
  84. <ol class="breadcrumb" id="config-breadcrumb">
  85. <li class="breadcrumb-item"></li>
  86. </ol>
  87. </nav>
  88. </div>
  89. <!-- 配置内容 -->
  90. <div class="container-fluid py-4">
  91. <div class="row justify-content-center">
  92. <form class="tcs-config-form">
  93. <div class="mb-3">
  94. <label class="form-label">区域名称:</label>
  95. <input type="text" class="form-control" value="xxx车间" />
  96. </div>
  97. <div class="mb-3">
  98. <label class="form-label">服务器地址:</label>
  99. <div>
  100. <input
  101. type="text"
  102. class="form-control"
  103. value="192.168.0.240"
  104. />
  105. <button class="btn btn-primary" type="button">
  106. 获取本机地址
  107. </button>
  108. </div>
  109. </div>
  110. <div class="mb-3">
  111. <label class="form-label">配置为:</label>
  112. <div class="form-selectgroup form-selectgroup-pills">
  113. <label class="form-selectgroup-item">
  114. <input
  115. type="checkbox"
  116. name="name"
  117. value="TCS"
  118. class="form-selectgroup-input"
  119. checked=""
  120. />
  121. <span class="form-selectgroup-label">TCS</span>
  122. </label>
  123. <label class="form-selectgroup-item">
  124. <input
  125. type="checkbox"
  126. name="name"
  127. value="VCS"
  128. class="form-selectgroup-input"
  129. />
  130. <span class="form-selectgroup-label">VCS</span>
  131. </label>
  132. </div>
  133. </div>
  134. <div class="mb-3">
  135. <label class="form-label">license:</label>
  136. <div>
  137. <input
  138. type="text"
  139. class="form-control border-0 bg-transparent"
  140. value="2027-12-30 过期"
  141. readonly
  142. />
  143. <button class="btn btn-primary" type="button">
  144. 更新license
  145. </button>
  146. </div>
  147. </div>
  148. </form>
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. <!-- Tabler Core JS -->
  156. <script src="../assets/js/tabler.min.js"></script>
  157. <script src="../assets/js/jquery-3.7.1.min.js"></script>
  158. <!-- 加载共享组件的脚本 -->
  159. <script src="../js/themePoc.js"></script>
  160. <!-- 配置页面的脚本 -->
  161. <script>
  162. document.addEventListener("DOMContentLoaded", function () {
  163. // 添加菜单展开/折叠功能
  164. document.querySelectorAll(".docs-menu-header").forEach((header) => {
  165. header.addEventListener("click", function () {
  166. const toggle = this.querySelector(".docs-menu-header-toggle");
  167. const submenu = this.nextElementSibling;
  168. if (toggle.classList.contains("open")) {
  169. toggle.classList.remove("open");
  170. submenu.style.display = "none";
  171. } else {
  172. toggle.classList.add("open");
  173. submenu.style.display = "block";
  174. }
  175. });
  176. });
  177. // 添加菜单项点击事件
  178. document.querySelectorAll(".docs-menu-item").forEach((item) => {
  179. item.addEventListener("click", function (e) {
  180. // 移除所有菜单项的active类
  181. document.querySelectorAll(".docs-menu-item").forEach((menuItem) => {
  182. menuItem.classList.remove("active");
  183. });
  184. // 为当前点击的菜单项添加active类
  185. this.classList.add("active");
  186. // 更新面包屑
  187. updateBreadcrumb(this);
  188. });
  189. });
  190. // 默认展开带有active项的子菜单
  191. document.querySelectorAll(".docs-menu-item.active").forEach((item) => {
  192. const submenu = item.closest(".docs-menu-submenu");
  193. if (submenu) {
  194. const header = submenu.previousElementSibling;
  195. const toggle = header.querySelector(".docs-menu-header-toggle");
  196. toggle.classList.add("open");
  197. submenu.style.display = "block";
  198. }
  199. // 初始化面包屑
  200. updateBreadcrumb(item);
  201. });
  202. // 更新面包屑的函数
  203. function updateBreadcrumb(activeItem) {
  204. const breadcrumb = document.getElementById("config-breadcrumb");
  205. const parentHeader = activeItem
  206. .closest(".docs-menu-group")
  207. .querySelector(".docs-menu-header");
  208. const parentText = parentHeader.textContent.trim();
  209. const activeText = activeItem.textContent.trim();
  210. breadcrumb.innerHTML = `
  211. <li class="breadcrumb-item">${parentText}</li>
  212. <li class="breadcrumb-item active" aria-current="page">${activeText}</li>
  213. `;
  214. }
  215. });
  216. </script>
  217. </body>
  218. </html>