From dc5dbed3bd05f56b541f4f5b9e68f3a8ae65f75e Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Thu, 6 Mar 2025 17:46:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BB=AA=E8=A1=A8=E6=9D=BF=E3=80=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=9B=A0=E8=BF=87=E6=BB=A4=E7=BB=84=E4=BB=B6=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=92=8C=E9=80=89=E6=8B=A9=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E4=B8=8D=E4=B8=80=E8=87=B4=E5=AF=BC=E8=87=B4=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=BF=87=E6=BB=A4=E7=BB=84=E4=BB=B6=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E4=B8=8E=E8=BF=87=E6=BB=A4=E7=BB=84=E4=BB=B6=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=9A=84=E5=9B=BE=E8=A1=A8=E8=BF=87=E6=BB=A4=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/data-visualization/dvMain.ts | 24 +++++++++++++------ .../core-frontend/src/utils/componentUtils.ts | 20 ++++++++++++++++ 2 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 core/core-frontend/src/utils/componentUtils.ts diff --git a/core/core-frontend/src/store/modules/data-visualization/dvMain.ts b/core/core-frontend/src/store/modules/data-visualization/dvMain.ts index 299893d751..a6f99261ae 100644 --- a/core/core-frontend/src/store/modules/data-visualization/dvMain.ts +++ b/core/core-frontend/src/store/modules/data-visualization/dvMain.ts @@ -25,6 +25,7 @@ import { viewFieldTimeTrans } from '@/utils/viewUtils' import { useAppearanceStoreWithOut } from '@/store/modules/appearance' import { ElMessage } from 'element-plus-secondary' import { useI18n } from '@/hooks/web/useI18n' +import { filterEnumMap } from '@/utils/componentUtils' const { t } = useI18n() export const dvMainStore = defineStore('dataVisualization', { @@ -1313,19 +1314,19 @@ export const dvMainStore = defineStore('dataVisualization', { }) } }, - trackFilterCursor(element, checkQDList, trackInfo, preActiveComponentIds, viewId) { + async trackFilterCursor(element, checkQDList, trackInfo, preActiveComponentIds, viewId) { let currentFilters = element.linkageFilters || [] // 当前联动filter if (['table-info', 'table-normal'].includes(element.innerType)) { currentFilters = [] } // 联动的图表情况历史条件 // const currentFilters = [] - checkQDList.forEach(QDItem => { + for (const QDItem of checkQDList) { const sourceInfo = viewId + '#' + QDItem.id // 获取所有目标联动信息 const targetInfoList = trackInfo[sourceInfo] || [] const paramValue = [QDItem.value] - targetInfoList.forEach(targetInfo => { + for (const targetInfo of targetInfoList) { const targetInfoArray = targetInfo.split('#') const targetViewId = targetInfoArray[0] // 目标图表 if (element.component === 'UserView' && element.id === targetViewId) { @@ -1364,13 +1365,22 @@ export const dvMainStore = defineStore('dataVisualization', { preActiveComponentIds.includes(element.id) || preActiveComponentIds.push(element.id) } if (element.component === 'VQuery') { - element.propValue.forEach(filterItem => { + for (const filterItem of element.propValue) { + const { optionValueSource, field, displayId } = filterItem if (filterItem.id === targetViewId) { let queryParams = paramValue if (!['1', '7'].includes(filterItem.displayType)) { // 查询组件除了时间组件 其他入参只支持文本 这里全部转为文本 queryParams = paramValue.map(number => String(number)) } + // 当前是选择数据集模式,可能出现展示字段和选择字段不同的情况 这里需要兼容 + if (optionValueSource === 1 && field.id) { + queryParams = await filterEnumMap(queryParams, { + queryId: field.id, + displayId, + searchText: '' + }) + } filterItem.defaultValueCheck = true filterItem.timeType = 'fixed' if (['0', '2'].includes(filterItem.displayType)) { @@ -1406,10 +1416,10 @@ export const dvMainStore = defineStore('dataVisualization', { filterItem['defaultConditionValueF'] = queryParams[0] } } - }) + } } - }) - }) + } + } element.linkageFilters = currentFilters }, diff --git a/core/core-frontend/src/utils/componentUtils.ts b/core/core-frontend/src/utils/componentUtils.ts new file mode 100644 index 0000000000..ae96d06f5c --- /dev/null +++ b/core/core-frontend/src/utils/componentUtils.ts @@ -0,0 +1,20 @@ +import { EnumValue, enumValueObj } from '@/api/dataset' + +const findFilterEnum = async (val: EnumValue) => { + const queryId = val.queryId + const displayId = val.displayId + const arr = await enumValueObj({ queryId: queryId, displayId: displayId, searchText: '' }) + return arr?.reduce((acc, item) => { + acc[item[queryId]] = item[displayId] + return acc + }, {}) +} + +export const filterEnumMap = async (queryParams, val: EnumValue) => { + const resultMap = await findFilterEnum(val) + const resultParams = [] + queryParams.forEach(param => { + resultParams.push(resultMap[param] || param) + }) + return resultParams +}