rpt_tpl_association.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. const associationOprObj = {
  2. treeObj: null,
  3. iniAssociateNodes: function(allTopTplNodes) {
  4. // 同类表初始化
  5. const me = associationOprObj;
  6. zTreeHelper.createTreeDirectly(
  7. allTopTplNodes,
  8. associationSetting,
  9. "tpl_data_info_association",
  10. associationOprObj
  11. );
  12. me.treeObj.expandAll(true);
  13. const topNodes = me.treeObj.getNodes();
  14. const private_setup_checked = function (itemNode) {
  15. if (itemNode.nodeType === RT.NodeType.NODE) {
  16. me.treeObj.setChkDisabled(itemNode, true);
  17. } else if (itemNode.nodeType === RT.NodeType.TEMPLATE) {
  18. me.treeObj.checkNode(itemNode, false); // 在初始化时,默认是不选;只有用户选择了具体的某一个表时,才会更新选择
  19. }
  20. if (itemNode.items && itemNode.items.length > 0) {
  21. for (let subItem of itemNode.items) {
  22. private_setup_checked(subItem);
  23. }
  24. }
  25. };
  26. for (let node of topNodes) {
  27. me.treeObj.setChkDisabled(node, true);
  28. if (node.items && node.items.length > 0) {
  29. for (let item of node.items) {
  30. me.treeObj.setChkDisabled(item, true);
  31. private_setup_checked(item);
  32. }
  33. }
  34. }
  35. },
  36. refreshNodes: function (refNode) {
  37. const me = this;
  38. // 不管三七二十一,先把所有节点的check给清除
  39. const setUnCheck = (itemNode) => {
  40. me.treeObj.checkNode(itemNode, false);
  41. if (itemNode.items && itemNode.items.length > 0) {
  42. for (let subItem of itemNode.items) {
  43. setUnCheck(subItem);
  44. }
  45. }
  46. };
  47. const topNodes = me.treeObj.getNodes();
  48. topNodes.forEach(node => {
  49. setUnCheck(node);
  50. });
  51. const checkRefTpl = (itemNodes, associateRefIds) => {
  52. for (const itemNode of itemNodes) {
  53. if (itemNode.nodeType === RT.NodeType.TEMPLATE) {
  54. if (associateRefIds.includes(itemNode.refId)) {
  55. me.treeObj.checkNode(itemNode, true);
  56. }
  57. } else {
  58. if (itemNode.items && itemNode.items.length > 0) {
  59. checkRefTpl(itemNode.items, associateRefIds);
  60. }
  61. }
  62. }
  63. };
  64. $("#hasAssociationChk").get(0).checked = false;
  65. if (refNode && refNode.nodeType === RT.NodeType.TEMPLATE) {
  66. if (refNode.associateRefIds && refNode.associateRefIds.length > 0) {
  67. $("#hasAssociationChk").get(0).checked = true;
  68. checkRefTpl(topNodes, refNode.associateRefIds);
  69. }
  70. }
  71. },
  72. getCheckedRefIds: function() {
  73. const me = associationOprObj;
  74. const rst = [];
  75. const getCheckedId = (itemNodes) => {
  76. for (const itemNode of itemNodes) {
  77. if (itemNode.nodeType === RT.NodeType.TEMPLATE && itemNode.checked) {
  78. rst.push(itemNode.refId);
  79. }
  80. if (itemNode.items && itemNode.items.length > 0) {
  81. getCheckedId(itemNode.items);
  82. }
  83. }
  84. };
  85. if (me.treeObj) {
  86. const topNodes = me.treeObj.getNodes();
  87. getCheckedId(topNodes);
  88. }
  89. return rst;
  90. },
  91. onCheck: function(event, treeId, treeNode) {
  92. const me = associationOprObj;
  93. if (zTreeOprObj.currentNode) {
  94. // 不考虑细节交互了,直接从头到尾扫一遍,重新整理associateRefIds信息,最后更新
  95. zTreeOprObj.currentNode.associateRefIds = me.getCheckedRefIds();
  96. if (zTreeOprObj.currentNode.associateRefIds.length > 0) {
  97. $("#hasAssociationChk").get(0).checked = true;
  98. } else {
  99. $("#hasAssociationChk").get(0).checked = false;
  100. }
  101. const topPNode = zTreeOprObj.getParentNodeByNodeLevel(zTreeOprObj.currentNode, NODE_LEVEL_COMPILATION_NEW);
  102. const newTopNode = zTreeOprObj.buildRootNodeDoc(topPNode);
  103. zTreeOprObj.updateTreeRootNode(newTopNode, true, function (rst) {
  104. if (!rst) {
  105. alert("修改同类表请求失败!");
  106. }
  107. });
  108. }
  109. },
  110. };