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 | 71 ++++++++++++++--------------------- 1 files changed, 29 insertions(+), 42 deletions(-) diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js index 5d46531..2bc6db0 100644 --- a/src/utils/ruoyi.js +++ b/src/utils/ruoyi.js @@ -1,5 +1,3 @@ - - /** * 閫氱敤js鏂规硶灏佽澶勭悊 * Copyright (c) 2019 ruoyi @@ -68,8 +66,11 @@ return search; } -// 鍥炴樉鏁版嵁瀛楀吀 +// 鍥炴樉鏁版嵁瀛楀吀 export function selectDictLabel(datas, value) { + if (value === undefined) { + return ""; + } var actions = []; Object.keys(datas).some((key) => { if (datas[key].value == ('' + value)) { @@ -77,23 +78,34 @@ return true; } }) + if (actions.length === 0) { + actions.push(value); + } 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; var temp = value.split(currentSeparator); Object.keys(value.split(currentSeparator)).some((val) => { + var match = false; Object.keys(datas).some((key) => { if (datas[key].value == ('' + temp[val])) { actions.push(datas[key].label + currentSeparator); + match = true; } }) + if (!match) { + actions.push(temp[val] + currentSeparator); + } }) return actions.join('').substring(0, actions.join('').length - 1); } @@ -151,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; @@ -196,10 +190,10 @@ for (const propName of Object.keys(params)) { const value = params[propName]; var part = encodeURIComponent(propName) + "="; - if (value !== null && typeof (value) !== "undefined") { + if (value !== null && value !== "" && typeof (value) !== "undefined") { if (typeof value === 'object') { for (const key of Object.keys(value)) { - if (value[key] !== null && typeof (value[key]) !== 'undefined') { + if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') { let params = propName + '[' + key + ']'; var subPart = encodeURIComponent(params) + "="; result += subPart + encodeURIComponent(value[key]) + "&"; @@ -212,7 +206,6 @@ } return result } - // 杩斿洖椤圭洰璺緞 export function getNormalPath(p) { @@ -227,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