Browse Source

feat : 当前与历史问题列表查询条件

dev
徐振升 1 week ago
parent
commit
dca5b93924
  1. 81
      lib/modules/problem/controllers/problem_controller.dart
  2. 25
      lib/modules/problem/views/problem_page.dart
  3. 5
      lib/modules/problem/views/widgets/custom_data_range_dropdown.dart

81
lib/modules/problem/controllers/problem_controller.dart

@ -5,6 +5,7 @@ import 'package:dio/dio.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart' hide MultipartFile, FormData; import 'package:get/get.dart' hide MultipartFile, FormData;
import 'package:flutter/material.dart'; 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/data/repositories/problem_repository.dart';
import 'package:problem_check_system/modules/problem/views/widgets/custom_data_range_dropdown.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'; 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(); return unUploadedProblems.where((problem) => problem.isChecked).toList();
} }
/// ///
final Rx<DateRange> selectedDateRange = DateRange.oneWeek.obs; final Rx<DateRange> currentDateRange = DateRange.oneWeek.obs;
final RxString selectedUploadStatus = '全部'.obs; final RxString currentUploadFilter = '全部'.obs;
final RxString selectedBindingStatus = '全部'.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; final RxBool isLoading = false.obs;
@ -237,9 +244,6 @@ class ProblemController extends GetxController
// #region ta按钮 // #region ta按钮
void _onTabChanged() { void _onTabChanged() {
if (!tabController.indexIsChanging) { if (!tabController.indexIsChanging) {
selectedDateRange.value = DateRange.oneWeek;
selectedUploadStatus.value = '全部';
selectedBindingStatus.value = '全部';
loadProblems(); loadProblems();
} }
} }
@ -253,18 +257,20 @@ class ProblemController extends GetxController
final bool isProblemListTab = tabController.index == 0; final bool isProblemListTab = tabController.index == 0;
final DateTime startDate = isProblemListTab final DateTime startDate = isProblemListTab
? selectedDateRange.value.startDate ? currentDateRange.value.startDate
: DateTime(2000); // : historyStartTime.value;
final DateTime endDate = DateTime.now(); final DateTime endDate = isProblemListTab
? currentDateRange.value.endDate
: historyEndTime.value;
final String uploadStatus = isProblemListTab final String uploadStatus = isProblemListTab
? selectedUploadStatus.value ? currentUploadFilter.value
: '全部'; : historyUploadFilter.value;
final String bindStatus = isProblemListTab final String bindStatus = isProblemListTab
? selectedBindingStatus.value ? currentBindFilter.value
: '全部'; : historyBindFilter.value;
// //
final loadedProblems = await problemRepository.getProblems( final loadedProblems = await problemRepository.getProblems(
@ -287,28 +293,44 @@ class ProblemController extends GetxController
} }
} }
// todo , ///
void search({ void updateCurrentFilters({
DateRange? newDateRange, DateRange? newDateRange,
String? newUploadStatus, String? newUploadStatus,
String? newBindingStatus, 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;
}
/// //
/// loadProblems();
void updateFiltersAndLoadProblems({ }
DateRange? newDateRange,
void updateHistoryFilters({
DateTime? newStartTime,
DateTime? newEndTime,
String? newUploadStatus, String? newUploadStatus,
String? newBindingStatus, String? newBindingStatus,
}) { }) {
if (newDateRange != null) { if (newStartTime != null && historyStartTime.value != newStartTime) {
selectedDateRange.value = newDateRange; historyStartTime.value = newStartTime;
} }
if (newUploadStatus != null) { if (newUploadStatus != null &&
selectedUploadStatus.value = newUploadStatus; historyUploadFilter.value != newUploadStatus) {
historyUploadFilter.value = newUploadStatus;
} }
if (newBindingStatus != null) { if (newBindingStatus != null &&
selectedBindingStatus.value = newBindingStatus; historyBindFilter.value != newBindingStatus) {
historyBindFilter.value = newBindingStatus;
} }
// //
@ -396,4 +418,9 @@ class ProblemController extends GetxController
log('选择的日期范围是: ${picked.start}${picked.end}'); log('选择的日期范围是: ${picked.start}${picked.end}');
} }
} }
Future<void> toProblemFormPageAndRefresh() async {
await Get.toNamed(AppRoutes.problemForm);
loadProblems();
}
} }

25
lib/modules/problem/views/problem_page.dart

