dashboard.html 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  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. <title>工作台-SMC TCS</title>
  7. <!-- Tabler Core CSS -->
  8. <link
  9. href="../assets/css/app.css"
  10. rel="stylesheet"
  11. />
  12. <style>
  13. .tcs-container-space-x {
  14. padding-left: 0.5rem;
  15. padding-right: 0.5rem;
  16. }
  17. .tcs-user-dropdown {
  18. width: 84px;
  19. min-width: 84px;
  20. }
  21. </style>
  22. <style>
  23. html, body {
  24. height: 100%;
  25. margin: 0;
  26. overflow: hidden;
  27. }
  28. .page {
  29. min-height: 100vh;
  30. overflow: hidden;
  31. }
  32. </style>
  33. <style>
  34. .tcs-nav-dashboard {
  35. display: flex;
  36. justify-content: flex-end;
  37. align-items: center;
  38. min-height: 2.5rem !important;
  39. }
  40. .tcs-hero-section {
  41. background: linear-gradient(
  42. 45deg,
  43. rgb(2, 0, 49) 0px,
  44. rgb(109, 51, 83) 100%
  45. );
  46. color: white;
  47. padding: 3rem 0;
  48. text-align: center;
  49. }
  50. .tcs-hero-title {
  51. font-size: 4rem;
  52. font-weight: bold;
  53. margin-bottom: 1rem;
  54. }
  55. .tcs-hero-subtitle {
  56. font-size: 1.2rem;
  57. }
  58. .tcs-project-card {
  59. transition: transform 0.3s;
  60. width: 280px;
  61. background-color: var(--tblr-bg-surface);
  62. border-radius: 8px;
  63. overflow: hidden;
  64. box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  65. }
  66. /* .tcs-project-card:hover {
  67. transform: translateY(-5px);
  68. } */
  69. .tcs-card-body {
  70. padding: 12px;
  71. display: flex;
  72. flex-direction: column;
  73. align-items: center;
  74. }
  75. .tcs-image-container {
  76. height: 180px;
  77. width: 100%;
  78. margin-bottom: 16px;
  79. background-color: rgba(0, 0, 0, 0.1);
  80. border-radius: 4px;
  81. display: flex;
  82. justify-content: center;
  83. align-items: center;
  84. transition: background-color 0.3s ease;
  85. }
  86. [data-bs-theme="dark"] .tcs-image-container {
  87. background-color: rgba(255, 255, 255, 0.05);
  88. }
  89. .tcs-card-title {
  90. font-size: 20px;
  91. margin-bottom: 16px;
  92. text-align: center;
  93. }
  94. .tcs-card-actions {
  95. display: flex;
  96. width: 100%;
  97. gap: 8px;
  98. justify-content: center;
  99. }
  100. .tcs-card-actions .btn {
  101. flex: 1;
  102. padding: 6px 8px;
  103. font-size: 14px;
  104. }
  105. .tcs-footer {
  106. text-align: center;
  107. padding: 0.4rem 0;
  108. }
  109. </style>
  110. </head>
  111. <body>
  112. <div class="page">
  113. <!-- 顶部导航栏 -->
  114. <header
  115. class="navbar navbar-expand-md tcs-container-space-x tcs-nav-dashboard"
  116. >
  117. <!-- 用户菜单 -->
  118. <div class="nav-item dropdown">
  119. <a
  120. href="#"
  121. class="nav-link d-flex lh-1 text-reset p-0"
  122. data-bs-toggle="dropdown"
  123. aria-label="打开用户菜单"
  124. >
  125. <span class="text-muted fw-semibold ms-2">Admin</span>
  126. </a>
  127. <div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow tcs-user-dropdown">
  128. <a href="#" class="dropdown-item" id="theme-toggle">
  129. <span id="theme-text">深色主题</span>
  130. </a>
  131. <div class="dropdown-divider"></div>
  132. <a href="../index.html" class="dropdown-item">退出登录</a>
  133. </div>
  134. </div>
  135. </header>
  136. <!-- 英雄区域 -->
  137. <section class="tcs-hero-section">
  138. <div class="container">
  139. <div class="tcs-hero-title">SMC TCS</div>
  140. <div class="tcs-hero-subtitle">
  141. 简洁、直观、强悍AGV调度系统。配合SMC 地图编辑,快速定制您的AGV应用。
  142. </div>
  143. </div>
  144. </section>
  145. <!-- 项目卡片区域 -->
  146. <div class="page-body">
  147. <div class="container-xl py-4">
  148. <div class="row row-cards d-flex justify-content-center">
  149. <div class="col-md-6 col-lg-3">
  150. <div class="card tcs-project-card">
  151. <div class="card-body tcs-card-body">
  152. <div class="tcs-image-container">
  153. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="v-2" width="100%" height="100%"><defs id="v-4"><marker id="v-22142555970" orient="auto" overflow="visible" markerUnits="userSpaceOnUse"><path id="v-50" stroke="none" fill="#8f8f8f" d="M 0 0 0 0"></path></marker><marker id="v-2-1582156197" orient="auto" overflow="visible" markerUnits="userSpaceOnUse"><path id="v-52" stroke="none" fill="#8f8f8f" transform="rotate(180)" d="M 0 -4 -8 0 0 4 z"></path></marker></defs><g id="v-3" class="joint-viewport" transform="matrix(0.3,0,0,0.3,0,0)"><g model-id="63d559a2-21c2-4efc-97d9-10956cab8385" id="j_12" class="joint-cell joint-type-st joint-type-st-stcrossx joint-element joint-theme-default" data-type="st.StCrossX" data-tooltip="站点" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(230,240)"><rect joint-selector="body" id="v-44" cursor="hand" fill="transparent" stroke="#FE854F" stroke-width="2" stroke-dasharray="4" height="21" width="30" transform="matrix(1,0,0,1,0,4.5)"></rect><rect joint-selector="top" id="v-45" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" width="30" height="0.6" transform="matrix(1,0,0,1,0,4.5)"></rect><rect joint-selector="bottom" id="v-46" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" width="30" height="0.6" transform="matrix(1,0,0,1,0,25.5)"></rect><text joint-selector="label" id="v-47" font-size="10" xml:space="preserve" fill="#FE854F" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">ST001</tspan></text></g><g model-id="8bbf43a5-45c2-4753-b899-b19b8f962396" id="j_11" class="joint-cell joint-type-st joint-type-st-stcrossx joint-element joint-theme-default" data-type="st.StCrossX" data-tooltip="站点" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(388,240)"><rect joint-selector="body" id="v-40" cursor="hand" fill="transparent" stroke="#FE854F" stroke-width="2" stroke-dasharray="4" height="21" width="30" transform="matrix(1,0,0,1,0,4.5)"></rect><rect joint-selector="top" id="v-41" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" width="30" height="0.6" transform="matrix(1,0,0,1,0,4.5)"></rect><rect joint-selector="bottom" id="v-42" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" width="30" height="0.6" transform="matrix(1,0,0,1,0,25.5)"></rect><text joint-selector="label" id="v-43" font-size="10" xml:space="preserve" fill="#FE854F" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">ST001</tspan></text></g><g model-id="e40086a6-2267-4c94-ab8e-7a6d50c6b62f" id="j_10" class="joint-cell joint-type-st joint-type-st-stcrossx joint-element joint-theme-default" data-type="st.StCrossX" data-tooltip="站点" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(513,240)"><rect joint-selector="body" id="v-36" cursor="hand" fill="transparent" stroke="#FE854F" stroke-width="2" stroke-dasharray="4" height="21" width="30" transform="matrix(1,0,0,1,0,4.5)"></rect><rect joint-selector="top" id="v-37" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" width="30" height="0.6" transform="matrix(1,0,0,1,0,4.5)"></rect><rect joint-selector="bottom" id="v-38" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" width="30" height="0.6" transform="matrix(1,0,0,1,0,25.5)"></rect><text joint-selector="label" id="v-39" font-size="10" xml:space="preserve" fill="#FE854F" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">ST001</tspan></text></g><g model-id="74f2905f-3426-4a12-a513-4957058940a9" id="j_9" class="joint-cell joint-type-st joint-type-st-stcrossx joint-element joint-theme-default" data-type="st.StCrossX" data-tooltip="站点" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(686,240)"><rect joint-selector="body" id="v-32" cursor="hand" fill="transparent" stroke="#FE854F" stroke-width="2" stroke-dasharray="4" height="21" width="30" transform="matrix(1,0,0,1,0,4.5)"></rect><rect joint-selector="top" id="v-33" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" width="30" height="0.6" transform="matrix(1,0,0,1,0,4.5)"></rect><rect joint-selector="bottom" id="v-34" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" width="30" height="0.6" transform="matrix(1,0,0,1,0,25.5)"></rect><text joint-selector="label" id="v-35" font-size="10" xml:space="preserve" fill="#FE854F" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">ST001</tspan></text></g><g model-id="5ee0e18f-e312-49e4-9327-08f21ebc6757" id="j_8" class="joint-cell joint-type-st joint-type-st-stcrossy joint-element joint-theme-default" data-type="st.StCrossY" data-tooltip="站点" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(686,379)"><rect joint-selector="body" id="v-28" cursor="hand" fill="transparent" stroke="#FE854F" stroke-width="2" stroke-dasharray="4" height="30" width="21" transform="matrix(1,0,0,1,4.5,0)"></rect><rect joint-selector="left" id="v-29" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" height="30" width="0.6" transform="matrix(1,0,0,1,4.5,0)"></rect><rect joint-selector="right" id="v-30" fill="0" stroke="#505050" stroke-width="2" stroke-dasharray="0" width="0.6" height="30" transform="matrix(1,0,0,1,25.5,0)"></rect><text joint-selector="label" id="v-31" font-size="10" xml:space="preserve" fill="#FE854F" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">ST001</tspan></text></g><g model-id="0ede96e6-efeb-464e-9ead-275a0491e40e" id="j_7" class="joint-cell joint-type-st joint-type-st-charge joint-element joint-theme-default" data-type="st.Charge" data-tooltip="充电站" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(686,494)"><rect joint-selector="body" id="v-26" cursor="hand" rx="2" ry="2" height="24" width="30" fill="transparent" stroke="#fe854f" stroke-width="2" stroke-dasharray="0" transform="matrix(1,0,0,1,0,3)"></rect><text joint-selector="label" id="v-27" font-size="12" xml:space="preserve" fill="#fe854f" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">充电</tspan></text></g><g model-id="7bc5137f-415b-4209-8349-476cebed24f7" id="j_6" class="joint-cell joint-type-st joint-type-st-standby joint-element joint-theme-default" data-type="st.StandBy" data-tooltip="待命" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(388,494)"><rect joint-selector="body" id="v-24" cursor="hand" rx="2" ry="2" height="24" width="30" fill="transparent" stroke="#fe854f" stroke-width="2" stroke-dasharray="5" transform="matrix(1,0,0,1,0,3)"></rect><text joint-selector="label" id="v-25" font-size="12" xml:space="preserve" fill="#fe854f" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">待命</tspan></text></g><g model-id="694ce8ea-830a-4584-b9f3-b80c11b69fe8" id="j_5" class="joint-cell joint-type-pt joint-type-pt-road joint-element joint-theme-default" data-type="pt.Road" data-tooltip="路点" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(160,240)"><circle joint-selector="body" id="v-21" cursor="default" fill="transparent" stroke="#7c68fc" stroke-width="2" stroke-dasharray="0" r="9" width="30" height="30" transform="matrix(1,0,0,1,15,15)"></circle><circle joint-selector="in" id="v-22" font-size="11" xml:space="preserve" fill="transparent" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" r="18" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">0</tspan></circle><text joint-selector="label" id="v-23" font-size="8" xml:space="preserve" fill="#7c68fc" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">0</tspan></text></g><g model-id="0cbbafe8-b205-4906-854a-71c32060e275" id="j_4" class="joint-cell joint-type-pt joint-type-pt-road joint-element joint-theme-default" data-type="pt.Road" data-tooltip="路点" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(315,240)"><circle joint-selector="body" id="v-18" cursor="default" fill="transparent" stroke="#7c68fc" stroke-width="2" stroke-dasharray="0" r="9" width="30" height="30" transform="matrix(1,0,0,1,15,15)"></circle><circle joint-selector="in" id="v-19" font-size="11" xml:space="preserve" fill="transparent" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" r="18" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">0</tspan></circle><text joint-selector="label" id="v-20" font-size="8" xml:space="preserve" fill="#7c68fc" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">0</tspan></text></g><g model-id="c4554fc4-06e0-4a3b-9bd6-92124c7af117" id="j_3" class="joint-cell joint-type-pt joint-type-pt-road joint-element joint-theme-default" data-type="pt.Road" data-tooltip="路点" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(453,240)"><circle joint-selector="body" id="v-15" cursor="default" fill="transparent" stroke="#7c68fc" stroke-width="2" stroke-dasharray="0" r="9" width="30" height="30" transform="matrix(1,0,0,1,15,15)"></circle><circle joint-selector="in" id="v-16" font-size="11" xml:space="preserve" fill="transparent" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" r="18" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">0</tspan></circle><text joint-selector="label" id="v-17" font-size="8" xml:space="preserve" fill="#7c68fc" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">0</tspan></text></g><g model-id="1b5d2d3d-738e-4495-90f9-5679b69a9fa0" id="j_2" class="joint-cell joint-type-pt joint-type-pt-road joint-element joint-theme-default" data-type="pt.Road" data-tooltip="路点" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" transform="translate(600,240)"><circle joint-selector="body" id="v-12" cursor="default" fill="transparent" stroke="#7c68fc" stroke-width="2" stroke-dasharray="0" r="9" width="30" height="30" transform="matrix(1,0,0,1,15,15)"></circle><circle joint-selector="in" id="v-13" font-size="11" xml:space="preserve" fill="transparent" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" r="18" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">0</tspan></circle><text joint-selector="label" id="v-14" font-size="8" xml:space="preserve" fill="#7c68fc" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,15)"><tspan dy="0.3em" class="v-line">0</tspan></text></g><g model-id="1883c9e3-65d1-45e1-966a-37b4c33131d0" id="j_13" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-49" stroke-width="10" stroke-linejoin="round" d="M 193 255.08 L 227.29 255.23"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-48" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 193 255.08 L 227.29 255.23"></path></g><g model-id="63106728-48a5-4097-af0a-eb6fecf25a22" id="j_14" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-55" stroke-width="10" stroke-linejoin="round" d="M 260.42 255.24 L 312 255.06"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-54" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 260.42 255.24 L 312 255.06"></path></g><g model-id="268d9462-55d2-4d68-8c66-47185434bae5" id="j_15" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-57" stroke-width="10" stroke-linejoin="round" d="M 348 255.08 L 385.29 255.23"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-56" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 348 255.08 L 385.29 255.23"></path></g><g model-id="06620ae1-b9fe-45df-b2ce-ebd200862d57" id="j_16" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-59" stroke-width="10" stroke-linejoin="round" d="M 418.42 255.22 L 450 255.08"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-58" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 418.42 255.22 L 450 255.08"></path></g><g model-id="7d61aa14-564a-4106-9e3e-465c64cbe392" id="j_17" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-61" stroke-width="10" stroke-linejoin="round" d="M 486 255.09 L 510.29 255.22"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-60" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 486 255.09 L 510.29 255.22"></path></g><g model-id="fdd4a4e6-b176-4aaf-89ab-d025e6881121" id="j_18" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-63" stroke-width="10" stroke-linejoin="round" d="M 543.42 255.31 L 597 255.35"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-62" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 543.42 255.31 L 597 255.35"></path></g><g model-id="7ae1b029-9f4e-4a04-837c-5257c4c00f8d" id="j_19" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-65" stroke-width="10" stroke-linejoin="round" d="M 633 255.06 L 683.29 255.24"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-64" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 633 255.06 L 683.29 255.24"></path></g><g model-id="d3e00462-99a3-4be5-bb32-acbe18ff8ca0" id="j_20" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-67" stroke-width="10" stroke-linejoin="round" d="M 699.86 266.1 L 699.86 379"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-66" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 699.86 266.1 L 699.86 379"></path></g><g model-id="8c5e6ce9-010e-454c-af66-c2f2ae5e89b1" id="j_21" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-69" stroke-width="10" stroke-linejoin="round" d="M 700.09 409 L 701.47 497"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-68" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 700.09 409 L 701.47 497"></path></g><g model-id="6167c52c-c5fc-4b52-a6ed-328ebd80164d" id="j_22" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-71" stroke-width="10" stroke-linejoin="round" d="M 685.66 509.06 L 420 510"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-70" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 685.66 509.06 L 420 510"></path></g><g model-id="0" id="j_1" class="joint-cell joint-type-agv joint-type-agv-diff joint-element joint-theme-default" data-type="agv.Diff" data-tooltip-position="left" data-tooltip-position-selector=".joint-stencil" magnet="false" transform="translate(690,310)"><rect joint-selector="front" id="v-6" rx="1" ry="1" fill="gray" stroke="gray" stroke-width="2" stroke-dasharray="0" width="6" height="15" transform="matrix(1,0,0,1,19.5,7.5)"></rect><rect joint-selector="rear" id="v-7" rx="1" ry="1" fill="gray" stroke="gray" stroke-width="2" stroke-dasharray="0" width="6" height="15" transform="matrix(1,0,0,1,4.5,7.5)"></rect><rect joint-selector="body" id="v-8" cursor="hand" rx="2" ry="2" fill="#fec450" stroke="#FE854F" stroke-width="1" stroke-dasharray="0" width="27" height="12" transform="matrix(1,0,0,1,1.5,9)"></rect><rect joint-selector="cargo" id="v-9" rx="1" ry="1" r="35%" fill="transparent" stroke="transparent" stroke-width="2" stroke-dasharray="0" width="12" height="9" transform="matrix(1,0,0,1,9,10.5)"></rect><rect joint-selector="light" id="v-10" rx="1" ry="1" fill="green" stroke="gray" stroke-width="1" stroke-dasharray="0" width="1.5" height="3.5999999999999996" transform="matrix(1,0,0,1,28.5,13.2)"></rect><text joint-selector="label" id="v-11" font-size="8" xml:space="preserve" fill="black" font-family="Roboto Condensed" font-weight="Normal" stroke-width="0" text-anchor="middle" transform="matrix(1,0,0,1,15,30)"><tspan dy="0.3em" class="v-line">AGV1</tspan></text></g><g model-id="381bd3f1-70b7-445f-99c4-1d966277781b" id="j_23" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-73" stroke-width="10" stroke-linejoin="round" d="M 419.66 509.61 L 430 510"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-72" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 419.66 509.61 L 430 510"></path></g><g model-id="4bb9ecaa-f787-4342-98ec-9c445bbcf872" id="j_24" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-75" stroke-width="10" stroke-linejoin="round" d="M 419.66 509.61 L 430 510"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-74" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 419.66 509.61 L 430 510"></path></g><g model-id="fdd04631-507b-49b8-ad17-a8b8b2f221b4" id="j_25" class="joint-cell joint-type-app joint-type-app-link joint-link joint-theme-default" data-type="app.Link"><path fill="none" cursor="pointer" stroke="transparent" joint-selector="wrapper" id="v-77" stroke-width="10" stroke-linejoin="round" d="M 193 258.6 L 200 260"></path><path fill="none" pointer-events="none" joint-selector="line" id="v-76" stroke="#8f8f8f" stroke-dasharray="0" stroke-width="2" stroke-linejoin="round" marker-start="url(#v-22142555970)" marker-end="url(#v-2-1582156197)" d="M 193 258.6 L 200 260"></path></g></g><g id="v-5" class="joint-tools-container" transform="matrix(0.3,0,0,0.3,0,0)"></g></svg>
  154. </div>
  155. <h3 class="tcs-card-title">测试</h3>
  156. <div class="tcs-card-actions">
  157. <a href="monitor.html" class="btn btn-primary">查看</a>
  158. <a href="monitor.html" class="btn btn-outline-secondary">编辑</a>
  159. <a href="monitor.html" class="btn btn-outline-danger">删除</a>
  160. </div>
  161. </div>
  162. </div>
  163. </div>
  164. <!-- 可以添加更多项目卡片 -->
  165. </div>
  166. </div>
  167. </div>
  168. <!-- 页脚 -->
  169. <footer class="footer tcs-footer">
  170. Copyright © 华为机电SIMANC
  171. </footer>
  172. </div>
  173. <!-- Tabler Core JS -->
  174. <script src="../assets/js/tabler.min.js"></script>
  175. <script src="../assets/js/jquery-3.7.1.min.js"></script>
  176. <!-- 主题切换脚本 -->
  177. <script>
  178. document.addEventListener("DOMContentLoaded", function () {
  179. const themeToggle = document.getElementById("theme-toggle");
  180. const htmlElement = document.documentElement;
  181. const themeText = document.getElementById("theme-text");
  182. // 检查本地存储中的主题设置
  183. const savedTheme = localStorage.getItem("theme");
  184. if (savedTheme) {
  185. htmlElement.setAttribute("data-bs-theme", savedTheme);
  186. updateText(savedTheme);
  187. }
  188. // 切换主题
  189. themeToggle.addEventListener("click", function (e) {
  190. e.preventDefault();
  191. const currentTheme = htmlElement.getAttribute("data-bs-theme");
  192. const newTheme = currentTheme === "dark" ? "light" : "dark";
  193. htmlElement.setAttribute("data-bs-theme", newTheme);
  194. localStorage.setItem("theme", newTheme);
  195. updateText(newTheme);
  196. });
  197. // 更新文字
  198. function updateText(theme) {
  199. if (theme === "dark") {
  200. themeText.textContent = "浅色主题";
  201. } else {
  202. themeText.textContent = "深色主题";
  203. }
  204. }
  205. });
  206. </script>
  207. </body>
  208. </html>