glglove 2 dienas atpakaļ
vecāks
revīzija
9b2a6aef95
22 mainītis faili ar 909 papildinājumiem un 120 dzēšanām
  1. 6 0
      packages/cpt_uk/lib/modules/job/job_applied/job_applied_controller.dart
  2. 2 0
      packages/cpt_uk/lib/modules/job/job_applied/job_applied_state.dart
  3. 36 0
      packages/cpt_uk/lib/modules/job/job_list/job_list_controller.dart
  4. 17 1
      packages/cpt_uk/lib/modules/job/labour_request_add/labour_request_add_controller.dart
  5. 74 76
      packages/cpt_uk/lib/modules/job/template_add/template_add_controller.dart
  6. 31 23
      packages/cpt_uk/lib/modules/job/template_add/template_add_page.dart
  7. 4 2
      packages/cpt_uk/lib/modules/job/template_add/template_add_state.dart
  8. 3 3
      packages/cpt_uk/lib/modules/job/template_list/template_list_controller.dart
  9. 1 1
      packages/cpt_uk/lib/modules/job/template_list/template_list_page.dart
  10. 2 2
      packages/cpt_uk/lib/modules/review/labour_review_list/labour_review_controller.dart
  11. 2 2
      packages/cpt_uk/lib/modules/review/labour_review_workflow/labour_request_workflow_state.dart
  12. 6 3
      packages/cpt_uk/lib/modules/review/labour_review_workflow/labour_review_workflow_controller.dart
  13. 2 1
      packages/cpt_uk/lib/modules/review/labour_review_workflow/labour_review_workflow_item.dart
  14. 1 0
      packages/cs_domain/lib/constants/api_constants.dart
  15. 140 0
      packages/cs_domain/lib/entity/response/uk_labour_review_status_entity.dart
  16. 28 2
      packages/cs_domain/lib/entity/response/uk_template_detail_entity.dart
  17. 23 0
      packages/cs_domain/lib/generated/json/base/json_convert_content.dart
  18. 426 0
      packages/cs_domain/lib/generated/json/uk_labour_review_status_entity.g.dart
  19. 74 4
      packages/cs_domain/lib/generated/json/uk_template_detail_entity.g.dart
  20. 2 0
      packages/cs_domain/lib/repository/uk_job_repository.dart
  21. 27 0
      packages/cs_domain/lib/repository/uk_labour_repository.dart
  22. 2 0
      packages/cs_plugin_basic/lib/constants/app_constant.dart

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

