Commit e5b811c366024a2e57f26a7ae694ebaed454979f
Committed by
xp.Huang
1 parent
3fd1f6ee
fix(src/packages/components/Charts): 修复柱状和折线图,鼠标移入提示框里数据重复显示
Showing
3 changed files
with
25 additions
and
11 deletions
@@ -45,11 +45,12 @@ export const lineSeriesItem = { | @@ -45,11 +45,12 @@ export const lineSeriesItem = { | ||
45 | 45 | ||
46 | export const option = { | 46 | export const option = { |
47 | tooltip: { | 47 | tooltip: { |
48 | - show: true, | ||
49 | trigger: 'axis', | 48 | trigger: 'axis', |
50 | axisPointer: { | 49 | axisPointer: { |
51 | - show: true, | ||
52 | - type: 'shadow' | 50 | + type: 'cross', |
51 | + crossStyle: { | ||
52 | + color: '#999' | ||
53 | + } | ||
53 | } | 54 | } |
54 | }, | 55 | }, |
55 | legend: { | 56 | legend: { |
@@ -62,17 +62,30 @@ const option = computed(() => { | @@ -62,17 +62,30 @@ const option = computed(() => { | ||
62 | // dataset 无法变更条数的补丁 | 62 | // dataset 无法变更条数的补丁 |
63 | watch( | 63 | watch( |
64 | () => props.chartConfig.option.dataset, | 64 | () => props.chartConfig.option.dataset, |
65 | - (newData: { dimensions: any }, oldData) => { | 65 | + (newData: any, oldData) => { |
66 | try { | 66 | try { |
67 | if (!isObject(newData) || !('dimensions' in newData)) return | 67 | if (!isObject(newData) || !('dimensions' in newData)) return |
68 | - if (Array.isArray(newData?.dimensions)) { | ||
69 | - const seriesArr = [] | ||
70 | - for (let i = 0; i < newData.dimensions.length - 1; i++) { | ||
71 | - seriesArr.push(cloneDeep(barSeriesItem),cloneDeep(lineSeriesItem)) | 68 | + if (Array.isArray((newData as any)?.dimensions)) { |
69 | + const seriesArr: typeof barSeriesItem[] = [] | ||
70 | + // 对oldData进行判断,防止传入错误数据之后对旧维度判断产生干扰 | ||
71 | + // 此处计算的是dimensions的Y轴维度,若是dimensions.length为0或1,则默认为1,排除X轴维度干扰 | ||
72 | + const oldDimensions = | ||
73 | + Array.isArray(oldData?.dimensions) && oldData.dimensions.length >= 1 ? oldData.dimensions.length : 1 | ||
74 | + const newDimensions = (newData as any).dimensions.length >= 1 ? (newData as any).dimensions.length : 1 | ||
75 | + const dimensionsGap = newDimensions - oldDimensions | ||
76 | + if (dimensionsGap < 0) { | ||
77 | + props.chartConfig.option.series.splice(newDimensions - 1) | ||
78 | + } else if (dimensionsGap > 0) { | ||
79 | + if (!oldData || !oldData?.dimensions || !Array.isArray(oldData?.dimensions) || !oldData?.dimensions.length) { | ||
80 | + props.chartConfig.option.series = [] | ||
81 | + } | ||
82 | + for (let i = 0; i < dimensionsGap; i++) { | ||
83 | + seriesArr.push(cloneDeep(barSeriesItem)) | ||
84 | + } | ||
85 | + props.chartConfig.option.series.push(...seriesArr) | ||
72 | } | 86 | } |
73 | - useEchartsMapLegend(props.chartConfig, seriesArr) | 87 | + useEchartsMapLegend(props.chartConfig, props.chartConfig.option.series) |
74 | replaceMergeArr.value = ['series'] | 88 | replaceMergeArr.value = ['series'] |
75 | - props.chartConfig.option.series = seriesArr | ||
76 | nextTick(() => { | 89 | nextTick(() => { |
77 | replaceMergeArr.value = [] | 90 | replaceMergeArr.value = [] |
78 | }) | 91 | }) |
1 | <template> | 1 | <template> |
2 | - <collapse-item name="数据源(option配置里的内容)" :expanded="true"> | 2 | + <collapse-item name="数据源(option配置里的内容,注意去除末尾分号)" :expanded="true"> |
3 | <monaco-editor v-model:modelValue="optionData.dataset" width="400px" height="480px" language="json" /> | 3 | <monaco-editor v-model:modelValue="optionData.dataset" width="400px" height="480px" language="json" /> |
4 | </collapse-item> | 4 | </collapse-item> |
5 | </template> | 5 | </template> |