UNPKG

micro-ui-y

Version:

584 lines (511 loc) 21.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._Tree = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _react = require("react"); var _react2 = _interopRequireDefault(_react); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** * tree 树相关工具类 * @Author gufuyan * @Date 2018-08-29 */ var TreeFn = //函数参数默认值 function TreeFn() { var idName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "id"; var fIdName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fId"; _classCallCheck(this, TreeFn); _initialiseProps.call(this); this.idName = idName; this.fIdName = fIdName; } /** * 根据结构id和fId生成树 * @param treeArr 生产树的对象,必须有关键属性id和fId * @param idName 指id的属性名 * @param fIdName 指fId的属性名 * renderTree 和 getTreeList 不同写法,结果一样 * @returns {Array} */ /** * 根据结构id和fId生成树 * @param list 生产树的对象,必须有关键属性id和fId * @param idName 指id的属性名 * @param pidName 指fId的属性名 * @returns {Array} */ /** * 获取根据id获取fid * @param tree * @param id * @returns {Array} */ /** * 场景太多,后面再补上此功能 * @param tree * @param id * @param idName * @returns {{arrIds: Array, arrList: Array}} */ /** * 根据输入值 搜索 树 * @param value 输入的值 * @param dataSource 树 * @param searchName 输入的值对应树的属性名称 * @param childList 子集的属性名称 * @returns {Array} */ /** * * @param deptArr * @param personArr * @param idName * @param fIdName * @returns {Array} */ ; var _initialiseProps = function _initialiseProps() { var _this = this; this.renderTree = function () { var treeArr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var idName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "id"; var fIdName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "fId"; var tree = []; var newTreeArr = []; //过滤掉所有父id的不存在的节点,返回fid存在的所有节点item[fIdName] newTreeArr = treeArr.filter(function (item, index) { !item[fIdName] && tree.push(item); //tree 取到所有根节点 return item[fIdName]; //newTreeArr 返回去掉根节点的所有数组 }); var setTreeData = function setTreeData(_newTreeArr, _tree) { var newTreeArr = _newTreeArr.filter(function (treeArrItem, index) { //剩下的每一项数组 去查找已存在的目录树,查找得到添加进去,查找不到继续留着 var renderFlag = function renderFlag(treeArrItem, _tree) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = _tree[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var o = _step.value; if (treeArrItem[fIdName] == o[idName]) { var childList = o.childList || []; childList.push(treeArrItem); o.childList = childList; return true; } else { if (o.childList && o.childList.length) { var resChildListFlag = renderFlag(treeArrItem, o.childList); if (resChildListFlag) return resChildListFlag; } } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } }; var flag = renderFlag(treeArrItem, _tree); //如果查找得到fid, flag为true,需返回查找不到的所有项 !flag return !flag; }); if (newTreeArr.length) { setTreeData(newTreeArr, _tree); } }; setTreeData(newTreeArr, tree); return tree; }; this.getTreeList = function () { var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var idName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "id"; var fIdName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "fId"; var obj = {}; var tree = []; var setTree = function setTree(fo, idName) { if (fo.childList) { var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = fo.childList[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var foo = _step2.value; var idd = foo[idName]; if (obj[idd]) { foo.childList = []; foo.childList = obj[idd]; setTree(foo, idName); } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } } }; var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = list[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var o = _step3.value; if (!obj[o[fIdName]]) { obj[o[fIdName]] = []; } if (o[fIdName] == null) { tree.push(o); } obj[o[fIdName]].push(o); } //父id开头 } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } var _iteratorNormalCompletion4 = true; var _didIteratorError4 = false; var _iteratorError4 = undefined; try { for (var _iterator4 = tree[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { var fo = _step4.value; var _idName = fo[idName]; if (obj[_idName]) { fo.childList = []; fo.childList = obj[_idName]; } } } catch (err) { _didIteratorError4 = true; _iteratorError4 = err; } finally { try { if (!_iteratorNormalCompletion4 && _iterator4.return) { _iterator4.return(); } } finally { if (_didIteratorError4) { throw _iteratorError4; } } } var _iteratorNormalCompletion5 = true; var _didIteratorError5 = false; var _iteratorError5 = undefined; try { for (var _iterator5 = tree[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { var _fo = _step5.value; setTree(_fo, idName); } } catch (err) { _didIteratorError5 = true; _iteratorError5 = err; } finally { try { if (!_iteratorNormalCompletion5 && _iterator5.return) { _iterator5.return(); } } finally { if (_didIteratorError5) { throw _iteratorError5; } } } return tree; }; this.getFId = function (tree, id) { var idName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "id"; var childList = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'childList'; var arrIds = []; var arrList = []; var getId = function getId(obj, id) { var oStr = JSON.stringify(obj); if (oStr.indexOf(':' + id + ',') != -1) { if ((typeof obj === "undefined" ? "undefined" : _typeof(obj)) == "object") { if (obj[idName] == id) { arrIds.push(obj[idName]); arrList.push(obj); // arrIdList.push(obj) } else if (obj[idName]) { arrIds.push(obj[idName]); arrList.push(obj); if (obj[childList] && obj[childList].length) { var _iteratorNormalCompletion6 = true; var _didIteratorError6 = false; var _iteratorError6 = undefined; try { for (var _iterator6 = obj[childList][Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { var o = _step6.value; getId(o, id); } } catch (err) { _didIteratorError6 = true; _iteratorError6 = err; } finally { try { if (!_iteratorNormalCompletion6 && _iterator6.return) { _iterator6.return(); } } finally { if (_didIteratorError6) { throw _iteratorError6; } } } } } else { if (obj[childList] && obj[childList].length) { var _iteratorNormalCompletion7 = true; var _didIteratorError7 = false; var _iteratorError7 = undefined; try { for (var _iterator7 = obj[childList][Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { var _o = _step7.value; getId(_o, id); } } catch (err) { _didIteratorError7 = true; _iteratorError7 = err; } finally { try { if (!_iteratorNormalCompletion7 && _iterator7.return) { _iterator7.return(); } } finally { if (_didIteratorError7) { throw _iteratorError7; } } } } } } } }; var _iteratorNormalCompletion8 = true; var _didIteratorError8 = false; var _iteratorError8 = undefined; try { for (var _iterator8 = tree[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) { var o = _step8.value; getId(o, id); } } catch (err) { _didIteratorError8 = true; _iteratorError8 = err; } finally { try { if (!_iteratorNormalCompletion8 && _iterator8.return) { _iterator8.return(); } } finally { if (_didIteratorError8) { throw _iteratorError8; } } } return { arrIds: arrIds, arrList: arrList }; }; this.getCId = function (tree, id) { var idName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "id"; //功能尚未完成 var arrIds = []; var arrList = []; // let loopTree = (data, id)=> { // if (data instanceof Array) { // for (let o of data) { // loopTree(o) // } // } else { // if (!choArr.in_array(data[idText])) { // choArr.push(data[idText]); // choData.push(data); // } // if (!choChlArr.in_array(data[idText])) { // choChlArr.push(data[idText]); // choChlData.push(data); // } // if (data.subList && data.subList.length) { // loopTree(data.subList) // } // } // }; // loopTree(tree, id, ""); return { arrIds: arrIds, arrList: arrList }; }; this.getSearch = function (value, dataSource) { var searchName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "orgName"; var childList = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "subList"; var searchData = []; var randerSearch = function randerSearch(value, dataSource) { if (dataSource instanceof Array) { var _iteratorNormalCompletion9 = true; var _didIteratorError9 = false; var _iteratorError9 = undefined; try { for (var _iterator9 = dataSource[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) { var item = _step9.value; var orgName = item[searchName]; if (value && orgName.includes(value)) { searchData.push(item); } if (item[childList] && item[childList].length) { randerSearch(value, item[childList], searchData); } } } catch (err) { _didIteratorError9 = true; _iteratorError9 = err; } finally { try { if (!_iteratorNormalCompletion9 && _iterator9.return) { _iterator9.return(); } } finally { if (_didIteratorError9) { throw _iteratorError9; } } } } }; randerSearch(value, dataSource); return searchData; }; this.renderDepartmentStaff = function () { var deptArr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var personArr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var idName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "id"; var fIdName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "fId"; var deptTree = _this.renderTree(deptArr, idName, fIdName); /** * 根据 部门ID,获取所有人员满足部门ID的集合 * @param deptId * @param idName * @returns {Array} */ var getPersonByDeptId = function getPersonByDeptId(deptId, idName) { //为了下次遍历 人员数据越来越少 var newPersonArr = []; var deptIdPerson = []; personArr.forEach(function (item, index) { if (item[idName] == deptId) { deptIdPerson.push(item); } else { newPersonArr.push(item); } }); // const deptIdPerson = personArr.filter((item,index)=>{ // return item.deptId == deptId // }) personArr = newPersonArr; return deptIdPerson; }; /** * * @param obj 没条数据 {}/[{}] * @param idName */ var renderDP = function renderDP(obj, idName) { if (obj instanceof Array) { var _iteratorNormalCompletion10 = true; var _didIteratorError10 = false; var _iteratorError10 = undefined; try { for (var _iterator10 = obj[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) { var o = _step10.value; o.type == "dept" && renderDP(o, idName); } } catch (err) { _didIteratorError10 = true; _iteratorError10 = err; } finally { try { if (!_iteratorNormalCompletion10 && _iterator10.return) { _iterator10.return(); } } finally { if (_didIteratorError10) { throw _iteratorError10; } } } } else { if (obj[idName] && obj.type == "dept") { if (!obj.childList) { obj.childList = []; } var deptIdPerson = getPersonByDeptId(obj[idName], idName); obj.childList = deptIdPerson.concat(obj.childList || []); } if (obj.childList && obj.childList.length > 0) { renderDP(obj.childList, idName); } } }; var _iteratorNormalCompletion11 = true; var _didIteratorError11 = false; var _iteratorError11 = undefined; try { for (var _iterator11 = deptTree[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) { var o = _step11.value; renderDP(o, idName); } } catch (err) { _didIteratorError11 = true; _iteratorError11 = err; } finally { try { if (!_iteratorNormalCompletion11 && _iterator11.return) { _iterator11.return(); } } finally { if (_didIteratorError11) { throw _iteratorError11; } } } return deptTree; }; }; var _Tree = new TreeFn(); exports._Tree = _Tree; //# sourceMappingURL=tree.js.map