job_report_revision #2
|
|
@ -73,250 +73,255 @@ class _QuickDataCheckState extends State<QuickDataCheck> with CommonMixin {
|
||||||
0.09,
|
0.09,
|
||||||
0.3
|
0.3
|
||||||
])),
|
])),
|
||||||
child: SingleChildScrollView(
|
child: Column(
|
||||||
child: Column(
|
children: [
|
||||||
children: [
|
Row(
|
||||||
Row(
|
children: [
|
||||||
children: [
|
IconButton(
|
||||||
IconButton(
|
icon: Icon(Icons.arrow_back_ios, color: Colors.white),
|
||||||
icon: Icon(Icons.arrow_back_ios, color: Colors.white),
|
onPressed: () => Navigator.of(context).pop(),
|
||||||
onPressed: () => Navigator.of(context).pop(),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: Center(
|
|
||||||
child: Text(
|
|
||||||
'数据快查',
|
|
||||||
style: TextStyle(fontSize: 16.sp, color: Colors.white),
|
|
||||||
))),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.only(left: 14.r, top: 10.r),
|
|
||||||
child: Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/job_report_class_icon.png',
|
|
||||||
width: 22.r,
|
|
||||||
height: 22.r,
|
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width: 6.r,
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
widget.className,
|
|
||||||
style: TextStyle(fontSize: 14.r, color: Colors.white),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
Expanded(
|
||||||
Container(
|
child: Center(
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.r, horizontal: 15.r),
|
child: Text(
|
||||||
margin: EdgeInsets.symmetric(vertical: 10.r, horizontal: 14.r),
|
'数据快查',
|
||||||
decoration: BoxDecoration(
|
style: TextStyle(fontSize: 16.sp, color: Colors.white),
|
||||||
color: Colors.white,
|
))),
|
||||||
borderRadius: BorderRadius.all(Radius.circular(6.r))),
|
],
|
||||||
child: Column(
|
),
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
SizedBox(height:10.r),
|
||||||
children: [
|
Expanded(child: SingleChildScrollView(
|
||||||
Row(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(left: 14.r, top: 2.r),
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Image.asset(
|
||||||
width: 14.r,
|
'assets/images/job_report_class_icon.png',
|
||||||
height: 14.r,
|
width: 22.r,
|
||||||
decoration: BoxDecoration(
|
height: 22.r,
|
||||||
color: Color(0xFF4CC793),
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.all(Radius.circular(7.r))),
|
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 6.r,
|
width: 6.r,
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'已提交',
|
widget.className,
|
||||||
style: TextStyle(
|
style: TextStyle(fontSize: 14.r, color: Colors.white),
|
||||||
fontSize: 12.sp, color: Color(0xFF333333)),
|
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width: 35.r,
|
|
||||||
),
|
|
||||||
Container(
|
|
||||||
width: 14.r,
|
|
||||||
height: 14.r,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Color(0xFF6888FD),
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.all(Radius.circular(7.r))),
|
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width: 6.r,
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'未提交',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 12.sp, color: Color(0xFF333333)),
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
//环形图
|
),
|
||||||
SizedBox(
|
Container(
|
||||||
height: MediaQuery.of(context).size.width * 0.5,
|
padding: EdgeInsets.symmetric(vertical: 10.r, horizontal: 15.r),
|
||||||
child: PieChart(
|
margin: EdgeInsets.symmetric(vertical: 10.r, horizontal: 14.r),
|
||||||
PieChartData(
|
decoration: BoxDecoration(
|
||||||
borderData: FlBorderData(show: false),
|
color: Colors.white,
|
||||||
sectionsSpace: 0,
|
borderRadius: BorderRadius.all(Radius.circular(6.r))),
|
||||||
centerSpaceRadius: MediaQuery.of(context).size.width * 0.1,
|
child: Column(
|
||||||
sections: [
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
PieChartSectionData(
|
children: [
|
||||||
color: Color(0xFF4CC793),
|
Row(
|
||||||
value: jobData!.validCount/(jobData!.validCount+jobData!.noAnswerCount) * 100,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
radius: MediaQuery.of(context).size.width * 0.1 + 5,
|
children: [
|
||||||
title: '${jobData!.validCount}人',
|
Container(
|
||||||
titleStyle: TextStyle(
|
width: 14.r,
|
||||||
fontSize: 14.sp,
|
height: 14.r,
|
||||||
color: Colors.white,
|
decoration: BoxDecoration(
|
||||||
),
|
color: Color(0xFF4CC793),
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.all(Radius.circular(7.r))),
|
||||||
),
|
),
|
||||||
PieChartSectionData(
|
SizedBox(
|
||||||
color: Color(0xFF6888FD),
|
width: 6.r,
|
||||||
value: jobData!.noAnswerCount/(jobData!.validCount+jobData!.noAnswerCount) * 100,
|
),
|
||||||
radius: MediaQuery.of(context).size.width * 0.1,
|
Text(
|
||||||
title: '${jobData!.noAnswerCount}人',
|
'已提交',
|
||||||
titleStyle: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.sp,
|
fontSize: 12.sp, color: Color(0xFF333333)),
|
||||||
color: Colors.white,
|
),
|
||||||
),
|
SizedBox(
|
||||||
|
width: 35.r,
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 14.r,
|
||||||
|
height: 14.r,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Color(0xFF6888FD),
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.all(Radius.circular(7.r))),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 6.r,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'未提交',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12.sp, color: Color(0xFF333333)),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
//环形图
|
||||||
|
SizedBox(
|
||||||
|
height: MediaQuery.of(context).size.width * 0.5,
|
||||||
|
child: PieChart(
|
||||||
|
PieChartData(
|
||||||
|
borderData: FlBorderData(show: false),
|
||||||
|
sectionsSpace: 0,
|
||||||
|
centerSpaceRadius: MediaQuery.of(context).size.width * 0.1,
|
||||||
|
sections: [
|
||||||
|
PieChartSectionData(
|
||||||
|
color: Color(0xFF4CC793),
|
||||||
|
value: jobData!.validCount/(jobData!.validCount+jobData!.noAnswerCount) * 100,
|
||||||
|
radius: MediaQuery.of(context).size.width * 0.1 + 5,
|
||||||
|
title: '${jobData!.validCount}人',
|
||||||
|
titleStyle: TextStyle(
|
||||||
|
fontSize: 14.sp,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
PieChartSectionData(
|
||||||
|
color: Color(0xFF6888FD),
|
||||||
|
value: jobData!.noAnswerCount/(jobData!.validCount+jobData!.noAnswerCount) * 100,
|
||||||
|
radius: MediaQuery.of(context).size.width * 0.1,
|
||||||
|
title: '${jobData!.noAnswerCount}人',
|
||||||
|
titleStyle: TextStyle(
|
||||||
|
fontSize: 14.sp,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// 客观进度条
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'客观题答题进度',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 10.sp, color: Color(0xFF8B8B8B)),
|
||||||
|
),
|
||||||
|
Text('${doubleToStringAsFixed(jobData!.kgValidRate)}%',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 10.sp, color: Color(0xFF333333)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
SizedBox(height: 6.r),
|
||||||
),
|
Row(
|
||||||
// 客观进度条
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
Row(
|
children: [
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
Expanded(
|
||||||
children: [
|
flex: 10,
|
||||||
Text(
|
child: LinearPercentIndicator(
|
||||||
'客观题答题进度',
|
padding: EdgeInsets.zero,
|
||||||
style: TextStyle(
|
animation: true,
|
||||||
fontSize: 10.sp, color: Color(0xFF8B8B8B)),
|
lineHeight: 9.h,
|
||||||
|
animationDuration: 2500,
|
||||||
|
percent: jobData!.kgValidRate/100,
|
||||||
|
progressColor: Color(0xFFFF7F22),
|
||||||
|
backgroundColor: Color(0xFFEAEAEA),
|
||||||
|
barRadius: Radius.circular(10.r),
|
||||||
|
)),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
Text('${doubleToStringAsFixed(jobData!.kgValidRate)}%',
|
SizedBox(height: 20.r),
|
||||||
style: TextStyle(
|
// 主观进度条
|
||||||
fontSize: 10.sp, color: Color(0xFF333333)),
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'主观题答题进度',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 10.sp, color: Color(0xFF8B8B8B)),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'${doubleToStringAsFixed(jobData!.zgValidRate)}%',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 10.sp, color: Color(0xFF333333)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(height: 6.r),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
flex: 10,
|
||||||
|
child: LinearPercentIndicator(
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
animation: true,
|
||||||
|
lineHeight: 9.h,
|
||||||
|
animationDuration: 2500,
|
||||||
|
percent: jobData!.zgValidRate/100,
|
||||||
|
progressColor: Color(0xFFFF7F22),
|
||||||
|
backgroundColor: Color(0xFFEAEAEA),
|
||||||
|
barRadius: Radius.circular(10.r),
|
||||||
|
)),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 6.r),
|
),
|
||||||
Row(
|
Container(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
padding: EdgeInsets.symmetric(vertical: 10.r, horizontal: 10.r),
|
||||||
|
margin: EdgeInsets.symmetric(vertical: 10.r, horizontal: 14.r),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(6.r))),
|
||||||
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
InkWell(
|
||||||
flex: 10,
|
onTap: (){
|
||||||
child: LinearPercentIndicator(
|
jobData!.studentDetails.sort((a, b) {
|
||||||
padding: EdgeInsets.zero,
|
int num1 = a.kgValidRate + a.zgValidRate;
|
||||||
animation: true,
|
int num2 = b.kgValidRate + b.zgValidRate;
|
||||||
lineHeight: 9.h,
|
return num2.compareTo(num1);
|
||||||
animationDuration: 2500,
|
});
|
||||||
percent: jobData!.kgValidRate/100,
|
setState(() {
|
||||||
progressColor: Color(0xFFFF7F22),
|
jobData!.studentDetails;
|
||||||
backgroundColor: Color(0xFFEAEAEA),
|
});
|
||||||
barRadius: Radius.circular(10.r),
|
},
|
||||||
)),
|
child: Row(
|
||||||
],
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
),
|
children: [
|
||||||
SizedBox(height: 20.r),
|
Text(
|
||||||
// 主观进度条
|
'未提交排序',
|
||||||
Row(
|
style: TextStyle(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
fontSize: 12.sp, color: Color(0xFF6888FD)),
|
||||||
children: [
|
),
|
||||||
Text(
|
SizedBox(
|
||||||
'主观题答题进度',
|
width: 10.r,
|
||||||
style: TextStyle(
|
),
|
||||||
fontSize: 10.sp, color: Color(0xFF8B8B8B)),
|
Image.asset(
|
||||||
),
|
'assets/images/sort_icon.png',
|
||||||
Text(
|
width: 14.r,
|
||||||
'${doubleToStringAsFixed(jobData!.zgValidRate)}%',
|
height: 14.r,
|
||||||
style: TextStyle(
|
),
|
||||||
fontSize: 10.sp, color: Color(0xFF333333)),
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
|
SizedBox(height: 10.r,),
|
||||||
|
SizedBox(
|
||||||
|
height: jobData!.studentDetails.length>5?350.r:jobData!.studentDetails.length * 50.r + 40.r,
|
||||||
|
child: QuickStudentDataTable(
|
||||||
|
headList: ['学生姓名','客观题','主观题','客观题错题','主观题错题'],
|
||||||
|
bodyList: jobData!.studentDetails,
|
||||||
|
jobId: widget.jobId,
|
||||||
|
fixedRows: 1,
|
||||||
|
fixedCols: 0,
|
||||||
|
),
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 6.r),
|
),
|
||||||
Row(
|
],
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
flex: 10,
|
|
||||||
child: LinearPercentIndicator(
|
|
||||||
padding: EdgeInsets.zero,
|
|
||||||
animation: true,
|
|
||||||
lineHeight: 9.h,
|
|
||||||
animationDuration: 2500,
|
|
||||||
percent: jobData!.zgValidRate/100,
|
|
||||||
progressColor: Color(0xFFFF7F22),
|
|
||||||
backgroundColor: Color(0xFFEAEAEA),
|
|
||||||
barRadius: Radius.circular(10.r),
|
|
||||||
)),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Container(
|
))
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.r, horizontal: 10.r),
|
],
|
||||||
margin: EdgeInsets.symmetric(vertical: 10.r, horizontal: 14.r),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Colors.white,
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(6.r))),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
InkWell(
|
|
||||||
onTap: (){
|
|
||||||
jobData!.studentDetails.sort((a, b) {
|
|
||||||
int num1 = a.kgValidRate + a.zgValidRate;
|
|
||||||
int num2 = b.kgValidRate + b.zgValidRate;
|
|
||||||
return num2.compareTo(num1);
|
|
||||||
});
|
|
||||||
setState(() {
|
|
||||||
jobData!.studentDetails;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'未提交排序',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 12.sp, color: Color(0xFF6888FD)),
|
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width: 10.r,
|
|
||||||
),
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/sort_icon.png',
|
|
||||||
width: 14.r,
|
|
||||||
height: 14.r,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
SizedBox(height: 10.r,),
|
|
||||||
SizedBox(
|
|
||||||
height: jobData!.studentDetails.length>5?300.r:jobData!.studentDetails.length * 50.r + 40.r,
|
|
||||||
child: QuickStudentDataTable(
|
|
||||||
headList: ['学生姓名','客观题','主观题','客观题错题','主观题错题'],
|
|
||||||
bodyList: jobData!.studentDetails,
|
|
||||||
jobId: widget.jobId,
|
|
||||||
fixedRows: 1,
|
|
||||||
fixedCols: 0,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue