ソースを参照

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

zhongzewei 7 年 前
コミット
b2d596bb95

+ 9 - 0
web/building_saas/main/js/models/calc_base.js

@@ -305,6 +305,15 @@ let cbTools = {
     refreshFormulaNodes: function () {
         let nodes = this.getFormulaNodes();
         if (nodes.length > 0) projectObj.mainController.refreshTreeNode(nodes);
+    },
+    // 判断结点是否被其它结点的表达式引用。
+    isUsedByFormula: function(node){
+        let nodes = this.getFormulaNodes();
+        if (nodes.length == 0) return false;
+        let sID = '@' + node.data.ID;
+        for (let node of nodes){
+             if (node.data.calcBase.hasSubStr(sID)) return true;
+        };
     }
 };
 

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

@@ -514,6 +514,8 @@ var projectObj = {
                             if(isFlag(selected.data)&&selected.data.flagsIndex.fixed.flag==fixedFlag.SUB_ENGINERRING){//焦点行是分部分项工程
                                 if(selected.children.length>0){
                                    return selected.children[0].data.type==billType.FX;//焦点行是分部分项工程,且子项是分项
+                                }else {
+                                    return false
                                 }
                             }
                         }
@@ -662,6 +664,10 @@ var projectObj = {
                         var selected = controller.tree.selected, parent = selected.parent;
                         if (selected) {
                             if (selected.sourceType === project.Bills.getSourceType()) {
+                                if (cbTools.isUsedByFormula(selected)){
+                                    alert('该清单行被其它公式结点引用,不允许删除!');
+                                    return;
+                                };
                                 project.Bills.deleteBills(selected.source);
                                 controller.delete();
                             } else if (selected.sourceType === project.Ration.getSourceType()) {
@@ -833,6 +839,10 @@ $('#delete').click(function () {
 
     if (selected) {
         if (selected.sourceType === project.Bills.getSourceType()) {
+            if (cbTools.isUsedByFormula(selected)){
+                alert('该清单行被其它公式结点引用,不允许删除!');
+                return;
+            };
             project.Bills.deleteBills(selected.source);
             controller.delete();
         } else if (selected.sourceType === project.Ration.getSourceType()) {