diff --git a/backend/src/main/java/io/dataease/dto/chart/ChartViewDTO.java b/backend/src/main/java/io/dataease/dto/chart/ChartViewDTO.java index 81629da981..a431983eb6 100644 --- a/backend/src/main/java/io/dataease/dto/chart/ChartViewDTO.java +++ b/backend/src/main/java/io/dataease/dto/chart/ChartViewDTO.java @@ -1,9 +1,11 @@ package io.dataease.dto.chart; import io.dataease.base.domain.ChartViewWithBLOBs; +import io.dataease.controller.request.chart.ChartExtFilterRequest; import lombok.Getter; import lombok.Setter; +import java.util.List; import java.util.Map; /** @@ -22,4 +24,6 @@ public class ChartViewDTO extends ChartViewWithBLOBs { private String sql; private boolean drill; + + private List drillFilters; } diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index caeb64d58c..ef86ad47e6 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -256,6 +256,7 @@ public class ChartViewService { } // 下钻 + List drillFilters = new ArrayList<>(); boolean isDrill = false; List drillRequest = requestList.getDrill(); if (CollectionUtils.isNotEmpty(drillRequest) && (drill.size() > drillRequest.size())) { @@ -279,6 +280,8 @@ public class ChartViewService { drillFilter.setDatasetTableField(datasetTableField); extFilterList.add(drillFilter); + drillFilters.add(drillFilter); + if (!checkDrillExist(xAxis, extStack, d, view)) { xAxis.add(d); } @@ -439,6 +442,7 @@ public class ChartViewService { dto.setSql(datasourceRequest.getQuery()); dto.setDrill(isDrill); + dto.setDrillFilters(drillFilters); return dto; } diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue index 085d54956a..df8529901a 100644 --- a/frontend/src/views/chart/view/ChartEdit.vue +++ b/frontend/src/views/chart/view/ChartEdit.vue @@ -494,6 +494,9 @@ +
+ +
@@ -603,6 +606,7 @@ import ChartDragItem from '../components/drag-item/ChartDragItem' import DrillItem from '../components/drag-item/DrillItem' import ResultFilterEditor from '../components/filter/ResultFilterEditor' import ChartComponent from '../components/ChartComponent' +import DrillPath from '@/views/chart/view/DrillPath' import bus from '@/utils/bus' import DatasetChartDetail from '../../dataset/common/DatasetChartDetail' // shape attr,component style @@ -663,7 +667,8 @@ export default { DimensionItem, draggable, ChartDragItem, - DrillItem + DrillItem, + DrillPath }, props: { param: { @@ -739,7 +744,8 @@ export default { places: [], attrActiveNames: [], styleActiveNames: [], - drillClickDimensionList: [] + drillClickDimensionList: [], + drillFilters: [] } }, computed: { @@ -1017,6 +1023,7 @@ export default { if (!response.data.drill) { this.drillClickDimensionList.splice(this.drillClickDimensionList.length - 1, 1) } + this.drillFilters = JSON.parse(JSON.stringify(response.data.drillFilters)) }).catch(err => { this.resetView() this.resetDrill() @@ -1513,6 +1520,10 @@ export default { resetDrill() { this.drillClickDimensionList = [] + }, + drillJump(index) { + this.drillClickDimensionList = this.drillClickDimensionList.slice(0, index) + this.getData(this.param.id) } } } diff --git a/frontend/src/views/chart/view/DrillPath.vue b/frontend/src/views/chart/view/DrillPath.vue new file mode 100644 index 0000000000..b3370eae0d --- /dev/null +++ b/frontend/src/views/chart/view/DrillPath.vue @@ -0,0 +1,47 @@ + + + + +