Browse Source

fix feerate bug

zhangweicheng 7 years ago
parent
commit
60cd169f17
2 changed files with 21 additions and 4 deletions
  1. 16 0
      public/web/scMathUtil.js
  2. 5 4
      web/building_saas/main/js/views/fee_rate_view.js

+ 16 - 0
public/web/scMathUtil.js

@@ -188,6 +188,22 @@ let scMathUtil = {
             value = me.roundTo(Number(obj),-decimal);
         }
         return value.toFixed(decimal);
+    },
+    isNumOrFormula:function (text) {
+        let value = Number(text);
+        if (!value) {
+            try {
+                let exp = new Expression('');
+                exp.Expression(text);
+                value = Number(exp.Evaluate());
+            } catch (error) {
+                value = null;
+            }
+        }
+        if(text==null||text==""){
+            value = null;
+        }
+        return value;
     }
 };
 

+ 5 - 4
web/building_saas/main/js/views/fee_rate_view.js

@@ -422,9 +422,9 @@ var feeRateObject={
         let fieldID = me.mainFeeRateSetting.header[info.col].dataCode;
         let value = info.newValue;
         if(fieldID == 'rate'&&value != null){
-            eval('1+a');
-            if(number_util.isNumber(Number(value))){
-                value = scMathUtil.roundForObj(value,getDecimal("feeRate"));
+            let checkResult = scMathUtil.isNumOrFormula(value);
+            if(checkResult!=null){
+                value = scMathUtil.roundForObj(checkResult,getDecimal("feeRate"));
             }else {
                 alert('当前输入的数据类型不正确,请重新输入。');
                 me.mainFeeRateSheet.setValue(info.row, info.col, info.oldValue);
@@ -437,7 +437,8 @@ var feeRateObject={
         updateData[fieldID] = value;
         $.bootstrapLoading.start();
          feeRate.updateFeeRateByID(recode.ID,updateData,function () {
-            if(fieldID == 'rate'){
+             me.mainFeeRateSheet.setValue(info.row, info.col, value);
+             if(fieldID == 'rate'){
                 feeRate.onFeeRateChange(recode.ID,value);
             }
             $.bootstrapLoading.end();