From 3cc9008f072f1b6979247e3857be6bfc96d560af Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 25 Aug 2021 15:13:41 +0800 Subject: [PATCH 01/27] =?UTF-8?q?=E6=9F=B1=E7=8A=B6=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E5=9B=BE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/report/bigscreen/designer/tools.js | 62 ++--------- .../widget/bar/widgetBarCompareChart.vue | 103 ++++++++++++++++-- 2 files changed, 105 insertions(+), 60 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools.js b/report-ui/src/views/report/bigscreen/designer/tools.js index 8e77dab7..e0d06072 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools.js +++ b/report-ui/src/views/report/bigscreen/designer/tools.js @@ -7010,7 +7010,7 @@ const widgetTools = [ code: 'widgetBarCompareChart', type: 'chart', label: '柱状对比图', - icon: 'iconbianzu23', + icon: 'iconduibitupu', options: { // 配置 setup: [ @@ -7022,14 +7022,14 @@ const widgetTools = [ placeholder: '', value: '柱状对比图', }, - { + /*{ type: 'el-switch', label: '竖展示', name: 'verticalShow', required: false, placeholder: '', value: false, - }, + },*/ { type: 'vue-color', label: '背景颜色', @@ -7048,7 +7048,7 @@ const widgetTools = [ name: 'maxWidth', required: false, placeholder: '', - value: 20, + value: 15, }, { type: 'el-slider', @@ -7122,47 +7122,9 @@ const widgetTools = [ ], 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: [ { @@ -7263,8 +7225,8 @@ const widgetTools = [ } ], - }, - { + },*/ + /*{ name: 'Y轴设置', list: [ { @@ -7355,7 +7317,7 @@ const widgetTools = [ } ], - }, + },*/ { name: '数值设定', list: [ @@ -7365,7 +7327,7 @@ const widgetTools = [ name: 'isShow', required: false, placeholder: '', - value: false + value: true }, { type: 'el-input-number', @@ -7399,7 +7361,7 @@ const widgetTools = [ }, ], }, - { + /*{ name: '提示语设置', list: [ { @@ -7526,7 +7488,7 @@ const widgetTools = [ value: 'horizontal' }, ], - }, + },*/ { name: '自定义配色', list: [ @@ -7535,7 +7497,7 @@ const widgetTools = [ label: '', name: 'customColor', required: false, - value: [{color: '#ff7f50'}, {color: '#87cefa'}], + value: [{color: '#36c5e7'}, {color: '#e68b55'}], }, ], }, diff --git a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue index 4ee1dd6b..8a4fc3de 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue @@ -17,7 +17,7 @@ export default { return { options: { title: { - text: '柱状对比图', + //text: '柱状对比图', x: 'center', textStyle: { color: '#ffffff', @@ -61,8 +61,8 @@ export default { //itemWidth: 0 }, xAxis: [ - { - splitNumber: 2,//左间隔 + {// 左 + splitNumber: 2, type: 'value', inverse: true, axisLine: { @@ -72,14 +72,14 @@ export default { show: false, }, position: 'bottom', - axisLabel: { + axisLabel: { // x轴 show: true, textStyle: { color: '#ffffff', fontSize: 12 } }, - splitLine: { + splitLine: { // 分割线 show: true, lineStyle: { color: '#57617f', @@ -92,7 +92,7 @@ export default { gridIndex: 1, show: false, }, - { + {// 右 gridIndex: 2, type: 'value', axisLine: { @@ -177,7 +177,7 @@ export default { name: '', type: 'bar', barGap: 20, - barWidth: '80%', + barWidth: 15, label: { normal: { show: true, @@ -207,7 +207,7 @@ export default { name: '', type: 'bar', barGap: 20, - barWidth: '80%', + barWidth: 15, xAxisIndex: 2, yAxisIndex: 2, label: { @@ -256,7 +256,7 @@ export default { handler(val) { this.optionsStyle = val.position; this.optionsData = val.data; - this.optionsCollapse = val.setup; + this.optionsSetup = val.setup; this.optionsSetup = val.setup; this.editorOptions(); }, @@ -273,8 +273,92 @@ export default { methods: { // 修改图标options属性 editorOptions() { + this.setOptionsTitle(); + this.setOptionsTop(); + this.setOptionsColor(); this.setOptionsData(); }, + // 标题修改 + setOptionsTitle() { + const optionsCollapse = this.optionsSetup; + const title = {}; + title.text = optionsCollapse.titleText; + title.show = optionsCollapse.isNoTitle; + title.left = optionsCollapse.textAlign; + title.textStyle = { + color: optionsCollapse.textColor, + fontSize: optionsCollapse.textFontSize, + fontWeight: optionsCollapse.textFontWeight + }; + this.options.title = title; + }, + // 数值设定 or 柱体设置 + setOptionsTop() { + const optionsSetup = this.optionsSetup; + const series = this.options.series; + for (const key in series) { + if (series[key].type == "bar") { + series[0].label = { + normal: { + show: optionsSetup.isShow, + //color: 'red', + position: 'insideLeft', + textStyle: { + fontSize: optionsSetup.fontSize, + color: optionsSetup.subTextColor, + fontWeight: optionsSetup.fontWeight + } + }, + emphasis: { + show: false, + }, + }, + series[1].label = { + normal: { + show: optionsSetup.isShow, + color: 'red', + position: 'insideRight', + textStyle: { + fontSize: optionsSetup.fontSize, + color: optionsSetup.subTextColor, + fontWeight: optionsSetup.fontWeight + } + }, + emphasis: { + show: false, + }, + }, + series[key].barWidth = optionsSetup.maxWidth; + } + } + this.options.series = series; + }, + // 颜色修改,圆角修改 + setOptionsColor() { + const optionsSetup = this.optionsSetup; + const customColor = optionsSetup.customColor; + if (!customColor) return; + const itemStyleLeft = { + normal: { + color: customColor[0].color, + barBorderRadius: [optionsSetup.radius, 0, 0, optionsSetup.radius] + }, + emphasis: { + show: false, + }, + } + const itemStyleRight = { + normal: { + color: customColor[1].color, + barBorderRadius: [0, optionsSetup.radius, optionsSetup.radius, 0] + }, + emphasis: { + show: false, + }, + } + this.options.series[0].itemStyle = itemStyleLeft; + this.options.series[1].itemStyle = itemStyleRight; + }, // 数据解析 setOptionsData() { const optionsSetup = this.optionsSetup; @@ -335,7 +419,6 @@ export default { this.options.series[1]['name'] = arrayList[1].name this.options.series[1]['data'] = arrayList[1].data this.options.yAxis[1]['data'] = xAxisList - /*if (optionsSetup.verticalShow) { this.options.xAxis.data = []; this.options.yAxis.data = xAxisList; From 56d26d74554aa18ab84da43ce4288c78150bfb09 Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 25 Aug 2021 17:51:40 +0800 Subject: [PATCH 02/27] =?UTF-8?q?=E6=9F=B1=E7=8A=B6=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E5=9B=BE=E5=8A=9F=E8=83=BD=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/report/bigscreen/designer/tools.js | 16 +++--------- .../widget/bar/widgetBarCompareChart.vue | 25 ++++++++++++++++--- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools.js b/report-ui/src/views/report/bigscreen/designer/tools.js index e0d06072..823e82ea 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools.js +++ b/report-ui/src/views/report/bigscreen/designer/tools.js @@ -7022,14 +7022,6 @@ const widgetTools = [ placeholder: '', value: '柱状对比图', }, - /*{ - type: 'el-switch', - label: '竖展示', - name: 'verticalShow', - required: false, - placeholder: '', - value: false, - },*/ { type: 'vue-color', label: '背景颜色', @@ -7361,7 +7353,7 @@ const widgetTools = [ }, ], }, - /*{ + { name: '提示语设置', list: [ { @@ -7381,7 +7373,7 @@ const widgetTools = [ }, ], }, - { + /*{ name: '坐标轴边距设置', list: [ { @@ -7414,7 +7406,7 @@ const widgetTools = [ value: 10, }, ], - }, + },*/ { name: '图例操作', list: [ @@ -7488,7 +7480,7 @@ const widgetTools = [ value: 'horizontal' }, ], - },*/ + }, { name: '自定义配色', list: [ diff --git a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue index 8a4fc3de..6be98c15 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue @@ -28,7 +28,7 @@ export default { show: false, left: '4%', top: 60, - bottom: 60, + bottom: 10, containLabel: true, width: '40%' }, @@ -43,7 +43,7 @@ export default { show: false, right: '4%', top: 60, - bottom: 60, + bottom: 10, containLabel: true, width: '40%' }, @@ -275,6 +275,7 @@ export default { editorOptions() { this.setOptionsTitle(); this.setOptionsTop(); + this.setOptionsLegend(); this.setOptionsColor(); this.setOptionsData(); }, @@ -292,7 +293,7 @@ export default { }; this.options.title = title; }, - // 数值设定 or 柱体设置 + // 数值设定、柱体设置 setOptionsTop() { const optionsSetup = this.optionsSetup; const series = this.options.series; @@ -333,7 +334,23 @@ export default { } this.options.series = series; }, - // 颜色修改,圆角修改 + // 图例操作 + 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 optionsSetup = this.optionsSetup; const customColor = optionsSetup.customColor; From c369e29cbdfc434390dff2e66467d966ddb95780 Mon Sep 17 00:00:00 2001 From: qianlishi <1432731663@qq.com> Date: Thu, 26 Aug 2021 15:53:06 +0800 Subject: [PATCH 03/27] update table --- report-ui/src/main.js | 3 --- .../bigscreen/designer/widget/widgetTable.vue | 4 ++++ report-ui/static/home.mp4 | Bin 0 -> 2165079 bytes 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 report-ui/static/home.mp4 diff --git a/report-ui/src/main.js b/report-ui/src/main.js index e9e3524a..abc86422 100644 --- a/report-ui/src/main.js +++ b/report-ui/src/main.js @@ -41,9 +41,6 @@ import Avue from '@smallwei/avue'; import '@smallwei/avue/lib/index.css'; Vue.use(Avue); -import VueSuperSlide from 'vue-superslide' -Vue.use(VueSuperSlide) - // enable element zh-cn Vue.use(ElementUI, { zhLocale }) diff --git a/report-ui/src/views/report/bigscreen/designer/widget/widgetTable.vue b/report-ui/src/views/report/bigscreen/designer/widget/widgetTable.vue index 7297f22d..91a48967 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/widgetTable.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/widgetTable.vue @@ -27,7 +27,11 @@ + + diff --git a/report-ui/src/views/report/bigscreen/designer/widget/temp.vue b/report-ui/src/views/report/bigscreen/designer/widget/temp.vue index 9396d3f3..f0b126d4 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/temp.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/temp.vue @@ -34,6 +34,7 @@ import widgetAirBubbleMap from "./map/widgetAirBubbleMap"; import widgetBarStackChart from "./bar/widgetBarStackChart"; import widgetLineStackChart from "./line/widgetLineStackChart"; import widgetBarCompareChart from "./bar/widgetBarCompareChart"; +import widgetLineCompareChart from "./line/widgetLineCompareChart"; export default { name: "WidgetTemp", @@ -60,7 +61,8 @@ export default { widgetAirBubbleMap, widgetBarStackChart, widgetLineStackChart, - widgetBarCompareChart + widgetBarCompareChart, + widgetLineCompareChart }, model: { prop: "value", diff --git a/report-ui/src/views/report/bigscreen/designer/widget/widget.vue b/report-ui/src/views/report/bigscreen/designer/widget/widget.vue index 7b603787..1f587d61 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/widget.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/widget.vue @@ -44,6 +44,7 @@ import widgetAirBubbleMap from "./map/widgetAirBubbleMap"; import widgetBarStackChart from "./bar/widgetBarStackChart"; import widgetLineStackChart from "./line/widgetLineStackChart"; import widgetBarCompareChart from "./bar/widgetBarCompareChart"; +import widgetLineCompareChart from "./line/widgetLineCompareChart"; export default { name: "Widget", @@ -70,7 +71,8 @@ export default { widgetAirBubbleMap, widgetBarStackChart, widgetLineStackChart, - widgetBarCompareChart + widgetBarCompareChart, + widgetLineCompareChart }, model: { prop: "value", From 893f623fbe2516cd217ee0d6f9252131ba32255e Mon Sep 17 00:00:00 2001 From: qianming Date: Tue, 31 Aug 2021 15:03:29 +0800 Subject: [PATCH 18/27] =?UTF-8?q?=E6=8A=98=E7=BA=BF=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widget/bar/widgetBarCompareChart.vue | 20 +- .../widget/line/widgetLineCompareChart.vue | 631 +++++++++--------- .../designer/widget/widgetLinechart.vue | 2 +- 3 files changed, 338 insertions(+), 315 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue index f5416345..18142593 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetBarCompareChart.vue @@ -61,6 +61,7 @@ export default { xAxis: [ {// 左 splitNumber: 2, + show: true, type: 'value', inverse: true, axisLine: {//底分割线 @@ -92,6 +93,7 @@ export default { }, {// 右 gridIndex: 2, + show: true, type: 'value', axisLine: { show: false, @@ -302,6 +304,7 @@ export default { const xAxisLeft = { splitNumber: optionsSetup.splitNumberLeft, type: 'value', + show : optionsSetup.hideXLeft, inverse: true, axisLine: {//X轴线 show: optionsSetup.xLineLeft, @@ -314,7 +317,7 @@ export default { }, position: 'bottom', axisLabel: { // x轴 - show: optionsSetup.hideXLeft, + show: true, textStyle: { color: optionsSetup.XcolorLeft, fontSize: optionsSetup.fontSizeXLeft @@ -337,6 +340,7 @@ export default { const xAxisRight = { gridIndex: 2, splitNumber: optionsSetup.splitNumberRight, + show : optionsSetup.hideXRight, type: 'value', axisLine: {//X轴线 show: optionsSetup.xLineRight, @@ -349,7 +353,7 @@ export default { }, position: 'bottom', axisLabel: { // x轴 - show: optionsSetup.hideXRight, + show: true, textStyle: { color: optionsSetup.XcolorRight, fontSize: optionsSetup.fontSizeXRight @@ -444,16 +448,6 @@ export default { this.options.tooltip = tooltip; }, // 边距设置 - getOptionsBottom(){ - const optionsSetup = this.optionsSetup; - let bottom = optionsSetup.marginBottom; - if (optionsSetup.hideXLeft) { - bottom = optionsSetup.marginBottom + 15 - }else if (optionsSetup.hideXRight){ - bottom = optionsSetup.marginBottom + 15 - } - return bottom - }, setOptionsGrid() { const optionsSetup = this.optionsSetup; const grid = [ @@ -469,7 +463,7 @@ export default { show: false, left: "51%", top: optionsSetup.marginTop, - bottom: this.getOptionsBottom(), + bottom: optionsSetup.marginBottom + 15, width: '0%' }, {//右 diff --git a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue index 0f22eeef..d4142328 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue @@ -16,13 +16,27 @@ export default { data() { return { options: { + axisPointer: { + link: { + xAxisIndex: "all", + }, + }, title: { - //text: '柱状对比图', x: 'center', textStyle: { color: '#ffffff', }, }, + tooltip: { + show: true, + trigger: "axis", + axisPointer: { + type: "line", + lineStyle: { + type: "dashed", + }, + }, + }, //边距 grid: [ {// 上 @@ -52,60 +66,92 @@ export default { {// gridIndex: 0, type: 'category', - boundaryGap: false, - axisLine: { //分割线 - onZero: false, + boundaryGap: true, // 居中 + axisLine: { //x轴线 + show: true, + lineStyle: { + color: '#ffffff', + } }, - splitNumber: 2, - inverse: true, - axisTick: { - show: false, + axisTick: { // 刻度 + show: true, }, - //position: 'bottom', - axisLabel: { // x轴 + axisLabel: { // X轴数据 show: true, textStyle: { color: '#ffffff', - fontSize: 12 + fontSize: 14 } }, - data: [] + data: [], }, {// gridIndex: 1, type: 'category', position: 'top', - boundaryGap: false, - axisLine: { - show: false, + boundaryGap: true, // 居中 + axisLine: { // x轴线 + show: true, + lineStyle: { + color: '#ffffff', + } }, - axisTick: { - show: false, + axisTick: { // 刻度 + show: true, }, - //position: 'bottom', axisLabel: { - show: true, - textStyle: { - color: '#ffffff', - fontSize: 12, - }, + show: false, }, + data: [], }, ], yAxis: [ { gridIndex: 0, - scale: true, + show: true, + scale: true, // 是否不从0开始,false从0开始 + axisLabel: { + show: true, + textStyle: { + color: '#ffffff', + fontSize: 14, + }, + }, + axisLine: { // 轴线 + show: true, + lineStyle: { + color: '#ffffff', + }, + }, splitLine: { show: false, + lineStyle: { + color: '#ffffff', + }, }, }, { gridIndex: 1, - scale: true, - inverse: true, + scale: false, // 是否从0开始 + inverse: true, // 翻转 + axisLabel: { + show: true, + textStyle: { + color: '#ffffff', + fontSize: 14, + }, + }, + axisLine: { // 轴线 + show: true, + lineStyle: { + color: '#ffffff', + }, + }, splitLine: { show: false, + lineStyle: { + color: '#ffffff', + }, }, }, ], @@ -115,32 +161,21 @@ export default { type: 'line', xAxisIndex: 0, yAxisIndex: 0, - smooth: true, - barGap: 20, - barWidth: 15, - /*label: { - normal: { - show: true, - color: 'red', - position: 'insideLeft', - textStyle: { - color: '#ffffff', - } - - }, - emphasis: { - show: false, - }, - }, + smooth: true, // 曲线,折线 itemStyle: { - normal: { - color: '#36c5e7', - barBorderRadius: [8, 0, 0, 8], - }, - emphasis: { - show: false, - }, - },*/ + color: '#36c5e7', + }, + lineStyle: { + color: '#36c5e7', + width: 2, + }, + label: { + position: 'top', + distance: 10, + show: true, + color: '#36c5e7', + fontSize: 14, + }, data: [], }, { @@ -148,28 +183,21 @@ export default { type: 'line', xAxisIndex: 1, yAxisIndex: 1, - smooth: true, - barGap: 20, - barWidth: 15, - /*label: { - normal: { - show: true, - color: 'red', - position: 'insideRight', - textStyle: { - color: '#ffffff', - } - }, - }, + smooth: true, // 曲线,折线 itemStyle: { - normal: { - color: '#e68b55', - barBorderRadius: [0, 8, 8, 0], - }, - emphasis: { - show: false, - }, - },*/ + color: '#e68b55', + }, + lineStyle: { + color: '#e68b55', + width: 2, + }, + label: { + position: 'bottom', + distance: 10, + show: true, + color: '#e68b55', + fontSize: 16, + }, data: [], }, ] @@ -225,249 +253,249 @@ export default { this.setOptionsColor();*/ this.setOptionsData(); }, -/* // 标题修改 - setOptionsTitle() { - const optionsCollapse = this.optionsSetup; - const title = {}; - title.text = optionsCollapse.titleText; - title.show = optionsCollapse.isNoTitle; - title.left = optionsCollapse.textAlign; - title.textStyle = { - color: optionsCollapse.textColor, - fontSize: optionsCollapse.textFontSize, - fontWeight: optionsCollapse.textFontWeight - }; - this.options.title = title; - }, - // 左X轴设置 - setOptionsXLeft() { - const optionsSetup = this.optionsSetup; - const xAxisLeft = { - splitNumber: optionsSetup.splitNumberLeft, - type: 'value', - inverse: true, - axisLine: {//X轴线 - show: optionsSetup.xLineLeft, - lineStyle: { - color: optionsSetup.lineColorXLeft, - }, - }, - axisTick: { - show: optionsSetup.tickLineLeft, + /* // 标题修改 + setOptionsTitle() { + const optionsCollapse = this.optionsSetup; + const title = {}; + title.text = optionsCollapse.titleText; + title.show = optionsCollapse.isNoTitle; + title.left = optionsCollapse.textAlign; + title.textStyle = { + color: optionsCollapse.textColor, + fontSize: optionsCollapse.textFontSize, + fontWeight: optionsCollapse.textFontWeight + }; + this.options.title = title; }, - position: 'bottom', - axisLabel: { // x轴 - show: optionsSetup.hideXLeft, - textStyle: { - color: optionsSetup.XcolorLeft, - fontSize: optionsSetup.fontSizeXLeft + // 左X轴设置 + setOptionsXLeft() { + const optionsSetup = this.optionsSetup; + const xAxisLeft = { + splitNumber: optionsSetup.splitNumberLeft, + type: 'value', + inverse: true, + axisLine: {//X轴线 + show: optionsSetup.xLineLeft, + lineStyle: { + color: optionsSetup.lineColorXLeft, + }, + }, + axisTick: { + show: optionsSetup.tickLineLeft, + }, + position: 'bottom', + axisLabel: { // x轴 + show: optionsSetup.hideXLeft, + textStyle: { + color: optionsSetup.XcolorLeft, + fontSize: optionsSetup.fontSizeXLeft + } + }, + splitLine: { // 分割线 + show: optionsSetup.SplitLineLeft, + lineStyle: { + color: optionsSetup.SplitLineColorLeft, + width: optionsSetup.SplitLinefontSizeLeft, + type: 'solid' + } + } } + this.options.xAxis[0] = xAxisLeft; }, - splitLine: { // 分割线 - show: optionsSetup.SplitLineLeft, - lineStyle: { - color: optionsSetup.SplitLineColorLeft, - width: optionsSetup.SplitLinefontSizeLeft, - type: 'solid' + // 右X轴设置 + setOptionsXRight() { + const optionsSetup = this.optionsSetup; + const xAxisRight = { + gridIndex: 2, + splitNumber: optionsSetup.splitNumberRight, + type: 'value', + axisLine: {//X轴线 + show: optionsSetup.xLineRight, + lineStyle: { + color: optionsSetup.lineColorXRight, + }, + }, + axisTick: { + show: optionsSetup.tickLineRight, + }, + position: 'bottom', + axisLabel: { // x轴 + show: optionsSetup.hideXRight, + textStyle: { + color: optionsSetup.XcolorRight, + fontSize: optionsSetup.fontSizeXRight + } + }, + splitLine: { // 分割线 + show: optionsSetup.SplitLineRight, + lineStyle: { + color: optionsSetup.SplitLineColorRight, + width: optionsSetup.SplitLinefontSizeRight, + type: 'solid' + } + } } - } - } - this.options.xAxis[0] = xAxisLeft; - }, - // 右X轴设置 - setOptionsXRight() { - const optionsSetup = this.optionsSetup; - const xAxisRight = { - gridIndex: 2, - splitNumber: optionsSetup.splitNumberRight, - type: 'value', - axisLine: {//X轴线 - show: optionsSetup.xLineRight, - lineStyle: { - color: optionsSetup.lineColorXRight, - }, + this.options.xAxis[2] = xAxisRight; }, - axisTick: { - show: optionsSetup.tickLineRight, + // Y轴设置 + setOptionsY() { + const optionsSetup = this.optionsSetup; + const axisLine = { + show: optionsSetup.lineY, + lineStyle: { + color: optionsSetup.lineColorY + } + }; + const axisTick = { + show: optionsSetup.tickLineY + }; + const axisLabel = { + show: optionsSetup.hideY, + textStyle: { + align: optionsSetup.textAlign, + color: optionsSetup.colorY, + fontSize: optionsSetup.fontSizeY, + } + }; + this.options.yAxis[1]['axisLine'] = axisLine; + this.options.yAxis[1]['axisTick'] = axisTick; + this.options.yAxis[1]['axisLabel'] = axisLabel; }, - position: 'bottom', - axisLabel: { // x轴 - show: optionsSetup.hideXRight, - textStyle: { - color: optionsSetup.XcolorRight, - fontSize: optionsSetup.fontSizeXRight + // 数值设定、柱体设置 + setOptionsTop() { + const optionsSetup = this.optionsSetup; + const series = this.options.series; + for (const key in series) { + if (series[key].type == "bar") { + series[0].label = { + normal: { + show: optionsSetup.isShow, + position: 'insideLeft', + textStyle: { + fontSize: optionsSetup.fontSize, + color: optionsSetup.subTextColor, + fontWeight: optionsSetup.fontWeight + } + }, + emphasis: { + show: false, + }, + }, + series[1].label = { + normal: { + show: optionsSetup.isShow, + color: 'red', + position: 'insideRight', + textStyle: { + fontSize: optionsSetup.fontSize, + color: optionsSetup.subTextColor, + fontWeight: optionsSetup.fontWeight + } + }, + emphasis: { + show: false, + }, + }, + series[key].barWidth = optionsSetup.maxWidth; + } } + this.options.series = series; + }, + // tooltip 提示语设置 + setOptionsTooltip() { + const optionsSetup = this.optionsSetup; + const tooltip = { + trigger: "item", + show: true, + textStyle: { + color: optionsSetup.lineColor, + fontSize: optionsSetup.fontSize + } + }; + this.options.tooltip = tooltip; }, - splitLine: { // 分割线 - show: optionsSetup.SplitLineRight, - lineStyle: { - color: optionsSetup.SplitLineColorRight, - width: optionsSetup.SplitLinefontSizeRight, - type: 'solid' + // 边距设置 + getOptionsBottom(){ + const optionsSetup = this.optionsSetup; + let bottom = optionsSetup.marginBottom; + if (optionsSetup.hideXLeft) { + bottom = optionsSetup.marginBottom + 15 + }else if (optionsSetup.hideXRight){ + bottom = optionsSetup.marginBottom + 15 } - } - } - this.options.xAxis[2] = xAxisRight; - }, - // Y轴设置 - setOptionsY() { - const optionsSetup = this.optionsSetup; - const axisLine = { - show: optionsSetup.lineY, - lineStyle: { - color: optionsSetup.lineColorY - } - }; - const axisTick = { - show: optionsSetup.tickLineY - }; - const axisLabel = { - show: optionsSetup.hideY, - textStyle: { - align: optionsSetup.textAlign, - color: optionsSetup.colorY, - fontSize: optionsSetup.fontSizeY, - } - }; - this.options.yAxis[1]['axisLine'] = axisLine; - this.options.yAxis[1]['axisTick'] = axisTick; - this.options.yAxis[1]['axisLabel'] = axisLabel; - }, - // 数值设定、柱体设置 - setOptionsTop() { - const optionsSetup = this.optionsSetup; - const series = this.options.series; - for (const key in series) { - if (series[key].type == "bar") { - series[0].label = { - normal: { - show: optionsSetup.isShow, - position: 'insideLeft', - textStyle: { - fontSize: optionsSetup.fontSize, - color: optionsSetup.subTextColor, - fontWeight: optionsSetup.fontWeight - } + return bottom + }, + setOptionsGrid() { + const optionsSetup = this.optionsSetup; + const grid = [ + {//左 + show: optionsSetup.frameLineLeft, + left: optionsSetup.marginLeftRight, + top: optionsSetup.marginTop, + bottom: optionsSetup.marginBottom, + containLabel: true, + width: '40%' }, - emphasis: { + {//中间字体位置 show: false, + left: "51%", + top: optionsSetup.marginTop, + bottom: this.getOptionsBottom(), + width: '0%' }, - }, - series[1].label = { - normal: { - show: optionsSetup.isShow, - color: 'red', - position: 'insideRight', - textStyle: { - fontSize: optionsSetup.fontSize, - color: optionsSetup.subTextColor, - fontWeight: optionsSetup.fontWeight - } - }, - emphasis: { - show: false, - }, + {//右 + show: optionsSetup.frameLineRight, + right: optionsSetup.marginLeftRight, + top: optionsSetup.marginTop, + bottom: optionsSetup.marginBottom, + containLabel: true, + width: '40%' }, - series[key].barWidth = optionsSetup.maxWidth; - } - } - this.options.series = series; - }, - // tooltip 提示语设置 - setOptionsTooltip() { - const optionsSetup = this.optionsSetup; - const tooltip = { - trigger: "item", - show: true, - textStyle: { - color: optionsSetup.lineColor, - fontSize: optionsSetup.fontSize - } - }; - this.options.tooltip = tooltip; - }, - // 边距设置 - getOptionsBottom(){ - const optionsSetup = this.optionsSetup; - let bottom = optionsSetup.marginBottom; - if (optionsSetup.hideXLeft) { - bottom = optionsSetup.marginBottom + 15 - }else if (optionsSetup.hideXRight){ - bottom = optionsSetup.marginBottom + 15 - } - return bottom - }, - setOptionsGrid() { - const optionsSetup = this.optionsSetup; - const grid = [ - {//左 - show: optionsSetup.frameLineLeft, - left: optionsSetup.marginLeftRight, - top: optionsSetup.marginTop, - bottom: optionsSetup.marginBottom, - containLabel: true, - width: '40%' - }, - {//中间字体位置 - show: false, - left: "51%", - top: optionsSetup.marginTop, - bottom: this.getOptionsBottom(), - width: '0%' - }, - {//右 - show: optionsSetup.frameLineRight, - right: optionsSetup.marginLeftRight, - top: optionsSetup.marginTop, - bottom: optionsSetup.marginBottom, - containLabel: true, - width: '40%' - }, - ] - this.options.grid = grid; - }, - // 图例操作 - 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 optionsSetup = this.optionsSetup; - const customColor = optionsSetup.customColor; - if (!customColor) return; - const itemStyleLeft = { - normal: { - color: customColor[0].color, - barBorderRadius: [optionsSetup.radius, 0, 0, optionsSetup.radius] - }, - emphasis: { - show: false, + ] + this.options.grid = grid; }, - } - const itemStyleRight = { - normal: { - color: customColor[1].color, - barBorderRadius: [0, optionsSetup.radius, optionsSetup.radius, 0] - }, - emphasis: { - show: false, + // 图例操作 + 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; }, - } - this.options.series[0].itemStyle = itemStyleLeft; - this.options.series[1].itemStyle = itemStyleRight; - },*/ + // 颜色修改、圆角修改 + setOptionsColor() { + const optionsSetup = this.optionsSetup; + const customColor = optionsSetup.customColor; + if (!customColor) return; + const itemStyleLeft = { + normal: { + color: customColor[0].color, + barBorderRadius: [optionsSetup.radius, 0, 0, optionsSetup.radius] + }, + emphasis: { + show: false, + }, + } + const itemStyleRight = { + normal: { + color: customColor[1].color, + barBorderRadius: [0, optionsSetup.radius, optionsSetup.radius, 0] + }, + emphasis: { + show: false, + }, + } + this.options.series[0].itemStyle = itemStyleLeft; + this.options.series[1].itemStyle = itemStyleRight; + },*/ // 数据解析 setOptionsData() { const optionsSetup = this.optionsSetup; @@ -522,6 +550,7 @@ export default { this.options.series[1]['name'] = arrayList[1].name this.options.series[1]['data'] = arrayList[1].data this.options.xAxis[0]['data'] = xAxisList + this.options.xAxis[1]['data'] = xAxisList }, // 动态数据 dynamicDataFn(val, refreshTime, optionsSetup) { @@ -543,7 +572,7 @@ export default { }, renderingFn(optionsSetup, val) { this.options.yAxis[1]['data'] = val.xAxis - if (val.series[0].type == "bar"){ + if (val.series[0].type == "bar") { this.options.series[0]['name'] = val.series[0].name this.options.series[0]['data'] = val.series[0].data this.options.series[1]['name'] = val.series[1].name diff --git a/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue b/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue index a554e8f2..955fa859 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue @@ -180,7 +180,7 @@ export default { axisLabel: { show: true, textStyle: { - color: optionsCollapse.colorY, // x轴 坐标文字颜色 + color: optionsCollapse.colorY, // y轴 坐标文字颜色 fontSize: optionsCollapse.fontSizeY } }, From 22f31ae9ca306b2b3480844ca2e7f645d180c5f2 Mon Sep 17 00:00:00 2001 From: qianming Date: Tue, 31 Aug 2021 16:56:35 +0800 Subject: [PATCH 19/27] =?UTF-8?q?=E6=8A=98=E7=BA=BF=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../componentsJSON/widget-line-compare.js | 118 ++-- .../widget/line/widgetLineCompareChart.vue | 514 ++++++++++-------- 2 files changed, 337 insertions(+), 295 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js index a24b36a1..d42af828 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js @@ -31,27 +31,59 @@ export const widgetLineCompare = { value: '' }, [ - /*{ - name: '柱体设置', + { + name: '折线设置', list: [ + { + type: 'el-switch', + label: '标记点', + name: 'markPoint', + required: false, + placeholder: '', + value: true, + }, { type: 'el-slider', - label: '最大宽度', - name: 'maxWidth', + label: '点大小', + name: 'pointSize', required: false, placeholder: '', - value: 15, + value: 10, + }, + { + 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: 'radius', - require: false, + label: '面积厚度', + name: 'areaThickness', + required: false, placeholder: '', value: 5, }, + { + type: 'el-slider', + label: '线条宽度', + name: 'lineWidth', + required: false, + placeholder: '', + value: 4, + }, ], - },*/ + }, { name: '标题设置', list: [ @@ -117,12 +149,12 @@ export const widgetLineCompare = { ], }, { - name: '左X轴设置', + name: 'X轴设置', list: [ { type: 'el-switch', label: '显示', - name: 'hideXLeft', + name: 'isShowX', required: false, placeholder: '', value: true, @@ -130,15 +162,23 @@ export const widgetLineCompare = { { type: 'el-input-number', label: '数值间隔', - name: 'splitNumberLeft', + name: 'splitNumberX', required: false, placeholder: '', value: '' }, + { + type: 'el-switch', + label: '数值居中', + name: 'boundaryX', + required: false, + placeholder: '', + value: true, + }, { type: 'vue-color', label: '数值颜色', - name: 'XcolorLeft', + name: 'colorX', required: false, placeholder: '', value: '#fff', @@ -146,7 +186,7 @@ export const widgetLineCompare = { { type: 'el-input-number', label: '数值字号', - name: 'fontSizeXLeft', + name: 'fontSizeX', required: false, placeholder: '', value: 14, @@ -154,68 +194,36 @@ export const widgetLineCompare = { { type: 'el-switch', label: '刻度线', - name: 'tickLineLeft', + name: 'tickLineX', require: false, placeholder: '', - value: false, + value: true, }, { type: 'el-switch', label: 'X轴线', - name: 'xLineLeft', + name: 'lineX', require: false, placeholder: '', - value: false, + value: true, }, { type: 'vue-color', label: '轴颜色', - name: 'lineColorXLeft', + name: 'lineColorX', required: false, placeholder: '', value: '#fff', }, - { - type: 'el-switch', - label: '竖分割线', - name: 'SplitLineLeft', - require: false, - placeholder: '', - value: false, - }, - { - type: 'vue-color', - label: '分割线颜色', - name: 'SplitLineColorLeft', - required: false, - placeholder: '', - value: '#fff', - }, - { - type: 'el-input-number', - label: '分割线宽度', - name: 'SplitLinefontSizeLeft', - required: false, - placeholder: '', - value: 1, - }, - { - type: 'el-switch', - label: '边框线', - name: 'frameLineLeft', - require: false, - placeholder: '', - value: false, - }, ], }, { - name: '右X轴设置', + name: '上y轴设置', list: [ { type: 'el-switch', label: '显示', - name: 'hideXRight', + name: 'isShowYTop', required: false, placeholder: '', value: true, @@ -223,7 +231,7 @@ export const widgetLineCompare = { { type: 'el-input-number', label: '数值间隔', - name: 'splitNumberRight', + name: 'splitNumberYTop', required: false, placeholder: '', value: '' @@ -303,7 +311,7 @@ export const widgetLineCompare = { ], }, { - name: 'Y轴设置', + name: '下Y轴设置', list: [ { type: 'el-switch', diff --git a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue index d4142328..00912883 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue @@ -29,13 +29,24 @@ export default { }, tooltip: { show: true, - trigger: "axis", + trigger: 'axis', axisPointer: { - type: "line", + type: 'line', lineStyle: { - type: "dashed", + color: 'ffffff', + type: 'dashed', }, }, + /*axisPointer: { + type: 'cross', + lineStyle: { + color: 'ffffff', + type: 'dashed', + }, + crossStyle: { + color: 'ffffff', + } + },*/ }, //边距 grid: [ @@ -65,6 +76,7 @@ export default { xAxis: [ {// gridIndex: 0, + show: true, type: 'category', boundaryGap: true, // 居中 axisLine: { //x轴线 @@ -79,6 +91,7 @@ export default { axisLabel: { // X轴数据 show: true, textStyle: { + interval: 0, color: '#ffffff', fontSize: 14 } @@ -87,6 +100,7 @@ export default { }, {// gridIndex: 1, + show: true, type: 'category', position: 'top', boundaryGap: true, // 居中 @@ -101,6 +115,7 @@ export default { }, axisLabel: { show: false, + interval: 0, }, data: [], }, @@ -129,6 +144,9 @@ export default { color: '#ffffff', }, }, + axisPointer: { + snap: true + }, }, { gridIndex: 1, @@ -153,6 +171,9 @@ export default { color: '#ffffff', }, }, + axisPointer: { + snap: true + }, }, ], series: [ @@ -242,260 +263,274 @@ export default { methods: { // 修改图标options属性 editorOptions() { - /*this.setOptionsTitle(); - this.setOptionsXLeft(); - this.setOptionsXRight(); - this.setOptionsY(); - this.setOptionsTop(); - this.setOptionsTooltip(); - this.setOptionsGrid(); - this.setOptionsLegend(); - this.setOptionsColor();*/ + this.setOptionsTitle(); + this.setOptionsX(); + // this.setOptionsXRight(); + // this.setOptionsY(); + // this.setOptionsTop(); + // this.setOptionsTooltip(); + // this.setOptionsGrid(); + // this.setOptionsLegend(); + // this.setOptionsColor(); this.setOptionsData(); }, - /* // 标题修改 - setOptionsTitle() { - const optionsCollapse = this.optionsSetup; - const title = {}; - title.text = optionsCollapse.titleText; - title.show = optionsCollapse.isNoTitle; - title.left = optionsCollapse.textAlign; - title.textStyle = { - color: optionsCollapse.textColor, - fontSize: optionsCollapse.textFontSize, - fontWeight: optionsCollapse.textFontWeight - }; - this.options.title = title; - }, - // 左X轴设置 - setOptionsXLeft() { - const optionsSetup = this.optionsSetup; - const xAxisLeft = { - splitNumber: optionsSetup.splitNumberLeft, - type: 'value', - inverse: true, - axisLine: {//X轴线 - show: optionsSetup.xLineLeft, - lineStyle: { - color: optionsSetup.lineColorXLeft, - }, - }, - axisTick: { - show: optionsSetup.tickLineLeft, - }, - position: 'bottom', - axisLabel: { // x轴 - show: optionsSetup.hideXLeft, - textStyle: { - color: optionsSetup.XcolorLeft, - fontSize: optionsSetup.fontSizeXLeft - } - }, - splitLine: { // 分割线 - show: optionsSetup.SplitLineLeft, - lineStyle: { - color: optionsSetup.SplitLineColorLeft, - width: optionsSetup.SplitLinefontSizeLeft, - type: 'solid' - } - } + // 标题修改 + setOptionsTitle() { + const optionsCollapse = this.optionsSetup; + const title = {}; + title.text = optionsCollapse.titleText; + title.show = optionsCollapse.isNoTitle; + title.left = optionsCollapse.textAlign; + title.textStyle = { + color: optionsCollapse.textColor, + fontSize: optionsCollapse.textFontSize, + fontWeight: optionsCollapse.textFontWeight + }; + this.options.title = title; + }, + // X轴设置 + setOptionsX() { + const optionsSetup = this.optionsSetup; + const xAxis0 = { + gridIndex: 0, + show: optionsSetup.isShowX, + type: 'category', + boundaryGap: optionsSetup.boundaryX, // 值居中 + axisLine: { //x轴线 + show: optionsSetup.lineX, + lineStyle: { + color: optionsSetup.lineColorX, } - this.options.xAxis[0] = xAxisLeft; }, - // 右X轴设置 - setOptionsXRight() { - const optionsSetup = this.optionsSetup; - const xAxisRight = { - gridIndex: 2, - splitNumber: optionsSetup.splitNumberRight, - type: 'value', - axisLine: {//X轴线 - show: optionsSetup.xLineRight, - lineStyle: { - color: optionsSetup.lineColorXRight, - }, - }, - axisTick: { - show: optionsSetup.tickLineRight, - }, - position: 'bottom', - axisLabel: { // x轴 - show: optionsSetup.hideXRight, - textStyle: { - color: optionsSetup.XcolorRight, - fontSize: optionsSetup.fontSizeXRight - } - }, - splitLine: { // 分割线 - show: optionsSetup.SplitLineRight, - lineStyle: { - color: optionsSetup.SplitLineColorRight, - width: optionsSetup.SplitLinefontSizeRight, - type: 'solid' - } - } - } - this.options.xAxis[2] = xAxisRight; + axisTick: { // 刻度 + show: optionsSetup.tickLineX, }, - // Y轴设置 - setOptionsY() { - const optionsSetup = this.optionsSetup; - const axisLine = { - show: optionsSetup.lineY, - lineStyle: { - color: optionsSetup.lineColorY - } - }; - const axisTick = { - show: optionsSetup.tickLineY - }; - const axisLabel = { - show: optionsSetup.hideY, - textStyle: { - align: optionsSetup.textAlign, - color: optionsSetup.colorY, - fontSize: optionsSetup.fontSizeY, - } - }; - this.options.yAxis[1]['axisLine'] = axisLine; - this.options.yAxis[1]['axisTick'] = axisTick; - this.options.yAxis[1]['axisLabel'] = axisLabel; + axisLabel: { // X轴数据 + show: true, + interval: optionsSetup.splitNumberX, + textStyle: { + color: optionsSetup.colorX, + fontSize: optionsSetup.fontSizeX + } }, - // 数值设定、柱体设置 - setOptionsTop() { - const optionsSetup = this.optionsSetup; - const series = this.options.series; - for (const key in series) { - if (series[key].type == "bar") { - series[0].label = { - normal: { - show: optionsSetup.isShow, - position: 'insideLeft', - textStyle: { - fontSize: optionsSetup.fontSize, - color: optionsSetup.subTextColor, - fontWeight: optionsSetup.fontWeight - } - }, - emphasis: { - show: false, - }, - }, - series[1].label = { - normal: { - show: optionsSetup.isShow, - color: 'red', - position: 'insideRight', - textStyle: { - fontSize: optionsSetup.fontSize, - color: optionsSetup.subTextColor, - fontWeight: optionsSetup.fontWeight - } - }, - emphasis: { - show: false, - }, - }, - series[key].barWidth = optionsSetup.maxWidth; - } + } + const xAxis1 = { + gridIndex: 1, + show: optionsSetup.isShowX, + type: 'category', + position: 'top', + boundaryGap: optionsSetup.boundaryX, // 值居中 + axisLine: { // x轴线 + show: optionsSetup.lineX, + lineStyle: { + color: optionsSetup.lineColorX, } - this.options.series = series; }, - // tooltip 提示语设置 - setOptionsTooltip() { - const optionsSetup = this.optionsSetup; - const tooltip = { - trigger: "item", - show: true, - textStyle: { - color: optionsSetup.lineColor, - fontSize: optionsSetup.fontSize - } - }; - this.options.tooltip = tooltip; + axisTick: { // 刻度 + show: optionsSetup.tickLineX, }, - // 边距设置 - getOptionsBottom(){ - const optionsSetup = this.optionsSetup; - let bottom = optionsSetup.marginBottom; - if (optionsSetup.hideXLeft) { - bottom = optionsSetup.marginBottom + 15 - }else if (optionsSetup.hideXRight){ - bottom = optionsSetup.marginBottom + 15 - } - return bottom + axisLabel: { + show: false, + interval: optionsSetup.splitNumberX, }, - setOptionsGrid() { - const optionsSetup = this.optionsSetup; - const grid = [ - {//左 - show: optionsSetup.frameLineLeft, - left: optionsSetup.marginLeftRight, - top: optionsSetup.marginTop, - bottom: optionsSetup.marginBottom, - containLabel: true, - width: '40%' - }, - {//中间字体位置 - show: false, - left: "51%", - top: optionsSetup.marginTop, - bottom: this.getOptionsBottom(), - width: '0%' - }, - {//右 - show: optionsSetup.frameLineRight, - right: optionsSetup.marginLeftRight, - top: optionsSetup.marginTop, - bottom: optionsSetup.marginBottom, - containLabel: true, - width: '40%' - }, - ] - this.options.grid = grid; + } + this.options.xAxis[0] = xAxis0; + this.options.xAxis[1] = xAxis1; + }, + // 右X轴设置 + setOptionsXRight() { + const optionsSetup = this.optionsSetup; + const xAxisRight = { + gridIndex: 2, + splitNumber: optionsSetup.splitNumberRight, + type: 'value', + axisLine: {//X轴线 + show: optionsSetup.xLineRight, + lineStyle: { + color: optionsSetup.lineColorXRight, + }, }, - // 图例操作 - 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; + axisTick: { + show: optionsSetup.tickLineRight, }, - // 颜色修改、圆角修改 - setOptionsColor() { - const optionsSetup = this.optionsSetup; - const customColor = optionsSetup.customColor; - if (!customColor) return; - const itemStyleLeft = { - normal: { - color: customColor[0].color, - barBorderRadius: [optionsSetup.radius, 0, 0, optionsSetup.radius] - }, - emphasis: { - show: false, - }, + position: 'bottom', + axisLabel: { // x轴 + show: optionsSetup.hideXRight, + textStyle: { + color: optionsSetup.XcolorRight, + fontSize: optionsSetup.fontSizeXRight } - const itemStyleRight = { + }, + splitLine: { // 分割线 + show: optionsSetup.SplitLineRight, + lineStyle: { + color: optionsSetup.SplitLineColorRight, + width: optionsSetup.SplitLinefontSizeRight, + type: 'solid' + } + } + } + this.options.xAxis[2] = xAxisRight; + }, + // Y轴设置 + setOptionsY() { + const optionsSetup = this.optionsSetup; + const axisLine = { + show: optionsSetup.lineY, + lineStyle: { + color: optionsSetup.lineColorY + } + }; + const axisTick = { + show: optionsSetup.tickLineY + }; + const axisLabel = { + show: optionsSetup.hideY, + textStyle: { + align: optionsSetup.textAlign, + color: optionsSetup.colorY, + fontSize: optionsSetup.fontSizeY, + } + }; + this.options.yAxis[1]['axisLine'] = axisLine; + this.options.yAxis[1]['axisTick'] = axisTick; + this.options.yAxis[1]['axisLabel'] = axisLabel; + }, + // 数值设定、柱体设置 + setOptionsTop() { + const optionsSetup = this.optionsSetup; + const series = this.options.series; + for (const key in series) { + if (series[key].type == "bar") { + series[0].label = { normal: { - color: customColor[1].color, - barBorderRadius: [0, optionsSetup.radius, optionsSetup.radius, 0] + show: optionsSetup.isShow, + position: 'insideLeft', + textStyle: { + fontSize: optionsSetup.fontSize, + color: optionsSetup.subTextColor, + fontWeight: optionsSetup.fontWeight + } }, emphasis: { show: false, }, - } - this.options.series[0].itemStyle = itemStyleLeft; - this.options.series[1].itemStyle = itemStyleRight; - },*/ + }, + series[1].label = { + normal: { + show: optionsSetup.isShow, + color: 'red', + position: 'insideRight', + textStyle: { + fontSize: optionsSetup.fontSize, + color: optionsSetup.subTextColor, + fontWeight: optionsSetup.fontWeight + } + }, + emphasis: { + show: false, + }, + }, + series[key].barWidth = optionsSetup.maxWidth; + } + } + this.options.series = series; + }, + // tooltip 提示语设置 + setOptionsTooltip() { + const optionsSetup = this.optionsSetup; + const tooltip = { + trigger: "item", + show: true, + textStyle: { + color: optionsSetup.lineColor, + fontSize: optionsSetup.fontSize + } + }; + this.options.tooltip = tooltip; + }, + // 边距设置 + getOptionsBottom() { + const optionsSetup = this.optionsSetup; + let bottom = optionsSetup.marginBottom; + if (optionsSetup.hideXLeft) { + bottom = optionsSetup.marginBottom + 15 + } else if (optionsSetup.hideXRight) { + bottom = optionsSetup.marginBottom + 15 + } + return bottom + }, + setOptionsGrid() { + const optionsSetup = this.optionsSetup; + const grid = [ + {//左 + show: optionsSetup.frameLineLeft, + left: optionsSetup.marginLeftRight, + top: optionsSetup.marginTop, + bottom: optionsSetup.marginBottom, + containLabel: true, + width: '40%' + }, + {//中间字体位置 + show: false, + left: "51%", + top: optionsSetup.marginTop, + bottom: this.getOptionsBottom(), + width: '0%' + }, + {//右 + show: optionsSetup.frameLineRight, + right: optionsSetup.marginLeftRight, + top: optionsSetup.marginTop, + bottom: optionsSetup.marginBottom, + containLabel: true, + width: '40%' + }, + ] + this.options.grid = grid; + }, + // 图例操作 + 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 optionsSetup = this.optionsSetup; + const customColor = optionsSetup.customColor; + if (!customColor) return; + const itemStyleLeft = { + normal: { + color: customColor[0].color, + barBorderRadius: [optionsSetup.radius, 0, 0, optionsSetup.radius] + }, + emphasis: { + show: false, + }, + } + const itemStyleRight = { + normal: { + color: customColor[1].color, + barBorderRadius: [0, optionsSetup.radius, optionsSetup.radius, 0] + }, + emphasis: { + show: false, + }, + } + this.options.series[0].itemStyle = itemStyleLeft; + this.options.series[1].itemStyle = itemStyleRight; + }, // 数据解析 setOptionsData() { const optionsSetup = this.optionsSetup; @@ -544,7 +579,6 @@ export default { data: data }) } - console.log(arrayList) this.options.series[0]['name'] = arrayList[0].name this.options.series[0]['data'] = arrayList[0].data this.options.series[1]['name'] = arrayList[1].name From 3d7c1067ec66856ab4faeacd5c66407d264e6267 Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 1 Sep 2021 10:35:45 +0800 Subject: [PATCH 20/27] =?UTF-8?q?=E6=B8=90=E5=8F=98=E8=89=B2=E6=9F=B1?= =?UTF-8?q?=E5=BD=A2=E5=9B=BEy=E8=BD=B4=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../componentsJSON/widget-gradient-barchart.js | 16 ++++++++++++---- .../widget/bar/widgetGradientColorBarchart.vue | 3 ++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js index c823e321..b32528a4 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js @@ -1,6 +1,6 @@ /* * @Descripttion: 柱状图渐变色 json - * @version: + * @version: * @Author: qianlishi * @Date: 2021-08-29 07:23:41 * @LastEditors: qianlishi @@ -298,10 +298,18 @@ export const widgetGradientBarchart = { placeholder: '', value: 0 }, + { + type: 'el-switch', + label: '缩放', + name: 'scale', + require: false, + placeholder: '', + value: false, + }, { type: 'el-input-number', - label: '文字间隔', - name: 'ytextInterval', + label: '均分', + name: 'splitNumber', required: false, placeholder: '', value: '' @@ -564,4 +572,4 @@ export const widgetGradientBarchart = { }, ], } - } \ No newline at end of file + } diff --git a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue index d1f38a2f..b3880e7b 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue @@ -241,12 +241,13 @@ export default { const optionsCollapse = this.optionsSetup; const yAxis = { type: "value", + scale : optionsCollapse.scale, + splitNumber: optionsCollapse.splitNumber,// 均分 show: optionsCollapse.isShowY, // 坐标轴是否显示 name: optionsCollapse.textNameY, // 坐标轴名称 inverse: optionsCollapse.reversalY, // 轴反转 axisLabel: { show: true, - interval: optionsCollapse.ytextInterval, // 文字间隔 rotate: optionsCollapse.ytextAngle, // 文字角度 textStyle: { color: optionsCollapse.colorY, // y轴 坐标文字颜色 From ff1a5b9d2cf6bb1bbbc7e30632532dfe280f45cf Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 1 Sep 2021 11:07:32 +0800 Subject: [PATCH 21/27] update --- .../tools/componentsJSON/widget-barchart.js | 130 +++++++++++------- .../widget-gradient-barchart.js | 74 +++++++--- .../bar/widgetGradientColorBarchart.vue | 8 ++ .../designer/widget/widgetBarchart.vue | 7 +- 4 files changed, 142 insertions(+), 77 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-barchart.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-barchart.js index 5ab96c14..da853d14 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-barchart.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-barchart.js @@ -1,6 +1,6 @@ /* * @Descripttion: 柱状图json - * @version: + * @version: * @Author: qianlishi * @Date: 2021-08-29 07:21:45 * @LastEditors: qianlishi @@ -173,14 +173,6 @@ export const widgetBarchart = { { name: 'X轴设置', list: [ - { - type: 'el-input-text', - label: '名称', - name: 'xName', - required: false, - placeholder: '', - value: '' - }, { type: 'el-switch', label: '显示', @@ -189,25 +181,49 @@ export const widgetBarchart = { placeholder: '', value: true, }, + { + type: 'el-input-text', + label: '坐标名', + name: 'xName', + required: false, + placeholder: '', + value: '' + }, { type: 'vue-color', label: '坐标名颜色', - name: 'xNameColor', + name: 'nameColorX', required: false, placeholder: '', value: '#fff' }, { type: 'el-input-number', - label: '字体大小', - name: 'xNameFontSize', + label: '坐标字号', + name: 'nameFontSizeX', required: false, placeholder: '', value: 12 }, + { + type: 'vue-color', + label: '数值颜色', + name: 'Xcolor', + required: false, + placeholder: '', + value: '#fff', + }, + { + type: 'el-input-number', + label: '数值字号', + name: 'fontSizeX', + required: false, + placeholder: '', + value: 12, + }, { type: 'el-slider', - label: '文字角度', + label: '数值角度', name: 'textAngle', required: false, placeholder: '', @@ -215,7 +231,7 @@ export const widgetBarchart = { }, { type: 'el-input-number', - label: '文字间隔', + label: '数值间隔', name: 'textInterval', required: false, placeholder: '', @@ -229,22 +245,6 @@ export const widgetBarchart = { placeholder: '', value: false }, - { - type: 'vue-color', - label: '颜色', - name: 'Xcolor', - required: false, - placeholder: '', - value: '#fff', - }, - { - type: 'el-input-number', - label: '字号', - name: 'fontSizeX', - required: false, - placeholder: '', - value: 12, - }, { type: 'vue-color', label: '轴颜色', @@ -275,14 +275,6 @@ export const widgetBarchart = { { name: 'Y轴设置', list: [ - { - type: 'el-input-text', - label: '名称', - name: 'textNameY', - require: false, - placeholder: '', - value: '' - }, { type: 'el-switch', label: '显示', @@ -291,33 +283,33 @@ export const widgetBarchart = { placeholder: '', value: true, }, + { + type: 'el-input-text', + label: '坐标名', + name: 'textNameY', + require: false, + placeholder: '', + value: '' + }, { type: 'vue-color', label: '坐标名颜色', - name: 'NameColorY', + name: 'nameColorY', required: false, placeholder: '', value: '#fff', }, { type: 'el-input-number', - label: '字体大小', - name: 'NameFontSizeY', - required: false, - placeholder: '', - value: 12, - }, - { - type: 'el-switch', - label: '轴反转', - name: 'reversalY', + label: '坐标字号', + name: 'nameFontSizeY', required: false, placeholder: '', - value: false + value: 14, }, { type: 'vue-color', - label: '颜色', + label: '数值颜色', name: 'colorY', required: false, placeholder: '', @@ -325,11 +317,43 @@ export const widgetBarchart = { }, { type: 'el-input-number', - label: '字号', + label: '数值字号', name: 'fontSizeY', required: false, placeholder: '', - value: 12, + value: 14, + }, + { + type: 'el-slider', + label: '数值角度', + name: 'ytextAngle', + required: false, + placeholder: '', + value: 0 + }, + { + type: 'el-switch', + label: '缩放', + name: 'scale', + require: false, + placeholder: '', + value: false, + }, + { + type: 'el-input-number', + label: '均分', + name: 'splitNumber', + required: false, + placeholder: '', + value: '' + }, + { + type: 'el-switch', + label: '轴反转', + name: 'reversalY', + required: false, + placeholder: '', + value: false }, { type: 'vue-color', diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js index b32528a4..91e588c4 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js @@ -173,41 +173,57 @@ export const widgetGradientBarchart = { { name: 'X轴设置', list: [ + { + type: 'el-switch', + label: '显示', + name: 'hideX', + required: false, + placeholder: '', + value: true, + }, { type: 'el-input-text', - label: '名称', + label: '坐标名', name: 'xName', required: false, placeholder: '', value: '' }, { - type: 'el-switch', - label: '显示', - name: 'hideX', + type: 'vue-color', + label: '坐标名颜色', + name: 'nameColorX', required: false, placeholder: '', - value: true, + value: '#fff', }, { type: 'el-input-number', - label: '字号', - name: 'fontSizeX', + label: '坐标字号', + name: 'nameFontSizeX', required: false, placeholder: '', - value: 12, + value: 14, }, { type: 'vue-color', - label: '颜色', + label: '数值颜色', name: 'Xcolor', required: false, placeholder: '', value: '#fff', }, + { + type: 'el-input-number', + label: '数值字号', + name: 'fontSizeX', + required: false, + placeholder: '', + value: 14, + }, { type: 'el-slider', - label: '文字角度', + label: '数值角度', name: 'textAngle', required: false, placeholder: '', @@ -215,7 +231,7 @@ export const widgetGradientBarchart = { }, { type: 'el-input-number', - label: '文字间隔', + label: '数值间隔', name: 'textInterval', required: false, placeholder: '', @@ -258,25 +274,40 @@ export const widgetGradientBarchart = { { name: 'Y轴设置', list: [ + { + type: 'el-switch', + label: '显示', + name: 'isShowY', + require: false, + placeholder: '', + value: true, + }, { type: 'el-input-text', - label: '名称', + label: '坐标名', name: 'textNameY', require: false, placeholder: '', value: '' + },{ + type: 'vue-color', + label: '坐标名颜色', + name: 'nameColorY', + required: false, + placeholder: '', + value: '#fff', }, { - type: 'el-switch', - label: '显示', - name: 'isShowY', - require: false, + type: 'el-input-number', + label: '坐标字号', + name: 'namefontSizeY', + required: false, placeholder: '', - value: true, + value: 14, }, { type: 'vue-color', - label: '颜色', + label: '数值颜色', name: 'colorY', required: false, placeholder: '', @@ -284,15 +315,15 @@ export const widgetGradientBarchart = { }, { type: 'el-input-number', - label: '字号', + label: '数值字号', name: 'fontSizeY', required: false, placeholder: '', - value: 12, + value: 14, }, { type: 'el-slider', - label: '文字角度', + label: '数值角度', name: 'ytextAngle', required: false, placeholder: '', @@ -344,7 +375,6 @@ export const widgetGradientBarchart = { required: false, placeholder: '', value: '#fff', - } ], }, diff --git a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue index b3880e7b..48cfd4ca 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue @@ -210,6 +210,10 @@ export default { type: "category", show: optionsCollapse.hideX, // 坐标轴是否显示 name: optionsCollapse.xName, // 坐标轴名称 + nameTextStyle: { + color: optionsCollapse.nameColorX, + fontSize: optionsCollapse.nameFontSizeX + }, nameRotate: optionsCollapse.textAngle, // 文字角度 inverse: optionsCollapse.reversalX, // 轴反转 axisLabel: { @@ -245,6 +249,10 @@ export default { splitNumber: optionsCollapse.splitNumber,// 均分 show: optionsCollapse.isShowY, // 坐标轴是否显示 name: optionsCollapse.textNameY, // 坐标轴名称 + nameTextStyle: { // 别名 + color: optionsCollapse.nameColorY, + fontSize: optionsCollapse.namefontSizeY + }, inverse: optionsCollapse.reversalY, // 轴反转 axisLabel: { show: true, diff --git a/report-ui/src/views/report/bigscreen/designer/widget/widgetBarchart.vue b/report-ui/src/views/report/bigscreen/designer/widget/widgetBarchart.vue index d364bb0f..e25cadcd 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/widgetBarchart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/widgetBarchart.vue @@ -165,15 +165,18 @@ export default { const optionsCollapse = this.optionsSetup; const yAxis = { type: "value", + scale : optionsCollapse.scale, + splitNumber: optionsCollapse.splitNumber,// 均分 show: optionsCollapse.isShowY, // 坐标轴是否显示 name: optionsCollapse.textNameY, // 坐标轴名称 nameTextStyle: { - color: optionsCollapse.NameColorY, - fontSize: optionsCollapse.NameFontSizeY + color: optionsCollapse.nameColorY, + fontSize: optionsCollapse.nameFontSizeY }, inverse: optionsCollapse.reversalY, // 轴反转 axisLabel: { show: true, + rotate: optionsCollapse.ytextAngle, // 文字角度 textStyle: { color: optionsCollapse.colorY, // x轴 坐标文字颜色 fontSize: optionsCollapse.fontSizeY From bfd85adbec61f227319025cd716c476dfc87baed Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 1 Sep 2021 13:04:11 +0800 Subject: [PATCH 22/27] =?UTF-8?q?=E6=97=B6=E9=97=B4=EF=BC=8C=E6=98=9F?= =?UTF-8?q?=E6=9C=9F=E6=98=BE=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/report/bigscreen/designer/widget/widgetTime.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/report-ui/src/views/report/bigscreen/designer/widget/widgetTime.vue b/report-ui/src/views/report/bigscreen/designer/widget/widgetTime.vue index 2bea618f..465fab36 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/widgetTime.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/widgetTime.vue @@ -103,7 +103,7 @@ export default { const dayCycleArray = ["日", "一", "二", "三", "四", "五", "六"]; for (let i = 0; i < 7; i++) { if (dayCycle == i) { - dayCycle = "星期" + dayCycleArray[i]; + dayCycle = " 星期" + dayCycleArray[i]; } } if (fmt == "year-week") { From a43f966c69f3f60b2cf5455e098871627691a266 Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 1 Sep 2021 13:45:53 +0800 Subject: [PATCH 23/27] update --- .../componentsJSON/widget-barlinechart.js | 165 +++++++++++------- .../widget-gradient-barchart.js | 3 +- .../tools/componentsJSON/widget-linechart.js | 147 +++++++++------- .../designer/widget/widgetBarlinechart.vue | 43 ++--- .../designer/widget/widgetLinechart.vue | 16 +- 5 files changed, 213 insertions(+), 161 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-barlinechart.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-barlinechart.js index a6275ed1..afaa2aaa 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-barlinechart.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-barlinechart.js @@ -1,6 +1,6 @@ /* * @Descripttion: 主线图 - * @version: + * @version: * @Author: qianlishi * @Date: 2021-08-29 07:26:48 * @LastEditors: qianlishi @@ -218,14 +218,6 @@ export const widgetBarlinechart = { { name: 'X轴设置', list: [ - { - type: 'el-input-text', - label: '名称', - name: 'xName', - required: false, - placeholder: '', - value: '' - }, { type: 'el-switch', label: '显示', @@ -234,61 +226,69 @@ export const widgetBarlinechart = { placeholder: '', value: true, }, + { + type: 'el-input-text', + label: '坐标名', + name: 'xName', + required: false, + placeholder: '', + value: '' + }, { type: 'vue-color', label: '坐标名颜色', - name: 'xNameColor', + name: 'nameColorX', required: false, placeholder: '', - value: '#fff' + value: '#fff', }, { type: 'el-input-number', - label: '字体大小', - name: 'xNameFontSize', + label: '坐标字号', + name: 'nameFontSizeX', required: false, placeholder: '', - value: 12 + value: 14, }, { - type: 'el-slider', - label: '文字角度', - name: 'textAngle', + type: 'vue-color', + label: '数值颜色', + name: 'Xcolor', required: false, placeholder: '', - value: 0 + value: '#fff', }, { type: 'el-input-number', - label: '文字间隔', - name: 'textInterval', + label: '数值字号', + name: 'fontSizeX', required: false, placeholder: '', - value: 0 + value: 14, }, { - type: 'el-switch', - label: '轴反转', - name: 'reversalX', + type: 'el-slider', + label: '数值角度', + name: 'textAngle', required: false, placeholder: '', value: 0 }, { - type: 'vue-color', - label: '颜色', - name: 'Xcolor', + type: 'el-input-number', + label: '数值间隔', + name: 'textInterval', required: false, placeholder: '', - value: '#fff', + value: '' }, { - type: 'el-input-number', - label: '字号', - name: 'fontSizeX', + type: 'el-switch', + label: '轴反转', + name: 'reversalX', required: false, placeholder: '', - value: 16, + value: false }, { type: 'vue-color', @@ -313,56 +313,95 @@ export const widgetBarlinechart = { required: false, placeholder: '', value: '#fff', - } ], }, { name: 'Y轴设置', list: [ + { + type: 'el-switch', + label: '左显示', + name: 'isShowYLeft', + require: false, + placeholder: '', + value: true, + }, { type: 'el-input-text', - label: '名称', - name: 'textNameY', + label: '左坐标名', + name: 'textNameYLeft', require: false, placeholder: '', value: '' }, + { + type: 'vue-color', + label: '左坐标名颜色', + name: 'nameColorYLeft', + required: false, + placeholder: '', + value: '#fff', + }, + { + type: 'el-input-number', + label: '左坐标字号', + name: 'namefontSizeYLeft', + required: false, + placeholder: '', + value: 14, + }, + { + type: 'el-input-number', + label: '左均分', + name: 'splitNumberLeft', + required: false, + placeholder: '', + value: '' + }, { type: 'el-switch', - label: '显示', - name: 'isShowY', + label: '右显示', + name: 'isShowYRight', require: false, placeholder: '', value: true, }, + { + type: 'el-input-text', + label: '右坐标名', + name: 'textNameYRight', + require: false, + placeholder: '', + value: '' + }, { type: 'vue-color', - label: '坐标名颜色', - name: 'NameColorY', + label: '右坐标名颜色', + name: 'nameColorYRight', required: false, placeholder: '', - value: '#fff' + value: '#fff', }, { type: 'el-input-number', - label: '字体大小', - name: 'NameFontSizeY', + label: '右坐标字号', + name: 'namefontSizeYRight', required: false, placeholder: '', - value: 12 + value: 14, }, { - type: 'el-switch', - label: '轴反转', - name: 'reversalY', + type: 'el-input-number', + label: '右均分', + name: 'splitNumberRight', required: false, placeholder: '', - value: 0 + value: '' }, { type: 'vue-color', - label: '颜色', + label: '数值颜色', name: 'colorY', required: false, placeholder: '', @@ -370,36 +409,28 @@ export const widgetBarlinechart = { }, { type: 'el-input-number', - label: '字号', + label: '数值字号', name: 'fontSizeY', required: false, placeholder: '', - value: 12, + value: 14, }, { - type: 'vue-color', - label: '轴颜色', - name: 'lineColorY', + type: 'el-switch', + label: '轴反转', + name: 'reversalY', required: false, placeholder: '', - value: '#fff', + value: false }, { - type: 'el-switch', - label: '分割线显示', - name: 'isShowSplitLineY', - require: false, - placeholder: '', - value: false, - }, { type: 'vue-color', - label: '分割线颜色', - name: 'splitLineColorY', + label: '轴颜色', + name: 'lineColorY', required: false, placeholder: '', value: '#fff', - - } + }, ], }, { @@ -538,7 +569,7 @@ export const widgetBarlinechart = { label: '', name: 'customColor', required: false, - value: [{color: '#00F4FFFF'}, {color: '#42fffd'}], + value: [{color: '#00F4FFFF'}, {color: '#e68b55'}], }, ], }, @@ -631,4 +662,4 @@ export const widgetBarlinechart = { }, ], } - } \ No newline at end of file + } diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js index 91e588c4..fb8855e6 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-gradient-barchart.js @@ -368,7 +368,8 @@ export const widgetGradientBarchart = { require: false, placeholder: '', value: false, - }, { + }, + { type: 'vue-color', label: '分割线颜色', name: 'splitLineColorY', diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-linechart.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-linechart.js index f0832bb8..c7e1dde2 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-linechart.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-linechart.js @@ -1,6 +1,6 @@ /* * @Descripttion: 折线图json - * @version: + * @version: * @Author: qianlishi * @Date: 2021-08-29 07:24:48 * @LastEditors: qianlishi @@ -109,7 +109,7 @@ export const widgetLinechart = { name: 'textColor', required: false, placeholder: '', - value: '##FFD700' + value: '#fff' }, { type: 'el-select', @@ -127,7 +127,7 @@ export const widgetLinechart = { }, { type: 'el-input-number', - label: '字体大小', + label: '字体字号', name: 'textFontSize', required: false, placeholder: '', @@ -178,7 +178,7 @@ export const widgetLinechart = { }, { type: 'el-input-number', - label: '字体大小', + label: '字体字号', name: 'subTextFontSize', required: false, placeholder: '', @@ -189,41 +189,57 @@ export const widgetLinechart = { { name: 'X轴设置', list: [ + { + type: 'el-switch', + label: '显示', + name: 'hideX', + required: false, + placeholder: '', + value: true, + }, { type: 'el-input-text', - label: '名称', + label: '坐标名', name: 'xName', required: false, placeholder: '', value: '' }, { - type: 'el-switch', - label: '显示', - name: 'hideX', + type: 'vue-color', + label: '坐标名颜色', + name: 'nameColorX', required: false, placeholder: '', - value: true, + value: '#fff', + }, + { + type: 'el-input-number', + label: '坐标字号', + name: 'nameFontSizeX', + required: false, + placeholder: '', + value: 14, }, { type: 'vue-color', - label: '坐标名颜色', - name: 'xNameColor', + label: '数值颜色', + name: 'Xcolor', required: false, placeholder: '', - value: '#fff' + value: '#fff', }, { type: 'el-input-number', - label: '字体大小', - name: 'xNameFontSize', + label: '数值字号', + name: 'fontSizeX', required: false, placeholder: '', - value: 12 + value: 14, }, { type: 'el-slider', - label: '文字角度', + label: '数值角度', name: 'textAngle', required: false, placeholder: '', @@ -231,11 +247,11 @@ export const widgetLinechart = { }, { type: 'el-input-number', - label: '文字间隔', + label: '数值间隔', name: 'textInterval', required: false, placeholder: '', - value: 0 + value: '' }, { type: 'el-switch', @@ -245,22 +261,6 @@ export const widgetLinechart = { placeholder: '', value: false }, - { - type: 'vue-color', - label: '颜色', - name: 'Xcolor', - required: false, - placeholder: '', - value: '#fff', - }, - { - type: 'el-input-text', - label: '字号', - name: 'fontSizeX', - required: false, - placeholder: '', - value: 12, - }, { type: 'vue-color', label: '轴颜色', @@ -284,21 +284,12 @@ export const widgetLinechart = { required: false, placeholder: '', value: '#fff', - } ], }, { name: 'Y轴设置', list: [ - { - type: 'el-input-text', - label: '名称', - name: 'textNameY', - require: false, - placeholder: '', - value: '' - }, { type: 'el-switch', label: '显示', @@ -308,44 +299,76 @@ export const widgetLinechart = { value: true, }, { - type: 'vue-color', - label: '坐标名颜色', - name: 'NameColorY', - required: false, + type: 'el-input-text', + label: '坐标名', + name: 'textNameY', + require: false, placeholder: '', - value: '#fff' + value: '' }, { - type: 'el-input-text', - label: '字体大小', - name: 'NameFontSizeY', + type: 'vue-color', + label: '坐标名颜色', + name: 'nameColorY', required: false, placeholder: '', - value: 12 + value: '#fff', }, { - type: 'el-switch', - label: '轴反转', - name: 'reversalY', + type: 'el-input-number', + label: '坐标字号', + name: 'namefontSizeY', required: false, placeholder: '', - value: false + value: 14, }, { type: 'vue-color', - label: '颜色', + label: '数值颜色', name: 'colorY', required: false, placeholder: '', value: '#fff', }, { - type: 'el-input-text', - label: '字号', + type: 'el-input-number', + label: '数值字号', name: 'fontSizeY', required: false, placeholder: '', - value: 12, + value: 14, + }, + { + type: 'el-slider', + label: '数值角度', + name: 'ytextAngle', + required: false, + placeholder: '', + value: 0 + }, + { + type: 'el-switch', + label: '缩放', + name: 'scale', + require: false, + placeholder: '', + value: false, + }, + { + type: 'el-input-number', + label: '均分', + name: 'splitNumber', + required: false, + placeholder: '', + value: '' + }, + { + type: 'el-switch', + label: '轴反转', + name: 'reversalY', + required: false, + placeholder: '', + value: false }, { type: 'vue-color', @@ -362,14 +385,14 @@ export const widgetLinechart = { require: false, placeholder: '', value: false, - }, { + }, + { type: 'vue-color', label: '分割线颜色', name: 'splitLineColorY', required: false, placeholder: '', value: '#fff', - } ], }, diff --git a/report-ui/src/views/report/bigscreen/designer/widget/widgetBarlinechart.vue b/report-ui/src/views/report/bigscreen/designer/widget/widgetBarlinechart.vue index 7c05f35d..38ea4f25 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/widgetBarlinechart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/widgetBarlinechart.vue @@ -171,14 +171,14 @@ export default { show: optionsCollapse.hideX, // 坐标轴是否显示 name: optionsCollapse.xName, // 坐标轴名称 nameTextStyle: { - color: optionsCollapse.xNameColor, - fontSize: optionsCollapse.xNameFontSize + color: optionsCollapse.nameColorX, + fontSize: optionsCollapse.nameFontSizeX }, nameRotate: optionsCollapse.textAngle, // 文字角度 inverse: optionsCollapse.reversalX, // 轴反转 axisLabel: { show: true, - interval: optionsCollapse.textInterval, // 文字角度 + interval: optionsCollapse.textInterval, // 文字间隔 rotate: optionsCollapse.textAngle, // 文字角度 textStyle: { color: optionsCollapse.Xcolor, // x轴 坐标文字颜色 @@ -206,46 +206,45 @@ export default { const yAxis = [ { type: "value", - show: optionsCollapse.isShowY, // 坐标轴是否显示 - name: optionsCollapse.textNameY, // 坐标轴名称 - nameTextStyle: { - color: optionsCollapse.NameColorY, - fontSize: optionsCollapse.NameFontSizeY + splitNumber: optionsCollapse.splitNumberLeft,// 均分 + show: optionsCollapse.isShowYLeft, // 坐标轴是否显示 + name: optionsCollapse.textNameYLeft, // 坐标轴名称 + nameTextStyle: { // 别名 + color: optionsCollapse.nameColorYLeft, + fontSize: optionsCollapse.namefontSizeYLeft }, inverse: optionsCollapse.reversalY, // 轴反转 axisLabel: { show: true, textStyle: { - color: optionsCollapse.colorY, // x轴 坐标文字颜色 + color: optionsCollapse.colorY, // y轴 坐标文字颜色 fontSize: optionsCollapse.fontSizeY } }, axisLine: { show: true, lineStyle: { - color: "#fff" + color: optionsCollapse.lineColorY } }, splitLine: { - show: optionsCollapse.isShowSplitLineY, - lineStyle: { - color: optionsCollapse.splitLineColorY - } + show: false, } }, { type: "value", - show: optionsCollapse.isShowY, // 坐标轴是否显示 - name: optionsCollapse.textNameY, // 坐标轴名称 - nameTextStyle: { - color: optionsCollapse.NameColorY, - fontSize: optionsCollapse.NameFontSizeY + splitNumber: optionsCollapse.splitNumberRight,// 均分 + show: optionsCollapse.isShowYRight, // 坐标轴是否显示 + name: optionsCollapse.textNameYRight, // 坐标轴名称 + nameTextStyle: { // 别名 + color: optionsCollapse.nameColorYRight, + fontSize: optionsCollapse.namefontSizeYRight }, inverse: optionsCollapse.reversalY, // 轴反转 axisLabel: { show: true, textStyle: { - color: optionsCollapse.colorY, // x轴 坐标文字颜色 + color: optionsCollapse.colorY, // y轴 坐标文字颜色 fontSize: optionsCollapse.fontSizeY } }, @@ -257,13 +256,9 @@ export default { }, splitLine: { show: false, - lineStyle: { - color: optionsCollapse.splitLineColorY - } } } ]; - this.options.yAxis = yAxis; }, // 折线设置 diff --git a/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue b/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue index 955fa859..9b87050b 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue @@ -136,14 +136,14 @@ export default { show: optionsCollapse.hideX, // 坐标轴是否显示 name: optionsCollapse.xName, // 坐标轴名称 nameTextStyle: { - color: optionsCollapse.xNameColor, - fontSize: optionsCollapse.xNameFontSize + color: optionsCollapse.nameColorX, + fontSize: optionsCollapse.nameFontSizeX }, nameRotate: optionsCollapse.textAngle, // 文字角度 inverse: optionsCollapse.reversalX, // 轴反转 axisLabel: { show: true, - interval: optionsCollapse.textInterval, // 文字角度 + interval: optionsCollapse.textInterval, // 文字间隔 rotate: optionsCollapse.textAngle, // 文字角度 textStyle: { color: optionsCollapse.Xcolor, // x轴 坐标文字颜色 @@ -170,15 +170,18 @@ export default { const optionsCollapse = this.optionsSetup; const yAxis = { type: "value", + scale : optionsCollapse.scale, + splitNumber: optionsCollapse.splitNumber,// 均分 show: optionsCollapse.isShowY, // 坐标轴是否显示 name: optionsCollapse.textNameY, // 坐标轴名称 - nameTextStyle: { - color: optionsCollapse.NameColorY, - fontSize: optionsCollapse.NameFontSizeY + nameTextStyle: { // 别名 + color: optionsCollapse.nameColorY, + fontSize: optionsCollapse.namefontSizeY }, inverse: optionsCollapse.reversalY, // 轴反转 axisLabel: { show: true, + rotate: optionsCollapse.ytextAngle, // 文字角度 textStyle: { color: optionsCollapse.colorY, // y轴 坐标文字颜色 fontSize: optionsCollapse.fontSizeY @@ -197,7 +200,6 @@ export default { } } }; - this.options.yAxis = yAxis; }, // 折线设置 From e8a86fe6496241d36356d346f772a949c9a69812 Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 1 Sep 2021 14:55:12 +0800 Subject: [PATCH 24/27] =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=9B=BE=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/componentsJSON/widget-bar-stack.js | 6 +- .../componentsJSON/widget-line-compare.js | 203 +++++++++++++----- .../widget/line/widgetLineCompareChart.vue | 172 ++++++++------- 3 files changed, 249 insertions(+), 132 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-bar-stack.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-bar-stack.js index 2e2cd339..0f123c57 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-bar-stack.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-bar-stack.js @@ -1,6 +1,6 @@ /* * @Descripttion: 柱状堆叠图 - * @version: + * @version: * @Author: qianlishi * @Date: 2021-08-29 07:37:09 * @LastEditors: qianlishi @@ -350,7 +350,8 @@ export const widgetBarStack = { required: false, placeholder: '', value: '#fff', - }, { + }, + { type: 'el-switch', label: '分割线显示', name: 'isShowSplitLineY', @@ -364,7 +365,6 @@ export const widgetBarStack = { required: false, placeholder: '', value: '#fff', - } ], }, diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js index d42af828..7c68b7da 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js @@ -160,13 +160,29 @@ export const widgetLineCompare = { value: true, }, { - type: 'el-input-number', - label: '数值间隔', - name: 'splitNumberX', + type: 'el-input-text', + label: '坐标名', + name: 'xName', required: false, placeholder: '', value: '' }, + { + type: 'vue-color', + label: '坐标名颜色', + name: 'nameColorX', + required: false, + placeholder: '', + value: '#fff', + }, + { + type: 'el-input-number', + label: '坐标字号', + name: 'nameFontSizeX', + required: false, + placeholder: '', + value: 14, + }, { type: 'el-switch', label: '数值居中', @@ -191,6 +207,14 @@ export const widgetLineCompare = { placeholder: '', value: 14, }, + { + type: 'el-input-number', + label: '数值间隔', + name: 'splitNumberX', + required: false, + placeholder: '', + value: '' + }, { type: 'el-switch', label: '刻度线', @@ -228,9 +252,40 @@ export const widgetLineCompare = { placeholder: '', value: true, }, + { + type: 'el-input-text', + label: '坐标名', + name: 'textNameYTop', + require: false, + placeholder: '', + value: '' + },{ + type: 'vue-color', + label: '坐标名颜色', + name: 'nameColorYTop', + required: false, + placeholder: '', + value: '#fff', + }, { type: 'el-input-number', - label: '数值间隔', + label: '坐标字号', + name: 'namefontSizeYTop', + required: false, + placeholder: '', + value: 14, + }, + { + type: 'el-switch', + label: '缩放', + name: 'scaleYTop', + required: false, + placeholder: '', + value: true, + }, + { + type: 'el-input-number', + label: '数值切分', name: 'splitNumberYTop', required: false, placeholder: '', @@ -239,7 +294,7 @@ export const widgetLineCompare = { { type: 'vue-color', label: '数值颜色', - name: 'XcolorRight', + name: 'colorYTop', required: false, placeholder: '', value: '#fff', @@ -247,7 +302,7 @@ export const widgetLineCompare = { { type: 'el-input-number', label: '数值字号', - name: 'fontSizeXRight', + name: 'fontSizeYTop', required: false, placeholder: '', value: 14, @@ -255,31 +310,31 @@ export const widgetLineCompare = { { type: 'el-switch', label: '刻度线', - name: 'tickLineRight', + name: 'tickLineYTop', require: false, placeholder: '', - value: false, + value: true, }, { type: 'el-switch', - label: 'X轴线', - name: 'xLineRight', + label: 'y轴线', + name: 'lineYTop', require: false, placeholder: '', - value: false, + value: true, }, { type: 'vue-color', label: '轴颜色', - name: 'lineColorXRight', + name: 'lineColorYTop', required: false, placeholder: '', value: '#fff', }, { type: 'el-switch', - label: '竖分割线', - name: 'SplitLineRight', + label: '分割线', + name: 'splitLineYTop', require: false, placeholder: '', value: false, @@ -287,7 +342,7 @@ export const widgetLineCompare = { { type: 'vue-color', label: '分割线颜色', - name: 'SplitLineColorRight', + name: 'splitLineColorYTop', required: false, placeholder: '', value: '#fff', @@ -295,85 +350,127 @@ export const widgetLineCompare = { { type: 'el-input-number', label: '分割线宽度', - name: 'SplitLinefontSizeRight', + name: 'splitLinefontSizeYTop', required: false, placeholder: '', value: 1, }, - { - type: 'el-switch', - label: '边框线', - name: 'frameLineRight', - require: false, - placeholder: '', - value: false, - }, ], }, { - name: '下Y轴设置', + name: '下y轴设置', list: [ { type: 'el-switch', label: '显示', - name: 'hideY', + name: 'isShowYBottom', required: false, placeholder: '', value: true, }, { + type: 'el-input-text', + label: '坐标名', + name: 'textNameYBottom', + require: false, + placeholder: '', + value: '' + },{ type: 'vue-color', - label: '数值颜色', - name: 'colorY', + label: '坐标名颜色', + name: 'nameColorYBottom', required: false, placeholder: '', value: '#fff', }, { type: 'el-input-number', - label: '数值字号', - name: 'fontSizeY', + label: '坐标字号', + name: 'namefontSizeYBottom', required: false, placeholder: '', value: 14, }, { - type: 'el-select', - label: '数值对齐', - name: 'textAlign', + type: 'el-switch', + label: '缩放', + name: 'scaleYBottom', required: false, placeholder: '', - selectOptions: [ - {code: 'center', name: '居中'}, - {code: 'left', name: '左对齐'}, - {code: 'right', name: '右对齐'}, - ], - value: 'center' + value: true, + }, + { + type: 'el-input-number', + label: '数值切分', + name: 'splitNumberYBottom', + required: false, + placeholder: '', + value: '' + }, + { + type: 'vue-color', + label: '数值颜色', + name: 'colorYBottom', + required: false, + placeholder: '', + value: '#fff', + }, + { + type: 'el-input-number', + label: '数值字号', + name: 'fontSizeYBottom', + required: false, + placeholder: '', + value: 14, }, { type: 'el-switch', label: '刻度线', - name: 'tickLineY', + name: 'tickLineYBottom', require: false, placeholder: '', - value: false, + value: true, }, { type: 'el-switch', - label: 'Y轴线', - name: 'lineY', + label: 'y轴线', + name: 'lineYBottom', require: false, placeholder: '', - value: false, + value: true, }, { type: 'vue-color', label: '轴颜色', - name: 'lineColorY', + name: 'lineColorYBottom', + required: false, + placeholder: '', + value: '#fff', + }, + { + type: 'el-switch', + label: '分割线', + name: 'splitLineYBottom', + require: false, + placeholder: '', + value: false, + }, + { + type: 'vue-color', + label: '分割线颜色', + name: 'splitLineColorYBottom', required: false, placeholder: '', value: '#fff', }, + { + type: 'el-input-number', + label: '分割线宽度', + name: 'splitLinefontSizeYBottom', + required: false, + placeholder: '', + value: 1, + }, ], }, { @@ -444,11 +541,19 @@ export const widgetLineCompare = { list: [ { type: 'el-slider', - label: '左右边距(像素)', - name: 'marginLeftRight', + label: '左边距(像素)', + name: 'marginLeft', required: false, placeholder: '', - value: 10, + value: 20, + }, + { + type: 'el-slider', + label: '右边距(像素)', + name: 'marginRight', + required: false, + placeholder: '', + value: 50, }, { type: 'el-slider', @@ -464,7 +569,7 @@ export const widgetLineCompare = { name: 'marginBottom', required: false, placeholder: '', - value: 10, + value: 40, }, ], }, diff --git a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue index 00912883..8dece481 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue @@ -265,11 +265,11 @@ export default { editorOptions() { this.setOptionsTitle(); this.setOptionsX(); - // this.setOptionsXRight(); - // this.setOptionsY(); + this.setOptionsYTop(); + this.setOptionsYBottom(); // this.setOptionsTop(); // this.setOptionsTooltip(); - // this.setOptionsGrid(); + this.setOptionsGrid(); // this.setOptionsLegend(); // this.setOptionsColor(); this.setOptionsData(); @@ -294,6 +294,11 @@ export default { const xAxis0 = { gridIndex: 0, show: optionsSetup.isShowX, + name: optionsSetup.xName, // 坐标轴名称 + nameTextStyle: { + color: optionsSetup.nameColorX, + fontSize: optionsSetup.nameFontSizeX + }, type: 'category', boundaryGap: optionsSetup.boundaryX, // 值居中 axisLine: { //x轴线 @@ -337,64 +342,90 @@ export default { this.options.xAxis[0] = xAxis0; this.options.xAxis[1] = xAxis1; }, - // 右X轴设置 - setOptionsXRight() { + // 上y轴设置 + setOptionsYTop() { const optionsSetup = this.optionsSetup; - const xAxisRight = { - gridIndex: 2, - splitNumber: optionsSetup.splitNumberRight, - type: 'value', - axisLine: {//X轴线 - show: optionsSetup.xLineRight, - lineStyle: { - color: optionsSetup.lineColorXRight, + const yAxis = { + gridIndex: 0, + splitNumber: optionsSetup.splitNumberYTop, + show: optionsSetup.isShowYTop, + scale: optionsSetup.scaleYTop, // 缩放 + name: optionsSetup.textNameYTop, // 坐标轴名称 + nameTextStyle: { + color: optionsSetup.nameColorYTop, + fontSize: optionsSetup.namefontSizeYTop + }, + axisLabel: { + show: true, + textStyle: { + color: optionsSetup.colorYTop, + fontSize: optionsSetup.fontSizeYTop, }, }, - axisTick: { - show: optionsSetup.tickLineRight, + axisTick: { // 刻度 + show: optionsSetup.tickLineYTop, }, - position: 'bottom', - axisLabel: { // x轴 - show: optionsSetup.hideXRight, - textStyle: { - color: optionsSetup.XcolorRight, - fontSize: optionsSetup.fontSizeXRight - } + axisLine: { // 轴线 + show: optionsSetup.lineYTop, + lineStyle: { + color: optionsSetup.lineColorYTop, + }, }, - splitLine: { // 分割线 - show: optionsSetup.SplitLineRight, + splitLine: { + show: optionsSetup.splitLineYTop, lineStyle: { - color: optionsSetup.SplitLineColorRight, - width: optionsSetup.SplitLinefontSizeRight, - type: 'solid' - } - } + width: optionsSetup.splitLinefontSizeYTop, + color: optionsSetup.splitLineColorYTop, + }, + }, + axisPointer: { + snap: true + }, } - this.options.xAxis[2] = xAxisRight; + this.options.yAxis[0] = yAxis }, - // Y轴设置 - setOptionsY() { + // 下Y轴设置 + setOptionsYBottom() { const optionsSetup = this.optionsSetup; - const axisLine = { - show: optionsSetup.lineY, - lineStyle: { - color: optionsSetup.lineColorY - } - }; - const axisTick = { - show: optionsSetup.tickLineY - }; - const axisLabel = { - show: optionsSetup.hideY, - textStyle: { - align: optionsSetup.textAlign, - color: optionsSetup.colorY, - fontSize: optionsSetup.fontSizeY, - } - }; - this.options.yAxis[1]['axisLine'] = axisLine; - this.options.yAxis[1]['axisTick'] = axisTick; - this.options.yAxis[1]['axisLabel'] = axisLabel; + const yAxis = { + gridIndex: 1, + splitNumber: optionsSetup.splitNumberYBottom, + show: optionsSetup.isShowYBottom, + scale: optionsSetup.scaleYBottom, // 缩放 + name: optionsSetup.textNameYBottom, // 坐标轴名称 + nameTextStyle: { + color: optionsSetup.nameColorYBottom, + fontSize: optionsSetup.namefontSizeYBottom + }, + inverse: true, // 翻转 + axisLabel: { + show: true, + textStyle: { + color: optionsSetup.colorYBottom, + fontSize: optionsSetup.fontSizeYBottom, + }, + }, + axisTick: { // 刻度 + show: optionsSetup.tickLineYBottom, + }, + axisLine: { // 轴线 + show: optionsSetup.lineYBottom, + lineStyle: { + color: optionsSetup.lineColorYBottom, + }, + }, + splitLine: { + show: optionsSetup.splitLineYBottom, + lineStyle: { + width: optionsSetup.splitLinefontSizeYBottom, + color: optionsSetup.splitLineColorYBottom, + }, + }, + axisPointer: { + snap: true + }, + } + this.options.yAxis[1] = yAxis }, // 数值设定、柱体设置 setOptionsTop() { @@ -450,41 +481,22 @@ export default { this.options.tooltip = tooltip; }, // 边距设置 - getOptionsBottom() { - const optionsSetup = this.optionsSetup; - let bottom = optionsSetup.marginBottom; - if (optionsSetup.hideXLeft) { - bottom = optionsSetup.marginBottom + 15 - } else if (optionsSetup.hideXRight) { - bottom = optionsSetup.marginBottom + 15 - } - return bottom - }, setOptionsGrid() { const optionsSetup = this.optionsSetup; const grid = [ - {//左 - show: optionsSetup.frameLineLeft, - left: optionsSetup.marginLeftRight, + {// 上 + left: optionsSetup.marginLeft, + right: optionsSetup.marginRight, top: optionsSetup.marginTop, - bottom: optionsSetup.marginBottom, containLabel: true, - width: '40%' + bottom: '50%', }, - {//中间字体位置 - show: false, - left: "51%", - top: optionsSetup.marginTop, - bottom: this.getOptionsBottom(), - width: '0%' - }, - {//右 - show: optionsSetup.frameLineRight, - right: optionsSetup.marginLeftRight, - top: optionsSetup.marginTop, - bottom: optionsSetup.marginBottom, + { // 下 + left: optionsSetup.marginLeft, + right: optionsSetup.marginRight, containLabel: true, - width: '40%' + top: '51%', + bottom: optionsSetup.marginBottom, }, ] this.options.grid = grid; From dd07f598c6c03e3adddc119e2f5fc04898393fa5 Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 1 Sep 2021 17:01:59 +0800 Subject: [PATCH 25/27] update --- .../componentsJSON/widget-line-compare.js | 34 ++-- .../tools/componentsJSON/widget-line-stack.js | 6 +- .../widget/line/widgetLineCompareChart.vue | 162 ++++++++++-------- .../widget/line/widgetLineStackChart.vue | 1 - .../designer/widget/widgetLinechart.vue | 1 - 5 files changed, 118 insertions(+), 86 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js index 7c68b7da..32fe15c4 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js @@ -48,7 +48,7 @@ export const widgetLineCompare = { name: 'pointSize', required: false, placeholder: '', - value: 10, + value: 5, }, { type: 'el-switch', @@ -80,7 +80,7 @@ export const widgetLineCompare = { name: 'lineWidth', required: false, placeholder: '', - value: 4, + value: 2, }, ], }, @@ -281,7 +281,7 @@ export const widgetLineCompare = { name: 'scaleYTop', required: false, placeholder: '', - value: true, + value: false, }, { type: 'el-input-number', @@ -397,7 +397,7 @@ export const widgetLineCompare = { name: 'scaleYBottom', required: false, placeholder: '', - value: true, + value: false, }, { type: 'el-input-number', @@ -520,19 +520,31 @@ export const widgetLineCompare = { name: '提示语设置', list: [ { - type: 'el-input-number', - label: '字体大小', - name: 'tipsFontSize', + type: 'el-switch', + label: '显示', + name: 'tipShow', required: false, placeholder: '', - value: 16 + value: true, }, { - type: 'vue-color', - label: '字体颜色', - name: 'lineColor', + type: 'el-select', + label: '类型', + name: 'tipType', required: false, placeholder: '', + selectOptions: [ + {code: 'line', name: '线形'}, + {code: 'cross', name: '十字形'}, + ], + value: 'line' + }, + { + type: 'vue-color', + label: '颜色', + name: 'tipColor', + required: false, + placeholder: '#e68b55', }, ], }, diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-stack.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-stack.js index af05a399..d6b01a7c 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-stack.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-stack.js @@ -1,6 +1,6 @@ /* * @Descripttion: 折线堆叠图 json - * @version: + * @version: * @Author: qianlishi * @Date: 2021-08-29 07:38:17 * @LastEditors: qianlishi @@ -56,7 +56,7 @@ export const widgetLineStack = { name: 'pointSize', required: false, placeholder: '', - value: 10, + value: 5, }, { type: 'el-switch', @@ -669,4 +669,4 @@ export const widgetLineStack = { }, ], } - } \ No newline at end of file + } diff --git a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue index 8dece481..f6cf808e 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue @@ -33,18 +33,18 @@ export default { axisPointer: { type: 'line', lineStyle: { - color: 'ffffff', + color: '#ffffff', type: 'dashed', }, }, /*axisPointer: { type: 'cross', lineStyle: { - color: 'ffffff', + color: '#ffffff', type: 'dashed', }, crossStyle: { - color: 'ffffff', + color: '#ffffff', } },*/ }, @@ -182,6 +182,9 @@ export default { type: 'line', xAxisIndex: 0, yAxisIndex: 0, + showSymbol: true,// 标记点 + symbol: 'circle', + symbolSize: 5, smooth: true, // 曲线,折线 itemStyle: { color: '#36c5e7', @@ -190,7 +193,7 @@ export default { color: '#36c5e7', width: 2, }, - label: { + label: { // 数值 position: 'top', distance: 10, show: true, @@ -204,6 +207,9 @@ export default { type: 'line', xAxisIndex: 1, yAxisIndex: 1, + showSymbol: true,// 标记点 + symbol: 'circle', + symbolSize: 5, smooth: true, // 曲线,折线 itemStyle: { color: '#e68b55', @@ -212,7 +218,7 @@ export default { color: '#e68b55', width: 2, }, - label: { + label: {// 数值 position: 'bottom', distance: 10, show: true, @@ -267,11 +273,11 @@ export default { this.setOptionsX(); this.setOptionsYTop(); this.setOptionsYBottom(); - // this.setOptionsTop(); - // this.setOptionsTooltip(); + this.setOptionsTop(); + this.setOptionsTooltip(); this.setOptionsGrid(); - // this.setOptionsLegend(); - // this.setOptionsColor(); + this.setOptionsLegend(); + this.setOptionsColor(); this.setOptionsData(); }, // 标题修改 @@ -427,57 +433,77 @@ export default { } this.options.yAxis[1] = yAxis }, - // 数值设定、柱体设置 + // 数值设定 折线设置 setOptionsTop() { const optionsSetup = this.optionsSetup; - const series = this.options.series; + const series = this.options.series + // 折线 for (const key in series) { - if (series[key].type == "bar") { - series[0].label = { - normal: { - show: optionsSetup.isShow, - position: 'insideLeft', - textStyle: { - fontSize: optionsSetup.fontSize, - color: optionsSetup.subTextColor, - fontWeight: optionsSetup.fontWeight - } - }, - emphasis: { - show: false, - }, - }, - series[1].label = { - normal: { - show: optionsSetup.isShow, - color: 'red', - position: 'insideRight', - textStyle: { - fontSize: optionsSetup.fontSize, - color: optionsSetup.subTextColor, - fontWeight: optionsSetup.fontWeight - } - }, - emphasis: { - show: false, - }, - }, - series[key].barWidth = optionsSetup.maxWidth; + series[key].showSymbol = optionsSetup.markPoint + series[key].symbolSize = optionsSetup.pointSize + series[key].smooth = optionsSetup.smoothCurve + if (optionsSetup.area) { + series[key].areaStyle = { + opacity: optionsSetup.areaThickness / 100 + } + } else { + series[key].areaStyle = { + opacity: 0 + } + } + } + // 数值 + if (series[0].type == 'line') { + series[0].label = { + position: 'top', + distance: 10, + show: optionsSetup.isShow, + color: optionsSetup.subTextColor, + fontSize: optionsSetup.fontSize, + fontWeight: optionsSetup.fontWeight + } + series[1].label = { + position: 'bottom', + distance: 10, + show: optionsSetup.isShow, + color: optionsSetup.subTextColor, + fontSize: optionsSetup.fontSize, + fontWeight: optionsSetup.fontWeight } } - this.options.series = series; }, // tooltip 提示语设置 setOptionsTooltip() { const optionsSetup = this.optionsSetup; - const tooltip = { - trigger: "item", - show: true, - textStyle: { - color: optionsSetup.lineColor, - fontSize: optionsSetup.fontSize + let tooltip = {} + if (optionsSetup.tipType == "line") { + tooltip = { + show: optionsSetup.tipShow, + trigger: 'axis', + axisPointer: { + type: optionsSetup.tipType, + lineStyle: { + color: optionsSetup.tipColor, + type: 'dashed', + }, + }, } - }; + } else { + tooltip = { + show: optionsSetup.tipShow, + trigger: 'axis', + axisPointer: { + type: optionsSetup.tipType, + lineStyle: { + color: optionsSetup.tipColor, + type: 'dashed', + }, + crossStyle: { + color: optionsSetup.tipColor, + } + }, + } + } this.options.tooltip = tooltip; }, // 边距设置 @@ -517,31 +543,27 @@ export default { }; legend.itemWidth = optionsSetup.lengedWidth; }, - // 颜色修改、圆角修改 + // 颜色修改、宽度修改 setOptionsColor() { const optionsSetup = this.optionsSetup; const customColor = optionsSetup.customColor; - if (!customColor) return; - const itemStyleLeft = { - normal: { - color: customColor[0].color, - barBorderRadius: [optionsSetup.radius, 0, 0, optionsSetup.radius] - }, - emphasis: { - show: false, - }, + const series = this.options.series + const arrColor = []; + for (let i = 0; i < customColor.length; i++) { + arrColor.push(customColor[i].color); } - const itemStyleRight = { - normal: { - color: customColor[1].color, - barBorderRadius: [0, optionsSetup.radius, optionsSetup.radius, 0] - }, - emphasis: { - show: false, - }, + if (!customColor) return; + for (const key in series) { + const itemStyle = { + color: arrColor[key], + } + const lineStyle = { + color: arrColor[key], + width: optionsSetup.lineWidth, + } + this.options.series[key].itemStyle = itemStyle + this.options.series[key].lineStyle = lineStyle } - this.options.series[0].itemStyle = itemStyleLeft; - this.options.series[1].itemStyle = itemStyleRight; }, // 数据解析 setOptionsData() { diff --git a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineStackChart.vue b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineStackChart.vue index aa8f15fb..6bd25b74 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineStackChart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineStackChart.vue @@ -319,7 +319,6 @@ export default { symbol: 'circle', showSymbol: optionsSetup.markPoint, symbolSize: optionsSetup.pointSize, - symbolColor: arrColor[i], smooth: optionsSetup.smoothCurve, // 线条 lineStyle: { diff --git a/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue b/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue index 9b87050b..615d97c3 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/widgetLinechart.vue @@ -277,7 +277,6 @@ export default { fontSize: optionsCollapse.fontSize }; legend.itemWidth = optionsCollapse.lengedWidth; - console.log(legend); }, // 图例颜色修改 setOptionsColor() { From cb301a60fbb5d21df1f069bb7b3418a290749458 Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 1 Sep 2021 17:12:10 +0800 Subject: [PATCH 26/27] =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=9B=BE=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/componentsJSON/widget-line-compare.js | 16 ++++++++-------- .../widget/line/widgetLineCompareChart.vue | 5 +++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js index 32fe15c4..5526b1b1 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js @@ -197,7 +197,7 @@ export const widgetLineCompare = { name: 'colorX', required: false, placeholder: '', - value: '#fff', + value: '#36c5e7', }, { type: 'el-input-number', @@ -237,7 +237,7 @@ export const widgetLineCompare = { name: 'lineColorX', required: false, placeholder: '', - value: '#fff', + value: '#36c5e7', }, ], }, @@ -265,7 +265,7 @@ export const widgetLineCompare = { name: 'nameColorYTop', required: false, placeholder: '', - value: '#fff', + value: '#36c5e7', }, { type: 'el-input-number', @@ -297,7 +297,7 @@ export const widgetLineCompare = { name: 'colorYTop', required: false, placeholder: '', - value: '#fff', + value: '#36c5e7', }, { type: 'el-input-number', @@ -329,7 +329,7 @@ export const widgetLineCompare = { name: 'lineColorYTop', required: false, placeholder: '', - value: '#fff', + value: '#36c5e7', }, { type: 'el-switch', @@ -381,7 +381,7 @@ export const widgetLineCompare = { name: 'nameColorYBottom', required: false, placeholder: '', - value: '#fff', + value: '#e68b55', }, { type: 'el-input-number', @@ -413,7 +413,7 @@ export const widgetLineCompare = { name: 'colorYBottom', required: false, placeholder: '', - value: '#fff', + value: '#e68b55', }, { type: 'el-input-number', @@ -445,7 +445,7 @@ export const widgetLineCompare = { name: 'lineColorYBottom', required: false, placeholder: '', - value: '#fff', + value: '#e68b55', }, { type: 'el-switch', diff --git a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue index f6cf808e..3d157b6a 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/line/widgetLineCompareChart.vue @@ -639,8 +639,9 @@ export default { }); }, renderingFn(optionsSetup, val) { - this.options.yAxis[1]['data'] = val.xAxis - if (val.series[0].type == "bar") { + this.options.xAxis[0]['data'] = val.xAxis + this.options.xAxis[1]['data'] = val.xAxis + if (val.series[0].type == "line") { this.options.series[0]['name'] = val.series[0].name this.options.series[0]['data'] = val.series[0].data this.options.series[1]['name'] = val.series[1].name From dd8aed6bc0c29de18c71861901d411b2a2f72d64 Mon Sep 17 00:00:00 2001 From: qianming Date: Wed, 1 Sep 2021 17:33:02 +0800 Subject: [PATCH 27/27] update --- doc/docs/guide/dashboard.md | 16 ++++++++++------ doc/docs/picture/dashboard/img_19.png | Bin 0 -> 34575 bytes doc/docs/picture/dashboard/img_20.png | Bin 0 -> 8927 bytes .../tools/componentsJSON/widget-line-compare.js | 16 ++++++++-------- 4 files changed, 18 insertions(+), 14 deletions(-) create mode 100644 doc/docs/picture/dashboard/img_19.png create mode 100644 doc/docs/picture/dashboard/img_20.png diff --git a/doc/docs/guide/dashboard.md b/doc/docs/guide/dashboard.md index fe54e683..8ecaed72 100644 --- a/doc/docs/guide/dashboard.md +++ b/doc/docs/guide/dashboard.md @@ -81,16 +81,20 @@ 气泡地图动态数据集,和饼图一样,对应字典值需要选择一个“Name”、“Value”,且name的字段值要和echarts图表里面的值能对应上,可参考静态数据
![img15](../picture/dashboard/img_15.png)
- ### 百分百图 数据集只能有一个字段,且字典选择“文本数字”
![img16](../picture/dashboard/img_16.png)
**如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues)
** -### 散点图 -**规划中**
- ### 对比图 -柱状对比图数据集需要3个字段,其中一个作为对比的字段只能为2种值,只有2种值作为对比的字段要选择“y轴字段”字典。因为底层的解析用的是堆叠图的解析,这里的y轴字段并不是指的图表上面的y轴,还请注意,有强迫症可以自行修改源码的解析,剩下的2个字段对应字典看图
-![img18](../picture/dashboard/img_18.png) +柱状对比图:
+数据集需要3个字段,其中一个作为对比的字段只能为2种值,只有2种值作为对比的字段要选择“y轴字段”字典。因为底层的解析用的是堆叠图的解析,这里的y轴字段并不是指的图表上面的y轴,还请注意,有强迫症可以自行修改源码的解析,剩下的2个字段对应字典看图
+![img18](../picture/dashboard/img_18.png)
+**如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues)
** + +折线对比图:
+数据集需要3个字段,其中一个作为对比的字段只能为2种值,只有2种值作为对比的字段要选择“y轴字段”字典,剩下的字典对应看图
+![img19](../picture/dashboard/img_19.png)
+**注**:如果提示语设置选择“十字形”,请注意需要选择 “X轴颜色、上Y轴颜色、下Y轴颜色”,不然预览图表鼠标选择是全白色,还请注意。
+![img20](../picture/dashboard/img_20.png) **如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues)
** diff --git a/doc/docs/picture/dashboard/img_19.png b/doc/docs/picture/dashboard/img_19.png new file mode 100644 index 0000000000000000000000000000000000000000..e3881010a4504b00681b4712b86030151d74ad93 GIT binary patch literal 34575 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 literal 0 HcmV?d00001 diff --git a/doc/docs/picture/dashboard/img_20.png b/doc/docs/picture/dashboard/img_20.png new file mode 100644 index 0000000000000000000000000000000000000000..698e5f6f9bec4b9a3a81e9d05d25ac3bf7d345a3 GIT binary patch literal 8927 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 literal 0 HcmV?d00001 diff --git a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js index 5526b1b1..32fe15c4 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js +++ b/report-ui/src/views/report/bigscreen/designer/tools/componentsJSON/widget-line-compare.js @@ -197,7 +197,7 @@ export const widgetLineCompare = { name: 'colorX', required: false, placeholder: '', - value: '#36c5e7', + value: '#fff', }, { type: 'el-input-number', @@ -237,7 +237,7 @@ export const widgetLineCompare = { name: 'lineColorX', required: false, placeholder: '', - value: '#36c5e7', + value: '#fff', }, ], }, @@ -265,7 +265,7 @@ export const widgetLineCompare = { name: 'nameColorYTop', required: false, placeholder: '', - value: '#36c5e7', + value: '#fff', }, { type: 'el-input-number', @@ -297,7 +297,7 @@ export const widgetLineCompare = { name: 'colorYTop', required: false, placeholder: '', - value: '#36c5e7', + value: '#fff', }, { type: 'el-input-number', @@ -329,7 +329,7 @@ export const widgetLineCompare = { name: 'lineColorYTop', required: false, placeholder: '', - value: '#36c5e7', + value: '#fff', }, { type: 'el-switch', @@ -381,7 +381,7 @@ export const widgetLineCompare = { name: 'nameColorYBottom', required: false, placeholder: '', - value: '#e68b55', + value: '#fff', }, { type: 'el-input-number', @@ -413,7 +413,7 @@ export const widgetLineCompare = { name: 'colorYBottom', required: false, placeholder: '', - value: '#e68b55', + value: '#fff', }, { type: 'el-input-number', @@ -445,7 +445,7 @@ export const widgetLineCompare = { name: 'lineColorYBottom', required: false, placeholder: '', - value: '#e68b55', + value: '#fff', }, { type: 'el-switch',