From b4588745d91f8d0ae2e1320f2e18f9b6efd2c48e Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Mon, 14 Aug 2023 13:58:39 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E4=BB=AA=E8=A1=A8=E6=9D=BF):=20?= =?UTF-8?q?=E5=BD=93=E6=BA=90=E8=A7=86=E5=9B=BE=E5=A4=9A=E4=B8=AA=E4=B8=AA?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=8C=B9=E9=85=8D=E7=9B=AE=E6=A0=87=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E4=B8=80=E4=B8=AA=E5=AD=97=E6=AE=B5=E7=9A=84=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E9=BB=98=E8=AE=A4=E4=BB=85=E4=BF=9D=E7=95=99=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E7=82=B9=E5=87=BB=E7=9A=84=E7=BB=B4=E5=BA=A6=E5=80=BC?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=20#5769?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/store/index.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js index 26ab493d70..ac0f46332b 100644 --- a/frontend/src/store/index.js +++ b/frontend/src/store/index.js @@ -363,10 +363,16 @@ const data = { // 添加联动 下钻 等过滤组件 addViewTrackFilter(state, data) { + const dimensionSort = deepCopy(data.dimensionList) const viewId = data.viewId let trackInfo if (data.option === 'linkage') { trackInfo = state.nowPanelTrackInfo + // 兼容情况,当源视图多个个字段匹配目标视图一个字段的时候,默认只保留当前点击的维度,将改维度排序到组件结尾,去重时即可保留 + const activeDimensionIndex = data.dimensionList.findIndex(dimension =>dimension.id === data.name) + const dimensionLast = dimensionSort[dimensionSort.length-1] + dimensionSort[dimensionSort.length-1] = dimensionSort[activeDimensionIndex] + dimensionSort[activeDimensionIndex] = dimensionLast } else { trackInfo = state.nowPanelJumpInfoTargetPanel } @@ -379,7 +385,7 @@ const data = { const currentFilters = element.linkageFilters || [] // 当前联动filter - data.dimensionList.forEach(dimension => { + dimensionSort.forEach(dimension => { const sourceInfo = viewId + '#' + dimension.id // 获取所有目标联动信息 const targetInfoList = trackInfo[sourceInfo] || [] @@ -394,7 +400,7 @@ const data = { while (j--) { const filter = currentFilters[j] // 兼容性准备 viewIds 只会存放一个值 - if (targetFieldId === filter.fieldId && filter.viewIds.includes(targetViewId)) { + if (targetFieldId === filter.fieldId && filter.viewIds.includes(targetViewId) && filter.value[0] !== data.value) { currentFilters.splice(j, 1) } } @@ -414,7 +420,7 @@ const data = { // 联动的视图情况历史条件 // const currentFilters = [] - data.dimensionList.forEach(dimension => { + dimensionSort.forEach(dimension => { const sourceInfo = viewId + '#' + dimension.id // 获取所有目标联动信息 const targetInfoList = trackInfo[sourceInfo] || []