|
@@ -63,26 +63,36 @@ class CalcProgram {
|
|
|
this.calc.calculate(treeNode);
|
|
|
|
|
|
// 存储、刷新本结点、所有父结点
|
|
|
- if (this.calc.changed){
|
|
|
- if (treeNode.parent) {
|
|
|
- projectObj.converseCalculateBills(treeNode.parent);
|
|
|
- };
|
|
|
-
|
|
|
- let data = {ID: treeNode.data.ID, projectID: projectObj.project.ID(), fees: treeNode.data.fees};
|
|
|
- let newDta = {'updateType': 'ut_update', 'updateData': data};
|
|
|
- let newDataArr = [];
|
|
|
- newDataArr.push(newDta);
|
|
|
- projectObj.project.pushNow('', treeNode.sourceType, newDataArr);
|
|
|
- projectObj.mainController.refreshTreeNode([treeNode]);
|
|
|
-
|
|
|
+ if (this.calc.changed) {
|
|
|
+ me.saveAndCalcParents(treeNode);
|
|
|
this.calc.changed = false;
|
|
|
};
|
|
|
};
|
|
|
|
|
|
- gatherCalcItems(treeNode){
|
|
|
+ saveAndCalcParents(treeNode) {
|
|
|
+ if (treeNode.parent) {
|
|
|
+ projectObj.converseCalculateBills(treeNode.parent);
|
|
|
+ };
|
|
|
+
|
|
|
+ let data = {ID: treeNode.data.ID, projectID: projectObj.project.ID(), fees: treeNode.data.fees};
|
|
|
+ let newDta = {'updateType': 'ut_update', 'updateData': data};
|
|
|
+ let newDataArr = [];
|
|
|
+ newDataArr.push(newDta);
|
|
|
+ projectObj.project.pushNow('', treeNode.sourceType, newDataArr);
|
|
|
+ projectObj.mainController.refreshTreeNode([treeNode]);
|
|
|
+ };
|
|
|
+
|
|
|
+ gatherRationFeeTypes(treeNode){
|
|
|
let me = this;
|
|
|
+ let changed = false;
|
|
|
let rst = [];
|
|
|
if (treeNode.sourceType === this.project.Bills.getSourceType()) {
|
|
|
+ if (!treeNode.data.fees) {
|
|
|
+ treeNode.data.fees = [];
|
|
|
+ treeNode.data.feesIndex = {};
|
|
|
+ changed = true;
|
|
|
+ };
|
|
|
+
|
|
|
let rations = this.project.Ration.getRationsByNode(treeNode);
|
|
|
for (let ft of feeType) {
|
|
|
let ftObj = {};
|
|
@@ -97,12 +107,105 @@ class CalcProgram {
|
|
|
ttf = (ttf + parseFloat(ration.feesIndex[ft.type].tenderTotalFee)).toDecimal(me.digitDefault);
|
|
|
};
|
|
|
};
|
|
|
- ftObj.unitFee = uf;
|
|
|
- ftObj.totalFee = tf;
|
|
|
- ftObj.tenderUnitFee = tuf;
|
|
|
- ftObj.tenderTotalFee = ttf;
|
|
|
+ ftObj.unitFee = uf.toDecimal(me.digit);
|
|
|
+ ftObj.totalFee = tf.toDecimal(me.digit);
|
|
|
+ ftObj.tenderUnitFee = tuf.toDecimal(me.digit);
|
|
|
+ ftObj.tenderTotalFee = ttf.toDecimal(me.digit);
|
|
|
+
|
|
|
+ if (!treeNode.data.feesIndex[ftObj.type]){
|
|
|
+ let fee = {
|
|
|
+ 'fieldName': ftObj.type,
|
|
|
+ 'unitFee': ftObj.unitFee,
|
|
|
+ 'totalFee': ftObj.totalFee,
|
|
|
+ 'tenderUnitFee': 0,
|
|
|
+ 'tenderTotalFee': 0
|
|
|
+ };
|
|
|
+ treeNode.data.fees.push(fee);
|
|
|
+ treeNode.data.feesIndex[ftObj.type] = fee;
|
|
|
+ changed = true;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if (treeNode.data.feesIndex[ftObj.type].unitFee != ftObj.unitFee){
|
|
|
+ treeNode.data.feesIndex[ftObj.type].unitFee = ftObj.unitFee;
|
|
|
+ changed = true;
|
|
|
+ };
|
|
|
+
|
|
|
+ if (treeNode.data.feesIndex[ftObj.type].totalFee != ftObj.totalFee){
|
|
|
+ treeNode.data.feesIndex[ftObj.type].totalFee = ftObj.totalFee;
|
|
|
+ changed = true;
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
+ rst.push(ftObj);
|
|
|
+ };
|
|
|
+
|
|
|
+ if (changed) {
|
|
|
+ me.saveAndCalcParents(treeNode);
|
|
|
+ changed = false;
|
|
|
+ };
|
|
|
+ };
|
|
|
+ return rst;
|
|
|
+ };
|
|
|
+
|
|
|
+ gatherBillFeeTypes(treeNode){
|
|
|
+ let me = this;
|
|
|
+ let changed = false;
|
|
|
+ let rst = [];
|
|
|
+ if (treeNode.sourceType === this.project.Bills.getSourceType()) {
|
|
|
+ if (!treeNode.data.fees) {
|
|
|
+ treeNode.data.fees = [];
|
|
|
+ treeNode.data.feesIndex = {};
|
|
|
+ changed = true;
|
|
|
+ };
|
|
|
+
|
|
|
+ for (let ft of feeType) {
|
|
|
+ let ftObj = {};
|
|
|
+ ftObj.type = ft.type;
|
|
|
+ ftObj.name = ft.name;
|
|
|
+ let uf = 0, tf = 0, tuf = 0, ttf = 0;
|
|
|
+ for (let node of treeNode.children) {
|
|
|
+ if (node.data.feesIndex && node.data.feesIndex[ft.type]) {
|
|
|
+ uf = (uf + parseFloat(node.data.feesIndex[ft.type].unitFee)).toDecimal(me.digitDefault);
|
|
|
+ tf = (tf + parseFloat(node.data.feesIndex[ft.type].totalFee)).toDecimal(me.digitDefault);
|
|
|
+ tuf = (tuf + parseFloat(node.data.feesIndex[ft.type].tenderUnitFee)).toDecimal(me.digitDefault);
|
|
|
+ ttf = (ttf + parseFloat(node.data.feesIndex[ft.type].tenderTotalFee)).toDecimal(me.digitDefault);
|
|
|
+ };
|
|
|
+ };
|
|
|
+ ftObj.unitFee = uf.toDecimal(me.digit);
|
|
|
+ ftObj.totalFee = tf.toDecimal(me.digit);
|
|
|
+ ftObj.tenderUnitFee = tuf.toDecimal(me.digit);
|
|
|
+ ftObj.tenderTotalFee = ttf.toDecimal(me.digit);
|
|
|
+
|
|
|
+ if (!treeNode.data.feesIndex[ftObj.type]){
|
|
|
+ let fee = {
|
|
|
+ 'fieldName': ftObj.type,
|
|
|
+ 'unitFee': ftObj.unitFee,
|
|
|
+ 'totalFee': ftObj.totalFee,
|
|
|
+ 'tenderUnitFee': 0,
|
|
|
+ 'tenderTotalFee': 0
|
|
|
+ };
|
|
|
+ treeNode.data.fees.push(fee);
|
|
|
+ treeNode.data.feesIndex[ftObj.type] = fee;
|
|
|
+ changed = true;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if (treeNode.data.feesIndex[ftObj.type].unitFee != ftObj.unitFee){
|
|
|
+ treeNode.data.feesIndex[ftObj.type].unitFee = ftObj.unitFee;
|
|
|
+ changed = true;
|
|
|
+ };
|
|
|
+
|
|
|
+ if (treeNode.data.feesIndex[ftObj.type].totalFee != ftObj.totalFee){
|
|
|
+ treeNode.data.feesIndex[ftObj.type].totalFee = ftObj.totalFee;
|
|
|
+ changed = true;
|
|
|
+ };
|
|
|
+ };
|
|
|
|
|
|
rst.push(ftObj);
|
|
|
+
|
|
|
+ if (changed) {
|
|
|
+ me.saveAndCalcParents(treeNode);
|
|
|
+ changed = false;
|
|
|
+ };
|
|
|
};
|
|
|
};
|
|
|
return rst;
|