/** * 台账相关js * * @author Mai * @date 2018/02/05 * @version */ $(document).ready(function() { autoFlashHeight(); const ledgerSpread = SpreadJsObj.createNewSpread($('#ledger-spread')[0]); const ledgerTree = createNewPathTree({ id: 'ledger_id', pid: 'ledger_pid', order: 'order', level: 'level', rootId: -1 }); ledgerTree.loadDatas(ledger); SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), { cols: [ {title: '项目节编号', field: 'code', width: 150, cellType: 'tree'}, {title: '清单编号', field: 'b_code', width: 80}, {title: '名称', field: 'name', width: 230}, {title: '单位', field: 'unit', width: 50}, {title: '单价', field: 'price', width: 60}, {title: '数量', field: 'quantity', width: 60}, {title: '金额', field: 'totalPrice', width: 60}, {title: '施工图原设计', field: 'design', width: 60}, {title: '图(册)号', field: 'drawingCode', width: 80}, {title: '备注', field: 'memo', width: 100} ], treeCol: 0, emptyRows: 3 }); SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), 'tree', ledgerTree); const treeOperationObj = { addNode: function (spread) { const sheet = spread.getActiveSheet(); const row = sheet.getSelections()[0].row; const tree = sheet.zh_tree; if (!tree) { return; } const node = spread.zh_tree.nodes[row]; if (!node) { return; } SpreadJsObj.massOperationSheet(sheet, function () { tree.addNode('add-node', node, function (newNodes) { newNodes.sort(function (a, b) { const aIndex = tree.nodes.indexOf(a); const bIndex = tree.nodes.indexOf(b); return aIndex - bIndex; }); for (const node of newNodes) { const index = tree.nodes.indexOf(node); sheet.addRows(index, 1); } }); }); }, deleteNode: function (spread) { const sheet = spread.getActiveSheet(); const row = sheet.getSelections()[0].row; const tree = sheet.zh_tree; if (!tree) { return; } const node = spread.zh_tree.nodes[row]; if (!node) { return; } const count = ledgerTree.getPosterity(node).length; tree.deleteNode('delete-node', node, function () { sheet.deleteRows(row, count + 1); }); }, upMove: function (spread) { const sheet = spread.getActiveSheet(); const sel = sheet.getSelections()[0]; const row = sel.row; const tree = sheet.zh_tree; if (!tree) { return; } const node = tree.nodes[row]; if (!node) { return; } tree.upMoveNode('up-move', node, function (datas) { for (const data of datas) { SpreadJsObj.reLoadRowData(sheet, tree.nodes.indexOf(data), tree.getPosterity(data).length + 1); } sheet.setSelection(tree.nodes.indexOf(node), sel.col, sel.rowCount, sel.colCount); //sheet.moveTo(row, -1, tree.nodes.indexOf(node), -1, tree.getPosterity(node).length + 1, -1, GC.Spread.Sheets.CopyToOptions.value); }); }, downMove: function (spread) { const sheet = spread.getActiveSheet(); const sel = sheet.getSelections()[0]; const row = sel.row; const tree = sheet.zh_tree; if (!tree) { return; } const node = tree.nodes[row]; if (!node) { return; } tree.downMoveNode('down-move', node, function (datas) { for (const data of datas) { SpreadJsObj.reLoadRowData(sheet, tree.nodes.indexOf(data), tree.getPosterity(data).length + 1); } sheet.setSelection(tree.nodes.indexOf(node), sel.col, sel.rowCount, sel.colCount); }); }, upLevel: function (spread) { const sheet = spread.getActiveSheet(); const row = sheet.getSelections()[0].row; const tree = sheet.zh_tree; if (!tree) { return; } const node = tree.nodes[row]; if (!node) { return; } tree.upLevelNode('up-level', node, function () { sheet.repaint(); }); }, downLevel: function (spread) { const sheet = spread.getActiveSheet(); const row = sheet.getSelections()[0].row; const tree = sheet.zh_tree; if (!tree) { return; } const node = tree.nodes[row]; if (!node) { return; } tree.downLevelNode('down-level', node, function () { sheet.repaint(); }); } }; // 绑定 删除等 顶部按钮 $('#delete').click(function () { treeOperationObj.deleteNode(ledgerSpread); }); $('#up-move').click(function () { treeOperationObj.upMove(ledgerSpread); }); $('#down-move').click(function () { treeOperationObj.downMove(ledgerSpread); }); $('#up-level').click(function () { treeOperationObj.upLevel(ledgerSpread); }); $('#down-level').click(function () { treeOperationObj.downLevel(ledgerSpread); }); // 右键菜单 $.contextMenu({ selector: '#ledger-spread', build: function ($trigger, e) { const target = SpreadJsObj.safeRightClickSelection($trigger, e, ledgerSpread); return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader; }, items: { 'create': { name: '新增', icon: 'fa-sign-in', callback: function (key, opt) { treeOperationObj.addNode(ledgerSpread); }, visible: function(key, opt){ const sheet = ledgerSpread.getActiveSheet(); const selection = sheet.getSelections(); const row = selection[0].row; const select = ledgerTree.nodes[row]; return select; } }, 'delete': { name: '删除', icon: 'fa-remove', callback: function (key, opt) { treeOperationObj.deleteNode(ledgerSpread); }, visible: function (key, opt) { const sheet = ledgerSpread.getActiveSheet(); const selection = sheet.getSelections(); const row = selection[0].row; const select = ledgerTree.nodes[row]; return select; } } } }); });