tenders2tree.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. const Tender2Tree = (function () {
  10. const treeSetting = {
  11. id: 'tmt_id',
  12. pid: 'tmt_pid',
  13. order: 'sort',
  14. level: 'level',
  15. rootId: -1,
  16. fullPath: 'full_path',
  17. };
  18. const tenderTree = createNewPathTree('gather', treeSetting);
  19. // 查询方法
  20. function findNode (key, value, arr) {
  21. for (const a of arr) {
  22. if (a[key] && a[key] === value) {
  23. return a;
  24. }
  25. }
  26. }
  27. function findCategoryTreeNode(cid, value, array) {
  28. for (const a of array) {
  29. if (a.cid === cid && a.vid === value) {
  30. return a;
  31. }
  32. }
  33. }
  34. function getCategoryTreeNode (category, value, parent) {
  35. const array = parent ? parent.children : tenderTree.children;
  36. let cate = findCategoryTreeNode(category.id, value, array);
  37. if (!cate) {
  38. const cateValue = findNode('id', value, category.value);
  39. if (!cateValue) return null;
  40. cate = tenderTree.addNode({
  41. cid: category.id,
  42. vid: value,
  43. name: cateValue.value,
  44. }, parent);
  45. if (cateValue.sort) cate.sort = cateValue.sort;
  46. }
  47. return cate;
  48. }
  49. function loadCategoryTreeNode (category, tender, levelCate) {
  50. let tenderCategory = null;
  51. for (const [i, lc] of levelCate.entries()) {
  52. const tenderCate = findNode('cid', lc.id, tender.category);
  53. if (tenderCate) {
  54. tenderCategory = getCategoryTreeNode(lc, tenderCate.value, tenderCategory);
  55. } else {
  56. if (i === 0 && tender.category) {
  57. for (const [j, c] of tender.category.entries()) {
  58. const cate = findNode('id', c.cid, category);
  59. tenderCategory = getCategoryTreeNode(cate, c.value, tenderCategory);
  60. }
  61. }
  62. return tenderCategory;
  63. }
  64. }
  65. return tenderCategory;
  66. }
  67. function convert (category, tenders, ledgerAuditConst, stageAuditConst, loadFun) {
  68. tenderTree.clearDatas();
  69. const levelCategory = category.filter(function (c) {
  70. return c.level && c.level > 0;
  71. });
  72. for (const t of tenders) {
  73. const parent = (t.category && levelCategory.length > 0) ? loadCategoryTreeNode(category, t, levelCategory) : null;
  74. const node = {
  75. tid: t.id,
  76. name: t.name,
  77. phase: t.lastStage ? '第' + t.lastStage.order + '期' : '台账',
  78. stageCount: t.lastStage ? t.lastStage.order : 0,
  79. measure_type: t.measure_type,
  80. };
  81. if (ledgerAuditConst && stageAuditConst) {
  82. node.status = t.lastStage ? stageAuditConst.statusString[t.lastStage.status] : ledgerAuditConst.statusString[t.ledger_status];
  83. }
  84. if (loadFun) loadFun(node, t);
  85. tenderTree.addNode(node, parent);
  86. }
  87. tenderTree.sortTreeNode(true);
  88. return tenderTree;
  89. }
  90. return { convert }
  91. })();