From e348caaa0ca4b93ad4e71eb001d5de18fbfbb4a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=94=E8=B7=91=E7=9A=84=E9=9D=A2=E6=9D=A1?= <1262327911@qq.com> Date: Wed, 17 Aug 2022 16:56:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=84=E7=90=86=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=EF=BC=8CID=E6=9B=B4=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E5=8F=AF=E6=8E=A7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditTools/hooks/useFile.hooks.ts | 4 +- src/views/chart/hooks/useSync.hook.ts | 38 ++++++++++++++----- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/views/chart/ContentEdit/components/EditTools/hooks/useFile.hooks.ts b/src/views/chart/ContentEdit/components/EditTools/hooks/useFile.hooks.ts index 73e2171f..63e5a2a6 100644 --- a/src/views/chart/ContentEdit/components/EditTools/hooks/useFile.hooks.ts +++ b/src/views/chart/ContentEdit/components/EditTools/hooks/useFile.hooks.ts @@ -34,13 +34,13 @@ export const useFile = () => { // 新增 onPositiveCallback: async () => { fileData = JSON.parse(fileData) - await updateComponent(fileData) + await updateComponent(fileData, false, true) window['$message'].success('导入成功!') }, // 覆盖 onNegativeCallback: async () => { fileData = JSON.parse(fileData) - await updateComponent(fileData, true) + await updateComponent(fileData, true, true) window['$message'].success('导入成功!') } }) diff --git a/src/views/chart/hooks/useSync.hook.ts b/src/views/chart/hooks/useSync.hook.ts index 47aaf7ea..48be7ba0 100644 --- a/src/views/chart/hooks/useSync.hook.ts +++ b/src/views/chart/hooks/useSync.hook.ts @@ -14,11 +14,11 @@ export const useSync = () => { /** * * 组件动态注册 * @param projectData 项目数据 - * @param isSplace 是否替换数据 + * @param isReplace 是否替换数据 * @returns */ - const updateComponent = async (projectData: ChartEditStorage, isSplace = false) => { - if (isSplace) { + const updateComponent = async (projectData: ChartEditStorage, isReplace = false, changeId = false) => { + if (isReplace) { // 清除列表 chartEditStore.componentList = [] // 清除历史记录 @@ -47,22 +47,40 @@ export const useSync = () => { // 组件 if (key === ChartEditStoreEnum.COMPONENT_LIST) { for (const comItem of projectData[key]) { - // 重新创建是为了处理类种方法消失的问题 - const create = async (e: CreateComponentType, callBack?: (e: CreateComponentType) => void) => { + const create = async ( + _componentInstance: CreateComponentType, + callBack?: (componentInstance: CreateComponentType) => void + ) => { // 补充 class 上的方法 - let newComponent: CreateComponentType = await createComponent(e.chartConfig) + let newComponent: CreateComponentType = await createComponent(_componentInstance.chartConfig) if (callBack) { - callBack(Object.assign(newComponent, { ...e, id: getUUID() })) + if (changeId) { + callBack(Object.assign(newComponent, { ..._componentInstance, id: getUUID() })) + } else { + callBack(Object.assign(newComponent)) + } } else { - chartEditStore.addComponentList(Object.assign(newComponent, { ...e, id: getUUID() }), false, true) + if (changeId) { + chartEditStore.addComponentList( + Object.assign(newComponent, { ..._componentInstance, id: getUUID() }), + false, + true + ) + } else { + chartEditStore.addComponentList(Object.assign(newComponent), false, true) + } } } if (comItem.isGroup) { // 创建分组 let groupClass = new PublicGroupConfigClass() - groupClass = Object.assign(groupClass, comItem) + if (changeId) { + groupClass = Object.assign(groupClass, { ...comItem, id: getUUID() }) + } else { + groupClass = Object.assign(groupClass, { ...comItem }) + } // 注册子应用 const targetList: CreateComponentType[] = [] @@ -72,7 +90,7 @@ export const useSync = () => { }) }) groupClass.groupList = targetList - + // 分组插入到列表 chartEditStore.addComponentList(groupClass, false, true) } else {