tenders2tree.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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: 'order',
  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. }
  46. return cate;
  47. }
  48. function loadCategoryTreeNode ( tender, levelCate) {
  49. let tenderCategory = null;
  50. for (const [i, lc] of levelCate.entries()) {
  51. const tenderCate = findNode('cid', lc.id, tender.category);
  52. if (tenderCate) {
  53. tenderCategory = getCategoryTreeNode(lc, tenderCate.value, tenderCategory);
  54. } else {
  55. if (i === 0 && tender.category) {
  56. for (const [j, c] of tender.category.entries()) {
  57. const cate = findNode('id', c.cid, category);
  58. tenderCategory = getCategoryTreeNode(cate, c.value, tenderCategory);
  59. }
  60. }
  61. return tenderCategory;
  62. }
  63. }
  64. return tenderCategory;
  65. }
  66. function convert (category, tenders, ledgerAuditConst, stageAuditConst) {
  67. tenderTree.clearDatas();
  68. const levelCategory = category.filter(function (c) {
  69. return c.level && c.level > 0;
  70. });
  71. for (const t of tenders) {
  72. const parent = (t.category && levelCategory.length > 0) ? loadCategoryTreeNode(t, levelCategory) : null;
  73. const node = {
  74. tid: t.id,
  75. name: t.name,
  76. phase: t.lastStage ? '第' + t.lastStage.order + '期' : '台账',
  77. };
  78. if (ledgerAuditConst && stageAuditConst) {
  79. node.status = t.lastStage ? stageAuditConst.statusString[t.lastStage.status] : ledgerAuditConst.statusString[t.ledger_status];
  80. }
  81. tenderTree.addNode(node, parent);
  82. }
  83. tenderTree.sortTreeNode(false);
  84. return tenderTree;
  85. }
  86. return { convert }
  87. })();