|
|
|
@ -5,6 +5,7 @@ import 'package:dio/dio.dart';
|
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
|
|
import 'package:get/get.dart' hide MultipartFile, FormData; |
|
|
|
|
import 'package:flutter/material.dart'; |
|
|
|
|
import 'package:problem_check_system/app/routes/app_routes.dart'; |
|
|
|
|
import 'package:problem_check_system/data/repositories/problem_repository.dart'; |
|
|
|
|
import 'package:problem_check_system/modules/problem/views/widgets/custom_data_range_dropdown.dart'; |
|
|
|
|
import 'package:problem_check_system/data/models/problem_model.dart'; |
|
|
|
@ -35,10 +36,16 @@ class ProblemController extends GetxController
|
|
|
|
|
return unUploadedProblems.where((problem) => problem.isChecked).toList(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// 筛选条件 |
|
|
|
|
final Rx<DateRange> selectedDateRange = DateRange.oneWeek.obs; |
|
|
|
|
final RxString selectedUploadStatus = '全部'.obs; |
|
|
|
|
final RxString selectedBindingStatus = '全部'.obs; |
|
|
|
|
/// 问题列表筛选条件 |
|
|
|
|
final Rx<DateRange> currentDateRange = DateRange.oneWeek.obs; |
|
|
|
|
final RxString currentUploadFilter = '全部'.obs; |
|
|
|
|
final RxString currentBindFilter = '全部'.obs; |
|
|
|
|
|
|
|
|
|
// 历史问题列表筛选条件 |
|
|
|
|
final Rx<DateTime> historyStartTime = DateTime.now().obs; |
|
|
|
|
final Rx<DateTime> historyEndTime = DateTime.now().obs; |
|
|
|
|
final RxString historyUploadFilter = '全部'.obs; |
|
|
|
|
final RxString historyBindFilter = '全部'.obs; |
|
|
|
|
|
|
|
|
|
/// 是否加载中 |
|
|
|
|
final RxBool isLoading = false.obs; |
|
|
|
@ -237,9 +244,6 @@ class ProblemController extends GetxController
|
|
|
|
|
// #region ta按钮 |
|
|
|
|
void _onTabChanged() { |
|
|
|
|
if (!tabController.indexIsChanging) { |
|
|
|
|
selectedDateRange.value = DateRange.oneWeek; |
|
|
|
|
selectedUploadStatus.value = '全部'; |
|
|
|
|
selectedBindingStatus.value = '全部'; |
|
|
|
|
loadProblems(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -253,18 +257,20 @@ class ProblemController extends GetxController
|
|
|
|
|
final bool isProblemListTab = tabController.index == 0; |
|
|
|
|
|
|
|
|
|
final DateTime startDate = isProblemListTab |
|
|
|
|
? selectedDateRange.value.startDate |
|
|
|
|
: DateTime(2000); // 历史列表从很早的日期开始 |
|
|
|
|
? currentDateRange.value.startDate |
|
|
|
|
: historyStartTime.value; |
|
|
|
|
|
|
|
|
|
final DateTime endDate = DateTime.now(); |
|
|
|
|
final DateTime endDate = isProblemListTab |
|
|
|
|
? currentDateRange.value.endDate |
|
|
|
|
: historyEndTime.value; |
|
|
|
|
|
|
|
|
|
final String uploadStatus = isProblemListTab |
|
|
|
|
? selectedUploadStatus.value |
|
|
|
|
: '全部'; |
|
|
|
|
? currentUploadFilter.value |
|
|
|
|
: historyUploadFilter.value; |
|
|
|
|
|
|
|
|
|
final String bindStatus = isProblemListTab |
|
|
|
|
? selectedBindingStatus.value |
|
|
|
|
: '全部'; |
|
|
|
|
? currentBindFilter.value |
|
|
|
|
: historyBindFilter.value; |
|
|
|
|
|
|
|
|
|
// 只执行一次数据库查询 |
|
|
|
|
final loadedProblems = await problemRepository.getProblems( |
|
|
|
@ -287,28 +293,44 @@ class ProblemController extends GetxController
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// todo 查询问题:起始时间,结束时间,是否上传,是否绑定,重载查询 |
|
|
|
|
void search({ |
|
|
|
|
/// |
|
|
|
|
void updateCurrentFilters({ |
|
|
|
|
DateRange? newDateRange, |
|
|
|
|
String? newUploadStatus, |
|
|
|
|
String? newBindingStatus, |
|
|
|
|
}) {} |
|
|
|
|
}) { |
|
|
|
|
if (newDateRange != null && currentDateRange.value != newDateRange) { |
|
|
|
|
currentDateRange.value = newDateRange; |
|
|
|
|
} |
|
|
|
|
if (newUploadStatus != null && |
|
|
|
|
currentUploadFilter.value != newUploadStatus) { |
|
|
|
|
currentUploadFilter.value = newUploadStatus; |
|
|
|
|
} |
|
|
|
|
if (newBindingStatus != null && |
|
|
|
|
currentBindFilter.value != newBindingStatus) { |
|
|
|
|
currentBindFilter.value = newBindingStatus; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// |
|
|
|
|
/// |
|
|
|
|
void updateFiltersAndLoadProblems({ |
|
|
|
|
DateRange? newDateRange, |
|
|
|
|
// 只要调用此方法,就重新加载数据 |
|
|
|
|
loadProblems(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void updateHistoryFilters({ |
|
|
|
|
DateTime? newStartTime, |
|
|
|
|
DateTime? newEndTime, |
|
|
|
|
String? newUploadStatus, |
|
|
|
|
String? newBindingStatus, |
|
|
|
|
}) { |
|
|
|
|
if (newDateRange != null) { |
|
|
|
|
selectedDateRange.value = newDateRange; |
|
|
|
|
if (newStartTime != null && historyStartTime.value != newStartTime) { |
|
|
|
|
historyStartTime.value = newStartTime; |
|
|
|
|
} |
|
|
|
|
if (newUploadStatus != null) { |
|
|
|
|
selectedUploadStatus.value = newUploadStatus; |
|
|
|
|
if (newUploadStatus != null && |
|
|
|
|
historyUploadFilter.value != newUploadStatus) { |
|
|
|
|
historyUploadFilter.value = newUploadStatus; |
|
|
|
|
} |
|
|
|
|
if (newBindingStatus != null) { |
|
|
|
|
selectedBindingStatus.value = newBindingStatus; |
|
|
|
|
if (newBindingStatus != null && |
|
|
|
|
historyBindFilter.value != newBindingStatus) { |
|
|
|
|
historyBindFilter.value = newBindingStatus; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 只要调用此方法,就重新加载数据 |
|
|
|
@ -396,4 +418,9 @@ class ProblemController extends GetxController
|
|
|
|
|
log('选择的日期范围是: ${picked.start} 到 ${picked.end}'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Future<void> toProblemFormPageAndRefresh() async { |
|
|
|
|
await Get.toNamed(AppRoutes.problemForm); |
|
|
|
|
loadProblems(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|