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

View File

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