|  |  | 
 |  |  | import { DataNode } from 'antd/es/tree'; | 
 |  |  | import { parse } from 'querystring'; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 构造树型结构数据 | 
 |  |  |  * @param {*} data 数据源 | 
 |  |  |  * @param {*} id id字段 默认 'id' | 
 |  |  |  * @param {*} parentId 父节点字段 默认 'parentId' | 
 |  |  |  * @param {*} children 孩子节点字段 默认 'children' | 
 |  |  |  */ | 
 |  |  | export function buildTreeData(data, id, name, parentId, parentName, children) { | 
 |  |  |   const config = { | 
 |  |  |     id: id || 'id', | 
 |  |  |     name: name || 'name', | 
 |  |  |     parentId: parentId || 'parentId', | 
 |  |  |     parentName: parentName || 'parentName', | 
 |  |  |     childrenList: children || 'children', | 
 |  |  |   }; | 
 |  |  |  | 
 |  |  |   const childrenListMap = []; | 
 |  |  |   const nodeIds = []; | 
 |  |  |   const tree = []; | 
 |  |  |   data.forEach((item) => { | 
 |  |  |     const d = item; | 
 |  |  |     const pId = d[config.parentId]; | 
 |  |  |     if (!childrenListMap[pId]) { | 
 |  |  |       childrenListMap[pId] = []; | 
 |  |  |     } | 
 |  |  |     d.key = d[config.id]; | 
 |  |  |     d.title = d[config.name]; | 
 |  |  |     d.value = d[config.id]; | 
 |  |  |     d[config.childrenList] = null; | 
 |  |  |     nodeIds[d[config.id]] = d; | 
 |  |  |     childrenListMap[pId].push(d); | 
 |  |  |   }); | 
 |  |  |  | 
 |  |  |   data.forEach((item) => { | 
 |  |  |     const d = item; | 
 |  |  |     const pId = d[config.parentId]; | 
 |  |  |     if (!nodeIds[pId]) { | 
 |  |  |       d[config.parentName] = ''; | 
 |  |  |       tree.push(d); | 
 |  |  |     } | 
 |  |  |   }); | 
 |  |  |  | 
 |  |  |   function adaptToChildrenList(item) { | 
 |  |  |     const o = item; | 
 |  |  |     if (childrenListMap[o[config.id]]) { | 
 |  |  |       if (!o[config.childrenList]) { | 
 |  |  |         o[config.childrenList] = []; | 
 |  |  |       } | 
 |  |  |       o[config.childrenList] = childrenListMap[o[config.id]]; | 
 |  |  |     } | 
 |  |  |     if (o[config.childrenList]) { | 
 |  |  |       o[config.childrenList].forEach((child) => { | 
 |  |  |         const c = child; | 
 |  |  |         c[config.parentName] = o[config.name]; | 
 |  |  |         adaptToChildrenList(c); | 
 |  |  |       }); | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   tree.forEach((t) => { | 
 |  |  |     adaptToChildrenList(t); | 
 |  |  |   }); | 
 |  |  |  | 
 |  |  |   return tree; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | export const getPageQuery = () => parse(window.location.href.split('?')[1]); | 
 |  |  |  | 
 |  |  | export function formatTreeData(arrayList) { | 
 |  |  |   const treeSelectData = arrayList.map((item) => { | 
 |  |  |     const node = { | 
 |  |  |       id: item.id, | 
 |  |  |       title: item.label, | 
 |  |  |       key: `${item.id}`, | 
 |  |  | export function transformTreeData(originalData) { | 
 |  |  |   return originalData.map(item => { | 
 |  |  |     let newItem = { | 
 |  |  |       key: item.id, | 
 |  |  |       title: item.name, | 
 |  |  |       value: item.id, | 
 |  |  |       // 其它需要的属性... | 
 |  |  |     }; | 
 |  |  |     if (item.children) { | 
 |  |  |       node.children = formatTreeData(item.children); | 
 |  |  |     if (item.children && item.children.length > 0) { | 
 |  |  |       newItem.children = transformTreeData(item.children); | 
 |  |  |     } | 
 |  |  |     return node; | 
 |  |  |  | 
 |  |  |     return newItem; | 
 |  |  |   }); | 
 |  |  |   return treeSelectData; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | export function getTreeAllKeys(data) { | 
 |  |  |   let keys = []; | 
 |  |  |   for (let item of data) { | 
 |  |  |       keys.push(item.key); | 
 |  |  |       if (item.children) { | 
 |  |  |           keys = keys.concat(getTreeAllKeys(item.children)); | 
 |  |  |       } | 
 |  |  |   } | 
 |  |  |   return keys; | 
 |  |  | } |