|
@@ -71,11 +71,36 @@ let cbTools = {
|
|
|
return rst;
|
|
|
},
|
|
|
//根据公式获取相关的节点
|
|
|
- getNodesByExp: function (exp) {
|
|
|
+ getNodesByExp: function (exp, formulaNodesArr) {
|
|
|
let rst = [], ids = [];
|
|
|
if(this.isUnDef(exp) || exp === ''){
|
|
|
return rst;
|
|
|
}
|
|
|
+ if(exp.includes('{税前工程造价}')){
|
|
|
+ let findChildNodes = [];
|
|
|
+ let subEngingeering = this.findBill(fixedFlag.SUB_ENGINERRING) ? this.getNodeByID(this.findBill(fixedFlag.SUB_ENGINERRING).ID) : null,
|
|
|
+ measure = this.findBill(fixedFlag.MEASURE) ? this.getNodeByID(this.findBill(fixedFlag.MEASURE).ID) : null,
|
|
|
+ other = this.findBill(fixedFlag.OTHER) ? this.getNodeByID(this.findBill(fixedFlag.OTHER).ID) : null,
|
|
|
+ charge = this.findBill(fixedFlag.CHARGE) ? this.getNodeByID(this.findBill(fixedFlag.CHARGE).ID) : null;
|
|
|
+ if(subEngingeering){
|
|
|
+ findChildNodes.push(subEngingeering);
|
|
|
+ }
|
|
|
+ if(measure){
|
|
|
+ findChildNodes.push(measure);
|
|
|
+ }
|
|
|
+ if(other){
|
|
|
+ findChildNodes.push(other);
|
|
|
+ }
|
|
|
+ if(charge){
|
|
|
+ findChildNodes.push(charge);
|
|
|
+ }
|
|
|
+ //
|
|
|
+ let childrenNodes = calcTools.getChildrenFormulaNodes(formulaNodesArr, findChildNodes);
|
|
|
+ for(let cNode of childrenNodes){
|
|
|
+ ids.push(cNode.data.ID);
|
|
|
+ }
|
|
|
+ rst = rst.concat(childrenNodes);
|
|
|
+ }
|
|
|
//获取表达式中的基数和行引用
|
|
|
let figureF = cbParser.getFigureF(cbParser.getFigure(exp), cbParser.getUID(cbParser.getFIDArr(exp)));
|
|
|
for(let i = 0, len = figureF.length; i < len; i++){
|
|
@@ -309,7 +334,7 @@ let cbTools = {
|
|
|
for (let node of nodes){
|
|
|
if (orderArr.includes(node)) continue; // 已排过序的节点则跳过
|
|
|
if (node.data.calcBase){
|
|
|
- let subNodes = cbTools.getNodesByExp(node.data.calcBase);
|
|
|
+ let subNodes = cbTools.getNodesByExp(node.data.calcBase, nodesArr);
|
|
|
recursionNode(subNodes);
|
|
|
};
|
|
|
if (nodesArr.includes(node) && !orderArr.includes(node)) orderArr.push(node);
|