Просмотр исходного кода

1、广西养护云版:跟踪“指标设备购置费”不能按定额价计算问题。
2、手工录入计算程序标准库的原始数据时,ID有重复,加个保护。

chenshilong 4 лет назад
Родитель
Сommit
87e4e3e2f5
1 измененных файлов с 13 добавлено и 5 удалено
  1. 13 5
      web/building_saas/main/js/models/calc_program.js

+ 13 - 5
web/building_saas/main/js/models/calc_program.js

@@ -860,7 +860,7 @@ let calcTools = {
         } else if (calcTools.isGljRation(treeNode)) {
         } else if (calcTools.isGljRation(treeNode)) {
           // result = treeNode.data.basePrice ? parseFloat(treeNode.data.basePrice).toDecimal(decimalObj.ration.unitPrice) : 0;
           // result = treeNode.data.basePrice ? parseFloat(treeNode.data.basePrice).toDecimal(decimalObj.ration.unitPrice) : 0;
           // 这里要取基价或市场价,但不能直接取basePrice,受限于项目属性的三个选项。
           // 这里要取基价或市场价,但不能直接取basePrice,受限于项目属性的三个选项。
-          if (baseName.includes("定额"))
+          if (baseName.includes("定额") || baseName.includes("指标"))
             result = gljOprObj.getBasePrice(treeNode);
             result = gljOprObj.getBasePrice(treeNode);
           else
           else
             result = treeNode.data.marketUnitFee
             result = treeNode.data.marketUnitFee
@@ -1823,9 +1823,15 @@ let analyzer = {
     });
     });
     for (var i = 0; i < atIDArr.length; i++) {
     for (var i = 0; i < atIDArr.length; i++) {
       let patt = new RegExp(atIDArr[i]);
       let patt = new RegExp(atIDArr[i]);
-      let val =
-        projectObj.project.calcProgram.compiledTemplates[template.ID]
-          .compiledCalcItems[IDArr[i]].name;
+      let val = '';
+      try {
+        // 重庆养护2018的计算程序模板中ID=17重复,导到后面的模板覆盖前面的。此时后面的模板还没有健康的编译出来,这里调用会报错。
+          // 又不能直接改,受影响的旧项目有很多(3287个),这里加个保护。
+          val = projectObj.project.calcProgram.compiledTemplates[template.ID].compiledCalcItems[IDArr[i]].name;
+      }
+      catch (err) {
+          console.log(IDArr);
+      }
       rst = rst.replace(patt, val);
       rst = rst.replace(patt, val);
     }
     }
     rst = rst.replace(/\[/g, "");
     rst = rst.replace(/\[/g, "");
@@ -2113,7 +2119,9 @@ class CalcProgram {
         item.dispExprUser = analyzer.getDispExprUser(item.dispExpr, lc);
         item.dispExprUser = analyzer.getDispExprUser(item.dispExpr, lc);
         if (item.expression == "HJ") item.compiledExpr = "$CE.HJ()";
         if (item.expression == "HJ") item.compiledExpr = "$CE.HJ()";
         else item.compiledExpr = analyzer.getCompiledExpr(item.expression, lc);
         else item.compiledExpr = analyzer.getCompiledExpr(item.expression, lc);
-        item.statement = analyzer.getStatement(item.expression, template);
+        if (item.statement === '') {
+            item.statement = analyzer.getStatement(item.expression, template);
+        }
 
 
         if (item.feeRateID) {
         if (item.feeRateID) {
           let orgFeeRate = item.feeRate;
           let orgFeeRate = item.feeRate;