From f5eb93a15ff74eeb8b6b307e3a38b95319c084e1 Mon Sep 17 00:00:00 2001
From: QYF-GitLab1 <1940665526@qq.com>
Date: 星期一, 03 三月 2025 10:32:46 +0800
Subject: [PATCH] 更新结构

---
 src/components/TreeMenu.vue |  161 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 93 insertions(+), 68 deletions(-)

diff --git a/src/components/TreeMenu.vue b/src/components/TreeMenu.vue
index c5e57bc..ef177b3 100644
--- a/src/components/TreeMenu.vue
+++ b/src/components/TreeMenu.vue
@@ -1,6 +1,13 @@
 <template>
   <div class="tree-menu">
-    <SearchBar @search="handleSearch" />
+    <div class="topMenu">
+      <span class="topMenu-title">妯″瀷搴�</span>
+      <div class="btnGroup">
+        <el-icon class="icon1"><FolderAdd /></el-icon>
+        <el-icon class="icon2"><Edit /></el-icon>
+        <el-icon class="icon3"><Delete /></el-icon>
+      </div>
+    </div>
     <el-tree
       ref="treeRef"
       :data="filteredData"
@@ -20,108 +27,126 @@
 </template>
 
 <script setup lang="ts">
-import { ref, watch } from 'vue'
-import { useRouter } from 'vue-router'
-import SearchBar from './SearchBar.vue'
-import { Document, FolderOpened } from '@element-plus/icons-vue'
+import { ref, watch,defineProps } from "vue";
+import { useRouter } from "vue-router";
+import { Document, FolderOpened } from "@element-plus/icons-vue";
 
-const router = useRouter()
-const treeRef = ref()
+const router = useRouter();
+const treeRef = ref();
+const props = defineProps<{
+  menuItem: string;
+}>();
 
 interface TreeNode {
-  label: string
-  path?: string
-  icon?: string
-  children?: TreeNode[]
+  label: string;
+  path?: string;
+  icon?: string;
+  children?: TreeNode[];
 }
 
 const treeData = ref<TreeNode[]>([
   {
-    label: '妯″瀷绠$悊',
-    icon: 'FolderOpened',
-    children: [
-      {
-        label: '鏈烘瀯妯″瀷',
-        path: '/mechanism',
-        icon: 'Document'
-      },
-      {
-        label: '杩愬姩瀛︽ā鍨�',
-        path: '/kinematic',
-        icon: 'Document'
-      }
-    ]
+    label: "妯″瀷绠$悊",
+    icon: "Document",
+    path: "/model",
   },
   {
-    label: '鍙鍖栦豢鐪�',
-    icon: 'FolderOpened',
+    label: "鍙鍖栦豢鐪�",
+    icon: "FolderOpened",
     children: [
       {
-        label: '浠跨湡閰嶇疆',
-        path: '/simulation-config',
-        icon: 'Document'
+        label: "娴嬭瘯浠跨湡",
+        path: "/simulation-test",
+        icon: "FolderOpened",
+        children: [
+          {
+            label: "浠跨湡璇︽儏",
+            path: "/simulation-config",
+            icon: "Document",
+          },
+          {
+            label: "娴嬭瘯鎶ュ憡",
+            path: "/simulation-result",
+            icon: "Document",
+          },
+        ],
       },
       {
-        label: '浠跨湡缁撴灉',
-        path: '/simulation-result',
-        icon: 'Document'
-      }
-    ]
+        label: "瀹炴椂浠跨湡",
+        path: "/simulation-test",
+        icon: "Document",
+      },
+    ],
   },
-  {
-    label: '绯荤粺绠$悊',
-    icon: 'FolderOpened',
-    children: [
-      {
-        label: '鐢ㄦ埛绠$悊',
-        path: '/system/user',
-        icon: 'Document'
-      },
-      {
-        label: '鏉冮檺璁剧疆',
-        path: '/system/permission',
-        icon: 'Document'
-      }
-    ]
-  }
-])
+]);
 
 const defaultProps = {
-  children: 'children',
-  label: 'label'
-}
+  children: "children",
+  label: "label",
+};
 
-const filteredData = ref(treeData.value)
+const filteredData = ref(treeData.value);
 
 const filterNode = (value: string, data: TreeNode) => {
-  if (!value) return true
-  return data.label.toLowerCase().includes(value.toLowerCase())
-}
-
-const handleSearch = (searchText: string) => {
-  treeRef.value?.filter(searchText)
-}
+  if (!value) return true;
+  return data.label.toLowerCase().includes(value.toLowerCase());
+};
 
 const handleNodeClick = (data: TreeNode) => {
   if (data.path) {
-    router.push(data.path)
+    router.push(data.path);
   }
-}
+};
+
+
+watch(
+  () => props.menuItem,
+  (value) => {
+    console.log(value,'tree');
+  }
+);
 </script>
 
 <style lang="less" scoped>
 .tree-menu {
   height: 100%;
   background-color: #fff;
-  
+
   :deep(.el-tree) {
     padding: 10px;
   }
-  
+
   .custom-tree-node {
     display: flex;
     align-items: center;
     gap: 8px;
   }
+
+  .topMenu {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 10px;
+    border-bottom: 1px solid #ebeef5;
+    .topMenu-title {
+      font-size: 16px;
+      font-weight: bold;
+    }
+    .btnGroup {
+      display: flex;
+      gap: 12px;
+      cursor: pointer;
+
+      .icon1,
+      .icon2,
+      .icon3 {
+        font-size: 18px;
+        color: #606266;
+        &:hover {
+          color: #409eff;
+        }
+      }
+    }
+  }
 }
-</style> 
\ No newline at end of file
+</style>

--
Gitblit v1.9.1