wangxy 1 hónapja
szülő
commit
25aa7bb7c0
2 módosított fájl, 24 hozzáadás és 17 törlés
  1. 14 10
      pages/selectGradesTerms/index.vue
  2. 10 7
      utils/common.js

+ 14 - 10
pages/selectGradesTerms/index.vue

@@ -35,7 +35,7 @@
 	import {
 		onLoad
 	} from "@dcloudio/uni-app";
-	import {getUserIdentity,findRootParentId,findTreeNode} from "@/utils/common.js"
+	import {getUserIdentity,findRootNode,findTreeNode} from "@/utils/common.js"
 	import cacheManager from "@/utils/cacheManager.js"
   import {getCommonTree, getIndexTree} from "../../api/selectGradesTerms";
 
@@ -70,16 +70,20 @@
     function initUserProducts() {
       httpApi.getIndexTree().then(res => {
         data.xuekeData = res.data||[];
+        const {
+          levelId,
+        } = cacheManager.get('auth');
+        if (levelId) {
+          // LevelId 翻找根节点学科,执行选中高亮操作
+          const xuekeObj = findRootNode(data.xuekeData, levelId,'levelId');
+          const productObj = findTreeNode(data.xuekeData, levelId,'levelId');
+          data.activeProduct = productObj.id;
+          data.activeXueke = xuekeObj.id;
+        } else {
+          data.activeProduct = null;
+          data.activeXueke = null
+        }
       })
-
-      const {
-        levelId,
-      } = cacheManager.get('auth');
-      // LevelId 翻找根节点学科,执行选中高亮操作
-      const xuekeObj = findRootParentId(data.xuekeData, levelId,'levelId');
-      const productObj = findTreeNode(data.xuekeData, levelId,'levelId');
-      data.activeProduct = productObj.id;
-      data.activeXueke = xuekeObj.id;
     }
 
 		// 选择 年级+学期

+ 10 - 7
utils/common.js

@@ -99,27 +99,30 @@ export function debounce(func, wait) {
 }
 
 
-export function findRootParentId(tree, targetId, idKey = 'id', childrenKey = 'children') {
-	let result = null;
+export function findRootNode(tree, targetId, idKey = 'id', childrenKey = 'children') {
+	let root = null;
 
-	function traverse(nodes, path = []) {
+	function traverse(nodes) {
 		for (const node of nodes) {
-			const currentPath = [...path, node[idKey]]; // 记录当前路径
 			if (node[idKey] === targetId) {
-				result = path[0]; // 取路径首位作为顶层ID
+				root = nodes[0]; // 当前子树根即为目标根:ml-citation{ref="3" data="citationList"}
 				return true;
 			}
 			if (node[childrenKey]?.length) {
-				if (traverse(node[childrenKey], currentPath)) return true;
+				if (traverse(node[childrenKey]) && !root) {
+					root = node; // 当子树找到目标时,当前节点为根:ml-citation{ref="3,8" data="citationList"}
+					return true;
+				}
 			}
 		}
 		return false;
 	}
 
 	traverse(tree);
-	return result;
+	return root;
 }
 
+
 export function findTreeNode(tree, targetId, childrenKey = 'children', idKey = 'id') {
 	for (const node of tree) {
 		if (node[idKey] === targetId) return node;