tenders2tree.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. stageCount: t.lastStage ? t.lastStage.order : 0,
  78. };
  79. if (ledgerAuditConst && stageAuditConst) {
  80. node.status = t.lastStage ? stageAuditConst.statusString[t.lastStage.status] : ledgerAuditConst.statusString[t.ledger_status];
  81. }
  82. tenderTree.addNode(node, parent);
  83. }
  84. tenderTree.sortTreeNode(false);
  85. return tenderTree;
  86. }
  87. return { convert }
  88. })();