@ -4,7 +4,6 @@ import 'package:get/get.dart';
import 'package:problem_check_system/app/routes/app_routes.dart'; import 'package:problem_check_system/app/routes/app_routes.dart';
import 'package:problem_check_system/modules/problem/controllers/problem_controller.dart'; import 'package:problem_check_system/modules/problem/controllers/problem_controller.dart';
import 'package:problem_check_system/modules/problem/views/problem_list_page.dart'; // ProblemListPage import 'package:problem_check_system/modules/problem/views/problem_list_page.dart'; // ProblemListPage
import 'package:problem_check_system/modules/problem/views/problem_form_page.dart';
import 'package:problem_check_system/modules/problem/views/widgets/custom_data_range_dropdown.dart'; import 'package:problem_check_system/modules/problem/views/widgets/custom_data_range_dropdown.dart';
import 'package:problem_check_system/modules/problem/views/widgets/custom_string_dropdown.dart'; import 'package:problem_check_system/modules/problem/views/widgets/custom_string_dropdown.dart';
import 'package:problem_check_system/modules/problem/views/widgets/problem_card.dart'; // import 'package:problem_check_system/modules/problem/views/widgets/problem_card.dart'; //
@ -74,29 +73,29 @@ class ProblemPage extends GetView<ProblemController> {
child: Row( child: Row(
children: [ children: [
CustomDateRangeDropdown( CustomDateRangeDropdown(
selectedRange: controller.selectedDateRange, selectedRange: controller.currentDateRange,
onChanged: (rangeValue) { onChanged: (rangeValue) {
controller.updateFiltersAndLoadProblems( controller.updateCurrentFilters(
newDateRange: rangeValue, newDateRange: rangeValue,
); );
}, },
), ),
CustomStringDropdown( CustomStringDropdown(
selectedValue: controller.selectedUploadStatus, selectedValue: controller.currentUploadFilter,
items: const ['全部', '未上传', '已上传'], items: const ['全部', '未上传', '已上传'],
onChanged: (uploadValue) { onChanged: (uploadValue) {
controller.updateFiltersAndLoadProblems( controller.updateCurrentFilters(
newUploadStatus: uploadValue, newUploadStatus: uploadValue,
); );
}, },
), ),
CustomStringDropdown( CustomStringDropdown(
selectedValue: controller.selectedBindingStatus, selectedValue: controller.currentBindFilter,
items: const ['全部', '未绑定', '已绑定'], items: const ['全部', '未绑定', '已绑定'],
onChanged: (bindingValue) { onChanged: (bindingValue) {
controller.updateFiltersAndLoadProblems( controller.updateCurrentFilters(
newBindingStatus: bindingValue, newBindingStatus: bindingValue,
); );
}, },
@ -131,20 +130,20 @@ class ProblemPage extends GetView<ProblemController> {
child: const Text('选择日期范围'), child: const Text('选择日期范围'),
), ),
CustomStringDropdown( CustomStringDropdown(
selectedValue: controller.selectedUploadStatus, selectedValue: controller.historyUploadFilter,
items: const ['全部', '未上传', '已上传'], items: const ['全部', '未上传', '已上传'],
onChanged: (uploadValue) { onChanged: (uploadValue) {
controller.updateFiltersAndLoadProblems( controller.updateHistoryFilters(
newUploadStatus: uploadValue, newUploadStatus: uploadValue,
); );
}, },
), ),
CustomStringDropdown( CustomStringDropdown(
selectedValue: controller.selectedBindingStatus, selectedValue: controller.historyBindFilter,
items: const ['全部', '未绑定', '已绑定'], items: const ['全部', '未绑定', '已绑定'],
onChanged: (bindingValue) { onChanged: (bindingValue) {
controller.updateFiltersAndLoadProblems( controller.updateHistoryFilters(
newBindingStatus: bindingValue, newBindingStatus: bindingValue,
); );
}, },
@ -181,9 +180,7 @@ class ProblemPage extends GetView<ProblemController> {
padding: EdgeInsets.only(bottom: 24.h), // padding: EdgeInsets.only(bottom: 24.h), //
child: FloatingActionButton( child: FloatingActionButton(
heroTag: "btn_add", heroTag: "btn_add",
onPressed: () { onPressed: controller.toProblemFormPageAndRefresh,
Get.toNamed(AppRoutes.problemForm);
},
shape: const CircleBorder(), shape: const CircleBorder(),
backgroundColor: Colors.blue[300], backgroundColor: Colors.blue[300],
foregroundColor: Colors.white, foregroundColor: Colors.white,

5
lib/modules/problem/views/widgets/custom_data_range_dropdown.dart

@ -31,6 +31,11 @@ extension DateRangeExtension on DateRange {
return now.subtract(const Duration(days: 30)); // 30 return now.subtract(const Duration(days: 30)); // 30
} }
} }
//
DateTime get endDate {
return DateTime.now();
}
} }
class CustomDateRangeDropdown extends StatelessWidget { class CustomDateRangeDropdown extends StatelessWidget {

Loading…
Cancel
Save