瀏覽代碼

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

zhangweicheng 7 年之前
父節點
當前提交
13a4a7bf0f

+ 1 - 1
modules/pm/controllers/pm_controller.js

@@ -125,7 +125,7 @@ module.exports = {
     },
     copyProjects: function (req, res) {
         let data = JSON.parse(req.body.data);
-        ProjectsData.copyUserProjects(req.session.sessionUser.ssoId, data.updateData, function (err, message, data) {
+        ProjectsData.copyUserProjects(req.session.sessionUser.ssoId, req.session.sessionCompilation._id, data.updateData, function (err, message, data) {
             if (err === 0) {
                 callback(req, res, err, message, data);
             } else {

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

@@ -287,7 +287,7 @@ ProjectsDAO.prototype.udpateUserFiles = async function (userId, datas, callback)
     }
 };
 
-ProjectsDAO.prototype.copyUserProjects = function (userId, datas, callback) {
+ProjectsDAO.prototype.copyUserProjects = function (userId, compilationId, datas, callback) {
     let data, project, updateLength = 0, hasError = false, deleteInfo = null, tempType = 1, i;
     let updateAll = function (err) {
         if (!err) {
@@ -306,7 +306,9 @@ ProjectsDAO.prototype.copyUserProjects = function (userId, datas, callback) {
             if (data.updateType === 'update') {
                 Projects.update({userID: userId, ID: data.updateData.ID}, data.updateData, updateAll)
             } else if (data.updateType === 'copy') {
+                console.log(userId);
                 data.updateData['userID'] = userId;
+                data.updateData['compilation'] = compilationId;
                 data.updateData['createDateTime'] = new Date();
                 let newProject = new Projects(data.updateData);
                 newProject['srcProjectId'] = data.srcProjectId;

+ 52 - 0
web/building_saas/css/main.css

@@ -33,6 +33,13 @@ body {
     width:100%;
     z-index: 999
 }
+/*add*/
+.in-1{padding-left:0px!important}
+.in-2{padding-left:21px!important}
+.in-3{padding-left:42px!important}
+.in-4{padding-left:63px!important}
+.in-5{padding-left:84px!important}
+.in-6{padding-left:105px!important}
 .main {
     position: relative;
     background: #f7f7f9;
@@ -66,6 +73,7 @@ body {
 .main-nav .nav-tabs{
     border-bottom: none
 }
+
 .poj-manage .col-auto{
     background:#f7f7f9
 }
@@ -269,6 +277,16 @@ body {
 .poj-list, .side-content ,.form-view{
     overflow: auto;
 }
+/*add*/
+.poj-list span.poj-icon {
+    padding-right:7px;
+    color:#ccc
+}
+/*add*/
+.poj-list a.tree-open,.poj-list a.tree-close{
+    width:15px;
+    display: inline-block;
+}
 .print-toolsbar{
     padding:5px
 }
@@ -331,6 +349,40 @@ body {
 .dropdown-item.disabled, .dropdown-item:disabled{
     pointer-events:none
 }
+/*add*/
+.text-green{
+    color: #172a30
+}
+/*add*/
+label.title{
+    display: inline-block;
+    width: 100px;
+}
+/*add*/
+.modal-feeRate {max-width: 550px}
+/*add*/
+.gc-column-header-cell{
+    text-align: center!important;
+}
+/*add*/
+div.resize{
+    height: 4px;
+    background: #f7f7f9;
+    width: 100%;
+    cursor: s-resize;
+}
+/*add*/
+.zlfb-check{
+    margin-left: 0;
+}
+/*add*/
+legend.legend{
+    display:block;
+    width:auto;
+    font-size:0.9rem;
+    top:-15px;
+    background: white;
+}
 .tools-symbol{
     width:450px
 }

+ 6 - 6
web/building_saas/pm/html/project-management.html

@@ -63,7 +63,7 @@
                     </div>
                     <ul class="nav nav-pills flex-column">
                         <li class="nav-item">
-                            <a class="nav-link active" href="#pm_all" role="tab" id="tab_pm_all" data-toggle="tooltip" data-placement="right" data-original-title="全部"><i class="fa fa-bars"></i></a>
+                            <a class="nav-link active" href="#pm_all" role="tab" id="tab_pm_all" data-toggle="tab" data-placement="right" data-original-title="全部"><i class="fa fa-bars"></i></a>
                         </li>
                         <li class="nav-item">
                             <a class="nav-link" href="#"  data-toggle="tooltip" data-placement="right" data-original-title="最近使用"><i class="fa fa-bookmark"></i></a>
@@ -78,14 +78,14 @@
                             <a class="nav-link" href="#"  data-toggle="tooltip" data-placement="right" data-original-title="归档"><i class="fa fa-book"></i></a>
                         </li>
                         <li class="nav-item">
-                            <a class="nav-link" href="#pm_gc" id="tab_pm_gc" data-toggle="tooltip" data-placement="right" data-original-title="回收站"><i class="fa fa-trash"></i></a>
+                            <a class="nav-link" href="#pm_gc" id="tab_pm_gc" data-toggle="tab" data-placement="right" data-original-title="回收站"><i class="fa fa-trash"></i></a>
                         </li>
                     </ul>
                 </div>
             </div>
             <div class="pm-content">
                 <div class="tab-content">
-                    <div class="tab-pane active">
+                    <div class="tab-pane active" id="pm_all" role="tabpanel">
                         <div class="toolsbar">
                             <div class="tools-btn btn-group align-top">
                                 <a href="javascript:void(0);"  id="add-tender-btn" class="btn btn-sm"><i class="fa fa-sticky-note-o"></i>新建单位工程</a>
@@ -108,9 +108,9 @@
                         </div>
                         <div class="poj-list" id="projSpread">
                         </div>
-                        <div class="tab-pane" role="tabpanel" id="pm_gc">
-                            <%include project-management-Recycle.html %>
-                        </div>
+                    </div>
+                    <div class="tab-pane" role="tabpanel" id="pm_gc">
+                        <%include project-management-Recycle.html %>
                     </div>
                 </div>
             </div>

+ 71 - 51
web/building_saas/pm/js/pm_newMain.js

@@ -395,22 +395,6 @@ const projTreeObj = {
         };
         me.renderSheetFuc(sheet, fuc);
     },
-    addRow: function (node) {
-        const sheet = this.workBook.getActiveSheet();
-        const items = this.tree.items;
-        const rIdx = items.indexOf(node);
-        const cIdx = sheet.getActiveColumnIndex();
-        sheet.addRows(rIdx, 1);
-        //set selection selected
-        sheet.setSelection(rIdx, cIdx, 1, 1);
-        this.tree.selected = node;
-        //父节点收起时添加子节点,子节点添加完后隐藏
-        if(node.parent && !node.parent.expanded){
-            sheet.setRowVisible(rIdx, false);
-        }
-        sheet.getCell(rIdx, 0).cellType(this.getTreeNodeCell(this.tree));
-        this.refreshNodeData(sheet, node);
-    },
     refreshNodeData: function (sheet, node) {
         let me = this;
         //解决字段名不同
@@ -426,27 +410,47 @@ const projTreeObj = {
             node.data.feeRateFile = node.data.property && node.data.property.feeFile && node.data.property.feeFile.name ? node.data.property.feeFile.name : '';
             node.data.createDateTime = node.data.createDateTime ? new Date(node.data.createDateTime).Format('yyyy-MM-dd') : '';
         }
-        this.renderSheetFuc(sheet, function () {
-            let rIdx = me.tree.items.indexOf(node);
-            for(let col = 0; col < me.setting.header.length; col++){
-                let dataCode = me.setting.header[col]['dataCode'];
-                sheet.setValue(rIdx, col, node.data[dataCode]);
-            }
-        });
+        let rIdx = me.tree.items.indexOf(node);
+        for(let col = 0; col < me.setting.header.length; col++){
+            let dataCode = me.setting.header[col]['dataCode'];
+            sheet.setValue(rIdx, col, node.data[dataCode]);
+        }
     },
     insert: function (data, parent, next) {
         let node = this.tree.addNodeData(data, parent, next);
         this.addRow(node);
         return node;
     },
-    remove: function (sheet) {
+    addRow: function (node) {
+        const me = this;
+        const sheet = this.workBook.getActiveSheet();
+        me.renderSheetFuc(sheet, function () {
+            const items = me.tree.items;
+            const rIdx = items.indexOf(node);
+            const cIdx = sheet.getActiveColumnIndex();
+            sheet.addRows(rIdx, 1);
+            //set selection selected
+            sheet.setSelection(rIdx, cIdx, 1, 1);
+            me.tree.selected = node;
+            //父节点收起时添加子节点,子节点添加完后隐藏
+            if(node.parent && !node.parent.expanded){
+                sheet.setRowVisible(rIdx, false);
+            }
+            sheet.getCell(rIdx, 0).cellType(me.getTreeNodeCell(me.tree));
+            me.refreshNodeData(sheet, node);
+        });
+    },
+    remove: function (sheet, rIdx, count) {
         let me = this;
         me.renderSheetFuc(sheet, function () {
-            let rIdx = me.tree.items.indexOf(me.tree.selected);
-            sheet.deleteRows(rIdx - 1, me.tree.selected.posterityCount());
+            sheet.deleteRows(rIdx, count);
             sheet.setRowCount(me.tree.items.length);
             me.initSelection(sheet.getActiveRowIndex());
         });
+    },
+    move: function (orgRow, newRow) {
+        this.workBook.getActiveSheet().deleteRows(orgRow, 1);
+        this.addRow(this.tree.items[newRow]);
     }
 };
 
@@ -696,10 +700,14 @@ $(document).ready(function() {
             updateData = GetDeleteUpdateData(projTreeObj.tree.selected);
             UpdateProjectData(updateData, function () {
                 dialog.modal('hide');
+                //删除行号
+                let rIdx = projTreeObj.tree.items.indexOf(projTreeObj.tree.selected);
+                //删除行数
+                let rCout = projTreeObj.tree.selected.posterityCount() + 1;
                 projTreeObj.tree.removeNode(projTreeObj.tree.selected);
                 //delete view
                 let sheet = projTreeObj.workBook.getActiveSheet();
-                projTreeObj.remove(sheet);
+                projTreeObj.remove(sheet, rIdx, rCout);
             });
         }
     });
@@ -787,9 +795,18 @@ $(document).ready(function() {
                 projectType: null
             };
             updateData = GetUpdateData(null, parent, next, '', null, projTreeObj.tree.selected.id(), typeInfo);
+            //维护cur pre
+            let curPre = cur.preSibling();
+            if(curPre){
+                updateData.push({updateType: 'update', updateData: {ID: curPre.id(), NextSiblingID: cur.nid()}});
+            }
             UpdateProjectData(updateData, function (data) {
                 dialog.modal('hide');
+                let orgRow = projTreeObj.tree.items.indexOf(projTreeObj.tree.selected);
                 projTreeObj.tree.move(projTreeObj.tree.selected, parent, next);
+                let newRow = projTreeObj.tree.items.indexOf(projTreeObj.tree.selected);
+                //view move
+                projTreeObj.move(orgRow, newRow);
             });
         } else {
             dialog.modal('hide');
@@ -798,7 +815,7 @@ $(document).ready(function() {
 
     // 复制到按钮点击
     $('#copy-to-btn').click(function () {
-        let selectedItem = Tree.selected();
+        let selectedItem = projTreeObj.tree.selected;
         try {
             let selectedType = selectedItem !== null && selectedItem.data !== undefined ?
                 selectedItem.data.projType : '';
@@ -813,7 +830,7 @@ $(document).ready(function() {
     });
     // 复制到弹层替换
     $('#copy-to-dialog').on('show.bs.modal', function () {
-        copytoZTree = ConvertTreeToZtree(Tree, $('#treeDemo2'), null);
+        copytoZTree = ConvertTreeToZtree(projTreeObj.tree, $('#treeDemo2'), null);
     });
 
     // 复制到操作
@@ -823,7 +840,7 @@ $(document).ready(function() {
         let parent = null;
         let next = null;
         let pre = null;
-        let cur = Tree.selected();
+        let cur = projTreeObj.tree.selected;
         if (!target) {
             return false;
         }
@@ -874,15 +891,16 @@ $(document).ready(function() {
                     updateData = {};
                     updateData['updateType'] = 'update';
                     updateData['updateData'] = {};
-                    updateData['updateData'][Tree.setting.tree.id] = pre.id();
-                    updateData['updateData'][Tree.setting.tree.nid] = node.tree.maxNodeId() + 1;
+                    updateData['updateData'][projTreeObj.tree.setting.tree.id] = pre.id();
+                    updateData['updateData'][projTreeObj.tree.setting.tree.nid] = projTreeObj.tree.maxNodeId() + 1;
                 }
-                Tree.maxNodeId(IDs.lowID - 1);
+                console.log(updateData);
+                projTreeObj.tree.maxNodeId(IDs.lowID - 1);
                 CommonAjax.post('/pm/api/copyProjects', {updateData: updateData, user_id: userID}, function (data) {
                     dialog.modal('hide');
                     data.forEach(function (nodeData) {
                         if (nodeData.updateType === 'copy') {
-                            Tree.addNodeData(nodeData.updateData, parent, next);
+                            projTreeObj.insert(nodeData.updateData, parent, next);
                         }
                     });
                 }, function () {
@@ -1073,20 +1091,20 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
         GetNewProjectId(3, function (IDs) {
             let projID = IDs.lowID, engID = IDs.lowID + 1, tenderID = IDs.lowID + 2;
             if(!selected || selected.data.projType === projectType.project){
-                parent = selected ? selected.parent : Tree._root;
+                parent = selected ? selected.parent : projTreeObj.tree._root;
                 pre = selected;
-                next = selected ? selected.nextSibling : Tree.firstNode();
+                next = selected ? selected.nextSibling : projTreeObj.tree.firstNode();
             }
             else if(selected.data.projType === projectType.folder){
-                parent = selected ? selected : Tree._root;
-                pre = selected ? selected.lastChild() : Tree.firstNode();
+                parent = selected ? selected : projTreeObj.tree._root;
+                pre = selected ? selected.lastChild() : projTreeObj.tree.firstNode();
                 next = null;
             }
             else if(selected.data.projType === projectType.engineering || selected.data.projType === projectType.tender){
                 let selectedProj = selected.parent.data.projType === projectType.project ? selected.parent : selected.parent.parent;
-                parent = selectedProj ? selectedProj.parent : Tree._root;
+                parent = selectedProj ? selectedProj.parent : projTreeObj.tree._root;
                 pre = selectedProj;
-                next = selectedProj ? selectedProj.nextSibling : Tree.firstNode();
+                next = selectedProj ? selectedProj.nextSibling : projTreeObj.tree.firstNode();
             }
             let updateProjs = GetUpdateData(pre, parent, next, projName, null, projID, {updateType: 'new', projectType: projectType.project});
             let updateEng = {updateType: 'new', updateData: {ID: engID, ParentID: projID, NextSiblingID: -1, name: engName, projType: projectType.engineering}};
@@ -1290,7 +1308,7 @@ function getProjs(selected){
     let temp;
     let firstNode;
     if(!selected){
-        temp = projTreeObj.tree.roots;
+        temp = projTreeObj.tree._root;
         firstNode = temp.children[0];
     }
     else if(selected.data.projType === projectType.folder){
@@ -1311,17 +1329,19 @@ function getProjs(selected){
             rst.push(childNode);
         }
     }
-    //firstNode to first place
-    let index = null;
-    for(let i = 0, len = rst.length; i < len; i++){
-        if(rst[i].data.ID === firstNode.data.ID){
-            index = i;
-            break;
+    if(firstNode){
+        //firstNode to first place
+        let index = null;
+        for(let i = 0, len = rst.length; i < len; i++){
+            if(rst[i].data.ID === firstNode.data.ID){
+                index = i;
+                break;
+            }
+        }
+        if(index){
+            rst.splice(index, 1);
+            rst.splice(0, 0, firstNode);
         }
-    }
-    if(index){
-        rst.splice(index, 1);
-        rst.splice(0, 0, firstNode);
     }
     return rst;
 }

+ 0 - 1
web/building_saas/pm/js/pm_tree.js

@@ -319,7 +319,6 @@ const pmTree = {
                                 node.parent.children[iIndex - 1].setNextSibling(node.nextSibling);
                             }
                             node.parent.children.splice(iIndex, 1);
-                            this.refreshNodesDom([node.parent], false);
                         }
 
                         if (nextSibling) {