diff --git a/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts b/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts index 73ea2eee..5a152be0 100644 --- a/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts +++ b/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts @@ -8,17 +8,14 @@ import { editToJsonInterval } from '@/settings/designSetting' const { updateComponent } = useSync() const chartEditStore = useChartEditStore() - + // 侦听器更新 const useSyncUpdateHandle = () => { - const routerParamsInfo = useRoute() // 定义侦听器变量 let timer: any const updateFn = (e: any) => updateComponent(e!.detail, true, false) - const syncData = () => { - if (routerParamsInfo.name == ChartEnum.CHART_HOME_NAME) { - dispatchEvent(new CustomEvent(SavePageEnum.CHART, { detail: chartEditStore.getStorageInfo })) - } + const syncData = async () => { + dispatchEvent(new CustomEvent(SavePageEnum.CHART, { detail: chartEditStore.getStorageInfo })) } // 开启侦听 diff --git a/src/views/edit/index.vue b/src/views/edit/index.vue index b67efa28..42d1e4ab 100644 --- a/src/views/edit/index.vue +++ b/src/views/edit/index.vue @@ -44,14 +44,13 @@ import { icon } from '@/plugins' const { ChevronBackOutlineIcon, DownloadIcon } = icon.ionicons5 const showOpenFilePicker: Function = (window as any).showOpenFilePicker -let content = ref('') - +const content = ref('') // 从sessionStorage 获取数据 -function getDataBySession() { - const localStorageInfo: ChartEditStorageType = getSessionStorageInfo() as ChartEditStorageType +async function getDataBySession() { + const localStorageInfo: ChartEditStorageType = await getSessionStorageInfo() as unknown as ChartEditStorageType content.value = JSON.stringify(localStorageInfo, undefined, 2) } -getDataBySession() +setTimeout(getDataBySession) // 返回父窗口 function back() { @@ -86,7 +85,7 @@ document.addEventListener('keydown', function (e) { addEventListener('blur', updateSync) // 同步更新 -function updateSync() { +async function updateSync() { if (!window.opener) { return window['$message'].error('源窗口已关闭,视图同步失败') } diff --git a/src/views/preview/wrapper.vue b/src/views/preview/wrapper.vue index d209438a..86abc6b3 100644 --- a/src/views/preview/wrapper.vue +++ b/src/views/preview/wrapper.vue @@ -12,12 +12,12 @@ import { ref } from 'vue' import Preview from './index.vue' let key = ref(Date.now()) -let localStorageInfo: ChartEditStorageType = getSessionStorageInfo() as ChartEditStorageType -// 数据变更 -> 同步sessionStorage -> reload页面 (重新执行Mounted) +// 数据变更 -> 组件销毁重建 ;[SavePageEnum.JSON, SavePageEnum.CHART].forEach((saveEvent: string) => { if (!window.opener) return - window.opener.addEventListener(saveEvent, (e: any) => { + window.opener.addEventListener(saveEvent, async (e: any) => { + const localStorageInfo: ChartEditStorageType = await getSessionStorageInfo() as unknown as ChartEditStorageType setSessionStorage(StorageEnum.GO_CHART_STORAGE_LIST, [{ ...e.detail, id: localStorageInfo.id }]) key.value = Date.now() })