作者 RuoYi

修复树表数据显示不全&加载慢问题

@@ -58,7 +58,7 @@ export function addDateRange(params, dateRange, propName) { @@ -58,7 +58,7 @@ export function addDateRange(params, dateRange, propName) {
58 var search = params; 58 var search = params;
59 search.params = {}; 59 search.params = {};
60 if (null != dateRange && '' != dateRange) { 60 if (null != dateRange && '' != dateRange) {
61 - if (typeof(propName) === "undefined") { 61 + if (typeof (propName) === "undefined") {
62 search.params["beginTime"] = dateRange[0]; 62 search.params["beginTime"] = dateRange[0];
63 search.params["endTime"] = dateRange[1]; 63 search.params["endTime"] = dateRange[1];
64 } else { 64 } else {
@@ -129,24 +129,47 @@ export function praseStrEmpty(str) { @@ -129,24 +129,47 @@ export function praseStrEmpty(str) {
129 * @param {*} id id字段 默认 'id' 129 * @param {*} id id字段 默认 'id'
130 * @param {*} parentId 父节点字段 默认 'parentId' 130 * @param {*} parentId 父节点字段 默认 'parentId'
131 * @param {*} children 孩子节点字段 默认 'children' 131 * @param {*} children 孩子节点字段 默认 'children'
132 - * @param {*} rootId 根Id 默认 0  
133 */ 132 */
134 -export function handleTree(data, id, parentId, children, rootId) {  
135 - id = id || 'id'  
136 - parentId = parentId || 'parentId'  
137 - children = children || 'children'  
138 - rootId = rootId || Math.min.apply(Math, data.map(item => { return item[parentId] })) || 0  
139 - //对源数据深度克隆  
140 - const cloneData = JSON.parse(JSON.stringify(data))  
141 - //循环所有项  
142 - const treeData = cloneData.filter(father => {  
143 - let branchArr = cloneData.filter(child => {  
144 - //返回每一项的子级数组  
145 - return father[id] === child[parentId]  
146 - });  
147 - branchArr.length > 0 ? father.children = branchArr : '';  
148 - //返回第一层  
149 - return father[parentId] === rootId;  
150 - });  
151 - return treeData != '' ? treeData : data; 133 +export function handleTree(data, id, parentId, children) {
  134 + let config = {
  135 + id: id || 'id',
  136 + parentId: parentId || 'parentId',
  137 + childrenList: children || 'children'
  138 + };
  139 +
  140 + var childrenListMap = {};
  141 + var nodeIds = {};
  142 + var tree = [];
  143 +
  144 + for (let d of data) {
  145 + let parentId = d[config.parentId];
  146 + if (childrenListMap[parentId] == null) {
  147 + childrenListMap[parentId] = [];
  148 + }
  149 + nodeIds[d[config.id]] = d;
  150 + childrenListMap[parentId].push(d);
  151 + }
  152 +
  153 + for (let d of data) {
  154 + let parentId = d[config.parentId];
  155 + if (nodeIds[parentId] == null) {
  156 + tree.push(d);
  157 + }
  158 + }
  159 +
  160 + for (let t of tree) {
  161 + adaptToChildrenList(t);
  162 + }
  163 +
  164 + function adaptToChildrenList(o) {
  165 + if (childrenListMap[o[config.id]] !== null) {
  166 + o[config.childrenList] = childrenListMap[o[config.id]];
  167 + }
  168 + if (o[config.childrenList]) {
  169 + for (let c of o[config.childrenList]) {
  170 + adaptToChildrenList(c);
  171 + }
  172 + }
  173 + }
  174 + return tree;
152 } 175 }