浏览代码

计算基数处理删除

zhongzewei 7 年之前
父节点
当前提交
8fc78f0c4b

+ 2 - 1
modules/ration_repository/controllers/ration_controller.js

@@ -10,7 +10,8 @@ var callback = function(req, res, err, message, data){
 module.exports = {
     getRationItemsBySection: function(req, res){
         var sectionId = req.body.sectionID;
-        rationItem.getRationItemsBySection(sectionId, function(err, message, rst){
+        var rationRepId = req.body.rationRepId;
+        rationItem.getRationItemsBySection(rationRepId, sectionId, function(err, message, rst){
             if (err) {
                 callback(req, res, err, message, null);
             } else {

+ 2 - 2
modules/ration_repository/models/ration_item.js

@@ -47,8 +47,8 @@ import stdGljListModel from '../../common/std/schemas/std_ration_lib_glj_list';
 
 var rationItemDAO = function(){};
 
-rationItemDAO.prototype.getRationItemsBySection = function(sectionId,callback){
-    rationItemModel.find({"sectionId": sectionId, "$or": [{"isDeleted": null}, {"isDeleted": false} ]}, null, {sort: {code: 1}}, function(err,data){
+rationItemDAO.prototype.getRationItemsBySection = function(rationRepId, sectionId,callback){
+    rationItemModel.find({"rationRepId": rationRepId, "sectionId": sectionId, "$or": [{"isDeleted": null}, {"isDeleted": false} ]}, null, {sort: {code: 1}}, function(err,data){
         if(err) callback(true, "Fail to get items", "")
         else callback(false,"Get items successfully", data);
     })

+ 13 - 3
web/building_saas/main/js/models/calc_base.js

@@ -462,6 +462,7 @@ let cbAnalyzer = {
                 let bill = baseFigures[figure]['fixedBill']['bill'];
                 if(checkStack(getRefStack([bill.ID]), sbillID)){
                     console.log('循环计算');
+                    calcBase.errMsg = '表达式出现循环计算';
                     return true;
                 }
             }
@@ -522,6 +523,9 @@ let cbParser = {
 
     //将表达式转换为可编译的表达式
     toCompileExpr: function(v){
+        if(v === ''){
+            return '$CBC.base(\'NONE\')';
+        }
         let strs = this.getFigure(v);
         let exps = [];
         for(let i = 0, len = strs.length; i < len; i++){
@@ -541,6 +545,9 @@ let cbParser = {
 let cbCalctor = {
     //计算基数
     base: function (figure) {
+        if(figure === 'NONE'){
+            return 0;
+        }
         return baseFigureTemplate[calcBase.baseFigures[figure]['base']]();
     },
     //计算
@@ -550,6 +557,7 @@ let cbCalctor = {
 };
 
 let calcBase = {
+    errMsg: '表达式不正确',
     success: false,
     //清单固定行
     fixedFlag: null,
@@ -566,7 +574,6 @@ let calcBase = {
         cbTools.setFixedBills(project, me.fixedBills, me.fixedFlag);
         me.baseFigures = baseFigureMap;
         cbTools.setBaseBills(me.baseFigures, me.fixedBills);
-        //me.baseFigures.fixedBills = me.fixedBills;
         cbTools.setBaseFigureClass(me.baseFigures, me.baseFigureClass);
     },
     getBase: function (figure) {
@@ -586,11 +593,13 @@ let calcBase = {
             $CBC = cbCalctor;
         try {
             me.success = false;
+            me.errMsg = '表达式不正确';
             //分析输入式合法性
             let exp = $CBA.legalExp(node);
-            if(!exp){
+            if(!cbTools.isDef(exp)){
                 throw '表达式不正确';
             }
+
             //输入式转换表达式
             let compileExp = $CBP.toCompileExpr(exp);
 
@@ -599,6 +608,7 @@ let calcBase = {
             if(!cbTools.isNum(calcBaseValue)){
                 throw '表达式不正确';
             }
+
             //存储
             me.success = true;
             node.data.calcBase = exp;
@@ -607,7 +617,7 @@ let calcBase = {
             me.project.calcProgram.saveNode(node);
         }
         catch (err){
-            alert('表达式不正确');
+            alert(me.errMsg);
         }
     }
 };

+ 10 - 8
web/building_saas/main/js/views/project_view.js

@@ -265,6 +265,7 @@ var projectObj = {
         }
     },
     updateCellValue: function (node, value, colSetting) {
+        console.log(`value : ${value}`);
         let project = projectObj.project, fieldName = colSetting.data.field;
         if(node.sourceType==project.ration_glj.getSourceType()){
             project.ration_glj.updateFromMainSpread(value,node,fieldName);
@@ -301,16 +302,17 @@ var projectObj = {
                 }
                 else if (fieldName === 'calcBase') {
                     //zhong
-                    if(value){
-                        node.data.userCalcBase = value;
-                        project.calcBase.calculate(node);
-                        if(!project.calcBase.success){
-                            let activeCell = projectObj.mainSpread.getActiveSheet().getSelections()[0];
-                            projectObj.mainSpread.getActiveSheet().setValue(activeCell.row, activeCell.col, node.data.calcBase? node.data.calcBase: '');
-                        }
+                    if(value === undefined ||value === null || value.toString().trim() === ''){
+                        value = '';
+                    }
+                    node.data.userCalcBase = value;
+                    project.calcBase.calculate(node);
+                    if(!project.calcBase.success){
+                        let activeCell = projectObj.mainSpread.getActiveSheet().getSelections()[0];
+                        projectObj.mainSpread.getActiveSheet().setValue(activeCell.row, activeCell.col, node.data.calcBase? node.data.calcBase: '');
                     }
                     return;
-                   // if (value) {value = parseFloat(value).toDecimal(decimalObj.decimal("totalPrice", node))};
+                    // if (value) {value = parseFloat(value).toDecimal(decimalObj.decimal("totalPrice", node))};
                 };
                 node.changed = true;
                 if (fieldName == 'feesIndex.common.unitFee'){