diff --git a/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts b/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts new file mode 100644 index 00000000..73ea2eee --- /dev/null +++ b/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts @@ -0,0 +1,61 @@ +import { watch } from 'vue' +import { useRoute } from 'vue-router' +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' +import { useSync } from '@/views/chart/hooks/useSync.hook' +import { ChartEnum } from '@/enums/pageEnum' +import { SavePageEnum } from '@/enums/editPageEnum' +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 use = () => { + // 1、定时同步数据 + timer = setInterval(() => { + // 窗口激活并且处于工作台 + document.hasFocus() && syncData() + }, editToJsonInterval) + // 2、失焦同步数据 + addEventListener('blur', syncData) + + // 【监听JSON代码 刷新工作台图表】 + addEventListener(SavePageEnum.JSON, updateFn) + } + + // 关闭侦听 + const unUse = () => { + clearInterval(timer) + removeEventListener(SavePageEnum.JSON, updateFn) + removeEventListener('blur', syncData) + } + + // 路由变更时处理 + const watchHandler = (toName: any, fromName: any) => { + if (fromName == ChartEnum.CHART_HOME_NAME) { + unUse() + } + if (toName == ChartEnum.CHART_HOME_NAME) { + use() + } + } + + return watchHandler +} + +export const useSyncUpdate = () => { + const routerParamsInfo = useRoute() + watch(() => routerParamsInfo.name, useSyncUpdateHandle(), { immediate: true }) +} \ No newline at end of file diff --git a/src/views/chart/ContentEdit/components/EditTools/index.vue b/src/views/chart/ContentEdit/components/EditTools/index.vue index 4bb39d79..f2d2d97d 100644 --- a/src/views/chart/ContentEdit/components/EditTools/index.vue +++ b/src/views/chart/ContentEdit/components/EditTools/index.vue @@ -62,20 +62,18 @@