| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // 农村公路养护2020
- // 覆盖标准清单添加逻辑(实质上是覆盖获取对比节点片段方法)
- (() => {
- const functionMap = {
- /**
- * 获取操作<<农村公路养护预算费用库>>时的节点片段
- * 片段为主树根节点(与其他费用定额的添加逻辑一致)
- */
- budeget() {
- return { parent: null, mainTreeFragment: projectObj.project.Bills.tree.roots };
- },
- /**
- * 获取操作<<农村公路小修工程量清单库>>时的节点片段
- * 1.主树焦点行必须在固定清单“小修费”的子节点xx项目清单范围内,范围内指清单本身及其所有后代节点
- * 小修费下某清单为xx项目清单的判定规则:小修费下名称不为“道路”、“桥梁”、“隧道”的清单
- * 2.若焦点行在无效范围中,插入时弹出提示
- */
- minorRepair() {
- const selected = projectObj.project.mainTree.selected;
- // 获取焦点所属的小修费下的xx项目(同时不为“道路”、“桥梁”、“隧道”)
- const targetNode = getTargetNode(selected);
- if (!targetNode) {
- return { errMsg: '当前位置不可添加小修工程量清单,请选中小修费下的项目名称,再添加工程量清单。' };
- }
- return { parent: targetNode, mainTreeFragment: targetNode.children || [] };
- function getTargetNode(node) {
- const exclusion = ['道路', '桥梁', '隧道'];
- while (node) {
- const isTheNode = node.parent && node.parent.getFlag() === fixedFlag.MINOR_REPAIR_FEE && !exclusion.includes(node.data.name);
- if (isTheNode) {
- return node;
- }
- node = node.parent;
- }
- return null;
- }
- },
- /**
- * 获取操作<<农村公路养护工程工程量清单>>的节点片段
- * 1.主树焦点行必须在固定清单“预防养护费”或者“修复养护费”下的建筑安装工程费清单范围内(多少层都可以,子代、孙子代...),范围内指清单本身及其所有后代节点
- * 2.若焦点行在无效范围中,插入时弹出提示
- */
- maintain() {
- const selected = projectObj.project.mainTree.selected;
- const targetNode = getTargetNode(selected);
- if (!targetNode) {
- return { errMsg: '当前位置不可添加养护工程量清单,请选择中建筑安装工程费,再添加工程量清单。' };
- }
- return { parent: targetNode, mainTreeFragment: targetNode.children || [] };
- function getTargetNode(node) {
- const targetName = '建筑安装工程费';
- while (node) {
- const isTheNode = node.data.name === targetName && node.isBelongToFlags([fixedFlag.PREVENTIVE_MAINTENANCE_FEE, REPAIR_MAINTENANCE_FEE]);
- if (isTheNode) {
- return node;
- }
- node = node.parent;
- }
- return null;
- }
- }
- };
- // 获取当前操作的清单库的方法
- function getFragmentFunction() {
- const selLibText = $('#stdBillsGuidanceLibSelect').text();
- if (/农村公路养护预算费用/.test(selLibText)) {
- return functionMap.budeget;
- } else if (/农村公路小修工程量清单/.test(selLibText)) {
- return functionMap.minorRepair;
- } else if (/农村公路养护工程工程量清单/.test(selLibText)) {
- return functionMap.maintain;
- } else {
- return null;
- }
- }
- // 获取对比的主树节点片段
- function overwrite() {
- if (typeof billsGuidance !== 'undefined') {
- // 不同的清单库插入获取片段都不同,先获取是哪个库进行操作
- const func = getFragmentFunction();
- if (func) {
- billsGuidance.overwrite.getFragment = func;
- }
- }
- }
- overwrite();
- })();
|