@@ -197,6 +197,8 @@ class JobAppliedController extends GetxController with DioCancelableMixin {
       widget: AppliedAddStaff(
         jobId: state.jobId!,
         confirmAction: (selectedIds) {
+          state.addStaffCount = selectedIds?.split(",").length?? 0;
+          Log.d("新添加员工数量:${state.addStaffCount}");
           //调用接口添加员工
           _requestAddStaff2Applied(selectedIds);
         },
@@ -209,6 +211,7 @@ class JobAppliedController extends GetxController with DioCancelableMixin {
     var result = await _jobRepository.addStaff2Job(state.jobId, selectedIds, cancelToken: cancelToken);
 
     if (result.isSuccess) {
+
       var addStaffEntity = result.data;
       List<String> filteredMessages = [];
       if (addStaffEntity != null && addStaffEntity.resultList?.isNotEmpty == true) {
@@ -222,11 +225,14 @@ class JobAppliedController extends GetxController with DioCancelableMixin {
       if (filteredMessages.isNotEmpty) {
         //有错误信息
         NotifyEngine.showFailure(filteredMessages.join(" , "));
+        bus.emit(AppConstant.eventJobListChangeStaffNo, {'addStaffCount': state.addStaffCount,'jobId': state.jobId});
       } else {
         //无错误信息
         NotifyEngine.showSuccess("Successful".tr);
         //添加成功之后刷新页面
         refreshController.callRefresh();
+        // 同时还需要 通知 job-list 页面 修改 指定item的 staff
+        bus.emit(AppConstant.eventJobListChangeStaffNo, {'addStaffCount': state.addStaffCount,'jobId': state.jobId});
       }
     } else {
       ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);

+ 2 - 0
packages/cpt_uk/lib/modules/job/job_applied/job_applied_state.dart

@@ -12,6 +12,8 @@ class JobAppliedState {
   String? jobId;
   JobListAppliedInfoEntity? jobInfo;
 
+  int addStaffCount = 0;
+
 
   List<UkJobAppliedStaffListRows> datas = []; //Applied的员工列表
 }

+ 36 - 0
packages/cpt_uk/lib/modules/job/job_list/job_list_controller.dart

@@ -2,10 +2,13 @@ import 'package:domain/entity/response/job_list_entity.dart';
 import 'package:domain/entity/response/job_list_index_entity.dart';
 import 'package:domain/repository/job_repository.dart';
 import 'package:get/get.dart';
+import 'package:plugin_basic/constants/app_constant.dart';
 import 'package:plugin_platform/engine/dialog/dialog_engine.dart';
 import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
 import 'package:plugin_platform/http/http_result.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:widgets/load_state_layout.dart';
 import 'package:widgets/widget_export.dart';
 
@@ -25,6 +28,37 @@ class JobListController extends GetxController with DioCancelableMixin {
   LoadState loadingState = LoadState.State_Success;
   String? errorMessage;
 
+
+  Subscription? subscribe;
+
+  void registerEventBus() {
+    subscribe = bus.on(AppConstant.eventJobListChangeStaffNo, (arg) {
+      String? argJobId = arg?['jobId']??'';
+      int argStaffCount = arg?['addStaffCount']??0;
+      Log.d("接收消息argJobId  ${argJobId}");
+      Log.d("接收消息argStaffCount  ${argStaffCount}");
+      List<JobListRows>? result = state.datas.where((item) => item.jobId.toString() == argJobId)?.toList();
+
+      if(result != null && result.isNotEmpty){
+        String staffShow = result.first?.staffShow?? '';
+        if(staffShow.isNotEmpty){
+          List<String> staffShowList = staffShow.replaceAll(' ', '').split('/');
+          if(staffShowList.length == 2){
+            int staffCount = int.parse(staffShowList[0]);
+            int staffTotal = int.parse(staffShowList[1]);
+            result.first?.staffShow = "${staffCount + argStaffCount} / $staffTotal";
+            update();
+          }
+        }
+      }
+    });
+  }
+
+  void unregisterEventBus() {
+    bus.off(AppConstant.eventJobListChangeStaffNo, subscribe);
+  }
+
+
   //刷新页面状态
   void changeLoadingState(LoadState state) {
     loadingState = state;
@@ -184,10 +218,12 @@ class JobListController extends GetxController with DioCancelableMixin {
   void onReady() {
     super.onReady();
     fetchNotifyList();
+    registerEventBus();
   }
 
   @override
   void onClose() {
+    unregisterEventBus();
     state.datas.clear();
     super.onClose();
   }

+ 17 - 1
packages/cpt_uk/lib/modules/job/labour_request_add/labour_request_add_controller.dart

@@ -43,9 +43,11 @@ class LabourRequestAddController extends GetxController with DioCancelableMixin
     Future<HttpResult<UkLabourRequestDetailEntity>> taskFuture;
     // Log.d("请求的state.appliedId  ${state.appliedId}");
     if (Utils.isNotEmpty(state.appliedId) && state.appliedId != "0") {
+      // 编辑
       // Log.d("请求的state.appliedId3333  ${state.appliedId}");
       taskFuture = _ukLabourRepository.fetchLabourRequestDetail(state.appliedId);
     } else {
+      // 新增时获取详情
       taskFuture = _ukLabourRepository.fetchLabourRequestAddOption();
     }
 
@@ -54,6 +56,11 @@ class LabourRequestAddController extends GetxController with DioCancelableMixin
     //处理数据
     if (result.isSuccess) {
       state.labReqOption = result.data;
+
+      Log.d("详情页面 获取到的数据  ${state.labReqOption.toString()}");
+
+      state.selectedTemplateId = state.labReqOption?.templateId.toString();
+
       state.selectedDate = state.labReqOption?.jobStart == null ? null : DateTimeUtils.getDateTime(state.labReqOption!.jobStart!);
       state.selectedStartTime = state.labReqOption?.jobStart == null ? null : DateTimeUtils.getDateTime(state.labReqOption!.jobStart!);
       state.selectedEndTime = state.labReqOption?.jobEnd == null ? null : DateTimeUtils.getDateTime(state.labReqOption!.jobEnd!);
@@ -98,7 +105,6 @@ class LabourRequestAddController extends GetxController with DioCancelableMixin
       totalCostController.text = state.labReqOption?.estCost ?? "";
 
 
-      state.selectedTemplateId = state.labReqOption?.templateId.toString();
       state.selectedDepartmentId = state.labReqOption?.departmentId.toString();
       //时薪还是房间计费
       state.chargeOptionId = state.labReqOption?.chargeList!.firstWhere((element) => element.checked == "checked").value;
@@ -254,6 +260,16 @@ class LabourRequestAddController extends GetxController with DioCancelableMixin
       initialSelectIndex: selectedTemplateIndex,
       onPickerChanged: (_, index) {
         state.selectedTemplateId = state.labReqOption!.templateList![index].value!.toString();
+        // 选择了标题后 需要 将此时选择的 标题 回显 给position
+
+        var positionController = state.formData['position']!['controller'];
+        state.position = state.templateList!
+            .firstWhere((element) => element.value.toString() == state.selectedTemplateId,
+            orElse: () => UkLabourRequestDetailTemplateList())
+            .txt ??
+            "";
+        positionController.text = state.position;
+        // 更新
         update();
       },
     );

+ 74 - 76
packages/cpt_uk/lib/modules/job/template_add/template_add_controller.dart

@@ -27,13 +27,14 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
 
   // 获取添加或者编辑的详情
   void _fetchAddEditIndexDetail() async {
+
     bool isEdit = state.pageType == 1;
     bool isNeedFetchDetail = isEdit || Utils.isNotEmpty(state.selectedJobTitleStr);
     String? templateId;
     if (isEdit) {
-      templateId = state.templateId;
+      templateId = state.selectedJobTitleId?? state.templateId;
     }else {
-      templateId = state.selectedTemplateId?.toString();
+      templateId = state.selectedJobTitleId?.toString();
     }
     //获取到数据
     HttpResult<UkTemplateDetailEntity> taskDetailResult;
@@ -55,7 +56,15 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
 
   // 新增时 选择了 jobtitle 后 获取该title对应的模板详情
   void _fetchSelectJobTitleGetTemplateDetail() async {
-    String? templateId = state.selectedTemplateId?.toString();
+    String? templateId = "";
+    if(state.pageType == 0){
+      // 新增
+      templateId = state.selectedJobTitleId?.toString();
+    }else if(state.pageType == 1){
+      // 编辑
+      templateId = state.selectedJobTitleId?.toString();
+    }
+    Log.d("获取jobtitle选项时的  templateId  ${templateId}");
     //获取到数据
     HttpResult<UkJobTemplateDetailBySelectTitleEntity> taskDetailResult;
 
@@ -99,10 +108,10 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
       }
 
       // 交通工具回显
-      List<int> jobVechicleList = (resultData?.jobVehicle ?? '')
+      List<String> jobVechicleList = (resultData?.jobVehicle ?? '')
           .split(',')
           .where((s) => s.isNotEmpty)
-          .map((s) => int.tryParse(s) ?? 0)
+          .map((s) => s?.toString() ?? '')
           .toList();
       if (jobVechicleList.isNotEmpty) {
         state.indexOptionEntity?.vehicleList?.forEach((vechicleItem) {
@@ -112,20 +121,9 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
         });
       }
 
-
-      //默认CheckBox
-      state.selectedCertificateList = state.indexOptionEntity?.certificateList
-          ?.where((e) => e.checked == "checked")
-          .map((e) => e.value!.toString())
-          .toList() ?? [];
-      Log.d("当前选中的证书:${state.selectedCertificateList}");
-
-
-      state.selectedVehicleList = state.indexOptionEntity?.vehicleList
-          ?.where((e) => e.checked == "checked")
-          .map((e) => e.value!.toString())
-          .toList() ?? [];
-      Log.d("当前选中的交通工具:${state.selectedVehicleList}");
+      //回显
+      _handlerCertificateEcho();
+      _handlerVehicleEcho();
 
       //刷新
       update();
@@ -140,19 +138,29 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
     //处理数据
     if (result.isSuccess) {
       state.indexEntity = result.data;
+      state.selectedJobTemplateStr = state.indexEntity?.templateTitle ?? "";
+      // state.selectedJobTemplateStr 有值后 需要调取 工作标题的下拉选项
+      if(state.selectedJobTemplateStr != null && state.selectedJobTemplateStr != ""){
+        // 相当与选取了 模板
+        _fetchJobTitleOptionsList();
+      }
 
-      var templateNameController = state.formData['template_name']!['controller'];
       var descController = state.formData['desc']!['controller'];
       var noteController = state.formData['note']!['controller'];
       var contactNameController = state.formData['contact_name']!['controller'];
       var contactNoController = state.formData['contact_no']!['controller'];
-      templateNameController.text = state.indexEntity?.row?.jobTitle ?? "";
+
+
       descController.text = state.indexEntity?.row?.description ?? "";
       noteController.text = state.indexEntity?.row?.note ?? "";
       contactNameController.text = state.indexEntity?.row?.contactName ?? "";
       contactNoController.text = state.indexEntity?.row?.contactNo ?? "";
 
+      Log.d("获取详情后的 state.selectedJobTemplateStr---- ${state.selectedJobTemplateStr}");
 
+      Log.d("获取详情后的 state.indexEntity?.row---- ${state.indexEntity?.row}");
+      Log.d("645646  ${state.selectedJobTitleStr}");
+      Log.d("89389   ${state.selectedJobTitleId}");
       // 将 state.indexEntity?.certificateList  与 state.indexOptionEntity 进行对比 将 checked 复制给
       state.indexEntity?.certificateList?.forEach((e) {
         var option = state.indexOptionEntity?.certificateList?.firstWhere((option) => option.value == e.value, orElse: () => UkTemplateDetailIndexCertificateList());
@@ -169,19 +177,9 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
         }
       });
 
-      //默认CheckBox
-      state.selectedCertificateList = state.indexEntity?.certificateList
-          ?.where((e) => e.checked == "checked")
-          .map((e) => e.value!.toString())
-          .toList() ?? [];
-      Log.d("当前选中的证书:${state.selectedCertificateList}");
-
-
-      state.selectedVehicleList = state.indexEntity?.vehicleList
-          ?.where((e) => e.checked == "checked")
-          .map((e) => e.value!.toString())
-          .toList() ?? [];
-      Log.d("当前选中的交通工具:${state.selectedVehicleList}");
+      // 回显
+      _handlerCertificateEcho();
+      _handlerVehicleEcho();
 
       //刷新
       update();
@@ -196,35 +194,19 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
     //处理数据
     if (result.isSuccess) {
       state.indexOptionEntity = result.data;
-
-      var templateNameController = state.formData['template_name']!['controller'];
+      state.selectedJobTemplateStr = state.indexEntity?.templateTitle ?? "";
       var descController = state.formData['desc']!['controller'];
       var noteController = state.formData['note']!['controller'];
       var contactNameController = state.formData['contact_name']!['controller'];
       var contactNoController = state.formData['contact_no']!['controller'];
-      templateNameController.text = "";
       descController.text =  "";
       noteController.text =  "";
       contactNameController.text =  "";
       contactNoController.text =  "";
 
-
-
-      //默认CheckBox
-      state.selectedCertificateList = state.indexOptionEntity?.certificateList
-          ?.where((e) => e.checked == "checked")
-          .map((e) => e.value!.toString())
-          .toList() ?? [];
-      Log.d("当前的证书: ${state.indexOptionEntity?.certificateList}");
-      Log.d("当前选中的证书:${state.selectedCertificateList}");
-
-
-      state.selectedVehicleList = state.indexOptionEntity?.vehicleList
-          ?.where((e) => e.checked == "checked")
-          .map((e) => e.value!.toString())
-          .toList() ?? [];
-      Log.d("当前的交通工具: ${state.indexOptionEntity?.vehicleList}");
-      Log.d("当前选中的交通工具:${state.selectedVehicleList}");
+      //回显
+      _handlerCertificateEcho();
+      _handlerVehicleEcho();
 
       //刷新
       update();
@@ -233,6 +215,28 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
     }
   }
 
+  // 回显 certificate
+  void _handlerCertificateEcho(){
+    //默认CheckBox
+    state.selectedCertificateList = state.indexOptionEntity?.certificateList
+        ?.where((e) => e.checked == "checked")
+        .map((e) => e.value!.toString())
+        .toList() ?? [];
+    Log.d("当前的证书: ${state.indexOptionEntity?.certificateList}");
+    Log.d("当前选中的证书:${state.selectedCertificateList}");
+  }
+
+  // 回显 vehicle
+  void _handlerVehicleEcho(){
+    state.selectedVehicleList = state.indexOptionEntity?.vehicleList
+        ?.where((e) => e.checked == "checked")
+        .map((e) => e.value!.toString())
+        .toList() ?? [];
+    Log.d("当前的交通工具: ${state.indexOptionEntity?.vehicleList}");
+    Log.d("当前选中的交通工具:${state.selectedVehicleList}");
+
+  }
+
 
   // 新增时 选择 template
   void showChooseTemplatePicker(){
@@ -317,44 +321,38 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
   /// 提交
   void doSubmit() async {
 
-    var templateNameController = state.formData['template_name']!['controller'];
     var descController = state.formData['desc']!['controller'];
     var noteController = state.formData['note']!['controller'];
     var contactNameController = state.formData['contact_name']!['controller'];
     var contactNoController = state.formData['contact_no']!['controller'];
 
-    String templateTitle = templateNameController.text.toString();
+
+
+    String jobTemplate = state.selectedJobTemplateStr?? "";
+    String jobTitle = state.selectedJobTitleStr??"";
     String desc = descController.text.toString();
     String note = noteController.text.toString();
     String contactName = contactNameController.text.toString();
     String contactNo = contactNoController.text.toString();
 
-    if(state.pageType == 0){
-      // 新增 时 需要校验 工作模板 和 工作标题
-      if (Utils.isEmpty(state.selectedJobTemplateStr)) {
-        ToastEngine.show("Enter Job Template".tr);
-        return;
-      }
-      if (Utils.isEmpty(state.selectedJobTitleStr)) {
-        ToastEngine.show("Enter Job Title".tr);
-        return;
-      }
-    }else if(state.pageType == 1){
-      // 编辑 时 需要校验 工作标题
-      //检验工作标题
-      if (Utils.isEmpty(templateTitle)) {
-        ToastEngine.show("Enter Job Template Title".tr);
-        return;
-      }
+    if (Utils.isEmpty(jobTemplate)) {
+      ToastEngine.show("Enter Job Template".tr);
+      return;
+    }
+    if (Utils.isEmpty(jobTitle)) {
+      ToastEngine.show("Enter Job Title".tr);
+      return;
     }
 
 
     Future<HttpResult> taskFuture;
     if (Utils.isNotEmpty(state.templateId) && state.templateId != "0") {
+      Log.d("state.selectedJobTitleId   ${state.selectedJobTitleId}");
       // 编辑
       taskFuture = _labourRepository.editJobTemplateSubmit(
-        templateId: state.templateId,
-        jobTitle: templateTitle,
+        templateId: state.templateId?.toString()??'',
+        jobTemplateId: state.selectedJobTitleId?.toString()??'',
+        jobTitle: jobTitle,
         certificate: state.selectedCertificateList,
         vehicle: state.selectedVehicleList,
         desc: desc,
@@ -366,7 +364,7 @@ class TemplateAddController extends GetxController with DioCancelableMixin {
     } else {
       // 新增
       taskFuture = _labourRepository.addJobTemplateSubmit(
-        jobTemplateId: state.selectedTemplateId?.toString()??'',
+        jobTemplateId: state.selectedJobTitleId?.toString()??'',
         jobTitle: state.selectedJobTitleStr?? '',
         certificate: state.selectedCertificateList,
         vehicle: state.selectedVehicleList,

+ 31 - 23
packages/cpt_uk/lib/modules/job/template_add/template_add_page.dart

@@ -34,9 +34,10 @@ class UKTemplateAddPage extends BaseStatefulPage<TemplateAddController> {
   //启动当前页面
   static void startInstance(
     String templateId,
+    String jobTitle,
     void Function(dynamic value)? cb,
   ) {
-    return Get.start(RouterPath.UKTemplateAdd, arguments: {'templateId': templateId, 'cb': cb});
+    return Get.start(RouterPath.UKTemplateAdd, arguments: {'jobTitle':jobTitle,'templateId': templateId, 'cb': cb});
   }
 
   @override
@@ -55,8 +56,12 @@ class _LabourTemplateAddState extends BaseState<UKTemplateAddPage, TemplateAddCo
   void initState() {
     super.initState();
     state = controller.state;
+    state.jobTitle = Get.arguments['jobTitle'];
     state.templateId = Get.arguments['templateId'];
+    state.selectedJobTitleStr = state.jobTitle;
     state.pageType = Utils.isEmpty(state.templateId)? 0:1;
+
+    Log.d("初始时 传入的 jobTitle: ${state.jobTitle} , templateId: ${state.templateId}");
     state.cb = Get.arguments['cb'] as void Function(dynamic)?;
   }
 
@@ -98,28 +103,31 @@ class _LabourTemplateAddState extends BaseState<UKTemplateAddPage, TemplateAddCo
                         crossAxisAlignment: CrossAxisAlignment.start,
                         children: [
 
-                          if(isEdit)
-                            //模板名称
-                            ...[
-                              FormRequireText(text: "Template Title".tr).marginOnly(left: 15, top: 19),
-                              CustomTextField(
-                                formKey: "template_name",
-                                formData: state.formData,
-                                height: 46,
-                                fontSize: 14,
-                                enabled: isAdd ? true:false,
-                                onSubmit: (key, value) {
-                                  state.formData[key]!['focusNode'].unfocus();
-                                  FocusScope.of(context).requestFocus(state.formData['desc']!['focusNode']);
-                                },
-                                marginTop: 10,
-                              )
-                            ],
-                          if(isAdd)
-                            ...[
-                              _buildTemplateSelectWidget(),
-                              _buildTemplateJobTitleWidget(),
-                            ],
+                          _buildTemplateSelectWidget(),
+                          _buildTemplateJobTitleWidget(),
+
+                          // if(isEdit)
+                          //   //模板名称
+                          //   ...[
+                          //     FormRequireText(text: "Template Title".tr).marginOnly(left: 15, top: 19),
+                          //     CustomTextField(
+                          //       formKey: "template_name",
+                          //       formData: state.formData,
+                          //       height: 46,
+                          //       fontSize: 14,
+                          //       enabled: isAdd ? true:false,
+                          //       onSubmit: (key, value) {
+                          //         state.formData[key]!['focusNode'].unfocus();
+                          //         FocusScope.of(context).requestFocus(state.formData['desc']!['focusNode']);
+                          //       },
+                          //       marginTop: 10,
+                          //     )
+                          //   ],
+                          // if(isAdd)
+                          //   ...[
+                          //     _buildTemplateSelectWidget(),
+                          //     _buildTemplateJobTitleWidget(),
+                          //   ],
 
 
                           //证书

+ 4 - 2
packages/cpt_uk/lib/modules/job/template_add/template_add_state.dart

@@ -48,15 +48,17 @@ class LabourTemplateAddState {
 
   final foodHygieneCertOption = ["Yes".tr, "No".tr];
 
+
+  String jobTitle = "";
   String templateId = "";
   int pageType = 0; // 0:新增 1:编辑
   void Function(dynamic value)? cb;
 
   String? selectedJobTemplateStr;  // 新增时选择的模版
 
-  int? get selectedTemplateId {
+  String? get selectedJobTitleId {
     // 遍历 jobTitleOptionEntityList 中获取 对应的 selectedJobTitleStr 的 id
-    return jobTitleOptionEntityList?.where((e) => e.jobTitle == selectedJobTitleStr)?.first?.id?? null;
+    return jobTitleOptionEntityList?.where((e) => e.jobTitle == selectedJobTitleStr)?.first?.id?.toString()?? null;
   }
 
   List<UkTemplateTitleOptionEntity>? jobTitleOptionEntityList; // 新增时工作标题的数据源

+ 3 - 3
packages/cpt_uk/lib/modules/job/template_list/template_list_controller.dart

@@ -136,7 +136,7 @@ class TemplateListController extends GetxController with DioCancelableMixin {
 
   //去添加模板的页面
   void gotoTemplateAddPage() {
-    UKTemplateAddPage.startInstance("", (result) {
+    UKTemplateAddPage.startInstance("","", (result) {
       if (result is String) {
         refreshController.callRefresh();
       }
@@ -144,8 +144,8 @@ class TemplateListController extends GetxController with DioCancelableMixin {
   }
 
   //去编辑的页面
-  void gotoEditPage(String templateId) {
-    UKTemplateAddPage.startInstance(templateId, (result) {
+  void gotoEditPage(String templateId, String jobTitle) {
+    UKTemplateAddPage.startInstance(templateId, jobTitle, (result) {
       if (result is String) {
         //编辑完成之后刷机吧
         refreshController.callRefresh();

+ 1 - 1
packages/cpt_uk/lib/modules/job/template_list/template_list_page.dart

@@ -131,7 +131,7 @@ class _LabourTemplateListState extends BaseState<UKTemplateListPage, TemplateLis
                               index: index,
                               item: state.datas[index],
                               onEditAction: () {
-                                controller.gotoEditPage(state.datas[index].id.toString());
+                                controller.gotoEditPage(state.datas[index].id.toString(), state.datas[index].jobTitle?? "");
                               },
                               onDeleteAction: () {
                                 controller.deleteJobTitle(index);

+ 2 - 2
packages/cpt_uk/lib/modules/review/labour_review_list/labour_review_controller.dart

@@ -218,7 +218,7 @@ class LabourReviewController extends GetxController with DioCancelableMixin {
     if (result.isSuccess) {
       NotifyEngine.showSuccess("Successful".tr);
 
-      //调用接口刷新指定的Staff的信息
+      //成功后 移除 指定的 recordIds的项
       _removeItemsByList(recordIds);
     } else {
       ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
@@ -238,7 +238,7 @@ class LabourReviewController extends GetxController with DioCancelableMixin {
     if (result.isSuccess) {
       NotifyEngine.showSuccess("Successful".tr);
 
-      //调用接口刷新指定的Staff的信息
+      // 成功后 移除 指定的 recordIds的项
       _removeItemsByList(recordIds);
     } else {
       ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);

+ 2 - 2
packages/cpt_uk/lib/modules/review/labour_review_workflow/labour_request_workflow_state.dart

@@ -1,10 +1,10 @@
-import 'package:domain/entity/response/labour_review_status_entity.dart';
+import 'package:domain/entity/response/uk_labour_review_status_entity.dart';
 
 class LabourReviewWorkflowState {
 
   String? requestId;
 
   //页面的列表数据
-  List<LabourReviewStatusRecords> datas = [];
+  List<UkLabourReviewStatusRecords> datas = [];
 
 }

+ 6 - 3
packages/cpt_uk/lib/modules/review/labour_review_workflow/labour_review_workflow_controller.dart

@@ -1,5 +1,7 @@
 import 'package:domain/entity/response/labour_review_status_entity.dart';
+import 'package:domain/entity/response/uk_labour_review_status_entity.dart';
 import 'package:domain/repository/labour_repository.dart';
+import 'package:domain/repository/uk_labour_repository.dart';
 import 'package:get/get.dart';
 import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
 import 'package:widgets/load_state_layout.dart';
@@ -9,7 +11,8 @@ import 'labour_request_workflow_state.dart';
 
 
 class LabourReviewWorkflowController extends GetxController with DioCancelableMixin{
-  final LabourRepository _labourRepository = Get.find();
+  // final LabourRepository _labourRepository = Get.find();
+  final UkLabourRepository _ukLabourRepository = Get.find();
   final LabourReviewWorkflowState state = LabourReviewWorkflowState();
 
   var _needShowPlaceholder = true;
@@ -48,7 +51,7 @@ class LabourReviewWorkflowController extends GetxController with DioCancelableMi
     }
 
     //获取到数据
-    var result = await _labourRepository.fetchLabourReviewStatusView(
+    var result = await _ukLabourRepository.fetchLabourReviewStatusView(
       state.requestId,
       cancelToken: cancelToken,
     );
@@ -68,7 +71,7 @@ class LabourReviewWorkflowController extends GetxController with DioCancelableMi
   }
 
   // 处理数据与展示的逻辑
-  void handleList(List<LabourReviewStatusRecords>? list) {
+  void handleList(List<UkLabourReviewStatusRecords>? list) {
     if (list != null && list.isNotEmpty) {
       //有数据,判断是刷新还是加载更多的数据
       state.datas.clear();

+ 2 - 1
packages/cpt_uk/lib/modules/review/labour_review_workflow/labour_review_workflow_item.dart

@@ -1,5 +1,6 @@
 import 'package:cs_resources/constants/color_constants.dart';
 import 'package:domain/entity/response/labour_review_status_entity.dart';
+import 'package:domain/entity/response/uk_labour_review_status_entity.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
@@ -12,7 +13,7 @@ import 'package:widgets/my_text_view.dart';
  */
 class LabourReviewWorkFlowItem extends StatelessWidget {
   final int index;
-  final LabourReviewStatusRecords item;
+  final UkLabourReviewStatusRecords item;
 
   LabourReviewWorkFlowItem({
     required this.index,

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

@@ -316,6 +316,7 @@ class ApiConstants {
   static const apiLabourRequestReViewEditUK = "/index.php/api/v1/hotel/lab-req/review-submit";
   // labourrequest-review 批量审核(确认和拒绝)提交
   static const apiLabourRequestReViewBatchSubmitUK = "/index.php/api/v1/hotel/lab-req/review-batch";
+
   // applied - 设置小费
   static const apiAppliedStaffBatchSetTipUK = "/index.php/api/v1/hotel/applied/batch-tips";
   // revise - 列表

+ 140 - 0
packages/cs_domain/lib/entity/response/uk_labour_review_status_entity.dart

@@ -0,0 +1,140 @@
+import 'package:domain/generated/json/base/json_field.dart';
+import 'package:domain/generated/json/uk_labour_review_status_entity.g.dart';
+import 'dart:convert';
+export 'package:domain/generated/json/uk_labour_review_status_entity.g.dart';
+
+@JsonSerializable()
+class UkLabourReviewStatusEntity {
+	UkLabourReviewStatusRow? row;
+	@JSONField(name: "co_department_id")
+	int? coDepartmentId;
+	List<UkLabourReviewStatusRecords>? records;
+
+	UkLabourReviewStatusEntity();
+
+	factory UkLabourReviewStatusEntity.fromJson(Map<String, dynamic> json) => $UkLabourReviewStatusEntityFromJson(json);
+
+	Map<String, dynamic> toJson() => $UkLabourReviewStatusEntityToJson(this);
+
+	@override
+	String toString() {
+		return jsonEncode(this);
+	}
+}
+
+@JsonSerializable()
+class UkLabourReviewStatusRow {
+	int? id;
+	@JSONField(name: "employer_admin_id")
+	int? employerAdminId;
+	@JSONField(name: "job_title")
+	String? jobTitle;
+	@JSONField(name: "need_num")
+	int? needNum;
+	@JSONField(name: "job_start")
+	String? jobStart;
+	@JSONField(name: "job_end")
+	String? jobEnd;
+	@JSONField(name: "job_id")
+	int? jobId;
+	@JSONField(name: "remark_id")
+	int? remarkId;
+	String? status;
+	@JSONField(name: "add_time")
+	String? addTime;
+	String? from;
+	@JSONField(name: "reject_reason")
+	dynamic rejectReason;
+	dynamic banquet;
+	@JSONField(name: "hotel_job_id")
+	int? hotelJobId;
+	@JSONField(name: "work_content")
+	String? workContent;
+	@JSONField(name: "hourly_rate")
+	double? hourlyRate;
+	@JSONField(name: "co_department_id")
+	int? coDepartmentId;
+	@JSONField(name: "co_status")
+	int? coStatus;
+	@JSONField(name: "co_template_id")
+	int? coTemplateId;
+	@JSONField(name: "co_approved_at")
+	dynamic coApprovedAt;
+	@JSONField(name: "service_type")
+	int? serviceType;
+	@JSONField(name: "job_unit")
+	String? jobUnit;
+	@JSONField(name: "agency_rate")
+	String? agencyRate;
+	String? location;
+	String? vehicle;
+	@JSONField(name: "source_type")
+	int? sourceType;
+	@JSONField(name: "agency_id")
+	int? agencyId;
+	@JSONField(name: "agency_name")
+	String? agencyName;
+	@JSONField(name: "employment_type")
+	dynamic employmentType;
+	@JSONField(name: "event_name")
+	dynamic eventName;
+	@JSONField(name: "event_type")
+	dynamic eventType;
+	int? passengers;
+	@JSONField(name: "est_revenue")
+	dynamic estRevenue;
+	dynamic position;
+	@JSONField(name: "est_cost")
+	dynamic estCost;
+	dynamic description;
+	@JSONField(name: "att_url")
+	dynamic attUrl;
+	@JSONField(name: "template_id")
+	int? templateId;
+	@JSONField(name: "job_title_id")
+	int? jobTitleId;
+
+	UkLabourReviewStatusRow();
+
+	factory UkLabourReviewStatusRow.fromJson(Map<String, dynamic> json) => $UkLabourReviewStatusRowFromJson(json);
+
+	Map<String, dynamic> toJson() => $UkLabourReviewStatusRowToJson(this);
+
+	@override
+	String toString() {
+		return jsonEncode(this);
+	}
+}
+
+@JsonSerializable()
+class UkLabourReviewStatusRecords {
+	@JSONField(name: "serial_number")
+	int? serialNumber;
+	@JSONField(name: "node_name")
+	String? nodeName;
+	@JSONField(name: "status_show")
+	String? statusShow;
+	@JSONField(name: "audit_name")
+	String? auditName;
+	@JSONField(name: "audit_time")
+	String? auditTime;
+	@JSONField(name: "audit_mark")
+	dynamic auditMark;
+	@JSONField(name: "created_at")
+	String? createdAt;
+	@JSONField(name: "assignee_type_show")
+	String? assigneeTypeShow;
+	@JSONField(name: "designation_show")
+	String? designationShow;
+
+	UkLabourReviewStatusRecords();
+
+	factory UkLabourReviewStatusRecords.fromJson(Map<String, dynamic> json) => $UkLabourReviewStatusRecordsFromJson(json);
+
+	Map<String, dynamic> toJson() => $UkLabourReviewStatusRecordsToJson(this);
+
+	@override
+	String toString() {
+		return jsonEncode(this);
+	}
+}

+ 28 - 2
packages/cs_domain/lib/entity/response/uk_template_detail_entity.dart

@@ -6,6 +6,14 @@ export 'package:domain/generated/json/uk_template_detail_entity.g.dart';
 @JsonSerializable()
 class UkTemplateDetailEntity {
 	UkTemplateDetailRow? row;
+	@JSONField(name: "job_template_id")
+	int? jobTemplateId;
+	@JSONField(name: "template_list")
+	List<String>? templateList;
+	@JSONField(name: "template_title")
+	String? templateTitle;
+	@JSONField(name: "title_list")
+	List<UkTemplateDetailTitleList>? titleList;
 	@JSONField(name: "certificate_list")
 	List<UkTemplateDetailCertificateList>? certificateList;
 	@JSONField(name: "vehicle_list")
@@ -39,8 +47,8 @@ class UkTemplateDetailRow {
 	dynamic age;
 	dynamic language;
 	int? gender;
-	dynamic description;
-	dynamic note;
+	String? description;
+	String? note;
 	@JSONField(name: "operator_id")
 	int? operatorId;
 	@JSONField(name: "created_at")
@@ -67,6 +75,24 @@ class UkTemplateDetailRow {
 }
 
 @JsonSerializable()
+class UkTemplateDetailTitleList {
+	int? id;
+	@JSONField(name: "job_title")
+	String? jobTitle;
+
+	UkTemplateDetailTitleList();
+
+	factory UkTemplateDetailTitleList.fromJson(Map<String, dynamic> json) => $UkTemplateDetailTitleListFromJson(json);
+
+	Map<String, dynamic> toJson() => $UkTemplateDetailTitleListToJson(this);
+
+	@override
+	String toString() {
+		return jsonEncode(this);
+	}
+}
+
+@JsonSerializable()
 class UkTemplateDetailCertificateList {
 	int? value;
 	String? txt;

+ 23 - 0
packages/cs_domain/lib/generated/json/base/json_convert_content.dart

@@ -117,6 +117,7 @@ import 'package:domain/entity/response/uk_labour_request_preselected_list_entity
 import 'package:domain/entity/response/uk_labour_request_review_detail_entity.dart';
 import 'package:domain/entity/response/uk_labour_request_review_list_entity.dart';
 import 'package:domain/entity/response/uk_labour_request_table_entity.dart';
+import 'package:domain/entity/response/uk_labour_review_status_entity.dart';
 import 'package:domain/entity/response/uk_report_casual_entity.dart';
 import 'package:domain/entity/response/uk_report_casual_pay_entity.dart';
 import 'package:domain/entity/response/uk_report_outlet_entity.dart';
@@ -1326,6 +1327,18 @@ class JsonConvert {
       return data.map<UkLabourRequestTableRows>((Map<String, dynamic> e) =>
           UkLabourRequestTableRows.fromJson(e)).toList() as M;
     }
+    if (<UkLabourReviewStatusEntity>[] is M) {
+      return data.map<UkLabourReviewStatusEntity>((Map<String, dynamic> e) =>
+          UkLabourReviewStatusEntity.fromJson(e)).toList() as M;
+    }
+    if (<UkLabourReviewStatusRow>[] is M) {
+      return data.map<UkLabourReviewStatusRow>((Map<String, dynamic> e) =>
+          UkLabourReviewStatusRow.fromJson(e)).toList() as M;
+    }
+    if (<UkLabourReviewStatusRecords>[] is M) {
+      return data.map<UkLabourReviewStatusRecords>((Map<String, dynamic> e) =>
+          UkLabourReviewStatusRecords.fromJson(e)).toList() as M;
+    }
     if (<UkReportCasualEntity>[] is M) {
       return data.map<UkReportCasualEntity>((Map<String, dynamic> e) =>
           UkReportCasualEntity.fromJson(e)).toList() as M;
@@ -1402,6 +1415,10 @@ class JsonConvert {
       return data.map<UkTemplateDetailRow>((Map<String, dynamic> e) =>
           UkTemplateDetailRow.fromJson(e)).toList() as M;
     }
+    if (<UkTemplateDetailTitleList>[] is M) {
+      return data.map<UkTemplateDetailTitleList>((Map<String, dynamic> e) =>
+          UkTemplateDetailTitleList.fromJson(e)).toList() as M;
+    }
     if (<UkTemplateDetailCertificateList>[] is M) {
       return data.map<UkTemplateDetailCertificateList>((
           Map<String, dynamic> e) =>
@@ -1811,6 +1828,11 @@ class JsonConvertClassCollection {
     (UkLabourRequestTableEntity).toString(): UkLabourRequestTableEntity
         .fromJson,
     (UkLabourRequestTableRows).toString(): UkLabourRequestTableRows.fromJson,
+    (UkLabourReviewStatusEntity).toString(): UkLabourReviewStatusEntity
+        .fromJson,
+    (UkLabourReviewStatusRow).toString(): UkLabourReviewStatusRow.fromJson,
+    (UkLabourReviewStatusRecords).toString(): UkLabourReviewStatusRecords
+        .fromJson,
     (UkReportCasualEntity).toString(): UkReportCasualEntity.fromJson,
     (UkReportCasualRows).toString(): UkReportCasualRows.fromJson,
     (UkReportCasualTotal).toString(): UkReportCasualTotal.fromJson,
@@ -1834,6 +1856,7 @@ class JsonConvertClassCollection {
         .toString(): UkStaffLabourHistoryRowsWorkOut.fromJson,
     (UkTemplateDetailEntity).toString(): UkTemplateDetailEntity.fromJson,
     (UkTemplateDetailRow).toString(): UkTemplateDetailRow.fromJson,
+    (UkTemplateDetailTitleList).toString(): UkTemplateDetailTitleList.fromJson,
     (UkTemplateDetailCertificateList)
         .toString(): UkTemplateDetailCertificateList.fromJson,
     (UkTemplateDetailVehicleList).toString(): UkTemplateDetailVehicleList

+ 426 - 0
packages/cs_domain/lib/generated/json/uk_labour_review_status_entity.g.dart

@@ -0,0 +1,426 @@
+import 'package:domain/generated/json/base/json_convert_content.dart';
+import 'package:domain/entity/response/uk_labour_review_status_entity.dart';
+
+UkLabourReviewStatusEntity $UkLabourReviewStatusEntityFromJson(
+    Map<String, dynamic> json) {
+  final UkLabourReviewStatusEntity ukLabourReviewStatusEntity = UkLabourReviewStatusEntity();
+  final UkLabourReviewStatusRow? row = jsonConvert.convert<
+      UkLabourReviewStatusRow>(json['row']);
+  if (row != null) {
+    ukLabourReviewStatusEntity.row = row;
+  }
+  final int? coDepartmentId = jsonConvert.convert<int>(
+      json['co_department_id']);
+  if (coDepartmentId != null) {
+    ukLabourReviewStatusEntity.coDepartmentId = coDepartmentId;
+  }
+  final List<UkLabourReviewStatusRecords>? records = (json['records'] as List<
+      dynamic>?)?.map(
+          (e) =>
+      jsonConvert.convert<UkLabourReviewStatusRecords>(
+          e) as UkLabourReviewStatusRecords).toList();
+  if (records != null) {
+    ukLabourReviewStatusEntity.records = records;
+  }
+  return ukLabourReviewStatusEntity;
+}
+
+Map<String, dynamic> $UkLabourReviewStatusEntityToJson(
+    UkLabourReviewStatusEntity entity) {
+  final Map<String, dynamic> data = <String, dynamic>{};
+  data['row'] = entity.row?.toJson();
+  data['co_department_id'] = entity.coDepartmentId;
+  data['records'] = entity.records?.map((v) => v.toJson()).toList();
+  return data;
+}
+
+extension UkLabourReviewStatusEntityExtension on UkLabourReviewStatusEntity {
+  UkLabourReviewStatusEntity copyWith({
+    UkLabourReviewStatusRow? row,
+    int? coDepartmentId,
+    List<UkLabourReviewStatusRecords>? records,
+  }) {
+    return UkLabourReviewStatusEntity()
+      ..row = row ?? this.row
+      ..coDepartmentId = coDepartmentId ?? this.coDepartmentId
+      ..records = records ?? this.records;
+  }
+}
+
+UkLabourReviewStatusRow $UkLabourReviewStatusRowFromJson(
+    Map<String, dynamic> json) {
+  final UkLabourReviewStatusRow ukLabourReviewStatusRow = UkLabourReviewStatusRow();
+  final int? id = jsonConvert.convert<int>(json['id']);
+  if (id != null) {
+    ukLabourReviewStatusRow.id = id;
+  }
+  final int? employerAdminId = jsonConvert.convert<int>(
+      json['employer_admin_id']);
+  if (employerAdminId != null) {
+    ukLabourReviewStatusRow.employerAdminId = employerAdminId;
+  }
+  final String? jobTitle = jsonConvert.convert<String>(json['job_title']);
+  if (jobTitle != null) {
+    ukLabourReviewStatusRow.jobTitle = jobTitle;
+  }
+  final int? needNum = jsonConvert.convert<int>(json['need_num']);
+  if (needNum != null) {
+    ukLabourReviewStatusRow.needNum = needNum;
+  }
+  final String? jobStart = jsonConvert.convert<String>(json['job_start']);
+  if (jobStart != null) {
+    ukLabourReviewStatusRow.jobStart = jobStart;
+  }
+  final String? jobEnd = jsonConvert.convert<String>(json['job_end']);
+  if (jobEnd != null) {
+    ukLabourReviewStatusRow.jobEnd = jobEnd;
+  }
+  final int? jobId = jsonConvert.convert<int>(json['job_id']);
+  if (jobId != null) {
+    ukLabourReviewStatusRow.jobId = jobId;
+  }
+  final int? remarkId = jsonConvert.convert<int>(json['remark_id']);
+  if (remarkId != null) {
+    ukLabourReviewStatusRow.remarkId = remarkId;
+  }
+  final String? status = jsonConvert.convert<String>(json['status']);
+  if (status != null) {
+    ukLabourReviewStatusRow.status = status;
+  }
+  final String? addTime = jsonConvert.convert<String>(json['add_time']);
+  if (addTime != null) {
+    ukLabourReviewStatusRow.addTime = addTime;
+  }
+  final String? from = jsonConvert.convert<String>(json['from']);
+  if (from != null) {
+    ukLabourReviewStatusRow.from = from;
+  }
+  final dynamic rejectReason = json['reject_reason'];
+  if (rejectReason != null) {
+    ukLabourReviewStatusRow.rejectReason = rejectReason;
+  }
+  final dynamic banquet = json['banquet'];
+  if (banquet != null) {
+    ukLabourReviewStatusRow.banquet = banquet;
+  }
+  final int? hotelJobId = jsonConvert.convert<int>(json['hotel_job_id']);
+  if (hotelJobId != null) {
+    ukLabourReviewStatusRow.hotelJobId = hotelJobId;
+  }
+  final String? workContent = jsonConvert.convert<String>(json['work_content']);
+  if (workContent != null) {
+    ukLabourReviewStatusRow.workContent = workContent;
+  }
+  final double? hourlyRate = jsonConvert.convert<double>(json['hourly_rate']);
+  if (hourlyRate != null) {
+    ukLabourReviewStatusRow.hourlyRate = hourlyRate;
+  }
+  final int? coDepartmentId = jsonConvert.convert<int>(
+      json['co_department_id']);
+  if (coDepartmentId != null) {
+    ukLabourReviewStatusRow.coDepartmentId = coDepartmentId;
+  }
+  final int? coStatus = jsonConvert.convert<int>(json['co_status']);
+  if (coStatus != null) {
+    ukLabourReviewStatusRow.coStatus = coStatus;
+  }
+  final int? coTemplateId = jsonConvert.convert<int>(json['co_template_id']);
+  if (coTemplateId != null) {
+    ukLabourReviewStatusRow.coTemplateId = coTemplateId;
+  }
+  final dynamic coApprovedAt = json['co_approved_at'];
+  if (coApprovedAt != null) {
+    ukLabourReviewStatusRow.coApprovedAt = coApprovedAt;
+  }
+  final int? serviceType = jsonConvert.convert<int>(json['service_type']);
+  if (serviceType != null) {
+    ukLabourReviewStatusRow.serviceType = serviceType;
+  }
+  final String? jobUnit = jsonConvert.convert<String>(json['job_unit']);
+  if (jobUnit != null) {
+    ukLabourReviewStatusRow.jobUnit = jobUnit;
+  }
+  final String? agencyRate = jsonConvert.convert<String>(json['agency_rate']);
+  if (agencyRate != null) {
+    ukLabourReviewStatusRow.agencyRate = agencyRate;
+  }
+  final String? location = jsonConvert.convert<String>(json['location']);
+  if (location != null) {
+    ukLabourReviewStatusRow.location = location;
+  }
+  final String? vehicle = jsonConvert.convert<String>(json['vehicle']);
+  if (vehicle != null) {
+    ukLabourReviewStatusRow.vehicle = vehicle;
+  }
+  final int? sourceType = jsonConvert.convert<int>(json['source_type']);
+  if (sourceType != null) {
+    ukLabourReviewStatusRow.sourceType = sourceType;
+  }
+  final int? agencyId = jsonConvert.convert<int>(json['agency_id']);
+  if (agencyId != null) {
+    ukLabourReviewStatusRow.agencyId = agencyId;
+  }
+  final String? agencyName = jsonConvert.convert<String>(json['agency_name']);
+  if (agencyName != null) {
+    ukLabourReviewStatusRow.agencyName = agencyName;
+  }
+  final dynamic employmentType = json['employment_type'];
+  if (employmentType != null) {
+    ukLabourReviewStatusRow.employmentType = employmentType;
+  }
+  final dynamic eventName = json['event_name'];
+  if (eventName != null) {
+    ukLabourReviewStatusRow.eventName = eventName;
+  }
+  final dynamic eventType = json['event_type'];
+  if (eventType != null) {
+    ukLabourReviewStatusRow.eventType = eventType;
+  }
+  final int? passengers = jsonConvert.convert<int>(json['passengers']);
+  if (passengers != null) {
+    ukLabourReviewStatusRow.passengers = passengers;
+  }
+  final dynamic estRevenue = json['est_revenue'];
+  if (estRevenue != null) {
+    ukLabourReviewStatusRow.estRevenue = estRevenue;
+  }
+  final dynamic position = json['position'];
+  if (position != null) {
+    ukLabourReviewStatusRow.position = position;
+  }
+  final dynamic estCost = json['est_cost'];
+  if (estCost != null) {
+    ukLabourReviewStatusRow.estCost = estCost;
+  }
+  final dynamic description = json['description'];
+  if (description != null) {
+    ukLabourReviewStatusRow.description = description;
+  }
+  final dynamic attUrl = json['att_url'];
+  if (attUrl != null) {
+    ukLabourReviewStatusRow.attUrl = attUrl;
+  }
+  final int? templateId = jsonConvert.convert<int>(json['template_id']);
+  if (templateId != null) {
+    ukLabourReviewStatusRow.templateId = templateId;
+  }
+  final int? jobTitleId = jsonConvert.convert<int>(json['job_title_id']);
+  if (jobTitleId != null) {
+    ukLabourReviewStatusRow.jobTitleId = jobTitleId;
+  }
+  return ukLabourReviewStatusRow;
+}
+
+Map<String, dynamic> $UkLabourReviewStatusRowToJson(
+    UkLabourReviewStatusRow entity) {
+  final Map<String, dynamic> data = <String, dynamic>{};
+  data['id'] = entity.id;
+  data['employer_admin_id'] = entity.employerAdminId;
+  data['job_title'] = entity.jobTitle;
+  data['need_num'] = entity.needNum;
+  data['job_start'] = entity.jobStart;
+  data['job_end'] = entity.jobEnd;
+  data['job_id'] = entity.jobId;
+  data['remark_id'] = entity.remarkId;
+  data['status'] = entity.status;
+  data['add_time'] = entity.addTime;
+  data['from'] = entity.from;
+  data['reject_reason'] = entity.rejectReason;
+  data['banquet'] = entity.banquet;
+  data['hotel_job_id'] = entity.hotelJobId;
+  data['work_content'] = entity.workContent;
+  data['hourly_rate'] = entity.hourlyRate;
+  data['co_department_id'] = entity.coDepartmentId;
+  data['co_status'] = entity.coStatus;
+  data['co_template_id'] = entity.coTemplateId;
+  data['co_approved_at'] = entity.coApprovedAt;
+  data['service_type'] = entity.serviceType;
+  data['job_unit'] = entity.jobUnit;
+  data['agency_rate'] = entity.agencyRate;
+  data['location'] = entity.location;
+  data['vehicle'] = entity.vehicle;
+  data['source_type'] = entity.sourceType;
+  data['agency_id'] = entity.agencyId;
+  data['agency_name'] = entity.agencyName;
+  data['employment_type'] = entity.employmentType;
+  data['event_name'] = entity.eventName;
+  data['event_type'] = entity.eventType;
+  data['passengers'] = entity.passengers;
+  data['est_revenue'] = entity.estRevenue;
+  data['position'] = entity.position;
+  data['est_cost'] = entity.estCost;
+  data['description'] = entity.description;
+  data['att_url'] = entity.attUrl;
+  data['template_id'] = entity.templateId;
+  data['job_title_id'] = entity.jobTitleId;
+  return data;
+}
+
+extension UkLabourReviewStatusRowExtension on UkLabourReviewStatusRow {
+  UkLabourReviewStatusRow copyWith({
+    int? id,
+    int? employerAdminId,
+    String? jobTitle,
+    int? needNum,
+    String? jobStart,
+    String? jobEnd,
+    int? jobId,
+    int? remarkId,
+    String? status,
+    String? addTime,
+    String? from,
+    dynamic rejectReason,
+    dynamic banquet,
+    int? hotelJobId,
+    String? workContent,
+    double? hourlyRate,
+    int? coDepartmentId,
+    int? coStatus,
+    int? coTemplateId,
+    dynamic coApprovedAt,
+    int? serviceType,
+    String? jobUnit,
+    String? agencyRate,
+    String? location,
+    String? vehicle,
+    int? sourceType,
+    int? agencyId,
+    String? agencyName,
+    dynamic employmentType,
+    dynamic eventName,
+    dynamic eventType,
+    int? passengers,
+    dynamic estRevenue,
+    dynamic position,
+    dynamic estCost,
+    dynamic description,
+    dynamic attUrl,
+    int? templateId,
+    int? jobTitleId,
+  }) {
+    return UkLabourReviewStatusRow()
+      ..id = id ?? this.id
+      ..employerAdminId = employerAdminId ?? this.employerAdminId
+      ..jobTitle = jobTitle ?? this.jobTitle
+      ..needNum = needNum ?? this.needNum
+      ..jobStart = jobStart ?? this.jobStart
+      ..jobEnd = jobEnd ?? this.jobEnd
+      ..jobId = jobId ?? this.jobId
+      ..remarkId = remarkId ?? this.remarkId
+      ..status = status ?? this.status
+      ..addTime = addTime ?? this.addTime
+      ..from = from ?? this.from
+      ..rejectReason = rejectReason ?? this.rejectReason
+      ..banquet = banquet ?? this.banquet
+      ..hotelJobId = hotelJobId ?? this.hotelJobId
+      ..workContent = workContent ?? this.workContent
+      ..hourlyRate = hourlyRate ?? this.hourlyRate
+      ..coDepartmentId = coDepartmentId ?? this.coDepartmentId
+      ..coStatus = coStatus ?? this.coStatus
+      ..coTemplateId = coTemplateId ?? this.coTemplateId
+      ..coApprovedAt = coApprovedAt ?? this.coApprovedAt
+      ..serviceType = serviceType ?? this.serviceType
+      ..jobUnit = jobUnit ?? this.jobUnit
+      ..agencyRate = agencyRate ?? this.agencyRate
+      ..location = location ?? this.location
+      ..vehicle = vehicle ?? this.vehicle
+      ..sourceType = sourceType ?? this.sourceType
+      ..agencyId = agencyId ?? this.agencyId
+      ..agencyName = agencyName ?? this.agencyName
+      ..employmentType = employmentType ?? this.employmentType
+      ..eventName = eventName ?? this.eventName
+      ..eventType = eventType ?? this.eventType
+      ..passengers = passengers ?? this.passengers
+      ..estRevenue = estRevenue ?? this.estRevenue
+      ..position = position ?? this.position
+      ..estCost = estCost ?? this.estCost
+      ..description = description ?? this.description
+      ..attUrl = attUrl ?? this.attUrl
+      ..templateId = templateId ?? this.templateId
+      ..jobTitleId = jobTitleId ?? this.jobTitleId;
+  }
+}
+
+UkLabourReviewStatusRecords $UkLabourReviewStatusRecordsFromJson(
+    Map<String, dynamic> json) {
+  final UkLabourReviewStatusRecords ukLabourReviewStatusRecords = UkLabourReviewStatusRecords();
+  final int? serialNumber = jsonConvert.convert<int>(json['serial_number']);
+  if (serialNumber != null) {
+    ukLabourReviewStatusRecords.serialNumber = serialNumber;
+  }
+  final String? nodeName = jsonConvert.convert<String>(json['node_name']);
+  if (nodeName != null) {
+    ukLabourReviewStatusRecords.nodeName = nodeName;
+  }
+  final String? statusShow = jsonConvert.convert<String>(json['status_show']);
+  if (statusShow != null) {
+    ukLabourReviewStatusRecords.statusShow = statusShow;
+  }
+  final String? auditName = jsonConvert.convert<String>(json['audit_name']);
+  if (auditName != null) {
+    ukLabourReviewStatusRecords.auditName = auditName;
+  }
+  final String? auditTime = jsonConvert.convert<String>(json['audit_time']);
+  if (auditTime != null) {
+    ukLabourReviewStatusRecords.auditTime = auditTime;
+  }
+  final dynamic auditMark = json['audit_mark'];
+  if (auditMark != null) {
+    ukLabourReviewStatusRecords.auditMark = auditMark;
+  }
+  final String? createdAt = jsonConvert.convert<String>(json['created_at']);
+  if (createdAt != null) {
+    ukLabourReviewStatusRecords.createdAt = createdAt;
+  }
+  final String? assigneeTypeShow = jsonConvert.convert<String>(
+      json['assignee_type_show']);
+  if (assigneeTypeShow != null) {
+    ukLabourReviewStatusRecords.assigneeTypeShow = assigneeTypeShow;
+  }
+  final String? designationShow = jsonConvert.convert<String>(
+      json['designation_show']);
+  if (designationShow != null) {
+    ukLabourReviewStatusRecords.designationShow = designationShow;
+  }
+  return ukLabourReviewStatusRecords;
+}
+
+Map<String, dynamic> $UkLabourReviewStatusRecordsToJson(
+    UkLabourReviewStatusRecords entity) {
+  final Map<String, dynamic> data = <String, dynamic>{};
+  data['serial_number'] = entity.serialNumber;
+  data['node_name'] = entity.nodeName;
+  data['status_show'] = entity.statusShow;
+  data['audit_name'] = entity.auditName;
+  data['audit_time'] = entity.auditTime;
+  data['audit_mark'] = entity.auditMark;
+  data['created_at'] = entity.createdAt;
+  data['assignee_type_show'] = entity.assigneeTypeShow;
+  data['designation_show'] = entity.designationShow;
+  return data;
+}
+
+extension UkLabourReviewStatusRecordsExtension on UkLabourReviewStatusRecords {
+  UkLabourReviewStatusRecords copyWith({
+    int? serialNumber,
+    String? nodeName,
+    String? statusShow,
+    String? auditName,
+    String? auditTime,
+    dynamic auditMark,
+    String? createdAt,
+    String? assigneeTypeShow,
+    String? designationShow,
+  }) {
+    return UkLabourReviewStatusRecords()
+      ..serialNumber = serialNumber ?? this.serialNumber
+      ..nodeName = nodeName ?? this.nodeName
+      ..statusShow = statusShow ?? this.statusShow
+      ..auditName = auditName ?? this.auditName
+      ..auditTime = auditTime ?? this.auditTime
+      ..auditMark = auditMark ?? this.auditMark
+      ..createdAt = createdAt ?? this.createdAt
+      ..assigneeTypeShow = assigneeTypeShow ?? this.assigneeTypeShow
+      ..designationShow = designationShow ?? this.designationShow;
+  }
+}

+ 74 - 4
packages/cs_domain/lib/generated/json/uk_template_detail_entity.g.dart

@@ -9,6 +9,31 @@ UkTemplateDetailEntity $UkTemplateDetailEntityFromJson(
   if (row != null) {
     ukTemplateDetailEntity.row = row;
   }
+  final int? jobTemplateId = jsonConvert.convert<int>(json['job_template_id']);
+  if (jobTemplateId != null) {
+    ukTemplateDetailEntity.jobTemplateId = jobTemplateId;
+  }
+  final List<String>? templateList = (json['template_list'] as List<dynamic>?)
+      ?.map(
+          (e) => jsonConvert.convert<String>(e) as String)
+      .toList();
+  if (templateList != null) {
+    ukTemplateDetailEntity.templateList = templateList;
+  }
+  final String? templateTitle = jsonConvert.convert<String>(
+      json['template_title']);
+  if (templateTitle != null) {
+    ukTemplateDetailEntity.templateTitle = templateTitle;
+  }
+  final List<
+      UkTemplateDetailTitleList>? titleList = (json['title_list'] as List<
+      dynamic>?)?.map(
+          (e) =>
+      jsonConvert.convert<UkTemplateDetailTitleList>(
+          e) as UkTemplateDetailTitleList).toList();
+  if (titleList != null) {
+    ukTemplateDetailEntity.titleList = titleList;
+  }
   final List<
       UkTemplateDetailCertificateList>? certificateList = (json['certificate_list'] as List<
       dynamic>?)?.map(
@@ -34,6 +59,10 @@ Map<String, dynamic> $UkTemplateDetailEntityToJson(
     UkTemplateDetailEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['row'] = entity.row?.toJson();
+  data['job_template_id'] = entity.jobTemplateId;
+  data['template_list'] = entity.templateList;
+  data['template_title'] = entity.templateTitle;
+  data['title_list'] = entity.titleList?.map((v) => v.toJson()).toList();
   data['certificate_list'] =
       entity.certificateList?.map((v) => v.toJson()).toList();
   data['vehicle_list'] = entity.vehicleList?.map((v) => v.toJson()).toList();
@@ -43,11 +72,19 @@ Map<String, dynamic> $UkTemplateDetailEntityToJson(
 extension UkTemplateDetailEntityExtension on UkTemplateDetailEntity {
   UkTemplateDetailEntity copyWith({
     UkTemplateDetailRow? row,
+    int? jobTemplateId,
+    List<String>? templateList,
+    String? templateTitle,
+    List<UkTemplateDetailTitleList>? titleList,
     List<UkTemplateDetailCertificateList>? certificateList,
     List<UkTemplateDetailVehicleList>? vehicleList,
   }) {
     return UkTemplateDetailEntity()
       ..row = row ?? this.row
+      ..jobTemplateId = jobTemplateId ?? this.jobTemplateId
+      ..templateList = templateList ?? this.templateList
+      ..templateTitle = templateTitle ?? this.templateTitle
+      ..titleList = titleList ?? this.titleList
       ..certificateList = certificateList ?? this.certificateList
       ..vehicleList = vehicleList ?? this.vehicleList;
   }
@@ -95,11 +132,11 @@ UkTemplateDetailRow $UkTemplateDetailRowFromJson(Map<String, dynamic> json) {
   if (gender != null) {
     ukTemplateDetailRow.gender = gender;
   }
-  final dynamic description = json['description'];
+  final String? description = jsonConvert.convert<String>(json['description']);
   if (description != null) {
     ukTemplateDetailRow.description = description;
   }
-  final dynamic note = json['note'];
+  final String? note = jsonConvert.convert<String>(json['note']);
   if (note != null) {
     ukTemplateDetailRow.note = note;
   }
@@ -165,8 +202,8 @@ extension UkTemplateDetailRowExtension on UkTemplateDetailRow {
     dynamic age,
     dynamic language,
     int? gender,
-    dynamic description,
-    dynamic note,
+    String? description,
+    String? note,
     int? operatorId,
     String? createdAt,
     String? updatedAt,
@@ -196,6 +233,39 @@ extension UkTemplateDetailRowExtension on UkTemplateDetailRow {
   }
 }
 
+UkTemplateDetailTitleList $UkTemplateDetailTitleListFromJson(
+    Map<String, dynamic> json) {
+  final UkTemplateDetailTitleList ukTemplateDetailTitleList = UkTemplateDetailTitleList();
+  final int? id = jsonConvert.convert<int>(json['id']);
+  if (id != null) {
+    ukTemplateDetailTitleList.id = id;
+  }
+  final String? jobTitle = jsonConvert.convert<String>(json['job_title']);
+  if (jobTitle != null) {
+    ukTemplateDetailTitleList.jobTitle = jobTitle;
+  }
+  return ukTemplateDetailTitleList;
+}
+
+Map<String, dynamic> $UkTemplateDetailTitleListToJson(
+    UkTemplateDetailTitleList entity) {
+  final Map<String, dynamic> data = <String, dynamic>{};
+  data['id'] = entity.id;
+  data['job_title'] = entity.jobTitle;
+  return data;
+}
+
+extension UkTemplateDetailTitleListExtension on UkTemplateDetailTitleList {
+  UkTemplateDetailTitleList copyWith({
+    int? id,
+    String? jobTitle,
+  }) {
+    return UkTemplateDetailTitleList()
+      ..id = id ?? this.id
+      ..jobTitle = jobTitle ?? this.jobTitle;
+  }
+}
+
 UkTemplateDetailCertificateList $UkTemplateDetailCertificateListFromJson(
     Map<String, dynamic> json) {
   final UkTemplateDetailCertificateList ukTemplateDetailCertificateList = UkTemplateDetailCertificateList();

+ 2 - 0
packages/cs_domain/lib/repository/uk_job_repository.dart

@@ -205,6 +205,7 @@ class UKJobRepository extends GetxService {
   /// 工作模板的编辑提交
   Future<HttpResult> editJobTemplateSubmit({
     required String templateId,
+    required String jobTemplateId,
     required String jobTitle,
     List<String>? certificate,
     List<String>? vehicle,
@@ -218,6 +219,7 @@ class UKJobRepository extends GetxService {
     Map<String, dynamic> params = {};
     params['job_title'] = jobTitle;
     params['template_id'] = templateId;
+    params['job_template_id'] = jobTemplateId;
 
     if (certificate != null && certificate.isNotEmpty) {
       params['certificate[]'] = certificate;

+ 27 - 0
packages/cs_domain/lib/repository/uk_labour_repository.dart

@@ -15,6 +15,7 @@ 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_preselected_list_entity.dart';
 import '../entity/response/uk_labour_request_table_entity.dart';
+import '../entity/response/uk_labour_review_status_entity.dart';
 
 /// 用工请求相关
 class UkLabourRepository extends GetxService {
@@ -651,4 +652,30 @@ class UkLabourRepository extends GetxService {
     }
     return result.convert();
   }
+
+  /// 用工审核的审核流程列表
+  Future<HttpResult<UkLabourReviewStatusEntity>> fetchLabourReviewStatusView(
+      String? requestId, {
+        CancelToken? cancelToken,
+      }) async {
+    //参数
+    Map<String, String> params = {};
+    params['request_id'] = requestId ?? "";
+
+    final result = await httpProvider.requestNetResult(
+      ApiConstants.apiLabourRequestStateWorkFlow,
+      params: params,
+      cancelToken: cancelToken,
+    );
+
+    //根据返回的结果,封装原始数据为Bean/Entity对象
+    if (result.isSuccess) {
+      //重新赋值data或list
+      final json = result.getDataJson();
+      var data = UkLabourReviewStatusEntity.fromJson(json!);
+      //重新赋值data或list
+      return result.convert<UkLabourReviewStatusEntity>(data: data);
+    }
+    return result.convert();
+  }
 }

+ 2 - 0
packages/cs_plugin_basic/lib/constants/app_constant.dart

@@ -23,5 +23,7 @@ class AppConstant {
   static const eventLabourRequestRefresh = 'event_labour_request_refresh'; //用工请求的列表刷新
   static const eventAppliedListRefresh = 'event_applied_list_refresh'; //已申请的列表刷新
   static const eventMainRefresh = 'event_main_refresh'; //首页刷新
+  static const eventJobListRefresh = 'event_job_list_refresh';
+  static const eventJobListChangeStaffNo = 'event_job_list_change_staff_no';
 
 }