处理合并分支冲突

This commit is contained in:
1147192855@qq.com 2024-03-13 15:48:36 +08:00
parent 5d3d4b17a2
commit dd8ae7724a
7 changed files with 146 additions and 222 deletions

3
.gitignore vendored
View File

@ -206,3 +206,6 @@ marking_app/lib/common/model/job/job_level_set_params.g.dart
marking_app/lib/common/model/job/job_student_goups.g.dart marking_app/lib/common/model/job/job_student_goups.g.dart
marking_app/lib/common/model/job/job_student_level.g.dart marking_app/lib/common/model/job/job_student_level.g.dart
marking_app/lib/common/model/job/job_favorite_item_model.g.dart marking_app/lib/common/model/job/job_favorite_item_model.g.dart
marking_app/lib/pages/homework_correction/pages/job_favorite.g.dart
marking_app/lib/common/model/job/job_fav_student.g.dart
marking_app/lib/common/model/job/job_data_report.g.dart

View File

@ -1,91 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'job_data_report.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
JobDataReport _$JobDataReportFromJson(Map<String, dynamic> json) =>
JobDataReport(
json['jobId'] as int,
json['jobName'] as String,
json['gradeName'] as String,
json['className'] as String?,
json['validCount'] as int,
json['noAnswerCount'] as int,
(json['kgValidRate'] as num).toDouble(),
json['kgQuestionCount'] as int,
(json['zgValidRate'] as num).toDouble(),
json['zgQuestionCount'] as int,
(json['studentDetails'] as List<dynamic>)
.map((e) => StudentDetails.fromJson(e as Map<String, dynamic>))
.toList(),
);
Map<String, dynamic> _$JobDataReportToJson(JobDataReport instance) =>
<String, dynamic>{
'jobId': instance.jobId,
'jobName': instance.jobName,
'gradeName': instance.gradeName,
'className': instance.className,
'validCount': instance.validCount,
'noAnswerCount': instance.noAnswerCount,
'kgValidRate': instance.kgValidRate,
'kgQuestionCount': instance.kgQuestionCount,
'zgValidRate': instance.zgValidRate,
'zgQuestionCount': instance.zgQuestionCount,
'studentDetails': instance.studentDetails,
};
StudentDetails _$StudentDetailsFromJson(Map<String, dynamic> json) =>
StudentDetails(
json['studentId'] as int,
json['studentName'] as String,
json['kgValidCount'] as int,
json['kgValidRate'] as int,
json['zgValidCount'] as int,
json['zgValidRate'] as int,
(json['kgDetails'] as List<dynamic>)
.map((e) => KgDetails.fromJson(e as Map<String, dynamic>))
.toList(),
(json['zgDetails'] as List<dynamic>)
.map((e) => KgDetails.fromJson(e as Map<String, dynamic>))
.toList(),
);
Map<String, dynamic> _$StudentDetailsToJson(StudentDetails instance) =>
<String, dynamic>{
'studentId': instance.studentId,
'studentName': instance.studentName,
'kgValidCount': instance.kgValidCount,
'kgValidRate': instance.kgValidRate,
'zgValidCount': instance.zgValidCount,
'zgValidRate': instance.zgValidRate,
'kgDetails': instance.kgDetails,
'zgDetails': instance.zgDetails,
};
KgDetails _$KgDetailsFromJson(Map<String, dynamic> json) => KgDetails(
json['questionNo'] as String,
json['questionId'] as int,
json['partName'] as String,
json['state'] as int,
json['studentAnswer'] as String?,
json['questionAnswer'] as String?,
json['useTime'] as int?,
json['annotateAnswers'] as String?,
(json['score'] as num?)?.toDouble(),
);
Map<String, dynamic> _$KgDetailsToJson(KgDetails instance) => <String, dynamic>{
'questionNo': instance.questionNo,
'questionId': instance.questionId,
'partName': instance.partName,
'state': instance.state,
'studentAnswer': instance.studentAnswer,
'questionAnswer': instance.questionAnswer,
'useTime': instance.useTime,
'annotateAnswers': instance.annotateAnswers,
'score': instance.score,
};

View File

