Forráskód Böngészése

解析算法优化。

chenshilong 7 éve
szülő
commit
127f8f69af

+ 16 - 11
web/building_saas/main/js/models/calc_program.js

@@ -833,7 +833,13 @@ let analyzer = {
         let expr = me.standard(dispExpr);
         return refLineToID(expr, calcTemplate);
     },
-    getCompiledExpr: function (expression) {
+    getDispExprUser: function (dispExpr, labourCoe) {   // labourCoe 是 str 类型
+        let me = analyzer;
+        let expr = me.standard(dispExpr);
+        expr = expr.replace(/L/g, labourCoe);
+        return expr;
+    },
+    getCompiledExpr: function (expression, labourCoe) {   // labourCoe 是 str 类型
         let me = analyzer;
         let rst = expression;
         let atIDArr = me.getAtIDArr(rst);
@@ -847,6 +853,7 @@ let analyzer = {
         };
         rst = rst.replace(/\[/g, "$CE.base('");
         rst = rst.replace(/\]/g, "')");
+        rst = rst.replace(/L/g, labourCoe);
         return rst;
     }
 };
@@ -1060,22 +1067,20 @@ class CalcProgram {
         let private_compile_items = function() {
             for (let idx of template.compiledSeq) {
                 let item = template.calcItems[idx];
-                item.dispExprUser = item.dispExpr;    // 用于界面显示。disExpr是公式模板,不允许修改:人工系数占位符被修改后变成数值,第二次无法正确替换。
+
+                let lc = 0;
+                if (item.labourCoeID) lc = me.compiledLabourCoes[item.labourCoeID].coe.toString();
+                // 用于界面显示。disExpr是公式模板,不允许修改:人工系数占位符被修改后变成数值,第二次无法正确替换。
+                item.dispExprUser = analyzer.getDispExprUser(item.dispExpr, lc);
                 if (item.expression == 'HJ')
                     item.compiledExpr = '$CE.HJ()'
                 else
-                    item.compiledExpr = analyzer.getCompiledExpr(item.expression);
-
-                if (item.labourCoeID){
-                    let lc = me.compiledLabourCoes[item.labourCoeID].coe;
-                    item.dispExprUser = item.dispExpr.replace(/L/gi, lc.toString());
-                    item.compiledExpr = item.compiledExpr.replace(/L/gi, lc.toString());
-                };
+                    item.compiledExpr = analyzer.getCompiledExpr(item.expression, lc);
 
                 if (item.feeRateID) {
                     let orgFeeRate = item.feeRate;
-                    let cmf = me.compiledFeeRates[item.feeRateID];
-                    item.feeRate = cmf?cmf.rate:100;
+                    let cfr = me.compiledFeeRates[item.feeRateID];
+                    item.feeRate = cfr ? cfr.rate : 100;
 
                     if (!orgFeeRate || (orgFeeRate && orgFeeRate != item.feeRate)){
                         me.saveForReports.push({templatesID: template.ID, calcItem: item});

+ 3 - 3
web/building_saas/main/js/views/calc_program_manage.js

@@ -116,11 +116,11 @@ let calcProgramManage = {
         }
     },
     onEnterCell: function (sender, args) {
-/*        let t = calcProgramManage.getSelectionInfo().template;
+        let t = calcProgramManage.getSelectionInfo().template;
         let c = calcProgramManage.getSelectionInfo().calcItem;
         c.expression = analyzer.getExpression(c.dispExpr, t);
-        let e = c.dispExpr + '  ' + c.expression;
-        projectObj.testDisplay('', e);*/
+        let e = c.dispExpr + '  ' + c.expression + '  ' + c.compiledExpr;
+        projectObj.testDisplay('', e);
     },
     saveCalcItem: function (data,callback) {//data
         let me = this;