代码:<gc-spread-sheets-designer :styleInfo="styleInfo" :config="config" @designerInitialized="designerInitialized">
</gc-spread-sheets-designer>
designerInitialized(designer) {
this.spread = designer.getWorkbook()
let spread = designer.getWorkbook()
let spreadNS = GC.Spread.Sheets;
let designerConfig = JSON.parse(JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig));
designerConfig.commandMap = {
"insertMutiRows": {
text: "插入行",
commandName: "insertMutiRows",
visibleContext: "ClickRowHeader",
}
}
designerConfig.contextMenu.push("insertMutiRows")
let commandManager = spread.commandManager();
var insertRowsByCounts = {
canUndo: true,
canExcute: function () {
console.log(arguments)
},
execute: function (spread, options, isUndo) {
var Commands = GC.Spread.Sheets.Commands;
if (isUndo) {
Commands.undoTransaction(spread, options);
return true;
} else {
Commands.startTransaction(spread, options);
if (options.commandOptions) {
console.log('在上方插入' + options.commandOptions);
var sheet = spread.getSheetFromName(options.sheetName);
sheet.suspendPaint();
sheet.addRows(options.activeRow, parseInt(options.commandOptions));
sheet.resumePaint();
}
Commands.endTransaction(spread, options);
return true;
}
}
};
commandManager.register("insertMutiRows", insertRowsByCounts, null, false, false, false, false);
var oldCreateMenuItemElement = spread.contextMenu.menuView.createMenuItemElement;
spread.contextMenu.menuView.createMenuItemElement = function (menuItemData) {
var self = this;
var menuItemView = oldCreateMenuItemElement.call(self, menuItemData);
if (menuItemData.name === "insertMutiRows") {
var supMenuItemContainer = menuItemView[0];
var inputBlock = this.createInput();
var btnupBlock = this.createBtn();
supMenuItemContainer.appendChild(inputBlock);
supMenuItemContainer.appendChild(btnupBlock);
}
return menuItemView;
}
var oldgetCommandOptions = spread.contextMenu.menuView.getCommandOptions;
spread.contextMenu.menuView.getCommandOptions = function (menuItemData, host, event) {
if (menuItemData && menuItemData.name === "insertMutiRows") {
var ele = document.getElementsByClassName("inputBlock")[0]
return ele.value;
}
else {
return oldgetCommandOptions.apply(this, arguments)
}
};
designer.setConfig(designerConfig)
},
createInput() {
let inputBlock = document.createElement('input');
inputBlock.type = 'text';
inputBlock.value = '1';
inputBlock.className = 'inputBlock';
inputBlock.style = 'width: 20px';
inputBlock.setAttribute('gcUIElement', 'gcContextMenu');
inputBlock.onclick = function (ev) {
if (ev.target) {
ev.stopPropagation()
}
}
return inputBlock;
},
createBtn() {
let inputBlock = document.createElement('p');
inputBlock.innerText = "行";
inputBlock.className = 'btnBlock';
inputBlock.style = 'display :inline;margin-left: 10px; ';
return inputBlock;
}, |