From 623a2806a3643dcbb4755c178098b0414977f3c9 Mon Sep 17 00:00:00 2001 From: wisonic-s Date: Wed, 24 May 2023 18:20:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=A7=86=E5=9B=BE-=E5=9C=B0=E5=9B=BE):=20?= =?UTF-8?q?ECharts=20=E5=9C=B0=E5=9B=BE=E6=94=AF=E6=8C=81=E7=A9=BA?= =?UTF-8?q?=E5=80=BC=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://www.tapd.cn/55578866/prong/stories/view/1155578866001011957 --- frontend/src/views/chart/chart/map/map.js | 27 ++++++++++++++++--- .../chart/components/senior/FunctionCfg.vue | 7 ++--- frontend/src/views/chart/view/ChartEdit.vue | 4 +-- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/frontend/src/views/chart/chart/map/map.js b/frontend/src/views/chart/chart/map/map.js index 380c491eb0..4355229fb5 100644 --- a/frontend/src/views/chart/chart/map/map.js +++ b/frontend/src/views/chart/chart/map/map.js @@ -2,6 +2,7 @@ import { componentStyle } from '../common/common' import { BASE_ECHARTS_SELECT, DEFAULT_TOOLTIP } from '@/views/chart/chart/chart' import { isGradientValue } from '@/components/gradientColorSelector/base' +import _ from 'lodash' const linearCOlor = (start, end) => { return { type: 'linear', @@ -146,20 +147,38 @@ export function baseMapOption(chart_option, chart, themeStyle, curAreaCode, seri } } + let senior = chart.senior + if (senior) { + senior = JSON.parse(senior) + } + // 空值处理,echarts 对于值为 null 的默认策略是不展示,也就是保持为空,所以只需要处理忽略数据和置为 0 就行 + // 隐藏和不展示的区别是隐藏不会参与颜色分布的计算,而不展示会参与颜色计算 + let emptyDataStrategy = senior?.functionCfg?.emptyDataStrategy + if (!emptyDataStrategy) { + emptyDataStrategy = 'breakLine' + } for (let i = 0; i < valueArr.length; i++) { const y = valueArr[i] + if (y.value === null && emptyDataStrategy === 'ignoreData') { + continue + } y.name = chart.data.x[i] + if (y.value === null && emptyDataStrategy === 'setZero') { + const tmp = _.clone(y) + tmp.value = 0 + chart_option.series[0].data.push(tmp) + continue + } chart_option.series[0].data.push(y) } + if (isGradient) { chart_option.series[0].data = fillGradientColor(chart_option.series[0].data, customAttr.color.colors) delete chart_option.visualMap } - if (chart.senior) { - const senior = JSON.parse(chart.senior) - - senior && senior.mapMapping && senior.mapMapping[curAreaCode] && (chart_option.geo.nameMap = senior.mapMapping[curAreaCode]) + if (senior) { + senior.mapMapping && senior.mapMapping[curAreaCode] && (chart_option.geo.nameMap = senior.mapMapping[curAreaCode]) } if (chart.data?.detailFields?.length > 1) { diff --git a/frontend/src/views/chart/components/senior/FunctionCfg.vue b/frontend/src/views/chart/components/senior/FunctionCfg.vue index 6d03b31860..d026f3018d 100644 --- a/frontend/src/views/chart/components/senior/FunctionCfg.vue +++ b/frontend/src/views/chart/components/senior/FunctionCfg.vue @@ -90,7 +90,7 @@