调整数据
This commit is contained in:
parent
0fad2da7f6
commit
195b6ba2b5
|
|
@ -201,3 +201,4 @@ marking_app/lib/common/model/job/job_report_question_deatil_model.g.dart
|
|||
marking_app/lib/common/model/job/job_do_marking_status_info.g.dart
|
||||
marking_app/lib/common/model/report/small_question.g.dart
|
||||
marking_app/lib/pages/homework_correction/pages/job_list_participate_in_class.g.dart
|
||||
marking_app/lib/common/model/job/job_favorite_model.g.dart
|
||||
|
|
|
|||
|
|
@ -54,6 +54,12 @@
|
|||
<div class="content unicode" style="display: block;">
|
||||
<ul class="icon_lists dib-box">
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">Frame</div>
|
||||
<div class="code-name">&#xe63e;</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">Frame</div>
|
||||
|
|
@ -408,9 +414,9 @@
|
|||
<pre><code class="language-css"
|
||||
>@font-face {
|
||||
font-family: 'iconfont';
|
||||
src: url('iconfont.woff2?t=1706671294868') format('woff2'),
|
||||
url('iconfont.woff?t=1706671294868') format('woff'),
|
||||
url('iconfont.ttf?t=1706671294868') format('truetype');
|
||||
src: url('iconfont.woff2?t=1710142362036') format('woff2'),
|
||||
url('iconfont.woff?t=1710142362036') format('woff'),
|
||||
url('iconfont.ttf?t=1710142362036') format('truetype');
|
||||
}
|
||||
</code></pre>
|
||||
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
|
||||
|
|
@ -436,6 +442,15 @@
|
|||
<div class="content font-class">
|
||||
<ul class="icon_lists dib-box">
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-Frame14"></span>
|
||||
<div class="name">
|
||||
Frame
|
||||
</div>
|
||||
<div class="code-name">.icon-Frame14
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-Frame13"></span>
|
||||
<div class="name">
|
||||
|
|
@ -967,6 +982,14 @@
|
|||
<div class="content symbol">
|
||||
<ul class="icon_lists dib-box">
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-Frame14"></use>
|
||||
</svg>
|
||||
<div class="name">Frame</div>
|
||||
<div class="code-name">#icon-Frame14</div>
|
||||
</li>
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-Frame13"></use>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 3423846 */
|
||||
src: url('iconfont.woff2?t=1706671294868') format('woff2'),
|
||||
url('iconfont.woff?t=1706671294868') format('woff'),
|
||||
url('iconfont.ttf?t=1706671294868') format('truetype');
|
||||
src: url('iconfont.woff2?t=1710142362036') format('woff2'),
|
||||
url('iconfont.woff?t=1710142362036') format('woff'),
|
||||
url('iconfont.ttf?t=1710142362036') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
|
|
@ -13,6 +13,10 @@
|
|||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-Frame14:before {
|
||||
content: "\e63e";
|
||||
}
|
||||
|
||||
.icon-Frame13:before {
|
||||
content: "\e63d";
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -5,6 +5,13 @@
|
|||
"css_prefix_text": "icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "39483566",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame14",
|
||||
"unicode": "e63e",
|
||||
"unicode_decimal": 58942
|
||||
},
|
||||
{
|
||||
"icon_id": "39175701",
|
||||
"name": "Frame",
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,33 @@
|
|||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'job_favorite_model.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class JobFavoriteModel extends Object {
|
||||
@JsonKey(name: 'schoolId')
|
||||
int schoolId;
|
||||
|
||||
@JsonKey(name: 'gradeId')
|
||||
int gradeId;
|
||||
|
||||
@JsonKey(name: 'graduationYear')
|
||||
String graduationYear;
|
||||
|
||||
@JsonKey(name: 'className')
|
||||
String className;
|
||||
|
||||
@JsonKey(name: 'count')
|
||||
int count;
|
||||
|
||||
JobFavoriteModel(
|
||||
this.schoolId,
|
||||
this.gradeId,
|
||||
this.graduationYear,
|
||||
this.className,
|
||||
this.count,
|
||||
);
|
||||
|
||||
factory JobFavoriteModel.fromJson(Map<String, dynamic> srcJson) => _$JobFavoriteModelFromJson(srcJson);
|
||||
|
||||
Map<String, dynamic> toJson() => _$JobFavoriteModelToJson(this);
|
||||
}
|
||||
|
|
@ -107,6 +107,10 @@ class MarkingTasks extends Object {
|
|||
@JsonKey(name: 'className')
|
||||
String className;
|
||||
|
||||
int dpcSchoolId;
|
||||
|
||||
int dpcGradeId;
|
||||
|
||||
@JsonKey(name: 'teacherName')
|
||||
String teacherName;
|
||||
|
||||
|
|
@ -148,8 +152,14 @@ class MarkingTasks extends Object {
|
|||
@JsonKey(name: 'canGoReview')
|
||||
bool canGoReview; // 是否能批阅
|
||||
|
||||
/** 前端自定义字段 */
|
||||
@JsonKey(name: 'collectNumber')
|
||||
int collectNumber; // 是否能批阅
|
||||
|
||||
MarkingTasks(
|
||||
this.id,
|
||||
this.dpcSchoolId,
|
||||
this.dpcGradeId,
|
||||
this.className,
|
||||
this.teacherName,
|
||||
this.isFinish,
|
||||
|
|
@ -157,13 +167,14 @@ class MarkingTasks extends Object {
|
|||
this.commitStudentCount,
|
||||
this.totalCount,
|
||||
this.finishCount,
|
||||
this.precision,
|
||||
this.objectivePrecision,
|
||||
this.subjectivePrecision,
|
||||
this.precision,
|
||||
this.canMarking, {
|
||||
this.progressPercentage = 0,
|
||||
this.canGoReview = true,
|
||||
this.finishTime,
|
||||
this.collectNumber = 0,
|
||||
}) {
|
||||
try {
|
||||
progressPercentage = (finishCount / totalCount) * 100;
|
||||
|
|
@ -174,6 +185,11 @@ class MarkingTasks extends Object {
|
|||
} catch (e) {
|
||||
progressPercentage = 0;
|
||||
}
|
||||
try {
|
||||
precision = precision / 100;
|
||||
objectivePrecision = objectivePrecision / 100;
|
||||
subjectivePrecision = subjectivePrecision / 100;
|
||||
} catch (e) {}
|
||||
|
||||
canGoReview = totalCount > 0 && canMarking && !isFinish;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -249,7 +249,14 @@ Widget $completedHomeworkView(BuildContext context,
|
|||
child: Row(children: [
|
||||
Expanded(
|
||||
child: InkWell(
|
||||
onTap: () => easyThrottle('go_to_homework_report', () => {}),
|
||||
onTap: () => easyThrottle('go_to_homework_report', () {
|
||||
RouterManager.router.navigateTo(
|
||||
context,
|
||||
RouterManager.jobReportPagePath +
|
||||
'?title=${Uri.encodeComponent(jobTaskItem.title)}&id=${jobTaskItem.id}',
|
||||
transition: getTransition(),
|
||||
);
|
||||
}),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
child: quickText('查看报告', color: Color.fromRGBO(118, 118, 118, 1), size: 12.sp),
|
||||
|
|
|
|||
|
|
@ -261,9 +261,11 @@ class _HomeworkCorrectionState extends ConsumerState<HomeworkCorrection>
|
|||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
RouterManager.router.navigateTo(context, RouterManager.jobPriorityReviewSetPath,transition: getTransition());
|
||||
RouterManager.router.navigateTo(context, RouterManager.jobPriorityReviewSetPath,
|
||||
transition: getTransition());
|
||||
},
|
||||
child: Icon(Icons.settings_outlined, color: Color.fromRGBO(44, 48, 63, 1), size: 24.sp),
|
||||
child: Icon(IconData(0xe63e, fontFamily: "AlibabaIcon"),
|
||||
color: Color.fromRGBO(44, 48, 63, 1), size: 24.sp),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
|
@ -466,7 +468,12 @@ Widget $reviewedItem(BuildContext context, {required JobTaskItem jobTaskItem}) {
|
|||
),
|
||||
GestureDetector(
|
||||
onTap: () => easyThrottle('go_to_homework_report', () {
|
||||
print('子级点击方法');
|
||||
RouterManager.router.navigateTo(
|
||||
context,
|
||||
RouterManager.jobReportPagePath +
|
||||
'?title=${Uri.encodeComponent(jobTaskItem.title)}&id=${jobTaskItem.id}',
|
||||
transition: getTransition(),
|
||||
);
|
||||
}),
|
||||
child: Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 6.h),
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|||
import 'package:functional_widget_annotation/functional_widget_annotation.dart';
|
||||
import 'package:marking_app/common/mixin/common.dart';
|
||||
import 'package:marking_app/common/model/common/base_structure_result.dart';
|
||||
import 'package:marking_app/common/model/job/job_concerned_with_student.dart';
|
||||
import 'package:marking_app/common/model/job/job_concerned_with_student_params.dart';
|
||||
import 'package:marking_app/common/model/job/job_favorite_model.dart';
|
||||
import 'package:marking_app/common/model/job/job_task_item.dart';
|
||||
import 'package:marking_app/routes/RouterManager.dart';
|
||||
import 'package:marking_app/utils/index.dart';
|
||||
|
|
@ -27,14 +30,16 @@ class JobListParticipateInClass extends StatefulWidget {
|
|||
|
||||
class _JobListParticipateInClassState extends State<JobListParticipateInClass> with CommonMixin {
|
||||
late Future<List<MarkingTasks>?> _future;
|
||||
|
||||
Map<String, int> favoriteMap = {};
|
||||
bool isRefresh = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
// TODO: implement initState
|
||||
super.initState();
|
||||
getListOfJobFavoritesData();
|
||||
_future = getData();
|
||||
|
||||
Future.delayed(Duration.zero, () {
|
||||
print(ScreenUtil().scaleWidth);
|
||||
print(MediaQuery.of(context).devicePixelRatio);
|
||||
|
|
@ -47,6 +52,17 @@ class _JobListParticipateInClassState extends State<JobListParticipateInClass> w
|
|||
super.dispose();
|
||||
}
|
||||
|
||||
Future<void> getListOfJobFavoritesData() async {
|
||||
RestClient _client = await getClient();
|
||||
BaseStructureResult<List<JobFavoriteModel>> result = await _client.getListOfJobFavorites(widget.jobId);
|
||||
if (result.success) {
|
||||
result.data?.forEach((e) {
|
||||
favoriteMap['${e.schoolId}+${e.gradeId}+${e.className}'] = e.count;
|
||||
});
|
||||
toUpState(setState, () {}, mounted);
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<MarkingTasks>?> getData() async {
|
||||
RestClient _client = await getClient();
|
||||
BaseStructureResult<List<MarkingTasks>> _result = await _client.getJobListParticipateInClass(widget.jobId);
|
||||
|
|
@ -175,6 +191,7 @@ class _JobListParticipateInClassState extends State<JobListParticipateInClass> w
|
|||
}
|
||||
}
|
||||
|
||||
/// 结束批阅
|
||||
void endReview(MarkingTasks task) async {
|
||||
/// 结束批阅逻辑
|
||||
if (!task.canMarking) return ToastUtils.showInfo('此任务非该账号任务');
|
||||
|
|
@ -252,13 +269,102 @@ class _JobListParticipateInClassState extends State<JobListParticipateInClass> w
|
|||
void bookmarks(MarkingTasks task) {}
|
||||
|
||||
// 数据快查
|
||||
void quickDataCheck(MarkingTasks task) {}
|
||||
void quickDataCheck(MarkingTasks task) {
|
||||
RouterManager.router.navigateTo(
|
||||
context,
|
||||
RouterManager.quickDataCheckPath + '?className=${Uri.encodeComponent(task.className)}&jobId=${widget.jobId}',
|
||||
transition: getTransition(),
|
||||
);
|
||||
}
|
||||
|
||||
// 查看作业报告
|
||||
void jobViewReport(MarkingTasks task) {}
|
||||
void jobViewReport(MarkingTasks task) {
|
||||
// RouterManager.router.navigateTo(
|
||||
// context,
|
||||
// RouterManager.jobReportPagePath + '?title=${Uri.encodeComponent(task.title)}&id=${task.id}',
|
||||
// transition: getTransition(),
|
||||
// );
|
||||
}
|
||||
|
||||
/// 查看学生名单
|
||||
void showStudentList([bool submitted = false]) {}
|
||||
/// @name showStudentList
|
||||
/// @param {List<int>} taskId 子任务ID集合
|
||||
/// @param {bool} className 班级名称(不传此参数为主任务;传此参数为子任务)
|
||||
/// @param {bool} submitted 是否已提交(默认未提交)
|
||||
void showStudentList(List<int> taskIds, [String? className, bool submitted = false]) async {
|
||||
ToastUtils.showLoading();
|
||||
List<JobConcernedWithStudent> students = [];
|
||||
try {
|
||||
RestClient _client = await getClient();
|
||||
BaseStructureResult<List<JobConcernedWithStudent>> _result =
|
||||
await _client.getJobWithStudents(JobConcernedWithStudentParams(taskIds, isCommit: submitted));
|
||||
if (!_result.success) {
|
||||
return ToastUtils.showError(_result.message ?? '获取学生列表失败');
|
||||
}
|
||||
if (_result.data?.isEmpty ?? true) {
|
||||
return ToastUtils.showError('获取到的学生列表为空');
|
||||
}
|
||||
students = _result.data!;
|
||||
} catch (e) {
|
||||
return ToastUtils.showError('获取学生列表失败');
|
||||
} finally {
|
||||
ToastUtils.dismiss();
|
||||
}
|
||||
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
elevation: 10,
|
||||
backgroundColor: Colors.white,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(20.r),
|
||||
topRight: Radius.circular(20.r),
|
||||
),
|
||||
),
|
||||
builder: (BuildContext context) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 2.w),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
margin: EdgeInsets.only(top: 14.h, bottom: 10.h),
|
||||
child: quickText(
|
||||
'${className ?? ''} ${submitted ? '已提交' : '未提交'}作业学生',
|
||||
size: isPad() ? 15.sp : 15.sp,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Color.fromRGBO(60, 60, 60, 1),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 4.w),
|
||||
children: [
|
||||
Wrap(
|
||||
spacing: 6.0, // 主轴(水平)方向间距
|
||||
runSpacing: 4.0, // 纵轴(垂直)方向间距
|
||||
alignment: WrapAlignment.spaceAround, //沿主轴方向居中
|
||||
children: students.map((e) {
|
||||
return Chip(
|
||||
backgroundColor: Color.fromRGBO(239, 242, 255, 1),
|
||||
avatar: CircleAvatar(
|
||||
backgroundColor: Colors.white,
|
||||
child: quickText(e.studentName.substring(0, 1),
|
||||
size: 12.sp, color: Theme.of(context).primaryColor),
|
||||
),
|
||||
label: quickText(e.studentName, color: Color.fromRGBO(80, 94, 110, 1), size: 12.sp),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
|
|
@ -276,6 +382,9 @@ class _JobListParticipateInClassState extends State<JobListParticipateInClass> w
|
|||
),
|
||||
body: MyFutureBuilder.buildFutureBuilderOfSingleInstance<List<MarkingTasks>?>(context, _future, (value) {
|
||||
if (value == null) return Container();
|
||||
value.forEach((e) {
|
||||
e.collectNumber = favoriteMap['${e.dpcSchoolId}+${e.dpcGradeId}+${e.className}'] ?? 0;
|
||||
});
|
||||
bool thePadTerminal = isPad();
|
||||
if (widget.completed) {
|
||||
// 已完成
|
||||
|
|
@ -286,6 +395,7 @@ class _JobListParticipateInClassState extends State<JobListParticipateInClass> w
|
|||
bookmarks: bookmarks,
|
||||
jobViewReport: jobViewReport,
|
||||
quickDataCheck: quickDataCheck,
|
||||
showStudentList: showStudentList,
|
||||
);
|
||||
|
||||
// 已完成手机端
|
||||
|
|
@ -385,6 +495,7 @@ class TabletEndCompleted extends StatelessWidget {
|
|||
final Bookmarks bookmarks; // 收藏夹
|
||||
final JobViewReport jobViewReport;
|
||||
final QuickDataCheck quickDataCheck; // 数据快查
|
||||
final ShowStudentList showStudentList; // 学生列表查询
|
||||
const TabletEndCompleted({
|
||||
required this.genderName,
|
||||
required this.data,
|
||||
|
|
@ -393,6 +504,7 @@ class TabletEndCompleted extends StatelessWidget {
|
|||
required this.bookmarks,
|
||||
required this.jobViewReport,
|
||||
required this.quickDataCheck,
|
||||
required this.showStudentList,
|
||||
super.key,
|
||||
});
|
||||
|
||||
|
|
@ -467,7 +579,8 @@ class TabletEndCompleted extends StatelessWidget {
|
|||
color: Color.fromRGBO(104, 136, 253, 1),
|
||||
borderRadius: BorderRadius.circular(16.r),
|
||||
child: InkWell(
|
||||
onTap: () => easyThrottle('OneClickReview', () {}),
|
||||
onTap: () => easyThrottle(
|
||||
'OneClickReview', () => showStudentList([taskItem.id], taskItem.className)),
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
|
|
@ -475,7 +588,7 @@ class TabletEndCompleted extends StatelessWidget {
|
|||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
),
|
||||
child: quickText('已提交(${taskItem.commitStudentCount})', size: 8.sp, color: Colors.white),
|
||||
child: quickText('已提交:${taskItem.commitStudentCount}', size: 8.sp, color: Colors.white),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
@ -487,13 +600,15 @@ class TabletEndCompleted extends StatelessWidget {
|
|||
color: Color.fromRGBO(244, 244, 244, 1),
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
child: InkWell(
|
||||
onTap: () async {},
|
||||
onTap: () => easyThrottle(
|
||||
'OneClickReview', () => showStudentList([taskItem.id], taskItem.className, false)),
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 4.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('数据快查', size: 8.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
child: quickText('未提交:${taskItem.totalCount - taskItem.commitStudentCount}',
|
||||
size: 8.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
@ -511,7 +626,8 @@ class TabletEndCompleted extends StatelessWidget {
|
|||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 4.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('收藏夹(2)', size: 8.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
child: quickText('收藏夹(${taskItem.collectNumber})',
|
||||
size: 8.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
)),
|
||||
|
|
@ -573,7 +689,7 @@ class MobileEndCompleted extends StatelessWidget {
|
|||
final Bookmarks bookmarks; // 收藏夹
|
||||
final JobViewReport jobViewReport; // 查看报告
|
||||
final QuickDataCheck quickDataCheck; // 数据快查
|
||||
final ShowStudentList showStudentList;
|
||||
final ShowStudentList showStudentList; // 学生名单
|
||||
|
||||
const MobileEndCompleted({
|
||||
required this.genderName,
|
||||
|
|
@ -595,152 +711,25 @@ class MobileEndCompleted extends StatelessWidget {
|
|||
children: data.map((task) {
|
||||
return Container(
|
||||
padding: EdgeInsets.only(top: 11.h),
|
||||
margin: EdgeInsets.only(bottom: 18.h),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadiusDirectional.circular(10.r),
|
||||
boxShadow: [BoxShadow(color: Color.fromRGBO(0, 0, 0, 0.15), blurRadius: 10)],
|
||||
// border: Border(bottom: BorderSide(color: Color.fromRGBO(238, 238, 238, 1), width: 1.r)),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Padding(
|
||||
padding: padingEdg,
|
||||
child: Row(
|
||||
children: [
|
||||
quickText(genderName + task.className, color: Color.fromRGBO(0, 0, 0, 1), size: 14.sp),
|
||||
Expanded(child: SizedBox()),
|
||||
quickText('已交:${task.commitStudentCount}', color: Color.fromRGBO(104, 136, 253, 1), size: 12.sp),
|
||||
SizedBox(width: 16.w),
|
||||
quickText('未交:${task.studentCount - task.commitStudentCount}',
|
||||
color: Color.fromRGBO(255, 86, 86, 1), size: 12.sp),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 13.h),
|
||||
Padding(
|
||||
padding: padingEdg,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: task.isFinish
|
||||
? [
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: Material(
|
||||
color: Color.fromRGBO(244, 244, 244, 1),
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
child: InkWell(
|
||||
onTap: () async {},
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 5.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('收藏夹(2)', size: 10.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
)),
|
||||
Expanded(flex: 1, child: SizedBox()),
|
||||
Expanded(flex: 3, child: SizedBox()),
|
||||
Expanded(flex: 1, child: SizedBox()),
|
||||
Expanded(flex: 3, child: SizedBox()),
|
||||
]
|
||||
: [
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: Material(
|
||||
color: Color.fromRGBO(104, 136, 253, 1),
|
||||
borderRadius: BorderRadius.circular(16.r),
|
||||
child: InkWell(
|
||||
onTap: () => easyThrottle('OneClickReview', () {}),
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 5.h),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
),
|
||||
child: quickText('一键批阅', size: 10.sp, color: Colors.white),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(flex: 1, child: SizedBox()),
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: Material(
|
||||
color: Color.fromRGBO(244, 244, 244, 1),
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
child: InkWell(
|
||||
onTap: () async {},
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 5.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('数据快查', size: 10.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(flex: 1, child: SizedBox()),
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: Material(
|
||||
color: Color.fromRGBO(244, 244, 244, 1),
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
child: InkWell(
|
||||
onTap: () async {},
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 5.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('收藏夹(2)', size: 10.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
)),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 13.h),
|
||||
Padding(
|
||||
padding: padingEdg,
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: LinearPercentIndicator(
|
||||
padding: EdgeInsets.zero,
|
||||
animation: true,
|
||||
lineHeight: 8.h,
|
||||
animationDuration: 2500,
|
||||
|
||||
percent: task.progressPercentage / 100,
|
||||
// center: Text(
|
||||
// '${getDoubleRemoveZero(jobTaskClassItem.progressPercentage)}%',
|
||||
// style: TextStyle(color: Colors.white, fontSize: 8.sp),
|
||||
// ),
|
||||
linearGradient: LinearGradient(
|
||||
tileMode: TileMode.mirror,
|
||||
stops: [0.0, 1.0],
|
||||
colors: task.progressPercentage / 100 != 1
|
||||
? [Theme.of(context).primaryColor.withOpacity(0.1), Theme.of(context).primaryColor]
|
||||
: [
|
||||
Color.fromRGBO(144, 224, 190, 1).withOpacity(0.1),
|
||||
Color.fromRGBO(144, 224, 190, 1),
|
||||
],
|
||||
),
|
||||
// linearStrokeCap: LinearStrokeCap.butt,
|
||||
// progressColor: Theme.of(context).primaryColor,
|
||||
backgroundColor: Color.fromRGBO(232, 232, 232, 1),
|
||||
barRadius: Radius.circular(10.r),
|
||||
),
|
||||
),
|
||||
SizedBox(width: 7.w),
|
||||
quickText('${getDoubleRemoveZero(task.progressPercentage)}%',
|
||||
size: 10.sp, color: Color.fromRGBO(70, 70, 70, 1))
|
||||
],
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 5.h),
|
||||
alignment: Alignment.centerLeft,
|
||||
decoration: BoxDecoration(
|
||||
border: Border(bottom: BorderSide(color: Color.fromRGBO(238, 238, 238, 1), width: 0.5.r)),
|
||||
),
|
||||
child: quickText(task.className, color: Color.fromRGBO(104, 136, 253, 1), size: 14.sp),
|
||||
),
|
||||
SizedBox(height: 4.h),
|
||||
if (task.isFinish)
|
||||
$CompletedHomeworkProgressBar(
|
||||
color: Color.fromRGBO(76, 199, 147, 1),
|
||||
|
|
@ -766,6 +755,73 @@ class MobileEndCompleted extends StatelessWidget {
|
|||
marginEdg: EdgeInsets.only(top: 8.h),
|
||||
),
|
||||
SizedBox(height: 13.h),
|
||||
Padding(
|
||||
padding: padingEdg,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: Material(
|
||||
color: Color.fromRGBO(104, 136, 253, 1),
|
||||
borderRadius: BorderRadius.circular(16.r),
|
||||
child: InkWell(
|
||||
onTap: () =>
|
||||
easyThrottle('OneClickReview', () => showStudentList([task.id], task.className)),
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 5.h),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
),
|
||||
child: quickText('已提交:${task.commitStudentCount}', size: 10.sp, color: Colors.white),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(flex: 1, child: SizedBox()),
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: Material(
|
||||
color: Color.fromRGBO(244, 244, 244, 1),
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
child: InkWell(
|
||||
onTap: () =>
|
||||
easyThrottle('OneClickReview', () => showStudentList([task.id], task.className, false)),
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 5.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('未提交:${task.totalCount - task.commitStudentCount}',
|
||||
size: 10.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(flex: 1, child: SizedBox()),
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: Material(
|
||||
color: Color.fromRGBO(244, 244, 244, 1),
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
child: InkWell(
|
||||
onTap: () async {},
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 5.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('收藏夹(${task.collectNumber})',
|
||||
size: 10.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
)),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 13.h),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(
|
||||
|
|
@ -794,7 +850,7 @@ class MobileEndCompleted extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
),
|
||||
Container(width: 1.w, height: 32.h, color: Color.fromRGBO(221, 221, 221, 1)),
|
||||
Container(width: 1.w, height: 34.h, color: Color.fromRGBO(221, 221, 221, 1)),
|
||||
Expanded(
|
||||
child: InkWell(
|
||||
onTap: () => easyThrottle('go_to_end_review_homework', () => jobViewReport(task)),
|
||||
|
|
@ -938,7 +994,8 @@ Widget $itemDataViewOfPad(
|
|||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 3.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('收藏夹(2)', size: 8.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
child: quickText('收藏夹(${task.collectNumber})',
|
||||
size: 8.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
)),
|
||||
|
|
@ -974,7 +1031,7 @@ Widget $itemDataViewOfPad(
|
|||
color: Color.fromRGBO(244, 244, 244, 1),
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
child: InkWell(
|
||||
onTap: () async {},
|
||||
onTap: () => quickDataCheck(task),
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
|
|
@ -998,7 +1055,8 @@ Widget $itemDataViewOfPad(
|
|||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 3.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('收藏夹(2)', size: 8.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
child: quickText('收藏夹(${task.collectNumber})',
|
||||
size: 8.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
)),
|
||||
|
|
@ -1188,7 +1246,8 @@ Widget $itemDataView(
|
|||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 5.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('收藏夹(2)', size: 10.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
child: quickText('收藏夹(${task.collectNumber})',
|
||||
size: 10.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
)),
|
||||
|
|
@ -1224,7 +1283,7 @@ Widget $itemDataView(
|
|||
color: Color.fromRGBO(244, 244, 244, 1),
|
||||
borderRadius: BorderRadius.circular(20.r),
|
||||
child: InkWell(
|
||||
onTap: () async {},
|
||||
onTap: () => quickDataCheck(task),
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
|
|
@ -1248,7 +1307,8 @@ Widget $itemDataView(
|
|||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(vertical: 5.h),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
|
||||
child: quickText('收藏夹(2)', size: 10.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
child: quickText('收藏夹(${task.collectNumber})',
|
||||
size: 10.sp, color: Color.fromRGBO(102, 102, 102, 1)),
|
||||
),
|
||||
),
|
||||
)),
|
||||
|
|
@ -1477,7 +1537,7 @@ typedef Bookmarks = void Function(MarkingTasks);
|
|||
typedef JobViewReport = void Function(MarkingTasks);
|
||||
|
||||
/// 展示学生名单
|
||||
typedef ShowStudentList = void Function([bool submitted]);
|
||||
typedef ShowStudentList = void Function(List<int> taskIds, [String? className, bool submitted]);
|
||||
|
||||
/// 查看学生名单
|
||||
// void showStudentList([bool submitted = false]) {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import 'package:marking_app/common/model/job/job_concerned_with_student.dart';
|
|||
import 'package:marking_app/common/model/job/job_concerned_with_student_params.dart';
|
||||
import 'package:marking_app/common/model/job/job_data_report.dart';
|
||||
import 'package:marking_app/common/model/job/job_do_marking_status_info.dart';
|
||||
import 'package:marking_app/common/model/job/job_favorite_model.dart';
|
||||
import 'package:marking_app/common/model/job/job_note_taking_trajectory.dart';
|
||||
import 'package:marking_app/common/model/job/job_page_tab.dart';
|
||||
import 'package:marking_app/common/model/job/job_report_join_class.dart';
|
||||
|
|
@ -292,12 +293,16 @@ abstract class RestClient {
|
|||
Future<BaseStructureResult<List<MarkingTasks>>> getJobListParticipateInClass(
|
||||
@the_retrofit.Query("markingId") int jobId);
|
||||
|
||||
// 作业 => 收藏列表
|
||||
@the_retrofit.GET("${RequestConfig.hwProxyKeywords}/dpc-api/api/read/job-favorite-count-by-class")
|
||||
Future<BaseStructureResult<List<JobFavoriteModel>>> getListOfJobFavorites(@the_retrofit.Query("jobid") int jobId);
|
||||
|
||||
// 作业 => 数据快查
|
||||
@the_retrofit.GET("/api/read/job-data-center-report")
|
||||
Future<BaseStructureResult<JobDataReport>> getJobDataCenterReport(@the_retrofit.Queries() Map<String, dynamic> params);
|
||||
Future<BaseStructureResult<JobDataReport>> getJobDataCenterReport(
|
||||
@the_retrofit.Queries() Map<String, dynamic> params);
|
||||
|
||||
// 作业 => 数据快查--个人
|
||||
@the_retrofit.GET("/api/read/job-data-center-student-report")
|
||||
Future<BaseStructureResult<StudentDetails>> getJobPersonalReport(@the_retrofit.Queries() Map<String, dynamic> params);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue