|
@@ -16,10 +16,11 @@ let executeObj = {
|
|
|
currentTpl : null,
|
|
|
currentRationItem: null,
|
|
|
currentFeeRateFile: null,
|
|
|
- at: function(code) {
|
|
|
+ at: function(ID) {
|
|
|
let me = executeObj,
|
|
|
rst = 0;
|
|
|
- rst = me.currentTpl.compileAssistantObj[code].unitFee;
|
|
|
+ rst = me.currentTpl.compileAssistantObj[ID].unitFee;
|
|
|
+ rst = parseFloat(rst);
|
|
|
return rst;
|
|
|
},
|
|
|
base: function(calcBaseCode) {
|
|
@@ -74,7 +75,8 @@ class calculation {
|
|
|
let me = this;
|
|
|
me.hasCompiled = false;
|
|
|
me.errs = [];
|
|
|
- let private_extract_code = function(str, idx){
|
|
|
+
|
|
|
+ let private_extract_ID = function(str, idx){
|
|
|
let rst = '', lBracket = 0, rBracket = 0, firstIdx = idx, lastIdx = 0;
|
|
|
for (let i = idx; i < str.length; i++) {
|
|
|
if (str[i] === '(') {
|
|
@@ -99,30 +101,28 @@ class calculation {
|
|
|
return rst;
|
|
|
};
|
|
|
let private_parse_ref = function(item, itemIdx){
|
|
|
- let expr = item.expression.split('at(').join('A(');
|
|
|
- item.expression = expr;
|
|
|
+ //let expr = item.expression.split('at(').join('@(');
|
|
|
+ //item.expression = expr;
|
|
|
//console.log('expression: ' + expr);
|
|
|
- let idx = expr.indexOf('A(', 0);
|
|
|
+ let idx = item.expression.indexOf('@(', 0);
|
|
|
while (idx >= 0) {
|
|
|
- let code = private_extract_code(expr, idx);
|
|
|
- //console.log('提取code: ' + code);
|
|
|
- if (code.length > 0) {
|
|
|
- let subItem = me.compileAssistantObj[code];
|
|
|
+ let ID = private_extract_ID(item.expression, idx);
|
|
|
+ if (ID.length > 0) {
|
|
|
+ let subItem = me.compileAssistantObj[ID];
|
|
|
if (subItem) {
|
|
|
- if (subItem.code !== item.code) {
|
|
|
- private_parse_ref(subItem, me.compileAssistantObj[code + "_idx"]);
|
|
|
+ if (subItem.ID !== item.ID) {
|
|
|
+ private_parse_ref(subItem, me.compileAssistantObj[ID + "_idx"]);
|
|
|
} else {
|
|
|
- me.errs.push("There exists the self refer code: " + code);
|
|
|
+ me.errs.push("There exists the self refer ID: " + ID);
|
|
|
}
|
|
|
} else {
|
|
|
- me.errs.push("There exists the invalid code by which could not find the item: " + code);
|
|
|
- console.log('invalid code: ' + code);
|
|
|
+ me.errs.push("There exists the invalid ID by which could not find the item: " + ID);
|
|
|
+ console.log('invalid ID: ' + ID);
|
|
|
}
|
|
|
}
|
|
|
- idx = expr.indexOf('A(', idx + code.length + 3);
|
|
|
+ idx = item.expression.indexOf('@(', idx + ID.length + 3);
|
|
|
}
|
|
|
if (me.calcTpl.compiledSeq.indexOf(itemIdx) < 0) {
|
|
|
- //console.log('the code ready to push: ' + item.code);
|
|
|
me.calcTpl.compiledSeq.push(itemIdx);
|
|
|
}
|
|
|
};
|
|
@@ -134,7 +134,7 @@ class calculation {
|
|
|
let private_compile_items = function() {
|
|
|
for (let idx of me.calcTpl.compiledSeq) {
|
|
|
let item = me.calcTpl.calcItems[idx];
|
|
|
- item.compiledExpr = item.expression.split('A(').join('$CE.at(');
|
|
|
+ item.compiledExpr = item.expression.split('@(').join('$CE.at(');
|
|
|
item.compiledExpr = item.compiledExpr.split('base(').join('$CE.base(');
|
|
|
item.compiledExpr = item.compiledExpr.split('fee(').join('$CE.fee(');
|
|
|
item.compiledExpr = item.compiledExpr.split('factor(').join('$CE.factor(');
|
|
@@ -157,8 +157,8 @@ class calculation {
|
|
|
private_comile_feeFile();
|
|
|
for (let i = 0; i < me.calcTpl.calcItems.length; i++) {
|
|
|
let item = me.calcTpl.calcItems[i];
|
|
|
- me.compileAssistantObj[item.code] = item;
|
|
|
- me.compileAssistantObj[item.code + "_idx"] = i;
|
|
|
+ me.compileAssistantObj[item.ID] = item;
|
|
|
+ me.compileAssistantObj[item.ID + "_idx"] = i;
|
|
|
}
|
|
|
//2. second round -> go!
|
|
|
for (let i = 0; i < me.calcTpl.calcItems.length; i++) {
|
|
@@ -171,8 +171,6 @@ class calculation {
|
|
|
console.log('errors: ' + me.errs.toString());
|
|
|
}
|
|
|
}
|
|
|
- //console.log(me.compileAssistantObj);
|
|
|
- //console.log(me.calcTpl.compiledSeq);
|
|
|
};
|
|
|
calculate( $RATION){
|
|
|
let me = this;
|
|
@@ -185,7 +183,7 @@ class calculation {
|
|
|
for (let idx of me.calcTpl.compiledSeq) {
|
|
|
let item = me.calcTpl.calcItems[idx];
|
|
|
item.unitFee = eval(item.compiledExpr);
|
|
|
- item.totalFee = eval(item.unitFee * 5); // AAAAA 5为测试值 $RATION.data.Quantity
|
|
|
+ item.totalFee = item.unitFee * 3; // AAAAA 5为测试值 $RATION.data.Quantity
|
|
|
}
|
|
|
}
|
|
|
}
|