2021-07-14 23:57:36 +08:00

151 lines
3.1 KiB
Vue

<template>
<div class="editContainer">
<div class="mindMapContainer" ref="mindMapContainer"></div>
<Count></Count>
<NavigatorToolbar :mindMap="mindMap"></NavigatorToolbar>
<Outline></Outline>
<Style></Style>
<BaseStyle :data="mindMapData" :mindMap="mindMap"></BaseStyle>
<Theme :mindMap="mindMap"></Theme>
<Structure :mindMap="mindMap"></Structure>
<ShortcutKey></ShortcutKey>
<Contextmenu :mindMap="mindMap"></Contextmenu>
</div>
</template>
<script>
import MindMap from "simple-mind-map";
import Outline from "./Outline";
import Style from "./Style";
import BaseStyle from "./BaseStyle";
import exampleData from "simple-mind-map/example/exampleData";
import Theme from "./Theme";
import Structure from "./Structure";
import Count from "./Count";
import NavigatorToolbar from "./NavigatorToolbar";
import ShortcutKey from "./ShortcutKey";
import Contextmenu from "./Contextmenu";
/**
* @Author: 王林
* @Date: 2021-06-24 22:56:17
* @Desc: 编辑区域
*/
export default {
name: "Edit",
components: {
Outline,
Style,
BaseStyle,
Theme,
Structure,
Count,
NavigatorToolbar,
ShortcutKey,
Contextmenu,
},
data() {
return {
mindMap: null,
mindMapData: null,
prevImg: "",
};
},
mounted() {
this.getData();
this.init();
this.$bus.$on("execCommand", this.execCommand);
this.$bus.$on("export", this.export);
},
methods: {
/**
* @Author: 王林
* @Date: 2021-07-03 22:11:37
* @Desc: 获取思维导图数据,实际应该调接口获取
*/
getData() {
this.mindMapData = exampleData;
},
/**
* @Author: 王林
* @Date: 2021-04-10 15:01:01
* @Desc: 初始化
*/
init() {
let { root, layout, theme } = this.mindMapData;
this.mindMap = new MindMap({
el: this.$refs.mindMapContainer,
data: root,
layout: layout,
theme: theme.template,
themeConfig: theme.config,
});
// 转发事件
[
"node_active",
"data_change",
"back_forward",
"node_contextmenu",
"node_click",
"draw_click",
"expand_btn_click"
].forEach((event) => {
this.mindMap.on(event, (...args) => {
this.$bus.$emit(event, ...args);
});
});
},
/**
* @Author: 王林
* @Date: 2021-05-05 13:32:11
* @Desc: 重新渲染
*/
reRender() {
this.mindMap.reRender();
},
/**
* @Author: 王林
* @Date: 2021-05-04 13:08:28
* @Desc: 执行命令
*/
execCommand(...args) {
this.mindMap.execCommand(...args);
},
/**
* @Author: 王林
* @Date: 2021-07-01 22:33:02
* @Desc: 导出
*/
async export(...args) {
try {
this.mindMap.export(...args);
} catch (error) {
console.log(error);
}
},
},
};
</script>
<style lang="less" scoped>
.editContainer {
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
.mindMapContainer {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
}
</style>