Browse Source

台账分解、台账修订,复制粘贴(只复制项目节)

MaiXinRong 4 years ago
parent
commit
3fa0fb75f1
2 changed files with 87 additions and 0 deletions
  1. 44 0
      app/public/js/ledger.js
  2. 43 0
      app/public/js/revise.js

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

@@ -1246,6 +1246,50 @@ $(document).ready(function() {
             return select && select.level <= 1;
         }
     };
+    billsContextMenuOptions.items.copyBlockXmj = {
+        name: '复制整块(只复制项目节)',
+        icon: 'fa-files-o',
+        callback: function (key, opt) {
+            treeOperationObj.block = [];
+            const copyBlockList = [];
+            const sheet = ledgerSpread.getActiveSheet();
+            const sel = sheet.getSelections()[0];
+            let iRow = sel.row;
+            const pid = sheet.zh_tree.nodes[iRow].ledger_pid;
+            while (iRow < sel.row + sel.rowCount) {
+                const node = sheet.zh_tree.nodes[iRow];
+                if (node.ledger_pid !== pid) {
+                    toastr.error('仅可同时选中同层节点');
+                    return;
+                }
+                const posterity = sheet.zh_tree.getPosterity(node);
+                iRow += posterity.length + 1;
+                const copyPosterity = posterity.filter(x => { return !x.b_code; });
+                copyPosterity.unshift(node);
+                const copyData = sheet.zh_tree.getDefaultData(copyPosterity);
+                for (const p of copyData) {
+                    const children = copyData.filter(y => {return y.ledger_pid === p.ledger_id}) || [];
+                    p.is_leaf = children.length === 0;
+                }
+                copyBlockList.push(copyData);
+            }
+            setLocalCache(copyBlockTag, JSON.stringify({block: copyBlockList}));
+        },
+        visible: function (key, opt) {
+            const sheet = ledgerSpread.getActiveSheet();
+            const selection = sheet.getSelections();
+            const row = selection[0].row;
+            const select = ledgerTree.nodes[row];
+            return select;
+        },
+        disabled: function (key, opt) {
+            const sheet = ledgerSpread.getActiveSheet();
+            const selection = sheet.getSelections();
+            const row = selection[0].row;
+            const select = ledgerTree.nodes[row];
+            return select && select.level <= 1;
+        }
+    };
     if (!readOnly) {
         billsContextMenuOptions.items.pasteBlock = {
             name: '粘贴整块',

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

@@ -1075,6 +1075,49 @@ $(document).ready(() => {
             return select && select.level <= 1;
         }
     };
+    billsContextMenuOptions.items.copyBlockXmj = {
+        name: '复制整块(只复制项目节)',
+        icon: 'fa-files-o',
+        callback: function (key, opt) {
+            const copyBlockList = [];
+            const sheet = billsSheet;
+            const sel = sheet.getSelections()[0];
+            let iRow = sel.row;
+            const pid = sheet.zh_tree.nodes[iRow].ledger_pid;
+            while (iRow < sel.row + sel.rowCount) {
+                const node = sheet.zh_tree.nodes[iRow];
+                if (node.ledger_pid !== pid) {
+                    toastr.error('仅可同时选中同层节点');
+                    return;
+                }
+                const posterity = sheet.zh_tree.getPosterity(node);
+                iRow += posterity.length + 1;
+                const copyPosterity = posterity.filter(x => { return !x.b_code; });
+                copyPosterity.unshift(node);
+                const copyData = sheet.zh_tree.getDefaultData(copyPosterity);
+                for (const p of copyData) {
+                    const children = copyData.filter(y => {return y.ledger_pid === p.ledger_id}) || [];
+                    p.is_leaf = children.length === 0;
+                }
+                copyBlockList.push(copyData);
+            }
+            setLocalCache(copyBlockTag, JSON.stringify({ block: copyBlockList }));
+        },
+        visible: function (key, opt) {
+            const sheet = billsSheet;
+            const selection = sheet.getSelections();
+            const row = selection[0].row;
+            const select = billsTree.nodes[row];
+            return select;
+        },
+        disabled: function (key, opt) {
+            const sheet = billsSheet;
+            const selection = sheet.getSelections();
+            const row = selection[0].row;
+            const select = billsTree.nodes[row];
+            return select && select.level <= 1;
+        }
+    };
     if (!readOnly) {
         billsContextMenuOptions.items.pasteBlock = {
             name: '粘贴整块',