浏览代码

锁定清单需求更改:只锁分部分项及措施项目

zhongzewei 7 年之前
父节点
当前提交
a871ac9422

+ 4 - 1
public/web/PerfectLoad.js

@@ -3,8 +3,11 @@
  */
 
 jQuery.bootstrapLoading = {
+    isLoading: function () {
+        return $('#loadingPage').is(':visible');
+    },
     start: function (options) {
-        if($('#loadingPage').is(':visible')){
+        if(this.isLoading()){
             return;
         }
         var defaults = {

+ 3 - 3
web/building_saas/main/js/controllers/project_controller.js

@@ -71,7 +71,7 @@ ProjectController = {
             if (std) {
                 let fixedNode = getRootFixedNode(target);
                 if(!isFlag(fixedNode.data) || (fixedNode.data.flagsIndex.fixed.flag !== fixedFlag.SUB_ENGINERRING && fixedNode.data.flagsIndex.fixed.flag !== fixedFlag.MEASURE)){
-                    return;
+                    return false;
                 }
                 //焦点行属于分部分项
                 if(fixedNode.data.flagsIndex.fixed.flag === fixedFlag.SUB_ENGINERRING){
@@ -79,7 +79,7 @@ ProjectController = {
                     //焦点行是分部分项
                     let subType = getSubType(target);
                     if(target.sourceType === project.Bills.getSourceType() && target.data.type === billType.DXFY && subType === billType.FB){
-                        return;
+                        return false;
                     }
                     //焦点行是分部
                     else if(target.sourceType === project.Bills.getSourceType() && target.data.type === billType.FB){
@@ -90,7 +90,7 @@ ProjectController = {
                             nodeNextSiblingID = project.mainTree.rootID();
                         }
                         else{
-                            return;
+                            return false;
                         }
                     }
                 }

+ 16 - 0
web/building_saas/main/js/models/project.js

@@ -355,6 +355,22 @@ var PROJECT = {
             }
             return false;
         };
+        //清单是否属于锁定范围(分部分项、措施项目)
+        project.prototype.withinBillsLocked = function (node) {
+            const lockedFixFlag = [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE];
+            while(node){
+                if(!node.parent){
+                    if(node.data.flagsIndex && node.data.flagsIndex.fixed && lockedFixFlag.includes(node.data.flagsIndex.fixed.flag)){
+                        return true;
+                    }
+                    else {
+                        return false;
+                    }
+                }
+                node = node.parent;
+            }
+            return true;
+        };
         project.prototype.updateNodes = function (datas,callback) {
           /*  let datas = [
                 {

+ 1 - 1
web/building_saas/main/js/models/ration.js

@@ -488,7 +488,7 @@ var Ration = {
                 $.bootstrapLoading.start();
                 //保证由于异步的关系loading界面被隐藏,比如清单指引插入清单定额时,endUpdate中提前隐藏了loading
                 let interval =setInterval(function () {
-                    if(!$('#loadingPage').is(':visible') && showLoding){
+                    if(!$.bootstrapLoading.isLoading()&& showLoding){
                         $.bootstrapLoading.start();
                         clearInterval(interval);
                     }

+ 4 - 0
web/building_saas/main/js/views/calc_base_view.js

@@ -166,6 +166,10 @@ let calcBaseView = {
         let showDatas;
         me.curType = type;
         if (type === me.type.bills) {
+            //锁定的清单不显示
+            if(projectObj.project.isBillsLocked() && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+                return;
+            }
             //显示清单基数分类
             $('#cbClassList').show();
             $('#qd-jsjs .modal-content').css('width', '670px');

+ 12 - 11
web/building_saas/main/js/views/character_content_view.js

@@ -165,7 +165,7 @@ let contentOprObj = {
         pageCCOprObj.setCharacterBySetting(selectedNode, setting, callback, contentOprObj);
     },
     onEditStart(sender, args){
-        if(projectInfoObj.projectInfo.property.lockBills){
+        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.cancel = true;
             return;
         }
@@ -188,7 +188,7 @@ let contentOprObj = {
         if(args.sheet.isEditing()){
             args.sheet.endEdit(true);
         }
-        if(projectInfoObj.projectInfo.property.lockBills){
+        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.sheet.setValue(args.row, args.col, 0);
             return;
         }
@@ -223,7 +223,7 @@ let contentOprObj = {
     },
     //复制粘贴
     onClipboardPasting: function (sender, args) {
-        if(projectInfoObj.projectInfo.property.lockBills){
+        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.cancel = true;
             return;
         }
@@ -252,7 +252,7 @@ let contentOprObj = {
         let me = contentOprObj;
         let disObj = {jobAdd: false, jobInsert: true, jobDel: true, jobUp: true, jobDown: true};
         disObj.jobAdd = !pageCCOprObj.canAddType();
-        if(projectInfoObj.projectInfo.property.lockBills){
+        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             disObj.jobAdd = true;
             disObj.jobInsert = true;
             disObj.jobDel = true;
@@ -309,7 +309,7 @@ let contentOprObj = {
                 let addDis = pageCCOprObj.canAddType() ? false : true,  insertDis = false, delDis = false, upDis = false, downDis = false;
                 if(target.hitTestType === 3){//在表格内&& typeof target.row !== 'undefined' && typeof target.col !== 'undefined'
                     //清单锁定,不可用
-                    if(projectInfoObj.projectInfo.property.lockBills){
+                    if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
                         addDis = true;
                         insertDis = true;
                         delDis = true;
@@ -648,7 +648,7 @@ let characterOprObj = {
     },
     onEditStart: function (sender, args) {
         let me = characterOprObj;
-        if(projectInfoObj.projectInfo.property.lockBills){
+        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.cancel = true;
             return;
         }
@@ -675,7 +675,7 @@ let characterOprObj = {
         }
     },
     onClipboardPasting: function (sender, args) {
-        if(projectInfoObj.projectInfo.property.lockBills){
+        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.cancel = true;
         }
         if(args.cellRange.col + args.colCount - 1 > 1){
@@ -731,7 +731,7 @@ let characterOprObj = {
         if(args.sheet.isEditing()){
             args.sheet.endEdit(true);
         }
-        if(projectInfoObj.projectInfo.property.lockBills){
+        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.sheet.setValue(args.row, args.col, 0);
             return;
         }
@@ -756,7 +756,7 @@ let characterOprObj = {
         let disObj = {itemAdd: false, itemInsert: true, itemDel: true, itemUp: true, itemDown: true};
         disObj.itemAdd = !pageCCOprObj.canAddType();
         //清单锁定,不可用
-        if(projectInfoObj.projectInfo.property.lockBills){
+        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             disObj.itemAdd = true;
             disObj.itemInsert = true;
             disObj.itemDel = true;
@@ -801,7 +801,7 @@ let characterOprObj = {
                 let addDis = pageCCOprObj.canAddType() ? false : true, insertDis = false, delDis = false, upDis = false, downDis = false;
                 if(target.hitTestType === 3){//在表格内 && typeof target.row !== 'undefined' && typeof target.col !== 'undefined'
                     //清单锁定,则不可用
-                    if(projectInfoObj.projectInfo.property.lockBills){
+                    if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
                         addDis = true;
                         insertDis = true;
                         delDis = true;
@@ -917,6 +917,7 @@ let pageCCOprObj = {
     },
     //设置特征及内容currentCache
     setCacheAndShow: function (node) {
+        this.refreshRuleTools(projectObj.project.isBillsLocked());
         if(node && node.sourceType === projectObj.project.Bills.getSourceType()){
             let theCont = contentOprObj, theCha = characterOprObj;
             node.data.jobContent = node && typeof node.data.jobContent !== 'undefined' ? node.data.jobContent : [];
@@ -991,7 +992,7 @@ let pageCCOprObj = {
     refreshRuleTools: function (lockBills) {
         $('#use-to-current').removeClass('disabled');
         $('#use-to-all').removeClass('disabled');
-        if(lockBills){
+        if(lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             $('#use-to-current').addClass('disabled');
             $('#use-to-all').addClass('disabled');
         }

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

@@ -332,6 +332,11 @@ var feeRateObject={
         return new FeeRateEditCellType();
     },
     showSelectModal:function (hitinfo) {
+        //锁定的清单不显示
+        let project = projectObj.project;
+        if(project.isBillsLocked() && project.withinBillsLocked(project.mainTree.selected)){
+            return;
+        }
         $("#fee_rate_tree").modal({show:true});
         $('#edit_from').val(hitinfo.sheet.name());
     },

+ 1 - 1
web/building_saas/main/js/views/glj_view.js

@@ -279,7 +279,7 @@ var gljOprObj = {
         let selected = projectObj.project.mainTree.selected;
         if(selected) {
             //清单锁定时只读
-            if(selected.sourceType == ModuleNames.bills && projectObj.project.isBillsLocked()){
+            if(selected.sourceType == ModuleNames.bills && projectObj.project.isBillsLocked() && projectObj.project.withinBillsLocked(selected)){
                 return true;
             }
             //是主材或者是设备时只读

+ 1 - 1
web/building_saas/main/js/views/main_tree_col.js

@@ -275,7 +275,7 @@ let MainTreeCol = {
         }
     },
     editChecking:function(node){
-        if(node.sourceType==projectObj.project.Bills.getSourceType()&&projectObj.project.isBillsLocked()){
+        if(node.sourceType==projectObj.project.Bills.getSourceType()&&projectObj.project.isBillsLocked()&&projectObj.project.withinBillsLocked(node)){
             return true;
         }
         if(gljOprObj.isInstallationNode(node)){//如果是通过安装增加费自动生成的,都是只读类型

+ 18 - 9
web/building_saas/main/js/views/project_view.js

@@ -66,7 +66,7 @@ var projectObj = {
             if(!node){
                 return false;
             }
-            if(projectObj.project.isBillsLocked()== true){
+            if(projectObj.project.isBillsLocked()== true && projectObj.project.withinBillsLocked(node)){
                 return false;
             }
             if(node.depth()<=1){//焦点行是树结构的第一/二层节点,灰显。
@@ -98,7 +98,7 @@ var projectObj = {
             if(!node){
                 return false;
             }
-            if(projectObj.project.isBillsLocked()== true){
+            if(projectObj.project.isBillsLocked()== true && projectObj.project.withinBillsLocked(node)){
                 return false;
             }
             if(node.depth()==0){//焦点行是树结构的第一层节点,灰显。
@@ -129,7 +129,7 @@ var projectObj = {
         let canUpMove = function (node) {
             if(node&&node.preSibling){//有前兄弟
                 if(node.sourceType==that.project.Bills.getSourceType()){
-                    if(projectObj.project.isBillsLocked()== true){
+                    if(projectObj.project.isBillsLocked()== true && projectObj.project.withinBillsLocked(node)){
                         return false;
                     }
                     if(node.data.type == billType.DXFY&&node.data.isAdd!==1){
@@ -143,7 +143,7 @@ var projectObj = {
         let canDownMove = function (node) {
             if(node&&node.nextSibling){
                 if(node.sourceType==that.project.Bills.getSourceType()){
-                    if(projectObj.project.isBillsLocked()== true){
+                    if(projectObj.project.isBillsLocked()== true && projectObj.project.withinBillsLocked(node)){
                         return false;
                     }
                     if(node.data.type == billType.DXFY&&node.data.isAdd!==1){
@@ -300,7 +300,14 @@ var projectObj = {
                 });
             }
         }
-        if(node.data.type==billType.FX||node.data.type==billType.BX||(node.data.type==billType.BILL&&node.source.children.length==0)){//是分项、补项或者叶子清单的情况下才需要查找替换
+        //分部分项、措施项目才匹配
+        let withinValidFixed = false;
+        let matchFixedFlags = [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE];
+        let rootNode = getRootFixedNode(node);
+        if(rootNode && rootNode.data.flagsIndex && rootNode.data.flagsIndex.fixed && matchFixedFlags.includes(rootNode.data.flagsIndex.fixed.flag)){
+            withinValidFixed = true;
+        }
+        if(withinValidFixed && (node.data.type==billType.FX||node.data.type==billType.BX||(node.data.type==billType.BILL&&node.source.children.length==0))){//是分项、补项或者叶子清单的情况下才需要查找替换
             if (value&&value.length === 9 && /^[\d]+$/.test(value)) {
                 stdMatchCode = value;
                 formatCode = project.Bills.newFormatCode(stdMatchCode);
@@ -524,6 +531,8 @@ var projectObj = {
     mainSpreadEditEnded: function (sender, info) {
         let project = projectObj.project;
         let node = project.mainTree.items[info.row];
+        console.log( project.withinBillsLocked(node));
+        project.withinBillsLocked(node);
         let colSetting = projectObj.mainController.setting.cols[info.col];
         let fieldName = projectObj.mainController.setting.cols[info.col].data.field;
         // 检查输入类型等
@@ -706,7 +715,7 @@ var projectObj = {
                     name: "插入大项费用",
                     icon: 'fa-sign-in',
                     disabled: function () {
-                        return projectObj.project.isBillsLocked();
+                        return projectObj.project.isBillsLocked() && project.withinBillsLocked(project.mainTree.selected);
                         //return project.mainTree.selected ? project.mainTree.selected.sourceType !== project.Bills.getSourceType() : false;
                     },
                     callback: function (key, opt) {
@@ -788,7 +797,7 @@ var projectObj = {
                     icon: 'fa-sign-in',
                     disabled: function () {
                         let selected = project.mainTree.selected;
-                        if(projectObj.project.isBillsLocked()== false && selected && selected.sourceType === project.Bills.getSourceType()){
+                        if(!(projectObj.project.isBillsLocked()== true && project.withinBillsLocked(selected)) && selected && selected.sourceType === project.Bills.getSourceType()){
                             return false
                         }
                         return true;
@@ -1470,7 +1479,7 @@ $('#downMove').click(function () {
         };
     }
 });
-$("a[name='lockBills']").click(function () {
+$("a[name='lockBills']").click(function () {//
     let lockBills = projectInfoObj.projectInfo.property.lockBills;
     lockBills = !lockBills;
     projectObj.project.updateLockBills(lockBills,function () {
@@ -1874,7 +1883,7 @@ function ifCanDelete() {
                 if(node.data.type == billType.DXFY&&node.data.isAdd!=1){
                     return false;
                 }
-                if(projectObj.project.isBillsLocked()== true){
+                if(projectObj.project.isBillsLocked()== true && projectObj.project.withinBillsLocked(node)){
                     return false;
                 }
                 if(projectObj.project.Bills.hasFlags(node)){

+ 14 - 4
web/building_saas/main/js/views/std_bills_lib.js

@@ -122,7 +122,7 @@ var billsLibObj = {
         return features;
     },
     insertBills: function (stdBillsJobData, stdBillsFeatureData, node) {
-        if(projectInfoObj.projectInfo.property.lockBills == true){
+        if(projectInfoObj.projectInfo.property.lockBills == true && projectObj.project.withinBillsLocked(node)){
             return false;
         }
         $.bootstrapLoading.start();
@@ -137,14 +137,24 @@ var billsLibObj = {
             if (existB) {
                 let std = JSON.parse(JSON.stringify(node.data));
                 std.unit = existB.unit;
-                ProjectController.addBills(projectObj.project, projectObj.mainController, std);
+                let canAdd = ProjectController.addBills(projectObj.project, projectObj.mainController, std);
+                if(canAdd === false && $.bootstrapLoading.isLoading()){
+                    $.bootstrapLoading.end();
+                }
             } else {
                 ConfirmModal.stdBillsUnit.check(node.data, function (std) {
-                    ProjectController.addBills(projectObj.project, projectObj.mainController, std);
+                    let canAdd = ProjectController.addBills(projectObj.project, projectObj.mainController, std);
+                    if(canAdd === false && $.bootstrapLoading.isLoading()){
+                        $.bootstrapLoading.end();
+                    }
                 });
             }
         } else {
-            ProjectController.addBills(projectObj.project, projectObj.mainController, node.data);
+            let canAdd = ProjectController.addBills(projectObj.project, projectObj.mainController, node.data);
+            if(canAdd === false && $.bootstrapLoading.isLoading()){
+                console.log('enter');
+                $.bootstrapLoading.end();
+            }
         }
         return true;
     },