From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/views/system/user/DeptTree.vue | 79 +++++++++++++++++++++++++++++++++++++++
1 files changed, 79 insertions(+), 0 deletions(-)
diff --git a/src/views/system/user/DeptTree.vue b/src/views/system/user/DeptTree.vue
new file mode 100644
index 0000000..71ed6cd
--- /dev/null
+++ b/src/views/system/user/DeptTree.vue
@@ -0,0 +1,79 @@
+<template>
+ <div class="head-container">
+ <el-input v-model="deptName" class="mb-20px" clearable placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�">
+ <template #prefix>
+ <Icon icon="ep:search" />
+ </template>
+ </el-input>
+ </div>
+ <div class="head-container">
+ <el-tree
+ ref="treeRef"
+ :data="deptList"
+ :expand-on-click-node="false"
+ :filter-node-method="filterNode"
+ :props="defaultProps"
+ default-expand-all
+ highlight-current
+ node-key="id"
+ @node-click="handleNodeClick"
+ />
+ </div>
+</template>
+
+<script lang="ts" setup>
+import { ElTree } from 'element-plus'
+import * as DeptApi from '@/api/system/dept'
+import { defaultProps, handleTree } from '@/utils/tree'
+
+defineOptions({ name: 'SystemUserDeptTree' })
+
+const deptName = ref('')
+const deptList = ref<Tree[]>([]) // 鏍戝舰缁撴瀯
+const treeRef = ref<InstanceType<typeof ElTree>>()
+
+/** 鑾峰緱閮ㄩ棬鏍� */
+const getTree = async () => {
+ const res = await DeptApi.getSimpleDeptList()
+ deptList.value = []
+ deptList.value.push(...handleTree(res))
+}
+
+/** 鍩轰簬鍚嶅瓧杩囨护 */
+const filterNode = (name: string, data: Tree) => {
+ if (!name) return true
+ return data.name.includes(name)
+}
+
+/** 澶勭悊閮ㄩ棬琚偣鍑� */
+let currentNode: any = {}
+const handleNodeClick = async (row: { [key: string]: any }, treeNode: any) => {
+ // 鍒ゆ柇閫変腑鐘舵��
+ if (currentNode && currentNode.name === row.name) {
+ treeNode.checked = !treeNode.checked
+ } else {
+ treeNode.checked = true
+ }
+ if (treeNode.checked) {
+ // 閫変腑
+ currentNode = row
+ emits('node-click', row)
+ } else {
+ // 鍙栨秷閫変腑
+ treeRef.value!.setCurrentKey(undefined)
+ emits('node-click', undefined)
+ currentNode = null
+ }
+}
+const emits = defineEmits(['node-click'])
+
+/** 鐩戝惉deptName */
+watch(deptName, (val) => {
+ treeRef.value!.filter(val)
+})
+
+/** 鍒濆鍖� */
+onMounted(async () => {
+ await getTree()
+})
+</script>
--
Gitblit v1.8.0