/** @format */ import groupBy from 'lodash/groupBy'; /** * 不同标签对应颜色 * @param type */ export function getHouseItemColorByType(type: string) { switch (type) { case 'not_auth': { return 'rgba(44, 180, 249, .79)'; } case 'self_use': { return 'rgba(45, 193, 153, .79)'; } case 'rent_out': { return 'rgb(254, 172, 173, .79)'; } case 'idle': { return 'rgb(151, 162, 174, .79)'; } default: { return 'rgba(45, 193, 153, 0.79)'; } } } /** * 数组转树 递归求解 */ function toTree(list: any, parent: string) { const len = list.length; function loop(parent: string) { const res = []; for (let i = 0; i < len; i++) { const item = list[i]; if (item.parent === parent) { item.children = loop(item.code); res.push(item); } } if (res.length > 0) { return res; } } return loop(parent); } /** * 根据初始数据获取cascader初始化数据 * @param data */ export function getOptionsFromData( data: Record, level = 2, parent: string, ) { let resultData: any = []; if (!(data && data.length)) { return []; } const FirstList = []; for (let i = 0; i < data.length; i++) { if (data[i].level === level && parent === data[i].parent) { FirstList.push(data[i]); } } resultData = FirstList.map(item => { item.children = toTree(data, item.code); return item; }); return resultData; } // export function getOptionsFromData( // data?: Record, // ): Record[] { // const resultData = []; // if (!(data && data.length)) { // return []; // } // const groupByProject = groupBy(data, 'project'); // const projectList = Object.keys(groupByProject); // for (let pIndex = 0; pIndex < projectList.length; pIndex++) { // const project = projectList[pIndex]; // const buildingRecordList = []; // const groupByBuilding = groupBy(groupByProject[project], 'building'); // const buildingList = Object.keys(groupByBuilding); // for (let bIndex = 0; bIndex < buildingList.length; bIndex++) { // const building = buildingList[bIndex]; // const unitRecordList = []; // const groupByUnit = groupBy(groupByBuilding[building], 'unit'); // const unitList = Object.keys(groupByUnit); // for (let uIndex = 0; uIndex < unitList.length; uIndex++) { // const unit = unitList[uIndex]; // unitRecordList.push({ // value: unit, // // label: `${unit}单元` // label: `${unit}`, // }); // } // buildingRecordList.push({ // value: building, // // label: `${building}幢`, // label: `${building}`, // children: unitRecordList, // }); // } // resultData.push({ // value: project, // label: project, // children: buildingRecordList, // }); // } // return resultData; // }