|
@@ -60,6 +60,7 @@ export default {
|
|
|
},
|
|
|
mounted() {
|
|
|
this.initMindMap();
|
|
|
+ this.bindKeyEvents();
|
|
|
},
|
|
|
beforeDestroy() {
|
|
|
this.destroyMindMap();
|
|
@@ -119,10 +120,14 @@ export default {
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
+ bindKeyEvents() {
|
|
|
+ document.addEventListener('keydown', this.handleDeleteKey);
|
|
|
+ },
|
|
|
destroyMindMap() {
|
|
|
if (this.mindMap) {
|
|
|
this.mindMap.destroy();
|
|
|
}
|
|
|
+ document.removeEventListener('keydown', this.handleDeleteKey);
|
|
|
},
|
|
|
addParentNode() {
|
|
|
if (!this.mindMap) return;
|
|
@@ -162,8 +167,28 @@ export default {
|
|
|
},
|
|
|
removeNode() {
|
|
|
if (!this.mindMap) return;
|
|
|
+ const currentNode = this.mindMap.renderer.activeNodeList[0];
|
|
|
+ const nodeData = currentNode?.nodeData.data;
|
|
|
+ if (nodeData && (nodeData.type === 0 || nodeData.type === 1)) {
|
|
|
+ this.$message.warning('章节节点不能删除!');
|
|
|
+ return;
|
|
|
+ }
|
|
|
this.mindMap.execCommand('REMOVE_NODE');
|
|
|
},
|
|
|
+ handleDeleteKey(e) {
|
|
|
+ if (e.key === 'Delete' || e.key === 'Del') {
|
|
|
+ const currentNode = this.mindMap?.renderer.activeNodeList[0];
|
|
|
+ const nodeData = currentNode?.nodeData.data;
|
|
|
+ if (nodeData && (nodeData.type === 0 || nodeData.type === 1)) {
|
|
|
+ e.preventDefault();
|
|
|
+ e.stopPropagation();
|
|
|
+ e.returnValue = false;
|
|
|
+ this.$message.warning('章节节点不能删除!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ },
|
|
|
forward() {
|
|
|
this.mindMap.execCommand('FORWARD');
|
|
|
},
|