|  | @@ -247,6 +247,45 @@ let nodeTools = {
 | 
												
													
														
															|  |      },
 |  |      },
 | 
												
													
														
															|  |      getNodeByID: function (ID){
 |  |      getNodeByID: function (ID){
 | 
												
													
														
															|  |          return cbTools.getNodeByID(ID);
 |  |          return cbTools.getNodeByID(ID);
 | 
												
													
														
															|  | 
 |  | +    },
 | 
												
													
														
															|  | 
 |  | +    cutNodeForSave(treeNode){
 | 
												
													
														
															|  | 
 |  | +        /*  subType、quantity、calcBase、programID、marketUnitFee等等字段较为特殊,它们的改变一定会触发计算并导致计算
 | 
												
													
														
															|  | 
 |  | +            结果的变化,从而引发保存动作。将这些字段放在该位置跟计算结果一起保存,可减少前端跟后端的通讯频率。              */
 | 
												
													
														
															|  | 
 |  | +        let data = {
 | 
												
													
														
															|  | 
 |  | +            projectID: projectObj.project.ID(),
 | 
												
													
														
															|  | 
 |  | +            ID: treeNode.data.ID,
 | 
												
													
														
															|  | 
 |  | +            unit: treeNode.data.unit,   //对清单来说,改变单位,工程量精度会跟着改变从而影响计算。
 | 
												
													
														
															|  | 
 |  | +            subType: treeNode.data.subType,
 | 
												
													
														
															|  | 
 |  | +            quantity: treeNode.data.quantity,
 | 
												
													
														
															|  | 
 |  | +            calcBase: treeNode.data.calcBase,
 | 
												
													
														
															|  | 
 |  | +            calcBaseValue: treeNode.data.calcBaseValue,
 | 
												
													
														
															|  | 
 |  | +            programID: treeNode.data.programID,
 | 
												
													
														
															|  | 
 |  | +            marketUnitFee: treeNode.data.marketUnitFee,
 | 
												
													
														
															|  | 
 |  | +            marketTotalFee: treeNode.data.marketTotalFee,
 | 
												
													
														
															|  | 
 |  | +            fees: treeNode.data.fees,
 | 
												
													
														
															|  | 
 |  | +            isFromDetail:treeNode.data.isFromDetail,
 | 
												
													
														
															|  | 
 |  | +            feeRate: treeNode.data.feeRate,
 | 
												
													
														
															|  | 
 |  | +            feeRateID: treeNode.data.feeRateID,
 | 
												
													
														
															|  | 
 |  | +            contain: treeNode.data.contain,
 | 
												
													
														
															|  | 
 |  | +            quantityEXP: treeNode.data.quantityEXP
 | 
												
													
														
															|  | 
 |  | +        };
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +        // 定额大类
 | 
												
													
														
															|  | 
 |  | +        if (nodeTools.isRationCategory(treeNode)) {
 | 
												
													
														
															|  | 
 |  | +            data.isSubcontract = treeNode.data.isSubcontract;
 | 
												
													
														
															|  | 
 |  | +        };
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +        //定额类型的工料机做特殊处理
 | 
												
													
														
															|  | 
 |  | +        if(nodeTools.isGljRation(treeNode)){
 | 
												
													
														
															|  | 
 |  | +            data.code = treeNode.data.code;
 | 
												
													
														
															|  | 
 |  | +            data.projectGLJID = treeNode.data.projectGLJID;
 | 
												
													
														
															|  | 
 |  | +            delete data.marketUnitFee;
 | 
												
													
														
															|  | 
 |  | +        };
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +        if (treeNode.data.summaryFees)
 | 
												
													
														
															|  | 
 |  | +            data.summaryFees = treeNode.data.summaryFees;
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +        return data;
 | 
												
													
														
															|  |      }
 |  |      }
 | 
												
													
														
															|  |  };
 |  |  };
 | 
												
													
														
															|  |  
 |  |  
 | 
												
											
												
													
														
															|  | @@ -494,16 +533,28 @@ const rationCalcBaser = {
 | 
												
													
														
															|  |          return assistCalcer.estimateFee(node, true);
 |  |          return assistCalcer.estimateFee(node, true);
 | 
												
													
														
															|  |      },
 |  |      },
 | 
												
													
														
															|  |      '分包定额基价人工费': function (node) {
 |  |      '分包定额基价人工费': function (node) {
 | 
												
													
														
															|  | 
 |  | +        if (node.data.isSubcontract) return this.定额基价人工费(node)
 | 
												
													
														
															|  | 
 |  | +        else return 0;
 | 
												
													
														
															|  |      },
 |  |      },
 | 
												
													
														
															|  |      '分包定额基价材料费': function (node) {
 |  |      '分包定额基价材料费': function (node) {
 | 
												
													
														
															|  | 
 |  | +        if (node.data.isSubcontract) return this.定额基价材料费(node)
 | 
												
													
														
															|  | 
 |  | +        else return 0;
 | 
												
													
														
															|  |      },
 |  |      },
 | 
												
													
														
															|  |      '分包定额基价机械费': function (node) {
 |  |      '分包定额基价机械费': function (node) {
 | 
												
													
														
															|  | 
 |  | +        if (node.data.isSubcontract) return this.定额基价机械费(node)
 | 
												
													
														
															|  | 
 |  | +        else return 0;
 | 
												
													
														
															|  |      },
 |  |      },
 | 
												
													
														
															|  |      '分包主材费': function (node) {
 |  |      '分包主材费': function (node) {
 | 
												
													
														
															|  | 
 |  | +        if (node.data.isSubcontract) return this.主材费(node)
 | 
												
													
														
															|  | 
 |  | +        else return 0;
 | 
												
													
														
															|  |      },
 |  |      },
 | 
												
													
														
															|  |      '分包设备费': function (node) {
 |  |      '分包设备费': function (node) {
 | 
												
													
														
															|  | 
 |  | +        if (node.data.isSubcontract) return this.设备费(node)
 | 
												
													
														
															|  | 
 |  | +        else return 0;
 | 
												
													
														
															|  |      },
 |  |      },
 | 
												
													
														
															|  |      '分包人工工日': function (node) {
 |  |      '分包人工工日': function (node) {
 | 
												
													
														
															|  | 
 |  | +        if (node.data.isSubcontract) return this.人工工日(node)
 | 
												
													
														
															|  | 
 |  | +        else return 0;
 | 
												
													
														
															|  |      }
 |  |      }
 | 
												
													
														
															|  |  };
 |  |  };
 | 
												
													
														
															|  |  
 |  |  
 | 
												
											
												
													
														
															|  | @@ -889,37 +940,10 @@ class CalcProgram {
 | 
												
													
														
															|  |          }
 |  |          }
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |          let me = this;
 |  |          let me = this;
 | 
												
													
														
															|  | -
 |  | 
 | 
												
													
														
															|  |          me.project.beginUpdate('');
 |  |          me.project.beginUpdate('');
 | 
												
													
														
															|  |          for (let node of treeNodes){
 |  |          for (let node of treeNodes){
 | 
												
													
														
															|  |              if (node.changed){
 |  |              if (node.changed){
 | 
												
													
														
															|  | -                let data = {
 |  | 
 | 
												
													
														
															|  | -                    ID: node.data.ID,
 |  | 
 | 
												
													
														
															|  | -                    projectID: me.project.ID(),
 |  | 
 | 
												
													
														
															|  | -                    unit:node.data.unit,//对清单来说,改变单位,工程量精度会跟着改变从而影响计算。
 |  | 
 | 
												
													
														
															|  | -                    /*  subType、quantity、calcBase、programID、marketUnitFee等等字段较为特殊,它们的改变一定会触发计算并导致计算
 |  | 
 | 
												
													
														
															|  | -                    结果的变化,从而引发保存动作。将这些字段放在该位置跟计算结果一起保存,可减少前端跟后端的通讯频率。              */
 |  | 
 | 
												
													
														
															|  | -                    subType: node.data.subType,
 |  | 
 | 
												
													
														
															|  | -                    quantity: node.data.quantity,
 |  | 
 | 
												
													
														
															|  | -                    calcBase: node.data.calcBase,
 |  | 
 | 
												
													
														
															|  | -                    calcBaseValue: node.data.calcBaseValue,
 |  | 
 | 
												
													
														
															|  | -                    programID: node.data.programID,
 |  | 
 | 
												
													
														
															|  | -                    marketUnitFee: node.data.marketUnitFee,
 |  | 
 | 
												
													
														
															|  | -                    marketTotalFee: node.data.marketTotalFee,
 |  | 
 | 
												
													
														
															|  | -                    fees: node.data.fees,
 |  | 
 | 
												
													
														
															|  | -                    isFromDetail:node.data.isFromDetail,
 |  | 
 | 
												
													
														
															|  | -                    feeRate: node.data.feeRate,
 |  | 
 | 
												
													
														
															|  | -                    feeRateID: node.data.feeRateID,
 |  | 
 | 
												
													
														
															|  | -                    contain:node.data.contain,
 |  | 
 | 
												
													
														
															|  | -                    quantityEXP:node.data.quantityEXP
 |  | 
 | 
												
													
														
															|  | -                };
 |  | 
 | 
												
													
														
															|  | -                if (node.data.summaryFees) data.summaryFees = node.data.summaryFees;
 |  | 
 | 
												
													
														
															|  | -                if(node.sourceType==ModuleNames.ration && node.data.type==rationType.gljRation){//定额类型的工料机做特殊处理
 |  | 
 | 
												
													
														
															|  | -                    data.code=node.data.code;
 |  | 
 | 
												
													
														
															|  | -                    data.projectGLJID = node.data.projectGLJID;
 |  | 
 | 
												
													
														
															|  | -                    delete data.marketUnitFee;
 |  | 
 | 
												
													
														
															|  | -                }
 |  | 
 | 
												
													
														
															|  | -
 |  | 
 | 
												
													
														
															|  | 
 |  | +                let data = nodeTools.cutNodeForSave(node);
 | 
												
													
														
															|  |                  let newData = {'updateType': 'ut_update', 'updateData': data};
 |  |                  let newData = {'updateType': 'ut_update', 'updateData': data};
 | 
												
													
														
															|  |                  me.project.push(node.sourceType, [newData]);
 |  |                  me.project.push(node.sourceType, [newData]);
 | 
												
													
														
															|  |              }
 |  |              }
 |