refactor(chart): 优化饼图数据处理和样式

- 改进饼图数据处理逻辑,提高数据准确性和可读性
- 调整饼图图例样式,增加矩形图标和统一字体大小
This commit is contained in:
Huangzhe
2025-05-25 20:36:24 +08:00
parent 56d34b0778
commit b6d97e3e39
2 changed files with 26 additions and 19 deletions

View File

@@ -13,19 +13,26 @@ const option = {
trigger: 'item', trigger: 'item',
formatter: (p) => { formatter: (p) => {
switch (p.data.questionItem.question_type) { switch (p.data.questionItem.question_type) {
case 1: case 1:
case 2: case 2:
return `${p.data.name}: ${p.data.value} ${p.data.answerRate ? '(' + p.data.answerRate + ')' : ''}`; return `${p.data.name}: ${p.data.value} ${p.data.answerRate ? `(${p.data.answerRate})` : ''}`;
case 10: case 10:
case 9: case 9:
return `${p.data.name}: ${p.data.value} ${p.data.answerRate ? '(' + p.data.answerRate + ')' : ''}`; return `${p.data.name}: ${p.data.value} ${p.data.answerRate ? `(${p.data.answerRate})` : ''}`;
case 5: case 5:
case 106: case 106:
return `${p.data.avg ? '平均值<br>' : ''} ${p.data.name}: ${p.data.value}`; return `${p.data.avg ? '平均值<br>' : ''} ${p.data.name}: ${p.data.value}`;
} }
} }
}, },
legend: { legend: {
icon: 'rect',
itemWidth: 14,
itemHeight: 14,
// itemGap: 10,
textStyle: {
fontSize: 11
},
// orient: 'horizontal', // orient: 'horizontal',
bottom: 'top' bottom: 'top'
}, },

View File

@@ -36,13 +36,13 @@ export function formatData(data: any, index: number) {
}); });
} }
if ( if (
data.question_type === 5 || data.question_type === 5
data.question_type === 9 || || data.question_type === 9
data.question_type === 106 || || data.question_type === 106
data.question_type === 10 || data.question_type === 10
) { ) {
const copyData = setDimensionData(data); const copyData = setDimensionData(data);
_series.data = copyData[index ? index : 0]?.map((item) => { _series.data = copyData[index || 0]?.map((item) => {
return { return {
...item, ...item,
questionItem: { ...data } questionItem: { ...data }
@@ -55,7 +55,7 @@ export function formatData(data: any, index: number) {
} }
export function getTableData(data: any) { export function getTableData(data: any) {
let analysis = JSON.parse(JSON.stringify(data)); const analysis = JSON.parse(JSON.stringify(data));
const rows = analysis.option || []; const rows = analysis.option || [];
return rows.map((rowItem: any) => { return rows.map((rowItem: any) => {
const rowData = { const rowData = {
@@ -75,12 +75,12 @@ export function getTableData(data: any) {
}); });
} }
export function setDimensionData(data) { export function setDimensionData(data: any) {
const { option } = data; const { option } = data;
return option.map((item: any) => { return option.map((item: any) => {
let array = []; const array = [];
for (let keys in item) { for (const keys in item) {
let obj = {}; const obj = {};
if (keys !== 'option' && keys !== 'avg' && item[keys] != 0) { if (keys !== 'option' && keys !== 'avg' && item[keys] != 0) {
obj.name = data.head.find((head: any) => head.key === keys)?.title; obj.name = data.head.find((head: any) => head.key === keys)?.title;