diff --git a/src/enums/httpEnum.ts b/src/enums/httpEnum.ts index b8ead3f5..165948f5 100644 --- a/src/enums/httpEnum.ts +++ b/src/enums/httpEnum.ts @@ -10,6 +10,14 @@ export enum ResultEnum { TIMEOUT = 10042, } +// 数据相关 +export enum RequestDataTypeEnum { + // 静态数据 + STATIC = 0, + // 请求数据 + AJAX = 1, +} + /** * @description: 请求方法 */ diff --git a/src/hooks/useChartDataFetch.hook.ts b/src/hooks/useChartDataFetch.hook.ts new file mode 100644 index 00000000..4d4b1db4 --- /dev/null +++ b/src/hooks/useChartDataFetch.hook.ts @@ -0,0 +1,39 @@ +import { toRefs, watchEffect } from 'vue' +import { http } from '@/api/http' +import { CreateComponentType } from '@/packages/index.d' +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' +import { RequestDataTypeEnum } from '@/enums/httpEnum' + +/** + * 数据监听与更改 + * @param chartConfig + */ +export const useChartDataFetch = (chartConfig: CreateComponentType) => { + let fetchInterval = 0 + + watchEffect(() => { + clearInterval(fetchInterval) + + const chartEditStore = useChartEditStore() + const { requestOriginUrl, requestInterval } = toRefs( + chartEditStore.getRequestGlobalConfig + ) + const { requestDataType, requestHttpType, requestUrl } = toRefs( + chartConfig.data + ) + if (requestDataType.value !== RequestDataTypeEnum.AJAX) return + // 处理地址 + if (requestUrl?.value && requestInterval.value > 0) { + // requestOriginUrl 允许为空 + const completePath = requestOriginUrl && requestOriginUrl.value + requestUrl.value + if (!completePath) return + + fetchInterval = setInterval(async () => { + const res = await http(requestHttpType.value)(completePath || '', {}) + if(res.data) { + chartConfig.option.dataset = res.data as any + } + }, requestInterval.value * 1000) + } + }) +} diff --git a/src/packages/components/Charts/Bars/BarCommon/config.ts b/src/packages/components/Charts/Bars/BarCommon/config.ts index ac6272dd..187ff852 100644 --- a/src/packages/components/Charts/Bars/BarCommon/config.ts +++ b/src/packages/components/Charts/Bars/BarCommon/config.ts @@ -47,8 +47,7 @@ export const option = { ] } -export default class Config extends publicConfig - implements CreateComponentType { +export default class Config extends publicConfig implements CreateComponentType { public key = BarCommonConfig.key public chartConfig = cloneDeep(BarCommonConfig) // 图表配置项 diff --git a/src/packages/components/Charts/Bars/BarCommon/index.vue b/src/packages/components/Charts/Bars/BarCommon/index.vue index b3a61dc3..8f2491f0 100644 --- a/src/packages/components/Charts/Bars/BarCommon/index.vue +++ b/src/packages/components/Charts/Bars/BarCommon/index.vue @@ -1,5 +1,5 @@ diff --git a/src/packages/components/Charts/Bars/BarCrossrange/index.vue b/src/packages/components/Charts/Bars/BarCrossrange/index.vue index 7fd87b19..dc27f366 100644 --- a/src/packages/components/Charts/Bars/BarCrossrange/index.vue +++ b/src/packages/components/Charts/Bars/BarCrossrange/index.vue @@ -1,5 +1,5 @@ diff --git a/src/packages/components/Charts/Lines/LineCommon/index.vue b/src/packages/components/Charts/Lines/LineCommon/index.vue index 98f97c1e..8915dd7d 100644 --- a/src/packages/components/Charts/Lines/LineCommon/index.vue +++ b/src/packages/components/Charts/Lines/LineCommon/index.vue @@ -1,5 +1,5 @@