提交 5c4bb9f7 authored 作者: junjie's avatar junjie

refactor: 视图UI布局初步调整

上级 f1e25099
...@@ -804,7 +804,9 @@ export default { ...@@ -804,7 +804,9 @@ export default {
color_energy: 'Energy', color_energy: 'Energy',
color_red: 'Red', color_red: 'Red',
color_fast: 'Fast', color_fast: 'Fast',
color_spiritual: 'Spiritual' color_spiritual: 'Spiritual',
chart_data: 'Data',
chart_style: 'Style'
}, },
dataset: { dataset: {
sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default', sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default',
......
...@@ -804,7 +804,9 @@ export default { ...@@ -804,7 +804,9 @@ export default {
color_fast: '輕快', color_fast: '輕快',
color_spiritual: '靈動', color_spiritual: '靈動',
chart_details: '视图明细', chart_details: '视图明细',
export_details: '导出明细' export_details: '导出明细',
chart_data: '數據',
chart_style: '樣式'
}, },
dataset: { dataset: {
sheet_warn: '有多個sheet頁面,默認抽取第一個', sheet_warn: '有多個sheet頁面,默認抽取第一個',
......
...@@ -804,7 +804,9 @@ export default { ...@@ -804,7 +804,9 @@ export default {
color_fast: '轻快', color_fast: '轻快',
color_spiritual: '灵动', color_spiritual: '灵动',
chart_details: '视图明细', chart_details: '视图明细',
export_details: '导出明细' export_details: '导出明细',
chart_data: '数据',
chart_style: '样式'
}, },
dataset: { dataset: {
sheet_warn: '有多个 Sheet 页,默认抽取第一个', sheet_warn: '有多个 Sheet 页,默认抽取第一个',
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" /> <svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" /> <svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
</span> </span>
<span>{{ item.name }}</span> <span class="item-span-style" :title="item.name">{{ item.name }}</span>
</el-tag> </el-tag>
<el-dropdown v-else trigger="click" size="mini" @command="clickItem"> <el-dropdown v-else trigger="click" size="mini" @command="clickItem">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
...@@ -18,7 +18,8 @@ ...@@ -18,7 +18,8 @@
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" /> <svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" /> <svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
</span> </span>
{{ item.name }}<i class="el-icon-arrow-down el-icon--right" /> <span class="item-span-style" :title="item.name">{{ item.name }}</span>
<i class="el-icon-arrow-down el-icon--right" style="position: absolute;top: 6px;right: 10px;" />
</el-tag> </el-tag>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item> <el-dropdown-item>
...@@ -192,10 +193,11 @@ export default { ...@@ -192,10 +193,11 @@ export default {
text-align: left; text-align: left;
height: 24px; height: 24px;
line-height: 22px; line-height: 22px;
display: inline-block; display: flex;
border-radius: 4px; border-radius: 4px;
box-sizing: border-box; box-sizing: border-box;
white-space: nowrap; white-space: nowrap;
width: 159px;
} }
.item-axis:hover { .item-axis:hover {
...@@ -218,4 +220,12 @@ export default { ...@@ -218,4 +220,12 @@ export default {
align-items: center; align-items: center;
width: 100% width: 100%
} }
.item-span-style{
display: inline-block;
width: 100px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
</style> </style>
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" /> <svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" /> <svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
</span> </span>
<span>{{ item.name }}</span> <span class="item-span-style" :title="item.name">{{ 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>
</el-tag> </el-tag>
<el-dropdown v-else trigger="click" size="mini" @command="clickItem"> <el-dropdown v-else trigger="click" size="mini" @command="clickItem">
...@@ -19,9 +19,9 @@ ...@@ -19,9 +19,9 @@
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" /> <svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" /> <svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
</span> </span>
<span>{{ item.name }}</span> <span class="item-span-style" :title="item.name">{{ 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" style="position: absolute;top: 6px;right: 10px;" />
</el-tag> </el-tag>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item> <el-dropdown-item>
...@@ -196,10 +196,11 @@ export default { ...@@ -196,10 +196,11 @@ export default {
text-align: left; text-align: left;
height: 24px; height: 24px;
line-height: 22px; line-height: 22px;
display: inline-block; display: flex;
border-radius: 4px; border-radius: 4px;
box-sizing: border-box; box-sizing: border-box;
white-space: nowrap; white-space: nowrap;
width: 159px;
} }
.item-axis:hover { .item-axis:hover {
...@@ -222,4 +223,12 @@ export default { ...@@ -222,4 +223,12 @@ export default {
align-items: center; align-items: center;
width: 100% width: 100%
} }
.item-span-style{
display: inline-block;
width: 80px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
</style> </style>
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
<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 v-if="hasDataPermission('manage',param.privileges)" 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">
{{ $t('commons.save') }} {{ $t('commons.save') }}
</el-button> </el-button>
...@@ -25,9 +25,12 @@ ...@@ -25,9 +25,12 @@
<!-- </el-button>--> <!-- </el-button>-->
</span> </span>
</el-row> </el-row>
<el-row class="view-panel">
<el-tabs type="card" :stretch="true" class="tab-header">
<el-tab-pane :label="$t('chart.chart_data')" class="padding-tab" style="width: 360px">
<el-row class="view-panel"> <el-row class="view-panel">
<el-col <el-col
style="height: 100%;width: 20%;min-width: 180px;max-width:220px;border: 1px solid #E6E6E6;border-left: 0 solid;" style="width: 180px;border-right: 1px solid #E6E6E6;"
> >
<div style="display: flex;align-items: center;justify-content: center;padding: 6px;"> <div style="display: flex;align-items: center;justify-content: center;padding: 6px;">
<el-input <el-input
...@@ -37,7 +40,8 @@ ...@@ -37,7 +40,8 @@
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
clearable clearable
/> />
<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" /> <el-button :title="$t('dataset.edit_field')" :disabled="!table || !hasDataPermission('manage',table.privileges)" icon="el-icon-setting" type="text" size="mini" style="float: right;width: 20px;margin-left: 4px;" @click="editField" />
<el-button :title="$t('chart.change_ds')" :disabled="!hasDataPermission('manage',param.privileges)" icon="el-icon-refresh" type="text" size="mini" style="float: right;width: 20px;margin-left: 4px;" @click="changeDs" />
</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>
...@@ -88,7 +92,7 @@ ...@@ -88,7 +92,7 @@
</el-col> </el-col>
<el-col <el-col
style="height: 100%;width: 30%;min-width: 200px;max-width:220px;border: 1px solid #E6E6E6;border-left: 0 solid;" style="height: 100%;width: 180px;border-right: 1px solid #E6E6E6;"
> >
<!-- <div style="border-bottom: 1px solid #E6E6E6;overflow-y:hidden;height: 62px;" class="padding-lr">--> <!-- <div style="border-bottom: 1px solid #E6E6E6;overflow-y:hidden;height: 62px;" class="padding-lr">-->
<!-- <el-row>--> <!-- <el-row>-->
...@@ -209,52 +213,16 @@ ...@@ -209,52 +213,16 @@
</el-row> </el-row>
</div> </div>
<div style="overflow:auto;border-top: 1px solid #e6e6e6" class="attr-style"> <div style="overflow:auto;border-top: 1px solid #e6e6e6" class="attr-style">
<el-row class="padding-lr">
<span>{{ $t('chart.style_priority') }}</span>
<el-row> <el-row>
<el-radio-group v-model="view.stylePriority" :disabled="!hasDataPermission('manage',param.privileges)" size="mini" @change="save"> <el-row v-if="chart.type !=='text' && chart.type !== 'gauge'" class="padding-lr">
<el-radio label="view"><span>{{ $t('chart.chart') }}</span></el-radio> <span style="width: 80px;text-align: right;">{{ $t('chart.dimension') }}</span>
<el-radio label="panel"><span>{{ $t('chart.dashboard') }}</span></el-radio>
</el-radio-group>
</el-row>
</el-row>
<el-tabs type="card" :stretch="true" class="tab-header">
<el-tab-pane :label="$t('chart.shape_attr')" class="padding-lr">
<color-selector :param="param" class="attr-selector" :chart="chart" @onColorChange="onColorChange" />
<size-selector :param="param" class="attr-selector" :chart="chart" @onSizeChange="onSizeChange" />
<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')" :param="param" class="attr-selector" :chart="chart" @onTooltipChange="onTooltipChange" />
</el-tab-pane>
<el-tab-pane :label="$t('chart.module_style')" class="padding-lr">
<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')" :param="param" class="attr-selector" :chart="chart" @onChangeYAxisForm="onChangeYAxisForm" />
<split-selector v-show="view.type.includes('radar')" :param="param" class="attr-selector" :chart="chart" @onChangeSplitForm="onChangeSplitForm" />
<title-selector :param="param" class="attr-selector" :chart="chart" @onTextChange="onTextChange" />
<legend-selector v-show="!view.type.includes('table') && !view.type.includes('text')" :param="param" class="attr-selector" :chart="chart" @onLegendChange="onLegendChange" />
<background-color-selector :param="param" class="attr-selector" :chart="chart" @onChangeBackgroundForm="onChangeBackgroundForm" />
</el-tab-pane>
</el-tabs>
</div>
<div style="height:60px;overflow:auto;border-top: 1px solid #e6e6e6" class="padding-lr filter-class">
<span>{{ $t('chart.result_filter') }}</span>
<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" />
</el-button>
</div>
</el-col>
<el-col style="height: 100%;min-width: 500px;border-top: 1px solid #E6E6E6;">
<el-row style="width: 100%;height: 100%;" class="padding-lr">
<el-row style="margin-top: 10px;height: 74px;">
<el-row v-if="chart.type !=='text' && chart.type !== 'gauge'" style="display:flex;height: 32px;">
<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)" :disabled="!hasDataPermission('manage',param.privileges)"
group="dimension" group="dimension"
animation="300" animation="300"
:move="onMove" :move="onMove"
style="width:100%;height: 100%;margin:0 10px;border-radius: 4px;border: 1px solid #DCDFE6;overflow-x: auto;display: flex;align-items: center;background-color: white;" style="padding:2px 0 0 0;width:100%;height: 100%;border-radius: 4px;border: 1px solid #DCDFE6;overflow-x: auto;display: flex;align-items: center;background-color: white;"
@end="end2" @end="end2"
> >
<transition-group class="draggable-group"> <transition-group class="draggable-group">
...@@ -262,15 +230,15 @@ ...@@ -262,15 +230,15 @@
</transition-group> </transition-group>
</draggable> </draggable>
</el-row> </el-row>
<el-row style="display:flex;height: 32px;margin-top: 10px;"> <el-row class="padding-lr">
<span style="line-height: 32px;width: 80px;text-align: right;">{{ $t('chart.quota') }}</span> <span style="width: 80px;text-align: right;">{{ $t('chart.quota') }}</span>
<draggable <draggable
v-model="view.yaxis" v-model="view.yaxis"
:disabled="!hasDataPermission('manage',param.privileges)" :disabled="!hasDataPermission('manage',param.privileges)"
group="quota" group="quota"
animation="300" animation="300"
:move="onMove" :move="onMove"
style="width:100%;height: 100%;margin:0 10px;border-radius: 4px;border: 1px solid #DCDFE6;overflow-x: auto;display: flex;align-items: center;background-color: white;" style="padding:2px 0 0 0;width:100%;height: 100%;border-radius: 4px;border: 1px solid #DCDFE6;overflow-x: auto;display: flex;align-items: center;background-color: white;"
@end="end2" @end="end2"
> >
<transition-group class="draggable-group"> <transition-group class="draggable-group">
...@@ -278,7 +246,54 @@ ...@@ -278,7 +246,54 @@
</transition-group> </transition-group>
</draggable> </draggable>
</el-row> </el-row>
<div class="padding-lr filter-class">
<span>{{ $t('chart.result_filter') }}</span>
<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" />
</el-button>
</div>
</el-row>
</div>
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane :label="$t('chart.chart_style')" class="padding-tab" style="width: 360px;">
<div style="overflow:auto;border-right: 1px solid #e6e6e6;height: 100%;" class="attr-style">
<el-row class="padding-lr">
<span>{{ $t('chart.style_priority') }}</span>
<el-row>
<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="panel"><span>{{ $t('chart.dashboard') }}</span></el-radio>
</el-radio-group>
</el-row>
</el-row>
<el-row class="padding-lr">
<span>{{ $t('chart.shape_attr') }}</span>
<el-row>
<color-selector :param="param" class="attr-selector" :chart="chart" @onColorChange="onColorChange" />
<size-selector :param="param" class="attr-selector" :chart="chart" @onSizeChange="onSizeChange" />
<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')" :param="param" class="attr-selector" :chart="chart" @onTooltipChange="onTooltipChange" />
</el-row>
</el-row>
<el-row class="padding-lr">
<span>{{ $t('chart.module_style') }}</span>
<el-row>
<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')" :param="param" class="attr-selector" :chart="chart" @onChangeYAxisForm="onChangeYAxisForm" />
<split-selector v-show="view.type.includes('radar')" :param="param" class="attr-selector" :chart="chart" @onChangeSplitForm="onChangeSplitForm" />
<title-selector :param="param" class="attr-selector" :chart="chart" @onTextChange="onTextChange" />
<legend-selector v-show="!view.type.includes('table') && !view.type.includes('text')" :param="param" class="attr-selector" :chart="chart" @onLegendChange="onLegendChange" />
<background-color-selector :param="param" class="attr-selector" :chart="chart" @onChangeBackgroundForm="onChangeBackgroundForm" />
</el-row>
</el-row> </el-row>
</div>
</el-tab-pane>
</el-tabs>
<el-col style="height: 100%;min-width: 500px;border-top: 1px solid #E6E6E6;">
<el-row style="width: 100%;height: 100%;" class="padding-lr">
<div ref="imageWrapper" style="height: 100%"> <div ref="imageWrapper" style="height: 100%">
<chart-component v-if="httpRequest.status && chart.type && !chart.type.includes('table') && !chart.type.includes('text')" :chart-id="chart.id" :chart="chart" class="chart-class" /> <chart-component v-if="httpRequest.status && chart.type && !chart.type.includes('table') && !chart.type.includes('text')" :chart-id="chart.id" :chart="chart" class="chart-class" />
<table-normal v-if="httpRequest.status && chart.type && chart.type.includes('table')" :chart="chart" class="table-class" /> <table-normal v-if="httpRequest.status && chart.type && chart.type.includes('table')" :chart="chart" class="table-class" />
...@@ -506,7 +521,7 @@ export default { ...@@ -506,7 +521,7 @@ export default {
watch: { watch: {
'param': function() { 'param': function() {
if (this.param.optType === 'new') { if (this.param.optType === 'new') {
//
} else { } else {
this.getData(this.param.id) this.getData(this.param.id)
} }
...@@ -762,8 +777,8 @@ export default { ...@@ -762,8 +777,8 @@ export default {
// 左边往右边拖动时的事件 // 左边往右边拖动时的事件
start1(e) { start1(e) {
// console.log(e) // console.log(e)
e.clone.className = 'item-on-move' e.clone.className = 'item'
e.item.className = 'item-on-move' e.item.className = 'item'
}, },
end1(e) { end1(e) {
// console.log(e) // console.log(e)
...@@ -1046,7 +1061,8 @@ export default { ...@@ -1046,7 +1061,8 @@ export default {
}, },
changeDs() { changeDs() {
this.changeDsTitle = this.$t('chart.change_ds') + '[' + this.table.name + ']' const dialogTitle = (this.table && this.table.name) ? ('[' + this.table.name + ']') : ''
this.changeDsTitle = this.$t('chart.change_ds') + dialogTitle
this.selectTableFlag = true this.selectTableFlag = true
}, },
...@@ -1179,9 +1195,15 @@ export default { ...@@ -1179,9 +1195,15 @@ export default {
.tab-header>>>.el-tabs__nav-scroll{ .tab-header>>>.el-tabs__nav-scroll{
padding-left: 0!important; padding-left: 0!important;
} }
.tab-header>>>.el-tabs__header{
margin: 0!important;
}
.tab-header>>>.el-tabs__content{
height: 100%;
}
.draggable-group { .draggable-group {
display: inline-block; display: block;
width: 100%; width: 100%;
height: calc(100% - 6px); height: calc(100% - 6px);
} }
...@@ -1203,7 +1225,7 @@ export default { ...@@ -1203,7 +1225,7 @@ export default {
} }
.el-radio{ .el-radio{
margin:6px; margin:5px;
} }
.el-radio>>>.el-radio__label{ .el-radio>>>.el-radio__label{
...@@ -1211,7 +1233,7 @@ export default { ...@@ -1211,7 +1233,7 @@ export default {
} }
.attr-style{ .attr-style{
height: calc(100vh - 56px - 25vh - 40px - 62px - 60px - 20px); height: calc(100vh - 56px - 25vh - 40px - 60px);
} }
.attr-selector{ .attr-selector{
...@@ -1238,11 +1260,11 @@ export default { ...@@ -1238,11 +1260,11 @@ export default {
} }
.chart-class{ .chart-class{
height: calc(100% - 84px); height: 100%;
padding: 10px; padding: 10px;
} }
.table-class{ .table-class{
height: calc(100% - 104px); height: calc(100% - 20px);
margin: 10px; margin: 10px;
} }
...@@ -1275,4 +1297,13 @@ export default { ...@@ -1275,4 +1297,13 @@ export default {
.field-height{ .field-height{
height: calc(50% - 20px); height: calc(50% - 20px);
} }
.padding-tab{
padding: 0;
height: 100%;
}
.collapse-style>>>.el-collapse-item__header{
height: 40px;
line-height: 40px;
padding: 0 0 0 10px;
}
</style> </style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论