Toggle navigation
Toggle navigation
This project
Loading...
Sign in
monitor_v3
/
anji-plus-report
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
鲁尚清
3 years ago
Commit
feebf7e45b0c129284c9f0025189c857a623c8d4
1 parent
2fb24e10
master-mj-joke
...
master-500-dev
master-500-dev-LH
master-500-dev-lushangqing
master-500-dev-lzc
master-500-prod
master-mj
自定义折现堆叠图
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1121 additions
and
3 deletions
report-ui/src/views/report/bigscreen/designer/tools/echartsConfigJson/monitorConfigJson/monitor-custom-line-stack.js
report-ui/src/views/report/bigscreen/designer/tools/main.js
report-ui/src/views/report/bigscreen/designer/widget/monitor/customLineStack.vue
report-ui/src/views/report/bigscreen/designer/widget/temp.vue
report-ui/src/views/report/bigscreen/designer/widget/widget.vue
report-ui/src/views/report/bigscreen/designer/tools/echartsConfigJson/monitorConfigJson/monitor-custom-line-stack.js
0 → 100644
View file @
feebf7e
/*
* @Descripttion: 折线堆叠图 json
* @version:
* @Author: lsq
* @Date: 2022-02-28
* @LastEditors: lsq
* @LastEditTime: 2022-02-28
*/
export
const
monitorCustomLineStack
=
{
code
:
'monitorCustomLineStack'
,
type
:
'chart'
,
label
:
'折线堆叠图-多数据'
,
icon
:
'iconduidietu'
,
options
:
{
// 配置
setup
:
[
{
type
:
'el-input-text'
,
label
:
'图层名称'
,
name
:
'layerName'
,
required
:
false
,
placeholder
:
''
,
value
:
'折线堆叠图'
,
},
{
type
:
'el-switch'
,
label
:
'竖展示'
,
name
:
'verticalShow'
,
required
:
false
,
placeholder
:
''
,
value
:
false
,
},
{
type
:
'vue-color'
,
label
:
'背景颜色'
,
name
:
'background'
,
required
:
false
,
placeholder
:
''
,
value
:
''
},
[
{
name
:
'折线设置'
,
list
:
[
{
type
:
'el-switch'
,
label
:
'标记点'
,
name
:
'markPoint'
,
required
:
false
,
placeholder
:
''
,
value
:
true
,
},
{
type
:
'el-slider'
,
label
:
'点大小'
,
name
:
'pointSize'
,
required
:
false
,
placeholder
:
''
,
value
:
5
,
},
{
type
:
'el-switch'
,
label
:
'平滑曲线'
,
name
:
'smoothCurve'
,
required
:
false
,
placeholder
:
''
,
value
:
true
,
},
{
type
:
'el-switch'
,
label
:
'面积堆积'
,
name
:
'area'
,
required
:
false
,
placeholder
:
''
,
value
:
true
,
},
{
type
:
'el-slider'
,
label
:
'面积厚度'
,
name
:
'areaThickness'
,
required
:
false
,
placeholder
:
''
,
value
:
5
,
},
{
type
:
'el-slider'
,
label
:
'线条宽度'
,
name
:
'lineWidth'
,
required
:
false
,
placeholder
:
''
,
value
:
4
,
},
],
},
{
name
:
'标题设置'
,
list
:
[
{
type
:
'el-switch'
,
label
:
'标题'
,
name
:
'isNoTitle'
,
required
:
false
,
placeholder
:
''
,
value
:
true
,
},
{
type
:
'el-input-text'
,
label
:
'标题'
,
name
:
'titleText'
,
required
:
false
,
placeholder
:
''
,
value
:
''
,
},
{
type
:
'vue-color'
,
label
:
'字体颜色'
,
name
:
'textColor'
,
required
:
false
,
placeholder
:
''
,
value
:
'#FFD700'
},
{
type
:
'el-select'
,
label
:
'字体粗细'
,
name
:
'textFontWeight'
,
required
:
false
,
placeholder
:
''
,
selectOptions
:
[
{
code
:
'normal'
,
name
:
'正常'
},
{
code
:
'bold'
,
name
:
'粗体'
},
{
code
:
'bolder'
,
name
:
'特粗体'
},
{
code
:
'lighter'
,
name
:
'细体'
}
],
value
:
'normal'
},
{
type
:
'el-input-number'
,
label
:
'字体大小'
,
name
:
'textFontSize'
,
required
:
false
,
placeholder
:
''
,
value
:
20
},
{
type
:
'el-select'
,
label
:
'字体位置'
,
name
:
'textAlign'
,
required
:
false
,
placeholder
:
''
,
selectOptions
:
[
{
code
:
'center'
,
name
:
'居中'
},
{
code
:
'left'
,
name
:
'左对齐'
},
{
code
:
'right'
,
name
:
'右对齐'
},
],
value
:
'center'
},
{
type
:
'el-input-text'
,
label
:
'副标题'
,
name
:
'subText'
,
required
:
false
,
placeholder
:
''
,
value
:
''
},
{
type
:
'vue-color'
,
label
:
'字体颜色'
,
name
:
'subTextColor'
,
required
:
false
,
placeholder
:
''
,
value
:
'rgba(30, 144, 255, 1)'
},
{
type
:
'el-select'
,
label
:
'字体粗细'
,
name
:
'subTextFontWeight'
,
required
:
false
,
placeholder
:
''
,
selectOptions
:
[
{
code
:
'normal'
,
name
:
'正常'
},
{
code
:
'bold'
,
name
:
'粗体'
},
{
code
:
'bolder'
,
name
:
'特粗体'
},
{
code
:
'lighter'
,
name
:
'细体'
}
],
value
:
'normal'
},
{
type
:
'el-input-number'
,
label
:
'字体大小'
,
name
:
'subTextFontSize'
,
required
:
false
,
placeholder
:
''
,
value
:
20
},
],
},
{
name
:
'X轴设置'
,
list
:
[
{
type
:
'el-switch'
,
label
:
'显示'
,
name
:
'hideX'
,
required
:
false
,
placeholder
:
''
,
value
:
true
,
},
{
type
:
'el-input-text'
,
label
:
'X轴别名'
,
name
:
'xName'
,
required
:
false
,
placeholder
:
''
,
value
:
''
},
{
type
:
'vue-color'
,
label
:
'别名颜色'
,
name
:
'xNameColor'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
},
{
type
:
'el-input-number'
,
label
:
'别名字号'
,
name
:
'xNameFontSize'
,
required
:
false
,
placeholder
:
''
,
value
:
14
},
{
type
:
'el-switch'
,
label
:
'轴反转'
,
name
:
'reversalX'
,
required
:
false
,
placeholder
:
''
,
value
:
false
},
{
type
:
'el-slider'
,
label
:
'文字角度'
,
name
:
'textAngleX'
,
required
:
false
,
placeholder
:
''
,
value
:
0
},
{
type
:
'el-input-number'
,
label
:
'文字间隔'
,
name
:
'textInterval'
,
required
:
false
,
placeholder
:
''
,
value
:
''
},
{
type
:
'vue-color'
,
label
:
'文字颜色'
,
name
:
'Xcolor'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
,
},
{
type
:
'el-input-number'
,
label
:
'文字字号'
,
name
:
'fontSizeX'
,
required
:
false
,
placeholder
:
''
,
value
:
14
,
},
{
type
:
'vue-color'
,
label
:
'轴颜色'
,
name
:
'lineColorX'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
,
},
{
type
:
'el-switch'
,
label
:
'分割线显示'
,
name
:
'isShowSplitLineX'
,
require
:
false
,
placeholder
:
''
,
value
:
false
,
},
{
type
:
'vue-color'
,
label
:
'分割线颜色'
,
name
:
'splitLineColorX'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
,
}
],
},
{
name
:
'Y轴设置'
,
list
:
[
{
type
:
'el-switch'
,
label
:
'显示'
,
name
:
'isShowY'
,
require
:
false
,
placeholder
:
''
,
value
:
true
,
},
{
type
:
'el-input-text'
,
label
:
'Y轴别名'
,
name
:
'textNameY'
,
require
:
false
,
placeholder
:
''
,
value
:
''
},
{
type
:
'vue-color'
,
label
:
'别名颜色'
,
name
:
'NameColorY'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
,
},
{
type
:
'el-input-number'
,
label
:
'别名字号'
,
name
:
'NameFontSizeY'
,
required
:
false
,
placeholder
:
''
,
value
:
14
,
},
{
type
:
'el-switch'
,
label
:
'轴反转'
,
name
:
'reversalY'
,
required
:
false
,
placeholder
:
''
,
value
:
false
},
{
type
:
'el-slider'
,
label
:
'文字角度'
,
name
:
'textAngleY'
,
required
:
false
,
placeholder
:
''
,
value
:
0
},
{
type
:
'vue-color'
,
label
:
'文字颜色'
,
name
:
'colorY'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
,
},
{
type
:
'el-input-number'
,
label
:
'文字字号'
,
name
:
'fontSizeY'
,
required
:
false
,
placeholder
:
''
,
value
:
14
,
},
{
type
:
'vue-color'
,
label
:
'轴颜色'
,
name
:
'lineColorY'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
,
},
{
type
:
'el-switch'
,
label
:
'分割线显示'
,
name
:
'isShowSplitLineY'
,
require
:
false
,
placeholder
:
''
,
value
:
false
,
},
{
type
:
'vue-color'
,
label
:
'分割线颜色'
,
name
:
'splitLineColorY'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
,
}
],
},
{
name
:
'数值设定'
,
list
:
[
{
type
:
'el-switch'
,
label
:
'显示'
,
name
:
'isShow'
,
required
:
false
,
placeholder
:
''
,
value
:
false
},
{
type
:
'el-input-number'
,
label
:
'字体大小'
,
name
:
'fontSize'
,
required
:
false
,
placeholder
:
''
,
value
:
14
},
{
type
:
'vue-color'
,
label
:
'字体颜色'
,
name
:
'subTextColor'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
},
{
type
:
'el-select'
,
label
:
'字体粗细'
,
name
:
'fontWeight'
,
required
:
false
,
placeholder
:
''
,
selectOptions
:
[
{
code
:
'normal'
,
name
:
'正常'
},
{
code
:
'bold'
,
name
:
'粗体'
},
{
code
:
'bolder'
,
name
:
'特粗体'
},
{
code
:
'lighter'
,
name
:
'细体'
}
],
value
:
'normal'
},
],
},
{
name
:
'提示语设置'
,
list
:
[
{
type
:
'el-input-number'
,
label
:
'字体大小'
,
name
:
'tipsFontSize'
,
required
:
false
,
placeholder
:
''
,
value
:
16
},
{
type
:
'vue-color'
,
label
:
'字体颜色'
,
name
:
'lineColor'
,
required
:
false
,
placeholder
:
''
,
},
],
},
{
name
:
'坐标轴边距设置'
,
list
:
[
{
type
:
'el-slider'
,
label
:
'左边距(像素)'
,
name
:
'marginLeft'
,
required
:
false
,
placeholder
:
''
,
value
:
10
,
},
{
type
:
'el-slider'
,
label
:
'顶边距(像素)'
,
name
:
'marginTop'
,
required
:
false
,
placeholder
:
''
,
value
:
50
,
},
{
type
:
'el-slider'
,
label
:
'右边距(像素)'
,
name
:
'marginRight'
,
required
:
false
,
placeholder
:
''
,
value
:
40
,
},
{
type
:
'el-slider'
,
label
:
'底边距(像素)'
,
name
:
'marginBottom'
,
required
:
false
,
placeholder
:
''
,
value
:
10
,
},
],
},
{
name
:
'图例操作'
,
list
:
[
{
type
:
'el-switch'
,
label
:
'显示'
,
name
:
'isShowLegend'
,
required
:
false
,
placeholder
:
''
,
value
:
true
,
},
{
type
:
'vue-color'
,
label
:
'字体颜色'
,
name
:
'lengedColor'
,
required
:
false
,
placeholder
:
''
,
value
:
'#fff'
,
},
{
type
:
'el-input-number'
,
label
:
'字体大小'
,
name
:
'lengedFontSize'
,
required
:
false
,
placeholder
:
''
,
value
:
16
,
},
{
type
:
'el-input-number'
,
label
:
'图例宽度'
,
name
:
'lengedWidth'
,
required
:
false
,
placeholder
:
''
,
value
:
15
,
},
{
type
:
'el-select'
,
label
:
'横向位置'
,
name
:
'lateralPosition'
,
required
:
false
,
placeholder
:
''
,
selectOptions
:
[
{
code
:
'center'
,
name
:
'居中'
},
{
code
:
'left'
,
name
:
'左对齐'
},
{
code
:
'right'
,
name
:
'右对齐'
},
],
value
:
'center'
},
{
type
:
'el-select'
,
label
:
'纵向位置'
,
name
:
'longitudinalPosition'
,
required
:
false
,
placeholder
:
''
,
selectOptions
:
[
{
code
:
'top'
,
name
:
'顶部'
},
{
code
:
'bottom'
,
name
:
'底部'
},
],
value
:
'top'
},
{
type
:
'el-select'
,
label
:
'布局前置'
,
name
:
'layoutFront'
,
required
:
false
,
placeholder
:
''
,
selectOptions
:
[
{
code
:
'vertical'
,
name
:
'竖排'
},
{
code
:
'horizontal'
,
name
:
'横排'
},
],
value
:
'horizontal'
},
],
},
{
name
:
'自定义配色'
,
list
:
[
{
type
:
'customColor'
,
label
:
''
,
name
:
'customColor'
,
required
:
false
,
value
:
[{
color
:
'#ff7f50'
},
{
color
:
'#87cefa'
},
{
color
:
'#da70d6'
},
{
color
:
'#32cd32'
},
{
color
:
'#6495ed'
}],
},
],
},
],
],
// 数据
data
:
[
{
type
:
'el-radio-group'
,
label
:
'数据类型'
,
name
:
'dataType'
,
require
:
false
,
placeholder
:
''
,
selectValue
:
true
,
selectOptions
:
[
{
code
:
'staticData'
,
name
:
'静态数据'
,
},
{
code
:
'dynamicData'
,
name
:
'动态数据'
,
},
],
value
:
'staticData'
,
},
{
type
:
'el-input-number'
,
label
:
'刷新时间(毫秒)'
,
name
:
'refreshTime'
,
relactiveDom
:
'dataType'
,
relactiveDomValue
:
'dynamicData'
,
value
:
5000
},
{
type
:
'el-button'
,
label
:
'静态数据'
,
name
:
'staticData'
,
required
:
false
,
placeholder
:
''
,
relactiveDom
:
'dataType'
,
relactiveDomValue
:
'staticData'
,
value
:
[
{
"axis"
:
"2021-07-25"
,
"name"
:
"A"
,
"data"
:
"12"
},
{
"axis"
:
"2021-07-25"
,
"name"
:
"B"
,
"data"
:
"20"
},
{
"axis"
:
"2021-07-26"
,
"name"
:
"B"
,
"data"
:
"5"
},
{
"axis"
:
"2021-07-27"
,
"name"
:
"A"
,
"data"
:
"15"
},
{
"axis"
:
"2021-07-27"
,
"name"
:
"B"
,
"data"
:
"30"
},
],
},
{
type
:
'dycustComponents'
,
label
:
''
,
name
:
'dynamicData'
,
required
:
false
,
placeholder
:
''
,
relactiveDom
:
'dataType'
,
relactiveDomValue
:
'dynamicData'
,
chartType
:
'widget-stackchart'
,
dictKey
:
'STACK_PROPERTIES'
,
value
:
''
,
},
],
// 坐标
position
:
[
{
type
:
'el-input-number'
,
label
:
'左边距'
,
name
:
'left'
,
required
:
false
,
placeholder
:
''
,
value
:
0
,
},
{
type
:
'el-input-number'
,
label
:
'上边距'
,
name
:
'top'
,
required
:
false
,
placeholder
:
''
,
value
:
0
,
},
{
type
:
'el-input-number'
,
label
:
'宽度'
,
name
:
'width'
,
required
:
false
,
placeholder
:
'该容器在1920px大屏中的宽度'
,
value
:
400
,
},
{
type
:
'el-input-number'
,
label
:
'高度'
,
name
:
'height'
,
required
:
false
,
placeholder
:
'该容器在1080px大屏中的高度'
,
value
:
200
,
},
],
}
}
...
...
report-ui/src/views/report/bigscreen/designer/tools/main.js
View file @
feebf7e
...
...
@@ -42,6 +42,7 @@ import {monitorBgBorder} from "./echartsConfigJson/monitorConfigJson/monitor-bg-
import
{
monitorGaugeRate
}
from
"./echartsConfigJson/monitorConfigJson/monitor-gauge-rate"
;
import
{
monitorCustomLineChart
}
from
"./echartsConfigJson/monitorConfigJson/monitor-custom-line-chart"
;
import
{
monitorCustomBarStack
}
from
"./echartsConfigJson/monitorConfigJson/monitor-custom-bar-stack"
;
import
{
monitorCustomLineStack
}
from
"./echartsConfigJson/monitorConfigJson/monitor-custom-line-stack"
;
export
const
{
widgetTool
,
monitor
}
=
{
...
...
@@ -82,6 +83,7 @@ export const {widgetTool,monitor} = {
monitorBgBorder
,
monitorGaugeRate
,
monitorCustomLineChart
,
monitorCustomBarStack
monitorCustomBarStack
,
monitorCustomLineStack
]
}
...
...
report-ui/src/views/report/bigscreen/designer/widget/monitor/customLineStack.vue
0 → 100644
View file @
feebf7e
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize/>
</div>
</template>
<script>
export default {
name: "customLineStack",
components: {},
props: {
value: Object,
ispreview: Boolean
},
data() {
return {
options: {
grid: {},
legend: {
textStyle: {
color: "#fff"
}
},
xAxis: {
type: "category",
data: [],
axisLabel: {
show: true,
textStyle: {
color: "#fff"
}
}
},
yAxis: {
type: "value",
data: [],
axisLabel: {
show: true,
textStyle: {
color: "#fff"
}
}
},
series: [
{
data: [],
name: '',
type: "line",
barGap: "0%",
itemStyle: {
barBorderRadius: null
}
}
]
},
optionsStyle: {}, // 样式
optionsData: {}, // 数据
optionsSetup: {},
flagInter: null
};
},
computed: {
styleObj() {
return {
position: this.ispreview ? "absolute" : "static",
width: this.optionsStyle.width + "px",
height: this.optionsStyle.height + "px",
left: this.optionsStyle.left + "px",
top: this.optionsStyle.top + "px",
background: this.optionsSetup.background
};
}
},
watch: {
value: {
handler(val) {
this.optionsStyle = val.position;
this.optionsData = val.data;
this.optionsCollapse = val.setup;
this.optionsSetup = val.setup;
this.editorOptions();
},
deep: true
}
},
mounted() {
this.optionsStyle = this.value.position;
this.optionsData = this.value.data;
this.optionsCollapse = this.value.setup;
this.optionsSetup = this.value.setup;
this.editorOptions();
},
methods: {
// 修改图标options属性
editorOptions() {
this.setOptionsTitle();
this.setOptionsX();
this.setOptionsY();
this.setOptionsTooltip();
this.setOptionsMargin();
this.setOptionsLegend();
this.setOptionsData();
},
// 标题修改
setOptionsTitle() {
const optionsSetup = this.optionsSetup;
const title = {};
title.text = optionsSetup.titleText;
title.show = optionsSetup.isNoTitle;
title.left = optionsSetup.textAlign;
title.textStyle = {
color: optionsSetup.textColor,
fontSize: optionsSetup.textFontSize,
fontWeight: optionsSetup.textFontWeight
};
title.subtext = optionsSetup.subText;
title.subtextStyle = {
color: optionsSetup.subTextColor,
fontWeight: optionsSetup.subTextFontWeight,
fontSize: optionsSetup.subTextFontSize
};
this.options.title = title;
},
// X轴设置
setOptionsX() {
const optionsSetup = this.optionsSetup;
const xAxis = {
type: "category",
show: optionsSetup.hideX, // 坐标轴是否显示
name: optionsSetup.xName, // 坐标轴名称
nameTextStyle: {
color: optionsSetup.xNameColor,
fontSize: optionsSetup.xNameFontSize
},
nameRotate: optionsSetup.textAngleX, // 文字角度
inverse: optionsSetup.reversalX, // 轴反转
axisLabel: {
show: true,
interval: optionsSetup.textInterval, // 文字角度
rotate: optionsSetup.textAngle, // 文字角度
textStyle: {
color: optionsSetup.Xcolor, // x轴 坐标文字颜色
fontSize: optionsSetup.fontSizeX
}
},
axisLine: {
show: true,
lineStyle: {
color: optionsSetup.lineColorX
}
},
splitLine: {
show: optionsSetup.isShowSplitLineX,
lineStyle: {
color: optionsSetup.splitLineColorX
}
}
};
this.options.xAxis = xAxis;
},
// Y轴设置
setOptionsY() {
const optionsSetup = this.optionsSetup;
const yAxis = {
type: "value",
show: optionsSetup.isShowY, // 坐标轴是否显示
name: optionsSetup.textNameY, // 坐标轴名称
nameTextStyle: {
color: optionsSetup.NameColorY,
fontSize: optionsSetup.NameFontSizeY
},
inverse: optionsSetup.reversalY, // y轴反转
axisLabel: {
show: true,
rotate: optionsSetup.textAngleY,// 文字角度
textStyle: {
color: optionsSetup.colorY, // y轴 坐标文字颜色
fontSize: optionsSetup.fontSizeY
}
},
axisLine: {
show: true,
lineStyle: {
color: optionsSetup.lineColorY
}
},
splitLine: {
show: optionsSetup.isShowSplitLineY,
lineStyle: {
color: optionsSetup.splitLineColorY
}
}
};
this.options.yAxis = yAxis;
},
// 获取面积
getOptionArea() {
const optionsSetup = this.optionsSetup;
let areaStyle = [];
if (optionsSetup.area) {
areaStyle = {
opacity: optionsSetup.areaThickness / 100
}
} else {
areaStyle = {
opacity: 0
}
}
return areaStyle
},
// tooltip 提示语设置,鼠标放置显示
setOptionsTooltip() {
const optionsSetup = this.optionsSetup;
const tooltip = {
trigger: "item",
show: true,
textStyle: {
color: optionsSetup.lineColor,
fontSize: optionsSetup.tipsFontSize
}
};
this.options.tooltip = tooltip;
},
// 边距设置
setOptionsMargin() {
const optionsSetup = this.optionsSetup;
const grid = {
left: optionsSetup.marginLeft,
right: optionsSetup.marginRight,
bottom: optionsSetup.marginBottom,
top: optionsSetup.marginTop,
containLabel: true
};
this.options.grid = grid;
},
// 图例操作 legend
setOptionsLegend() {
const optionsSetup = this.optionsSetup;
const legend = this.options.legend;
legend.show = optionsSetup.isShowLegend;
legend.left = optionsSetup.lateralPosition;
legend.top = optionsSetup.longitudinalPosition == "top" ? 0 : "auto";
legend.bottom =
optionsSetup.longitudinalPosition == "bottom" ? 0 : "auto";
legend.orient = optionsSetup.layoutFront;
legend.textStyle = {
color: optionsSetup.lengedColor,
fontSize: optionsSetup.lengedFontSize
};
legend.itemWidth = optionsSetup.lengedWidth;
},
// 图例颜色修改
setOptionsColor() {
const optionsCollapse = this.optionsSetup;
const customColor = optionsCollapse.customColor;
if (!customColor) return;
const arrColor = [];
for (let i = 0; i < customColor.length; i++) {
arrColor.push(customColor[i].color);
}
this.options.color = arrColor;
this.options = Object.assign({}, this.options);
},
// 数据解析
setOptionsData() {
const optionsSetup = this.optionsSetup;
const optionsData = this.optionsData; // 数据类型 静态 or 动态
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData, optionsSetup)
: this.dynamicDataFn(
optionsData.dynamicData,
optionsData.refreshTime,
optionsSetup
);
},
//去重
setUnique(arr) {
let newArr = [];
arr.forEach(item => {
return newArr.includes(item) ? '' : newArr.push(item);
});
return newArr;
},
//静态数据
staticDataFn(val) {
const optionsSetup = this.optionsSetup;
//颜色
const customColor = optionsSetup.customColor;
const arrColor = [];
for (let i = 0; i < customColor.length; i++) {
arrColor.push(customColor[i].color);
}
//数据
const series = [];
let xAxisList = []
let yAxisList = []
for (const i in val) {
xAxisList[i] = val[i].axis
yAxisList[i] = val[i].name
}
xAxisList = this.setUnique(xAxisList) // x轴 0725 0726 0727
yAxisList = this.setUnique(yAxisList) // y轴 A B C
for (const i in yAxisList) {
const data = new Array(yAxisList.length).fill(0)
for (const j in xAxisList) {
for (const k in val) {
if (val[k].name == yAxisList[i]) { // a = a
if (val[k].axis == xAxisList[j]) { // 0725
data[j] = val[k].data
}
}
}
}
series.push({
name: yAxisList[i],
type: "line",
data: data,
width: optionsSetup.lineWidth,
symbol: 'circle',
showSymbol: optionsSetup.markPoint,
symbolSize: optionsSetup.pointSize,
smooth: optionsSetup.smoothCurve,
// 线条
lineStyle: {
color: arrColor[i],
width: optionsSetup.lineWidth
},
//点
itemStyle: {
color: arrColor[i],
},
areaStyle: this.getOptionArea(),
//标题部分
label: {
show: optionsSetup.isShow,
position: "top",
distance: 10,
fontSize: optionsSetup.fontSize,
color: optionsSetup.subTextColor,
fontWeight: optionsSetup.fontWeight
},
})
}
this.options.series = series
if (optionsSetup.verticalShow) {
this.options.xAxis.data = [];
this.options.yAxis.data = xAxisList;
this.options.xAxis.type = "value";
this.options.yAxis.type = "category";
} else {
this.options.xAxis.data = xAxisList;
this.options.yAxis.data = [];
this.options.xAxis.type = "category";
this.options.yAxis.type = "value";
}
},
// 动态数据
dynamicDataFn(val, refreshTime, optionsSetup) {
if (!val) return;
if (this.ispreview) {
this.getEchartData(val, optionsSetup);
this.flagInter = setInterval(() => {
this.getEchartData(val, optionsSetup);
}, refreshTime);
} else {
this.getEchartData(val, optionsSetup);
}
},
getEchartData(val, optionsSetup) {
const data = this.queryEchartsData(val);
data.then(res => {
this.renderingFn(optionsSetup, res);
});
},
renderingFn(optionsSetup, val) {
//颜色
const customColor = optionsSetup.customColor;
const arrColor = [];
for (let i = 0; i < customColor.length; i++) {
arrColor.push(customColor[i].color);
}
// x轴
if (optionsSetup.verticalShow) {
this.options.xAxis.data = [];
this.options.yAxis.data = val.xAxis;
this.options.xAxis.type = "value";
this.options.yAxis.type = "category";
} else {
this.options.xAxis.data = val.xAxis;
this.options.yAxis.data = [];
this.options.xAxis.type = "category";
this.options.yAxis.type = "value";
}
const series = [];
for (const i in val.series) {
if (val.series[i].type == "line") {
series.push({
name: val.series[i].name,
type: "line",
data: val.series[i].data,
width: optionsSetup.lineWidth,
symbol: 'circle',
showSymbol: optionsSetup.markPoint,
symbolSize: optionsSetup.pointSize,
symbolColor: arrColor[i],
smooth: optionsSetup.smoothCurve,
// 线条
lineStyle: {
color: arrColor[i],
width: optionsSetup.lineWidth
},
//点
itemStyle: {
color: arrColor[i],
},
areaStyle: this.getOptionArea(),
// 标题部分
label: {
show: optionsSetup.isShow,
position: "top",
distance: 10,
fontSize: optionsSetup.fontSize,
color: optionsSetup.subTextColor,
fontWeight: optionsSetup.fontWeight
},
})
}
}
this.options.series = series
}
}
};
</script>
<style scoped lang="scss">
.echarts {
width: 100%;
height: 100%;
overflow: hidden;
}
</style>
...
...
report-ui/src/views/report/bigscreen/designer/widget/temp.vue
View file @
feebf7e
...
...
@@ -45,6 +45,7 @@ import monitorBgBorder from "./monitor/bgBorder";
import monitorGaugeRate from "./monitor/gaugeRate";
import monitorCustomLineChart from "./monitor/customLineChart";
import monitorCustomBarStack from "./monitor/customBarStack";
import monitorCustomLineStack from "./monitor/customLineStack";
export default {
name: "WidgetTemp",
...
...
@@ -82,7 +83,8 @@ export default {
monitorBgBorder,
monitorGaugeRate,
monitorCustomLineChart,
monitorCustomBarStack
monitorCustomBarStack,
monitorCustomLineStack
},
model: {
prop: "value",
...
...
report-ui/src/views/report/bigscreen/designer/widget/widget.vue
View file @
feebf7e
...
...
@@ -56,6 +56,7 @@ import monitorBgBorder from "./monitor/bgBorder";
import monitorGaugeRate from "./monitor/gaugeRate";
import monitorCustomLineChart from "./monitor/customLineChart";
import monitorCustomBarStack from "./monitor/customBarStack";
import monitorCustomLineStack from "./monitor/customLineStack";
export default {
...
...
@@ -93,7 +94,8 @@ export default {
monitorBgBorder,
monitorGaugeRate,
monitorCustomLineChart,
monitorCustomBarStack
monitorCustomBarStack,
monitorCustomLineStack
},
model: {
prop: "value",
...
...
Please
register
or
login
to post a comment