浏览代码

台账分解,收起节点

MaiXinRong 7 年之前
父节点
当前提交
fa69f44529

+ 0 - 1
app/controller/ledger_controller.js

@@ -63,7 +63,6 @@ module.exports = app => {
                 }
                 const data = JSON.parse(ctx.request.body.data);
                 const id = data.id;
-                console.log('tenderId: ' + tenderId + ' ledger_id: ' + id);
                 if (isNaN(id) || id <= 0) {
                     throw '参数错误';
                 }

+ 28 - 3
app/public/js/path_tree.js

@@ -70,6 +70,7 @@ const createNewPathTree = function (setting) {
         for (const node of this.nodes) {
             const children = this.getChildren(node);
             node.expanded = children.length > 0;
+            node.visible = true;
         }
     };
     /**
@@ -88,8 +89,11 @@ const createNewPathTree = function (setting) {
                 }
             } else {
                 const keyName = itemsPre + data[treeSetting.id];
-                this.items[keyName] = JSON.parse(JSON.stringify(data));
-                this.datas.push(this.items[keyName]);
+                const node = JSON.parse(JSON.stringify(data));
+                this.items[keyName] = node;
+                this.datas.push(node);
+                node.expanded = false;
+                node.visible = true;
             }
         }
         this.sortTreeNode();
@@ -133,7 +137,7 @@ const createNewPathTree = function (setting) {
     proto.getPosterity = function (node) {
         const reg = new RegExp('^' + node.full_path);
         return this.datas.filter(function (x) {
-            return reg.check(x.full_path);
+            return reg.test(x.full_path);
         })
     };
     /**
@@ -145,6 +149,27 @@ const createNewPathTree = function (setting) {
         const siblings = this.getChildren(this.getParent(node));
         return node.order === siblings.length;
     };
+    /**
+     * 刷新子节点是否可见
+     * @param {Object} node
+     * @private
+     */
+    proto._refreshChildrenVisible = function (node) {
+        const children = this.getChildren(node);
+        for (const child of children) {
+            child.visible = node.expanded && node.visible;
+            this._refreshChildrenVisible(child);
+        }
+    }
+    /**
+     * 设置节点是否展开, 并控制子节点可见
+     * @param {Object} node
+     * @param {Boolean} expanded
+     */
+    proto.setExpanded = function (node, expanded) {
+        node.expanded = expanded;
+        this._refreshChildrenVisible(node);
+    };
 
     /**
      * 以下方法需等待响应

+ 5 - 6
app/public/js/spreadjs_rela/extend_celltype.js

@@ -131,7 +131,7 @@ SpreadJsExtendCellType = {
                 const node = options.row < tree.nodes.length ? tree.nodes[options.row] : null;
                 if (node) {
                     const showTreeLine = true;
-                    const centerX = Math.floor(x) + (node.level - 1) * indent + (node.level - 1) * levelIndent + indent / 2;
+                    const centerX = Math.floor(x) + (node.level) * indent + (node.level) * levelIndent + indent / 2;
                     const centerY = Math.floor((y + (y + h)) / 2);
                     // Draw Sibling Line
                     if (showTreeLine) {
@@ -170,7 +170,7 @@ SpreadJsExtendCellType = {
                         }
                     };
                     // 重定位x
-                    x = x + (node.level) * indent +  (node.level - 1) * levelIndent;
+                    x = x + (node.level + 1) * indent +  (node.level) * levelIndent;
                 }
             }
             // Drawing Text
@@ -210,21 +210,20 @@ SpreadJsExtendCellType = {
             const node = tree.nodes[hitinfo.row];
             if (!node) { return; }
 
-            let centerX = hitinfo.cellRect.x + offset + (node.level - 1) * indent + (node.level - 1) * levelIndent + indent / 2;
+            let centerX = hitinfo.cellRect.x + offset + (node.level) * indent + (node.level) * levelIndent + indent / 2;
             let centerY = (hitinfo.cellRect.y + offset + (hitinfo.cellRect.y + offset + hitinfo.cellRect.height)) / 2;
 
             // 点击展开节点时,如果已加载子项,则展开,反之这加载子项,展开
             if (Math.abs(hitinfo.x - centerX) < halfBoxLength && Math.abs(hitinfo.y - centerY) < halfBoxLength) {
-                if (!node.expanded && !node.isleaf) {
+                if (!node.expanded && !node.isleaf && tree.getChildren(node).length === 0) {
                     tree.loadChildren(node, function () {
                         node.expanded = true;
                         const children = tree.getChildren(node);
                         hitinfo.sheet.addRows(hitinfo.row + 1, children.length);
                         SpreadJsObj.reLoadRowData(hitinfo.sheet, hitinfo.row + 1, children.length);
-                        //hitinfo.sheet.repaint();
                     });
                 } else {
-                    node.expanded = !node.expanded;
+                    tree.setExpanded(node, !node.expanded);
                     SpreadJsObj.massOperationSheet(hitinfo.sheet, function () {
                         const posterity = tree.getPosterity(node);
                         for (const child of posterity) {

+ 1 - 1
app/service/ledger.js

@@ -80,7 +80,7 @@ module.exports = app => {
          * @param {Number} showLevel - 显示层数
          * @return {Array} - 返回数据
          */
-        async getDataByTenderId(tenderId, showLevel = 2) {
+        async getDataByTenderId(tenderId, showLevel = 4) {
             if (tenderId <= 0) {
                 return [];
             }

+ 1 - 1
app/view/ledger/explode.ejs

@@ -61,7 +61,7 @@
             </ul>
         </div>
         <div class="c-body col-8">
-            <div id="ledger-spread" style="border: 1px solid gray; height: 200px"></div>
+            <div id="ledger-spread" style="border: 1px solid gray; height: 750px"></div>
             <!--<table class="table table-bordered">-->
                 <!--<tr>-->
                     <!--<th></th>-->