Bladeren bron

1. 新增剪切事件
2. 复制数据时,不复制表头

MaiXinRong 6 jaren geleden
bovenliggende
commit
de81f90083
2 gewijzigde bestanden met toevoegingen van 54 en 2 verwijderingen
  1. 40 2
      app/public/js/ledger.js
  2. 14 0
      app/public/js/spreadjs_rela/spreadjs_zh.js

+ 40 - 2
app/public/js/ledger.js

@@ -500,7 +500,45 @@ $(document).ready(function() {
         },
         topRowChanged(e, info) {
             SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
-        }
+        },
+        cut: function (sheet, sel, callback) {
+            if (!sheet || !sel) return;
+
+            const sortData = SpreadJsObj.getSortData(sheet), datas = [];
+            for (let iRow = sel.row; iRow < sel.row + sel.rowCount; iRow++) {
+                const node = sortData[iRow];
+                if (node) {
+                    const data = sheet.zh_tree.getNodeKeyData(node);
+                    for (let iCol = sel.col; iCol < sel.col + sel.colCount; iCol++) {
+                        const col = sheet.zh_setting.cols[iCol];
+                        if (col.field === 'b_code' || col.field === 'sgfh_qty' || col.field === 'sgfh_tp' ||
+                            col.field === 'sjcl_qty' || col.field === 'sjcl_tp' ||
+                            col.field === 'qtcl_qty' || col.field === 'qtcl_tp') {
+                            const lPos = pos.getLedgerPos(node.id);
+                            if (lPos && lPos.length > 0) {
+                                toast('不可剪切', 'warning');
+                                return;
+                            }
+                        }
+                        const style = sheet.getStyle(iRow, iCol);
+                        if (style.locked) {
+                            toast('不可剪切', 'warning');
+                            return;
+                        }
+                        const colSetting = sheet.zh_setting.cols[iCol];
+                        data[colSetting.field] = null;
+                    }
+                    datas.push(data);
+                }
+            }
+
+            if (datas.length > 0) {
+                sheet.zh_tree.update('/tender/' + getTenderId() + '/ledger/update', datas, function (result) {
+                    callback();
+                    treeOperationObj.refreshTree(sheet, result);
+                });
+            }
+        },
     };
     // 绑定事件
     ledgerSpread.bind(GC.Spread.Sheets.Events.SelectionChanged, treeOperationObj.selectionChanged);
@@ -513,7 +551,6 @@ $(document).ready(function() {
         ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardPasted, treeOperationObj.clipboardPasted);
         SpreadJsObj.addDeleteBind(ledgerSpread, treeOperationObj.deletePress);
         ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardChanging, function (e, info) {
-            console.log(info);
             const copyText = SpreadJsObj.getFilterCopyText(info.sheet);
         });
         ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardChanged, function (e, info) {
@@ -521,6 +558,7 @@ $(document).ready(function() {
         });
         ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (e, info) {
         });
+        SpreadJsObj.addCutEvents(ledgerSpread, treeOperationObj.cut);
 
         // 绑定 删除等 顶部按钮
         $('#insert').click(() => {

+ 14 - 0
app/public/js/spreadjs_rela/spreadjs_zh.js

@@ -80,10 +80,24 @@ const SpreadJsObj = {
         spread.options.allowUserDragDrop = false;
         spread.options.allowUserEditFormula = false;
         spread.options.allowExtendPasteRange = true;
+        spread.options.copyPasteHeaderOptions = spreadNS.CopyPasteHeaderOptions.noHeaders;
         spread.getActiveSheet().options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;//设置粘贴时只粘贴值
         spread.getActiveSheet().setRowCount(3);
         return spread;
     },
+    addCutEvents: function (spread, fun) {
+        const cut = spreadNS.Commands.cut.execute;
+        spreadNS.Commands.cut.execute = function (context, options, isUndo) {
+            const self = this, sheet = context.getActiveSheet();
+            const sels = sheet.getSelections();
+            const sel = sels ? sels[0] : null;
+            if (sel) {
+                return fun(sheet,  sel, function () {
+                    cut(context, options, isUndo);
+                });
+            }
+        }
+    },
     /**
      * 保护sheet(需设置保护后, 单元格的locked等属性方可生效)
      * @param {GC.Spread.Sheets.Worksheet} sheet