|
@@ -52,6 +52,7 @@ class CalcProgram {
|
|
|
};
|
|
|
|
|
|
calculate(treeNode){
|
|
|
+ let me = this;
|
|
|
if (treeNode.sourceType === this.project.Ration.getSourceType()) {
|
|
|
treeNode.data.gljList = this.project.ration_glj.getGljArrByRation(treeNode.data.ID);
|
|
|
}
|
|
@@ -63,10 +64,11 @@ class CalcProgram {
|
|
|
this.calc.calculate(treeNode);
|
|
|
|
|
|
// 存储、刷新本结点、所有父结点
|
|
|
- if (this.calc.changed) {
|
|
|
+ if (treeNode.changed) {
|
|
|
me.saveAndCalcParents(treeNode);
|
|
|
- this.calc.changed = false;
|
|
|
+ delete treeNode.changed;
|
|
|
};
|
|
|
+
|
|
|
};
|
|
|
|
|
|
saveAndCalcParents(treeNode) {
|
|
@@ -82,16 +84,46 @@ class CalcProgram {
|
|
|
projectObj.mainController.refreshTreeNode([treeNode]);
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+ initFees(treeNode){
|
|
|
+ if (!treeNode.data.fees) {
|
|
|
+ treeNode.data.fees = [];
|
|
|
+ treeNode.data.feesIndex = {};
|
|
|
+ treeNode.changed = true;
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
+ checkFee(treeNode, ftObj){
|
|
|
+ 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;
|
|
|
+ treeNode.changed = true;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if (treeNode.data.feesIndex[ftObj.type].unitFee != ftObj.unitFee){
|
|
|
+ treeNode.data.feesIndex[ftObj.type].unitFee = ftObj.unitFee;
|
|
|
+ treeNode.changed = true;
|
|
|
+ };
|
|
|
+
|
|
|
+ if (treeNode.data.feesIndex[ftObj.type].totalFee != ftObj.totalFee){
|
|
|
+ treeNode.data.feesIndex[ftObj.type].totalFee = ftObj.totalFee;
|
|
|
+ treeNode.changed = true;
|
|
|
+ };
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
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;
|
|
|
- };
|
|
|
+ me.initFees(treeNode);
|
|
|
|
|
|
let rations = this.project.Ration.getRationsByNode(treeNode);
|
|
|
for (let ft of feeType) {
|
|
@@ -112,36 +144,14 @@ class CalcProgram {
|
|
|
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;
|
|
|
- };
|
|
|
- };
|
|
|
+ me.checkFee(treeNode, ftObj);
|
|
|
|
|
|
rst.push(ftObj);
|
|
|
};
|
|
|
|
|
|
- if (changed) {
|
|
|
+ if (treeNode.changed) {
|
|
|
me.saveAndCalcParents(treeNode);
|
|
|
- changed = false;
|
|
|
+ delete treeNode.changed;
|
|
|
};
|
|
|
};
|
|
|
return rst;
|
|
@@ -149,14 +159,9 @@ class CalcProgram {
|
|
|
|
|
|
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;
|
|
|
- };
|
|
|
+ me.initFees(treeNode);
|
|
|
|
|
|
for (let ft of feeType) {
|
|
|
let ftObj = {};
|
|
@@ -176,36 +181,13 @@ class CalcProgram {
|
|
|
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;
|
|
|
- };
|
|
|
- };
|
|
|
-
|
|
|
+ me.checkFee(treeNode, ftObj);
|
|
|
rst.push(ftObj);
|
|
|
+ };
|
|
|
|
|
|
- if (changed) {
|
|
|
- me.saveAndCalcParents(treeNode);
|
|
|
- changed = false;
|
|
|
- };
|
|
|
+ if (treeNode.changed) {
|
|
|
+ me.saveAndCalcParents(treeNode);
|
|
|
+ delete treeNode.changed;
|
|
|
};
|
|
|
};
|
|
|
return rst;
|