瀏覽代碼

预选人列表增加 打标记 及 bug 修改

glglove 6 天之前
父節點
當前提交
c8dbf209a1
共有 18 個文件被更改,包括 354 次插入220 次删除
  1. 13 2
      packages/cpt_uk/lib/modules/attendance/security_registration/security_registration_controller.dart
  2. 1 0
      packages/cpt_uk/lib/modules/job/job_applied/job_applied_controller.dart
  3. 11 3
      packages/cpt_uk/lib/modules/job/job_applied_edit/job_applied_edit_controller.dart
  4. 17 11
      packages/cpt_uk/lib/modules/job/job_applied_staff_detail/staff_detail_widget.dart
  5. 25 4
      packages/cpt_uk/lib/modules/job/labour_request_add/labour_request_add_controller.dart
  6. 2 2
      packages/cpt_uk/lib/modules/job/labour_request_add/labour_request_add_state.dart
  7. 11 4
      packages/cpt_uk/lib/modules/job/labour_request_add/widget/lab_request_and_request_review_form.dart
  8. 18 4
      packages/cpt_uk/lib/modules/job/labour_request_preselected_list/widget/preselected_add_staff.dart
  9. 30 3
      packages/cpt_uk/lib/modules/job/labour_request_preselected_list/widget/preselected_add_staff_controller.dart
  10. 6 1
      packages/cpt_uk/lib/modules/job/template_add/template_add_controller.dart
  11. 29 7
      packages/cpt_uk/lib/modules/review/labour_review_edit/labour_review_edit_controller.dart
  12. 11 1
      packages/cpt_uk/lib/widget/date_range_picker_dialog.dart
  13. 49 0
      packages/cs_domain/lib/entity/response/uk_labour_request_preselect_addstaff_list_entity.dart
  14. 0 46
      packages/cs_domain/lib/entity/response/uk_labour_request_preselect_addstatff_list_entity.dart
  15. 11 12
      packages/cs_domain/lib/generated/json/base/json_convert_content.dart
  16. 116 0
      packages/cs_domain/lib/generated/json/uk_labour_request_preselect_addstaff_list_entity.g.dart
  17. 0 116
      packages/cs_domain/lib/generated/json/uk_labour_request_preselect_addstatff_list_entity.g.dart
  18. 4 4
      packages/cs_domain/lib/repository/uk_labour_repository.dart

+ 13 - 2
packages/cpt_uk/lib/modules/attendance/security_registration/security_registration_controller.dart

@@ -185,12 +185,17 @@ class SecurityRegistrationController extends GetxController with DioCancelableMi
 
   /// 展示编辑的弹窗
   void showEditDialog(UKSecurityAttendanceRows data) {
+    // Log.d("编辑时的 data  ${data}");
     String? dateStr = data.jobTime?.split(" ")[0];
     String? startStr = data.jobTime?.split(" ").sublist(1).join(" ").split(" ~ ")[0];
     String? endStr = data.jobTime?.split(" ").sublist(1).join(" ").split(" ~ ")[1];
 
     if (dateStr == null || startStr == null || endStr == null) return;
 
+    // Log.d("9999  ${DateTimeUtils.getDateTime(data.securityIn?.time == null ? "" : "$dateStr ${data.securityIn?.time}")}");
+    // Log.d("55  ${data.securityIn?.time}");
+    // Log.d("444  ${DateTimeUtils.getDateTime("${data.securityIn?.time}")}");
+    // Log.d("5455  $dateStr ${data.securityIn?.time}");
     DialogEngine.show(
       widget: SecurityEditDialog(
         startTime: DateTimeUtils.getDateTime("$dateStr $startStr"),
@@ -207,6 +212,8 @@ class SecurityRegistrationController extends GetxController with DioCancelableMi
 
   /// 请求接口提交门卫签到数据
   void _submitAttendance(String? appliedId, DateTime? inTime, DateTime? outTime) async {
+    // Log.d("inTime ${inTime}");
+    // Log.d("outTime ${outTime}");
     final result = await _attendanceRepository.submitSecurityAttendanceEdit(
       appliedId: appliedId,
       formView: "security",
@@ -232,13 +239,17 @@ class SecurityRegistrationController extends GetxController with DioCancelableMi
           (element) => element.id == appliedId,
     );
 
+    // inTime 为 yyyy-MM-dd HH:mm:ss 直接取值 HH:mm
+    String inTime_hhmm  = inTime.split(" ")[1];
+    String outTime_hhmm = outTime.split(" ")[1];
+
     if (element != null) {
       element.securityIn ??= UKSecurityInOut();
-      element.securityIn?.time = inTime;
+      element.securityIn?.time = inTime_hhmm;
       element.securityIn?.changed = 1;
 
       element.securityOut ??= UKSecurityInOut();
-      element.securityOut?.time = outTime;
+      element.securityOut?.time = outTime_hhmm;
       element.securityOut?.changed = 1;
 
       update();

+ 1 - 0
packages/cpt_uk/lib/modules/job/job_applied/job_applied_controller.dart

@@ -164,6 +164,7 @@ class JobAppliedController extends GetxController with DioCancelableMixin {
   void registerEventBus() {
     subscribe = bus.on(AppConstant.eventAppliedListRefresh, (arg) {
       var appliedId = arg as String;
+      Log.d("job_applied controller 收到刷新事件 获得的参数applied Id:$appliedId");
       if (Utils.isNotEmpty(appliedId)) {
         fetchItemByIdAndRefreshItem(appliedId);
       } else {

+ 11 - 3
packages/cpt_uk/lib/modules/job/job_applied_edit/job_applied_edit_controller.dart

@@ -8,6 +8,7 @@ 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/log_utils.dart';
+import 'package:shared/utils/util.dart';
 import 'package:widgets/picker/date_picker_util.dart';
 
 import 'job_applied_edit_state.dart';
@@ -22,8 +23,14 @@ class JobAppliedEditController extends GetxController with DioCancelableMixin {
 
     if (result.isSuccess) {
       state.appliedEditView = result.data;
+      // 开始如果 state.appliedEditView?.workIn 为空时,则将 state.appliedEditView?.startTime 赋值给 state.appliedEditView?.workIn
+      if(Utils.isEmpty(state.appliedEditView?.workIn)){
+        state.appliedEditView?.workIn = state.appliedEditView?.startTime;
+      }
+      if(Utils.isEmpty(state.appliedEditView?.workOut)){
+        state.appliedEditView?.workOut = state.appliedEditView?.endTime;
+      }
 
-      Log.d("6732   ${state.appliedEditView}");
 
       var addHourController = state.formData['add_hours']!['controller'];
       var totalRoomController = state.formData['total_room']!['controller'];
@@ -76,7 +83,7 @@ class JobAppliedEditController extends GetxController with DioCancelableMixin {
     );
   }
 
-  /// 选择时间
+  /// 选择门卫签到时间
   void pickSecurityInTime() {
     if (state.appliedEditView == null) return;
 
@@ -91,7 +98,7 @@ class JobAppliedEditController extends GetxController with DioCancelableMixin {
     );
   }
 
-  /// 选择时间
+  /// 选择门卫签出时间
   void pickSecurityOutTime() {
     if (state.appliedEditView == null) return;
 
@@ -169,6 +176,7 @@ class JobAppliedEditController extends GetxController with DioCancelableMixin {
     state.appliedEditView!.adjustHours = addHourController.text.toString();
     state.appliedEditView!.coReason = reasonController.text.toString();
 
+    Log.d("编辑 准备提交的 JobListAppliedEditEntity  ${state.appliedEditView}");
     //请求网络提交修改
     var result = await _jobRepository.editAppliedSingleStaffInfo(state.appliedId, state.appliedEditView!);
 

+ 17 - 11
packages/cpt_uk/lib/modules/job/job_applied_staff_detail/staff_detail_widget.dart

@@ -315,18 +315,24 @@ class StaffDetailWidget extends StatelessWidget {
   Widget _buildCertificateWidget(BuildContext context,UkStaffDetailCertificates certificateItem, int index ){
     return Row(
       children: [
-          MyTextView(
-            '${certificateItem.type!}:',
-            textColor: ColorConstants.textGrayAECAE5,
-            fontSize: 14,
-            isFontRegular: true,
+          Flexible(
+            flex: 1,
+            child: MyTextView(
+              '${certificateItem.type!}:',
+              textColor: ColorConstants.textGrayAECAE5,
+              fontSize: 14,
+              isFontRegular: true,
+            ),
           ),
-          MyTextView(
-            certificateItem.status?? "",
-            textColor: _getStatusColor(certificateItem.statusColor?? ''),
-            fontSize: 14,
-            isFontRegular: true,
-            marginLeft: 5,
+          Flexible(
+            flex: 2,
+            child: MyTextView(
+              certificateItem.status?? "",
+              textColor: _getStatusColor(certificateItem.statusColor?? ''),
+              fontSize: 14,
+              isFontRegular: true,
+              marginLeft: 5,
+            ),
           ).onTap((){
             onScanCertificateAction?.call(context, certificateItem);
           }),

+ 25 - 4
packages/cpt_uk/lib/modules/job/labour_request_add/labour_request_add_controller.dart

@@ -74,6 +74,27 @@ class LabourRequestAddController extends GetxController with DioCancelableMixin
       state.jobSelectJobStart = state.labReqOption?.jobStart?? '';
       state.jobSelectJobEnd = state.labReqOption?.jobEnd?? '';
 
+      // 证书回显
+      state.labReqOption?.certificateList?.forEach((e)=> {
+       if(e.checked == 'checked'){
+         state.selectedCertificateList?.add(e.value.toString())
+       }
+      });
+      // 车辆回显
+      state.labReqOption?.vehicleList?.forEach((e)=> {
+        if(e.checked == 'checked'){
+          state.selectedVehicleList?.add(e.value.toString())
+        }
+      });
+
+      //回显 challenge25
+      // 遍历 state.challenge25List 中找到  checked 为  checked 的项
+      int? challenge25Index = state.labReqOption?.challenge25List?.indexWhere((e) => e.checked == "checked") ?? -1;
+      if (challenge25Index != -1) {
+        state.selectedChallenge25Id = state.labReqOption?.challenge25List?[challenge25Index].value.toString();
+      }
+
+
       state.videoText = state.labReqOption?.videoText?? '';
       state.videoCover = state.labReqOption?.videoCover?? '';
       state.video = state.labReqOption?.video?? '';
@@ -233,7 +254,7 @@ class LabourRequestAddController extends GetxController with DioCancelableMixin
 
   /// 提交
   void doSubmit() async {
-    Log.d("labour_review controller 提交");
+    Log.d("labour_req controller 提交");
 
     var needNumController = state.formData['no_of_staff']!['controller'];
     var amountController = state.formData['amount']!['controller'];
@@ -319,7 +340,7 @@ class LabourRequestAddController extends GetxController with DioCancelableMixin
       // Log.d("编辑时 state.selectedCertificateList  ${state.selectedCertificateList.join(",")}");
       // Log.d("编辑时 state.selectedVehicleList  ${state.selectedVehicleList.join(",")}");
       //
-      // Log.d("编辑时准备提交的 params  ${params}");
+      Log.d("编辑时准备提交的 params  ${params}");
       // 编辑
       taskFuture = _ukLabourRepository.editLabourRequestSubmit(
         requestId: params['requestId'],
@@ -373,14 +394,14 @@ class LabourRequestAddController extends GetxController with DioCancelableMixin
         "position": position,
         "estCost": totalCost,
         "attUrl": state.attFilePath,
-        "videoText": state.videoText,
+        "videoText": videoText,
         "videoCover": state.videoCover,
         "video": state.video,
         "otherImage": state.otherImage,
         "otherDocument": state.otherDocument,
         'cancelToken': cancelToken,
       };
-      // Log.d("新增时准备提交的 params  ${params}");
+      Log.d("新增时准备提交的 params  ${params}");
       // 新增
       taskFuture = _ukLabourRepository.addLabourRequestSubmit(
         templateId: params['templateId'],

+ 2 - 2
packages/cpt_uk/lib/modules/job/labour_request_add/labour_request_add_state.dart

@@ -4,7 +4,7 @@ import 'package:cpt_uk/modules/job/labour_request_add/widget/labour_request_inte
 import 'package:cpt_uk/modules/job/labour_request_add/widget/uploadFileField.dart';
 import 'package:domain/entity/response/uk_lab_req_show_template_entity.dart';
 import 'package:domain/entity/response/uk_labour_request_detail_entity.dart';
-import 'package:domain/entity/response/uk_labour_request_preselect_addstatff_list_entity.dart';
+import 'package:domain/entity/response/uk_labour_request_preselect_addstaff_list_entity.dart';
 import 'package:flutter/material.dart';
 import 'package:plugin_basic/basic_export.dart';
 import 'package:shared/utils/date_time_utils.dart';
@@ -42,7 +42,7 @@ class LabourRequestAddState implements CommonLabourRequestState {
 
   String? preSelectedNames; // 预选人姓名
   String? preSelectedIds; // 预选人ids
-  List<UkLabourRequestPreselectAddstatffListRows>? preSelectedList = []; // 预选人列表
+  List<UkLabourRequestPreselectAddstaffListRows>? preSelectedList = []; // 预选人列表
 
   UkLabReqShowTemplateEntity? showTemplateData; // 切换模板时 获取的回显的部分数据(证书、chanllenge25、vehicle)
 

+ 11 - 4
packages/cpt_uk/lib/modules/job/labour_request_add/widget/lab_request_and_request_review_form.dart

@@ -292,8 +292,8 @@ class CommonLabourRequestFormFields extends StatelessWidget {
           child: CustomCheckBox(
             options: state.certificateList?.map<String>((e) => e.txt!).toList() ?? [],
             onOptionsSelected: (selected) {
-              Log.d("操作了证书后的 selected   ${selected}");
-              Log.d("操作证书的 state.certificateList   ${state.certificateList}");
+              Log.d("操作了证书选择的 index   ${selected}");
+              Log.d("操作证书的 state.certificateList   ${state.certificateList}");
               // 转换选中的索引为对应的 value
               state.selectedCertificateList = selected
                   .map((index) {
@@ -301,7 +301,9 @@ class CommonLabourRequestFormFields extends StatelessWidget {
               })
                   .whereType<String>()
                   .toList();
-              Log.d("操作了证书后的 selectedList   ${state.selectedCertificateList}");
+              Log.d("操作了证书后的 selectedCertificateList   ${state.selectedCertificateList}");
+              Log.d("操作了证书后的 selectedVehicleList   ${state.selectedVehicleList}");
+
             },
             selectedOptions: state.certificateList?.where((e) => e.checked == "checked").map((e) => e.txt!).toList() ?? [],
           ).marginOnly(left: 0, right: 15, top: 10),
@@ -343,6 +345,8 @@ class CommonLabourRequestFormFields extends StatelessWidget {
           child: CustomCheckBox(
             options: state.vehicleList?.map((e) => e.txt!).toList() ?? [],
             onOptionsSelected: (selected) {
+              Log.d("操作了交通工具选项的 index   ${selected}");
+              Log.d("操作交通工具前的 state.selectedCertificateList   ${state.certificateList}");
               // 转换选中的索引为对应的 value
               state.selectedVehicleList = selected
                   .map((index) {
@@ -350,6 +354,9 @@ class CommonLabourRequestFormFields extends StatelessWidget {
               })
                   .whereType<String>()
                   .toList();
+              Log.d("操作了交通工具后的 selectedVehicleList   ${state.selectedVehicleList}");
+              Log.d("操作了交通工具后的 selectedCertificateList   ${state.selectedCertificateList}");
+
             },
             selectedOptions: state.vehicleList?.where((e) => e.checked == "checked").map((e) => e.txt!).toList() ?? [],
           ).marginOnly(left: 0, right: 15, top: 10),
@@ -1057,7 +1064,7 @@ class CommonLabourRequestFormFields extends StatelessWidget {
                 height: 45,
                 fillBackgroundColor: const Color(0xFF4DCFF6).withOpacity(isDetail? 0.5 : 0.2),
                 enabled: !isDetail,
-                textInputType: TextInputType.number,
+                textInputType: TextInputType.text,
                 formData: state.formData,
                 textInputAction: TextInputAction.done,
                 onSubmit: (key, value) {

+ 18 - 4
packages/cpt_uk/lib/modules/job/labour_request_preselected_list/widget/preselected_add_staff.dart

@@ -2,7 +2,7 @@ import 'dart:ui';
 
 import 'package:cs_resources/generated/assets.dart';
 import 'package:domain/entity/response/job_list_applied_staff_search_entity.dart';
-import 'package:domain/entity/response/uk_labour_request_preselect_addstatff_list_entity.dart';
+import 'package:domain/entity/response/uk_labour_request_preselect_addstaff_list_entity.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
@@ -24,7 +24,7 @@ import 'preselected_add_staff_controller.dart';
 class PreselectedAddStaff extends StatefulWidget {
   String jobId;
   String? selectedStaffIds;
-  void Function(String selectIds, [List<UkLabourRequestPreselectAddstatffListRows>?])? confirmAction;
+  void Function(String selectIds, [List<UkLabourRequestPreselectAddstaffListRows>?])? confirmAction;
 
   PreselectedAddStaff({required this.jobId, this.selectedStaffIds, this.confirmAction});
 
@@ -142,7 +142,12 @@ class _PreselectedAddStaffState extends State<PreselectedAddStaff> {
                                 /// Item选中与未选中设置
                                 controller.datas[index].isSelected = !controller.datas[index].isSelected;
                                 controller.update();
-                              });
+                              },
+                                clickFavoriteCallback: () {
+                                  // 调用 打标的 接口
+                                  controller.handlerSetFavourite(controller.datas[index]);
+                                }
+                              );
                             },
                             childCount: controller.datas.length,
                           ))
@@ -224,7 +229,7 @@ class _PreselectedAddStaffState extends State<PreselectedAddStaff> {
 
   }
 
-  Widget _buildStaffItem(UkLabourRequestPreselectAddstatffListRows item, VoidCallback callback) {
+  Widget _buildStaffItem(UkLabourRequestPreselectAddstaffListRows item, VoidCallback callback, { VoidCallback? clickFavoriteCallback }) {
     return Stack(
       children: [
         Column(
@@ -335,6 +340,15 @@ class _PreselectedAddStaffState extends State<PreselectedAddStaff> {
           ],
         ).paddingOnly(left: 19, right: 20, top: 17),
 
+        //是否打标记的员工
+        MyAssetImage(
+          (item.isFavourite !=null && item.isFavourite == 1) ? Assets.baseServiceMarkActive : Assets.baseServiceMarkInactive,
+          width: 20,
+          height: 18.5,
+        ).alignRight().marginOnly(right: 55, top: 17.5).onTap((){
+          clickFavoriteCallback?.call();
+        }),
+
         //是否勾选
         MyAssetImage(
           item.isSelected ? Assets.baseServiceItemSelectedIcon : Assets.baseServiceItemUnselectedGrayIcon,

+ 30 - 3
packages/cpt_uk/lib/modules/job/labour_request_preselected_list/widget/preselected_add_staff_controller.dart

@@ -1,9 +1,13 @@
 import 'package:domain/entity/response/job_list_applied_staff_search_entity.dart';
-import 'package:domain/entity/response/uk_labour_request_preselect_addstatff_list_entity.dart';
+import 'package:domain/entity/response/uk_labour_request_preselect_addstaff_list_entity.dart';
 import 'package:domain/repository/job_repository.dart';
+import 'package:domain/repository/uk_job_repository.dart';
 import 'package:domain/repository/uk_labour_repository.dart';
 import 'package:flutter/material.dart';
 import 'package:plugin_basic/basic_export.dart';
+import 'package:plugin_platform/engine/loading/loading_engine.dart';
+import 'package:plugin_platform/engine/notify/notify_engine.dart';
+import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
 import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/load_state_layout.dart';
@@ -14,6 +18,7 @@ import 'package:widgets/widget_export.dart';
  */
 class PreselectedAddStaffController extends GetxController with DioCancelableMixin {
   final UkLabourRepository _labourRepository = Get.find();
+  final UKJobRepository _jobRepository = Get.find();
 
   TextEditingController searchController = TextEditingController();
 
@@ -26,7 +31,7 @@ class PreselectedAddStaffController extends GetxController with DioCancelableMix
 
   String keyword = "";
   String? jobId = null;
-  List<UkLabourRequestPreselectAddstatffListRows> datas = [];
+  List<UkLabourRequestPreselectAddstaffListRows> datas = [];
 
   //刷新页面状态
   void changeLoadingState(LoadState state) {
@@ -73,6 +78,7 @@ class PreselectedAddStaffController extends GetxController with DioCancelableMix
       cancelToken: cancelToken,
     );
 
+    // Log.d("获取到的数据 ${listResult.data}");
     // 处理数据
     if (listResult.isSuccess) {
       handleList(listResult.data?.rows);
@@ -86,7 +92,7 @@ class PreselectedAddStaffController extends GetxController with DioCancelableMix
   }
 
   // 处理数据与展示的逻辑
-  void handleList(List<UkLabourRequestPreselectAddstatffListRows>? list) {
+  void handleList(List<UkLabourRequestPreselectAddstaffListRows>? list) {
     if (list != null && list.isNotEmpty) {
       //有数据,判断是刷新还是加载更多的数据
       if (_curPage == 1) {
@@ -122,6 +128,27 @@ class PreselectedAddStaffController extends GetxController with DioCancelableMix
     refreshController.callRefresh();
   }
 
+  // 打标签
+  Future handlerSetFavourite(UkLabourRequestPreselectAddstaffListRows  data) async{
+    Log.d("点击前 isFavourite: ${data}");
+    String memberId = data.id!.toString();
+    String isFavourite = data.isFavourite?.toString()??"0";
+    String toFavourite = isFavourite == "0" ? "1" : "0";
+    Log.d("isFavourite需要设置成 : ${toFavourite}");
+
+    LoadingEngine.show();
+    final result = await _jobRepository.staffSetFavourite(memberId, toFavourite);
+    if(result.isSuccess){
+      data.isFavourite = int.parse(toFavourite);
+      update();
+      LoadingEngine.dismiss();
+      NotifyEngine.showSuccess("Successful".tr);
+    }else {
+      LoadingEngine.dismiss();
+      ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
+    }
+  }
+
   @override
   void onReady() {
     super.onReady();

+ 6 - 1
packages/cpt_uk/lib/modules/job/template_add/template_add_controller.dart

@@ -106,6 +106,8 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
           }
         });
       }
+      // 给 state.selectedCertificateList 赋值
+      _handlerCertificateEcho();
 
       // challenge25 回显
       state.selectedChallenge25Id = resultData?.challenge25?.toString()??'';
@@ -116,6 +118,8 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
           }
         });
       }
+      // 给 state.selectedChallenge25Id 赋值
+      _handlerChallenge25Echo();
 
       // 交通工具回显
       List<String> jobVechicleList = (resultData?.jobVehicle ?? '')
@@ -130,6 +134,8 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
           }
         });
       }
+      // 给 state.selectedVehicleList 赋值
+      _handlerVehicleEcho();
 
       //刷新
       update();
@@ -265,7 +271,6 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
         .toList() ?? [];
     Log.d("当前的交通工具: ${state.indexOptionEntity?.vehicleList}");
     Log.d("当前选中的交通工具:${state.selectedVehicleList}");
-
   }
 
 

+ 29 - 7
packages/cpt_uk/lib/modules/review/labour_review_edit/labour_review_edit_controller.dart

@@ -63,6 +63,26 @@ class LabourReviewEditController extends GetxController with DioCancelableMixin
       state.jobSelectJobStart = state.labReqOption?.jobStart?? '';
       state.jobSelectJobEnd = state.labReqOption?.jobEnd?? '';
 
+      // 证书回显
+      state.labReqOption?.certificateList?.forEach((e)=> {
+        if(e.checked == 'checked'){
+          state.selectedCertificateList?.add(e.value.toString())
+        }
+      });
+      // 车辆回显
+      state.labReqOption?.vehicleList?.forEach((e)=> {
+        if(e.checked == 'checked'){
+          state.selectedVehicleList?.add(e.value.toString())
+        }
+      });
+
+      //回显 challenge25
+      // 遍历 state.challenge25List 中找到  checked 为  checked 的项
+      int? challenge25Index = state.labReqOption?.challenge25List?.indexWhere((e) => e.checked == "checked") ?? -1;
+      if (challenge25Index != -1) {
+        state.selectedChallenge25Id = state.labReqOption?.challenge25List?[challenge25Index].value.toString();
+      }
+
       state.videoText = state.labReqOption?.videoText?? '';
       state.videoCover = state.labReqOption?.videoCover?? '';
       state.video = state.labReqOption?.video?? '';
@@ -263,29 +283,31 @@ class LabourReviewEditController extends GetxController with DioCancelableMixin
       if (state.showTemplateData != null) {
         // 回显 证书、vehicle
         if((state.showTemplateData?.certificate??'').isNotEmpty){
-          List<String> selectedCertificateList = state.showTemplateData?.certificate?.split(',')?? [];
+          state.selectedCertificateList = state.showTemplateData?.certificate?.split(',')?? [];
           // 循环 state.labReqOption?.certificateList 满足条件修改  checked
           state.labReqOption?.certificateList?.forEach((e)=> {
-            if(selectedCertificateList.contains(e.value.toString())){
+            if(state.selectedCertificateList.contains(e.value.toString())){
               e.checked = 'checked'
             }else {
               e.checked = ''
             }
           });
-          Log.d("切换模板后, 需要回显的证书列表: ${selectedCertificateList}");
+
+          Log.d("切换模板后, 需要回显的证书列表: ${state.selectedCertificateList}");
           Log.d("切换模板后, 证书的回显 selectedCertificateList: ${state.labReqOption?.certificateList}");
 
-          List<String> selectedVehicleList = state.showTemplateData?.vehicle?.split(',')?? [];
+          state.selectedVehicleList = state.showTemplateData?.vehicle?.split(',')?? [];
           // 循环 state.labReqOption?.vehicleList 满足条件修改  checked
           state.labReqOption?.vehicleList?.forEach((e)=> {
-            if(selectedVehicleList.contains(e.value.toString())){
+            if(state.selectedVehicleList.contains(e.value.toString())){
               e.checked = 'checked'
             }else {
               e.checked = ''
             }
           });
 
-          Log.d("切换模板后, 需要回显的vehicle列表: ${selectedVehicleList}");
+
+          Log.d("切换模板后, 需要回显的vehicle列表: ${state.selectedVehicleList}");
           Log.d("切换模板后, 证书的回显 vehicleList: ${state.labReqOption?.vehicleList}");
 
         }
@@ -545,7 +567,6 @@ class LabourReviewEditController extends GetxController with DioCancelableMixin
 
     Future<HttpResult> taskFuture;
     // 编辑
-
     Map<String, dynamic> params = {
       "requestId": state.requestId,
       "templateId": state.selectedTemplateId,
@@ -574,6 +595,7 @@ class LabourReviewEditController extends GetxController with DioCancelableMixin
       "otherDocument": state.otherDocument,
       'cancelToken': cancelToken
     };
+    Log.d("编辑时准备提交的 params  ${params}");
 
     // 调用的其实就是 lab-req 编辑的接口
     taskFuture = _ukLabourRepository.editLabourRequestReviewSubmit(

+ 11 - 1
packages/cpt_uk/lib/widget/date_range_picker_dialog.dart

@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
 import 'package:plugin_basic/basic_export.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:shared/utils/date_time_utils.dart';
+import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
@@ -176,7 +177,8 @@ class _DateRangePickerDialogState extends State<DateRangePickerDialog> {
                       child: InkWell(
                         onTap: () async {
                           if (startDate != null && endDate != null) {
-                            if (endDate!.isBefore(startDate!.add(const Duration(hours: 6)))) {
+                            // 判断结束日期是否小于开始日期
+                            if (endDate!.isBefore(startDate!)) {
                               ToastEngine.show("End date must be greater than start date");
                             } else {
                               onCancel();
@@ -184,6 +186,14 @@ class _DateRangePickerDialogState extends State<DateRangePickerDialog> {
                               String dateRange = _getDateRange(startDate!, endDate!);
                               widget.confirmAction(dateRange);
                             }
+                            // if (endDate!.isBefore(startDate!.add(const Duration(hours: 6)))) {
+                            //   ToastEngine.show("End date must be greater than start date");
+                            // } else {
+                            //   onCancel();
+                            //   // 确保开始日期和结束日期都已选择
+                            //   String dateRange = _getDateRange(startDate!, endDate!);
+                            //   widget.confirmAction(dateRange);
+                            // }
                           } else {
                             ToastEngine.show("Select Date");
                           }

+ 49 - 0
packages/cs_domain/lib/entity/response/uk_labour_request_preselect_addstaff_list_entity.dart

@@ -0,0 +1,49 @@
+import 'package:domain/generated/json/base/json_field.dart';
+import 'package:domain/generated/json/uk_labour_request_preselect_addstaff_list_entity.g.dart';
+import 'dart:convert';
+export 'package:domain/generated/json/uk_labour_request_preselect_addstaff_list_entity.g.dart';
+
+@JsonSerializable()
+class UkLabourRequestPreselectAddstaffListEntity {
+	int? total;
+	List<UkLabourRequestPreselectAddstaffListRows>? rows;
+
+	UkLabourRequestPreselectAddstaffListEntity();
+
+	factory UkLabourRequestPreselectAddstaffListEntity.fromJson(Map<String, dynamic> json) => $UkLabourRequestPreselectAddstaffListEntityFromJson(json);
+
+	Map<String, dynamic> toJson() => $UkLabourRequestPreselectAddstaffListEntityToJson(this);
+
+	@override
+	String toString() {
+		return jsonEncode(this);
+	}
+}
+
+@JsonSerializable()
+class UkLabourRequestPreselectAddstaffListRows {
+	int? id;
+	String? name;
+	@JSONField(name: "is_favourite")
+	int? isFavourite;
+	String? gender;
+	String? nric;
+	@JSONField(name: "profile_picture")
+	String? profilePicture;
+	int? status;
+	@JSONField(name: "apply_state")
+	int? applyState;
+
+	bool isSelected = false;
+
+	UkLabourRequestPreselectAddstaffListRows();
+
+	factory UkLabourRequestPreselectAddstaffListRows.fromJson(Map<String, dynamic> json) => $UkLabourRequestPreselectAddstaffListRowsFromJson(json);
+
+	Map<String, dynamic> toJson() => $UkLabourRequestPreselectAddstaffListRowsToJson(this);
+
+	@override
+	String toString() {
+		return jsonEncode(this);
+	}
+}

+ 0 - 46
packages/cs_domain/lib/entity/response/uk_labour_request_preselect_addstatff_list_entity.dart

@@ -1,46 +0,0 @@
-import 'package:domain/generated/json/base/json_field.dart';
-import 'package:domain/generated/json/uk_labour_request_preselect_addstatff_list_entity.g.dart';
-import 'dart:convert';
-export 'package:domain/generated/json/uk_labour_request_preselect_addstatff_list_entity.g.dart';
-
-@JsonSerializable()
-class UkLabourRequestPreselectAddstatffListEntity {
-	int? total;
-	List<UkLabourRequestPreselectAddstatffListRows>? rows;
-
-	UkLabourRequestPreselectAddstatffListEntity();
-
-	factory UkLabourRequestPreselectAddstatffListEntity.fromJson(Map<String, dynamic> json) => $UkLabourRequestPreselectAddstatffListEntityFromJson(json);
-
-	Map<String, dynamic> toJson() => $UkLabourRequestPreselectAddstatffListEntityToJson(this);
-
-	@override
-	String toString() {
-		return jsonEncode(this);
-	}
-}
-
-@JsonSerializable()
-class UkLabourRequestPreselectAddstatffListRows {
-	int? id;
-	String? name;
-	String? gender;
-	String? nric;
-	@JSONField(name: "profile_picture")
-	String? profilePicture;
-	int? status;
-	@JSONField(name: "apply_state")
-	int? applyState;
-	bool isSelected = false;
-
-	UkLabourRequestPreselectAddstatffListRows();
-
-	factory UkLabourRequestPreselectAddstatffListRows.fromJson(Map<String, dynamic> json) => $UkLabourRequestPreselectAddstatffListRowsFromJson(json);
-
-	Map<String, dynamic> toJson() => $UkLabourRequestPreselectAddstatffListRowsToJson(this);
-
-	@override
-	String toString() {
-		return jsonEncode(this);
-	}
-}

+ 11 - 12
packages/cs_domain/lib/generated/json/base/json_convert_content.dart

@@ -113,7 +113,7 @@ import 'package:domain/entity/response/uk_job_list_applied_staff_search_entity.d
 import 'package:domain/entity/response/uk_job_template_detail_by_select_title_entity.dart';
 import 'package:domain/entity/response/uk_lab_req_show_template_entity.dart';
 import 'package:domain/entity/response/uk_labour_request_detail_entity.dart';
-import 'package:domain/entity/response/uk_labour_request_preselect_addstatff_list_entity.dart';
+import 'package:domain/entity/response/uk_labour_request_preselect_addstaff_list_entity.dart';
 import 'package:domain/entity/response/uk_labour_request_preselected_list_entity.dart';
 import 'package:domain/entity/response/uk_labour_request_review_detail_entity.dart';
 import 'package:domain/entity/response/uk_labour_request_review_list_entity.dart';
@@ -1287,16 +1287,15 @@ class JsonConvert {
           Map<String, dynamic> e) =>
           UkLabourRequestDetailEmploymentList.fromJson(e)).toList() as M;
     }
-    if (<UkLabourRequestPreselectAddstatffListEntity>[] is M) {
-      return data.map<UkLabourRequestPreselectAddstatffListEntity>((
+    if (<UkLabourRequestPreselectAddstaffListEntity>[] is M) {
+      return data.map<UkLabourRequestPreselectAddstaffListEntity>((
           Map<String, dynamic> e) =>
-          UkLabourRequestPreselectAddstatffListEntity.fromJson(e))
-          .toList() as M;
+          UkLabourRequestPreselectAddstaffListEntity.fromJson(e)).toList() as M;
     }
-    if (<UkLabourRequestPreselectAddstatffListRows>[] is M) {
-      return data.map<UkLabourRequestPreselectAddstatffListRows>((
+    if (<UkLabourRequestPreselectAddstaffListRows>[] is M) {
+      return data.map<UkLabourRequestPreselectAddstaffListRows>((
           Map<String, dynamic> e) =>
-          UkLabourRequestPreselectAddstatffListRows.fromJson(e)).toList() as M;
+          UkLabourRequestPreselectAddstaffListRows.fromJson(e)).toList() as M;
     }
     if (<UkLabourRequestPreselectedListEntity>[] is M) {
       return data.map<UkLabourRequestPreselectedListEntity>((
@@ -1854,10 +1853,10 @@ class JsonConvertClassCollection {
         .toString(): UkLabourRequestDetailChargeList.fromJson,
     (UkLabourRequestDetailEmploymentList)
         .toString(): UkLabourRequestDetailEmploymentList.fromJson,
-    (UkLabourRequestPreselectAddstatffListEntity)
-        .toString(): UkLabourRequestPreselectAddstatffListEntity.fromJson,
-    (UkLabourRequestPreselectAddstatffListRows)
-        .toString(): UkLabourRequestPreselectAddstatffListRows.fromJson,
+    (UkLabourRequestPreselectAddstaffListEntity)
+        .toString(): UkLabourRequestPreselectAddstaffListEntity.fromJson,
+    (UkLabourRequestPreselectAddstaffListRows)
+        .toString(): UkLabourRequestPreselectAddstaffListRows.fromJson,
     (UkLabourRequestPreselectedListEntity)
         .toString(): UkLabourRequestPreselectedListEntity.fromJson,
     (UkLabourRequestPreselectedListRows)

+ 116 - 0
packages/cs_domain/lib/generated/json/uk_labour_request_preselect_addstaff_list_entity.g.dart

@@ -0,0 +1,116 @@
+import 'package:domain/generated/json/base/json_convert_content.dart';
+import 'package:domain/entity/response/uk_labour_request_preselect_addstaff_list_entity.dart';
+
+UkLabourRequestPreselectAddstaffListEntity $UkLabourRequestPreselectAddstaffListEntityFromJson(
+    Map<String, dynamic> json) {
+  final UkLabourRequestPreselectAddstaffListEntity ukLabourRequestPreselectAddstaffListEntity = UkLabourRequestPreselectAddstaffListEntity();
+  final int? total = jsonConvert.convert<int>(json['total']);
+  if (total != null) {
+    ukLabourRequestPreselectAddstaffListEntity.total = total;
+  }
+  final List<
+      UkLabourRequestPreselectAddstaffListRows>? rows = (json['rows'] as List<
+      dynamic>?)?.map(
+          (e) =>
+      jsonConvert.convert<UkLabourRequestPreselectAddstaffListRows>(
+          e) as UkLabourRequestPreselectAddstaffListRows).toList();
+  if (rows != null) {
+    ukLabourRequestPreselectAddstaffListEntity.rows = rows;
+  }
+  return ukLabourRequestPreselectAddstaffListEntity;
+}
+
+Map<String, dynamic> $UkLabourRequestPreselectAddstaffListEntityToJson(
+    UkLabourRequestPreselectAddstaffListEntity entity) {
+  final Map<String, dynamic> data = <String, dynamic>{};
+  data['total'] = entity.total;
+  data['rows'] = entity.rows?.map((v) => v.toJson()).toList();
+  return data;
+}
+
+extension UkLabourRequestPreselectAddstaffListEntityExtension on UkLabourRequestPreselectAddstaffListEntity {
+  UkLabourRequestPreselectAddstaffListEntity copyWith({
+    int? total,
+    List<UkLabourRequestPreselectAddstaffListRows>? rows,
+  }) {
+    return UkLabourRequestPreselectAddstaffListEntity()
+      ..total = total ?? this.total
+      ..rows = rows ?? this.rows;
+  }
+}
+
+UkLabourRequestPreselectAddstaffListRows $UkLabourRequestPreselectAddstaffListRowsFromJson(
+    Map<String, dynamic> json) {
+  final UkLabourRequestPreselectAddstaffListRows ukLabourRequestPreselectAddstaffListRows = UkLabourRequestPreselectAddstaffListRows();
+  final int? id = jsonConvert.convert<int>(json['id']);
+  if (id != null) {
+    ukLabourRequestPreselectAddstaffListRows.id = id;
+  }
+  final String? name = jsonConvert.convert<String>(json['name']);
+  if (name != null) {
+    ukLabourRequestPreselectAddstaffListRows.name = name;
+  }
+  final int? isFavourite = jsonConvert.convert<int>(json['is_favourite']);
+  if (isFavourite != null) {
+    ukLabourRequestPreselectAddstaffListRows.isFavourite = isFavourite;
+  }
+  final String? gender = jsonConvert.convert<String>(json['gender']);
+  if (gender != null) {
+    ukLabourRequestPreselectAddstaffListRows.gender = gender;
+  }
+  final String? nric = jsonConvert.convert<String>(json['nric']);
+  if (nric != null) {
+    ukLabourRequestPreselectAddstaffListRows.nric = nric;
+  }
+  final String? profilePicture = jsonConvert.convert<String>(
+      json['profile_picture']);
+  if (profilePicture != null) {
+    ukLabourRequestPreselectAddstaffListRows.profilePicture = profilePicture;
+  }
+  final int? status = jsonConvert.convert<int>(json['status']);
+  if (status != null) {
+    ukLabourRequestPreselectAddstaffListRows.status = status;
+  }
+  final int? applyState = jsonConvert.convert<int>(json['apply_state']);
+  if (applyState != null) {
+    ukLabourRequestPreselectAddstaffListRows.applyState = applyState;
+  }
+  return ukLabourRequestPreselectAddstaffListRows;
+}
+
+Map<String, dynamic> $UkLabourRequestPreselectAddstaffListRowsToJson(
+    UkLabourRequestPreselectAddstaffListRows entity) {
+  final Map<String, dynamic> data = <String, dynamic>{};
+  data['id'] = entity.id;
+  data['name'] = entity.name;
+  data['is_favourite'] = entity.isFavourite;
+  data['gender'] = entity.gender;
+  data['nric'] = entity.nric;
+  data['profile_picture'] = entity.profilePicture;
+  data['status'] = entity.status;
+  data['apply_state'] = entity.applyState;
+  return data;
+}
+
+extension UkLabourRequestPreselectAddstaffListRowsExtension on UkLabourRequestPreselectAddstaffListRows {
+  UkLabourRequestPreselectAddstaffListRows copyWith({
+    int? id,
+    String? name,
+    int? isFavourite,
+    String? gender,
+    String? nric,
+    String? profilePicture,
+    int? status,
+    int? applyState,
+  }) {
+    return UkLabourRequestPreselectAddstaffListRows()
+      ..id = id ?? this.id
+      ..name = name ?? this.name
+      ..isFavourite = isFavourite ?? this.isFavourite
+      ..gender = gender ?? this.gender
+      ..nric = nric ?? this.nric
+      ..profilePicture = profilePicture ?? this.profilePicture
+      ..status = status ?? this.status
+      ..applyState = applyState ?? this.applyState;
+  }
+}

+ 0 - 116
packages/cs_domain/lib/generated/json/uk_labour_request_preselect_addstatff_list_entity.g.dart

@@ -1,116 +0,0 @@
-import 'package:domain/generated/json/base/json_convert_content.dart';
-import 'package:domain/entity/response/uk_labour_request_preselect_addstatff_list_entity.dart';
-
-UkLabourRequestPreselectAddstatffListEntity $UkLabourRequestPreselectAddstatffListEntityFromJson(
-    Map<String, dynamic> json) {
-  final UkLabourRequestPreselectAddstatffListEntity ukLabourRequestPreselectAddstatffListEntity = UkLabourRequestPreselectAddstatffListEntity();
-  final int? total = jsonConvert.convert<int>(json['total']);
-  if (total != null) {
-    ukLabourRequestPreselectAddstatffListEntity.total = total;
-  }
-  final List<
-      UkLabourRequestPreselectAddstatffListRows>? rows = (json['rows'] as List<
-      dynamic>?)?.map(
-          (e) =>
-      jsonConvert.convert<UkLabourRequestPreselectAddstatffListRows>(
-          e) as UkLabourRequestPreselectAddstatffListRows).toList();
-  if (rows != null) {
-    ukLabourRequestPreselectAddstatffListEntity.rows = rows;
-  }
-  return ukLabourRequestPreselectAddstatffListEntity;
-}
-
-Map<String, dynamic> $UkLabourRequestPreselectAddstatffListEntityToJson(
-    UkLabourRequestPreselectAddstatffListEntity entity) {
-  final Map<String, dynamic> data = <String, dynamic>{};
-  data['total'] = entity.total;
-  data['rows'] = entity.rows?.map((v) => v.toJson()).toList();
-  return data;
-}
-
-extension UkLabourRequestPreselectAddstatffListEntityExtension on UkLabourRequestPreselectAddstatffListEntity {
-  UkLabourRequestPreselectAddstatffListEntity copyWith({
-    int? total,
-    List<UkLabourRequestPreselectAddstatffListRows>? rows,
-  }) {
-    return UkLabourRequestPreselectAddstatffListEntity()
-      ..total = total ?? this.total
-      ..rows = rows ?? this.rows;
-  }
-}
-
-UkLabourRequestPreselectAddstatffListRows $UkLabourRequestPreselectAddstatffListRowsFromJson(
-    Map<String, dynamic> json) {
-  final UkLabourRequestPreselectAddstatffListRows ukLabourRequestPreselectAddstatffListRows = UkLabourRequestPreselectAddstatffListRows();
-  final int? id = jsonConvert.convert<int>(json['id']);
-  if (id != null) {
-    ukLabourRequestPreselectAddstatffListRows.id = id;
-  }
-  final String? name = jsonConvert.convert<String>(json['name']);
-  if (name != null) {
-    ukLabourRequestPreselectAddstatffListRows.name = name;
-  }
-  final String? gender = jsonConvert.convert<String>(json['gender']);
-  if (gender != null) {
-    ukLabourRequestPreselectAddstatffListRows.gender = gender;
-  }
-  final String? nric = jsonConvert.convert<String>(json['nric']);
-  if (nric != null) {
-    ukLabourRequestPreselectAddstatffListRows.nric = nric;
-  }
-  final String? profilePicture = jsonConvert.convert<String>(
-      json['profile_picture']);
-  if (profilePicture != null) {
-    ukLabourRequestPreselectAddstatffListRows.profilePicture = profilePicture;
-  }
-  final int? status = jsonConvert.convert<int>(json['status']);
-  if (status != null) {
-    ukLabourRequestPreselectAddstatffListRows.status = status;
-  }
-  final int? applyState = jsonConvert.convert<int>(json['apply_state']);
-  if (applyState != null) {
-    ukLabourRequestPreselectAddstatffListRows.applyState = applyState;
-  }
-  final bool? isSelected = jsonConvert.convert<bool>(json['isSelected']);
-  if (isSelected != null) {
-    ukLabourRequestPreselectAddstatffListRows.isSelected = isSelected;
-  }
-  return ukLabourRequestPreselectAddstatffListRows;
-}
-
-Map<String, dynamic> $UkLabourRequestPreselectAddstatffListRowsToJson(
-    UkLabourRequestPreselectAddstatffListRows entity) {
-  final Map<String, dynamic> data = <String, dynamic>{};
-  data['id'] = entity.id;
-  data['name'] = entity.name;
-  data['gender'] = entity.gender;
-  data['nric'] = entity.nric;
-  data['profile_picture'] = entity.profilePicture;
-  data['status'] = entity.status;
-  data['apply_state'] = entity.applyState;
-  data['isSelected'] = entity.isSelected;
-  return data;
-}
-
-extension UkLabourRequestPreselectAddstatffListRowsExtension on UkLabourRequestPreselectAddstatffListRows {
-  UkLabourRequestPreselectAddstatffListRows copyWith({
-    int? id,
-    String? name,
-    String? gender,
-    String? nric,
-    String? profilePicture,
-    int? status,
-    int? applyState,
-    bool? isSelected,
-  }) {
-    return UkLabourRequestPreselectAddstatffListRows()
-      ..id = id ?? this.id
-      ..name = name ?? this.name
-      ..gender = gender ?? this.gender
-      ..nric = nric ?? this.nric
-      ..profilePicture = profilePicture ?? this.profilePicture
-      ..status = status ?? this.status
-      ..applyState = applyState ?? this.applyState
-      ..isSelected = isSelected ?? this.isSelected;
-  }
-}

+ 4 - 4
packages/cs_domain/lib/repository/uk_labour_repository.dart

@@ -13,7 +13,7 @@ import 'package:shared/utils/util.dart';
 import '../constants/api_constants.dart';
 import '../entity/response/uk_lab_req_show_template_entity.dart';
 import '../entity/response/uk_labour_request_detail_entity.dart';
-import '../entity/response/uk_labour_request_preselect_addstatff_list_entity.dart';
+import '../entity/response/uk_labour_request_preselect_addstaff_list_entity.dart';
 import '../entity/response/uk_labour_request_preselected_list_entity.dart';
 import '../entity/response/uk_labour_request_table_entity.dart';
 import '../entity/response/uk_labour_review_status_entity.dart';
@@ -688,7 +688,7 @@ class UkLabourRepository extends GetxService {
 
 
   /// 预选人-添加员工的列表
-  Future<HttpResult<UkLabourRequestPreselectAddstatffListEntity>> fetchtPreselectedAddStaffList(
+  Future<HttpResult<UkLabourRequestPreselectAddstaffListEntity>> fetchtPreselectedAddStaffList(
       String? keyWord,
       String? reQuestId,
       {
@@ -718,9 +718,9 @@ class UkLabourRepository extends GetxService {
     if (result.isSuccess) {
       //重新赋值data或list
       final json = result.getDataJson();
-      var data = UkLabourRequestPreselectAddstatffListEntity.fromJson(json!);
+      var data = UkLabourRequestPreselectAddstaffListEntity.fromJson(json!);
       //重新赋值data或list
-      return result.convert<UkLabourRequestPreselectAddstatffListEntity>(data: data);
+      return result.convert<UkLabourRequestPreselectAddstaffListEntity>(data: data);
     }
     return result.convert();
   }