| | |
| | | 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 = { |
| | | 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; |
| | | } |