Quellcode durchsuchen

添加员工筛选的逻辑和时间筛选的默认选择逻辑

liukai vor 2 Tagen
Ursprung
Commit
c7f3b55eb3

+ 60 - 20
packages/cpt_th/lib/modules/job_er/applied_er/widget/er_applied_add_staff.dart

@@ -32,17 +32,21 @@ class ErAppliedAddStaff extends StatefulWidget {
 }
 
 class _AppliedAddStaffState extends State<ErAppliedAddStaff> {
+  late TextEditingController searchController;
+
   @override
   void initState() {
     super.initState();
-    ErAppliedAddStaffController controller =  Get.put(ErAppliedAddStaffController());
+    ErAppliedAddStaffController controller = Get.put(ErAppliedAddStaffController());
     controller.jobId = widget.jobId;
+    searchController = TextEditingController();
   }
 
   @override
   void dispose() {
     super.dispose();
     Get.delete<ErAppliedAddStaffController>();
+    searchController.dispose();
   }
 
   @override
@@ -67,29 +71,66 @@ class _AppliedAddStaffState extends State<ErAppliedAddStaff> {
                   isFontMedium: true,
                   textColor: ColorConstants.black,
                   marginTop: 22,
-                  marginBottom: 15,
+                  marginBottom: 5,
                   marginLeft: 22,
                   marginRight: 22,
                 ),
               ),
 
-              SearchAppBar(
-                value: controller.keyword,
-                searchBarHeight: 38,
-                searchBarBgColor: Colors.white,
-                searchBarBorderRadius: 15,
-                searchBarBorder: Border.all(
-                  color: const Color(0XFFC3C3C3), // 设置边框颜色为灰色
-                  width: 0.5, // 设置边框宽度
-                ),
-                textHintColor: const Color(0XFFAFB3B7),
-                textColor: ColorConstants.black33,
-                onSearch: (keyword) {
-                  controller.doSearch(keyword);
-                },
-                hintText: "Staff Name/ID/Phone".tr,
-                controller: controller.searchController,
-              ).marginOnly(left: 16.5, right: 1.5, bottom: 15.5),
+              Row(
+                children: [
+                  //选择状态
+                  Container(
+                    padding: const EdgeInsets.only(left: 10, right: 5),
+                    margin: const EdgeInsets.only(left: 15, right: 8),
+                    height: 38,
+                    decoration: BoxDecoration(
+                      color: Colors.white,
+                      borderRadius: const BorderRadius.all(Radius.circular(15)),
+                      border: Border.all(
+                        color: const Color(0XFFC3C3C3), // 添加边框颜色
+                        width: 0.5, // 添加边框宽度
+                      ),
+                    ),
+                    child: Row(
+                      mainAxisSize: MainAxisSize.max,
+                      crossAxisAlignment: CrossAxisAlignment.center,
+                      mainAxisAlignment: MainAxisAlignment.start,
+                      children: [
+                        MyTextView(
+                          controller.selectedType ?? "",
+                          fontSize: 14,
+                          hint: "Choose Type".tr,
+                          textHintColor: ColorConstants.textBlackHint,
+                          isFontMedium: true,
+                          textColor: ColorConstants.black33,
+                        ).expanded(),
+                        const MyAssetImage(Assets.baseServiceTriangleDropDownIcon, width: 11.5, height: 6.28),
+                      ],
+                    ),
+                  ).onTap(() {
+                    controller.pickerType();
+                  }).expanded(flex: 1),
+
+                  SearchAppBar(
+                    value: controller.keyword,
+                    searchBarHeight: 38,
+                    searchBarBgColor: Colors.white,
+                    searchBarBorderRadius: 15,
+                    searchBarBorder: Border.all(
+                      color: const Color(0XFFC3C3C3), // 设置边框颜色为灰色
+                      width: 0.5, // 设置边框宽度
+                    ),
+                    textHintColor: const Color(0XFFAFB3B7),
+                    textColor: ColorConstants.black33,
+                    onSearch: (keyword) {
+                      controller.doSearch(keyword);
+                    },
+                    hintText: "Staff Name/ID/Phone".tr,
+                    controller: searchController,
+                  ).expanded(flex: 1),
+                ],
+              ).marginOnly(bottom: 10),
 
               Container(
                 color: Colors.white,
@@ -221,7 +262,6 @@ class _AppliedAddStaffState extends State<ErAppliedAddStaff> {
 
       widget.confirmAction?.call(separatedIds);
     }
-
   }
 
   Widget _buildStaffItem(THAppliedEmployeeRows item, VoidCallback callback) {

+ 28 - 2
packages/cpt_th/lib/modules/job_er/applied_er/widget/er_applied_add_staff_controller.dart

@@ -4,13 +4,12 @@ import 'package:flutter/material.dart';
 import 'package:plugin_basic/basic_export.dart';
 import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
 import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/picker/option_pick_util.dart';
 import 'package:widgets/widget_export.dart';
 
 class ErAppliedAddStaffController extends GetxController with DioCancelableMixin {
   final THERRepository _erRepository = Get.find();
 
-  TextEditingController searchController = TextEditingController();
-
   var _curPage = 1;
   var _needShowPlaceholder = true;
 
@@ -22,6 +21,9 @@ class ErAppliedAddStaffController extends GetxController with DioCancelableMixin
   String? jobId;
   List<THAppliedEmployeeRows> datas = [];
 
+  List<String> types = ['regular', 'all'];
+  String? selectedType;
+
   //刷新页面状态
   void changeLoadingState(LoadState state) {
     loadingState = state;
@@ -63,6 +65,7 @@ class ErAppliedAddStaffController extends GetxController with DioCancelableMixin
     var listResult = await _erRepository.searchStaffList(
       jobId,
       keyword,
+      selectedType,
       curPage: _curPage,
       cancelToken: cancelToken,
     );
@@ -127,4 +130,27 @@ class ErAppliedAddStaffController extends GetxController with DioCancelableMixin
     datas.clear();
     super.onClose();
   }
+
+  void pickerType() {
+    int selectedIndex;
+    if (selectedType == null) {
+      selectedIndex = 0;
+    } else {
+      selectedIndex = types.indexWhere((type) => type == selectedType);
+    }
+
+    if (selectedIndex < 0) {
+      selectedIndex = 0;
+    }
+
+    OptionPickerUtil.showCupertinoOptionPicker(
+      items: types,
+      initialSelectIndex: selectedIndex,
+      onPickerChanged: (_, index) {
+        selectedType = types[index];
+        refreshController.callRefresh();
+        update();
+      },
+    );
+  }
 }

+ 21 - 4
packages/cpt_th/lib/modules/job_er/applied_er_edit/applied_er_edit_controller.dart

@@ -8,6 +8,7 @@ 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:shared/utils/event_bus.dart';
+import 'package:shared/utils/util.dart';
 import 'package:widgets/picker/date_picker_util.dart';
 
 import 'applied_er_edit_state.dart';
@@ -81,8 +82,12 @@ class AppliedErEditController extends GetxController with DioCancelableMixin {
   void pickSecurityInTime() {
     if (state.appliedEditView == null) return;
 
+   DateTime? selectedDate = Utils.isNotEmpty(state.appliedEditView!.securityIn) && state.appliedEditView!.securityIn != "0" ?
+   DateTimeUtils.getDateTime(state.appliedEditView!.securityIn ?? "") :
+   DateTimeUtils.getDateTimeByMs((state.appliedEditView?.applied?.startTime ?? 0) * 1000);
+
     DatePickerUtil.showCupertinoDatePicker(
-      selectedDateTime: DateTimeUtils.getDateTime(state.appliedEditView!.securityIn ?? ""),
+      selectedDateTime: selectedDate,
       mode: CupertinoDatePickerMode.dateAndTime,
       onDateTimeChanged: (date) {
         state.appliedEditView!.securityIn = DateTimeUtils.formatDate(date);
@@ -96,8 +101,12 @@ class AppliedErEditController extends GetxController with DioCancelableMixin {
   void pickSecurityOutTime() {
     if (state.appliedEditView == null) return;
 
+    DateTime? selectedDate = Utils.isNotEmpty(state.appliedEditView!.securityOut) && state.appliedEditView!.securityOut != "0" ?
+    DateTimeUtils.getDateTime(state.appliedEditView!.securityOut ?? "") :
+    DateTimeUtils.getDateTimeByMs((state.appliedEditView?.applied?.endTime ?? 0) * 1000);
+
     DatePickerUtil.showCupertinoDatePicker(
-      selectedDateTime: DateTimeUtils.getDateTime(state.appliedEditView!.securityOut ?? ""),
+      selectedDateTime: selectedDate,
       mode: CupertinoDatePickerMode.dateAndTime,
       onDateTimeChanged: (date) {
         state.appliedEditView!.securityOut = DateTimeUtils.formatDate(date);
@@ -111,8 +120,12 @@ class AppliedErEditController extends GetxController with DioCancelableMixin {
   void pickWorkInTime() {
     if (state.appliedEditView == null) return;
 
+    DateTime? selectedDate = Utils.isNotEmpty(state.appliedEditView!.workIn) && state.appliedEditView!.workIn != "0" ?
+    DateTimeUtils.getDateTime(state.appliedEditView!.workIn ?? "") :
+    DateTimeUtils.getDateTimeByMs((state.appliedEditView?.applied?.startTime ?? 0) * 1000);
+
     DatePickerUtil.showCupertinoDatePicker(
-      selectedDateTime: DateTimeUtils.getDateTime(state.appliedEditView!.workIn ?? ""),
+      selectedDateTime: selectedDate,
       mode: CupertinoDatePickerMode.dateAndTime,
       onDateTimeChanged: (date) {
         state.appliedEditView!.workIn = DateTimeUtils.formatDate(date);
@@ -126,8 +139,12 @@ class AppliedErEditController extends GetxController with DioCancelableMixin {
   void pickWorkOutTime() {
     if (state.appliedEditView == null) return;
 
+    DateTime? selectedDate = Utils.isNotEmpty(state.appliedEditView!.workOut) && state.appliedEditView!.workOut != "0" ?
+    DateTimeUtils.getDateTime(state.appliedEditView!.workOut ?? "") :
+    DateTimeUtils.getDateTimeByMs((state.appliedEditView?.applied?.endTime ?? 0) * 1000);
+
     DatePickerUtil.showCupertinoDatePicker(
-      selectedDateTime: DateTimeUtils.getDateTime(state.appliedEditView!.workOut ?? ""),
+      selectedDateTime: selectedDate,
       mode: CupertinoDatePickerMode.dateAndTime,
       onDateTimeChanged: (date) {
         state.appliedEditView!.workOut = DateTimeUtils.formatDate(date);

+ 1 - 1
packages/cs_domain/lib/constants/api_constants.dart

@@ -2,7 +2,7 @@
 
 class ApiConstants {
   //当前服务器环境
-  static const isServerRelease = true;
+  static const isServerRelease = false;
 
   //新加坡的域名
   static const sgBaseUrl = isServerRelease ? 'https://casualabour.com/' : 'http://singapore-dev.casualabour.com';

+ 5 - 2
packages/cs_domain/lib/repository/th_er_repository.dart

@@ -549,7 +549,8 @@ class THERRepository extends GetxService {
   /// 添加员工的全部员工数据列表
   Future<HttpResult<THAppliedEmployeeEntity>> searchStaffList(
     String? jobId,
-    String? keyword, {
+    String? keyword,
+    String? type, {
     required int curPage,
     CancelToken? cancelToken,
   }) async {
@@ -564,6 +565,9 @@ class THERRepository extends GetxService {
     if (Utils.isNotEmpty(keyword)) {
       params["keyword"] = keyword!;
     }
+    if (Utils.isNotEmpty(type) && type == "regular") {
+      params["staff_type"] = type!;
+    }
 
     final result = await httpProvider.requestNetResult(
       ApiConstants.apiERAppliedAddEmployeeTH,
@@ -956,5 +960,4 @@ class THERRepository extends GetxService {
     }
     return result.convert();
   }
-
 }