@ -39,7 +39,7 @@ class _FavoriteState extends State<FavoriteWidget> with EventBusMixin<JobQuestio
Future<JobCollectParams?> getData(int taskId, int studentId, int paperId) async { Future<JobCollectParams?> getData(int taskId, int studentId, int paperId) async {
try { try {
RestClient _client = await getClient(); RestClient _client = await getClient();
BaseStructureResult<bool> res = await _client.getJobCollect(taskId, studentId); BaseStructureResult<bool> res = await _client.getJobCollect(taskId, studentId, paperId);
if (res.success) return JobCollectParams(paperId, taskId, studentId, res.data ?? false); if (res.success) return JobCollectParams(paperId, taskId, studentId, res.data ?? false);
} catch (e) {} } catch (e) {}

View File

@ -261,8 +261,8 @@ class _HomeworkCorrectionState extends ConsumerState<HomeworkCorrection>
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () { onTap: () {
RouterManager.router.navigateTo(context, RouterManager.jobStudentGroupPath, RouterManager.router
transition: getTransition()); .navigateTo(context, RouterManager.jobStudentGroupPath, transition: getTransition());
}, },
child: Icon(IconData(0xe63e, fontFamily: "AlibabaIcon"), child: Icon(IconData(0xe63e, fontFamily: "AlibabaIcon"),
color: Color.fromRGBO(44, 48, 63, 1), size: 24.sp), color: Color.fromRGBO(44, 48, 63, 1), size: 24.sp),

View File

@ -13,6 +13,8 @@ import 'package:marking_app/utils/index.dart';
import 'package:marking_app/utils/my_text.dart'; import 'package:marking_app/utils/my_text.dart';
import 'package:marking_app/utils/request/rest_client.dart'; import 'package:marking_app/utils/request/rest_client.dart';
part 'job_favorite.g.dart';
/// ///
class JobFavorite extends StatefulWidget { class JobFavorite extends StatefulWidget {
final int jobId; final int jobId;
@ -58,8 +60,8 @@ class _JobFavoriteState extends State<JobFavorite> with CommonMixin {
Future<List<Items>> getData() async { Future<List<Items>> getData() async {
var _client = await getClient(); var _client = await getClient();
var result = await _client.getListOfJobFavorites( var result =
widget.jobId, widget.jobName, widget.className,loginName,pageSize); await _client.getListOfJobFavorites(widget.jobId, widget.jobName, widget.className, loginName, pageSize);
return result.data!.items; return result.data!.items;
} }
@ -74,16 +76,14 @@ class _JobFavoriteState extends State<JobFavorite> with CommonMixin {
Future<void> getInvolveClasses() async { Future<void> getInvolveClasses() async {
try { try {
RestClient _client = await getClient(); RestClient _client = await getClient();
BaseStructureResult<List<JobReportJoinClass>> result = BaseStructureResult<List<JobReportJoinClass>> result = await _client.getJobReportJoinClasses(widget.jobId);
await _client.getJobReportJoinClasses(widget.jobId);
if (result.success) { if (result.success) {
toUpState(setState, () { toUpState(setState, () {
involveClasses = [ involveClasses = [JobReportJoinClass(-1, '全部', -1, '全部', '全部', '全部', -1, -1, '-1'), ...(result.data ?? [])];
JobReportJoinClass(-1, '全部', -1, '全部', '全部', '全部', -1, -1, '-1'),
...(result.data ?? [])
];
involveClasses?.forEach((element) { involveClasses?.forEach((element) {
if(element.className == widget.className && element.gradeId == widget.gradeId && element.schoolId == widget.schoolId){ if (element.className == widget.className &&
element.gradeId == widget.gradeId &&
element.schoolId == widget.schoolId) {
classData = element; classData = element;
} }
}); });
@ -104,8 +104,7 @@ class _JobFavoriteState extends State<JobFavorite> with CommonMixin {
insetPadding: EdgeInsets.all(25.r), insetPadding: EdgeInsets.all(25.r),
content: FavoriteStudentDialog(), content: FavoriteStudentDialog(),
contentPadding: EdgeInsets.all(0), contentPadding: EdgeInsets.all(0),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(15.r))));
borderRadius: BorderRadius.all(Radius.circular(15.r))));
}, },
); );
} }
@ -118,16 +117,13 @@ class _JobFavoriteState extends State<JobFavorite> with CommonMixin {
appBar: AppBar( appBar: AppBar(
// titleSpacing: 0, // titleSpacing: 0,
elevation: 0.0, elevation: 0.0,
leading: IconButton( leading: IconButton(icon: Icon(Icons.arrow_back_ios), onPressed: () => Navigator.of(context).pop()),
icon: Icon(Icons.arrow_back_ios),
onPressed: () => Navigator.of(context).pop()),
iconTheme: IconThemeData(color: Colors.black), iconTheme: IconThemeData(color: Colors.black),
title: quickText('收藏夹'), title: quickText('收藏夹'),
centerTitle: true, centerTitle: true,
backgroundColor: Colors.white, backgroundColor: Colors.white,
), ),
body: MyFutureBuilder.buildFutureBuilderOfSingleInstance< body: MyFutureBuilder.buildFutureBuilderOfSingleInstance<List<Items>>(
List<Items>>(
context, context,
_future, _future,
(List<Items>? datas) { (List<Items>? datas) {
@ -141,7 +137,7 @@ class _JobFavoriteState extends State<JobFavorite> with CommonMixin {
List pageList = []; List pageList = [];
List groupList = []; List groupList = [];
if(datas!.length>0){ if (datas!.length > 0) {
for (var item in datas) { for (var item in datas) {
pageList.add(item.questionPage); pageList.add(item.questionPage);
} }
@ -163,27 +159,23 @@ class _JobFavoriteState extends State<JobFavorite> with CommonMixin {
children: [ children: [
Text( Text(
'函数A的对称性研究', '函数A的对称性研究',
style: style: TextStyle(fontSize: 14.sp, color: Color(0xFF3C3C3C)),
TextStyle(fontSize: 14.sp, color: Color(0xFF3C3C3C)),
), ),
// //
Container( Container(
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w), padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w),
child: Row( child: Row(
children: [ children: [
$classSelection(involveClasses, classData, $classSelection(involveClasses, classData, call: (JobReportJoinClass _classData) {
call: (JobReportJoinClass _classData) { classData = _classData;
classData = _classData; if (_classData.gradeId == -1) classData = null;
if (_classData.gradeId == -1) classData = null; _future = getData();
_future = getData(); toUpState(setState, () {}, mounted);
toUpState(setState, () {}, mounted); }),
}),
// Expanded(child: Text('')), // Expanded(child: Text('')),
], ],
), ),
), ),
], ],
), ),
), ),
@ -195,103 +187,122 @@ class _JobFavoriteState extends State<JobFavorite> with CommonMixin {
), ),
), ),
Expanded( Expanded(
child: isPadFlag? Padding( child: isPadFlag
padding: EdgeInsets.only(top: 10.r,bottom:8.r,left: 14.r,right: 14.r), ? Padding(
child: Column( padding: EdgeInsets.only(top: 10.r, bottom: 8.r, left: 14.r, right: 14.r),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Padding( children: [
padding: EdgeInsets.only(bottom: 5.r), Padding(
child: Text('第六题',style: TextStyle(fontSize: 14.sp,color: Color(0xFF2E5BFF)),), padding: EdgeInsets.only(bottom: 5.r),
), child: Text(
GridView(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( '第六题',
crossAxisCount: 2, style: TextStyle(fontSize: 14.sp, color: Color(0xFF2E5BFF)),
mainAxisSpacing: 8.r, ),
crossAxisSpacing: 10.r,
childAspectRatio: 556 / 112,
),
shrinkWrap: true,
children: [
Container(
padding: EdgeInsets.symmetric(vertical: 5.r,horizontal: 10.r),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(6.r)),
),
child: InkWell(
onTap: (){
showStudentDialog(context);
},
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
quickText('张小凡',
color: Color(0xFF333333),
size: 12.sp),
Expanded(child: Container()),
Padding(
padding:EdgeInsets.only(right: 8.r),
child: Text('12班',style: TextStyle(fontSize: 12.sp,color: Color(0xFF666666)),),
),
InkWell(
onTap: () async {
print('删除');
},
child: Image.asset('assets/images/favorite_delete_icon.png',width: 26.r,height: 26.r,),
),
],
),
),
),
],),
],
),
):ListView.builder(
shrinkWrap: true,
itemBuilder: (context, index) {
// Items item = datas[index];
return Padding(
padding: EdgeInsets.only(top: 10.r,bottom:8.r,left: 14.r,right: 14.r),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(bottom: 5.r),
child: Text('第六题',style: TextStyle(fontSize: 14.sp,color: Color(0xFF2E5BFF)),),
),
Container(
padding: EdgeInsets.symmetric(vertical: 5.r,horizontal: 10.r),
margin: EdgeInsets.only(top: 5.r),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(6.r)),
), ),
child: Row( GridView(
mainAxisAlignment: MainAxisAlignment.spaceBetween, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
mainAxisSpacing: 8.r,
crossAxisSpacing: 10.r,
childAspectRatio: 556 / 112,
),
shrinkWrap: true,
children: [ children: [
quickText('张小凡', Container(
color: Color(0xFF333333), padding: EdgeInsets.symmetric(vertical: 5.r, horizontal: 10.r),
size: 14.sp), decoration: BoxDecoration(
Expanded(child: Container()), color: Colors.white,
Padding( borderRadius: BorderRadius.all(Radius.circular(6.r)),
padding:EdgeInsets.only(right: 8.r), ),
child: Text('12班',style: TextStyle(fontSize: 14.sp,color: Color(0xFF666666)),), child: InkWell(
), onTap: () {
InkWell( showStudentDialog(context);
onTap: () async {}, },
child: Image.asset('assets/images/favorite_delete_icon.png',width: 32.r,height: 32.r,), child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
quickText('张小凡', color: Color(0xFF333333), size: 12.sp),
Expanded(child: Container()),
Padding(
padding: EdgeInsets.only(right: 8.r),
child: Text(
'12班',
style: TextStyle(fontSize: 12.sp, color: Color(0xFF666666)),
),
),
InkWell(
onTap: () async {
print('删除');
},
child: Image.asset(
'assets/images/favorite_delete_icon.png',
width: 26.r,
height: 26.r,
),
),
],
),
),
), ),
], ],
), ),
), ],
], ),
)
: ListView.builder(
shrinkWrap: true,
itemBuilder: (context, index) {
// Items item = datas[index];
return Padding(
padding: EdgeInsets.only(top: 10.r, bottom: 8.r, left: 14.r, right: 14.r),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(bottom: 5.r),
child: Text(
'第六题',
style: TextStyle(fontSize: 14.sp, color: Color(0xFF2E5BFF)),
),
),
Container(
padding: EdgeInsets.symmetric(vertical: 5.r, horizontal: 10.r),
margin: EdgeInsets.only(top: 5.r),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(6.r)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
quickText('张小凡', color: Color(0xFF333333), size: 14.sp),
Expanded(child: Container()),
Padding(
padding: EdgeInsets.only(right: 8.r),
child: Text(
'12班',
style: TextStyle(fontSize: 14.sp, color: Color(0xFF666666)),
),
),
InkWell(
onTap: () async {},
child: Image.asset(
'assets/images/favorite_delete_icon.png',
width: 32.r,
height: 32.r,
),
),
],
),
),
],
),
);
},
// itemCount: datas.length,
itemCount: 10,
), ),
);
},
// itemCount: datas.length,
itemCount: 10,
),
), ),
], ],
)); ));
@ -299,15 +310,13 @@ GridView(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
), ),
); );
} }
} }
/// ///
@swidget @swidget
Widget $classSelection( Widget $classSelection(List<JobReportJoinClass>? involveClasses, JobReportJoinClass? classData,
List<JobReportJoinClass>? involveClasses, JobReportJoinClass? classData,
{required Function(JobReportJoinClass) call}) { {required Function(JobReportJoinClass) call}) {
if (involveClasses == null) if (involveClasses == null) return Container(child: quickText('点击重试')); //
return Container(child: quickText('点击重试')); //
return Container( return Container(
// width: 200.r, // width: 200.r,
padding: EdgeInsets.symmetric(horizontal: 10.r), padding: EdgeInsets.symmetric(horizontal: 10.r),
@ -325,7 +334,7 @@ Widget $classSelection(
items: involveClasses.map((e) { items: involveClasses.map((e) {
return DropdownMenuItem( return DropdownMenuItem(
value: e.uniqueId!, value: e.uniqueId!,
child: quickText(e.uniqueId == '-1'?e.graduationYear:e.graduationYear + e.className, child: quickText(e.uniqueId == '-1' ? e.graduationYear : e.graduationYear + e.className,
size: 12.sp, color: Colors.black), size: 12.sp, color: Colors.black),
); );
}).toList(), }).toList(),

View File

@ -249,8 +249,8 @@ abstract class RestClient {
// => // =>
@the_retrofit.GET("${RequestConfig.hwProxyKeywords}/api/Dpc/collect") @the_retrofit.GET("${RequestConfig.hwProxyKeywords}/api/Dpc/collect")
Future<BaseStructureResult<bool>> getJobCollect( Future<BaseStructureResult<bool>> getJobCollect(@the_retrofit.Query("taskId") int taskId,
@the_retrofit.Query("taskId") int taskId, @the_retrofit.Query("studentId") int studentId); @the_retrofit.Query("studentId") int studentId, @the_retrofit.Query("paperId") int paperId);
// => // =>
@the_retrofit.POST("/api/read/cancel-job-read-level") @the_retrofit.POST("/api/read/cancel-job-read-level")

View File

@ -29,6 +29,8 @@ environment:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
flutter_localizations:
sdk: flutter
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.
@ -108,6 +110,7 @@ dependencies:
badges: ^3.1.2 badges: ^3.1.2
horizontal_data_table: ^4.1.1 horizontal_data_table: ^4.1.1
data_table_2: ^2.5.10 data_table_2: ^2.5.10
syncfusion_flutter_datepicker: ^21.2.10
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: