|
@@ -27,7 +27,7 @@ export function getScoreBarOptions(dataObj) {
|
|
|
{
|
|
|
type: "bar",
|
|
|
data: dataObj.map((item) => item.studentCount),
|
|
|
- barWidth: 16,
|
|
|
+ barWidth: 12,
|
|
|
},
|
|
|
];
|
|
|
|
|
@@ -36,10 +36,10 @@ export function getScoreBarOptions(dataObj) {
|
|
|
textStyle: textStyle,
|
|
|
color: colors,
|
|
|
grid: {
|
|
|
- left: 50,
|
|
|
- top: 40,
|
|
|
- bottom: 50,
|
|
|
- right: 50,
|
|
|
+ left: 40,
|
|
|
+ top: 20,
|
|
|
+ bottom: 30,
|
|
|
+ right: 40,
|
|
|
show: true,
|
|
|
borderColor: "rgba(230,230,230,1)",
|
|
|
},
|
|
@@ -63,7 +63,7 @@ export function getScoreBarOptions(dataObj) {
|
|
|
},
|
|
|
},
|
|
|
axisLabel: {
|
|
|
- fontSize: 18,
|
|
|
+ fontSize: 14,
|
|
|
},
|
|
|
},
|
|
|
],
|
|
@@ -88,8 +88,8 @@ export function getScoreBarOptions(dataObj) {
|
|
|
},
|
|
|
},
|
|
|
axisLabel: {
|
|
|
- fontSize: 17,
|
|
|
- margin: 20,
|
|
|
+ fontSize: 14,
|
|
|
+ margin: 10,
|
|
|
formatter: function (value) {
|
|
|
let str = value.split("#");
|
|
|
if (str[0].length > 10) str[0] = str[0].substr(0, 10) + "...";
|
|
@@ -116,14 +116,14 @@ export function getBarsOptions(dataObj) {
|
|
|
itemWidth: 14,
|
|
|
bottom: 10,
|
|
|
textStyle: {
|
|
|
- fontSize: 16,
|
|
|
+ fontSize: 14,
|
|
|
},
|
|
|
},
|
|
|
grid: {
|
|
|
- top: 30,
|
|
|
- bottom: 90,
|
|
|
- left: 50,
|
|
|
- right: 50,
|
|
|
+ top: 15,
|
|
|
+ bottom: 70,
|
|
|
+ left: 40,
|
|
|
+ right: 40,
|
|
|
show: true,
|
|
|
borderColor: "rgba(230,230,230,1)",
|
|
|
},
|
|
@@ -147,7 +147,7 @@ export function getBarsOptions(dataObj) {
|
|
|
},
|
|
|
axisLabel: {
|
|
|
fontSize: 14,
|
|
|
- margin: 8,
|
|
|
+ margin: 10,
|
|
|
interval: 0,
|
|
|
formatter: function (value) {
|
|
|
if (value.length > 6) {
|
|
@@ -191,19 +191,19 @@ export function getBarsOptions(dataObj) {
|
|
|
type: "bar",
|
|
|
data: avgDatas,
|
|
|
name: "平均分",
|
|
|
- barWidth: 16,
|
|
|
+ barWidth: 12,
|
|
|
},
|
|
|
{
|
|
|
type: "bar",
|
|
|
data: maxDatas,
|
|
|
name: "最高分",
|
|
|
- barWidth: 16,
|
|
|
+ barWidth: 12,
|
|
|
},
|
|
|
{
|
|
|
type: "bar",
|
|
|
data: minDatas,
|
|
|
name: "最低分",
|
|
|
- barWidth: 16,
|
|
|
+ barWidth: 12,
|
|
|
},
|
|
|
],
|
|
|
};
|
|
@@ -261,17 +261,17 @@ export function getBarPointTopicOptions(dataObj) {
|
|
|
data: legendData,
|
|
|
itemGap: 30,
|
|
|
itemWidth: 14,
|
|
|
- bottom: 20,
|
|
|
+ bottom: 10,
|
|
|
textStyle: {
|
|
|
- fontSize: 19,
|
|
|
+ fontSize: 14,
|
|
|
},
|
|
|
},
|
|
|
grid: [
|
|
|
{
|
|
|
left: "20%",
|
|
|
- top: 40,
|
|
|
+ top: 30,
|
|
|
width: "66%",
|
|
|
- bottom: 90,
|
|
|
+ bottom: 70,
|
|
|
show: true,
|
|
|
borderColor: "rgba(230,230,230,1)",
|
|
|
},
|
|
@@ -298,7 +298,7 @@ export function getBarPointTopicOptions(dataObj) {
|
|
|
},
|
|
|
},
|
|
|
axisLabel: {
|
|
|
- fontSize: 18,
|
|
|
+ fontSize: 14,
|
|
|
formatter: function (value, index) {
|
|
|
if (!index) return "0";
|
|
|
return value.toFixed(2);
|
|
@@ -326,7 +326,7 @@ export function getBarPointTopicOptions(dataObj) {
|
|
|
},
|
|
|
},
|
|
|
axisLabel: {
|
|
|
- fontSize: 18,
|
|
|
+ fontSize: 14,
|
|
|
formatter: function (value, index) {
|
|
|
if (!index) return "0";
|
|
|
return parseInt(value * 100) + "%";
|
|
@@ -361,8 +361,8 @@ export function getBarPointTopicOptions(dataObj) {
|
|
|
},
|
|
|
},
|
|
|
axisLabel: {
|
|
|
- fontSize: 17,
|
|
|
- margin: 20,
|
|
|
+ fontSize: 14,
|
|
|
+ margin: 10,
|
|
|
formatter: function (value) {
|
|
|
let str = value.split("#");
|
|
|
if (str[0].length > 10) str[0] = str[0].substr(0, 10) + "...";
|
|
@@ -404,7 +404,7 @@ export function getBarTeachersOptions(datas) {
|
|
|
item.avgScore,
|
|
|
// item.relativeAvgScore,
|
|
|
],
|
|
|
- barWidth: 16,
|
|
|
+ barWidth: 12,
|
|
|
name: item.name,
|
|
|
};
|
|
|
});
|
|
@@ -420,15 +420,15 @@ export function getBarTeachersOptions(datas) {
|
|
|
itemGap: 20,
|
|
|
itemWidth: 14,
|
|
|
textStyle: {
|
|
|
- fontSize: 19,
|
|
|
+ fontSize: 14,
|
|
|
},
|
|
|
},
|
|
|
grid: {
|
|
|
show: true,
|
|
|
- top: 30,
|
|
|
- bottom: 90,
|
|
|
- left: 50,
|
|
|
- right: 50,
|
|
|
+ top: 15,
|
|
|
+ bottom: 70,
|
|
|
+ left: 40,
|
|
|
+ right: 40,
|
|
|
borderColor: "rgba(230,230,230,1)",
|
|
|
},
|
|
|
xAxis: {
|
|
@@ -450,8 +450,8 @@ export function getBarTeachersOptions(datas) {
|
|
|
},
|
|
|
},
|
|
|
axisLabel: {
|
|
|
- fontSize: 18,
|
|
|
- margin: 12,
|
|
|
+ fontSize: 14,
|
|
|
+ margin: 10,
|
|
|
interval: 0,
|
|
|
},
|
|
|
},
|
|
@@ -473,470 +473,10 @@ export function getBarTeachersOptions(datas) {
|
|
|
},
|
|
|
},
|
|
|
axisLabel: {
|
|
|
- fontSize: 16,
|
|
|
+ fontSize: 14,
|
|
|
color: "#555",
|
|
|
},
|
|
|
},
|
|
|
series: series,
|
|
|
};
|
|
|
}
|
|
|
-
|
|
|
-// other
|
|
|
-export function getBarPointGradeOptions(dataObj) {
|
|
|
- let datas = dataObj.datas;
|
|
|
- let xAxisTopMax = dataObj.xAxisTopMax;
|
|
|
-
|
|
|
- let yAxisLabels = datas.map(function (item) {
|
|
|
- return item.name;
|
|
|
- });
|
|
|
- let avgDatas = datas.map(function (item) {
|
|
|
- return item.avgScore;
|
|
|
- });
|
|
|
- let maxDatas = datas.map(function (item) {
|
|
|
- return item.maxScore;
|
|
|
- });
|
|
|
- let minDatas = datas.map(function (item) {
|
|
|
- return item.minScore;
|
|
|
- });
|
|
|
- let passRateDatas = datas.map(function (item) {
|
|
|
- return Math.round(item.passRate * 100);
|
|
|
- });
|
|
|
- let excellentRateDatas = datas.map(function (item) {
|
|
|
- return Math.round(item.excellentRate * 100);
|
|
|
- });
|
|
|
-
|
|
|
- return {
|
|
|
- animation: animationIsOpen,
|
|
|
- textStyle: textStyle,
|
|
|
- legend: {
|
|
|
- data: ["平均分", "最高分", "最低分", "及格率", "优秀率"],
|
|
|
- itemGap: 30,
|
|
|
- itemWidth: 14,
|
|
|
- bottom: 20,
|
|
|
- textStyle: {
|
|
|
- fontSize: 19,
|
|
|
- },
|
|
|
- },
|
|
|
- grid: [
|
|
|
- {
|
|
|
- left: "20%",
|
|
|
- top: 120,
|
|
|
- width: "66%",
|
|
|
- bottom: 100,
|
|
|
- show: true,
|
|
|
- borderColor: "rgba(230,230,230,1)",
|
|
|
- },
|
|
|
- ],
|
|
|
- xAxis: [
|
|
|
- {
|
|
|
- type: "value",
|
|
|
- position: "top",
|
|
|
- min: 0,
|
|
|
- max: xAxisTopMax,
|
|
|
- interval: xAxisTopMax / 10,
|
|
|
- axisTick: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- axisLine: {
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- fontSize: 18,
|
|
|
- color: "#555",
|
|
|
- formatter: function (value, index) {
|
|
|
- if (!index) return "0";
|
|
|
- return value;
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "value",
|
|
|
- min: 0,
|
|
|
- max: 100,
|
|
|
- interval: 10,
|
|
|
- position: "bottom",
|
|
|
- axisTick: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- axisLine: {
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- fontSize: 18,
|
|
|
- color: "#555",
|
|
|
- formatter: function (value, index) {
|
|
|
- if (!index) return "0";
|
|
|
- return value + "%";
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- yAxis: [
|
|
|
- {
|
|
|
- type: "category",
|
|
|
- gridIndex: 0,
|
|
|
- data: yAxisLabels,
|
|
|
- inverse: true,
|
|
|
- axisTick: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- splitArea: {
|
|
|
- show: true,
|
|
|
- areaStyle: {
|
|
|
- color: ["rgba(250,250,250,1)", "rgba(255,255,255,1)"],
|
|
|
- },
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- fontSize: 19,
|
|
|
- margin: 30,
|
|
|
- formatter: function (value) {
|
|
|
- if (value.length > 8) {
|
|
|
- return [value.substring(0, 8), value.substring(8)].join("\n");
|
|
|
- }
|
|
|
- return value;
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- series: [
|
|
|
- {
|
|
|
- type: "bar",
|
|
|
- data: avgDatas,
|
|
|
- barWidth: 6,
|
|
|
- barGap: "50%",
|
|
|
- name: "平均分",
|
|
|
- xAxisIndex: 0,
|
|
|
- itemStyle: {
|
|
|
- color: "rgba(61, 160, 255, 0.8)",
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "bar",
|
|
|
- data: maxDatas,
|
|
|
- barWidth: 6,
|
|
|
- barGap: "50%",
|
|
|
- name: "最高分",
|
|
|
- xAxisIndex: 0,
|
|
|
- itemStyle: {
|
|
|
- color: "rgba(151, 94, 229, 0.8)",
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "bar",
|
|
|
- data: minDatas,
|
|
|
- barWidth: 6,
|
|
|
- barGap: "50%",
|
|
|
- name: "最低分",
|
|
|
- xAxisIndex: 0,
|
|
|
- itemStyle: {
|
|
|
- color: "rgba(217, 217, 217, 0.8)",
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "line",
|
|
|
- data: passRateDatas,
|
|
|
- symbol: "circle",
|
|
|
- symbolSize: 8,
|
|
|
- name: "及格率",
|
|
|
- xAxisIndex: 1,
|
|
|
- itemStyle: {
|
|
|
- color: "rgba(67, 80, 136, 0.8)",
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "line",
|
|
|
- data: excellentRateDatas,
|
|
|
- symbol: "circle",
|
|
|
- symbolSize: 8,
|
|
|
- name: "优秀率",
|
|
|
- xAxisIndex: 1,
|
|
|
- itemStyle: {
|
|
|
- color: "rgba(250, 212, 68, 0.8)",
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- };
|
|
|
-}
|
|
|
-
|
|
|
-export function getBarTeacherGradeOptions(datas) {
|
|
|
- let title = datas.name + "_任课班级成绩分析";
|
|
|
- let symbolCircle =
|
|
|
- "path://M16,9.2c-3.8,0-6.8,3.1-6.8,6.8s3.1,6.8,6.8,6.8s6.8-3.1,6.8-6.8S19.8,9.2,16,9.2z M29.7,16 c0,7.6-6.1,13.7-13.7,13.7S2.3,23.6,2.3,16S8.4,2.3,16,2.3S29.7,8.4,29.7,16z";
|
|
|
- let classes = datas.classes;
|
|
|
- let xAxisData = classes.map(function (item) {
|
|
|
- return item.name;
|
|
|
- });
|
|
|
- let avgDatas = classes.map(function (item) {
|
|
|
- return item.avgScore;
|
|
|
- });
|
|
|
- let relateAvgDatas = classes.map(function (item) {
|
|
|
- return item.relativeAvgScore;
|
|
|
- });
|
|
|
- let maxDatas = classes.map(function (item) {
|
|
|
- return item.maxScore;
|
|
|
- });
|
|
|
- let minDatas = classes.map(function (item) {
|
|
|
- return item.minScore;
|
|
|
- });
|
|
|
- let passRateDatas = classes.map(function (item) {
|
|
|
- return item.passRate;
|
|
|
- });
|
|
|
- let excellentRateDatas = classes.map(function (item) {
|
|
|
- return item.excellentRate;
|
|
|
- });
|
|
|
-
|
|
|
- return {
|
|
|
- animation: animationIsOpen,
|
|
|
- textStyle: textStyle,
|
|
|
- color: [
|
|
|
- "rgba(61, 160, 255, 0.8)",
|
|
|
- "#4bcb74",
|
|
|
- "rgba(151, 94, 229, 0.8)",
|
|
|
- "#999999",
|
|
|
- "rgba(67, 80, 136, 0.8)",
|
|
|
- "rgba(250, 212, 68, 0.8)",
|
|
|
- ],
|
|
|
- title: {
|
|
|
- text: "▲ " + title,
|
|
|
- left: "center",
|
|
|
- bottom: 0,
|
|
|
- textStyle: {
|
|
|
- color: "rgba(67, 80, 136, 0.8)",
|
|
|
- },
|
|
|
- },
|
|
|
- grid: {
|
|
|
- top: 50,
|
|
|
- bottom: 90,
|
|
|
- show: true,
|
|
|
- borderColor: "rgba(230,230,230,1)",
|
|
|
- },
|
|
|
- xAxis: {
|
|
|
- type: "category",
|
|
|
- data: xAxisData,
|
|
|
- axisTick: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- splitArea: {
|
|
|
- show: true,
|
|
|
- areaStyle: {
|
|
|
- color: ["rgba(255,255,255,1)", "rgba(250,250,250,1)"],
|
|
|
- },
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- fontSize: 16,
|
|
|
- margin: 12,
|
|
|
- interval: 0,
|
|
|
- formatter: function (value) {
|
|
|
- if (value.length > 6) {
|
|
|
- return [value.substring(0, 6), value.substring(6)].join("\n");
|
|
|
- }
|
|
|
- return value;
|
|
|
- },
|
|
|
- },
|
|
|
- axisLine: {
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- yAxis: [
|
|
|
- {
|
|
|
- type: "value",
|
|
|
- z: 1,
|
|
|
- position: "left",
|
|
|
- axisTick: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- axisLine: {
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- fontSize: 16,
|
|
|
- color: "#555",
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "value",
|
|
|
- min: 0,
|
|
|
- max: 1,
|
|
|
- position: "right",
|
|
|
- axisTick: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- axisLine: {
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- fontSize: 16,
|
|
|
- color: "#555",
|
|
|
- formatter: function (value) {
|
|
|
- if (!value) return "0";
|
|
|
- return value.toFixed(1);
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- series: [
|
|
|
- {
|
|
|
- type: "bar",
|
|
|
- data: avgDatas,
|
|
|
- name: "平均分",
|
|
|
- barWidth: 12,
|
|
|
- },
|
|
|
- {
|
|
|
- type: "bar",
|
|
|
- data: relateAvgDatas,
|
|
|
- name: "相对平均分",
|
|
|
- barWidth: 12,
|
|
|
- },
|
|
|
- {
|
|
|
- type: "bar",
|
|
|
- data: maxDatas,
|
|
|
- name: "最高分",
|
|
|
- barWidth: 12,
|
|
|
- },
|
|
|
- {
|
|
|
- type: "bar",
|
|
|
- data: minDatas,
|
|
|
- name: "最低分",
|
|
|
- barWidth: 12,
|
|
|
- },
|
|
|
- {
|
|
|
- type: "scatter",
|
|
|
- data: passRateDatas,
|
|
|
- yAxisIndex: 1,
|
|
|
- symbol: symbolCircle,
|
|
|
- symbolSize: 10,
|
|
|
- name: "及格率",
|
|
|
- },
|
|
|
- {
|
|
|
- type: "scatter",
|
|
|
- data: excellentRateDatas,
|
|
|
- yAxisIndex: 1,
|
|
|
- symbol: symbolCircle,
|
|
|
- symbolSize: 10,
|
|
|
- name: "优秀率",
|
|
|
- },
|
|
|
- ],
|
|
|
- };
|
|
|
-}
|
|
|
-
|
|
|
-export function getLineSmoothOptions(datainfo) {
|
|
|
- let lineColors = colors.slice(0, -1);
|
|
|
- let datas = datainfo.dataList;
|
|
|
- let lineColor = lineColors[datainfo.index % colors.length];
|
|
|
- let xAxisData = datas.map(function (item) {
|
|
|
- return item.score;
|
|
|
- });
|
|
|
- let levelDatas = datas.map(function (item) {
|
|
|
- return item.rangeRate;
|
|
|
- });
|
|
|
-
|
|
|
- return {
|
|
|
- animation: animationIsOpen,
|
|
|
- textStyle: textStyle,
|
|
|
- grid: {
|
|
|
- top: 110,
|
|
|
- bottom: 80,
|
|
|
- show: true,
|
|
|
- borderColor: "rgba(230,230,230,1)",
|
|
|
- },
|
|
|
- xAxis: {
|
|
|
- type: "category",
|
|
|
- data: xAxisData,
|
|
|
- boundaryGap: false,
|
|
|
- inverse: true,
|
|
|
- splitLine: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- fontSize: 19,
|
|
|
- margin: 20,
|
|
|
- interval: xAxisData.length <= 16 ? 0 : "auto",
|
|
|
- formatter: function (value) {
|
|
|
- return value + "-";
|
|
|
- },
|
|
|
- },
|
|
|
- axisLine: {
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- yAxis: {
|
|
|
- type: "value",
|
|
|
- axisTick: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- axisLine: {
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: "rgba(233,233,233,1)",
|
|
|
- },
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- fontSize: 19,
|
|
|
- margin: 20,
|
|
|
- formatter: function (value, index) {
|
|
|
- return value.toFixed(2);
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- series: [
|
|
|
- {
|
|
|
- type: "line",
|
|
|
- data: levelDatas,
|
|
|
- symbol: "none",
|
|
|
- smooth: true,
|
|
|
- smoothMonotone: "none",
|
|
|
- lineStyle: {
|
|
|
- color: lineColor,
|
|
|
- width: 3,
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- };
|
|
|
-}
|