diff --git a/backend/src/main/java/io/dataease/dto/PanelViewLinkageDTO.java b/backend/src/main/java/io/dataease/dto/PanelViewLinkageDTO.java index 8a868c3fb5..e0603a832a 100644 --- a/backend/src/main/java/io/dataease/dto/PanelViewLinkageDTO.java +++ b/backend/src/main/java/io/dataease/dto/PanelViewLinkageDTO.java @@ -18,9 +18,6 @@ public class PanelViewLinkageDTO extends PanelViewLinkage { @ApiModelProperty("目标视图名称") //目标视图名称 private String targetViewName; - @ApiModelProperty("启用联动") - //关联状态 - private boolean linkageActive = false; @ApiModelProperty("联动字段") private List linkageFields = new ArrayList<>(); @@ -60,17 +57,8 @@ public class PanelViewLinkageDTO extends PanelViewLinkage { } public PanelViewLinkageDTO(boolean linkageActive) { - this.linkageActive = linkageActive; + super.setLinkageActive(linkageActive); } - - public boolean isLinkageActive() { - return linkageActive; - } - - public void setLinkageActive(boolean linkageActive) { - this.linkageActive = linkageActive; - } - public List getLinkageFields() { return linkageFields; } diff --git a/backend/src/main/java/io/dataease/ext/ExtPanelViewLinkageMapper.xml b/backend/src/main/java/io/dataease/ext/ExtPanelViewLinkageMapper.xml index 55772f2697..1c38cde289 100644 --- a/backend/src/main/java/io/dataease/ext/ExtPanelViewLinkageMapper.xml +++ b/backend/src/main/java/io/dataease/ext/ExtPanelViewLinkageMapper.xml @@ -14,6 +14,7 @@ + @@ -37,7 +38,8 @@ chart_view.`name` as 'targetViewName', chart_view.id as 'target_view_id', chart_view.table_id, - (case when panel_view_linkage.target_view_id is null then 0 else 1 end) as 'linkageActive', + panel_view_linkage.source_view_id as 'sourceViewId', + (case when panel_view_linkage.target_view_id is null then 0 else panel_view_linkage.linkage_active end) as 'linkageActive', panel_view_linkage_field.source_field, panel_view_linkage_field.target_field FROM @@ -109,6 +111,8 @@ LEFT JOIN panel_view_linkage_field ON panel_view_linkage.id = panel_view_linkage_field.linkage_id WHERE panel_view_linkage.panel_id = #{panelId} + and panel_view_linkage.linkage_active=1 + and panel_view_linkage_field.id is not null diff --git a/backend/src/main/java/io/dataease/service/panel/PanelViewLinkageService.java b/backend/src/main/java/io/dataease/service/panel/PanelViewLinkageService.java index 596ebd7cb4..a168adc9a5 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelViewLinkageService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelViewLinkageService.java @@ -72,18 +72,17 @@ public class PanelViewLinkageService { String targetViewId = entry.getKey(); PanelViewLinkageDTO linkageDTO = entry.getValue(); List linkageFields = linkageDTO.getLinkageFields(); - - if (CollectionUtils.isNotEmpty(linkageFields) && linkageDTO.isLinkageActive()) { - String linkageId = UUID.randomUUID().toString(); - PanelViewLinkage linkage = new PanelViewLinkage(); - linkage.setId(linkageId); - linkage.setPanelId(panelId); - linkage.setSourceViewId(sourceViewId); - linkage.setTargetViewId(targetViewId); - linkage.setUpdatePeople(AuthUtils.getUser().getUsername()); - linkage.setUpdateTime(updateTime); - panelViewLinkageMapper.insert(linkage); - + String linkageId = UUID.randomUUID().toString(); + PanelViewLinkage linkage = new PanelViewLinkage(); + linkage.setId(linkageId); + linkage.setPanelId(panelId); + linkage.setSourceViewId(sourceViewId); + linkage.setTargetViewId(targetViewId); + linkage.setUpdatePeople(AuthUtils.getUser().getUsername()); + linkage.setUpdateTime(updateTime); + linkage.setLinkageActive(linkageDTO.getLinkageActive()); + panelViewLinkageMapper.insert(linkage); + if (CollectionUtils.isNotEmpty(linkageFields) && linkageDTO.getLinkageActive()) { linkageFields.forEach(linkageField -> { linkageField.setId(UUID.randomUUID().toString()); linkageField.setLinkageId(linkageId); diff --git a/backend/src/main/resources/db/migration/V55__1.18.8.sql b/backend/src/main/resources/db/migration/V55__1.18.8.sql index c00aebe60f..545e6f7431 100644 --- a/backend/src/main/resources/db/migration/V55__1.18.8.sql +++ b/backend/src/main/resources/db/migration/V55__1.18.8.sql @@ -35,4 +35,9 @@ RETURN concat(chartName,'-',chartNameCount); END ;; -delimiter ; \ No newline at end of file +delimiter ; + +ALTER TABLE `panel_view_linkage` + ADD COLUMN `linkage_active` tinyint(1) NULL DEFAULT 0 COMMENT '是否启用关联' AFTER `update_people`; + +update panel_view_linkage set linkage_active=1; \ No newline at end of file diff --git a/frontend/src/components/canvas/components/editor/EditBar.vue b/frontend/src/components/canvas/components/editor/EditBar.vue index 19707fb2cc..e8cb8a3cb3 100644 --- a/frontend/src/components/canvas/components/editor/EditBar.vue +++ b/frontend/src/components/canvas/components/editor/EditBar.vue @@ -371,6 +371,21 @@ export default { 'panelViewDetailsInfo' ]) }, + watch: { + linkageAreaShow: { + handler(val) { + console.log("linkageAreaShow、、、、") + // 1.当前正在进行联动设置(val) 2.当前视图联动未启用!this.linkageInfo.linkageActive + // 3.当前视图没有设置过当前目标联动!this.linkageInfo.sourceViewId + // 4.数据集相同 this.linkageInfo.tableId === this.targetLinkageInfo[this.curLinkageView.propValue.viewId].tableId) + // 满足以上条件自动勾选 + if (val && !this.linkageInfo.linkageActive && !this.linkageInfo.sourceViewId && this.linkageInfo.tableId === this.targetLinkageInfo[this.curLinkageView.propValue.viewId].tableId) { + this.linkageInfo.linkageActive = true + } + }, + immediate: true + } + }, mounted() { if (navigator.platform.indexOf('Mac') === -1) { this.systemOS = 'Other'