'use strict'; /** * * @author LanJianRong * @date 2020/11/13 * @version */ let selfLevelSort; const tenderTree = []; let parentId = 0; // 查询方法 function findNode (key, value, arr) { for (const a of arr) { if (a[key] && a[key] === value) { return a; } } } // 分类数据排序 // 分类数据排序 function loadSelfCategoryLevel(selfLevel){ selfLevelSort = selfLevel ? selfLevel.split(',') : []; selfLevelSort = selfLevelSort.filter(x => { return category.find(c => { return c.id + '' === x; }); }); category.forEach(cate => { cate.is_self = selfLevelSort.length > 0; cate.self_level = selfLevelSort.indexOf(cate.id + '') + 1; }); } function sortCategory() { category.forEach(cate => { cate.show_level = cate.is_self ? cate.self_level : cate.level; }); category.sort(function (a, b) { return a.show_level ? (b.show_level ? a.show_level - b.show_level : -1) : a.id - b.id; }); } // 初始化TenderTree数据 function initTenderTree () { const levelCategory = category.filter(function (c) { return c.show_level && c.show_level > 0; }); function findCategoryNode(cid, value, array) { for (const a of array) { if (a.cid === cid && a.vid === value) { return a; } } } function getCategoryNode(category, value, parent, i = null) { const array = parent ? parent.children : tenderTree; let cate = findCategoryNode(category.id, value, array); if (!cate) { const cateValue = findNode('id', value, category.value); if (!cateValue) return null; cate = { cid: category.id, vid: value, name: cateValue.value, children: [], level: i ? i : category.show_level, sort_id: ++parentId, sort: cateValue.sort, }; array.push(cate); } return cate; } function loadTenderCategory (tender) { let tenderCategory = null; for (const [index,lc] of levelCategory.entries()) { const tenderCate = findNode('cid', lc.id, tender.category); if (tenderCate) { tenderCategory = getCategoryNode(lc, tenderCate.value, tenderCategory); } else { if (index === 0 && tender.category) { for (const [i,c] of tender.category.entries()) { const cate = findNode('id', c.cid, category); if (cate) { tenderCategory = getCategoryNode(cate, c.value, tenderCategory, i+1); } else { console.log(tender.name, c.cid, c.value); } } } return tenderCategory; } } return tenderCategory; } tenderTree.splice(0, tenderTree.length); for (const t of tenders) { t.valid = true; delete t.level; if (t.category && levelCategory.length > 0) { const parent = loadTenderCategory(t); if (parent) { t.level = parent.level + 1; parent.children.push(t); } else { tenderTree.push(t); } } else { tenderTree.push(t); } } sortTenderTree(tenderTree); } function recursiveGetTenderNodeHtml (node, arr, pid) { // console.log(node, tender) const html = []; html.push('
名称 | '); // html.push('选择 | '); // html.push('
---|