diff --git a/frontend/src/components/canvas/components/Editor/CanvasOptBar.vue b/frontend/src/components/canvas/components/Editor/CanvasOptBar.vue index c927bbcf51..7aa7cd866e 100644 --- a/frontend/src/components/canvas/components/Editor/CanvasOptBar.vue +++ b/frontend/src/components/canvas/components/Editor/CanvasOptBar.vue @@ -1,7 +1,7 @@ diff --git a/frontend/src/components/canvas/components/Editor/EditBar.vue b/frontend/src/components/canvas/components/Editor/EditBar.vue index e2ecad6e4b..155a1dd7f4 100644 --- a/frontend/src/components/canvas/components/Editor/EditBar.vue +++ b/frontend/src/components/canvas/components/Editor/EditBar.vue @@ -11,6 +11,7 @@ + @@ -53,6 +54,19 @@ export default { } }, computed: { + existLinkage() { + let linkageFiltersCount = 0 + this.componentData.forEach(item => { + if (item.linkageFilters && item.linkageFilters.length > 0) { + item.linkageFilters.forEach(linkage => { + if (this.element.propValue.viewId === linkage.sourceViewId) { + linkageFiltersCount++ + } + }) + } + }) + return linkageFiltersCount + }, linkageInfo() { return this.targetLinkageInfo[this.element.propValue.viewId] }, @@ -93,6 +107,21 @@ export default { }, linkageEdit() { + }, + // 清除相同sourceViewId 的 联动条件 + clearLinkage() { + this.componentData.forEach(item => { + if (item.linkageFilters && item.linkageFilters.length > 0) { + const newList = item.linkageFilters.filter(linkage => linkage.sourceViewId !== this.element.propValue.viewId) + item.linkageFilters.splice(0, item.linkageFilters.length) + // 重新push 可保证数组指针不变 可以watch到 + if (newList.length > 0) { + newList.forEach(newLinkage => { + item.linkageFilters.push(newLinkage) + }) + } + } + }) } } } diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 10cca9e74a..a675e04981 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -1210,7 +1210,9 @@ export default { do_not_save: "Don't Save", save_and_close: 'Save', drill: 'drill', - linkage: 'linkage' + linkage: 'linkage', + cancel_linkage: 'Cancel Linkage', + remove_all_linkage: 'Remove All Linkage' }, plugin: { local_install: 'Local installation', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 082eef1234..7acc6d82fe 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -1209,7 +1209,9 @@ export default { do_not_save: '不保存', save: '保存', drill: '下钻', - linkage: '联动' + linkage: '联动', + cancel_linkage: '取消联动', + remove_all_linkage: '清除所有联动' }, plugin: { local_install: '本地安裝', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 465790a6d4..9f129a8aa8 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -1211,7 +1211,9 @@ export default { do_not_save: '不保存', save: '保存', drill: '下钻', - linkage: '联动' + linkage: '联动', + cancel_linkage: '取消联动', + remove_all_linkage: '清除所有联动' }, plugin: { local_install: '本地安装', diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js index 43facb6fe1..b9b876dea1 100644 --- a/frontend/src/store/index.js +++ b/frontend/src/store/index.js @@ -178,7 +178,7 @@ const data = { if (element.propValue.viewId === targetViewId) { // 如果目标视图 和 当前循环组件id相等 则进行条件增减 const targetFieldId = targetInfoArray[1] // 目标视图列ID const condition = new Condition('', targetFieldId, 'eq', [dimension.value], [targetViewId]) - + condition.sourceViewId = viewId let j = currentFilters.length while (j--) { const filter = currentFilters[j]