// 农村公路养护2020 // 覆盖标准清单添加逻辑(实质上是覆盖获取对比节点片段方法) (() => { const functionMap = { /** * 获取操作<<农村公路养护预算费用库>>时的节点片段 * 片段为主树根节点(与其他费用定额的添加逻辑一致) */ budget() { 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, fixedFlag.REPAIR_MAINTENANCE_FEE]); if (isTheNode) { return node; } node = node.parent; } return null; } } }; // 获取当前操作的清单库的方法 function getFragmentFunction() { const selLibText = $('#stdBillsGuidanceLibSelect').find('option:selected').text(); if (/农村公路养护预算费用/.test(selLibText)) { return functionMap.budget; } else if (/农村公路小修工程量清单/.test(selLibText)) { return functionMap.minorRepair; } else if (/农村公路养护工程工程量清单/.test(selLibText)) { return functionMap.maintain; } else { return functionMap.budget; } } // 获取对比的主树节点片段 function overwrite() { if (typeof billsGuidance !== 'undefined') { billsGuidance.overwrite.getFragment = () => { // 不同的清单库插入获取片段都不同,先获取是哪个库进行操作 const func = getFragmentFunction(); return func(); }; } } overwrite(); })(); // 清单基数(仅能使用行引用) if (typeof baseFigureMap !== 'undefined') { baseFigureMap.budget = {}; baseFigureMap.boq = {}; } if (typeof baseFigureTemplate !== 'undefined') { baseFigureTemplate.budget = {}; baseFigureTemplate.boq = {}; } // 项目管理界面 if (typeof projTreeObj !== 'undefined') { // 新建分段,隐藏项目类别、养护类别、费用标准 $('#val-type-group').hide(); $('#tender-engineering-group').hide(); $('#tender-feeStandard-group').hide(); // 项目管理隐藏项目类别列 projTreeObj.setting.header = [ {name: '工程列表', dataCode: 'name', width: 300, vAlign: 'center', hAlign: 'left'}, {name: '总造价', dataCode: 'totalCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0'}, {name: '单价文件', dataCode: 'unitPriceFile', width: 140, vAlign: 'center', hAlign: 'left'}, {name: '费率文件', dataCode: 'feeRateFile', width: 140, vAlign: 'center', hAlign: 'left'}, {name: '创建日期', dataCode: 'createDateTime', width: 100, vAlign: 'center', hAlign: 'center'} ]; } if (typeof module !== 'undefined') { // 农村公路养护(2020),项目属性-小数位数,清单和定额的合价应默认为2。(其他编办保持不变) const defaultDecimal = { bills: { unitPrice: 2, totalPrice: 2 }, ration: { quantity: 3, unitPrice: 2, totalPrice: 2 }, glj: { quantity: 3, unitPriceHasMix: 2, unitPrice: 3 }, feeRate: 3, quantity_detail: 4, material:5, process: 6 }; // 农村公路养护(2020),预算项目中,计算方式应默认为反算。(其他省份保持不变) const defaultCalcMode = 1; module.exports = { progression: [], deficiency: {}, defaultDecimal, defaultCalcMode }; }