提交 cc14b0f3 authored 作者: junjie's avatar junjie

feat: 视图数据集权限控制

上级 27ae5d04
...@@ -7,4 +7,6 @@ import java.util.List; ...@@ -7,4 +7,6 @@ import java.util.List;
public interface ExtDataSetTableMapper { public interface ExtDataSetTableMapper {
List<DataSetTableDTO> search(DataSetTableRequest request); List<DataSetTableDTO> search(DataSetTableRequest request);
DataSetTableDTO searchOne(DataSetTableRequest request);
} }
...@@ -7,6 +7,33 @@ ...@@ -7,6 +7,33 @@
<result column="privileges" property="privileges"/> <result column="privileges" property="privileges"/>
</resultMap> </resultMap>
<select id="searchOne" resultMap="BaseResultMapDTO">
select
id, `name`, scene_id, data_source_id, `type`, `mode`,`info`, create_by, create_time,
get_auths(id,'dataset',#{userId}) as `privileges`
from (select GET_V_AUTH_MODEL_ID_P_USE (#{userId}, 'dataset') cids) t,dataset_table
<where>
FIND_IN_SET(dataset_table.id,cids)
<if test="id != null">
and id = #{id,jdbcType=VARCHAR}
</if>
<if test="sceneId != null">
and scene_id = #{sceneId,jdbcType=VARCHAR}
</if>
<if test="mode != null">
and mode = #{mode,jdbcType=INTEGER}
</if>
<if test="typeFilter != null">
and type in
<foreach collection="typeFilter" item="item" open="(" separator="," close=")">
#{item,jdbcType=INTEGER}
</foreach>
</if>
</where>
<if test="sort != null">
order by ${sort}
</if>
</select>
<select id="search" resultMap="BaseResultMapDTO"> <select id="search" resultMap="BaseResultMapDTO">
select select
...@@ -31,7 +58,5 @@ ...@@ -31,7 +58,5 @@
<if test="sort != null"> <if test="sort != null">
order by ${sort} order by ${sort}
</if> </if>
</select> </select>
</mapper> </mapper>
...@@ -54,6 +54,11 @@ public class DataSetTableController { ...@@ -54,6 +54,11 @@ public class DataSetTableController {
return dataSetTableService.get(id); return dataSetTableService.get(id);
} }
@PostMapping("getWithPermission/{id}")
public DataSetTableDTO getWithPermission(@PathVariable String id) {
return dataSetTableService.getWithPermission(id);
}
@PostMapping("getFields") @PostMapping("getFields")
public List<TableFiled> getFields(@RequestBody DataSetTableRequest dataSetTableRequest) throws Exception { public List<TableFiled> getFields(@RequestBody DataSetTableRequest dataSetTableRequest) throws Exception {
return dataSetTableService.getFields(dataSetTableRequest); return dataSetTableService.getFields(dataSetTableRequest);
......
...@@ -215,6 +215,14 @@ public class DataSetTableService { ...@@ -215,6 +215,14 @@ public class DataSetTableService {
return datasetTableMapper.selectByPrimaryKey(id); return datasetTableMapper.selectByPrimaryKey(id);
} }
public DataSetTableDTO getWithPermission(String id) {
DataSetTableRequest dataSetTableRequest = new DataSetTableRequest();
dataSetTableRequest.setId(id);
dataSetTableRequest.setUserId(String.valueOf(AuthUtils.getUser().getUserId()));
dataSetTableRequest.setTypeFilter(dataSetTableRequest.getTypeFilter());
return extDataSetTableMapper.searchOne(dataSetTableRequest);
}
public List<TableFiled> getFields(DataSetTableRequest dataSetTableRequest) throws Exception { public List<TableFiled> getFields(DataSetTableRequest dataSetTableRequest) throws Exception {
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId()); Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType()); DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item">{{ $t('chart.background') }}<i class="el-icon-setting el-icon--right" /></el-button> <el-button slot="reference" :disabled="param && !hasDataPermission('manage',param.privileges)" size="mini" class="shape-item">{{ $t('chart.background') }}<i class="el-icon-setting el-icon--right" /></el-button>
</el-popover> </el-popover>
</div> </div>
</div> </div>
...@@ -29,6 +29,10 @@ import { DEFAULT_BACKGROUND_COLOR } from '../../chart/chart' ...@@ -29,6 +29,10 @@ import { DEFAULT_BACKGROUND_COLOR } from '../../chart/chart'
export default { export default {
name: 'BackgroundColorSelector', name: 'BackgroundColorSelector',
props: { props: {
param: {
type: Object,
required: false
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -53,10 +53,11 @@ ...@@ -53,10 +53,11 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item" :disabled="!legendForm.show"> <el-button slot="reference" size="mini" class="shape-item" :disabled="!legendForm.show || !hasDataPermission('manage',param.privileges)">
{{ $t('chart.legend') }}<i class="el-icon-setting el-icon--right" /> {{ $t('chart.legend') }}<i class="el-icon-setting el-icon--right" />
<el-switch <el-switch
v-model="legendForm.show" v-model="legendForm.show"
:disabled="!hasDataPermission('manage',param.privileges)"
class="switch-style" class="switch-style"
@click.stop.native @click.stop.native
@change="changeLegendStyle" @change="changeLegendStyle"
...@@ -73,6 +74,10 @@ import { DEFAULT_LEGEND_STYLE } from '../../chart/chart' ...@@ -73,6 +74,10 @@ import { DEFAULT_LEGEND_STYLE } from '../../chart/chart'
export default { export default {
name: 'LegendSelector', name: 'LegendSelector',
props: { props: {
param: {
type: Object,
required: true
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item"> <el-button slot="reference" :disabled="!hasDataPermission('manage',param.privileges)" size="mini" class="shape-item">
{{ $t('chart.split') }}<i class="el-icon-setting el-icon--right" /> {{ $t('chart.split') }}<i class="el-icon-setting el-icon--right" />
</el-button> </el-button>
</el-popover> </el-popover>
...@@ -62,6 +62,10 @@ import { DEFAULT_SPLIT } from '../../chart/chart' ...@@ -62,6 +62,10 @@ import { DEFAULT_SPLIT } from '../../chart/chart'
export default { export default {
name: 'SplitSelector', name: 'SplitSelector',
props: { props: {
param: {
type: Object,
required: true
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -51,10 +51,11 @@ ...@@ -51,10 +51,11 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item" :disabled="!titleForm.show"> <el-button slot="reference" size="mini" class="shape-item" :disabled="!titleForm.show || !hasDataPermission('manage',param.privileges)">
{{ $t('chart.title') }}<i class="el-icon-setting el-icon--right" /> {{ $t('chart.title') }}<i class="el-icon-setting el-icon--right" />
<el-switch <el-switch
v-model="titleForm.show" v-model="titleForm.show"
:disabled="!hasDataPermission('manage',param.privileges)"
class="switch-style" class="switch-style"
@click.stop.native @click.stop.native
@change="changeTitleStyle" @change="changeTitleStyle"
...@@ -71,6 +72,10 @@ import { DEFAULT_TITLE_STYLE } from '../../chart/chart' ...@@ -71,6 +72,10 @@ import { DEFAULT_TITLE_STYLE } from '../../chart/chart'
export default { export default {
name: 'TitleSelector', name: 'TitleSelector',
props: { props: {
param: {
type: Object,
required: true
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -72,10 +72,11 @@ ...@@ -72,10 +72,11 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item" :disabled="!axisForm.show"> <el-button slot="reference" size="mini" class="shape-item" :disabled="!axisForm.show || !hasDataPermission('manage',param.privileges)">
{{ $t('chart.xAxis') }}<i class="el-icon-setting el-icon--right" /> {{ $t('chart.xAxis') }}<i class="el-icon-setting el-icon--right" />
<el-switch <el-switch
v-model="axisForm.show" v-model="axisForm.show"
:disabled="!hasDataPermission('manage',param.privileges)"
class="switch-style" class="switch-style"
@click.stop.native @click.stop.native
@change="changeXAxisStyle" @change="changeXAxisStyle"
...@@ -92,6 +93,10 @@ import { DEFAULT_XAXIS_STYLE } from '../../chart/chart' ...@@ -92,6 +93,10 @@ import { DEFAULT_XAXIS_STYLE } from '../../chart/chart'
export default { export default {
name: 'XAxisSelector', name: 'XAxisSelector',
props: { props: {
param: {
type: Object,
required: true
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -72,10 +72,11 @@ ...@@ -72,10 +72,11 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item" :disabled="!axisForm.show"> <el-button slot="reference" size="mini" class="shape-item" :disabled="!axisForm.show || !hasDataPermission('manage',param.privileges)">
{{ $t('chart.yAxis') }}<i class="el-icon-setting el-icon--right" /> {{ $t('chart.yAxis') }}<i class="el-icon-setting el-icon--right" />
<el-switch <el-switch
v-model="axisForm.show" v-model="axisForm.show"
:disabled="!hasDataPermission('manage',param.privileges)"
class="switch-style" class="switch-style"
@click.stop.native @click.stop.native
@change="changeYAxisStyle" @change="changeYAxisStyle"
...@@ -92,6 +93,10 @@ import { DEFAULT_YAXIS_STYLE } from '../../chart/chart' ...@@ -92,6 +93,10 @@ import { DEFAULT_YAXIS_STYLE } from '../../chart/chart'
export default { export default {
name: 'YAxisSelector', name: 'YAxisSelector',
props: { props: {
param: {
type: Object,
required: true
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<el-tag size="small" class="item-axis"> <el-tag size="small" class="item-axis">
{{ item.name }}<i class="el-icon-arrow-down el-icon--right" /> {{ item.name }}<i class="el-icon-arrow-down el-icon--right" />
</el-tag> </el-tag>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu v-if="hasDataPermission('manage',param.privileges)" slot="dropdown">
<el-dropdown-item> <el-dropdown-item>
<el-dropdown placement="right-start" size="mini" style="width: 100%" @command="sort"> <el-dropdown placement="right-start" size="mini" style="width: 100%" @command="sort">
<span class="el-dropdown-link inner-dropdown-menu"> <span class="el-dropdown-link inner-dropdown-menu">
...@@ -80,6 +80,10 @@ ...@@ -80,6 +80,10 @@
export default { export default {
name: 'DimensionItem', name: 'DimensionItem',
props: { props: {
param: {
type: Object,
required: true
},
item: { item: {
type: Object, type: Object,
required: true required: true
......
<template> <template>
<span> <span>
<el-dropdown trigger="click" size="mini" @command="clickItem"> <el-dropdown trigger="click" size="mini" :disabled="!hasDataPermission('manage',param.privileges)" @command="clickItem">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
<el-tag size="small" class="item-axis"> <el-tag size="small" class="item-axis">
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
<span v-if="item.summary" class="summary-span">{{ $t('chart.'+item.summary) }}</span> <span v-if="item.summary" class="summary-span">{{ $t('chart.'+item.summary) }}</span>
<i class="el-icon-arrow-down el-icon--right" /> <i class="el-icon-arrow-down el-icon--right" />
</el-tag> </el-tag>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu v-if="hasDataPermission('manage',param.privileges)" slot="dropdown">
<el-dropdown-item> <el-dropdown-item>
<el-dropdown placement="right-start" size="mini" style="width: 100%" @command="summary"> <el-dropdown placement="right-start" size="mini" style="width: 100%" @command="summary">
<span class="el-dropdown-link inner-dropdown-menu"> <span class="el-dropdown-link inner-dropdown-menu">
...@@ -81,6 +81,10 @@ ...@@ -81,6 +81,10 @@
export default { export default {
name: 'QuotaItem', name: 'QuotaItem',
props: { props: {
param: {
type: Object,
required: true
},
item: { item: {
type: Object, type: Object,
required: true required: true
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item">{{ $t('chart.color') }}<i class="el-icon-setting el-icon--right" /></el-button> <el-button slot="reference" :disabled="param && !hasDataPermission('manage',param.privileges)" size="mini" class="shape-item">{{ $t('chart.color') }}<i class="el-icon-setting el-icon--right" /></el-button>
</el-popover> </el-popover>
</div> </div>
</div> </div>
...@@ -61,6 +61,10 @@ import { DEFAULT_COLOR_CASE } from '../../chart/chart' ...@@ -61,6 +61,10 @@ import { DEFAULT_COLOR_CASE } from '../../chart/chart'
export default { export default {
name: 'ColorSelector', name: 'ColorSelector',
props: { props: {
param: {
type: Object,
required: false
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -67,10 +67,11 @@ ...@@ -67,10 +67,11 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item" :disabled="!labelForm.show"> <el-button slot="reference" size="mini" class="shape-item" :disabled="!labelForm.show || !hasDataPermission('manage',param.privileges)">
{{ $t('chart.label') }}<i class="el-icon-setting el-icon--right" /> {{ $t('chart.label') }}<i class="el-icon-setting el-icon--right" />
<el-switch <el-switch
v-model="labelForm.show" v-model="labelForm.show"
:disabled="!hasDataPermission('manage',param.privileges)"
class="switch-style" class="switch-style"
@click.stop.native @click.stop.native
@change="changeLabelAttr" @change="changeLabelAttr"
...@@ -87,6 +88,10 @@ import { DEFAULT_LABEL } from '../../chart/chart' ...@@ -87,6 +88,10 @@ import { DEFAULT_LABEL } from '../../chart/chart'
export default { export default {
name: 'LabelSelector', name: 'LabelSelector',
props: { props: {
param: {
type: Object,
required: true
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -143,7 +143,7 @@ ...@@ -143,7 +143,7 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item">{{ $t('chart.size') }}<i class="el-icon-setting el-icon--right" /></el-button> <el-button slot="reference" :disabled="!hasDataPermission('manage',param.privileges)" size="mini" class="shape-item">{{ $t('chart.size') }}<i class="el-icon-setting el-icon--right" /></el-button>
</el-popover> </el-popover>
</div> </div>
</div> </div>
...@@ -154,6 +154,10 @@ import { DEFAULT_SIZE } from '../../chart/chart' ...@@ -154,6 +154,10 @@ import { DEFAULT_SIZE } from '../../chart/chart'
export default { export default {
name: 'SizeSelector', name: 'SizeSelector',
props: { props: {
param: {
type: Object,
required: true
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -55,10 +55,11 @@ ...@@ -55,10 +55,11 @@
</el-form> </el-form>
</el-col> </el-col>
<el-button slot="reference" size="mini" class="shape-item" :disabled="!tooltipForm.show"> <el-button slot="reference" size="mini" class="shape-item" :disabled="!tooltipForm.show || !hasDataPermission('manage',param.privileges)">
{{ $t('chart.tooltip') }}<i class="el-icon-setting el-icon--right" /> {{ $t('chart.tooltip') }}<i class="el-icon-setting el-icon--right" />
<el-switch <el-switch
v-model="tooltipForm.show" v-model="tooltipForm.show"
:disabled="!hasDataPermission('manage',param.privileges)"
class="switch-style" class="switch-style"
@click.stop.native @click.stop.native
@change="changeTooltipAttr" @change="changeTooltipAttr"
...@@ -75,6 +76,10 @@ import { DEFAULT_TOOLTIP } from '../../chart/chart' ...@@ -75,6 +76,10 @@ import { DEFAULT_TOOLTIP } from '../../chart/chart'
export default { export default {
name: 'TooltipSelector', name: 'TooltipSelector',
props: { props: {
param: {
type: Object,
required: true
},
chart: { chart: {
type: Object, type: Object,
required: true required: true
......
...@@ -689,7 +689,7 @@ export default { ...@@ -689,7 +689,7 @@ export default {
nodeClick(data, node) { nodeClick(data, node) {
if (data.type !== 'group') { if (data.type !== 'group') {
this.$emit('switchComponent', { name: 'ChartEdit', param: { 'id': data.id }}) this.$emit('switchComponent', { name: 'ChartEdit', param: data })
} }
// if (data.type === 'scene') { // if (data.type === 'scene') {
// this.sceneMode = true // this.sceneMode = true
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<span slot="reference" style="line-height: 40px;cursor: pointer;">{{ view.name }}</span> <span slot="reference" style="line-height: 40px;cursor: pointer;">{{ view.name }}</span>
</el-popover> </el-popover>
<span style="float: right;line-height: 40px;"> <span style="float: right;line-height: 40px;">
<el-button size="mini" @click="changeDs"> <el-button v-if="hasDataPermission('manage',param.privileges)" size="mini" @click="changeDs">
{{ $t('chart.change_ds') }} {{ $t('chart.change_ds') }}
</el-button> </el-button>
<el-button size="mini" @click="closeEdit"> <el-button size="mini" @click="closeEdit">
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
clearable clearable
/> />
<el-button icon="el-icon-setting" type="text" size="mini" style="float: right;width: 20px;margin-left: 6px;" @click="editField" /> <el-button :disabled="!table || !hasDataPermission('manage',table.privileges)" icon="el-icon-setting" type="text" size="mini" style="float: right;width: 20px;margin-left: 6px;" @click="editField" />
</div> </div>
<div style="border-bottom: 1px solid #E6E6E6;" class="padding-lr field-height"> <div style="border-bottom: 1px solid #E6E6E6;" class="padding-lr field-height">
<span>{{ $t('chart.dimension') }}</span> <span>{{ $t('chart.dimension') }}</span>
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
animation="300" animation="300"
:move="onMove" :move="onMove"
class="drag-list" class="drag-list"
:disabled="!hasDataPermission('manage',param.privileges)"
@end="end1" @end="end1"
@start="start1" @start="start1"
> >
...@@ -68,6 +69,7 @@ ...@@ -68,6 +69,7 @@
animation="300" animation="300"
:move="onMove" :move="onMove"
class="drag-list" class="drag-list"
:disabled="!hasDataPermission('manage',param.privileges)"
@end="end1" @end="end1"
@start="start1" @start="start1"
> >
...@@ -111,6 +113,7 @@ ...@@ -111,6 +113,7 @@
<el-radio-group <el-radio-group
v-model="view.type" v-model="view.type"
style="width: 100%" style="width: 100%"
:disabled="!hasDataPermission('manage',param.privileges)"
@change="save(true,'chart',true)" @change="save(true,'chart',true)"
> >
<div style="width: 100%;display: flex;display: -webkit-flex;justify-content: space-between;flex-direction: row;flex-wrap: wrap;"> <div style="width: 100%;display: flex;display: -webkit-flex;justify-content: space-between;flex-direction: row;flex-wrap: wrap;">
...@@ -207,7 +210,7 @@ ...@@ -207,7 +210,7 @@
<el-row class="padding-lr"> <el-row class="padding-lr">
<span>{{ $t('chart.style_priority') }}</span> <span>{{ $t('chart.style_priority') }}</span>
<el-row> <el-row>
<el-radio-group v-model="view.stylePriority" size="mini" @change="save"> <el-radio-group v-model="view.stylePriority" :disabled="!hasDataPermission('manage',param.privileges)" size="mini" @change="save">
<el-radio label="view"><span>{{ $t('chart.chart') }}</span></el-radio> <el-radio label="view"><span>{{ $t('chart.chart') }}</span></el-radio>
<el-radio label="panel"><span>{{ $t('chart.dashboard') }}</span></el-radio> <el-radio label="panel"><span>{{ $t('chart.dashboard') }}</span></el-radio>
</el-radio-group> </el-radio-group>
...@@ -215,24 +218,24 @@ ...@@ -215,24 +218,24 @@
</el-row> </el-row>
<el-tabs type="card" :stretch="true" class="tab-header"> <el-tabs type="card" :stretch="true" class="tab-header">
<el-tab-pane :label="$t('chart.shape_attr')" class="padding-lr"> <el-tab-pane :label="$t('chart.shape_attr')" class="padding-lr">
<color-selector class="attr-selector" :chart="chart" @onColorChange="onColorChange" /> <color-selector :param="param" class="attr-selector" :chart="chart" @onColorChange="onColorChange" />
<size-selector class="attr-selector" :chart="chart" @onSizeChange="onSizeChange" /> <size-selector :param="param" class="attr-selector" :chart="chart" @onSizeChange="onSizeChange" />
<label-selector v-show="!view.type.includes('table') && !view.type.includes('text')" class="attr-selector" :chart="chart" @onLabelChange="onLabelChange" /> <label-selector v-show="!view.type.includes('table') && !view.type.includes('text')" :param="param" class="attr-selector" :chart="chart" @onLabelChange="onLabelChange" />
<tooltip-selector v-show="!view.type.includes('table') && !view.type.includes('text')" class="attr-selector" :chart="chart" @onTooltipChange="onTooltipChange" /> <tooltip-selector v-show="!view.type.includes('table') && !view.type.includes('text')" :param="param" class="attr-selector" :chart="chart" @onTooltipChange="onTooltipChange" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('chart.module_style')" class="padding-lr"> <el-tab-pane :label="$t('chart.module_style')" class="padding-lr">
<x-axis-selector v-show="view.type.includes('bar') || view.type.includes('line')" class="attr-selector" :chart="chart" @onChangeXAxisForm="onChangeXAxisForm" /> <x-axis-selector v-show="view.type.includes('bar') || view.type.includes('line')" :param="param" class="attr-selector" :chart="chart" @onChangeXAxisForm="onChangeXAxisForm" />
<y-axis-selector v-show="view.type.includes('bar') || view.type.includes('line')" class="attr-selector" :chart="chart" @onChangeYAxisForm="onChangeYAxisForm" /> <y-axis-selector v-show="view.type.includes('bar') || view.type.includes('line')" :param="param" class="attr-selector" :chart="chart" @onChangeYAxisForm="onChangeYAxisForm" />
<split-selector v-show="view.type.includes('radar')" class="attr-selector" :chart="chart" @onChangeSplitForm="onChangeSplitForm" /> <split-selector v-show="view.type.includes('radar')" :param="param" class="attr-selector" :chart="chart" @onChangeSplitForm="onChangeSplitForm" />
<title-selector class="attr-selector" :chart="chart" @onTextChange="onTextChange" /> <title-selector :param="param" class="attr-selector" :chart="chart" @onTextChange="onTextChange" />
<legend-selector v-show="!view.type.includes('table') && !view.type.includes('text')" class="attr-selector" :chart="chart" @onLegendChange="onLegendChange" /> <legend-selector v-show="!view.type.includes('table') && !view.type.includes('text')" :param="param" class="attr-selector" :chart="chart" @onLegendChange="onLegendChange" />
<background-color-selector class="attr-selector" :chart="chart" @onChangeBackgroundForm="onChangeBackgroundForm" /> <background-color-selector :param="param" class="attr-selector" :chart="chart" @onChangeBackgroundForm="onChangeBackgroundForm" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
<div style="height:60px;overflow:auto;border-top: 1px solid #e6e6e6" class="padding-lr filter-class"> <div style="height:60px;overflow:auto;border-top: 1px solid #e6e6e6" class="padding-lr filter-class">
<span>{{ $t('chart.result_filter') }}</span> <span>{{ $t('chart.result_filter') }}</span>
<el-button size="mini" class="filter-btn-class" @click="showResultFilter"> <el-button :disabled="!hasDataPermission('manage',param.privileges)" size="mini" class="filter-btn-class" @click="showResultFilter">
{{ $t('chart.filter_condition') }}<i class="el-icon-setting el-icon--right" /> {{ $t('chart.filter_condition') }}<i class="el-icon-setting el-icon--right" />
</el-button> </el-button>
</div> </div>
...@@ -245,6 +248,7 @@ ...@@ -245,6 +248,7 @@
<span style="line-height: 32px;width: 80px;text-align: right;">{{ $t('chart.dimension') }}</span> <span style="line-height: 32px;width: 80px;text-align: right;">{{ $t('chart.dimension') }}</span>
<draggable <draggable
v-model="view.xaxis" v-model="view.xaxis"
:disabled="!hasDataPermission('manage',param.privileges)"
group="dimension" group="dimension"
animation="300" animation="300"
:move="onMove" :move="onMove"
...@@ -252,7 +256,7 @@ ...@@ -252,7 +256,7 @@
@end="end2" @end="end2"
> >
<transition-group class="draggable-group"> <transition-group class="draggable-group">
<dimension-item v-for="(item,index) in view.xaxis" :key="item.id" :index="index" :item="item" @onDimensionItemChange="dimensionItemChange" @onDimensionItemRemove="dimensionItemRemove" @editItemFilter="showDimensionEditFilter" @onNameEdit="showRename" /> <dimension-item v-for="(item,index) in view.xaxis" :key="item.id" :param="param" :index="index" :item="item" @onDimensionItemChange="dimensionItemChange" @onDimensionItemRemove="dimensionItemRemove" @editItemFilter="showDimensionEditFilter" @onNameEdit="showRename" />
</transition-group> </transition-group>
</draggable> </draggable>
</el-row> </el-row>
...@@ -260,6 +264,7 @@ ...@@ -260,6 +264,7 @@
<span style="line-height: 32px;width: 80px;text-align: right;">{{ $t('chart.quota') }}</span> <span style="line-height: 32px;width: 80px;text-align: right;">{{ $t('chart.quota') }}</span>
<draggable <draggable
v-model="view.yaxis" v-model="view.yaxis"
:disabled="!hasDataPermission('manage',param.privileges)"
group="quota" group="quota"
animation="300" animation="300"
:move="onMove" :move="onMove"
...@@ -267,7 +272,7 @@ ...@@ -267,7 +272,7 @@
@end="end2" @end="end2"
> >
<transition-group class="draggable-group"> <transition-group class="draggable-group">
<quota-item v-for="(item,index) in view.yaxis" :key="item.id" :index="index" :item="item" @onQuotaItemChange="quotaItemChange" @onQuotaItemRemove="quotaItemRemove" @editItemFilter="showQuotaEditFilter" @onNameEdit="showRename" /> <quota-item v-for="(item,index) in view.yaxis" :key="item.id" :param="param" :index="index" :item="item" @onQuotaItemChange="quotaItemChange" @onQuotaItemRemove="quotaItemRemove" @editItemFilter="showQuotaEditFilter" @onNameEdit="showRename" />
</transition-group> </transition-group>
</draggable> </draggable>
</el-row> </el-row>
...@@ -348,7 +353,7 @@ ...@@ -348,7 +353,7 @@
<!--视图更换数据集--> <!--视图更换数据集-->
<el-dialog <el-dialog
v-dialogDrag v-dialogDrag
:title="$t('chart.change_ds')+'['+table.name+']'" :title="changeDsTitle"
:visible="selectTableFlag" :visible="selectTableFlag"
:show-close="false" :show-close="false"
width="70%" width="70%"
...@@ -359,7 +364,7 @@ ...@@ -359,7 +364,7 @@
<p style="margin-top: 10px;color:#F56C6C;font-size: 12px;">{{ $t('chart.change_ds_tip') }}</p> <p style="margin-top: 10px;color:#F56C6C;font-size: 12px;">{{ $t('chart.change_ds_tip') }}</p>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button size="mini" @click="closeChangeChart">{{ $t('chart.cancel') }}</el-button> <el-button size="mini" @click="closeChangeChart">{{ $t('chart.cancel') }}</el-button>
<el-button type="primary" size="mini" :disabled="!table.id" @click="changeChart">{{ $t('chart.confirm') }}</el-button> <el-button type="primary" size="mini" :disabled="!table || !table.id" @click="changeChart">{{ $t('chart.confirm') }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
...@@ -485,7 +490,8 @@ export default { ...@@ -485,7 +490,8 @@ export default {
selectTableFlag: false, selectTableFlag: false,
changeTable: {}, changeTable: {},
searchField: '', searchField: '',
editDsField: false editDsField: false,
changeDsTitle: ''
} }
}, },
computed: { computed: {
...@@ -520,7 +526,7 @@ export default { ...@@ -520,7 +526,7 @@ export default {
methods: { methods: {
initTableData(id) { initTableData(id) {
if (id != null) { if (id != null) {
post('/dataset/table/get/' + id, null).then(response => { post('/dataset/table/getWithPermission/' + id, null).then(response => {
this.table = response.data this.table = response.data
this.initTableField(id) this.initTableField(id)
}).catch(err => { }).catch(err => {
...@@ -1038,6 +1044,7 @@ export default { ...@@ -1038,6 +1044,7 @@ export default {
}, },
changeDs() { changeDs() {
this.changeDsTitle = this.$t('chart.change_ds') + '[' + this.table.name + ']'
this.selectTableFlag = true this.selectTableFlag = true
}, },
......
...@@ -77,6 +77,10 @@ export default { ...@@ -77,6 +77,10 @@ export default {
type: Object, type: Object,
required: true required: true
}, },
param: {
type: Object,
required: true
},
fields: { fields: {
type: Array, type: Array,
required: true required: true
......
<template> <template>
<el-row> <el-row>
<el-button size="mini" @click="showUnionEdit">{{ $t('dataset.add_union') }}</el-button> <el-button v-if="hasDataPermission('manage',param.privileges)" size="mini" @click="showUnionEdit">{{ $t('dataset.add_union') }}</el-button>
<el-row> <el-row>
<el-table <el-table
size="mini" size="mini"
...@@ -34,8 +34,8 @@ ...@@ -34,8 +34,8 @@
:label="$t('dataset.operate')" :label="$t('dataset.operate')"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="mini" @click="edit(scope.row)">{{ $t('dataset.edit') }}</el-button> <el-button v-if="hasDataPermission('manage',param.privileges)" type="text" size="mini" @click="edit(scope.row)">{{ $t('dataset.edit') }}</el-button>
<el-button type="text" size="mini" @click="deleteUnion(scope.row)">{{ $t('dataset.delete') }}</el-button> <el-button v-if="hasDataPermission('manage',param.privileges)" type="text" size="mini" @click="deleteUnion(scope.row)">{{ $t('dataset.delete') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -143,6 +143,10 @@ export default { ...@@ -143,6 +143,10 @@ export default {
table: { table: {
type: Object, type: Object,
required: true required: true
},
param: {
type: Object,
required: true
} }
}, },
data() { data() {
......
<template> <template>
<el-col> <el-col>
<el-row> <el-row>
<el-button icon="el-icon-setting" size="mini" @click="showConfig"> <el-button v-if="hasDataPermission('manage',param.privileges)" icon="el-icon-setting" size="mini" @click="showConfig">
{{ $t('dataset.update_setting') }} {{ $t('dataset.update_setting') }}
</el-button> </el-button>
<el-button icon="el-icon-refresh" size="mini" @click="refreshLog"> <el-button icon="el-icon-refresh" size="mini" @click="refreshLog">
...@@ -302,6 +302,10 @@ export default { ...@@ -302,6 +302,10 @@ export default {
table: { table: {
type: Object, type: Object,
default: null default: null
},
param: {
type: Object,
required: true
} }
}, },
data() { data() {
......
<template> <template>
<el-row style="height: 100%;overflow-y: hidden;width: 100%;"> <el-row style="height: 100%;overflow-y: hidden;width: 100%;">
<!-- <span v-show="false">{{ tableRefresh }}</span>--> <!-- <span v-show="false">{{ tableRefresh }}</span>-->
<el-row style="height: 26px;"> <el-row style="height: 26px;">
<el-popover <el-popover
placement="right-start" placement="right-start"
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
{{ table.name }} {{ table.name }}
</span> </span>
</el-popover> </el-popover>
<el-row style="float: right"> <el-row v-if="hasDataPermission('manage',param.privileges)" style="float: right">
<el-dropdown v-if="table.type ==='excel'" style="margin-right: 10px;" size="small" trigger="click" @command="clickEditExcel"> <el-dropdown v-if="table.type ==='excel'" style="margin-right: 10px;" size="small" trigger="click" @command="clickEditExcel">
<el-button size="mini"> <el-button size="mini">
{{ $t('dataset.edit_excel') }} {{ $t('dataset.edit_excel') }}
...@@ -46,13 +46,13 @@ ...@@ -46,13 +46,13 @@
<el-tabs v-model="tabActive"> <el-tabs v-model="tabActive">
<el-tab-pane :label="$t('dataset.data_preview')" name="dataPreview"> <el-tab-pane :label="$t('dataset.data_preview')" name="dataPreview">
<tab-data-preview :table="table" :fields="fields" :data="data" :page="page" :form="tableViewRowForm" @reSearch="reSearch" /> <tab-data-preview :param="param" :table="table" :fields="fields" :data="data" :page="page" :form="tableViewRowForm" @reSearch="reSearch" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="table.type !== 'custom' && table.mode === 1" :label="$t('dataset.join_view')" name="joinView"> <el-tab-pane v-if="table.type !== 'custom' && table.mode === 1" :label="$t('dataset.join_view')" name="joinView">
<union-view :table="table" /> <union-view :param="param" :table="table" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="table.mode === 1 && (table.type === 'db' || table.type === 'sql')" :label="$t('dataset.update_info')" name="updateInfo"> <el-tab-pane v-if="table.mode === 1 && (table.type === 'db' || table.type === 'sql')" :label="$t('dataset.update_info')" name="updateInfo">
<update-info :table="table" /> <update-info :param="param" :table="table" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</el-row> </el-row>
...@@ -70,7 +70,7 @@ export default { ...@@ -70,7 +70,7 @@ export default {
components: { UnionView, DatasetChartDetail, UpdateInfo, TabDataPreview }, components: { UnionView, DatasetChartDetail, UpdateInfo, TabDataPreview },
props: { props: {
param: { param: {
type: String, type: Object,
required: true required: true
} }
}, },
...@@ -101,14 +101,14 @@ export default { ...@@ -101,14 +101,14 @@ export default {
}, },
watch: { watch: {
'param': function() { 'param': function() {
this.initTable(this.param) this.initTable(this.param.id)
} }
}, },
created() { created() {
}, },
mounted() { mounted() {
this.initTable(this.param) this.initTable(this.param.id)
}, },
methods: { methods: {
initTable(id) { initTable(id) {
......
...@@ -672,7 +672,7 @@ export default { ...@@ -672,7 +672,7 @@ export default {
// } // }
if (data.type !== 'group') { if (data.type !== 'group') {
this.$emit('switchComponent', { name: 'ViewTable', param: data.id }) this.$emit('switchComponent', { name: 'ViewTable', param: data })
} }
// if (node.expanded) { // if (node.expanded) {
// this.expandedArray.push(data.id) // this.expandedArray.push(data.id)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论