fix: 修复导入组件数据会错乱的问题

This commit is contained in:
奔跑的面条 2022-10-09 16:39:10 +08:00
commit d43823794d
3 changed files with 33 additions and 8 deletions

View File

@ -1,6 +1,6 @@
{
"name": "go-view",
"version": "2.0.8",
"version": "2.0.91",
"scripts": {
"dev": "vite --host",
"build": "vue-tsc --noEmit && vite build",

View File

@ -153,6 +153,8 @@ export const mousedownBoxSelect = (e: MouseEvent, item?: CreateComponentType | C
// 鼠标抬起
const mouseup = () => {
// 鼠标抬起时结束mousemove的节流函数避免选框不消失问题
mousemove.cancel()
chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_SELECT, false)
chartEditStore.setMousePosition(0, 0, 0, 0)
document.removeEventListener('mousemove', mousemove)

View File

@ -18,6 +18,29 @@ import { CreateComponentType, CreateComponentGroupType, ConfigType } from '@/pac
import { PublicGroupConfigClass } from '@/packages/public/publicConfig'
import merge from 'lodash/merge'
/**
*
* @param object
* @param sources
* @returns object
*/
const componentMerge = (object: any, sources: any, notComponent = false) => {
// 非组件不处理
if (notComponent) return merge(object, sources)
// 组件排除 options
const option = sources.option
if(!option) return merge(object, sources)
// 为 undefined 的 sources 来源对象属性将被跳过详见 https://www.lodashjs.com/docs/lodash.merge
sources.option = undefined
if (option) {
return {
...merge(object, sources),
option: option
}
}
}
// 请求处理
export const useSync = () => {
const chartEditStore = useChartEditStore()
@ -69,19 +92,19 @@ export const useSync = () => {
let newComponent: CreateComponentType = await createComponent(_componentInstance.chartConfig)
if (callBack) {
if (changeId) {
callBack(merge(newComponent, { ..._componentInstance, id: getUUID() }))
callBack(componentMerge(newComponent, { ..._componentInstance, id: getUUID() }))
} else {
callBack(merge(newComponent, _componentInstance))
callBack(componentMerge(newComponent, _componentInstance))
}
} else {
if (changeId) {
chartEditStore.addComponentList(
merge(newComponent, { ..._componentInstance, id: getUUID() }),
componentMerge(newComponent, { ..._componentInstance, id: getUUID() }),
false,
true
)
} else {
chartEditStore.addComponentList(merge(newComponent, _componentInstance), false, true)
chartEditStore.addComponentList(componentMerge(newComponent, _componentInstance), false, true)
}
}
}
@ -90,9 +113,9 @@ export const useSync = () => {
// 创建分组
let groupClass = new PublicGroupConfigClass()
if (changeId) {
groupClass = merge(groupClass, { ...comItem, id: getUUID() })
groupClass = componentMerge(groupClass, { ...comItem, id: getUUID() })
} else {
groupClass = merge(groupClass, comItem)
groupClass = componentMerge(groupClass, comItem)
}
// 注册子应用
@ -113,7 +136,7 @@ export const useSync = () => {
} else {
// 非组件(顺便排除脏数据)
if (key !== 'editCanvasConfig' && key !== 'requestGlobalConfig') return
merge(chartEditStore[key], projectData[key])
componentMerge(chartEditStore[key], projectData[key], true)
}
}
}