From 6cd6a403fc6e447d38b9d58ef940abea76c4fda4 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期一, 09 二月 2026 10:10:01 +0800
Subject: [PATCH] 1
---
open-rcs/components/sidebar/sidebar-interface-word.html | 223 ++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 187 insertions(+), 36 deletions(-)
diff --git a/open-rcs/components/sidebar/sidebar-interface-word.html b/open-rcs/components/sidebar/sidebar-interface-word.html
index f989e47..c3f1d7f 100644
--- a/open-rcs/components/sidebar/sidebar-interface-word.html
+++ b/open-rcs/components/sidebar/sidebar-interface-word.html
@@ -46,16 +46,51 @@
/* 涓�绾ц彍鍗曢」 */
.sidebar-menu > li {
+ padding: 0;
+ margin-bottom: 5px;
+ position: relative;
+ border-radius: 8px;
+ overflow: hidden;
+ }
+
+ /* 鑿滃崟澶撮儴 */
+ .menu-header {
padding: 12px 15px;
- cursor: pointer;
color: #555;
font-size: 14px;
- border-radius: 8px;
- margin-bottom: 5px;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
font-weight: 600;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ /* 鑿滃崟鏂囧瓧 */
+ .menu-text {
+ flex: 1;
+ user-select: none;
+ }
+
+ /* 鑿滃崟澶撮儴鍐呭瀹瑰櫒 */
+ .menu-header > * {
+ user-select: none;
+ }
+
+ .menu-header:hover {
+ background: linear-gradient(135deg, #e8f4ff, #d4e9ff);
+ box-shadow: 0 2px 8px rgba(0, 102, 204, 0.1);
+ }
+
+ .sidebar-menu > li:hover::before {
+ transform: scaleY(1);
+ }
+
+ .sidebar-menu > li.active .menu-header {
+ background: linear-gradient(135deg, #0066cc, #0052a3);
+ color: #fff;
+ box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3);
}
.sidebar-menu > li::before {
@@ -132,11 +167,18 @@
/* 灞曞紑/鎶樺彔鍥炬爣 */
.menu-toggle {
- float: right;
+ cursor: pointer;
font-size: 12px;
transition: transform 0.3s ease;
+ padding: 4px 8px;
+ border-radius: 4px;
+ user-select: none;
}
-
+
+ .menu-toggle:hover {
+ background: rgba(0, 102, 204, 0.1);
+ }
+
.menu-toggle.expanded {
transform: rotate(90deg);
}
@@ -163,51 +205,58 @@
</head>
<body>
<h3>RCS鎺ュ彛鏂囨。</h3>
-<ul class="sidebar-menu">
+<ul class="sidebar-menu" id="sidebar-menu-container">
<!-- 姒傝绫� -->
- <li onclick="toggleSubmenu(this)">
- 姒傝
- <span class="menu-toggle expanded">鈻�</span>
+ <li>
+ <div class="menu-header">
+ <span class="menu-text">姒傝</span>
+ <span class="menu-toggle expanded" onclick="toggleMenu(this)">鈻�</span>
+ </div>
<ul class="submenu expanded">
- <li><a href="javascript:void(0);" onclick="scrollToSection('api-overview'); event.stopPropagation(); return false;">鎺ュ彛姒傝</a></li>
- <li><a href="javascript:void(0);" onclick="scrollToSection('error-codes'); event.stopPropagation(); return false;">閿欒鐮佽鏄�</a></li>
+ <li><a href="#api-overview" class="submenu-link" data-section="api-overview" onclick="navigateToSection(this); return false;">鎺ュ彛姒傝</a></li>
+ <li><a href="#error-codes" class="submenu-link" data-section="error-codes" onclick="navigateToSection(this); return false;">閿欒鐮佽鏄�</a></li>
</ul>
</li>
<!-- 浠诲姟绠$悊绫� -->
- <li onclick="toggleSubmenu(this)">
- 浠诲姟绠$悊
- <span class="menu-toggle">鈻�</span>
- <ul class="submenu expanded">
- <li><a href="javascript:void(0);" onclick="scrollToSection('api-task-create'); event.stopPropagation(); return false;">鐢熸垚浠诲姟鍗�*</a></li>
- <li><a href="javascript:void(0);" onclick="scrollToSection('api-task-cancel'); event.stopPropagation(); return false;">鍙栨秷浠诲姟*</a></li>
- <li><a href="javascript:void(0);" onclick="scrollToSection('api-task-notice'); event.stopPropagation(); return false;">浠诲姟鎵ц閫氱煡*</a></li>
- <li><a href="javascript:void(0);" onclick="scrollToSection('api-task-priority'); event.stopPropagation(); return false;">鐢宠鍏ュ簱浠诲姟*</a></li>
+ <li>
+ <div class="menu-header">
+ <span class="menu-text">浠诲姟绠$悊</span>
+ <span class="menu-toggle" onclick="toggleMenu(this)">鈻�</span>
+ </div>
+ <ul class="submenu expanded" id="menu-task-management">
+ <!-- 鍔ㄦ�佺敓鎴� -->
</ul>
</li>
-
- <!-- 璁惧绠$悊绫� -->
- <!-- <li onclick="toggleSubmenu(this)">
- 璁惧绠$悊
- <span class="menu-toggle">鈻�</span>
- <ul class="submenu expanded">
- <li><a href="javascript:void(0);" onclick="scrollToSection('api-loc-status'); event.stopPropagation(); return false;">搴撲綅鐘舵�佷慨鏀�</a></li>
- </ul>
- </li> -->
</ul>
<script>
+ // 娣诲姞闃叉姈鍙橀噺
+ let lastToggleTime = 0;
+ const toggleDebounceTime = 200; // 200姣闃叉姈
+
// 鍒囨崲浜岀骇鑿滃崟灞曞紑/鎶樺彔
- function toggleSubmenu(element) {
- const submenu = element.querySelector('.submenu');
- const menuToggle = element.querySelector('.menu-toggle');
-
- if (submenu) {
- submenu.classList.toggle('expanded');
+ function toggleMenu(element) {
+ // 闃叉蹇�熻繛缁偣鍑�
+ const currentTime = new Date().getTime();
+ if (currentTime - lastToggleTime < toggleDebounceTime) {
+ return;
}
+ lastToggleTime = currentTime;
- if (menuToggle) {
- menuToggle.classList.toggle('expanded');
+ // 鍙鐞嗙洿鎺ョ偣鍑昏彍鍗曞浘鏍囩殑鎯呭喌
+ const menuItem = element.closest('li');
+ if (menuItem) {
+ const submenu = menuItem.querySelector('.submenu');
+ const menuToggle = menuItem.querySelector('.menu-toggle');
+
+ if (submenu) {
+ submenu.classList.toggle('expanded');
+ }
+
+ if (menuToggle) {
+ menuToggle.classList.toggle('expanded');
+ }
}
}
@@ -218,6 +267,108 @@
sectionId: sectionId
}, '*');
}
+
+ // 瀵艰埅鍒版寚瀹氱珷鑺�
+ function navigateToSection(element) {
+ const sectionId = element.getAttribute('data-section');
+ if (sectionId) {
+ scrollToSection(sectionId);
+ }
+ }
+
+ // 鍔犺浇API閰嶇疆鏂囦欢骞剁敓鎴愯彍鍗�
+ function loadApiMenu() {
+ try {
+ // 鐩存帴瀹氫箟API閰嶇疆鏁版嵁锛岄伩鍏岰ORS閿欒
+ const apiConfigs = [
+ {
+ "apiId": "api-task-create",
+ "name": "鐢熸垚浠诲姟鍗�",
+ "description": "鍒涘缓鎼繍浠诲姟",
+ "isCommon": true,
+ "method": "POST",
+ "url": "/api/open/bus/submit",
+ "menu": {
+ "category": "浠诲姟绠$悊",
+ "order": 1
+ }
+ },
+ {
+ "apiId": "api-task-cancel",
+ "name": "鍙栨秷浠诲姟",
+ "description": "鍙栨秷鎼繍浠诲姟",
+ "isCommon": false,
+ "method": "POST",
+ "url": "/api/open/bus/cancel",
+ "menu": {
+ "category": "浠诲姟绠$悊",
+ "order": 2
+ }
+ },
+ {
+ "apiId": "api-task-allocate",
+ "name": "鐢宠鍏ュ簱鎺ュ彛",
+ "description": "鐢宠浠诲姟鍏ュ簱",
+ "isCommon": true,
+ "method": "POST",
+ "url": "/api/open/task/allocate",
+ "menu": {
+ "category": "浠诲姟绠$悊",
+ "order": 3
+ }
+ },
+ {
+ "apiId": "api-task-notice",
+ "name": "浠诲姟鐘舵�侀�氱煡",
+ "description": "閫氱煡浠诲姟鐘舵�佸彉鏇�",
+ "isCommon": false,
+ "method": "POST",
+ "url": "/api/open/bus/notice",
+ "menu": {
+ "category": "浠诲姟绠$悊",
+ "order": 4
+ }
+ },
+ {
+ "apiId": "api-task-priority",
+ "name": "浠诲姟浼樺厛绾ц皟鏁�",
+ "description": "璋冩暣浠诲姟浼樺厛绾�",
+ "isCommon": false,
+ "method": "POST",
+ "url": "/api/open/bus/priority",
+ "menu": {
+ "category": "浠诲姟绠$悊",
+ "order": 5
+ }
+ }
+ ];
+
+ // 鐢熸垚浠诲姟绠$悊鑿滃崟
+ const taskManagementMenu = document.getElementById('menu-task-management');
+ if (taskManagementMenu) {
+ taskManagementMenu.innerHTML = '';
+ apiConfigs.forEach(config => {
+ const li = document.createElement('li');
+ const a = document.createElement('a');
+ a.href = '#' + config.apiId;
+ a.className = 'submenu-link';
+ a.setAttribute('data-section', config.apiId);
+ a.setAttribute('onclick', 'navigateToSection(this); return false;');
+ a.textContent = config.name + (config.isCommon ? '*' : '');
+ li.appendChild(a);
+ taskManagementMenu.appendChild(li);
+ });
+ }
+
+ } catch (error) {
+ console.error('Failed to load API configs:', error);
+ }
+ }
+
+ // 椤甸潰鍔犺浇瀹屾垚鍚庡姞杞借彍鍗�
+ window.addEventListener('DOMContentLoaded', function() {
+ loadApiMenu();
+ });
</script>
</body>
</html>
--
Gitblit v1.9.1