Demo:修复复制知犀思维导图多个节点时无法粘贴的问题
This commit is contained in:
parent
a9ea4b8e33
commit
518b7642a0
@ -1,57 +1,69 @@
|
|||||||
import { imgToDataUrl } from 'simple-mind-map/src/utils/index'
|
import { imgToDataUrl } from 'simple-mind-map/src/utils/index'
|
||||||
|
|
||||||
// 处理知犀
|
// 处理知犀
|
||||||
const handleZHIXI = async text => {
|
const handleZHIXI = async data => {
|
||||||
text = text.replace('', '')
|
|
||||||
try {
|
try {
|
||||||
// 只处理一项
|
try {
|
||||||
const node = JSON.parse(text)[0]
|
if (!Array.isArray(data)) {
|
||||||
const newNode = {}
|
data = String(data).replace('', '')
|
||||||
const waitLoadImageList = []
|
data = JSON.parse(data)
|
||||||
const walk = async (root, newRoot) => {
|
|
||||||
newRoot.data = {
|
|
||||||
text: root.data.text,
|
|
||||||
hyperlink: root.data.hyperlink,
|
|
||||||
hyperlinkTitle: root.data.hyperlinkTitle,
|
|
||||||
note: root.data.note
|
|
||||||
}
|
|
||||||
// 图片
|
|
||||||
if (root.data.image) {
|
|
||||||
let resolve = null
|
|
||||||
let promise = new Promise(_resolve => {
|
|
||||||
resolve = _resolve
|
|
||||||
})
|
|
||||||
waitLoadImageList.push(promise)
|
|
||||||
try {
|
|
||||||
newRoot.data.image = await imgToDataUrl(root.data.image)
|
|
||||||
newRoot.data.imageSize = root.data.imageSize
|
|
||||||
resolve()
|
|
||||||
} catch (error) {
|
|
||||||
resolve()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 子节点
|
|
||||||
newRoot.children = []
|
|
||||||
if (root.children && root.children.length > 0) {
|
|
||||||
root.children.forEach(item => {
|
|
||||||
// 概要
|
|
||||||
if (item.data.type === 'generalize') {
|
|
||||||
newRoot.data.generalization = {
|
|
||||||
text: item.data.text
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
let newChild = {}
|
|
||||||
newRoot.children.push(newChild)
|
|
||||||
walk(item, newChild)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
}
|
}
|
||||||
walk(node, newNode)
|
if (!Array.isArray(data)) {
|
||||||
|
data = []
|
||||||
|
}
|
||||||
|
const newNodeList = []
|
||||||
|
const waitLoadImageList = []
|
||||||
|
const walk = (list, newList) => {
|
||||||
|
list.forEach(async item => {
|
||||||
|
let newRoot = {}
|
||||||
|
newList.push(newRoot)
|
||||||
|
newRoot.data = {
|
||||||
|
text: item.data.text,
|
||||||
|
hyperlink: item.data.hyperlink,
|
||||||
|
hyperlinkTitle: item.data.hyperlinkTitle,
|
||||||
|
note: item.data.note
|
||||||
|
}
|
||||||
|
// 图片
|
||||||
|
if (item.data.image) {
|
||||||
|
let resolve = null
|
||||||
|
let promise = new Promise(_resolve => {
|
||||||
|
resolve = _resolve
|
||||||
|
})
|
||||||
|
waitLoadImageList.push(promise)
|
||||||
|
try {
|
||||||
|
newRoot.data.image = await imgToDataUrl(item.data.image)
|
||||||
|
newRoot.data.imageSize = item.data.imageSize
|
||||||
|
resolve()
|
||||||
|
} catch (error) {
|
||||||
|
resolve()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 子节点
|
||||||
|
newRoot.children = []
|
||||||
|
if (item.children && item.children.length > 0) {
|
||||||
|
const children = []
|
||||||
|
item.children.forEach(item2 => {
|
||||||
|
// 概要
|
||||||
|
if (item2.data.type === 'generalize') {
|
||||||
|
newRoot.data.generalization = {
|
||||||
|
text: item2.data.text
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
children.push(item2)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
walk(children, newRoot.children)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
walk(data, newNodeList)
|
||||||
await Promise.all(waitLoadImageList)
|
await Promise.all(waitLoadImageList)
|
||||||
return {
|
return {
|
||||||
simpleMindMap: true,
|
simpleMindMap: true,
|
||||||
data: newNode
|
data: newNodeList
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ''
|
return ''
|
||||||
@ -59,7 +71,15 @@ const handleZHIXI = async text => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handleClipboardText = async text => {
|
const handleClipboardText = async text => {
|
||||||
// 处理知犀数据
|
// 知犀数据格式1
|
||||||
|
try {
|
||||||
|
let parsedData = JSON.parse(text)
|
||||||
|
if (parsedData.__c_zx_v !== undefined) {
|
||||||
|
const res = await handleZHIXI(parsedData.children)
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
} catch (error) {}
|
||||||
|
// 知犀数据格式2
|
||||||
if (text.includes('')) {
|
if (text.includes('')) {
|
||||||
const res = await handleZHIXI(text)
|
const res = await handleZHIXI(text)
|
||||||
return res
|
return res
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user