UNPKG

@choerodon/master

Version:
41 lines (34 loc) 1.5 kB
import { groupBy, filter, forEach, isEmpty, uniqBy } from 'lodash'; // 用于待办事项、缺陷、我报告的等敏捷问题树结构数据转换 // 由平铺的一维数组[issueData]转为按项目id分组且父子数据嵌套的对象{ projectId: issueData } /** * 用于待办事项、缺陷、我报告的等敏捷问题树结构数据转换 * 由平铺的一维数组[issueData]转为按项目id分组且父子数据嵌套的对象{ projectId: issueData } * @param data 一维数组 * @param hasParent 是否有父任务 */ var getQuestionTreeData = function getQuestionTreeData() { var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var hasParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var idField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'issueId'; if (isEmpty(data)) { return {}; } var newData = uniqBy(data, idField); if (!hasParent) { return groupBy(newData, 'projectId'); } var childrenData = groupBy(newData, 'parentId'); var parentData = filter(newData, function (item) { return !item.parentId; }); forEach(parentData, function (item) { // @ts-ignore if (item && childrenData && childrenData[item[idField]]) { // @ts-ignore // eslint-disable-next-line no-param-reassign item.children = childrenData[item[idField]]; } }); return groupBy(parentData, 'projectId'); }; export default getQuestionTreeData;