Selaa lähdekoodia

update locked bills

zhangweicheng 7 vuotta sitten
vanhempi
commit
5038427779

+ 1 - 1
modules/main/routes/main_route.js

@@ -19,7 +19,7 @@ module.exports =function (app) {
                     {
                         userAccount: req.session.userAccount,
                         userID: req.session.sessionUser.id,
-                        projectData: projectData,
+                        projectData: projectData
                     });
             } else {
                 res.redirect('/pm');

+ 2 - 1
modules/pm/models/project_model.js

@@ -145,7 +145,8 @@ ProjectsDAO.prototype.updateUserProjects = async function (userId, compilationId
                     if(parseInt(data.updateData.property.engineering)==4){
                         await installationFacade.copyInstallationFeeFromLib(data.updateData.ID,data.updateData.property.engineering_id);
                     }
-
+                    //锁定清单
+                    data.updateData.property.lockBills = false;
 
                 }
                 newProject = new Projects(data.updateData);

+ 3 - 1
public/web/tree_sheet/tree_sheet_helper.js

@@ -171,7 +171,9 @@ var TREE_SHEET_HELPER = {
                     cell.locked(false);
                 }
             });
-            sheet.autoFitRow(node.serialNo());
+            if(setting.setAutoFitRow){
+                setting.setAutoFitRow(sheet,node)
+            }
             if (recursive) {
                 TREE_SHEET_HELPER.refreshTreeNodeData(setting, sheet, node.children, recursive);
             }

+ 11 - 4
web/building_saas/main/html/main.html

@@ -21,6 +21,7 @@
     <!-- endinject -->
     <script>
         // 这里的变量供页面调用
+        let lockBills = '<%- projectData.property.lockBills %>';
         let userAccount = '<%- userAccount %>';
         let userID = '<%- userID %>';
     </script>
@@ -63,9 +64,9 @@
                     <a href="javascript:void(0)" class="btn btn-sm" id="downLevel" title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)" class="btn btn-sm" id="downMove" title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)" class="btn btn-sm" id="upMove" title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
-                      <span>
-                  <a href="" class="btn btn-sm" data-toggle="dropdown"><b data-toggle="tooltip" data-placement="bottom">显示至...</b></a>
-                  <div class="dropdown-menu dropdown-menu-left" style="min-width: 6.5rem">
+                    <span>
+                      <a href="" class="btn btn-sm" data-toggle="dropdown"><b data-toggle="tooltip" data-placement="bottom">显示至...</b></a>
+                      <div class="dropdown-menu dropdown-menu-left" style="min-width: 6.5rem">
                       <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayDXFY">大项费用</a>
                       <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayFB1">一级分部</a>
                       <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayFB2">二级分部</a>
@@ -75,7 +76,13 @@
                       <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayZM">子目</a>
                       <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayZD">最底层</a>
                   </div>
-                </span>
+                    </span>
+                      <% if (projectData.property.lockBills == true) { %>
+                      <a href="javascript:void(0)" class="btn btn-sm" name="lockBills"  title="解锁清单"> <i class="fa fa-unlock-alt" aria-hidden="true"></i> 解锁清单</a>
+                      <% } else { %>
+                      <a href="javascript:void(0)" class="btn btn-sm" name="lockBills"  title="锁定清单"> <i class="fa fa-lock" aria-hidden="true"></i> 锁定清单</a>
+                      <% } %>
+
                   </div>
                   <div class="tools-btn">
                       <a href="javacript:void(0);" data-toggle="modal" data-target="#column" class="btn btn-sm"><i class="fa fa-table" aria-hidden="true"></i> 列设置</a>

+ 0 - 1
web/building_saas/main/js/main.js

@@ -42,7 +42,6 @@ $(function () {
             setLocalCache('lastCol:' + projectId, info.col);
         }
     });
