nongcun_2020.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. // 农村公路养护2020
  2. // 覆盖标准清单添加逻辑(实质上是覆盖获取对比节点片段方法)
  3. (() => {
  4. const functionMap = {
  5. /**
  6. * 获取操作<<农村公路养护预算费用库>>时的节点片段
  7. * 片段为主树根节点(与其他费用定额的添加逻辑一致)
  8. */
  9. budget() {
  10. return { parent: null, mainTreeFragment: projectObj.project.Bills.tree.roots };
  11. },
  12. /**
  13. * 获取操作<<农村公路小修工程量清单库>>时的节点片段
  14. * 1.主树焦点行必须在固定清单“小修费”的子节点xx项目清单范围内,范围内指清单本身及其所有后代节点
  15. * 小修费下某清单为xx项目清单的判定规则:小修费下名称不为“道路”、“桥梁”、“隧道”的清单
  16. * 2.若焦点行在无效范围中,插入时弹出提示
  17. */
  18. minorRepair() {
  19. const selected = projectObj.project.mainTree.selected;
  20. // 获取焦点所属的小修费下的xx项目(同时不为“道路”、“桥梁”、“隧道”)
  21. const targetNode = getTargetNode(selected);
  22. if (!targetNode) {
  23. return { errMsg: '当前位置不可添加小修工程量清单,请选中小修费下的项目名称,再添加工程量清单。' };
  24. }
  25. return { parent: targetNode, mainTreeFragment: targetNode.children || [] };
  26. function getTargetNode(node) {
  27. const exclusion = ['道路', '桥梁', '隧道'];
  28. while (node) {
  29. const isTheNode = node.parent && node.parent.getFlag() === fixedFlag.MINOR_REPAIR_FEE && !exclusion.includes(node.data.name);
  30. if (isTheNode) {
  31. return node;
  32. }
  33. node = node.parent;
  34. }
  35. return null;
  36. }
  37. },
  38. /**
  39. * 获取操作<<农村公路养护工程工程量清单>>的节点片段
  40. * 1.主树焦点行必须在固定清单“预防养护费”或者“修复养护费”下的建筑安装工程费清单范围内(多少层都可以,子代、孙子代...),范围内指清单本身及其所有后代节点
  41. * 2.若焦点行在无效范围中,插入时弹出提示
  42. */
  43. maintain() {
  44. const selected = projectObj.project.mainTree.selected;
  45. const targetNode = getTargetNode(selected);
  46. if (!targetNode) {
  47. return { errMsg: '当前位置不可添加养护工程量清单,请选中建筑安装工程费,再添加工程量清单。' };
  48. }
  49. return { parent: targetNode, mainTreeFragment: targetNode.children || [] };
  50. function getTargetNode(node) {
  51. const targetName = '建筑安装工程费';
  52. while (node) {
  53. const isTheNode = node.data.name === targetName && node.isBelongToFlags([fixedFlag.PREVENTIVE_MAINTENANCE_FEE, fixedFlag.REPAIR_MAINTENANCE_FEE]);
  54. if (isTheNode) {
  55. return node;
  56. }
  57. node = node.parent;
  58. }
  59. return null;
  60. }
  61. }
  62. };
  63. // 获取当前操作的清单库的方法
  64. function getFragmentFunction() {
  65. const selLibText = $('#stdBillsGuidanceLibSelect').find('option:selected').text();
  66. if (/农村公路养护预算费用/.test(selLibText)) {
  67. return functionMap.budget;
  68. } else if (/农村公路小修工程量清单/.test(selLibText)) {
  69. return functionMap.minorRepair;
  70. } else if (/农村公路养护工程工程量清单/.test(selLibText)) {
  71. return functionMap.maintain;
  72. } else {
  73. return functionMap.budget;
  74. }
  75. }
  76. // 获取对比的主树节点片段
  77. function overwrite() {
  78. if (typeof billsGuidance !== 'undefined') {
  79. billsGuidance.overwrite.getFragment = () => {
  80. // 不同的清单库插入获取片段都不同,先获取是哪个库进行操作
  81. const func = getFragmentFunction();
  82. return func();
  83. };
  84. }
  85. }
  86. overwrite();
  87. })();
  88. // 清单基数(仅能使用行引用)
  89. if (typeof baseFigureMap !== 'undefined') {
  90. baseFigureMap.budget = {};
  91. baseFigureMap.boq = {};
  92. }
  93. if (typeof baseFigureTemplate !== 'undefined') {
  94. baseFigureTemplate.budget = {};
  95. baseFigureTemplate.boq = {};
  96. }
  97. // 项目管理界面
  98. if (typeof projTreeObj !== 'undefined') {
  99. // 新建分段,隐藏项目类别、养护类别、费用标准
  100. $('#val-type-group').hide();
  101. $('#tender-engineering-group').hide();
  102. $('#tender-feeStandard-group').hide();
  103. // 项目管理隐藏项目类别列
  104. projTreeObj.setting.header = [
  105. {name: '工程列表', dataCode: 'name', width: 300, vAlign: 'center', hAlign: 'left'},
  106. {name: '总造价', dataCode: 'totalCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0'},
  107. {name: '单价文件', dataCode: 'unitPriceFile', width: 140, vAlign: 'center', hAlign: 'left'},
  108. {name: '费率文件', dataCode: 'feeRateFile', width: 140, vAlign: 'center', hAlign: 'left'},
  109. {name: '创建日期', dataCode: 'createDateTime', width: 100, vAlign: 'center', hAlign: 'center'}
  110. ];
  111. }
  112. if (typeof module !== 'undefined') {
  113. // 农村公路养护(2020),项目属性-小数位数,清单和定额的合价应默认为2。(其他编办保持不变)
  114. const defaultDecimal = {
  115. bills: { unitPrice: 2, totalPrice: 2 },
  116. ration: { quantity: 3, unitPrice: 2, totalPrice: 2 },
  117. glj: { quantity: 3, unitPriceHasMix: 2, unitPrice: 3 },
  118. feeRate: 3,
  119. quantity_detail: 4,
  120. material:5,
  121. process: 6
  122. };
  123. // 农村公路养护(2020),预算项目中,计算方式应默认为反算。(其他省份保持不变)
  124. const defaultCalcMode = 1;
  125. module.exports = {
  126. progression: [],
  127. deficiency: {},
  128. defaultDecimal,
  129. defaultCalcMode
  130. };
  131. }