From 537fc97695717b3db452ed52b1d4f7b475b393be Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期六, 01 三月 2025 14:54:05 +0800 Subject: [PATCH] 优化前端树结构性能问题 --- src/utils/ruoyi.js | 54 +++++++++++++++--------------------------------------- 1 files changed, 15 insertions(+), 39 deletions(-) diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js index 9e276da..2bc6db0 100644 --- a/src/utils/ruoyi.js +++ b/src/utils/ruoyi.js @@ -1,5 +1,3 @@ - - /** * 閫氱敤js鏂规硶灏佽澶勭悊 * Copyright (c) 2019 ruoyi @@ -86,10 +84,13 @@ return actions.join(''); } -// 鍥炴樉鏁版嵁瀛楀吀锛堝瓧绗︿覆鏁扮粍锛� +// 鍥炴樉鏁版嵁瀛楀吀锛堝瓧绗︿覆銆佹暟缁勶級 export function selectDictLabels(datas, value, separator) { - if (value === undefined) { + if (value === undefined || value.length ===0) { return ""; + } + if (Array.isArray(value)) { + value = value.join(","); } var actions = []; var currentSeparator = undefined === separator ? "," : separator; @@ -162,37 +163,19 @@ }; var childrenListMap = {}; - var nodeIds = {}; var tree = []; - for (let d of data) { - let parentId = d[config.parentId]; - if (childrenListMap[parentId] == null) { - childrenListMap[parentId] = []; - } - nodeIds[d[config.id]] = d; - childrenListMap[parentId].push(d); + let id = d[config.id]; + childrenListMap[id] = d; } for (let d of data) { - let parentId = d[config.parentId]; - if (nodeIds[parentId] == null) { + let parentId = d[config.parentId] + let parentObj = childrenListMap[parentId] + if (!parentObj) { tree.push(d); - } - } - - for (let t of tree) { - adaptToChildrenList(t); - } - - function adaptToChildrenList(o) { - if (childrenListMap[o[config.id]] !== null) { - o[config.childrenList] = childrenListMap[o[config.id]]; - } - if (o[config.childrenList]) { - for (let c of o[config.childrenList]) { - adaptToChildrenList(c); - } + } else { + parentObj[config.childrenList].push(d) } } return tree; @@ -224,7 +207,6 @@ return result } - // 杩斿洖椤圭洰璺緞 export function getNormalPath(p) { if (p.length === 0 || !p || p == 'undefined') { @@ -238,12 +220,6 @@ } // 楠岃瘉鏄惁涓篵lob鏍煎紡 -export async function blobValidate(data) { - try { - const text = await data.text(); - JSON.parse(text); - return false; - } catch (error) { - return true; - } -} \ No newline at end of file +export function blobValidate(data) { + return data.type !== 'application/json' +} -- Gitblit v1.9.3