Quellcode durchsuchen

学员添加树状修改

zhangsq vor 7 Monaten
Ursprung
Commit
3eb8aa9e12
1 geänderte Dateien mit 25 neuen und 4 gelöschten Zeilen
  1. 25 4
      src/views/courseAdd/components/studentSelection.vue

+ 25 - 4
src/views/courseAdd/components/studentSelection.vue

@@ -10,7 +10,7 @@
 		<a-tree
 			v-if="treeData.length > 0"
 			:tree-data="filteredTreeData"
-			:field-names="{ key: 'id', title: 'name', children: 'children' }"
+			:field-names="{ key: 'id', title: 'name', children: 'children', disabled: 'disabled' }"
 			:checked-keys="checkedKeys"
 			:expanded-keys="expandedKeys"
 			:auto-expand-parent="autoExpandParent"
@@ -154,7 +154,7 @@
 	// 替换原来的onSelect方法
 	const onCheck = (checkedKeysValue, { checked, node, checkedNodes }) => {
 		// 过滤掉非叶子节点
-		const leafNodes = checkedNodes.filter((node) => node.isLeaf)
+		const leafNodes = checkedNodes.filter((node) => node.isLeaf && node.infoType == 'user')
 		checkedKeys.value = leafNodes.map((node) => node.id)
 		selectedUsers.value = leafNodes.map((node) => ({
 			id: node.id,
@@ -186,12 +186,32 @@
 	}
 	const augmentNode = (node) => {
 		if (node.children) {
-			node.isLeaf = false // 有children的节点标记为非叶子节点
+			node.isLeaf = false
 			node.children.forEach((child) => augmentNode(child))
 		} else {
-			node.isLeaf = true // 无children的节点标记为叶子节点
+			node.isLeaf = true
+			// node.disabled = node.infoType !== 'user' // 动态设置 disabled
 		}
 	}
+	const filterUsers = (nodes) => {
+		return nodes.reduce((acc, node) => {
+			if (node.infoType === 'user') {
+				// 如果当前节点是 user 类型,直接加入结果
+				acc.push(node)
+			} else if (node.children) {
+				// 如果有子节点,递归处理子节点
+				const filteredChildren = filterUsers(node.children)
+				if (filteredChildren.length > 0) {
+					// 如果子节点中有符合条件的,复制原节点并替换 children
+					acc.push({
+						...node,
+						children: filteredChildren
+					})
+				}
+			}
+			return acc
+		}, [])
+	}
 	const getOrgUserTreeRespectively = () => {
 		resourceAuditApi
 			.orgUserTreeSelector()
@@ -202,6 +222,7 @@
 					// if (treeData.value.length > 0 && treeData.value[0]?.id) {
 					// 	expandedKeys.value = [treeData.value[0].id]
 					// }
+					// treeData.value = filterUsers(res.data)
 					treeData.value = res.data
 				}
 			})