This commit is contained in:
parent
1daadfedfb
commit
ec9a94f1ea
Binary file not shown.
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 657 B |
|
|
@ -18,7 +18,10 @@ class HomeworkDetails extends Object {
|
||||||
@JsonKey(name: 'dtls')
|
@JsonKey(name: 'dtls')
|
||||||
List<Dtls> dtls;
|
List<Dtls> dtls;
|
||||||
|
|
||||||
HomeworkDetails(this.questions,this.knows,this.students,this.dtls);
|
@JsonKey(name: 'subject')
|
||||||
|
int? subject;
|
||||||
|
|
||||||
|
HomeworkDetails(this.questions,this.knows,this.students,this.dtls,this.subject);
|
||||||
|
|
||||||
factory HomeworkDetails.fromJson(Map<String, dynamic> srcJson) => _$HomeworkDetailsFromJson(srcJson);
|
factory HomeworkDetails.fromJson(Map<String, dynamic> srcJson) => _$HomeworkDetailsFromJson(srcJson);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@ class ShowStudentList extends StatelessWidget {
|
||||||
final String title;
|
final String title;
|
||||||
final String homeworkId;
|
final String homeworkId;
|
||||||
final List<dynamic> studentList;
|
final List<dynamic> studentList;
|
||||||
const ShowStudentList({Key? key, required this.title, required this.studentList, required this.homeworkId}) : super(key: key);
|
final int subject;
|
||||||
|
const ShowStudentList({Key? key, required this.title, required this.studentList, required this.homeworkId,required this.subject}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
@ -44,12 +45,12 @@ class ShowStudentList extends StatelessWidget {
|
||||||
children: studentList.map((e) {
|
children: studentList.map((e) {
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': e.studentId, 'homeworkId': homeworkId});
|
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': e.studentId, 'homeworkId': homeworkId,'subject':subject});
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: EdgeInsets.symmetric(vertical: 4.r, horizontal: 8.r),
|
padding: EdgeInsets.symmetric(vertical: 4.r, horizontal: 8.r),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: e.state == 3 ? Color(0xFF4CC793) : Color(0xFFE2E2E2),
|
color: e.state == 3 ? Color(0xFF4CC793) : Color(0xFFF0ECFF),
|
||||||
borderRadius: BorderRadius.circular(4.r),
|
borderRadius: BorderRadius.circular(4.r),
|
||||||
),
|
),
|
||||||
child: quickText(e.studentName, color: e.state == 3 ? Colors.white : Color(0xFF505E6E), size: 10.sp),
|
child: quickText(e.studentName, color: e.state == 3 ? Colors.white : Color(0xFF505E6E), size: 10.sp),
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ class _AnnotateItemState extends State<AnnotateItem> {
|
||||||
height: 27.r,
|
height: 27.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
||||||
color: const Color(0xFF4CC793),
|
color: Theme.of(context).primaryColor,
|
||||||
),
|
),
|
||||||
child: const Center(
|
child: const Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|
@ -157,6 +157,7 @@ class _AnnotateItemState extends State<AnnotateItem> {
|
||||||
widget.logic.getAllCorrect(widget.item.classId);
|
widget.logic.getAllCorrect(widget.item.classId);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
bgColor: Theme.of(context).primaryColor,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Expanded(
|
const Expanded(
|
||||||
|
|
@ -196,55 +197,56 @@ class _AnnotateItemState extends State<AnnotateItem> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.r, horizontal: 14.r),
|
padding: EdgeInsets.only(top: 10.r,left: 14.r,right: 14.r),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
Expanded(
|
children: [
|
||||||
child: LinearPercentIndicator(
|
quickText('批阅进度', size: widget.font - 2.sp, color: const Color(0xFF8E8E8E)),
|
||||||
padding: EdgeInsets.zero,
|
quickText('${widget.item.annotateRate}%', size: widget.font + 10.sp, color: const Color(0xFF464646))
|
||||||
animation: true,
|
],
|
||||||
lineHeight: 8.h,
|
),),
|
||||||
animationDuration: 2500,
|
Padding(
|
||||||
|
padding: EdgeInsets.only(top: 0.r, left: 14.r,right: 14.r,bottom: 10.r),
|
||||||
|
child: LinearPercentIndicator(
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
animation: true,
|
||||||
|
lineHeight: 8.h,
|
||||||
|
animationDuration: 2500,
|
||||||
|
|
||||||
percent: widget.item.annotateRate / 100,
|
percent: widget.item.annotateRate / 100,
|
||||||
linearGradient: LinearGradient(
|
linearGradient: LinearGradient(
|
||||||
tileMode: TileMode.mirror,
|
tileMode: TileMode.mirror,
|
||||||
stops: const [0.0, 1.0],
|
stops: const [0.0, 1.0],
|
||||||
colors: widget.item.annotateRate / 100 != 1
|
colors: widget.item.annotateRate / 100 != 1
|
||||||
? [Theme.of(context).primaryColor.withOpacity(0.1), Theme.of(context).primaryColor]
|
? [Theme.of(context).primaryColor.withOpacity(0.1), Theme.of(context).primaryColor]
|
||||||
: [
|
: [
|
||||||
const Color.fromRGBO(144, 224, 190, 1).withOpacity(0.1),
|
const Color.fromRGBO(144, 224, 190, 1).withOpacity(0.1),
|
||||||
const Color.fromRGBO(144, 224, 190, 1),
|
const Color.fromRGBO(144, 224, 190, 1),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
// linearStrokeCap: LinearStrokeCap.butt,
|
// linearStrokeCap: LinearStrokeCap.butt,
|
||||||
// progressColor: Theme.of(context).primaryColor,
|
// progressColor: Theme.of(context).primaryColor,
|
||||||
backgroundColor: const Color.fromRGBO(232, 232, 232, 1),
|
backgroundColor: const Color.fromRGBO(232, 232, 232, 1),
|
||||||
barRadius: Radius.circular(10.r),
|
barRadius: Radius.circular(10.r),
|
||||||
),
|
|
||||||
),
|
|
||||||
SizedBox(width: 7.w),
|
|
||||||
quickText('${widget.item.annotateRate}%', size: widget.font - 2.sp, color: const Color.fromRGBO(70, 70, 70, 1))
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '客观题正确率:',
|
title: '客观题正确率:',
|
||||||
color: const Color(0xFF4CC793),
|
color: const Color(0xFFADDCA5),
|
||||||
percent: widget.item.kgtCorrectRate / 100,
|
percent: widget.item.kgtCorrectRate / 100,
|
||||||
marginEdg: EdgeInsets.zero,
|
marginEdg: EdgeInsets.zero,
|
||||||
padingEdg: EdgeInsets.only(top: 8.h, left: 14.r, right: 14.r),
|
padingEdg: EdgeInsets.only(top: 8.h, left: 14.r, right: 14.r),
|
||||||
fontSize: widget.font - 2.sp),
|
fontSize: widget.font - 2.sp),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '主观题正确率:',
|
title: '主观题正确率:',
|
||||||
color: const Color(0xFF4CC793),
|
color: const Color(0xFFADDCA5),
|
||||||
percent: widget.item.zgtCorrectRate / 100,
|
percent: widget.item.zgtCorrectRate / 100,
|
||||||
padingEdg: EdgeInsets.symmetric(horizontal: 10.r),
|
padingEdg: EdgeInsets.symmetric(horizontal: 10.r),
|
||||||
marginEdg: EdgeInsets.only(top: 8.h),
|
marginEdg: EdgeInsets.only(top: 8.h),
|
||||||
fontSize: widget.font - 2.sp),
|
fontSize: widget.font - 2.sp),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '总正确率:',
|
title: '总正确率:',
|
||||||
color: const Color(0xFF4CC793),
|
color: const Color(0xFFADDCA5),
|
||||||
percent: widget.item.correctRate / 100,
|
percent: widget.item.correctRate / 100,
|
||||||
padingEdg: EdgeInsets.symmetric(horizontal: 10.r),
|
padingEdg: EdgeInsets.symmetric(horizontal: 10.r),
|
||||||
marginEdg: EdgeInsets.only(top: 8.h),
|
marginEdg: EdgeInsets.only(top: 8.h),
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ class CompletedAnnotateItem extends StatelessWidget {
|
||||||
title: '${taskItem.className ?? ''} ${submitted ? '已提交' : '未提交'}作业学生',
|
title: '${taskItem.className ?? ''} ${submitted ? '已提交' : '未提交'}作业学生',
|
||||||
studentList: students,
|
studentList: students,
|
||||||
homeworkId: logic.state.homeworkId.value,
|
homeworkId: logic.state.homeworkId.value,
|
||||||
|
subject:logic.state.subject,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
@ -43,13 +44,13 @@ class CompletedAnnotateItem extends StatelessWidget {
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
border: Border(bottom: BorderSide(color: Color.fromRGBO(238, 238, 238, 1), width: 0.5.r)),
|
border: Border(bottom: BorderSide(color: Color.fromRGBO(238, 238, 238, 1), width: 0.5.r)),
|
||||||
),
|
),
|
||||||
child: quickText(taskItem.className, color: Color(0xFF4CC793), size: 12.sp),
|
child: quickText(taskItem.className, color: Theme.of(context).primaryColor, size: 12.sp),
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
color: const Color.fromRGBO(76, 199, 147, 1),
|
color: const Color(0xFFADDCA5),
|
||||||
percent: taskItem.kgtCorrectRate / 100,
|
percent: taskItem.kgtCorrectRate / 100,
|
||||||
title: '客观题正确率:',
|
title: '客观题正确率:',
|
||||||
padingEdg: EdgeInsets.only(left: 10.w, right: 10.w),
|
padingEdg: EdgeInsets.only(left: 10.w, right: 10.w),
|
||||||
|
|
@ -58,7 +59,7 @@ class CompletedAnnotateItem extends StatelessWidget {
|
||||||
marginEdg: EdgeInsets.only(top: 5.h),
|
marginEdg: EdgeInsets.only(top: 5.h),
|
||||||
),
|
),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
color: const Color.fromRGBO(76, 199, 147, 1),
|
color: const Color(0xFFADDCA5),
|
||||||
percent: taskItem.zgtCorrectRate / 100,
|
percent: taskItem.zgtCorrectRate / 100,
|
||||||
title: '主观题正确率:',
|
title: '主观题正确率:',
|
||||||
fontSize: 8.sp,
|
fontSize: 8.sp,
|
||||||
|
|
@ -67,7 +68,7 @@ class CompletedAnnotateItem extends StatelessWidget {
|
||||||
marginEdg: EdgeInsets.only(top: 5.h),
|
marginEdg: EdgeInsets.only(top: 5.h),
|
||||||
),
|
),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
color: const Color.fromRGBO(76, 199, 147, 1),
|
color: const Color(0xFFADDCA5),
|
||||||
percent: taskItem.correctRate / 100,
|
percent: taskItem.correctRate / 100,
|
||||||
title: '总正确率:',
|
title: '总正确率:',
|
||||||
fontSize: 8.sp,
|
fontSize: 8.sp,
|
||||||
|
|
@ -86,7 +87,7 @@ class CompletedAnnotateItem extends StatelessWidget {
|
||||||
Expanded(
|
Expanded(
|
||||||
flex: 4,
|
flex: 4,
|
||||||
child: Material(
|
child: Material(
|
||||||
color: Color.fromRGBO(244, 244, 244, 1),
|
color: Theme.of(context).primaryColor,
|
||||||
borderRadius: BorderRadius.circular(16.r),
|
borderRadius: BorderRadius.circular(16.r),
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
|
@ -101,7 +102,7 @@ class CompletedAnnotateItem extends StatelessWidget {
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(20.r),
|
borderRadius: BorderRadius.circular(20.r),
|
||||||
),
|
),
|
||||||
child: quickText('已提交:${taskItem.commitStudentCount}', size: 8.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
child: quickText('已提交:${taskItem.commitStudentCount}', size: 8.sp, color: Colors.white),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,9 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
class ItemBtn extends StatelessWidget {
|
class ItemBtn extends StatelessWidget {
|
||||||
final String title;
|
final String title;
|
||||||
final double font;
|
final double font;
|
||||||
|
final Color? bgColor;
|
||||||
final Function? clickFunction;
|
final Function? clickFunction;
|
||||||
const ItemBtn({Key? key,required this.title,required this.font,this.clickFunction}) : super(key: key);
|
const ItemBtn({Key? key,required this.title,required this.font,this.clickFunction,this.bgColor}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
@ -18,7 +19,7 @@ class ItemBtn extends StatelessWidget {
|
||||||
const Color(0xFFE8E8E8)),
|
const Color(0xFFE8E8E8)),
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
WidgetStateProperty.all(
|
WidgetStateProperty.all(
|
||||||
const Color(0xFFF4F4F4)),
|
bgColor??const Color(0xFFF4F4F4)),
|
||||||
// foregroundColor: MaterialStateProperty.all(Colors.red.shade200),//文字颜色
|
// foregroundColor: MaterialStateProperty.all(Colors.red.shade200),//文字颜色
|
||||||
shape: WidgetStateProperty.all(
|
shape: WidgetStateProperty.all(
|
||||||
RoundedRectangleBorder(
|
RoundedRectangleBorder(
|
||||||
|
|
@ -37,7 +38,7 @@ class ItemBtn extends StatelessWidget {
|
||||||
title,
|
title,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: font,
|
fontSize: font,
|
||||||
color: const Color(0xFF666666)),
|
color: bgColor != null?Colors.white:const Color(0xFF666666)),
|
||||||
)),
|
)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ class _AnswerTrajectoryPageState extends State<AnswerTrajectoryPage> {
|
||||||
tabAlignment: TabAlignment.start,
|
tabAlignment: TabAlignment.start,
|
||||||
indicator: const UnderlineTabIndicator(
|
indicator: const UnderlineTabIndicator(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: const Color(0xFF4CC793),
|
color: Color(0xFF8C68FF),
|
||||||
),
|
),
|
||||||
|
|
||||||
),
|
),
|
||||||
|
|
@ -97,10 +97,10 @@ class _AnswerTrajectoryPageState extends State<AnswerTrajectoryPage> {
|
||||||
TextStyle(fontSize: 14.sp, color: Color(0xFF666666)),
|
TextStyle(fontSize: 14.sp, color: Color(0xFF666666)),
|
||||||
labelStyle: TextStyle(
|
labelStyle: TextStyle(
|
||||||
fontSize: 14.sp,
|
fontSize: 14.sp,
|
||||||
color: Color(0xFF4CC793),
|
color: Color(0xFF8C68FF),
|
||||||
),
|
),
|
||||||
isScrollable: true,
|
isScrollable: true,
|
||||||
labelColor: Color(0xFF4CC793),
|
labelColor: Color(0xFF8C68FF),
|
||||||
unselectedLabelColor: Color(0xFF666666),
|
unselectedLabelColor: Color(0xFF666666),
|
||||||
indicatorSize: TabBarIndicatorSize.label,
|
indicatorSize: TabBarIndicatorSize.label,
|
||||||
labelPadding: const EdgeInsets.all(0),
|
labelPadding: const EdgeInsets.all(0),
|
||||||
|
|
@ -133,13 +133,13 @@ class _AnswerTrajectoryPageState extends State<AnswerTrajectoryPage> {
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.all(Radius.circular(20.r)),
|
BorderRadius.all(Radius.circular(20.r)),
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
width: 1.r, color: Color(0xFFFF9800)),
|
width: 1.r, color: Color(0xFF7EB752)),
|
||||||
),
|
),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
'详情',
|
'详情',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10.sp, color: Color(0xFFFF9800)),
|
fontSize: 10.sp, color: Color(0xFF7EB752)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ class AnswerTrajectoryJob extends StatelessWidget {
|
||||||
Items item = jobList[index];
|
Items item = jobList[index];
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(Routes.answerTrajectoryDetailPage,arguments: {'homeworkId':item.id,'title':item.name,'grade':item.grade});
|
Get.toNamed(Routes.answerTrajectoryDetailPage,arguments: {'homeworkId':item.id,'title':item.name,'grade':item.grade,'subject':item.subject});
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: EdgeInsets.only(top: 10.h),
|
padding: EdgeInsets.only(top: 10.h),
|
||||||
|
|
@ -58,17 +58,13 @@ class AnswerTrajectoryJob extends StatelessWidget {
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
width: 32.w,
|
width: 32.w,
|
||||||
height: 18.h,
|
height: 22.h,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
padding: EdgeInsets.only(left: 2.w),
|
// padding: EdgeInsets.only(left: 2.w),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color:
|
color:Theme.of(context).primaryColor,
|
||||||
const Color(0xFF4CC793),
|
borderRadius: BorderRadius.all(
|
||||||
borderRadius: BorderRadius.only(
|
Radius.circular(5.r)
|
||||||
topLeft: Radius.circular(14.r),
|
|
||||||
topRight: Radius.circular(3.r),
|
|
||||||
bottomLeft: Radius.circular(4.r),
|
|
||||||
bottomRight: Radius.circular(4.r),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
margin: EdgeInsets.only(top:3.h,right: 4.w),
|
margin: EdgeInsets.only(top:3.h,right: 4.w),
|
||||||
|
|
@ -92,14 +88,14 @@ class AnswerTrajectoryJob extends StatelessWidget {
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(4.r),
|
borderRadius: BorderRadius.circular(4.r),
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
width: 1.r, color: Color(0xFF4CC793)),
|
width: 1.r, color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
EnumUtils.formatSubject(item.subject),
|
EnumUtils.formatSubject(item.subject),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 8.r,
|
fontSize: 8.r,
|
||||||
color: Color(0xFF4CC793)),
|
color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
@ -190,17 +186,13 @@ class AnswerTrajectoryJob extends StatelessWidget {
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
width: 32.w,
|
width: 32.w,
|
||||||
height: 18.h,
|
height: 22.h,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
padding: EdgeInsets.only(left: 2.w),
|
// padding: EdgeInsets.only(left: 2.w),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color:
|
color:Theme.of(context).primaryColor,
|
||||||
const Color(0xFF4CC793),
|
borderRadius: BorderRadius.all(
|
||||||
borderRadius: BorderRadius.only(
|
Radius.circular(5.r)
|
||||||
topLeft: Radius.circular(14.r),
|
|
||||||
topRight: Radius.circular(3.r),
|
|
||||||
bottomLeft: Radius.circular(4.r),
|
|
||||||
bottomRight: Radius.circular(4.r),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
margin: EdgeInsets.only(top:3.h,right: 4.w),
|
margin: EdgeInsets.only(top:3.h,right: 4.w),
|
||||||
|
|
@ -224,14 +216,14 @@ class AnswerTrajectoryJob extends StatelessWidget {
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(4.r),
|
borderRadius: BorderRadius.circular(4.r),
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
width: 1.r, color: Color(0xFF4CC793)),
|
width: 1.r, color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
EnumUtils.formatSubject(item.subject),
|
EnumUtils.formatSubject(item.subject),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 12.r,
|
fontSize: 12.r,
|
||||||
color: Color(0xFF4CC793)),
|
color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ class AnswerTrajectoryDetailLogic extends GetxController with RequestToolMixin{
|
||||||
state.homeworkId.value = Get.arguments['homeworkId'] ?? '';
|
state.homeworkId.value = Get.arguments['homeworkId'] ?? '';
|
||||||
state.title.value = Get.arguments['title'] ?? '';
|
state.title.value = Get.arguments['title'] ?? '';
|
||||||
state.grade = Get.arguments['grade'] ?? -1;
|
state.grade = Get.arguments['grade'] ?? -1;
|
||||||
|
state.subject = Get.arguments['subject'] ?? -1;
|
||||||
refreshController = EasyRefreshController();
|
refreshController = EasyRefreshController();
|
||||||
EasyLoading.show(status: 'loading...');
|
EasyLoading.show(status: 'loading...');
|
||||||
getList();
|
getList();
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ class AnswerTrajectoryDetailState {
|
||||||
late RxString homeworkId = ''.obs;
|
late RxString homeworkId = ''.obs;
|
||||||
late RxString title = ''.obs;
|
late RxString title = ''.obs;
|
||||||
late int grade = -1;
|
late int grade = -1;
|
||||||
|
late int subject = -1;
|
||||||
late RxList<AnnotatedClass> classList = RxList();
|
late RxList<AnnotatedClass> classList = RxList();
|
||||||
late Rx<AnnotatedClass> currentClass=Rx(AnnotatedClass('',-1,'','','',-1,-1,-1,-1,-1,[],[],-1,-1,-1,-1,-1,[],[]));
|
late Rx<AnnotatedClass> currentClass=Rx(AnnotatedClass('',-1,'','','',-1,-1,-1,-1,-1,[],[],-1,-1,-1,-1,-1,[],[]));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ class _AnswerTrajectoryDetailPageState
|
||||||
fontSize: 10.sp,
|
fontSize: 10.sp,
|
||||||
color: state.currentClass.value
|
color: state.currentClass.value
|
||||||
.classId == item.classId
|
.classId == item.classId
|
||||||
? Color(0xFF4CC793)
|
? Theme.of(context).primaryColor
|
||||||
: Color(0xFF686868)),
|
: Color(0xFF686868)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -141,7 +141,7 @@ class _AnswerTrajectoryDetailPageState
|
||||||
AnnotatedStudents item = state.currentClass.value.students[index];
|
AnnotatedStudents item = state.currentClass.value.students[index];
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': item.studentId, 'homeworkId': state.homeworkId.value});
|
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': item.studentId, 'homeworkId': state.homeworkId.value,'subject':state.subject});
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 10.r),
|
padding: EdgeInsets.symmetric(horizontal: 10.r),
|
||||||
|
|
@ -159,7 +159,7 @@ class _AnswerTrajectoryDetailPageState
|
||||||
item.studentName,
|
item.studentName,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 12.sp,
|
fontSize: 12.sp,
|
||||||
color: Color(0xFF4CC793)),
|
color: Color(0xFF5E5E5E)),
|
||||||
)),
|
)),
|
||||||
|
|
||||||
Container(
|
Container(
|
||||||
|
|
@ -167,14 +167,14 @@ class _AnswerTrajectoryDetailPageState
|
||||||
width: 70.r,
|
width: 70.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
width: 1.r, color: Color(0xFFFFA41E)),
|
width: 1.r, color: Color(0xFFB2DA93)),
|
||||||
borderRadius: BorderRadius.all(
|
borderRadius: BorderRadius.all(
|
||||||
Radius.circular(20.r)),
|
Radius.circular(20.r)),
|
||||||
|
|
||||||
),
|
),
|
||||||
child: Center(child: Text('详情',
|
child: Center(child: Text('详情',
|
||||||
style: TextStyle(fontSize: 10.r,
|
style: TextStyle(fontSize: 10.r,
|
||||||
color: Color(0xFFFFA41E))),
|
color: Color(0xFFB2DA93))),
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
@ -188,7 +188,7 @@ class _AnswerTrajectoryDetailPageState
|
||||||
.students[index];
|
.students[index];
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': item.studentId, 'homeworkId': state.homeworkId.value});
|
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': item.studentId, 'homeworkId': state.homeworkId.value,'subject':state.subject});
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: EdgeInsets.symmetric(
|
padding: EdgeInsets.symmetric(
|
||||||
|
|
@ -208,21 +208,21 @@ class _AnswerTrajectoryDetailPageState
|
||||||
item.studentName,
|
item.studentName,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 12.sp,
|
fontSize: 12.sp,
|
||||||
color: Color(0xFF4CC793)),
|
color: Color(0xFF5E5E5E)),
|
||||||
)),
|
)),
|
||||||
Container(
|
Container(
|
||||||
height: 24.r,
|
height: 24.r,
|
||||||
width: 72.r,
|
width: 72.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
width: 1.r, color: Color(0xFFFFA41E)),
|
width: 1.r, color: Color(0xFFB2DA93)),
|
||||||
borderRadius: BorderRadius.all(
|
borderRadius: BorderRadius.all(
|
||||||
Radius.circular(20.r)),
|
Radius.circular(20.r)),
|
||||||
|
|
||||||
),
|
),
|
||||||
child: Center(child: Text('详情',
|
child: Center(child: Text('详情',
|
||||||
style: TextStyle(fontSize: 10.r,
|
style: TextStyle(fontSize: 10.r,
|
||||||
color: Color(0xFFFFA41E))),
|
color: Color(0xFFB2DA93))),
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ class _ClassStudentPageState extends State<ClassStudentPage> {
|
||||||
item.name,
|
item.name,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 12.sp,
|
fontSize: 12.sp,
|
||||||
color: const Color(0xFF4CC793)),
|
color: Theme.of(context).primaryColor),
|
||||||
)),
|
)),
|
||||||
state.page == 'answerTrajectory'
|
state.page == 'answerTrajectory'
|
||||||
? Container(
|
? Container(
|
||||||
|
|
@ -106,7 +106,7 @@ class _ClassStudentPageState extends State<ClassStudentPage> {
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
width: 1.r,
|
width: 1.r,
|
||||||
color: const Color(0xFFFFA41E)),
|
color: const Color(0xFFB2DA93)),
|
||||||
borderRadius: BorderRadius.all(
|
borderRadius: BorderRadius.all(
|
||||||
Radius.circular(20.r)),
|
Radius.circular(20.r)),
|
||||||
),
|
),
|
||||||
|
|
@ -114,7 +114,7 @@ class _ClassStudentPageState extends State<ClassStudentPage> {
|
||||||
child: Text('详情',
|
child: Text('详情',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10.r,
|
fontSize: 10.r,
|
||||||
color: Color(0xFFFFA41E))),
|
color: Color(0xFFB2DA93))),
|
||||||
))
|
))
|
||||||
: state.page == 'history'
|
: state.page == 'history'
|
||||||
? Container(
|
? Container(
|
||||||
|
|
@ -122,7 +122,7 @@ class _ClassStudentPageState extends State<ClassStudentPage> {
|
||||||
width: 70.r,
|
width: 70.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color:
|
color:
|
||||||
const Color(0xFF4CC793),
|
Theme.of(context).primaryColor,
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.all(
|
BorderRadius.all(
|
||||||
Radius.circular(
|
Radius.circular(
|
||||||
|
|
@ -152,7 +152,7 @@ class _ClassStudentPageState extends State<ClassStudentPage> {
|
||||||
Radius.circular(
|
Radius.circular(
|
||||||
4.r)),
|
4.r)),
|
||||||
color: const Color(
|
color: const Color(
|
||||||
0xFFB7FFE0),
|
0xFFEBE4FF),
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment:
|
crossAxisAlignment:
|
||||||
|
|
@ -178,8 +178,7 @@ class _ClassStudentPageState extends State<ClassStudentPage> {
|
||||||
'优先批阅',
|
'优先批阅',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10.sp,
|
fontSize: 10.sp,
|
||||||
color: const Color(
|
color: Theme.of(context).primaryColor),
|
||||||
0xFF4CC793)),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
@ -283,7 +282,7 @@ class _ClassStudentPageState extends State<ClassStudentPage> {
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
width: 1.r,
|
width: 1.r,
|
||||||
color: const Color(0xFFFFA41E)),
|
color: const Color(0xFFB2DA93)),
|
||||||
borderRadius: BorderRadius.all(
|
borderRadius: BorderRadius.all(
|
||||||
Radius.circular(20.r)),
|
Radius.circular(20.r)),
|
||||||
),
|
),
|
||||||
|
|
@ -291,7 +290,7 @@ class _ClassStudentPageState extends State<ClassStudentPage> {
|
||||||
child: Text('详情',
|
child: Text('详情',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10.r,
|
fontSize: 10.r,
|
||||||
color: Color(0xFFFFA41E))),
|
color: Color(0xFFB2DA93))),
|
||||||
))
|
))
|
||||||
: state.page == 'history'
|
: state.page == 'history'
|
||||||
? Container(
|
? Container(
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ class _FavStudentPageState extends State<FavStudentPage> {
|
||||||
height: 27.r,
|
height: 27.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
||||||
color: const Color(0xFF4CC793),
|
color: Theme.of(context).primaryColor,
|
||||||
),
|
),
|
||||||
child: const Center(
|
child: const Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|
@ -194,7 +194,7 @@ class _FavStudentPageState extends State<FavStudentPage> {
|
||||||
'第${item['questionPage']}页',
|
'第${item['questionPage']}页',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 12.sp,
|
fontSize: 12.sp,
|
||||||
color: const Color(0xFF2E5BFF)),
|
color:Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
GridView(
|
GridView(
|
||||||
|
|
@ -294,7 +294,7 @@ class _FavStudentPageState extends State<FavStudentPage> {
|
||||||
'第${item['questionPage']}页',
|
'第${item['questionPage']}页',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.sp,
|
fontSize: 14.sp,
|
||||||
color: const Color(0xFF2E5BFF)),
|
color:Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
ListView.builder(
|
ListView.builder(
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ class _FavoriteStudentDialogState extends State<FavoriteStudentDialog> {
|
||||||
return Text(
|
return Text(
|
||||||
'${currentStudent.value.className} ${currentStudent.value
|
'${currentStudent.value.className} ${currentStudent.value
|
||||||
.studentName}',
|
.studentName}',
|
||||||
style: TextStyle(fontSize: 12.sp, color: Color(0xFF4E73FD)),
|
style: TextStyle(fontSize: 12.sp, color: Theme.of(context).primaryColor),
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
Expanded(child: Container()),
|
Expanded(child: Container()),
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ class JobReportLogic extends GetxController with RequestToolMixin {
|
||||||
HomeworkDetails data =
|
HomeworkDetails data =
|
||||||
await getClient().getHomeworkDetails(state.homeworkId.value, state.classData.value.classId != '-1' ? state.classData.value.classId : '');
|
await getClient().getHomeworkDetails(state.homeworkId.value, state.classData.value.classId != '-1' ? state.classData.value.classId : '');
|
||||||
state.dataCount = Utils.getHomeworkData(data);
|
state.dataCount = Utils.getHomeworkData(data);
|
||||||
|
state.subject = data.subject!;
|
||||||
state.homeData = data;
|
state.homeData = data;
|
||||||
state.kgReport.value = data.questions.where((w) => w.questionType == 1).toList();
|
state.kgReport.value = data.questions.where((w) => w.questionType == 1).toList();
|
||||||
state.zgReport.value = data.questions.where((w) => w.questionType == 2).toList();
|
state.zgReport.value = data.questions.where((w) => w.questionType == 2).toList();
|
||||||
|
|
|
||||||
|
|
@ -23,4 +23,5 @@ class JobReportState {
|
||||||
late RxList<AnnotatedClass> involveClasses = RxList();
|
late RxList<AnnotatedClass> involveClasses = RxList();
|
||||||
late AnnotatedClass defaultClass = AnnotatedClass('', -1, '-1', '', '', -1, -1, -1, -1, -1, [], [], -1, -1, -1, -1, -1, [], []);
|
late AnnotatedClass defaultClass = AnnotatedClass('', -1, '-1', '', '', -1, -1, -1, -1, -1, [], [], -1, -1, -1, -1, -1, [], []);
|
||||||
late Rx<AnnotatedClass> classData = defaultClass.obs;
|
late Rx<AnnotatedClass> classData = defaultClass.obs;
|
||||||
|
late int subject = -1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ class _JobReportPageState extends State<JobReportPage> {
|
||||||
),
|
),
|
||||||
//完成率、正确率
|
//完成率、正确率
|
||||||
TopCount(
|
TopCount(
|
||||||
state.dataCount, state.classData == null ? '' : state.classData.value.className, state.homeworkId.value),
|
state.dataCount, state.classData == null ? '' : state.classData.value.className, state.homeworkId.value,state.subject),
|
||||||
//客观题、主观题
|
//客观题、主观题
|
||||||
KgtZgtTable(
|
KgtZgtTable(
|
||||||
studentCount: state.dataCount.studentCount!,
|
studentCount: state.dataCount.studentCount!,
|
||||||
|
|
@ -87,7 +87,8 @@ class _JobReportPageState extends State<JobReportPage> {
|
||||||
kgtOkRate: state.dataCount.kgtOkRate!.toStringAsFixed(0),
|
kgtOkRate: state.dataCount.kgtOkRate!.toStringAsFixed(0),
|
||||||
zgtOkRate: state.dataCount.zgtOkRate!.toStringAsFixed(0),
|
zgtOkRate: state.dataCount.zgtOkRate!.toStringAsFixed(0),
|
||||||
kgtCorrectRate: state.dataCount.kgtCorrectRate!.toStringAsFixed(0),
|
kgtCorrectRate: state.dataCount.kgtCorrectRate!.toStringAsFixed(0),
|
||||||
zgtCorrectRate: state.dataCount.zgtCorrectRate!.toStringAsFixed(0)),
|
zgtCorrectRate: state.dataCount.zgtCorrectRate!.toStringAsFixed(0),
|
||||||
|
subject:state.subject),
|
||||||
// 掌握知识点的情况
|
// 掌握知识点的情况
|
||||||
Container(
|
Container(
|
||||||
margin: EdgeInsets.symmetric(horizontal: 10.r),
|
margin: EdgeInsets.symmetric(horizontal: 10.r),
|
||||||
|
|
@ -95,7 +96,8 @@ class _JobReportPageState extends State<JobReportPage> {
|
||||||
knowsList: state.knowsList,
|
knowsList: state.knowsList,
|
||||||
data: state.homeData,
|
data: state.homeData,
|
||||||
className: state.classData.value.className,
|
className: state.classData.value.className,
|
||||||
homeworkId: state.homeworkId.value)),
|
homeworkId: state.homeworkId.value,
|
||||||
|
subject:state.subject,)),
|
||||||
// 掌握知识点的情况
|
// 掌握知识点的情况
|
||||||
/* Container(
|
/* Container(
|
||||||
margin: EdgeInsets.symmetric(horizontal: 10.r),
|
margin: EdgeInsets.symmetric(horizontal: 10.r),
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,8 @@ class KnowledgePoint extends StatefulWidget {
|
||||||
final HomeworkDetails data;
|
final HomeworkDetails data;
|
||||||
final String className;
|
final String className;
|
||||||
final String homeworkId;
|
final String homeworkId;
|
||||||
KnowledgePoint({Key? key, required this.knowsList, required this.data, required this.className, required this.homeworkId}) : super(key: key);
|
final int subject;
|
||||||
|
KnowledgePoint({Key? key, required this.knowsList, required this.data, required this.className, required this.homeworkId,required this.subject}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<KnowledgePoint> createState() => _KnowledgePointState();
|
State<KnowledgePoint> createState() => _KnowledgePointState();
|
||||||
|
|
@ -22,7 +23,7 @@ class KnowledgePoint extends StatefulWidget {
|
||||||
class _KnowledgePointState extends State<KnowledgePoint> {
|
class _KnowledgePointState extends State<KnowledgePoint> {
|
||||||
void goQuickCheckPersonalPath(studentId) {
|
void goQuickCheckPersonalPath(studentId) {
|
||||||
if (studentId != null) {
|
if (studentId != null) {
|
||||||
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': studentId, 'homeworkId': widget.homeworkId});
|
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': studentId, 'homeworkId': widget.homeworkId,'subject':widget.subject});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -166,7 +167,7 @@ class _KnowledgePointState extends State<KnowledgePoint> {
|
||||||
? Colors.white
|
? Colors.white
|
||||||
: kgInfo.state == 2
|
: kgInfo.state == 2
|
||||||
? const Color(0xFFFF7474)
|
? const Color(0xFFFF7474)
|
||||||
: const Color(0xFF4CC793),
|
: Theme.of(context).primaryColor,
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10.r))),
|
borderRadius: BorderRadius.all(Radius.circular(10.r))),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,9 @@ class TopCount extends StatelessWidget {
|
||||||
final CountData data;
|
final CountData data;
|
||||||
final String className;
|
final String className;
|
||||||
final String jobId;
|
final String jobId;
|
||||||
|
final int subject;
|
||||||
|
|
||||||
const TopCount(this.data, this.className, this.jobId, {Key? key}) : super(key: key);
|
const TopCount(this.data, this.className, this.jobId, this.subject,{Key? key}) : super(key: key);
|
||||||
|
|
||||||
void showStudentListDialog({required BuildContext context, required String title, required List<Students> students}) {
|
void showStudentListDialog({required BuildContext context, required String title, required List<Students> students}) {
|
||||||
showDialog(
|
showDialog(
|
||||||
|
|
@ -23,6 +24,7 @@ class TopCount extends StatelessWidget {
|
||||||
title: title,
|
title: title,
|
||||||
studentList: students,
|
studentList: students,
|
||||||
homeworkId: jobId,
|
homeworkId: jobId,
|
||||||
|
subject: subject,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
@ -91,7 +93,7 @@ class TopCount extends StatelessWidget {
|
||||||
double leftWidth = (MediaQuery.of(context).size.width - 40.r) * 0.7 / 3;
|
double leftWidth = (MediaQuery.of(context).size.width - 40.r) * 0.7 / 3;
|
||||||
double rightWidth = (MediaQuery.of(context).size.width - 40.r) * 0.3 / 2;
|
double rightWidth = (MediaQuery.of(context).size.width - 40.r) * 0.3 / 2;
|
||||||
return Container(
|
return Container(
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.r, horizontal: 10.r),
|
padding: EdgeInsets.symmetric(vertical: 20.r, horizontal: 20.r),
|
||||||
margin: EdgeInsets.symmetric(vertical: 10.r, horizontal: 10.r),
|
margin: EdgeInsets.symmetric(vertical: 10.r, horizontal: 10.r),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
|
|
@ -100,34 +102,80 @@ class TopCount extends StatelessWidget {
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showStudentListDialog(context: context, title: '未提交作业学生', students: data.noAnswerStudents!);
|
showStudentListDialog(context: context, title: '未提交作业学生', students: data.noAnswerStudents!);
|
||||||
},
|
},
|
||||||
child: leftContainer(context, count: data.noAnswerCount!, name: '未提交', nameColor: Color(0xFFD92F2F), bgColor: Color(0xFFEEEEEE)),
|
child: leftContainer(context, count: data.noAnswerCount!, name: '未提交', nameColor: Color(0xFF10978E), bgColor: Color(0xFFE8F8F7)),
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showStudentListDialog(context: context, title: '已提交作业学生', students: data.studentSubmitStudents!);
|
showStudentListDialog(context: context, title: '已提交作业学生', students: data.studentSubmitStudents!);
|
||||||
},
|
},
|
||||||
child: leftContainer(context, count: data.studentSubmitCount!, name: '已提交', nameColor: Color(0xFF4CC793), bgColor: Color(0xFFF5F5F5)),
|
child: leftContainer(context, count: data.studentSubmitCount!, name: '已提交', nameColor: Color(0xFFEF5614), bgColor: Color(0xFFFCEFEA)),
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showStudentListDialog(context: context, title: '全对作业学生', students: data.allCorrectStudents!);
|
showStudentListDialog(context: context, title: '全对作业学生', students: data.allCorrectStudents!);
|
||||||
},
|
},
|
||||||
child: leftContainer(context, count: data.allCorrect!, name: '全对', nameColor: Color(0xFFFF9800), bgColor: Color(0xFFEEEEEE)),
|
child: leftContainer(context, count: data.allCorrect!, name: '全对', nameColor: Color(0xFF8C68FF), bgColor: Color(0xFFE9EBFD)),
|
||||||
),
|
),
|
||||||
Container(
|
|
||||||
height: 92.r,
|
],
|
||||||
width: rightWidth,
|
),
|
||||||
child: Column(
|
SizedBox(height: 15.r,),
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
Row(
|
||||||
children: [
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
Expanded(
|
children: [
|
||||||
child: InkWell(
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
showStudentListDialog(context: context, title: '优等作业学生', students: data.levelOneStudents!);
|
||||||
|
},
|
||||||
|
child: rightContainer(
|
||||||
|
context,
|
||||||
|
count: data.levelOneCount!,
|
||||||
|
bgColor: const Color(0xFFE8F8F7),
|
||||||
|
nameColor: const Color(0xFF009254),
|
||||||
|
borderColor: const Color(0xFF4CC793),
|
||||||
|
name: '优',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
showStudentListDialog(context: context, title: '良等作业学生', students: data.levelTwoStudents!);
|
||||||
|
},
|
||||||
|
child: rightContainer(context,count: data.levelTwoCount!, bgColor: Color(0xFFFEF9F6), nameColor: Color(0xFFE87F0B), borderColor: const Color(0xFFFF9F46), name: '良'),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(height: 10.r,),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
showStudentListDialog(context: context, title: '中等作业学生', students: data.levelThreeStudents!);
|
||||||
|
},
|
||||||
|
child: rightContainer(context,count: data.levelThreeCount!, bgColor: Color(0xFFFFF6F6), nameColor: Color(0xFFFF7474), borderColor: const Color(0xFFFFCACA),name: '中'),
|
||||||
|
),
|
||||||
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
showStudentListDialog(context: context, title: '差等作业学生', students: data.levelFourStudents!);
|
||||||
|
},
|
||||||
|
child: rightContainer(context,count: data.levelFourCount!, bgColor: Color(0xFFECEFEF), nameColor: Color(0xFF5C5B59), borderColor: const Color(0xFFD8D8D8),name: '差'),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
/* Container(
|
||||||
|
height: 92.r,
|
||||||
|
width: rightWidth,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showStudentListDialog(context: context, title: '优等作业学生', students: data.levelOneStudents!);
|
showStudentListDialog(context: context, title: '优等作业学生', students: data.levelOneStudents!);
|
||||||
},
|
},
|
||||||
|
|
@ -138,41 +186,39 @@ class TopCount extends StatelessWidget {
|
||||||
name: '优',
|
name: '优',
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showStudentListDialog(context: context, title: '中等作业学生', students: data.levelThreeStudents!);
|
showStudentListDialog(context: context, title: '中等作业学生', students: data.levelThreeStudents!);
|
||||||
},
|
},
|
||||||
child: rightContainer(count: data.levelThreeCount!, bgColor: Color(0xFFD3FF93), nameColor: Color(0xFF3F6605), name: '中'),
|
child: rightContainer(count: data.levelThreeCount!, bgColor: Color(0xFFD3FF93), nameColor: Color(0xFF3F6605), name: '中'),
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Container(
|
Container(
|
||||||
height: 92.r,
|
height: 92.r,
|
||||||
width: rightWidth,
|
width: rightWidth,
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showStudentListDialog(context: context, title: '良等作业学生', students: data.levelTwoStudents!);
|
showStudentListDialog(context: context, title: '良等作业学生', students: data.levelTwoStudents!);
|
||||||
},
|
},
|
||||||
child: rightContainer(count: data.levelTwoCount!, bgColor: Color(0xFFFFC38C), nameColor: Color(0xFFD36500), name: '良'),
|
child: rightContainer(context,count: data.levelTwoCount!, bgColor: Color(0xFFFFC38C), nameColor: Color(0xFFD36500), name: '良'),
|
||||||
)),
|
)),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showStudentListDialog(context: context, title: '差等作业学生', students: data.levelFourStudents!);
|
showStudentListDialog(context: context, title: '差等作业学生', students: data.levelFourStudents!);
|
||||||
},
|
},
|
||||||
child: rightContainer(count: data.levelFourCount!, bgColor: Color(0xFFFF9D94), nameColor: Color(0xFFD12616), name: '差'),
|
child: rightContainer(context,count: data.levelFourCount!, bgColor: Color(0xFFFF9D94), nameColor: Color(0xFFD12616), name: '差'),
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)
|
)*/
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
@ -181,12 +227,15 @@ class TopCount extends StatelessWidget {
|
||||||
|
|
||||||
@swidget
|
@swidget
|
||||||
Widget leftContainer(context, {required int count, required String name, required Color nameColor, required Color bgColor}) {
|
Widget leftContainer(context, {required int count, required String name, required Color nameColor, required Color bgColor}) {
|
||||||
double leftWidth = (MediaQuery.of(context).size.width - 40.r) * 0.7 / 3;
|
double leftWidth = (MediaQuery.of(context).size.width - 100.r) / 3;
|
||||||
return Container(
|
return Container(
|
||||||
width: leftWidth,
|
width: leftWidth,
|
||||||
height: 92.r,
|
height: 108.r,
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.r, horizontal: 6.r),
|
padding: EdgeInsets.symmetric(vertical: 10.r, horizontal: 6.r),
|
||||||
color: bgColor,
|
decoration: BoxDecoration(
|
||||||
|
color: bgColor,
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(10.r)),
|
||||||
|
),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
|
|
@ -208,7 +257,7 @@ Widget leftContainer(context, {required int count, required String name, require
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20.r,
|
height: 30.r,
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
name,
|
name,
|
||||||
|
|
@ -220,35 +269,42 @@ Widget leftContainer(context, {required int count, required String name, require
|
||||||
}
|
}
|
||||||
|
|
||||||
@swidget
|
@swidget
|
||||||
Widget rightContainer({required int count, required Color bgColor, required Color nameColor, required String name}) {
|
Widget rightContainer(context,{required int count, required Color bgColor, required Color nameColor, required Color borderColor,required String name}) {
|
||||||
return Container(
|
return Container(
|
||||||
color: bgColor,
|
width: (MediaQuery.of(context).size.width - 80.r) / 2,
|
||||||
child: Column(
|
height: 48.r,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: bgColor,
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(10.r)),
|
||||||
|
border: Border.all(color: borderColor,width: 1.r),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
SizedBox(
|
SizedBox(width: 20.r,),
|
||||||
height: 5.r,
|
Expanded(child: Row(
|
||||||
),
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
Row(
|
children: [
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
Text(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
count.toString(),
|
||||||
children: [
|
style: TextStyle(fontSize: 24.sp, color: const Color(0xFF505251), fontWeight: FontWeight.w300),
|
||||||
Text(
|
),
|
||||||
count.toString(),
|
Padding(
|
||||||
style: TextStyle(fontSize: 12.sp, color: nameColor, fontWeight: FontWeight.w600),
|
padding: EdgeInsets.only(top: 3.r),
|
||||||
),
|
child: Text(
|
||||||
Text(
|
'人',
|
||||||
'人',
|
style: TextStyle(fontSize: 10.sp, color: const Color(0xFF505251), fontWeight: FontWeight.w300),
|
||||||
style: TextStyle(fontSize: 8.sp, color: nameColor, fontWeight: FontWeight.w600),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
)),
|
||||||
SizedBox(
|
|
||||||
height: 5.r,
|
|
||||||
),
|
|
||||||
Text(
|
Text(
|
||||||
name,
|
name,
|
||||||
style: TextStyle(fontSize: 12.sp, color: nameColor, fontWeight: FontWeight.w500),
|
style: TextStyle(fontSize: 12.sp, color: nameColor, fontWeight: FontWeight.w600),
|
||||||
)
|
),
|
||||||
|
SizedBox(width: 20.r,),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ class _KnowledgePointsGraspPageState extends State<KnowledgePointsGraspPage> {
|
||||||
height: 30.r,
|
height: 30.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(4.r),
|
borderRadius: BorderRadius.circular(4.r),
|
||||||
color: Color(0xFF4CC793),
|
color: Theme.of(context).primaryColor,
|
||||||
),
|
),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|
@ -175,7 +175,8 @@ class _KnowledgePointsGraspPageState extends State<KnowledgePointsGraspPage> {
|
||||||
'dateStart': state.dateStart,
|
'dateStart': state.dateStart,
|
||||||
'dateEnd': state.dateEnd,
|
'dateEnd': state.dateEnd,
|
||||||
'knowledgeId': item.knowledgeId,
|
'knowledgeId': item.knowledgeId,
|
||||||
'knowledgeName': item.knowledgeName
|
'knowledgeName': item.knowledgeName,
|
||||||
|
'subject':state.subject
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
|
|
@ -200,7 +201,7 @@ class _KnowledgePointsGraspPageState extends State<KnowledgePointsGraspPage> {
|
||||||
height: 22.r,
|
height: 22.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
||||||
border: Border.all(width: 1.r, color: Color(0xFF4CC793)),
|
border: Border.all(width: 1.r, color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
|
@ -208,7 +209,7 @@ class _KnowledgePointsGraspPageState extends State<KnowledgePointsGraspPage> {
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'${item.count}次',
|
'${item.count}次',
|
||||||
style: TextStyle(fontSize: 10.sp, color: Color(0xFF4CC793)),
|
style: TextStyle(fontSize: 10.sp, color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/job_data_right_icon.png',
|
'assets/images/job_data_right_icon.png',
|
||||||
|
|
@ -225,7 +226,7 @@ class _KnowledgePointsGraspPageState extends State<KnowledgePointsGraspPage> {
|
||||||
),
|
),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '正确率:',
|
title: '正确率:',
|
||||||
color: Color(0xFF90E0BE),
|
color: Color(0xFFB2DA93),
|
||||||
percent: item.correctRate / 100,
|
percent: item.correctRate / 100,
|
||||||
padingEdg: EdgeInsets.zero,
|
padingEdg: EdgeInsets.zero,
|
||||||
marginEdg: EdgeInsets.only(top: 8.h)),
|
marginEdg: EdgeInsets.only(top: 8.h)),
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ class KnowledgePointsGraspDetailLogic extends GetxController with RequestToolMix
|
||||||
state.dateEnd = Get.arguments['dateEnd'];
|
state.dateEnd = Get.arguments['dateEnd'];
|
||||||
state.knowledgeId = Get.arguments['knowledgeId'];
|
state.knowledgeId = Get.arguments['knowledgeId'];
|
||||||
state.knowledgeName.value = Get.arguments['knowledgeName'];
|
state.knowledgeName.value = Get.arguments['knowledgeName'];
|
||||||
|
state.subject = Get.arguments['subject'] ?? -1;
|
||||||
refreshController = EasyRefreshController();
|
refreshController = EasyRefreshController();
|
||||||
EasyLoading.show(status: 'loading...');
|
EasyLoading.show(status: 'loading...');
|
||||||
getList();
|
getList();
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ class KnowledgePointsGraspDetailState {
|
||||||
late String dateStart = '';
|
late String dateStart = '';
|
||||||
late String dateEnd = '';
|
late String dateEnd = '';
|
||||||
late int knowledgeId = 0;
|
late int knowledgeId = 0;
|
||||||
|
late int subject = -1;
|
||||||
late RxList<KnowledgeReportDetail> dataList = RxList();
|
late RxList<KnowledgeReportDetail> dataList = RxList();
|
||||||
late RxList<Students> studentList = RxList();
|
late RxList<Students> studentList = RxList();
|
||||||
late RxString knowledgeName = ''.obs;
|
late RxString knowledgeName = ''.obs;
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ class _KnowledgePointsGraspDetailPageState extends State<KnowledgePointsGraspDet
|
||||||
title: title,
|
title: title,
|
||||||
studentList: state.studentList.value,
|
studentList: state.studentList.value,
|
||||||
homeworkId: homeworkId,
|
homeworkId: homeworkId,
|
||||||
|
subject: state.subject,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
@ -183,13 +184,13 @@ class _KnowledgePointsGraspDetailPageState extends State<KnowledgePointsGraspDet
|
||||||
width: 56.r,
|
width: 56.r,
|
||||||
height: 20.r,
|
height: 20.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Color(0xFFD4FFED),
|
color: Color(0xFFE9FFD9),
|
||||||
borderRadius: BorderRadius.circular(20.r),
|
borderRadius: BorderRadius.circular(20.r),
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
quickText('正确率', color: Color(0xFF4CC793), size: 10.sp),
|
quickText('正确率', color: Color(0xFF313131), size: 10.sp),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/job_data_right_icon.png',
|
'assets/images/job_data_right_icon.png',
|
||||||
width: 8.r,
|
width: 8.r,
|
||||||
|
|
@ -214,7 +215,7 @@ class _KnowledgePointsGraspDetailPageState extends State<KnowledgePointsGraspDet
|
||||||
lineHeight: 8.h,
|
lineHeight: 8.h,
|
||||||
animationDuration: 2500,
|
animationDuration: 2500,
|
||||||
percent: item.correctRate / 100,
|
percent: item.correctRate / 100,
|
||||||
progressColor: Color(0xFF90E0BE),
|
progressColor: Color(0xFFB2DA93),
|
||||||
backgroundColor: Color(0xFFE8E8E8),
|
backgroundColor: Color(0xFFE8E8E8),
|
||||||
barRadius: Radius.circular(10.r),
|
barRadius: Radius.circular(10.r),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ class QuickDataCheckLogic extends GetxController with RequestToolMixin {
|
||||||
void getWorkData() async {
|
void getWorkData() async {
|
||||||
HomeworkDetails data = await getClient().getHomeworkDetails(state.homeworkId.value, state.classId.value);
|
HomeworkDetails data = await getClient().getHomeworkDetails(state.homeworkId.value, state.classId.value);
|
||||||
EasyLoading.dismiss();
|
EasyLoading.dismiss();
|
||||||
|
state.subject = data.subject!;
|
||||||
state.dataCount = Utils.getHomeworkData(data);
|
state.dataCount = Utils.getHomeworkData(data);
|
||||||
state.homeData = data;
|
state.homeData = data;
|
||||||
state.kgReport.value = data.questions.where((w) => w.questionType == 1).toList();
|
state.kgReport.value = data.questions.where((w) => w.questionType == 1).toList();
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ class QuickDataCheckState {
|
||||||
late RxList<Questions> zgReport = RxList();
|
late RxList<Questions> zgReport = RxList();
|
||||||
late RxList<Students> studentList = RxList();
|
late RxList<Students> studentList = RxList();
|
||||||
late HomeworkDetails homeData;
|
late HomeworkDetails homeData;
|
||||||
|
late int subject = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
class CountData extends Object {
|
class CountData extends Object {
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ class _QuickDataCheckPageState extends State<QuickDataCheckPage> {
|
||||||
height: MediaQuery.of(context).size.height,
|
height: MediaQuery.of(context).size.height,
|
||||||
decoration: const BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
gradient: LinearGradient(begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [
|
gradient: LinearGradient(begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [
|
||||||
Color(0xFF4CC793),
|
Color(0xFF8C68FF),
|
||||||
Color(0xFFF5F5F5),
|
Color(0xFFF5F5F5),
|
||||||
], stops: [
|
], stops: [
|
||||||
0.09,
|
0.09,
|
||||||
|
|
@ -201,7 +201,7 @@ class _QuickDataCheckPageState extends State<QuickDataCheckPage> {
|
||||||
lineHeight: 9.h,
|
lineHeight: 9.h,
|
||||||
animationDuration: 2500,
|
animationDuration: 2500,
|
||||||
percent: state.dataCount.kgtAnswerRate! / 100,
|
percent: state.dataCount.kgtAnswerRate! / 100,
|
||||||
progressColor: const Color(0xFFFF7F22),
|
progressColor: const Color(0xFFB2DA93),
|
||||||
backgroundColor: const Color(0xFFEAEAEA),
|
backgroundColor: const Color(0xFFEAEAEA),
|
||||||
barRadius: Radius.circular(10.r),
|
barRadius: Radius.circular(10.r),
|
||||||
)),
|
)),
|
||||||
|
|
@ -234,7 +234,7 @@ class _QuickDataCheckPageState extends State<QuickDataCheckPage> {
|
||||||
lineHeight: 9.h,
|
lineHeight: 9.h,
|
||||||
animationDuration: 2500,
|
animationDuration: 2500,
|
||||||
percent: state.dataCount.zgtAnswerRate! / 100,
|
percent: state.dataCount.zgtAnswerRate! / 100,
|
||||||
progressColor: const Color(0xFFFF7F22),
|
progressColor: const Color(0xFFB2DA93),
|
||||||
backgroundColor: const Color(0xFFEAEAEA),
|
backgroundColor: const Color(0xFFEAEAEA),
|
||||||
barRadius: Radius.circular(10.r),
|
barRadius: Radius.circular(10.r),
|
||||||
)),
|
)),
|
||||||
|
|
@ -248,6 +248,7 @@ class _QuickDataCheckPageState extends State<QuickDataCheckPage> {
|
||||||
jobId: state.homeworkId.value,
|
jobId: state.homeworkId.value,
|
||||||
kgCount: state.dataCount.kgtDtlCount!,
|
kgCount: state.dataCount.kgtDtlCount!,
|
||||||
zgCount: state.dataCount.zgtDtlCount!,
|
zgCount: state.dataCount.zgtDtlCount!,
|
||||||
|
subject:state.subject,
|
||||||
),
|
),
|
||||||
//客观题、主观题
|
//客观题、主观题
|
||||||
KgtZgtTable(
|
KgtZgtTable(
|
||||||
|
|
@ -258,7 +259,8 @@ class _QuickDataCheckPageState extends State<QuickDataCheckPage> {
|
||||||
kgtOkRate: state.dataCount.kgtOkRate!.toStringAsFixed(0),
|
kgtOkRate: state.dataCount.kgtOkRate!.toStringAsFixed(0),
|
||||||
kgtCorrectRate: state.dataCount.kgtCorrectRate!.toStringAsFixed(0),
|
kgtCorrectRate: state.dataCount.kgtCorrectRate!.toStringAsFixed(0),
|
||||||
zgtOkRate: state.dataCount.zgtOkRate!.toStringAsFixed(0),
|
zgtOkRate: state.dataCount.zgtOkRate!.toStringAsFixed(0),
|
||||||
zgtCorrectRate: state.dataCount.zgtCorrectRate!.toStringAsFixed(0)),
|
zgtCorrectRate: state.dataCount.zgtCorrectRate!.toStringAsFixed(0),
|
||||||
|
subject:state.subject),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ class KgtZgtTable extends StatefulWidget {
|
||||||
final String zgtOkRate;
|
final String zgtOkRate;
|
||||||
final String kgtCorrectRate;
|
final String kgtCorrectRate;
|
||||||
final String zgtCorrectRate;
|
final String zgtCorrectRate;
|
||||||
|
final int subject;
|
||||||
|
|
||||||
const KgtZgtTable(
|
const KgtZgtTable(
|
||||||
{Key? key,
|
{Key? key,
|
||||||
|
|
@ -26,7 +27,8 @@ class KgtZgtTable extends StatefulWidget {
|
||||||
required this.kgtOkRate,
|
required this.kgtOkRate,
|
||||||
required this.kgtCorrectRate,
|
required this.kgtCorrectRate,
|
||||||
required this.zgtOkRate,
|
required this.zgtOkRate,
|
||||||
required this.zgtCorrectRate,})
|
required this.zgtCorrectRate,
|
||||||
|
required this.subject})
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -90,6 +92,7 @@ class _KgtZgtTableState extends State<KgtZgtTable> {
|
||||||
fixedRows: 1,
|
fixedRows: 1,
|
||||||
jobId: widget.homeworkId,
|
jobId: widget.homeworkId,
|
||||||
studentCount: widget.studentCount,
|
studentCount: widget.studentCount,
|
||||||
|
subject:widget.subject,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (widget.kgReport.isEmpty) MyEmptyWidget(imgWidth: 100.r, imgHeight: 100.r, font: 8.sp),
|
if (widget.kgReport.isEmpty) MyEmptyWidget(imgWidth: 100.r, imgHeight: 100.r, font: 8.sp),
|
||||||
|
|
@ -144,6 +147,7 @@ class _KgtZgtTableState extends State<KgtZgtTable> {
|
||||||
isZG: true,
|
isZG: true,
|
||||||
jobId: widget.homeworkId,
|
jobId: widget.homeworkId,
|
||||||
studentCount: widget.studentCount,
|
studentCount: widget.studentCount,
|
||||||
|
subject: widget.subject,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (widget.zgReport.isEmpty) MyEmptyWidget(imgWidth: 100.r, imgHeight: 100.r, font: 8.sp),
|
if (widget.zgReport.isEmpty) MyEmptyWidget(imgWidth: 100.r, imgHeight: 100.r, font: 8.sp),
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,10 @@ class QuickDataCheckBottom extends StatefulWidget {
|
||||||
final String jobId;
|
final String jobId;
|
||||||
final int kgCount;
|
final int kgCount;
|
||||||
final int zgCount;
|
final int zgCount;
|
||||||
|
final int subject;
|
||||||
final List<Students>? jobData;
|
final List<Students>? jobData;
|
||||||
|
|
||||||
const QuickDataCheckBottom({Key? key, required this.jobId, required this.jobData, required this.kgCount, required this.zgCount}) : super(key: key);
|
const QuickDataCheckBottom({Key? key, required this.jobId, required this.jobData, required this.kgCount, required this.zgCount,required this.subject}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<QuickDataCheckBottom> createState() => _QuickDataCheckBottomState();
|
State<QuickDataCheckBottom> createState() => _QuickDataCheckBottomState();
|
||||||
|
|
@ -241,6 +242,7 @@ class _QuickDataCheckBottomState extends State<QuickDataCheckBottom> {
|
||||||
hasUnrated: false,
|
hasUnrated: false,
|
||||||
kgCount: widget.kgCount,
|
kgCount: widget.kgCount,
|
||||||
zgCount: widget.zgCount,
|
zgCount: widget.zgCount,
|
||||||
|
subject:widget.subject,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ class QuickStudentDataTable extends StatefulWidget {
|
||||||
final bool hasUnrated;
|
final bool hasUnrated;
|
||||||
final int kgCount;
|
final int kgCount;
|
||||||
final int zgCount;
|
final int zgCount;
|
||||||
|
final int subject;
|
||||||
|
|
||||||
const QuickStudentDataTable({
|
const QuickStudentDataTable({
|
||||||
Key? key,
|
Key? key,
|
||||||
|
|
@ -23,6 +24,7 @@ class QuickStudentDataTable extends StatefulWidget {
|
||||||
required this.hasUnrated,
|
required this.hasUnrated,
|
||||||
required this.kgCount,
|
required this.kgCount,
|
||||||
required this.zgCount,
|
required this.zgCount,
|
||||||
|
required this.subject,
|
||||||
this.fixedCols = 0,
|
this.fixedCols = 0,
|
||||||
this.fixedRows = 0,
|
this.fixedRows = 0,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
@ -49,7 +51,7 @@ class _QuickStudentDataTableState extends State<QuickStudentDataTable> {
|
||||||
cells: [
|
cells: [
|
||||||
DataCell(InkWell(
|
DataCell(InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': item.studentId, 'homeworkId': widget.jobId});
|
Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': item.studentId, 'homeworkId': widget.jobId,'subject':widget.subject});
|
||||||
},
|
},
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ class ReportTable extends StatefulWidget {
|
||||||
final bool? isZG;
|
final bool? isZG;
|
||||||
final String jobId;
|
final String jobId;
|
||||||
final int studentCount;
|
final int studentCount;
|
||||||
|
final int subject;
|
||||||
|
|
||||||
const ReportTable({
|
const ReportTable({
|
||||||
Key? key,
|
Key? key,
|
||||||
|
|
@ -27,6 +28,7 @@ class ReportTable extends StatefulWidget {
|
||||||
required this.bodyList,
|
required this.bodyList,
|
||||||
required this.jobId,
|
required this.jobId,
|
||||||
required this.studentCount,
|
required this.studentCount,
|
||||||
|
required this.subject,
|
||||||
this.fixedCols = 0,
|
this.fixedCols = 0,
|
||||||
this.fixedRows = 0,
|
this.fixedRows = 0,
|
||||||
this.isZG = false,
|
this.isZG = false,
|
||||||
|
|
@ -41,10 +43,10 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
int? _sortColumnIndex;
|
int? _sortColumnIndex;
|
||||||
final bool _sortAscending = true;
|
final bool _sortAscending = true;
|
||||||
List colorMap = const [
|
List colorMap = const [
|
||||||
Color.fromRGBO(0, 179, 134, 1),
|
Color.fromRGBO(184, 161, 255, 1),
|
||||||
Color.fromRGBO(1, 193, 254, 1),
|
Color.fromRGBO(79, 199, 147, 1),
|
||||||
Color.fromRGBO(239, 135, 20, 1),
|
Color.fromRGBO(144, 224, 190, 1),
|
||||||
Color.fromRGBO(219, 0, 0, 1),
|
Color.fromRGBO(255, 107, 107, 1),
|
||||||
Color.fromRGBO(211, 211, 211, 1),
|
Color.fromRGBO(211, 211, 211, 1),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -73,19 +75,19 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
mapIcon(const Color(0xFF4CC793)),
|
mapIcon(const Color(0xFFB8A1FF)),
|
||||||
SizedBox(width: 5.r,),
|
SizedBox(width: 5.r,),
|
||||||
mapTxt('优'),
|
mapTxt('优'),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
mapIcon(const Color(0xFF01C1FE)),
|
mapIcon(const Color(0xFF4CC793)),
|
||||||
SizedBox(width: 5.r,),
|
SizedBox(width: 5.r,),
|
||||||
mapTxt('良'),
|
mapTxt('良'),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
mapIcon(const Color(0xFFEF8714)),
|
mapIcon(const Color(0xFF90E0BE)),
|
||||||
SizedBox(width: 5.r,),
|
SizedBox(width: 5.r,),
|
||||||
mapTxt('中'),
|
mapTxt('中'),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
mapIcon(const Color(0xFFDB0000)),
|
mapIcon(const Color(0xFFFF6B6B)),
|
||||||
SizedBox(width: 5.r,),
|
SizedBox(width: 5.r,),
|
||||||
mapTxt('差'),
|
mapTxt('差'),
|
||||||
],
|
],
|
||||||
|
|
@ -105,6 +107,7 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
color: colorMap[index],
|
color: colorMap[index],
|
||||||
value: e.count / widget.studentCount * 100,
|
value: e.count / widget.studentCount * 100,
|
||||||
radius: 110,
|
radius: 110,
|
||||||
|
// borderSide:BorderSide(color: const Color(0xFF273366),width: 0.5.r),
|
||||||
// title: e.title + (Utils.doubleToStringAsFixed(e.count / widget.studentCount * 100) + '%'),
|
// title: e.title + (Utils.doubleToStringAsFixed(e.count / widget.studentCount * 100) + '%'),
|
||||||
title: e.title + e.count.toString(),
|
title: e.title + e.count.toString(),
|
||||||
titleStyle: TextStyle(fontSize: 12.sp, color: Color(0xFFFFFFFF)),
|
titleStyle: TextStyle(fontSize: 12.sp, color: Color(0xFFFFFFFF)),
|
||||||
|
|
@ -185,17 +188,17 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
Text(
|
Text(
|
||||||
widget.isZG == true ? '主观题' : '客观题',
|
widget.isZG == true ? '主观题' : '客观题',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.sp, color: const Color(0xFF4CC793)),
|
fontSize: 14.sp, color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'―',
|
'―',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.sp, color: const Color(0xFF4CC793)),
|
fontSize: 14.sp, color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'第$questionNo题',
|
'第$questionNo题',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.sp, color: Color(0xFF4CC793)),
|
fontSize: 14.sp, color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
@ -355,7 +358,7 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
void goQuickCheckPersonalPath(id) {
|
void goQuickCheckPersonalPath(id) {
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
Get.toNamed(Routes.studentPersonalPage,
|
Get.toNamed(Routes.studentPersonalPage,
|
||||||
arguments: {'studentId': id, 'homeworkId': widget.jobId});
|
arguments: {'studentId': id, 'homeworkId': widget.jobId,'subject':widget.subject});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -456,7 +459,7 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
children: [
|
children: [
|
||||||
Text('${item.answerCount}/${widget.studentCount}',
|
Text('${item.answerCount}/${widget.studentCount}',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10.sp, color: const Color(0xFF4CC793))),
|
fontSize: 10.sp, color: Theme.of(context).primaryColor)),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/green_right_icon.png',
|
'assets/images/green_right_icon.png',
|
||||||
width: 12.r,
|
width: 12.r,
|
||||||
|
|
@ -500,14 +503,14 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
fontSize: 10.sp,
|
fontSize: 10.sp,
|
||||||
color: widget.isZG == true
|
color: widget.isZG == true
|
||||||
? const Color(0xFFFF8A00)
|
? const Color(0xFFFF8A00)
|
||||||
: const Color(0xFF4CC793))),
|
: Theme.of(context).primaryColor)),
|
||||||
)
|
)
|
||||||
: Text(item.answer,
|
: Text(item.answer,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10.sp,
|
fontSize: 10.sp,
|
||||||
color: widget.isZG == true
|
color: widget.isZG == true
|
||||||
? const Color(0xFFFF8A00)
|
? const Color(0xFFFF8A00)
|
||||||
: const Color(0xFF4CC793))),
|
: Theme.of(context).primaryColor)),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
DataCell(InkWell(
|
DataCell(InkWell(
|
||||||
|
|
@ -524,7 +527,7 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
children: [
|
children: [
|
||||||
Text('${item.priorityInfo.length}人答错',
|
Text('${item.priorityInfo.length}人答错',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10.sp, color: const Color(0xFF4CC793))),
|
fontSize: 10.sp, color: Theme.of(context).primaryColor)),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/green_right_icon.png',
|
'assets/images/green_right_icon.png',
|
||||||
width: 12.r,
|
width: 12.r,
|
||||||
|
|
@ -549,14 +552,14 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
fontSize: 10.sp,
|
fontSize: 10.sp,
|
||||||
color: widget.isZG == true
|
color: widget.isZG == true
|
||||||
? const Color(0xFFFF8A00)
|
? const Color(0xFFFF8A00)
|
||||||
: const Color(0xFF4CC793))),
|
: Theme.of(context).primaryColor)),
|
||||||
)
|
)
|
||||||
: Text(item.answer,
|
: Text(item.answer,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10.sp,
|
fontSize: 10.sp,
|
||||||
color: widget.isZG == true
|
color: widget.isZG == true
|
||||||
? const Color(0xFFFF8A00)
|
? const Color(0xFFFF8A00)
|
||||||
: const Color(0xFF4CC793))),
|
: Theme.of(context).primaryColor)),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ class _ReadOverPageState extends State<ReadOverPage> {
|
||||||
),
|
),
|
||||||
labelStyle: TextStyle(
|
labelStyle: TextStyle(
|
||||||
fontSize: 14.sp,
|
fontSize: 14.sp,
|
||||||
color: const Color(0xFF4CC793),
|
color: const Color(0xFF8C68FF),
|
||||||
),
|
),
|
||||||
// labelColor: const Color.fromRGBO(45, 56, 76, 1),
|
// labelColor: const Color.fromRGBO(45, 56, 76, 1),
|
||||||
indicator: const UnderlineTabIndicator(
|
indicator: const UnderlineTabIndicator(
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,7 @@ Widget $reviewedItem({
|
||||||
arguments: {'id': jobTaskItem.id, 'name': jobTaskItem.name, 'grade': jobTaskItem.grade,'subject':jobTaskItem.subject, 'completed': true,'tabIndex':tabIndex});
|
arguments: {'id': jobTaskItem.id, 'name': jobTaskItem.name, 'grade': jobTaskItem.grade,'subject':jobTaskItem.subject, 'completed': true,'tabIndex':tabIndex});
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: EdgeInsets.only(top: 10.h),
|
padding: EdgeInsets.only(right: 5.w),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(6.r),
|
borderRadius: BorderRadius.circular(6.r),
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
|
|
@ -286,42 +286,39 @@ Widget $reviewedItem({
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
// 顶部任务名称
|
// 顶部任务名称
|
||||||
Padding(
|
Row(
|
||||||
padding: padEdg,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
child: Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
|
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
width: 32.w,
|
width: 32.w,
|
||||||
height: 18.h,
|
height: 18.h,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
padding: EdgeInsets.only(left: 2.w),
|
padding: EdgeInsets.only(left: 2.w),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: type == 1 ? const Color(0xFF4CC793) : const Color.fromRGBO(255, 175, 56, 1),
|
color: type == 1 ? const Color(0xFFB2DA93) : const Color(0xFFEF8714),
|
||||||
borderRadius: BorderRadius.only(
|
borderRadius: BorderRadius.only(
|
||||||
topLeft: Radius.circular(14.r),
|
topLeft: Radius.circular(6.r),
|
||||||
topRight: Radius.circular(3.r),
|
topRight: Radius.circular(0.r),
|
||||||
bottomLeft: Radius.circular(4.r),
|
bottomLeft: Radius.circular(0.r),
|
||||||
bottomRight: Radius.circular(4.r),
|
bottomRight: Radius.circular(12.r),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
margin: EdgeInsets.only(top:3.h,right: 4.w),
|
|
||||||
child: quickText(type == 1 ? '作业' : '考试', color: Colors.white, size: 10.sp),
|
|
||||||
),
|
),
|
||||||
Expanded(
|
margin: EdgeInsets.only(top:0.h,right: 4.w),
|
||||||
child: quickText(jobTaskItem.name, size: 14.sp, color: const Color.fromRGBO(70, 70, 70, 1), maxLines: 2),
|
child: quickText(type == 1 ? '作业' : '考试', color: Colors.white, size: 10.sp),
|
||||||
),
|
),
|
||||||
if (jobTaskItem.isFixed!)
|
Expanded(
|
||||||
Padding(
|
child: quickText(jobTaskItem.name, size: 14.sp, color: const Color.fromRGBO(70, 70, 70, 1), maxLines: 2),
|
||||||
padding: EdgeInsets.only(top: 3.r),
|
),
|
||||||
child: Text(
|
if (jobTaskItem.isFixed!)
|
||||||
'已订正',
|
Padding(
|
||||||
style: TextStyle(fontSize: 10.sp, color: const Color(0xFFF16262)),
|
padding: EdgeInsets.only(top: 3.r),
|
||||||
),
|
child: Text(
|
||||||
|
'已订正',
|
||||||
|
style: TextStyle(fontSize: 10.sp, color: const Color(0xFFF16262)),
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
],
|
||||||
),
|
),
|
||||||
|
|
||||||
Padding(
|
Padding(
|
||||||
|
|
@ -335,21 +332,21 @@ Widget $reviewedItem({
|
||||||
size: 10.sp,
|
size: 10.sp,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
quickText(' / ', color: const Color.fromRGBO(76, 199, 147, 1), size: 10.sp, fontWeight: FontWeight.w500),
|
quickText(' / ', color: const Color(0xFF8C68FF), size: 10.sp, fontWeight: FontWeight.w500),
|
||||||
quickText(
|
quickText(
|
||||||
'参与班级:',
|
'参与班级:',
|
||||||
color: const Color.fromRGBO(76, 199, 147, 1),
|
color: const Color(0xFF8C68FF),
|
||||||
size: 9.sp,
|
size: 9.sp,
|
||||||
),
|
),
|
||||||
quickText(
|
quickText(
|
||||||
'${jobTaskItem.classCount}',
|
'${jobTaskItem.classCount}',
|
||||||
color: const Color.fromRGBO(76, 199, 147, 1),
|
color: const Color(0xFF8C68FF),
|
||||||
size: 10.sp,
|
size: 10.sp,
|
||||||
),
|
),
|
||||||
quickText(' / ', color: const Color.fromRGBO(116, 145, 253, 1), size: 10.sp, fontWeight: FontWeight.w500),
|
quickText(' / ', color: const Color(0xFF8C68FF), size: 10.sp, fontWeight: FontWeight.w500),
|
||||||
quickText(
|
quickText(
|
||||||
'科目:$subjectName',
|
'科目:$subjectName',
|
||||||
color: const Color.fromRGBO(116, 145, 253, 1),
|
color: const Color(0xFF8C68FF),
|
||||||
size: 9.sp,
|
size: 9.sp,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
@ -394,7 +391,7 @@ Widget $reviewedItem({
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
border: Border(right: BorderSide(width: 1.r, color: const Color(0xFFDCDCDC))),
|
border: Border(right: BorderSide(width: 1.r, color: const Color(0xFFDCDCDC))),
|
||||||
),
|
),
|
||||||
child: quickText('收集订正', color: const Color(0xFF4CC793), size: 11.sp),
|
child: quickText('收集订正', color: const Color(0xFF8C68FF), size: 11.sp),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ class _TaskListItemState extends State<TaskListItem> {
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
padding: EdgeInsets.only(left: Utils.isPad() ? 2.w : 3.w),
|
padding: EdgeInsets.only(left: Utils.isPad() ? 2.w : 3.w),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: const Color(0xFF4CC793),
|
color: const Color(0xFFB2DA93),
|
||||||
borderRadius: BorderRadius.only(
|
borderRadius: BorderRadius.only(
|
||||||
topLeft: Radius.circular(14.r),
|
topLeft: Radius.circular(14.r),
|
||||||
topRight: Radius.circular(3.r),
|
topRight: Radius.circular(3.r),
|
||||||
|
|
@ -155,167 +155,168 @@ class _TaskListItemState extends State<TaskListItem> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: InkWell(
|
: Padding(
|
||||||
onTap: () {
|
padding: EdgeInsets.only(top: 10.r),
|
||||||
Get.toNamed(Routes.annotateClassPage,
|
child: InkWell(
|
||||||
arguments: {'id': widget.jobTaskItem.id, 'name': widget.jobTaskItem.name, 'grade': widget.jobTaskItem.grade,'subject':widget.jobTaskItem.subject,'tabIndex':widget.tabIndex});
|
onTap: () {
|
||||||
},
|
Get.toNamed(Routes.annotateClassPage,
|
||||||
child: Stack(
|
arguments: {'id': widget.jobTaskItem.id, 'name': widget.jobTaskItem.name, 'grade': widget.jobTaskItem.grade,'subject':widget.jobTaskItem.subject,'tabIndex':widget.tabIndex});
|
||||||
alignment: const FractionalOffset(0.95, 0),
|
},
|
||||||
children: [
|
child: Container(
|
||||||
Container(
|
margin: EdgeInsets.only(bottom: 16.h),
|
||||||
color: Colors.transparent,
|
width: Get.width,
|
||||||
padding: EdgeInsets.only(top: 40.r),
|
decoration: BoxDecoration(
|
||||||
child: Container(
|
borderRadius: BorderRadius.circular(6.r),
|
||||||
margin: EdgeInsets.only(bottom: 16.h),
|
color: const Color.fromRGBO(255, 255, 255, 1),
|
||||||
padding: EdgeInsets.symmetric(vertical: 16.h,horizontal: 10.w),
|
boxShadow: const [
|
||||||
width: Get.width,
|
BoxShadow(
|
||||||
decoration: BoxDecoration(
|
color: Color.fromRGBO(210, 216, 241, 1),
|
||||||
borderRadius: BorderRadius.circular(6.r),
|
offset: Offset.zero, //阴影y轴偏移量
|
||||||
color: const Color.fromRGBO(255, 255, 255, 1),
|
blurRadius: 5.8, //阴影模糊程度
|
||||||
boxShadow: const [
|
spreadRadius: 0, //阴影扩散程度
|
||||||
BoxShadow(
|
)
|
||||||
color: Color.fromRGBO(210, 216, 241, 1),
|
],
|
||||||
offset: Offset.zero, //阴影y轴偏移量
|
),
|
||||||
blurRadius: 5.8, //阴影模糊程度
|
child: Row(
|
||||||
spreadRadius: 0, //阴影扩散程度
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
)
|
children: [
|
||||||
],
|
Expanded(
|
||||||
),
|
child: Column(
|
||||||
child: Row(
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
children: [
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
Expanded(
|
children: [
|
||||||
child: Column(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
SizedBox(height: 10.h),
|
Container(
|
||||||
Row(
|
width: Utils.isPad() ? 32.w : 38.w,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
height: 18.h,
|
||||||
children: [
|
alignment: Alignment.center,
|
||||||
Container(
|
padding: EdgeInsets.only(left: Utils.isPad() ? 2.w : 3.w),
|
||||||
width: Utils.isPad() ? 32.w : 38.w,
|
decoration: BoxDecoration(
|
||||||
height: 18.h,
|
color: widget.type == 1 ? const Color(0xFFB2DA93) : const Color(0xFFEF8714),
|
||||||
alignment: Alignment.center,
|
borderRadius: BorderRadius.only(
|
||||||
padding: EdgeInsets.only(left: Utils.isPad() ? 2.w : 3.w),
|
topLeft: Radius.circular(6.r),
|
||||||
decoration: BoxDecoration(
|
topRight: Radius.circular(0.r),
|
||||||
color: widget.type == 1 ? const Color(0xFF4CC793) : const Color.fromRGBO(255, 175, 56, 1),
|
bottomLeft: Radius.circular(0.r),
|
||||||
borderRadius: BorderRadius.only(
|
bottomRight: Radius.circular(12.r),
|
||||||
topLeft: Radius.circular(14.r),
|
|
||||||
topRight: Radius.circular(3.r),
|
|
||||||
bottomLeft: Radius.circular(4.r),
|
|
||||||
bottomRight: Radius.circular(4.r),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
margin: EdgeInsets.only(top:3.h,right: 4.w),
|
|
||||||
child: quickText(widget.jobTaskItem.assessType == 0?'作业':'考试', color: Colors.white, size: 10.sp),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: quickText(
|
|
||||||
widget.jobTaskItem.name,
|
|
||||||
maxLines: 2,
|
|
||||||
size: Utils.isPad() ? 14.sp : 16.sp,
|
|
||||||
color: const Color.fromRGBO(70, 70, 70, 1),
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
SizedBox(height: 10.h),
|
|
||||||
Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
quickText(
|
|
||||||
EnumUtils.formatSubject(widget.jobTaskItem.subject),
|
|
||||||
color: const Color.fromRGBO(97, 97, 97, 1),
|
|
||||||
size: 12.sp,
|
|
||||||
),
|
|
||||||
quickText(' / ', color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp, fontWeight: FontWeight.w500),
|
|
||||||
Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
quickText('题量:', color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp),
|
|
||||||
quickText(
|
|
||||||
'${widget.jobTaskItem.questionCount! - widget.jobTaskItem.annotateCount!}',
|
|
||||||
color: const Color.fromRGBO(97, 97, 97, 1),
|
|
||||||
size: 13.sp,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
quickText(' / ', color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp, fontWeight: FontWeight.w500),
|
|
||||||
quickText(DateTime.parse(widget.jobTaskItem.publishTime).toString().substring(0, 10),
|
|
||||||
color: const Color.fromRGBO(97, 97, 97, 1), size: 12.sp),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
SizedBox(height: 10.h),
|
|
||||||
InkWell(
|
|
||||||
onTap: () {
|
|
||||||
if (!widget.jobTaskItem.isFixed!) {
|
|
||||||
EasyLoading.show(status: 'loading...');
|
|
||||||
widget.collectFun(widget.jobTaskItem);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
padding: EdgeInsets.symmetric(vertical: 4.r, horizontal: 20.r),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: widget.jobTaskItem.isFixed! ? Color(0xFFF4F4F4) : Color(0xFFF2FFFA),
|
|
||||||
border: Border.all(width: 1.r, color: widget.jobTaskItem.isFixed! ? Colors.transparent : Color(0xFF4CC793)),
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
|
||||||
),
|
|
||||||
child: Text(
|
|
||||||
widget.jobTaskItem.isFixed! ? '已订正' : '收集订正',
|
|
||||||
style: TextStyle(fontSize: 10.sp, color: const Color(0xFF4CC793)),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
margin: EdgeInsets.only(top:0.h,right: 4.w),
|
||||||
|
child: quickText(widget.jobTaskItem.assessType == 0?'作业':'考试', color: Colors.white, size: 10.sp),
|
||||||
),
|
),
|
||||||
// FavoriteButton(jobTaskItem.id, jobTaskItem.title),
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.only(top: 2.r),
|
||||||
|
child: quickText(
|
||||||
|
widget.jobTaskItem.name,
|
||||||
|
maxLines: 2,
|
||||||
|
size: Utils.isPad() ? 14.sp : 16.sp,
|
||||||
|
color: const Color.fromRGBO(70, 70, 70, 1),
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
SizedBox(height: 10.h),
|
||||||
SizedBox(width: 130.r,),
|
Padding(
|
||||||
],
|
padding: EdgeInsets.only(left: 20.r),
|
||||||
),
|
child: Row(
|
||||||
),
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
),
|
children: [
|
||||||
Container(
|
quickText(
|
||||||
padding: EdgeInsets.all(9.r),
|
EnumUtils.formatSubject(widget.jobTaskItem.subject),
|
||||||
decoration: const BoxDecoration(shape: BoxShape.circle, color: Colors.white),
|
color: const Color.fromRGBO(97, 97, 97, 1),
|
||||||
child: CircularPercentIndicator(
|
size: 12.sp,
|
||||||
radius: 50.r,
|
),
|
||||||
lineWidth: 18.r,
|
quickText(' / ', color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp, fontWeight: FontWeight.w500),
|
||||||
animation: true,
|
Row(
|
||||||
percent: widget.jobTaskItem.annotateRate == null ? 0 : widget.jobTaskItem.annotateRate! / 100,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
center: Text.rich(TextSpan(children: [
|
children: [
|
||||||
TextSpan(
|
quickText('题量:', color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp),
|
||||||
text: Utils.getDoubleRemoveZero(widget.jobTaskItem.annotateRate, '0'),
|
quickText(
|
||||||
style: TextStyle(
|
'${widget.jobTaskItem.questionCount! - widget.jobTaskItem.annotateCount!}',
|
||||||
fontWeight: FontWeight.bold,
|
color: const Color.fromRGBO(97, 97, 97, 1),
|
||||||
fontSize: 16.sp,
|
size: 13.sp,
|
||||||
color: Theme.of(context).primaryColor,
|
),
|
||||||
),
|
],
|
||||||
|
),
|
||||||
|
quickText(' / ', color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp, fontWeight: FontWeight.w500),
|
||||||
|
quickText(DateTime.parse(widget.jobTaskItem.publishTime).toString().substring(0, 10),
|
||||||
|
color: const Color.fromRGBO(97, 97, 97, 1), size: 12.sp),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(height: 10.h),
|
||||||
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
if (!widget.jobTaskItem.isFixed!) {
|
||||||
|
EasyLoading.show(status: 'loading...');
|
||||||
|
widget.collectFun(widget.jobTaskItem);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 4.r, horizontal: 20.r),
|
||||||
|
margin: EdgeInsets.only(left: 20.r),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: widget.jobTaskItem.isFixed! ? Color(0xFFF4F4F4) : Color(0xFFF2EEFF),
|
||||||
|
border: Border.all(width: 1.r, color: widget.jobTaskItem.isFixed! ? Colors.transparent : const Color(0xFF8C68FF)),
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
widget.jobTaskItem.isFixed! ? '已订正' : '收集订正',
|
||||||
|
style: TextStyle(fontSize: 10.sp, color: widget.jobTaskItem.isFixed! ?const Color(0xFFF16262): const Color(0xFF8C68FF)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// FavoriteButton(jobTaskItem.id, jobTaskItem.title),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
TextSpan(
|
|
||||||
text: "%",
|
|
||||||
style: TextStyle(color: const Color.fromRGBO(70, 70, 70, 1), fontSize: 12.sp, fontWeight: FontWeight.bold),
|
|
||||||
),
|
|
||||||
])),
|
|
||||||
circularStrokeCap: CircularStrokeCap.round,
|
|
||||||
// progressColor: Theme.of(context).primaryColor,
|
|
||||||
linearGradient: LinearGradient(
|
|
||||||
begin: Alignment.topCenter,
|
|
||||||
end: Alignment.bottomCenter,
|
|
||||||
tileMode: TileMode.clamp,
|
|
||||||
stops: const [0.0, 1.0],
|
|
||||||
colors: [
|
|
||||||
Theme.of(context).primaryColor.withOpacity(0.1),
|
|
||||||
Theme.of(context).primaryColor,
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
backgroundColor: const Color.fromRGBO(244, 244, 244, 1),
|
SizedBox(width: 10.r,),
|
||||||
),
|
Container(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 10.r,horizontal: 9.r),
|
||||||
|
decoration: const BoxDecoration(shape: BoxShape.circle, color: Colors.white),
|
||||||
|
child: CircularPercentIndicator(
|
||||||
|
radius: 50.r,
|
||||||
|
lineWidth: 10.r,
|
||||||
|
animation: true,
|
||||||
|
reverse:true,
|
||||||
|
percent: widget.jobTaskItem.annotateRate == null ? 0 : widget.jobTaskItem.annotateRate! / 100,
|
||||||
|
center: Text.rich(TextSpan(children: [
|
||||||
|
TextSpan(
|
||||||
|
text: Utils.getDoubleRemoveZero(widget.jobTaskItem.annotateRate, '0'),
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 16.sp,
|
||||||
|
color: Theme.of(context).primaryColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: "%",
|
||||||
|
style: TextStyle(color: Theme.of(context).primaryColor, fontSize: 12.sp, fontWeight: FontWeight.bold),
|
||||||
|
),
|
||||||
|
])),
|
||||||
|
circularStrokeCap: CircularStrokeCap.round,
|
||||||
|
// progressColor: Theme.of(context).primaryColor,
|
||||||
|
linearGradient: LinearGradient(
|
||||||
|
begin: Alignment.topCenter,
|
||||||
|
end: Alignment.bottomCenter,
|
||||||
|
tileMode: TileMode.clamp,
|
||||||
|
stops: const [0.0, 1.0],
|
||||||
|
colors: [
|
||||||
|
Theme.of(context).primaryColor.withOpacity(0.1),
|
||||||
|
Theme.of(context).primaryColor,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
backgroundColor: const Color.fromRGBO(244, 244, 244, 1),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ class StudentPersonalLogic extends GetxController with RequestToolMixin {
|
||||||
void onInit() {
|
void onInit() {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
state.studentId = Get.arguments['studentId'];
|
state.studentId = Get.arguments['studentId'];
|
||||||
|
state.subject = Get.arguments['subject']??-1;
|
||||||
state.homeworkId = Get.arguments['homeworkId'];
|
state.homeworkId = Get.arguments['homeworkId'];
|
||||||
getInfo();
|
getInfo();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,6 @@ class StudentPersonalState {
|
||||||
}
|
}
|
||||||
late Rx<StudentPersonalInfo> studentInfo = Rx(StudentPersonalInfo(0, '', 0, 0, [], 0, []));
|
late Rx<StudentPersonalInfo> studentInfo = Rx(StudentPersonalInfo(0, '', 0, 0, [], 0, []));
|
||||||
late int studentId;
|
late int studentId;
|
||||||
|
late int subject;
|
||||||
late String homeworkId;
|
late String homeworkId;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ class _StudentPersonalPageState extends State<StudentPersonalPage> {
|
||||||
// RouterManager.router.navigateTo(context,
|
// RouterManager.router.navigateTo(context,
|
||||||
// '${RouterManager.jobPersonalDetailPath}?studentId=${widget.studentId}&studentName=${Uri.encodeComponent(state.studentInfo.studentName!)}');
|
// '${RouterManager.jobPersonalDetailPath}?studentId=${widget.studentId}&studentName=${Uri.encodeComponent(state.studentInfo.studentName!)}');
|
||||||
Get.toNamed(Routes.studentWorkDetailPage,
|
Get.toNamed(Routes.studentWorkDetailPage,
|
||||||
arguments: {'studentId': state.studentInfo.value.studentId, 'studentName': state.studentInfo.value.studentName});
|
arguments: {'studentId': state.studentInfo.value.studentId, 'studentName': state.studentInfo.value.studentName,'subject':state.subject});
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 93.r,
|
width: 93.r,
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.sp,
|
fontSize: 14.sp,
|
||||||
color: state.isJob.value
|
color: state.isJob.value
|
||||||
? Color(0xFF4CC793)
|
? Theme.of(context).primaryColor
|
||||||
: Color(0xFF505E6E)),
|
: Color(0xFF505E6E)),
|
||||||
));
|
));
|
||||||
}),
|
}),
|
||||||
|
|
@ -104,7 +104,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.sp,
|
fontSize: 14.sp,
|
||||||
color: !state.isJob.value
|
color: !state.isJob.value
|
||||||
? Color(0xFF4CC793)
|
? Theme.of(context).primaryColor
|
||||||
: Color(0xFF505E6E)),
|
: Color(0xFF505E6E)),
|
||||||
);
|
);
|
||||||
})),
|
})),
|
||||||
|
|
@ -128,24 +128,24 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
'总览:',
|
'总览:',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 12.sp,
|
fontSize: 12.sp,
|
||||||
color: Color(0xFF4CC793),
|
color: Theme.of(context).primaryColor,
|
||||||
fontWeight: FontWeight.w600),
|
fontWeight: FontWeight.w600),
|
||||||
),
|
),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '客观题正确率:',
|
title: '客观题正确率:',
|
||||||
color: Color.fromRGBO(76, 199, 147, 0.36),
|
color:Theme.of(context).primaryColor,
|
||||||
percent: state.studentData.value.kgtCorrectRate / 100,
|
percent: state.studentData.value.kgtCorrectRate / 100,
|
||||||
padingEdg: EdgeInsets.zero,
|
padingEdg: EdgeInsets.zero,
|
||||||
marginEdg: EdgeInsets.only(top: 8.h)),
|
marginEdg: EdgeInsets.only(top: 8.h)),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '主观题正确率:',
|
title: '主观题正确率:',
|
||||||
color: Color.fromRGBO(76, 199, 147, 0.36),
|
color: Theme.of(context).primaryColor,
|
||||||
percent: state.studentData.value.zgtCorrectRate / 100,
|
percent: state.studentData.value.zgtCorrectRate / 100,
|
||||||
padingEdg: EdgeInsets.zero,
|
padingEdg: EdgeInsets.zero,
|
||||||
marginEdg: EdgeInsets.only(top: 8.h)),
|
marginEdg: EdgeInsets.only(top: 8.h)),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '总正确率:',
|
title: '总正确率:',
|
||||||
color: Color.fromRGBO(76, 199, 147, 0.36),
|
color: Theme.of(context).primaryColor,
|
||||||
percent: state.studentData.value.correctRate / 100,
|
percent: state.studentData.value.correctRate / 100,
|
||||||
padingEdg: EdgeInsets.zero,
|
padingEdg: EdgeInsets.zero,
|
||||||
marginEdg: EdgeInsets.only(top: 8.h)),
|
marginEdg: EdgeInsets.only(top: 8.h)),
|
||||||
|
|
@ -222,7 +222,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(5.r)),
|
borderRadius: BorderRadius.all(Radius.circular(5.r)),
|
||||||
// color: Color(0xFF4CC793),
|
// color: Color(0xFF4CC793),
|
||||||
border: Border.all(width: 1.r, color: Color(0xFF4CC793)),
|
border: Border.all(width: 1.r, color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
|
|
@ -333,7 +333,8 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
Get.toNamed(Routes.studentPersonalPage,
|
Get.toNamed(Routes.studentPersonalPage,
|
||||||
arguments: {
|
arguments: {
|
||||||
'homeworkId': item.id,
|
'homeworkId': item.id,
|
||||||
'studentId': state.studentId
|
'studentId': state.studentId,
|
||||||
|
'subject':item.subject
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
|
|
@ -360,21 +361,15 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
width: 32.w,
|
width: 32.w,
|
||||||
height: 18.h,
|
height: 22.h,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
padding: EdgeInsets.only(left: 2.w),
|
// padding: EdgeInsets.only(left: 2.w),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: state.isJob.value
|
color: state.isJob.value
|
||||||
? const Color.fromRGBO(
|
? Theme.of(context).primaryColor
|
||||||
104, 136, 253, 1)
|
|
||||||
: const Color(0xFFFFA116),
|
: const Color(0xFFFFA116),
|
||||||
borderRadius: BorderRadius.only(
|
borderRadius: BorderRadius.all(
|
||||||
topLeft: Radius.circular(14.r),
|
Radius.circular(5.r)
|
||||||
topRight: Radius.circular(3.r),
|
|
||||||
bottomLeft:
|
|
||||||
Radius.circular(4.r),
|
|
||||||
bottomRight:
|
|
||||||
Radius.circular(4.r),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
margin: EdgeInsets.only(right: 4.w),
|
margin: EdgeInsets.only(right: 4.w),
|
||||||
|
|
@ -403,7 +398,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
Radius.circular(4.r)),
|
Radius.circular(4.r)),
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
width: 1.r,
|
width: 1.r,
|
||||||
color: Color(0xFF4CC793)),
|
color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|
@ -411,7 +406,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
item.subject),
|
item.subject),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10.sp,
|
fontSize: 10.sp,
|
||||||
color: Color(0xFF4CC793)),
|
color: Theme.of(context).primaryColor),
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
@ -455,7 +450,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
color: subjective.state == 0
|
color: subjective.state == 0
|
||||||
? Color(0xFFDDDDDD)
|
? Color(0xFFDDDDDD)
|
||||||
: subjective.state == 3
|
: subjective.state == 3
|
||||||
? Color(0xFF4CC793)
|
?Theme.of(context).primaryColor
|
||||||
: subjective.state == 2
|
: subjective.state == 2
|
||||||
? Color(0xFFFF7474)
|
? Color(0xFFFF7474)
|
||||||
: Color(0xFF666666)),
|
: Color(0xFF666666)),
|
||||||
|
|
@ -473,8 +468,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
0xFFDDDDDD)
|
0xFFDDDDDD)
|
||||||
: subjective.state ==
|
: subjective.state ==
|
||||||
3
|
3
|
||||||
? Color(
|
? Theme.of(context).primaryColor
|
||||||
0xFF4CC793)
|
|
||||||
: subjective.state ==
|
: subjective.state ==
|
||||||
2
|
2
|
||||||
? Color(
|
? Color(
|
||||||
|
|
@ -533,7 +527,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
color: subjective.state == 0
|
color: subjective.state == 0
|
||||||
? Color(0xFFDDDDDD)
|
? Color(0xFFDDDDDD)
|
||||||
: subjective.state == 3
|
: subjective.state == 3
|
||||||
? Color(0xFF4CC793)
|
? Theme.of(context).primaryColor
|
||||||
: subjective.state == 2
|
: subjective.state == 2
|
||||||
? Color(0xFFFF7474)
|
? Color(0xFFFF7474)
|
||||||
: Color(0xFF666666)),
|
: Color(0xFF666666)),
|
||||||
|
|
@ -551,8 +545,7 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
0xFFDDDDDD)
|
0xFFDDDDDD)
|
||||||
: subjective.state ==
|
: subjective.state ==
|
||||||
3
|
3
|
||||||
? Color(
|
? Theme.of(context).primaryColor
|
||||||
0xFF4CC793)
|
|
||||||
: subjective.state ==
|
: subjective.state ==
|
||||||
2
|
2
|
||||||
? Color(
|
? Color(
|
||||||
|
|
@ -574,19 +567,19 @@ class _StudentWorkDetailPageState extends State<StudentWorkDetailPage> {
|
||||||
),
|
),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '客观题正确率:',
|
title: '客观题正确率:',
|
||||||
color: Color(0xFF90E0BE),
|
color: Color(0xFFB2DA93),
|
||||||
percent: item.kgtCorrectRate / 100,
|
percent: item.kgtCorrectRate / 100,
|
||||||
padingEdg: EdgeInsets.zero,
|
padingEdg: EdgeInsets.zero,
|
||||||
marginEdg: EdgeInsets.only(top: 8.h)),
|
marginEdg: EdgeInsets.only(top: 8.h)),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '主观题正确率:',
|
title: '主观题正确率:',
|
||||||
color: Color(0xFF90E0BE),
|
color: Color(0xFFB2DA93),
|
||||||
percent: item.zgtCorrectRate / 100,
|
percent: item.zgtCorrectRate / 100,
|
||||||
padingEdg: EdgeInsets.zero,
|
padingEdg: EdgeInsets.zero,
|
||||||
marginEdg: EdgeInsets.only(top: 8.h)),
|
marginEdg: EdgeInsets.only(top: 8.h)),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
title: '总正确率:',
|
title: '总正确率:',
|
||||||
color: Color(0xFF90E0BE),
|
color: Color(0xFFB2DA93),
|
||||||
percent: item.correctRate / 100,
|
percent: item.correctRate / 100,
|
||||||
padingEdg: EdgeInsets.zero,
|
padingEdg: EdgeInsets.zero,
|
||||||
marginEdg: EdgeInsets.only(top: 8.h)),
|
marginEdg: EdgeInsets.only(top: 8.h)),
|
||||||
|
|
|
||||||
|
|
@ -33,10 +33,10 @@ class _PersonalDetailTopBarState extends State<PersonalDetailTopBar> {
|
||||||
labelStyle: TextStyle(
|
labelStyle: TextStyle(
|
||||||
fontSize: 12.sp,
|
fontSize: 12.sp,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: const Color(0xFF4CC793),
|
color: const Color(0xFF8C68FF),
|
||||||
),
|
),
|
||||||
isScrollable: true,
|
isScrollable: true,
|
||||||
labelColor: const Color(0xFF4CC793),
|
labelColor:const Color(0xFF8C68FF),
|
||||||
unselectedLabelColor: const Color(0xFF505E6E),
|
unselectedLabelColor: const Color(0xFF505E6E),
|
||||||
padding: EdgeInsets.symmetric(horizontal: 14.r),
|
padding: EdgeInsets.symmetric(horizontal: 14.r),
|
||||||
// indicatorSize: TabBarIndicatorSize.label, // 设置指示器高度和标签一样高
|
// indicatorSize: TabBarIndicatorSize.label, // 设置指示器高度和标签一样高
|
||||||
|
|
@ -44,7 +44,7 @@ class _PersonalDetailTopBarState extends State<PersonalDetailTopBar> {
|
||||||
indicator: UnderlineTabIndicator(
|
indicator: UnderlineTabIndicator(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
width: 2.r,
|
width: 2.r,
|
||||||
color:const Color(0xFF4CC793)
|
color:const Color(0xFF8C68FF)
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
tabs: <Widget>[
|
tabs: <Widget>[
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ class StudentGroupList extends StatelessWidget {
|
||||||
padding: EdgeInsets.only(right: 8.r),
|
padding: EdgeInsets.only(right: 8.r),
|
||||||
child: Text(
|
child: Text(
|
||||||
'${EnumUtils.formatGrade(item.grade)}${item.className}',
|
'${EnumUtils.formatGrade(item.grade)}${item.className}',
|
||||||
style: TextStyle(fontSize: 10.sp, color: Color(0xFF4CC793)),
|
style: TextStyle(fontSize: 10.sp, color:Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
|
|
@ -72,7 +72,7 @@ class StudentGroupList extends StatelessWidget {
|
||||||
width: 55.r,
|
width: 55.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
||||||
color: const Color(0xFF4CC793),
|
color: Theme.of(context).primaryColor,
|
||||||
),
|
),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|
@ -109,7 +109,7 @@ class StudentGroupList extends StatelessWidget {
|
||||||
padding: EdgeInsets.only(right: 8.r),
|
padding: EdgeInsets.only(right: 8.r),
|
||||||
child: Text(
|
child: Text(
|
||||||
'${EnumUtils.formatGrade(item.grade)}${item.className}',
|
'${EnumUtils.formatGrade(item.grade)}${item.className}',
|
||||||
style: TextStyle(fontSize: 14.sp, color: Color(0xFF4CC793)),
|
style: TextStyle(fontSize: 14.sp, color: Theme.of(context).primaryColor),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
|
|
@ -136,7 +136,7 @@ class StudentGroupList extends StatelessWidget {
|
||||||
width: 55.r,
|
width: 55.r,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
borderRadius: BorderRadius.all(Radius.circular(20.r)),
|
||||||
color: const Color(0xFF4CC793),
|
color: Theme.of(context).primaryColor,
|
||||||
),
|
),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue