Browse Source

日期筛选与其他筛选搜索条件

liukai 8 months ago
parent
commit
e980c10fc8

+ 36 - 12
packages/cpt_job/lib/modules/sign_in_sign_out/sign_in_sign_out_controller.dart

@@ -1,10 +1,14 @@
 import 'package:domain/entity/response/attendance_entity.dart';
 import 'package:domain/repository/job_repository.dart';
+import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:plugin_basic/service/user_service.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
+import 'package:shared/utils/date_time_utils.dart';
 import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/picker/option_pick_util.dart';
+import 'package:widgets/picker/date_picker_util.dart';
 import 'package:widgets/widget_export.dart';
 
 import 'sign_in_sign_out_state.dart';
@@ -18,6 +22,8 @@ class SignInSignOutController extends GetxController with DioCancelableMixin {
   //页面的列表数据
   List<AttendanceList> datas = [];
   String? keyword;
+  Rx<DateTime> startDate = DateTime.now().obs;
+  Rx<DateTime> endDate = DateTime.now().obs;
 
   //页面PlaceHolder的展示
   LoadState loadingState = LoadState.State_Success;
@@ -54,7 +60,13 @@ class SignInSignOutController extends GetxController with DioCancelableMixin {
 
     final String? token = UserService.to.token;
     //获取到数据
-    var result = await jobRepository.fetchAttendanceList(token, keyword, "2023-07-01", "2025-07-02", cancelToken: cancelToken);
+    var result = await jobRepository.fetchAttendanceList(
+      token,
+      keyword,
+      DateTimeUtils.formatDate(startDate.value, format: "yyyy-MM-dd"),
+      DateTimeUtils.formatDate(endDate.value, format: "yyyy-MM-dd"),
+      cancelToken: cancelToken,
+    );
 
     //处理数据
     if (result.isSuccess) {
@@ -76,12 +88,8 @@ class SignInSignOutController extends GetxController with DioCancelableMixin {
       //有数据,判断是刷新还是加载更多的数据
       datas.clear();
       datas.addAll(list);
-
-      //更新展示的状态
-      if (loadingState != LoadState.State_Success){
-        changeLoadingState(LoadState.State_Success);
-      }
-
+      //更新状态
+      changeLoadingState(LoadState.State_Success);
     } else {
       //展示无数据的布局
       datas.clear();
@@ -93,7 +101,7 @@ class SignInSignOutController extends GetxController with DioCancelableMixin {
   void doSearch() {
     var keywordController = state.formData['keyword']!['controller'];
     keyword = keywordController.text;
-    fetchAttendanceList();
+    refreshController.callRefresh();
   }
 
   @override
@@ -120,17 +128,33 @@ class SignInSignOutController extends GetxController with DioCancelableMixin {
 
   /// 重置筛选条件
   void resetFiltering() {
-    ToastEngine.show("重置筛选条件");
+    var keywordController = state.formData['keyword']!['controller'];
+    keywordController.text = "";
+    keyword = null;
+    startDate.value = DateTime.now();
+    endDate.value = DateTime.now();
+    refreshController.callRefresh();
   }
 
   /// 筛选开始日期
   void pickerStartDate() {
-    ToastEngine.show("筛选开始日期");
+    DatePickerUtil.showCupertinoDatePicker(
+      onDateTimeChanged: (date) {
+        startDate.value = date;
+        refreshController.callRefresh();
+      },
+      title: "Start Date".tr,
+    );
   }
 
   /// 筛选结束日期
   void pickerEndDate() {
-    ToastEngine.show("筛选结束日期");
+    DatePickerUtil.showCupertinoDatePicker(
+      onDateTimeChanged: (date) {
+        endDate.value = date;
+        refreshController.callRefresh();
+      },
+      title: "End Date".tr,
+    );
   }
-
 }

+ 33 - 28
packages/cpt_job/lib/modules/sign_in_sign_out/sign_in_sign_out_page.dart

@@ -10,6 +10,7 @@ import 'package:plugin_basic/base/mixin_state_lifecycle.dart';
 import 'package:plugin_basic/utils/ext_get_nav.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:router/path/router_path.dart';
+import 'package:shared/utils/date_time_utils.dart';
 import 'package:shared/utils/log_utils.dart';
 import 'package:shared/utils/screen_util.dart';
 import 'package:shared/utils/util.dart';
@@ -128,11 +129,11 @@ class _SignInSignOutPageState extends BaseState<SignInSignOutPage, SignInSignOut
                     successSliverWidget: [
                       SliverList(
                           delegate: SliverChildBuilderDelegate(
-                        (context, index) {
-                          return _buildAttendanceItem(controller, index, () {});
-                        },
-                        childCount: controller.datas.length,
-                      ))
+                                (context, index) {
+                              return _buildAttendanceItem(controller, index, () {});
+                            },
+                            childCount: controller.datas.length,
+                          ))
                     ],
                   ),
                 ).expanded(),
@@ -239,29 +240,33 @@ class _SignInSignOutPageState extends BaseState<SignInSignOutPage, SignInSignOut
         mainAxisSize: MainAxisSize.max,
         crossAxisAlignment: CrossAxisAlignment.center,
         children: [
-          MyTextView(
-            "2024-6-27",
-            fontSize: 16,
-            textAlign: TextAlign.center,
-            isFontRegular: true,
-            textColor: ColorConstants.white,
-            onClick: (){
-              controller.pickerStartDate();
-            },
-          ).expanded(),
-
-          Container(color: Color(0XFF52739C),width: 0.5,height: 21.5,),
-
-          MyTextView(
-            "2024-6-27",
-            fontSize: 16,
-            textAlign: TextAlign.center,
-            isFontRegular: true,
-            textColor: ColorConstants.white,
-            onClick: (){
-              controller.pickerEndDate();
-            },
-          ).expanded(),
+          Obx(() {
+            return MyTextView(
+              DateTimeUtils.formatDate(controller.startDate.value,format: "yyyy-MM-dd"),
+              fontSize: 16,
+              textAlign: TextAlign.center,
+              isFontRegular: true,
+              textColor: ColorConstants.white,
+              onClick: () {
+                controller.pickerStartDate();
+              },
+            );
+          }).expanded(),
+
+          Container(color: Color(0XFF52739C), width: 0.5, height: 21.5,),
+
+          Obx(() {
+            return MyTextView(
+              DateTimeUtils.formatDate(controller.endDate.value,format: "yyyy-MM-dd"),
+              fontSize: 16,
+              textAlign: TextAlign.center,
+              isFontRegular: true,
+              textColor: ColorConstants.white,
+              onClick: () {
+                controller.pickerEndDate();
+              },
+            );
+          }).expanded(),
         ],
       ),
     );

+ 4 - 0
packages/cs_resources/lib/local/language/en_US.dart

@@ -15,6 +15,10 @@ const Map<String, String> en_US = {
   'End Time:': 'End Time:',
   'Name:': 'Name:',
   'Reset': 'Reset',
+  'Start Date': 'Start Date',
+  'End Date': 'End Date',
+  'Cancel': 'Cancel',
+  'Conform': 'Conform',
 
 
   'Pull to refresh': 'Pull to refresh',

+ 4 - 1
packages/cs_resources/lib/local/language/zh_CN.dart

@@ -15,7 +15,10 @@ const Map<String, String> zh_CN = {
   'End Time:': '结束时间:',
   'Name:': '姓名:',
   'Reset': '重置',
-
+  'Start Date': '开始日期',
+  'End Date': '结束日期',
+  'Cancel': '取消',
+  'Conform': '确认',
 
   'Pull to refresh': '下拉刷新',
   'Release ready': '释放刷新',

+ 13 - 11
packages/cs_widgets/lib/picker/date_picker_util.dart

@@ -3,14 +3,13 @@ import 'package:flutter/material.dart';
 import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
 import 'package:get/get.dart';
 import 'package:cs_resources/constants/color_constants.dart';
+import 'package:shared/utils/date_time_utils.dart';
 import '../utils/dark_theme_util.dart';
 
 class DatePickerUtil {
   static void showCupertinoDatePicker({
     required Function(DateTime) onDateTimeChanged,
-    DateTime? initialDateTime,
-    int minimumYear = 1970,
-    int maximumYear = 9999,
+    DateTime? selectedDateTime,
     int minuteInterval = 1,
     DateTime? minimumDate,
     DateTime? maximumDate,
@@ -18,9 +17,10 @@ class DatePickerUtil {
     String title = '',
     DatePickerDateOrder? dateOrder,
   }) {
-    initialDateTime ??= DateTime.now();
-    minimumDate ??= DateTime(1970, 1, 1);
-    maximumDate ??= DateTime(9999, 12, 31);
+   int curMillisecond = DateTime.now().millisecondsSinceEpoch; //毫秒
+    selectedDateTime ??= DateTimeUtils.getDateTimeByMs(curMillisecond);  //当前选中的日期
+    minimumDate ??= DateTimeUtils.getDateTimeByMs(curMillisecond - 10 * 365 * 24 * 60 * 60 * 1000);  //最小范围默认减去10年
+    maximumDate ??= DateTimeUtils.getDateTimeByMs(curMillisecond + 10 * 365 * 24 * 60 * 60 * 1000); //最大范围默认加上10年
 
     SmartDialog.show(
       usePenetrate: false,
@@ -41,7 +41,7 @@ class DatePickerUtil {
                 children: [
                   CupertinoButton(
                     child: Text(
-                      '取消'.tr,
+                      'Cancel'.tr,
                       style: TextStyle(
                         fontSize: 17,
                         fontWeight: FontWeight.w500,
@@ -60,7 +60,7 @@ class DatePickerUtil {
                   ),
                   CupertinoButton(
                     child: Text(
-                      '确认'.tr,
+                      'Conform'.tr,
                       style: TextStyle(
                         fontSize: 17,
                         fontWeight: FontWeight.w500,
@@ -70,7 +70,7 @@ class DatePickerUtil {
                     onPressed: () {
                       SmartDialog.dismiss(tag: 'date_picker');
                       // 将选中的值通过回调函数传递出去
-                      onDateTimeChanged(initialDateTime!);
+                      onDateTimeChanged(selectedDateTime!);
                     },
                   ),
                 ],
@@ -85,9 +85,11 @@ class DatePickerUtil {
                 child: CupertinoDatePicker(
                   mode: mode,
                   use24hFormat: true,
-                  initialDateTime: initialDateTime,
+                  minimumDate: minimumDate,
+                  maximumDate: maximumDate,
+                  initialDateTime: selectedDateTime,
                   onDateTimeChanged: (date) {
-                    initialDateTime = date;
+                    selectedDateTime = date;
                   },
                   dateOrder: dateOrder,
                 ),

+ 4 - 4
packages/cs_widgets/lib/picker/data_pick_util.dart

@@ -6,8 +6,8 @@ import '../my_text_view.dart';
 import '../utils/dark_theme_util.dart';
 import 'package:cs_resources/constants/color_constants.dart';
 
-class DataPickerUtil {
-  static void showCupertinoDataPicker({
+class OptionPickerUtil {
+  static void showCupertinoOptionPicker({
     required List<String> items,
     required Function(List<String>, int) onPickerChanged,
     int? initialSelectIndex = 0,
@@ -35,7 +35,7 @@ class DataPickerUtil {
                 children: [
                   CupertinoButton(
                     child: Text(
-                      cancelTextStr ?? '取消'.tr,
+                      cancelTextStr ?? 'Cancel'.tr,
                       style: TextStyle(
                         fontSize: 16,
                         fontWeight: FontWeight.w600,
@@ -57,7 +57,7 @@ class DataPickerUtil {
                   ),
                   CupertinoButton(
                     child: Text(
-                      confirmTextStr ?? '确定'.tr,
+                      confirmTextStr ?? 'Confirm'.tr,
                       style: TextStyle(
                         fontSize: 16,
                         fontWeight: FontWeight.w600,