From 9485931f5d43f9b6ea24174e89bce0af27e9bf5f Mon Sep 17 00:00:00 2001 From: Ming <739803697@qq.com> Date: Wed, 7 Jun 2023 15:03:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=20=E6=9B=B4=E6=96=B0=E5=85=AC=E5=85=B1?= =?UTF-8?q?api=E5=AF=B9=E7=BB=84=E4=BB=B6=E5=8A=A8=E6=80=81=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useChartDataPondFetch.hook.ts | 39 +++++++++++++++++-------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/hooks/useChartDataPondFetch.hook.ts b/src/hooks/useChartDataPondFetch.hook.ts index 24ac7660..a506f274 100644 --- a/src/hooks/useChartDataPondFetch.hook.ts +++ b/src/hooks/useChartDataPondFetch.hook.ts @@ -1,4 +1,4 @@ -import { toRaw } from 'vue' +import { toRaw, watch, computed, ComputedRef } from 'vue' import { customizeHttp } from '@/api/http' import { CreateComponentType } from '@/packages/index.d' import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' @@ -20,7 +20,7 @@ const mittDataPondMap = new Map() // 创建单个数据项轮询接口 const newPondItemInterval = ( requestGlobalConfig: RequestGlobalConfigType, - requestDataPondItem: RequestDataPondItemType, + requestDataPondItem: ComputedRef, dataPondMapItem?: DataPondMapType[] ) => { if (!dataPondMapItem) return @@ -31,8 +31,7 @@ const newPondItemInterval = ( // 请求 const fetchFn = async () => { try { - const res = await customizeHttp(toRaw(requestDataPondItem.dataPondRequestConfig), toRaw(requestGlobalConfig)) - + const res = await customizeHttp(toRaw(requestDataPondItem.value.dataPondRequestConfig), toRaw(requestGlobalConfig)) if (res) { try { // 遍历更新回调函数 @@ -49,19 +48,32 @@ const newPondItemInterval = ( } } + watch( + () => requestDataPondItem.value.dataPondRequestConfig.requestParams.Params, + () => { + fetchFn() + }, + { + immediate: false, + deep: true + } + ) + + // 立即调用 fetchFn() - const targetInterval = requestDataPondItem.dataPondRequestConfig.requestInterval - const targetUnit = requestDataPondItem.dataPondRequestConfig.requestIntervalUnit + + const targetInterval = requestDataPondItem.value.dataPondRequestConfig.requestInterval + const targetUnit = requestDataPondItem.value.dataPondRequestConfig.requestIntervalUnit const globalRequestInterval = requestGlobalConfig.requestInterval const globalUnit = requestGlobalConfig.requestIntervalUnit // 定时时间 - const time = targetInterval ? targetInterval : globalRequestInterval + const time = targetInterval ? targetInterval : globalRequestInterval // 单位 - const unit = targetInterval ? targetUnit : globalUnit + const unit = targetInterval ? targetUnit : globalUnit // 开启轮询 if (time) fetchInterval = setInterval(fetchFn, intervalUnitHandle(time, unit)) } @@ -96,13 +108,16 @@ export const useChartDataPondFetch = () => { } // 初始化数据池 - const initDataPond = (requestGlobalConfig: RequestGlobalConfigType) => { - const { requestDataPond } = requestGlobalConfig + const initDataPond = (useChartEditStore: ChartEditStoreType) => { + const { requestGlobalConfig } = useChartEditStore() + const chartEditStore = useChartEditStore() // 根据 mapId 查找对应的数据池配置 for (let pondKey of mittDataPondMap.keys()) { - const requestDataPondItem = requestDataPond.find(item => item.dataPondId === pondKey) + const requestDataPondItem = computed(() => { + return requestGlobalConfig.requestDataPond.find(item => item.dataPondId === pondKey) + }) as ComputedRef if (requestDataPondItem) { - newPondItemInterval(requestGlobalConfig, requestDataPondItem, mittDataPondMap.get(pondKey)) + newPondItemInterval(chartEditStore.requestGlobalConfig, requestDataPondItem, mittDataPondMap.get(pondKey)) } } }