Browse Source

顺序重排子项编号

MaiXinRong 5 years ago
parent
commit
fccaf5b5f4
4 changed files with 84 additions and 2 deletions
  1. 1 1
      app/lib/ledger.js
  2. 41 0
      app/public/js/ledger.js
  3. 1 1
      app/public/js/path_tree.js
  4. 41 0
      app/public/js/revise.js

+ 1 - 1
app/lib/ledger.js

@@ -166,7 +166,7 @@ class billsTree {
      * @returns {boolean}
      */
     isLeafXmj(node) {
-        if (!node.code) {
+        if (node.b_code && node.b_code !== '') {
             return false;
         }
         for (const child of node.children) {

+ 41 - 0
app/public/js/ledger.js

@@ -812,6 +812,35 @@ $(document).ready(function() {
                     info.cancel = !_.isEmpty(node.b_code);
                     break;
             }
+        },
+        sortCode: function (sheet) {
+            const tree = sheet.zh_tree;
+            if (!tree) return;
+
+            const select = SpreadJsObj.getSelectObject(sheet);
+            if (!select || !select.code) return;
+
+            const recursiveSortCode = function (data, parentCode, children) {
+                if (!children || children.length === 0) return;
+
+                for (const [i, child] of children.entries()) {
+                    const code = parentCode + '-' + (i + 1);
+                    const cData = tree.getNodeKeyData(child);
+                    cData.code = code;
+                    data.push(cData);
+                    if (!tree.isLeafXmj(child)) {
+                        recursiveSortCode(data, code, child.children);
+                    }
+                }
+            };
+            const data = [];
+            recursiveSortCode(data, select.code, select.children);
+            if (data.length > 0) {
+                postData(window.location.pathname + '/update', {postType: 'update', postData: data}, function (result) {
+                    const refreshNode = tree.loadPostData(result);
+                    treeOperationObj.refreshTree(sheet, refreshNode);
+                })
+            }
         }
     };
     ledgerTreeCol.initSpreadSetting(ledgerSpreadSetting);
@@ -1060,6 +1089,18 @@ $(document).ready(function() {
                     }
                 },
                 'sprBlock': '-----------',
+                'sortChildren': {
+                    name: '顺序重排子项编号',
+                    icon: 'fa-sort-numeric-asc',
+                    disabled: function (key, opt) {
+                        const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
+                        return !node || !node.code || !node.children || node.children === 0;
+                    },
+                    callback: function (key, opt) {
+                        treeOperationObj.sortCode(ledgerSpread.getActiveSheet());
+                    }
+                },
+                'sprSort': '-----------',
                 'batchInsert': {
                     name: '批量插入',
                     type: 'batchInsert',

+ 1 - 1
app/public/js/path_tree.js

@@ -858,7 +858,7 @@ const createNewPathTree = function (type, setting) {
          * @returns {boolean}
          */
         isLeafXmj(node) {
-            if (!node.code) {
+            if (node.b_code && node.b_code !== '') {
                 return false;
             }
             for (const child of node.children) {

+ 41 - 0
app/public/js/revise.js

@@ -705,6 +705,35 @@ $(document).ready(() => {
                 });
             }
         },
+        sortCode: function (sheet) {
+            const tree = sheet.zh_tree;
+            if (!tree) return;
+
+            const select = SpreadJsObj.getSelectObject(sheet);
+            if (!select || !select.code || select.code === '') return;
+
+            const recursiveSortCode = function (data, parentCode, children) {
+                if (!children || children.length === 0) return;
+
+                for (const [i, child] of children.entries()) {
+                    const code = parentCode + '-' + (i + 1);
+                    const cData = tree.getNodeKeyData(child);
+                    cData.code = code;
+                    data.push(cData);
+                    if (!tree.isLeafXmj(child)) {
+                        recursiveSortCode(data, code, child.children);
+                    }
+                }
+            };
+            const data = [];
+            recursiveSortCode(data, select.code, select.children);
+            if (data.length > 0) {
+                postData(window.location.pathname + '/update', {postType: 'update', postData: data}, function (result) {
+                    const refreshNode = tree.loadPostData(result);
+                    billsTreeSpreadObj.refreshTree(sheet, refreshNode);
+                })
+            }
+        }
     };
     billsTreeSpreadObj.refreshOperationValid(billsSheet);
     billsTreeSpreadObj.loadExprToInput(billsSheet);
@@ -913,6 +942,18 @@ $(document).ready(() => {
                     }
                 },
                 'sprBatch': '-----------',
+                'sortChildren': {
+                    name: '顺序重排子项编号',
+                    icon: 'fa-sort-numeric-asc',
+                    disabled: function (key, opt) {
+                        const node = SpreadJsObj.getSelectObject(billsSheet);
+                        return !node || !node.code || !node.children || node.children === 0;
+                    },
+                    callback: function (key, opt) {
+                        billsTreeSpreadObj.sortCode(billsSheet);
+                    }
+                },
+                'sprSort': '-----------',
                 'importGclBills2Xmj': {
                     name: '导入工程量清单至项目节',
                     icon: 'fa-file-excel-o',