修复脚本管理跳转逻辑

This commit is contained in:
whyour 2023-02-04 00:20:44 +08:00
parent 1961a6b913
commit 518436d5ca
2 changed files with 34 additions and 8 deletions

View File

@ -36,7 +36,7 @@ import EditScriptNameModal from './editNameModal';
import debounce from 'lodash/debounce';
import { history, useOutletContext, useLocation } from '@umijs/max';
import { parse } from 'query-string';
import { depthFirstSearch } from '@/utils';
import { depthFirstSearch, findNode } from '@/utils';
import { SharedContext } from '@/layouts';
import useFilterTreeData from '@/hooks/useFilterTreeData';
import uniq from 'lodash/uniq';
@ -80,7 +80,7 @@ const Script = () => {
if (code === 200) {
setData(data);
initState();
initGetScript();
initGetScript(data);
}
})
.finally(() => needLoading && setLoading(false));
@ -100,7 +100,7 @@ const Script = () => {
});
};
const initGetScript = () => {
const initGetScript = (_data: any) => {
const { p, s } = parse(history.location.search);
if (s) {
const vkey = `${p}/${s}`;
@ -111,8 +111,11 @@ const Script = () => {
parent: p,
},
};
setExpandedKeys([p]);
onTreeSelect([vkey], obj);
const item = findNode(_data, (c) => c.key === obj.node.key);
if (item) {
setExpandedKeys([p as string]);
onTreeSelect([vkey], obj);
}
}
};

View File

@ -152,9 +152,9 @@ export default function browserType() {
shell === 'none'
? {}
: {
shell, // wechat qq uc 360 2345 sougou liebao maxthon
shellVs,
},
shell, // wechat qq uc 360 2345 sougou liebao maxthon
shellVs,
},
);
console.log(
@ -272,6 +272,29 @@ export function depthFirstSearch<
return c;
}
export function findNode<T extends Record<string, any> & { children?: T[] }>(
children: T[],
condition: (column: T) => boolean,
) {
const c = [...children];
let item;
function find(cls: T[] | undefined): T | undefined {
if (!cls) return;
for (let i = 0; i < cls?.length; i++) {
if (condition(cls[i])) {
item = cls[i];
} else if (cls[i].children) {
find(cls[i].children);
}
}
}
find(c);
return item;
}
export function logEnded(log: string): boolean {
const endTips = [LOG_END_SYMBOL, '执行结束'];
return endTips.some((x) => log.includes(x));