|
@@ -6,16 +6,20 @@
|
|
|
|
|
|
let executeObj = {
|
|
|
treeNode: null,
|
|
|
+ template: null,
|
|
|
+ calcBase: null,
|
|
|
+
|
|
|
at: function(ID) {
|
|
|
let me = executeObj,
|
|
|
rst = 0;
|
|
|
- rst = me.treeNode.data.calcTemplate.compiledTemplate[ID].unitFee;
|
|
|
+ rst = me.template.compiledCalcItems[ID].unitFee;
|
|
|
rst = parseFloat(rst);
|
|
|
return rst;
|
|
|
},
|
|
|
base: function(calcBaseName) {
|
|
|
let me = executeObj, rst = 0,
|
|
|
- base = getRationCalcBase(calcBaseName);
|
|
|
+ //base = getRationCalcBase(calcBaseName);
|
|
|
+ base = me.calcBase[calcBaseName];
|
|
|
|
|
|
if (base != null) {
|
|
|
let price = 0, tmpSum = 0;
|
|
@@ -33,18 +37,13 @@ let executeObj = {
|
|
|
};
|
|
|
return rst;
|
|
|
}
|
|
|
-/* factor: function(factorID) {
|
|
|
- let me = executeObj;
|
|
|
- let rst = 7.77;
|
|
|
- return rst;
|
|
|
- }*/
|
|
|
};
|
|
|
|
|
|
class Calculation {
|
|
|
// 先编译公用的基础数据
|
|
|
- compilePublics(feeRates, labourCoes, feeTypes){
|
|
|
+ compilePublics(feeRates, labourCoes, feeTypes, calcBases){
|
|
|
let me = this;
|
|
|
- let private_compile_feeFile = function() {
|
|
|
+ let private_compile_feeRateFile = function() {
|
|
|
if (feeRates) {
|
|
|
me.compiledFeeRates = {};
|
|
|
for (let rate of feeRates) {
|
|
@@ -65,17 +64,29 @@ class Calculation {
|
|
|
me.compiledFeeTypes = {};
|
|
|
for (let ft of feeTypes) {
|
|
|
me.compiledFeeTypes[ft.type] = ft.name;
|
|
|
+ me.compiledFeeTypes[ft.name] = ft.type; // 中文预编译,可靠性有待验证
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ let private_compile_calcBase = function() {
|
|
|
+ if (calcBases) {
|
|
|
+ me.compiledCalcBases = {};
|
|
|
+ for (let cb of calcBases) {
|
|
|
+ me.compiledCalcBases[cb.dispName] = cb; // 中文预编译,可靠性有待验证
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- private_compile_feeFile();
|
|
|
+ private_compile_feeRateFile();
|
|
|
private_compile_labourCoeFile();
|
|
|
private_compile_feeType();
|
|
|
+ private_compile_calcBase();
|
|
|
+ me.compiledTemplates = {};
|
|
|
};
|
|
|
|
|
|
compileTemplate(template){
|
|
|
let me = this;
|
|
|
+ me.compiledTemplates[template.ID] = template;
|
|
|
template.hasCompiled = false;
|
|
|
template.errs = [];
|
|
|
|
|
@@ -108,10 +119,10 @@ class Calculation {
|
|
|
while (idx >= 0) {
|
|
|
let ID = private_extract_ID(item.expression, idx);
|
|
|
if (ID.length > 0) {
|
|
|
- let subItem = template.compiledTemplate[ID];
|
|
|
+ let subItem = template.compiledCalcItems[ID];
|
|
|
if (subItem) {
|
|
|
if (subItem.ID !== item.ID) {
|
|
|
- private_parse_ref(subItem, template.compiledTemplate[ID + "_idx"]);
|
|
|
+ private_parse_ref(subItem, template.compiledCalcItems[ID + "_idx"]);
|
|
|
} else {
|
|
|
template.errs.push("There exists the self refer ID: " + ID);
|
|
|
}
|
|
@@ -154,12 +165,12 @@ class Calculation {
|
|
|
|
|
|
if (template && template.calcItems && template.calcItems.length > 0) {
|
|
|
template.compiledSeq = [];
|
|
|
- template.compiledTemplate = {};
|
|
|
+ template.compiledCalcItems = {};
|
|
|
|
|
|
for (let i = 0; i < template.calcItems.length; i++) {
|
|
|
let item = template.calcItems[i];
|
|
|
- template.compiledTemplate[item.ID] = item;
|
|
|
- template.compiledTemplate[item.ID + "_idx"] = i;
|
|
|
+ template.compiledCalcItems[item.ID] = item;
|
|
|
+ template.compiledCalcItems[item.ID + "_idx"] = i;
|
|
|
}
|
|
|
|
|
|
for (let i = 0; i < template.calcItems.length; i++) {
|
|
@@ -176,11 +187,16 @@ class Calculation {
|
|
|
|
|
|
calculate($treeNode){
|
|
|
let me = this;
|
|
|
- let template = $treeNode.data.calcTemplate;
|
|
|
+ let templateID = $treeNode.data.calcTemplateID;
|
|
|
+ if (!templateID) templateID = 1;
|
|
|
+ let template = me.compiledTemplates[templateID];
|
|
|
+ $treeNode.data.calcTemplate = template;
|
|
|
|
|
|
if ($treeNode && template.hasCompiled) {
|
|
|
let $CE = executeObj;
|
|
|
$CE.treeNode = $treeNode;
|
|
|
+ $CE.template = template;
|
|
|
+ $CE.calcBase = me.compiledCalcBases;
|
|
|
|
|
|
if (!$treeNode.fees) {
|
|
|
$treeNode.fees = [];
|