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