-
 });
 
 /**

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

@@ -328,6 +328,33 @@ var PROJECT = {
                 });
             }
         };
+        project.prototype.updateLockBills = function (value,callback) {
+            let mixDatas = {
+                projectID: projectObj.project.ID(),
+                updateType: 'update',
+                properties: {
+                    "property.lockBills":value
+                },
+                labourCoes: {},
+                rations: [],
+                bills: []
+            };
+            $.bootstrapLoading.start();
+            CommonAjax.post('/pm/api/updateMixDatas', {user_id: userID, mixDataArr: mixDatas}, function (rstData) {
+                projectInfoObj.projectInfo.property.lockBills = value;
+                if(callback){
+                    callback();
+                }
+                $.bootstrapLoading.end();
+            });
+        };
+        //返回清单是否被锁定
+        project.prototype.isBillsLocked =function(){
+            if(projectInfoObj.projectInfo.property.lockBills == true){
+                return true;
+            }
+            return false;
+        };
         project.prototype.updateNodes = function (datas,callback) {
           /*  let datas = [
                 {

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

@@ -317,7 +317,12 @@ var gljOprObj = {
     },
     detailSheetReadonly:function () {
         let selected = projectObj.project.mainTree.selected;
-        if(selected) {//是主材或者是设备时只读
+        if(selected) {
+            //清单锁定时只读
+            if(selected.sourceType == ModuleNames.bills && projectObj.project.isBillsLocked()){
+                return true;
+            }
+            //是主材或者是设备时只读
             if(selected.sourceType == ModuleNames.ration_glj){
                 return true;
             }else if(gljOprObj.isInstallationNode(selected)){//是补项或者是安装类型的定额时只读

+ 17 - 4
web/building_saas/main/js/views/main_tree_col.js

@@ -270,20 +270,33 @@ let MainTreeCol = {
         }
     },
     editChecking:function(node){
+        if(node.sourceType==projectObj.project.Bills.getSourceType()&&projectObj.project.isBillsLocked()){
+            return true;
+        }
         if(gljOprObj.isInstallationNode(node)){//如果是通过安装增加费自动生成的,都是只读类型
             return true;
         }
         return false;
     },
     setAutoHeight:function (cell,node) {//设置自动行高
+        cell.wordWrap(MainTreeCol.needAutoFit(node));
+    },
+    setAutoFitRow:function (sheet,node) {
+        if(MainTreeCol.needAutoFit(node)){
+            sheet.autoFitRow(node.serialNo());
+        }
+    },
+    needAutoFit:function (node) {
         let displaySetting = projectObj.project.property.displaySetting;
         let billsAutoH = displaySetting && displaySetting.billsAutoHeight?displaySetting.billsAutoHeight:false;
         let rationAutoH = displaySetting && displaySetting.rationAutoHeight?displaySetting.rationAutoHeight:false;
-        if(node.sourceType === projectObj.project.Bills.getSourceType()){
-            cell.wordWrap(billsAutoH);
-        }else {
-            cell.wordWrap(rationAutoH);
+        if(node.sourceType === projectObj.project.Bills.getSourceType()&&billsAutoH == true){
+            return true;
+        }
+        if(node.sourceType !== projectObj.project.Bills.getSourceType()&& rationAutoH == true){
+            return true;
         }
+        return false;
     },
     getEvent: function (eventName) {
         let names = eventName.split('.');

+ 65 - 17
web/building_saas/main/js/views/project_view.js

@@ -60,6 +60,9 @@ var projectObj = {
             if(!node){
                 return false;
             }
+            if(projectObj.project.isBillsLocked()== true){
+                return false;
+            }
             if(node.depth()<=1){//焦点行是树结构的第一/二层节点,灰显。
                 return false;
             }
@@ -89,6 +92,9 @@ var projectObj = {
             if(!node){
                 return false;
             }
+            if(projectObj.project.isBillsLocked()== true){
+                return false;
+            }
             if(node.depth()==0){//焦点行是树结构的第一层节点,灰显。
                 return false;
             }
@@ -116,8 +122,13 @@ var projectObj = {
         };
         let canUpMove = function (node) {
             if(node&&node.preSibling){//有前兄弟
-                if(node.sourceType==that.project.Bills.getSourceType()&&node.data.type == billType.DXFY&&node.data.isAdd!==1){
-                    return false;
+                if(node.sourceType==that.project.Bills.getSourceType()){
+                    if(projectObj.project.isBillsLocked()== true){
+                        return false;
+                    }
+                    if(node.data.type == billType.DXFY&&node.data.isAdd!==1){
+                        return false;
+                    }
                 }
                 return true
             }
@@ -125,8 +136,13 @@ var projectObj = {
         };
         let canDownMove = function (node) {
             if(node&&node.nextSibling){
-                if(node.sourceType==that.project.Bills.getSourceType()&&node.data.type == billType.DXFY&&node.data.isAdd!==1){
-                    return false;
+                if(node.sourceType==that.project.Bills.getSourceType()){
+                    if(projectObj.project.isBillsLocked()== true){
+                        return false;
+                    }
+                    if(node.data.type == billType.DXFY&&node.data.isAdd!==1){
+                        return false;
+                    }
                 }
                 return true;
             }
@@ -540,6 +556,7 @@ var projectObj = {
                 that.project.projSetting.mainGridSetting = JSON.parse(str);
                 that.project.projSetting.mainGridSetting.frozenCols = 4;
                 TREE_SHEET_HELPER.initSetting($('#billsSpread')[0], that.project.projSetting.mainGridSetting);
+                that.project.projSetting.mainGridSetting.setAutoFitRow = MainTreeCol.getEvent("setAutoFitRow");
                 that.project.projSetting.mainGridSetting.cols.forEach(function (col) {
                     col.data.splitFields = col.data.field.split('.');
                     if (col.data.getText && Object.prototype.toString.apply(col.data.getText) === "[object String]") {
@@ -582,6 +599,7 @@ var projectObj = {
                 });
                 let startShowTime = +new Date();
                 that.mainController = TREE_SHEET_CONTROLLER.createNew(that.project.mainTree, that.mainSpread.getActiveSheet(), that.project.projSetting.mainGridSetting);
+
                 that.mainController.showTreeData();
                 let endShowTime = +new Date();
                 console.log(`show data时间——${endShowTime - startShowTime}`);
@@ -591,7 +609,6 @@ var projectObj = {
 
                 that.mainSpread.getActiveSheet().startEdit();
                 that.mainSpread.getActiveSheet().endEdit();
-
                 that.mainSpread.bind(GC.Spread.Sheets.Events.LeaveCell, that.mainSpreadLeaveCell);
                 that.mainSpread.bind(GC.Spread.Sheets.Events.EnterCell, that.mainSpreadEnterCell);
                 that.mainSpread.bind(GC.Spread.Sheets.Events.EditStarting, that.mainSpreadEditStarting);
@@ -603,7 +620,6 @@ var projectObj = {
                 //let loadOtherStartTime = +new Date();
                 that.loadMainSpreadContextMenu();
                 that.loadFocusLocation();
-
                 socketObject.connect();//连接socket服务器
                 let endTime = +new Date();
                 console.log(`其它时间——${endTime - endShowTime}`);
@@ -635,6 +651,7 @@ var projectObj = {
                     name: "插入大项费用",
                     icon: 'fa-sign-in',
                     disabled: function () {
+                        return projectObj.project.isBillsLocked();
                         //return project.mainTree.selected ? project.mainTree.selected.sourceType !== project.Bills.getSourceType() : false;
                     },
                     callback: function (key, opt) {
@@ -649,7 +666,7 @@ var projectObj = {
                     icon: 'fa-sign-in',
                     disabled: function () {
                         let selected = project.mainTree.selected;
-                        if(selected&&selected.sourceType==project.Bills.getSourceType()){
+                        if(projectObj.project.isBillsLocked()== false&&selected&&selected.sourceType==project.Bills.getSourceType()){
                             if(selected.data.type==billType.FB){
                                 return false;
                             }
@@ -679,7 +696,7 @@ var projectObj = {
                     icon: 'fa-sign-in',
                     disabled: function () {
                         let selected = project.mainTree.selected;
-                        if(selected&&selected.sourceType==project.Bills.getSourceType()){
+                        if(projectObj.project.isBillsLocked()== false&& selected&&selected.sourceType==project.Bills.getSourceType()){
                             if(selected.data.type==billType.FX){//焦点行是分项,有效显示
                                 return false
                             }
@@ -715,7 +732,11 @@ var projectObj = {
                     name: "插入清单",
                     icon: 'fa-sign-in',
                     disabled: function () {
-                        return project.mainTree.selected ? project.mainTree.selected.sourceType !== project.Bills.getSourceType() : false;
+                        let selected = project.mainTree.selected;
+                        if(projectObj.project.isBillsLocked()== false && selected && selected.sourceType === project.Bills.getSourceType()){
+                            return false
+                        }
+                        return true;
                     },
                     callback: function (key, opt) {
                         if(project.mainTree.selected.data.type == billType.DXFY){
@@ -815,7 +836,7 @@ var projectObj = {
                     name: "整理分部",
                     icon: 'fa-sign-in',
                     disabled: function () {
-                       return false;
+                       return projectObj.project.isBillsLocked();
                     },
                     callback: function (key, opt) {
                         zlfb_object.getSectionInfo();
@@ -893,13 +914,15 @@ var projectObj = {
         const projectId = scUrlUtil.GetQueryString('project');
         let row = getLocalCache('lastRow:' + projectId);
         let col = getLocalCache('lastCol:' + projectId);
-        if (row !== null && col !== null) {
-            row = parseInt(row);
-            col = parseInt(col);
-            const sheet = this.mainSpread.getActiveSheet();
-            sheet.setSelection(row, col, 1, 1);
-            this.mainController.setTreeSelected(this.mainController.tree.items[row]);//触发树节点选中事件
+        if(row == null || col == null){
+            row = 0;
+            col = 0;
         }
+        row = parseInt(row);
+        col = parseInt(col);
+        const sheet = this.mainSpread.getActiveSheet();
+        sheet.setSelection(row, col, 1, 1);
+        this.mainController.setTreeSelected(this.mainController.tree.items[row]);//触发树节点选中事件
     },
     // 选中区域合计数字
     amountAreaNumber: function(e, info) {
@@ -1107,8 +1130,18 @@ var projectObj = {
             style.font = 'bold 13px Arial';
         }
         return style;
+    },
+    loadLockBillsButton:function () {
+        if(projectInfoObj.projectInfo.property.lockBills == true){
+            $("a[name='lockBills']").prop("title","解锁清单");
+            $("a[name='lockBills']").html('<i class="fa fa-unlock-alt" aria-hidden="true"></i> 解锁清单');
+        }else {
+            $("a[name='lockBills']").prop("title","锁定清单");
+            $("a[name='lockBills']").html('<i class="fa fa-lock" aria-hidden="true"></i> 锁定清单');
+        }
     }
-    
+
+
 };
 // 点击合计框中的复制
 $("body").on("click", "#total-tips a", function() {
@@ -1194,6 +1227,18 @@ $('#downMove').click(function () {
         };
     }
 });
+$("a[name='lockBills']").click(function () {
+    let lockBills = projectInfoObj.projectInfo.property.lockBills;
+    lockBills = !lockBills;
+    projectObj.project.updateLockBills(lockBills,function () {
+        var controller = projectObj.mainController, project = projectObj.project;
+        var selected = controller.tree.selected;
+        let nodes = _.filter(project.mainTree.items,{'sourceType':ModuleNames.bills});
+        controller.refreshTreeNode(nodes);
+        projectObj.mainController.setTreeSelected(selected);//触发树节点选中事件
+        projectObj.loadLockBillsButton();
+    });
+});
 //显示至..
 let displayLevel = function(nodes, depth, type){
     let refreshNodes = [];
@@ -1512,6 +1557,9 @@ function ifCanDelete() {
                 if(node.data.type == billType.DXFY&&node.data.isAdd!=1){
                     return false;
                 }
+                if(projectObj.project.isBillsLocked()== true){
+                    return false;
+                }
             }
             if(m_selection!=true&&node.sourceType === projectObj.project.ration_glj.getSourceType()){//多选的时候不做这一项判断
                 return false;