Demo:右键菜单新增设置节点编号功能
This commit is contained in:
parent
68bf2d361c
commit
82473027da
@ -218,8 +218,8 @@ class Node {
|
|||||||
this._tagData = this.createTagNode()
|
this._tagData = this.createTagNode()
|
||||||
this._noteData = this.createNoteNode()
|
this._noteData = this.createNoteNode()
|
||||||
this._attachmentData = this.createAttachmentNode()
|
this._attachmentData = this.createAttachmentNode()
|
||||||
if (this.mindMap.number) {
|
if (this.mindMap.numbers) {
|
||||||
this._numberData = this.mindMap.number.createNumberContent(this)
|
this._numberData = this.mindMap.numbers.createNumberContent(this)
|
||||||
}
|
}
|
||||||
this._prefixData = createNodePrefixContent
|
this._prefixData = createNodePrefixContent
|
||||||
? createNodePrefixContent(this)
|
? createNodePrefixContent(this)
|
||||||
|
|||||||
@ -72,13 +72,13 @@ class Base {
|
|||||||
// 获取节点编号信息
|
// 获取节点编号信息
|
||||||
getNumberInfo({ parent, ancestors, layerIndex, index }) {
|
getNumberInfo({ parent, ancestors, layerIndex, index }) {
|
||||||
// 编号
|
// 编号
|
||||||
const hasNumberPlugin = !!this.mindMap.number
|
const hasNumberPlugin = !!this.mindMap.numbers
|
||||||
const parentNumberStr =
|
const parentNumberStr =
|
||||||
hasNumberPlugin && parent && parent._node.number
|
hasNumberPlugin && parent && parent._node.number
|
||||||
? parent._node.number
|
? parent._node.number
|
||||||
: ''
|
: ''
|
||||||
const newNumberStr = hasNumberPlugin
|
const newNumberStr = hasNumberPlugin
|
||||||
? this.mindMap.number.getNodeNumberStr({
|
? this.mindMap.numbers.getNodeNumberStr({
|
||||||
ancestors,
|
ancestors,
|
||||||
layerIndex,
|
layerIndex,
|
||||||
num: index + 1,
|
num: index + 1,
|
||||||
@ -122,7 +122,7 @@ class Base {
|
|||||||
// 判断编号是否改变
|
// 判断编号是否改变
|
||||||
let isNumberChange = false
|
let isNumberChange = false
|
||||||
if (hasNumberPlugin) {
|
if (hasNumberPlugin) {
|
||||||
isNumberChange = this.mindMap.number.updateNumber(newNode, newNumberStr)
|
isNumberChange = this.mindMap.numbers.updateNumber(newNode, newNumberStr)
|
||||||
}
|
}
|
||||||
// 主题或主题配置改变了、节点层级改变了,需要重新渲染节点文本等情况需要重新计算节点大小和布局
|
// 主题或主题配置改变了、节点层级改变了,需要重新渲染节点文本等情况需要重新计算节点大小和布局
|
||||||
if (
|
if (
|
||||||
@ -167,7 +167,7 @@ class Base {
|
|||||||
// 判断编号是否改变
|
// 判断编号是否改变
|
||||||
let isNumberChange = false
|
let isNumberChange = false
|
||||||
if (hasNumberPlugin) {
|
if (hasNumberPlugin) {
|
||||||
isNumberChange = this.mindMap.number.updateNumber(newNode, newNumberStr)
|
isNumberChange = this.mindMap.numbers.updateNumber(newNode, newNumberStr)
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
isResizeSource ||
|
isResizeSource ||
|
||||||
|
|||||||
@ -497,3 +497,63 @@ export const downTypeList = [
|
|||||||
desc: 'Plain text file'
|
desc: 'Plain text file'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// 编号类型列表
|
||||||
|
export const numberTypeList = [
|
||||||
|
{
|
||||||
|
name: 'None',
|
||||||
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '1, 2, 3',
|
||||||
|
value: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '1., 2., 3.',
|
||||||
|
value: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '(1), (2), (3)',
|
||||||
|
value: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'a., b., c.',
|
||||||
|
value: 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'A., B., C.',
|
||||||
|
value: 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'i., ii., iii.',
|
||||||
|
value: 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'I., II., III.',
|
||||||
|
value: 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '一、, 二、, 三、',
|
||||||
|
value: 8
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
// 编号层级列表
|
||||||
|
export const numberLevelList = [
|
||||||
|
{
|
||||||
|
name: '1 level',
|
||||||
|
value: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '2 level',
|
||||||
|
value: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '3 level',
|
||||||
|
value: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'All level',
|
||||||
|
value: 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|||||||
@ -19,7 +19,9 @@ import {
|
|||||||
backgroundSizeList as backgroundSizeListZh,
|
backgroundSizeList as backgroundSizeListZh,
|
||||||
downTypeList as downTypeListZh,
|
downTypeList as downTypeListZh,
|
||||||
shapeListMap as shapeListMapZh,
|
shapeListMap as shapeListMapZh,
|
||||||
lineStyleMap as lineStyleMapZh
|
lineStyleMap as lineStyleMapZh,
|
||||||
|
numberTypeList as numberTypeListZh,
|
||||||
|
numberLevelList as numberLevelListZh
|
||||||
} from './zh'
|
} from './zh'
|
||||||
import {
|
import {
|
||||||
fontFamilyList as fontFamilyListEn,
|
fontFamilyList as fontFamilyListEn,
|
||||||
@ -32,7 +34,9 @@ import {
|
|||||||
shapeList as shapeListEn,
|
shapeList as shapeListEn,
|
||||||
sidebarTriggerList as sidebarTriggerListEn,
|
sidebarTriggerList as sidebarTriggerListEn,
|
||||||
backgroundSizeList as backgroundSizeListEn,
|
backgroundSizeList as backgroundSizeListEn,
|
||||||
downTypeList as downTypeListEn
|
downTypeList as downTypeListEn,
|
||||||
|
numberTypeList as numberTypeListEn,
|
||||||
|
numberLevelList as numberLevelListEn
|
||||||
} from './en'
|
} from './en'
|
||||||
|
|
||||||
const fontFamilyList = {
|
const fontFamilyList = {
|
||||||
@ -100,6 +104,16 @@ const downTypeList = {
|
|||||||
en: downTypeListEn
|
en: downTypeListEn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const numberTypeList = {
|
||||||
|
zh: numberTypeListZh,
|
||||||
|
en: numberTypeListEn
|
||||||
|
}
|
||||||
|
|
||||||
|
const numberLevelList = {
|
||||||
|
zh: numberLevelListZh,
|
||||||
|
en: numberLevelListEn
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
fontSizeList,
|
fontSizeList,
|
||||||
lineHeightList,
|
lineHeightList,
|
||||||
@ -121,5 +135,7 @@ export {
|
|||||||
shapeList,
|
shapeList,
|
||||||
shapeListMap,
|
shapeListMap,
|
||||||
sidebarTriggerList,
|
sidebarTriggerList,
|
||||||
downTypeList
|
downTypeList,
|
||||||
|
numberTypeList,
|
||||||
|
numberLevelList
|
||||||
}
|
}
|
||||||
|
|||||||
@ -591,3 +591,63 @@ export const downTypeList = [
|
|||||||
desc: '纯文本文件'
|
desc: '纯文本文件'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// 编号类型列表
|
||||||
|
export const numberTypeList = [
|
||||||
|
{
|
||||||
|
name: '无编号',
|
||||||
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '1, 2, 3',
|
||||||
|
value: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '1., 2., 3.',
|
||||||
|
value: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '(1), (2), (3)',
|
||||||
|
value: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'a., b., c.',
|
||||||
|
value: 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'A., B., C.',
|
||||||
|
value: 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'i., ii., iii.',
|
||||||
|
value: 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'I., II., III.',
|
||||||
|
value: 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '一、, 二、, 三、',
|
||||||
|
value: 8
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
// 编号层级列表
|
||||||
|
export const numberLevelList = [
|
||||||
|
{
|
||||||
|
name: '编号首层',
|
||||||
|
value: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '编号前两层',
|
||||||
|
value: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '编号前三层',
|
||||||
|
value: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '编号所有层',
|
||||||
|
value: 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|||||||
@ -110,7 +110,8 @@ export default {
|
|||||||
copyToTxt: 'Txt',
|
copyToTxt: 'Txt',
|
||||||
copyToPng: 'Png',
|
copyToPng: 'Png',
|
||||||
copySuccess: 'Copy success',
|
copySuccess: 'Copy success',
|
||||||
copyFail: 'Copy fail'
|
copyFail: 'Copy fail',
|
||||||
|
number: 'Number child nodes'
|
||||||
},
|
},
|
||||||
count: {
|
count: {
|
||||||
words: 'Words',
|
words: 'Words',
|
||||||
|
|||||||
@ -110,7 +110,8 @@ export default {
|
|||||||
copyToTxt: 'Txt',
|
copyToTxt: 'Txt',
|
||||||
copyToPng: '图片',
|
copyToPng: '图片',
|
||||||
copySuccess: '复制成功',
|
copySuccess: '复制成功',
|
||||||
copyFail: '复制失败'
|
copyFail: '复制失败',
|
||||||
|
number: '编号其子节点'
|
||||||
},
|
},
|
||||||
count: {
|
count: {
|
||||||
words: '字数',
|
words: '字数',
|
||||||
|
|||||||
@ -39,6 +39,7 @@
|
|||||||
<span class="name">{{ $t('contextmenu.insertSummary') }}</span>
|
<span class="name">{{ $t('contextmenu.insertSummary') }}</span>
|
||||||
<span class="desc">Ctrl + G</span>
|
<span class="desc">Ctrl + G</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="splitLine"></div>
|
||||||
<div
|
<div
|
||||||
class="item"
|
class="item"
|
||||||
@click="exec('UP_NODE')"
|
@click="exec('UP_NODE')"
|
||||||
@ -55,6 +56,37 @@
|
|||||||
<span class="name">{{ $t('contextmenu.moveDownNode') }}</span>
|
<span class="name">{{ $t('contextmenu.moveDownNode') }}</span>
|
||||||
<span class="desc">Ctrl + ↓</span>
|
<span class="desc">Ctrl + ↓</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="item" v-if="supportNumbers">
|
||||||
|
<span class="name">{{ $t('contextmenu.number') }}</span>
|
||||||
|
<span class="el-icon-arrow-right"></span>
|
||||||
|
<div
|
||||||
|
class="subItems listBox"
|
||||||
|
:class="{ isDark: isDark, showLeft: subItemsShowLeft }"
|
||||||
|
style="top: -170px"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="item"
|
||||||
|
v-for="item in numberTypeList"
|
||||||
|
:key="'type' + item.value"
|
||||||
|
@click="setNodeNumber('type', item.value)"
|
||||||
|
>
|
||||||
|
<span class="name">{{ item.name }}</span>
|
||||||
|
{{ numberType === item.value ? '√' : '' }}
|
||||||
|
</div>
|
||||||
|
<div class="splitLine"></div>
|
||||||
|
<div
|
||||||
|
class="item"
|
||||||
|
v-for="item in numberLevelList"
|
||||||
|
:key="'level' + item.value"
|
||||||
|
:class="{ disabled: numberType === '' }"
|
||||||
|
@click="setNodeNumber('level', item.value)"
|
||||||
|
>
|
||||||
|
<span class="name">{{ item.name }}</span>
|
||||||
|
{{ numberLevel === item.value ? '√' : '' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="splitLine"></div>
|
||||||
<div class="item danger" @click="exec('REMOVE_NODE')">
|
<div class="item danger" @click="exec('REMOVE_NODE')">
|
||||||
<span class="name">{{ $t('contextmenu.deleteNode') }}</span>
|
<span class="name">{{ $t('contextmenu.deleteNode') }}</span>
|
||||||
<span class="desc">Delete</span>
|
<span class="desc">Delete</span>
|
||||||
@ -63,6 +95,7 @@
|
|||||||
<span class="name">{{ $t('contextmenu.deleteCurrentNode') }}</span>
|
<span class="name">{{ $t('contextmenu.deleteCurrentNode') }}</span>
|
||||||
<span class="desc">Shift + Backspace</span>
|
<span class="desc">Shift + Backspace</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="splitLine"></div>
|
||||||
<div
|
<div
|
||||||
class="item"
|
class="item"
|
||||||
@click="exec('COPY_NODE')"
|
@click="exec('COPY_NODE')"
|
||||||
@ -83,6 +116,7 @@
|
|||||||
<span class="name">{{ $t('contextmenu.pasteNode') }}</span>
|
<span class="name">{{ $t('contextmenu.pasteNode') }}</span>
|
||||||
<span class="desc">Ctrl + V</span>
|
<span class="desc">Ctrl + V</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="splitLine"></div>
|
||||||
<div class="item" @click="exec('REMOVE_HYPERLINK')" v-if="hasHyperlink">
|
<div class="item" @click="exec('REMOVE_HYPERLINK')" v-if="hasHyperlink">
|
||||||
<span class="name">{{ $t('contextmenu.removeHyperlink') }}</span>
|
<span class="name">{{ $t('contextmenu.removeHyperlink') }}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -101,6 +135,7 @@
|
|||||||
<span class="name">{{ $t('contextmenu.backCenter') }}</span>
|
<span class="name">{{ $t('contextmenu.backCenter') }}</span>
|
||||||
<span class="desc">Ctrl + Enter</span>
|
<span class="desc">Ctrl + Enter</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="splitLine"></div>
|
||||||
<div class="item" @click="exec('EXPAND_ALL')">
|
<div class="item" @click="exec('EXPAND_ALL')">
|
||||||
<span class="name">{{ $t('contextmenu.expandAll') }}</span>
|
<span class="name">{{ $t('contextmenu.expandAll') }}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -110,7 +145,11 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<span class="name">{{ $t('contextmenu.expandTo') }}</span>
|
<span class="name">{{ $t('contextmenu.expandTo') }}</span>
|
||||||
<span class="el-icon-arrow-right"></span>
|
<span class="el-icon-arrow-right"></span>
|
||||||
<div class="subItems listBox" :class="{ isDark: isDark }">
|
<div
|
||||||
|
class="subItems listBox"
|
||||||
|
:class="{ isDark: isDark, showLeft: subItemsShowLeft }"
|
||||||
|
style="top: -10px"
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
class="item"
|
class="item"
|
||||||
v-for="(item, index) in expandList"
|
v-for="(item, index) in expandList"
|
||||||
@ -121,6 +160,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="splitLine"></div>
|
||||||
<div class="item" @click="exec('RESET_LAYOUT')">
|
<div class="item" @click="exec('RESET_LAYOUT')">
|
||||||
<span class="name">{{ $t('contextmenu.arrangeLayout') }}</span>
|
<span class="name">{{ $t('contextmenu.arrangeLayout') }}</span>
|
||||||
<span class="desc">Ctrl + L</span>
|
<span class="desc">Ctrl + L</span>
|
||||||
@ -133,6 +173,7 @@
|
|||||||
<span class="name">{{ $t('contextmenu.zenMode') }}</span>
|
<span class="name">{{ $t('contextmenu.zenMode') }}</span>
|
||||||
{{ isZenMode ? '√' : '' }}
|
{{ isZenMode ? '√' : '' }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="splitLine"></div>
|
||||||
<div class="item" @click="exec('REMOVE_ALL_NODE_CUSTOM_STYLES')">
|
<div class="item" @click="exec('REMOVE_ALL_NODE_CUSTOM_STYLES')">
|
||||||
<span class="name">{{
|
<span class="name">{{
|
||||||
$t('contextmenu.removeAllNodeCustomStyles')
|
$t('contextmenu.removeAllNodeCustomStyles')
|
||||||
@ -141,7 +182,11 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<span class="name">{{ $t('contextmenu.copyToClipboard') }}</span>
|
<span class="name">{{ $t('contextmenu.copyToClipboard') }}</span>
|
||||||
<span class="el-icon-arrow-right"></span>
|
<span class="el-icon-arrow-right"></span>
|
||||||
<div class="subItems listBox" :class="{ isDark: isDark }">
|
<div
|
||||||
|
class="subItems listBox"
|
||||||
|
:class="{ isDark: isDark, showLeft: subItemsShowLeft }"
|
||||||
|
style="top: -130px"
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
class="item"
|
class="item"
|
||||||
v-for="item in copyList"
|
v-for="item in copyList"
|
||||||
@ -162,6 +207,7 @@ import { getTextFromHtml, imgToDataUrl } from 'simple-mind-map/src/utils'
|
|||||||
import { transformToMarkdown } from 'simple-mind-map/src/parse/toMarkdown'
|
import { transformToMarkdown } from 'simple-mind-map/src/parse/toMarkdown'
|
||||||
import { transformToTxt } from 'simple-mind-map/src/parse/toTxt'
|
import { transformToTxt } from 'simple-mind-map/src/parse/toTxt'
|
||||||
import { setDataToClipboard, setImgToClipboard, copy } from '@/utils'
|
import { setDataToClipboard, setImgToClipboard, copy } from '@/utils'
|
||||||
|
import { numberTypeList, numberLevelList } from '@/config'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: 王林
|
* @Author: 王林
|
||||||
@ -185,13 +231,17 @@ export default {
|
|||||||
isMousedown: false,
|
isMousedown: false,
|
||||||
mosuedownX: 0,
|
mosuedownX: 0,
|
||||||
mosuedownY: 0,
|
mosuedownY: 0,
|
||||||
enableCopyToClipboardApi: navigator.clipboard
|
enableCopyToClipboardApi: navigator.clipboard,
|
||||||
|
numberType: '',
|
||||||
|
numberLevel: '',
|
||||||
|
subItemsShowLeft: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
isZenMode: state => state.localConfig.isZenMode,
|
isZenMode: state => state.localConfig.isZenMode,
|
||||||
isDark: state => state.localConfig.isDark
|
isDark: state => state.localConfig.isDark,
|
||||||
|
supportNumbers: state => state.supportNumbers
|
||||||
}),
|
}),
|
||||||
expandList() {
|
expandList() {
|
||||||
return [
|
return [
|
||||||
@ -263,6 +313,12 @@ export default {
|
|||||||
},
|
},
|
||||||
hasNote() {
|
hasNote() {
|
||||||
return !!this.node.getData('note')
|
return !!this.node.getData('note')
|
||||||
|
},
|
||||||
|
numberTypeList() {
|
||||||
|
return numberTypeList[this.$i18n.locale] || numberTypeList.zh
|
||||||
|
},
|
||||||
|
numberLevelList() {
|
||||||
|
return numberLevelList[this.$i18n.locale] || numberLevelList.zh
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@ -288,9 +344,11 @@ export default {
|
|||||||
|
|
||||||
// 计算右键菜单元素的显示位置
|
// 计算右键菜单元素的显示位置
|
||||||
getShowPosition(x, y) {
|
getShowPosition(x, y) {
|
||||||
|
this.subItemsShowLeft = false
|
||||||
const rect = this.$refs.contextmenuRef.getBoundingClientRect()
|
const rect = this.$refs.contextmenuRef.getBoundingClientRect()
|
||||||
if (x + rect.width > window.innerWidth) {
|
if (x + rect.width > window.innerWidth) {
|
||||||
x = x - rect.width - 20
|
x = x - rect.width - 20
|
||||||
|
this.subItemsShowLeft = true
|
||||||
}
|
}
|
||||||
if (y + rect.height > window.innerHeight) {
|
if (y + rect.height > window.innerHeight) {
|
||||||
y = window.innerHeight - rect.height - 10
|
y = window.innerHeight - rect.height - 10
|
||||||
@ -303,6 +361,11 @@ export default {
|
|||||||
this.type = 'node'
|
this.type = 'node'
|
||||||
this.isShow = true
|
this.isShow = true
|
||||||
this.node = node
|
this.node = node
|
||||||
|
const number = this.node.getData('number')
|
||||||
|
if (number) {
|
||||||
|
this.numberType = number.type || 1
|
||||||
|
this.numberLevel = number.level === '' ? 1 : number.level
|
||||||
|
}
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
const { x, y } = this.getShowPosition(e.clientX + 10, e.clientY + 10)
|
const { x, y } = this.getShowPosition(e.clientX + 10, e.clientY + 10)
|
||||||
this.left = x
|
this.left = x
|
||||||
@ -353,6 +416,9 @@ export default {
|
|||||||
this.left = -9999
|
this.left = -9999
|
||||||
this.top = -9999
|
this.top = -9999
|
||||||
this.type = ''
|
this.type = ''
|
||||||
|
this.node = ''
|
||||||
|
this.numberType = ''
|
||||||
|
this.numberLevel = ''
|
||||||
},
|
},
|
||||||
|
|
||||||
// 执行命令
|
// 执行命令
|
||||||
@ -403,6 +469,30 @@ export default {
|
|||||||
this.hide()
|
this.hide()
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 设置节点编号
|
||||||
|
setNodeNumber(prop, value) {
|
||||||
|
if (prop === 'type') {
|
||||||
|
this.numberType = value
|
||||||
|
if (value === '') {
|
||||||
|
// 无编号
|
||||||
|
this.numberLevel = ''
|
||||||
|
this.mindMap.execCommand('SET_NUMBER', [], null)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
// 有编号
|
||||||
|
if (this.numberLevel === '') {
|
||||||
|
this.numberLevel = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (prop === 'level') {
|
||||||
|
this.numberLevel = value
|
||||||
|
}
|
||||||
|
this.mindMap.execCommand('SET_NUMBER', [], {
|
||||||
|
[prop]: value
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
// 复制到剪贴板
|
// 复制到剪贴板
|
||||||
async copyToClipboard(type) {
|
async copyToClipboard(type) {
|
||||||
try {
|
try {
|
||||||
@ -478,6 +568,13 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.splitLine {
|
||||||
|
width: 95%;
|
||||||
|
height: 1px;
|
||||||
|
background-color: #e9edf2;
|
||||||
|
margin: 2px auto;
|
||||||
|
}
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 28px;
|
height: 28px;
|
||||||
@ -525,9 +622,13 @@ export default {
|
|||||||
.subItems {
|
.subItems {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 100%;
|
left: 100%;
|
||||||
top: 0;
|
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
|
cursor: auto;
|
||||||
|
|
||||||
|
&.showLeft {
|
||||||
|
left: -150px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,6 +77,8 @@ import OuterFrame from 'simple-mind-map/src/plugins/OuterFrame.js'
|
|||||||
// import HandDrawnLikeStyle from 'simple-mind-map-plugin-handdrawnlikestyle'
|
// import HandDrawnLikeStyle from 'simple-mind-map-plugin-handdrawnlikestyle'
|
||||||
// 标记插件,该插件为付费插件,详情请查看开发文档
|
// 标记插件,该插件为付费插件,详情请查看开发文档
|
||||||
// import Notation from 'simple-mind-map-plugin-notation'
|
// import Notation from 'simple-mind-map-plugin-notation'
|
||||||
|
// 编号插件,该插件为付费插件,详情请查看开发文档
|
||||||
|
// import Numbers from 'simple-mind-map-plugin-numbers'
|
||||||
import OutlineSidebar from './OutlineSidebar'
|
import OutlineSidebar from './OutlineSidebar'
|
||||||
import Style from './Style'
|
import Style from './Style'
|
||||||
import BaseStyle from './BaseStyle'
|
import BaseStyle from './BaseStyle'
|
||||||
@ -538,6 +540,10 @@ export default {
|
|||||||
this.mindMap.addPlugin(Notation)
|
this.mindMap.addPlugin(Notation)
|
||||||
this.$store.commit('setSupportMark', true)
|
this.$store.commit('setSupportMark', true)
|
||||||
}
|
}
|
||||||
|
if (typeof Numbers !== 'undefined') {
|
||||||
|
this.mindMap.addPlugin(Numbers)
|
||||||
|
this.$store.commit('setSupportNumbers', true)
|
||||||
|
}
|
||||||
this.mindMap.keyCommand.addShortcut('Control+s', () => {
|
this.mindMap.keyCommand.addShortcut('Control+s', () => {
|
||||||
this.manualSave()
|
this.manualSave()
|
||||||
})
|
})
|
||||||
|
|||||||
@ -30,6 +30,7 @@ const store = new Vuex.Store({
|
|||||||
extraTextOnExport: '', // 导出时底部添加的文字
|
extraTextOnExport: '', // 导出时底部添加的文字
|
||||||
supportHandDrawnLikeStyle: false, // 是否支持设置手绘风格
|
supportHandDrawnLikeStyle: false, // 是否支持设置手绘风格
|
||||||
supportMark: false, // 是否支持标记
|
supportMark: false, // 是否支持标记
|
||||||
|
supportNumbers: false, // 是否支持编号
|
||||||
isDragOutlineTreeNode: false // 当前是否正在拖拽大纲树的节点
|
isDragOutlineTreeNode: false // 当前是否正在拖拽大纲树的节点
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
@ -87,6 +88,11 @@ const store = new Vuex.Store({
|
|||||||
state.supportMark = data
|
state.supportMark = data
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 设置是否支持编号
|
||||||
|
setSupportNumbers(state, data) {
|
||||||
|
state.supportNumbers = data
|
||||||
|
},
|
||||||
|
|
||||||
// 设置树节点拖拽
|
// 设置树节点拖拽
|
||||||
setIsDragOutlineTreeNode(state, data) {
|
setIsDragOutlineTreeNode(state, data) {
|
||||||
state.isDragOutlineTreeNode = data
|
state.isDragOutlineTreeNode = data
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user