Sfoglia il codice sorgente

清单精灵树,容错处理,兼容同层数据NextSibling出错的情况
项目管理,开始-新建

zhongzewei 7 anni fa
parent
commit
112a9a1345

+ 2 - 2
web/building_saas/css/custom.css

@@ -259,9 +259,9 @@ legend.legend{
     white-space:nowrap;
 }
 
-.dropdown-toggle::after{
+/*.dropdown-toggle::after{
     vertical-align:.5em
-}
+}*/
 #esInput{
     font-size:13px;
     color: black;

+ 14 - 2
web/building_saas/main/js/views/billsElf.js

@@ -269,11 +269,11 @@ const BillsElf = (function() {
                 guidanceLibID = projectInfoObj.projectInfo.engineeringInfo.billsGuidance_lib[0] ? projectInfoObj.projectInfo.engineeringInfo.billsGuidance_lib[0].id : null;
             }
             CommonAjax.post('/billsGuidance/api/getItemsByCode', {guidanceLibID: guidanceLibID, code: nineCode}, function (rstData) {
-                //定额数据删除编号信息
+                //定额数据删除编号信息,(编码后+空格才会去除编码)
                 for(let rData of rstData){
                     if(rData.type === itemType.ration){
                         let nameArr = rData.name.split(' ');
-                        if(nameArr.length > 0){
+                        if(nameArr.length > 1){
                             nameArr.splice(0, 1);
                             rData.name = nameArr.join(' ');
                         }
@@ -362,6 +362,7 @@ const BillsElf = (function() {
             let obj = IDMapping[ID];
             if(!obj.pre){
                 first = obj;
+                break;
             }
         }
         while(first){
@@ -370,6 +371,17 @@ const BillsElf = (function() {
             rst.push(first.self);
             first = first.next;
         }
+        //兼容同层节点NextSibling错误的情况下,同层节点还是能显示出来(但是无法保证正确的顺序)
+        //兼容模式下,不按照NextSibling排序,直接按照options元素位置排序
+        if (rank !== options.length) {
+            rst = [];
+            rank = 0;
+            for (let opt of options) {
+                rank++;
+                opt.rank = rank;
+                rst.push(opt);
+            }
+        }
 
         return rst;
     }

+ 1 - 1
web/building_saas/pm/html/project-management-Recycle.html

@@ -1,5 +1,5 @@
 <div class="toolsbar">
-    <legend class="m-0 pb-1">回收站</legend>
+    <legend class="m-0 px-4 pb-1">回收站</legend>
 </div>
 <div class="top-content">
   <!--  <div class="main-data-top" id="gc_waiting">

+ 1 - 1
web/building_saas/pm/html/project-management-share.html

@@ -1,5 +1,5 @@
 <div class="toolsbar">
-    <legend class="m-0 pb-1">分享</legend>
+    <legend class="m-0 px-4 pb-1">分享</legend>
 </div>
 <div class="share-list" id="shareSpread">
 </div>

+ 10 - 2
web/building_saas/pm/html/project-management.html

@@ -66,7 +66,7 @@
             <div class="pm-side">
                 <div class="poj-cate">
                     <div class="dropdown">
-                        <a class="btn btn-light dropdown-toggle" data-toggle="dropdown">
+                        <a class="btn dropdown-toggle" data-toggle="dropdown">
                             <i class="fa fa-search"></i>
                         </a>
                         <div class="dropdown-menu p-3" aria-labelledby="dropdownMenuButton">
@@ -101,7 +101,15 @@
                 <div class="tab-content">
                     <div class="tab-pane active" id="pm_all" role="tabpanel">
                         <div class="toolsbar">
-                            <legend class="m-0 pb-1">全部</legend>
+                            <legend class="m-0 px-4 pb-1">全部
+                                <div class="tools-btn btn-group align-top px-3 ">
+                                    <div class="dropdown">
+                                        <a id="startA" class="btn btn-sm" href="javascript:void(0);" role="button" data-toggle="modal" aria-haspopup="true" aria-expanded="false">
+                                            新建
+                                        </a>
+                                    </div>
+                                </div>
+                            </legend>
                         </div>
                         <div class="poj-list" id="projSpread">
                         </div>

+ 197 - 203
web/building_saas/pm/js/pm_newMain.js

@@ -191,10 +191,196 @@ const projTreeObj = {
             this.setOptions(newWorkBook, setting.options);
             this.buildHeader(newWorkBook.getActiveSheet(), setting.header);
             this.bindEvent(newWorkBook);
-            this.loadContextMenu()
+            this.loadContextMenu();
+            this.loadStartMenu();
         }
         return newWorkBook;
     },
+    //右键菜单项
+    contextMenuItems: {
+        addFolder: {
+            name: "新建文件夹",
+            icon: 'fa-folder-o',
+            disabled: function () {
+                return false;
+            },
+            callback: function (key, opt) {
+                $("#add-folder-dialog").modal("show");
+                setTimeout(function () {
+                    $('#folder-name')[0].focus();
+                }, 300);
+            }
+        },
+        addProject: {
+            name: "新建建设项目",
+            icon: 'fa-cubes',
+            disabled: function () {
+                return false;
+            },
+            callback: function (key, opt) {
+                $('#add-project-dialog').modal('show');
+                setTimeout(function () {
+                    $('#project-name')[0].focus();
+                }, 300);
+            },
+        },
+        addEngineering: {
+            name: "新建单项工程",
+            icon: 'fa-cube',
+            disabled: function () {
+                let node = projTreeObj.tree.selected;
+                if(node && node.data.projType !== projectType.folder){
+                    return false;
+                }
+                return true;
+            },
+            callback: function (key, opt) {
+                let selectedItem = projTreeObj.tree.selected;
+                try {
+                    if(selectedItem !== null  && selectedItem.data.projType !== projectType.folder){
+                        $("#add-engineering-dialog").modal("show");
+                        setTimeout(function () {
+                            $('#engineering-name')[0].focus();
+                        }, 300);
+                    }
+
+                } catch (error) {
+                    alert(error);
+                }
+            }
+        },
+        addTender: {
+            name: "新建单位工程",
+            icon: 'fa-sticky-note-o',
+            disabled: function () {
+                return false;
+            },
+            callback: function (key, opt) {
+                //弹出新建单位工程之前,判断当前使用版本,且当前使用单位工程数是否已到最大值
+                let selectedItem = projTreeObj.tree.selected;
+                $("#add-tender-dialog").modal("show");
+            }
+        },
+        rename: {
+            name: "重命名",
+            icon: 'fa-edit',
+            disabled: function () {
+                return !projTreeObj.tree.selected;
+            },
+            callback: function (key, opt) {
+                $('#rename-name').val(projTreeObj.tree.selected.data.name ? projTreeObj.tree.selected.data.name : '');
+                $('#rename-dialog').modal('show');
+                setTimeout(function () {
+                    $('#rename-name')[0].focus();
+                }, 300);
+            }
+        },
+        delete: {
+            name: "删除",
+            icon: 'fa-remove',
+            disabled: function () {
+                let node = projTreeObj.tree.selected;
+                return !node || (node.data.projType === projectType.folder && node.children.length > 0);
+            },
+            callback: function (key, opt) {
+                if (projTreeObj.tree && projTreeObj.tree.selected) {
+                    $('#del').modal('show');
+                }
+            }
+        },
+        copyTo: {
+            name: "复制到",
+            icon: 'fa-copy',
+            disabled: function () {
+                let node = projTreeObj.tree.selected;
+                return !(node && node.data.projType === projectType.tender);
+            },
+            callback: function (key, opt) {
+                let selectedItem = projTreeObj.tree.selected;
+                try {
+                    let selectedType = selectedItem !== null && selectedItem.data !== undefined ?
+                        selectedItem.data.projType : '';
+                    if (selectedType !== projectType.tender) {
+                        throw '请选择单位工程进行复制';
+                    }
+                } catch (error) {
+                    alert(error);
+                    return false;
+                }
+                //更新选中项目缓存
+                $('#copy-to-dialog').modal('show');
+            }
+        },
+        share: {
+            name: "分享",
+            icon: 'fa-share',
+            disabled: function () {
+                let selectedItem = projTreeObj.tree.selected;
+                return !selectedItem;
+                //return !(selectedItem && selectedItem.data.projType === projectType.tender);
+            },
+            callback: function (key, opt) {
+                let selected = projTreeObj.tree.selected;
+                $('#sharePhone').val('');
+                $('#share-info').hide();
+                $('#shareFindDiv').hide();
+                setShareToModal(selected);
+                $('#share').modal('show');
+                setTimeout(function () {
+                    $('#sharePhone').focus();
+                }, 200);
+            }
+        },
+        manageFiles: {
+            name: "管理相关文件",
+            icon: 'fa-list',
+            disabled: function () {
+                let selectedItem = projTreeObj.tree.selected;
+                return !(selectedItem && selectedItem.data.projType !== projectType.folder);
+            },
+            callback: function (key, opt) {
+                setDataToSideBar();
+                $(".slide-sidebar").animate({width:"440"}).addClass("open");
+                setTimeout(function () {
+                    $("body").bind('click', function (event) {
+                        var e = event || window.event; //浏览器兼容性
+                        if (!$(event.target).is('a')) {
+                            var elem = event.target || e.srcElement;
+                            while (elem) { //循环判断至跟节点,防止点击的是div子元素
+                                if (elem.className == "open-sidebar" || elem.className == 'slide-sidebar open') {
+                                    return false;
+                                }
+                                if($(elem).attr('id') && $(elem).attr('id') === 'del-wj'){
+                                    return false;
+                                }
+                                elem = elem.parentNode;
+                            }
+                            $(".slide-sidebar").animate({width: "0"}).removeClass("open")// 关闭处理
+                            $('body').unbind('click');
+                        }
+                    });
+                }, 500);
+            }
+        },
+        refreshSummary: {
+            name: "刷新当前项目造价",
+            icon: 'fa-refresh',
+            disabled: function () {
+                let selectedItem = projTreeObj.tree.selected;
+                return !(selectedItem && selectedItem.data.projType !== projectType.folder);
+            },
+            callback: function (key, opt) {
+                //获取当前节点的建设项目ID
+                projTreeObj.refreshProjectData();
+            }
+        }
+    },
+    //全部-开始(新建)按钮弹出菜单(新建单位工程)
+    loadStartMenu: function () {
+        let me = this;
+        $('#startA').click(me.contextMenuItems.addTender.callback);
+    },
+    //spread中鼠标右键弹出菜单
     loadContextMenu: function () {
         let me = this;
         $.contextMenu({
@@ -205,211 +391,19 @@ const projTreeObj = {
                 return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
             },
             items: {
-                "addFolder": {
-                    name: "新建文件夹",
-                    icon: 'fa-folder-o',
-                    disabled: function () {
-                        return false;
-                    },
-                    callback: function (key, opt) {
-                        $("#add-folder-dialog").modal("show");
-                        setTimeout(function () {
-                            $('#folder-name')[0].focus();
-                        }, 300);
-                    }
-                },
-                "addProject": {
-                    name: "新建建设项目",
-                    icon: 'fa-cubes',
-                    disabled: function () {
-                        return false;
-                    },
-                    callback: function (key, opt) {
-                        $('#add-project-dialog').modal('show');
-                        setTimeout(function () {
-                            $('#project-name')[0].focus();
-                        }, 300);
-                    }
-                },
-                "addEngineering": {
-                    name: "新建单项工程",
-                    icon: 'fa-cube',
-                    disabled: function () {
-                        let node = me.tree.selected;
-                        if(node && node.data.projType !== projectType.folder){
-                            return false;
-                        }
-                        return true;
-                    },
-                    callback: function (key, opt) {
-                        let selectedItem = me.tree.selected;
-                        try {
-                            if(selectedItem !== null  && selectedItem.data.projType !== projectType.folder){
-                                $("#add-engineering-dialog").modal("show");
-                                setTimeout(function () {
-                                    $('#engineering-name')[0].focus();
-                                }, 300);
-                            }
-
-                        } catch (error) {
-                            alert(error);
-                        }
-                    }
-                },
-                "addTender": {
-                    name: "新建单位工程",
-                    icon: 'fa-sticky-note-o',
-                    disabled: function () {
-                        return false;
-                    },
-                    callback: function (key, opt) {
-                        //弹出新建单位工程之前,判断当前使用版本,且当前使用单位工程数是否已到最大值
-                        let selectedItem = me.tree.selected;
-                        $("#add-tender-dialog").modal("show");
-                    }
-                },
+                "addFolder": me.contextMenuItems.addFolder,
+                "addProject": me.contextMenuItems.addProject,
+                "addEngineering": me.contextMenuItems.addEngineering,
+                "addTender": me.contextMenuItems.addTender,
                 "spr1": '--------',
-                "rename": {
-                    name: "重命名",
-                    icon: 'fa-edit',
-                    disabled: function () {
-                        return !me.tree.selected;
-                    },
-                    callback: function (key, opt) {
-                        $('#rename-name').val(projTreeObj.tree.selected.data.name ? projTreeObj.tree.selected.data.name : '');
-                        $('#rename-dialog').modal('show');
-                        setTimeout(function () {
-                            $('#rename-name')[0].focus();
-                        }, 300);
-                    }
-                },
-                "delete": {
-                    name: "删除",
-                    icon: 'fa-remove',
-                    disabled: function () {
-                        let node = me.tree.selected;
-                        return !node || (node.data.projType === projectType.folder && node.children.length > 0);
-                    },
-                    callback: function (key, opt) {
-                        if (projTreeObj.tree && projTreeObj.tree.selected) {
-                            $('#del').modal('show');
-                        }
-                    }
-                },
-                "copyTo": {
-                    name: "复制到",
-                    icon: 'fa-copy',
-                    disabled: function () {
-                        let node = me.tree.selected;
-                        return !(node && node.data.projType === projectType.tender);
-                    },
-                    callback: function (key, opt) {
-                        let selectedItem = projTreeObj.tree.selected;
-                        try {
-                            let selectedType = selectedItem !== null && selectedItem.data !== undefined ?
-                                selectedItem.data.projType : '';
-                            if (selectedType !== projectType.tender) {
-                                throw '请选择单位工程进行复制';
-                            }
-                        } catch (error) {
-                            alert(error);
-                            return false;
-                        }
-                        //更新选中项目缓存
-                        $('#copy-to-dialog').modal('show');
-                    }
-                },
+                "rename": me.contextMenuItems.rename,
+                "delete": me.contextMenuItems.delete,
+                "copyTo": me.contextMenuItems.copyTo,
                 "spr2": '--------',
-                "share": {
-                    name: "分享",
-                    icon: 'fa-share',
-                    disabled: function () {
-                        let selectedItem = projTreeObj.tree.selected;
-                        return !selectedItem;
-                        //return !(selectedItem && selectedItem.data.projType === projectType.tender);
-                    },
-                    callback: function (key, opt) {
-                        let selected = projTreeObj.tree.selected;
-                        $('#sharePhone').val('');
-                        $('#share-info').hide();
-                        $('#shareFindDiv').hide();
-                        setShareToModal(selected);
-                        $('#share').modal('show');
-                        setTimeout(function () {
-                            $('#sharePhone').focus();
-                        }, 200);
-                    }
-                },
-               /* 'cancelShare': {
-                    name: '取消分享',
-                    icon: 'fa-ban',
-                    disabled: function () {
-                        let selected = projTreeObj.tree.selected;
-                        return !(selected && selected.data.shareInfo && selected.data.shareInfo.length > 0);
-                    },
-                    callback: function () {
-                        let selected = projTreeObj.tree.selected;
-                        setShareToModal(selected);
-                        $('#shareTo').modal('show');
-                    }
-                },*/
+                "share": me.contextMenuItems.share,
                 "spr3": '--------',
-                "manageFiles": {
-                    name: "管理相关文件",
-                    icon: 'fa-list',
-                    disabled: function () {
-                        let selectedItem = projTreeObj.tree.selected;
-                        return !(selectedItem && selectedItem.data.projType !== projectType.folder);
-                    },
-                    callback: function (key, opt) {
-                        setDataToSideBar();
-                        $(".slide-sidebar").animate({width:"440"}).addClass("open");
-                        setTimeout(function () {
-                            $("body").bind('click', function (event) {
-                                var e = event || window.event; //浏览器兼容性
-                                if (!$(event.target).is('a')) {
-                                    var elem = event.target || e.srcElement;
-                                    while (elem) { //循环判断至跟节点,防止点击的是div子元素
-                                        if (elem.className == "open-sidebar" || elem.className == 'slide-sidebar open') {
-                                            return false;
-                                        }
-                                        if($(elem).attr('id') && $(elem).attr('id') === 'del-wj'){
-                                            return false;
-                                        }
-                                        elem = elem.parentNode;
-                                    }
-                                    $(".slide-sidebar").animate({width: "0"}).removeClass("open")// 关闭处理
-                                    $('body').unbind('click');
-                                }
-                            });
-                        }, 500);
-                    }
-                },
-                "refreshSummary": {
-                    name: "刷新当前项目造价",
-                    icon: 'fa-refresh',
-                    disabled: function () {
-                        let selectedItem = projTreeObj.tree.selected;
-                        return !(selectedItem && selectedItem.data.projType !== projectType.folder);
-                    },
-                    callback: function (key, opt) {
-                        //获取当前节点的建设项目ID
-                        projTreeObj.refreshProjectData();
-                      /*  let project = projTreeObj.tree.selected;
-                        while (project.data.projType !== projectType.project && project.parent){
-                            project = project.parent;
-                        }
-                        if(project && project.data.ID){
-                            $.bootstrapLoading.start();
-                            CommonAjax.post('/pm/api/getSummaryInfo', {user_id: userID, projectIDs: [project.data.ID]}, function (summaryInfo) {
-                                refreshProjSummary(project, summaryInfo);
-                                $.bootstrapLoading.end();
-                            }, function () {
-                                $.bootstrapLoading.start();
-                            });
-                        }*/
-                    }
-                }
+                "manageFiles": me.contextMenuItems.manageFiles,
+                "refreshSummary": me.contextMenuItems.refreshSummary
             }
         });
     },