浏览代码

用户管理,选中树形后无法取消选中问题

王靖文 8 月之前
父节点
当前提交
1aea6aca7c
共有 3 个文件被更改,包括 17512 次插入5 次删除
  1. 17486 0
      package-lock.json
  2. 18 2
      src/views/system/user/DeptTree.vue
  3. 8 3
      src/views/system/user/index.vue

文件差异内容过多而无法显示
+ 17486 - 0
package-lock.json


+ 18 - 2
src/views/system/user/DeptTree.vue

@@ -46,8 +46,24 @@ const filterNode = (name: string, data: Tree) => {
 }
 
 /** 处理部门被点击 */
-const handleNodeClick = async (row: { [key: string]: any }) => {
-  emits('node-click', row)
+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'])
 

+ 8 - 3
src/views/system/user/index.vue

@@ -255,9 +255,14 @@ const resetQuery = () => {
 }
 
 /** 处理部门被点击 */
-const handleDeptNodeClick = async (row) => {
-  queryParams.deptId = row.id
-  await getList()
+const handleDeptNodeClick = async (row: any) => {
+  if (row === undefined) {
+    queryParams.deptId = undefined
+    await getList()
+  } else {
+    queryParams.deptId = row.id
+    await getList()
+  }
 }
 
 /** 添加/修改操作 */