Unverified 提交 c877ed4a authored 作者: XiaJunjie2020's avatar XiaJunjie2020 提交者: GitHub

Merge pull request #590 from dataease/pr@dev@feat_视图上卷

feat: 视图上卷
package io.dataease.dto.chart; package io.dataease.dto.chart;
import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.ChartViewWithBLOBs;
import io.dataease.controller.request.chart.ChartExtFilterRequest;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -22,4 +24,6 @@ public class ChartViewDTO extends ChartViewWithBLOBs { ...@@ -22,4 +24,6 @@ public class ChartViewDTO extends ChartViewWithBLOBs {
private String sql; private String sql;
private boolean drill; private boolean drill;
private List<ChartExtFilterRequest> drillFilters;
} }
...@@ -256,6 +256,7 @@ public class ChartViewService { ...@@ -256,6 +256,7 @@ public class ChartViewService {
} }
// 下钻 // 下钻
List<ChartExtFilterRequest> drillFilters = new ArrayList<>();
boolean isDrill = false; boolean isDrill = false;
List<ChartDrillRequest> drillRequest = requestList.getDrill(); List<ChartDrillRequest> drillRequest = requestList.getDrill();
if (CollectionUtils.isNotEmpty(drillRequest) && (drill.size() > drillRequest.size())) { if (CollectionUtils.isNotEmpty(drillRequest) && (drill.size() > drillRequest.size())) {
...@@ -279,6 +280,8 @@ public class ChartViewService { ...@@ -279,6 +280,8 @@ public class ChartViewService {
drillFilter.setDatasetTableField(datasetTableField); drillFilter.setDatasetTableField(datasetTableField);
extFilterList.add(drillFilter); extFilterList.add(drillFilter);
drillFilters.add(drillFilter);
if (!checkDrillExist(xAxis, extStack, d, view)) { if (!checkDrillExist(xAxis, extStack, d, view)) {
xAxis.add(d); xAxis.add(d);
} }
...@@ -439,6 +442,7 @@ public class ChartViewService { ...@@ -439,6 +442,7 @@ public class ChartViewService {
dto.setSql(datasourceRequest.getQuery()); dto.setSql(datasourceRequest.getQuery());
dto.setDrill(isDrill); dto.setDrill(isDrill);
dto.setDrillFilters(drillFilters);
return dto; return dto;
} }
......
...@@ -494,6 +494,9 @@ ...@@ -494,6 +494,9 @@
</div> </div>
</div> </div>
</div> </div>
<div style="position: absolute;left: 20px;bottom:14px;">
<drill-path :drill-filters="drillFilters" @onDrillJump="drillJump" />
</div>
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>
...@@ -603,6 +606,7 @@ import ChartDragItem from '../components/drag-item/ChartDragItem' ...@@ -603,6 +606,7 @@ import ChartDragItem from '../components/drag-item/ChartDragItem'
import DrillItem from '../components/drag-item/DrillItem' import DrillItem from '../components/drag-item/DrillItem'
import ResultFilterEditor from '../components/filter/ResultFilterEditor' import ResultFilterEditor from '../components/filter/ResultFilterEditor'
import ChartComponent from '../components/ChartComponent' import ChartComponent from '../components/ChartComponent'
import DrillPath from '@/views/chart/view/DrillPath'
import bus from '@/utils/bus' import bus from '@/utils/bus'
import DatasetChartDetail from '../../dataset/common/DatasetChartDetail' import DatasetChartDetail from '../../dataset/common/DatasetChartDetail'
// shape attr,component style // shape attr,component style
...@@ -663,7 +667,8 @@ export default { ...@@ -663,7 +667,8 @@ export default {
DimensionItem, DimensionItem,
draggable, draggable,
ChartDragItem, ChartDragItem,
DrillItem DrillItem,
DrillPath
}, },
props: { props: {
param: { param: {
...@@ -739,7 +744,8 @@ export default { ...@@ -739,7 +744,8 @@ export default {
places: [], places: [],
attrActiveNames: [], attrActiveNames: [],
styleActiveNames: [], styleActiveNames: [],
drillClickDimensionList: [] drillClickDimensionList: [],
drillFilters: []
} }
}, },
computed: { computed: {
...@@ -1017,6 +1023,7 @@ export default { ...@@ -1017,6 +1023,7 @@ export default {
if (!response.data.drill) { if (!response.data.drill) {
this.drillClickDimensionList.splice(this.drillClickDimensionList.length - 1, 1) this.drillClickDimensionList.splice(this.drillClickDimensionList.length - 1, 1)
} }
this.drillFilters = JSON.parse(JSON.stringify(response.data.drillFilters))
}).catch(err => { }).catch(err => {
this.resetView() this.resetView()
this.resetDrill() this.resetDrill()
...@@ -1513,6 +1520,10 @@ export default { ...@@ -1513,6 +1520,10 @@ export default {
resetDrill() { resetDrill() {
this.drillClickDimensionList = [] this.drillClickDimensionList = []
},
drillJump(index) {
this.drillClickDimensionList = this.drillClickDimensionList.slice(0, index)
this.getData(this.param.id)
} }
} }
} }
......
<template>
<div v-if="drillFilters && drillFilters.length > 0">
<el-breadcrumb separator-class="el-icon-arrow-right" class="drill-style">
<el-breadcrumb-item class="drill-item" @click.native="drillJump(0)">{{ $t('commons.all') }}</el-breadcrumb-item>
<el-breadcrumb-item v-for="(filter,index) in drillFilters" :key="index" class="drill-item" @click.native="drillJump(index + 1)">{{ filter.value[0] }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
</template>
<script>
export default {
name: 'DrillPath',
props: {
drillFilters: {
type: Array,
required: true
}
},
data() {
return {
}
},
watch: {
},
mounted() {
},
methods: {
drillJump(index) {
if (index < this.drillFilters.length) {
this.$emit('onDrillJump', index)
}
}
}
}
</script>
<style scoped>
.drill-style {
font-size: 12px;
}
.drill-style >>> .el-breadcrumb__separator{
margin: 0!important;
}
.drill-item{
cursor: pointer;
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论