瀏覽代碼

用工的添加与详情页面

liukai 8 月之前
父節點
當前提交
10e4131833
共有 20 個文件被更改,包括 627 次插入285 次删除
  1. 184 0
      packages/cpt_job/lib/modules/labour_request_add/labour_request_add_controller.dart
  2. 244 10
      packages/cpt_job/lib/modules/labour_request_add/labour_request_add_page.dart
  3. 29 3
      packages/cpt_job/lib/modules/labour_request_add/labour_request_add_state.dart
  4. 8 8
      packages/cpt_job/lib/modules/labour_request_list/labour_request_item.dart
  5. 17 5
      packages/cpt_job/lib/modules/labour_request_list/labour_request_list_controller.dart
  6. 3 3
      packages/cpt_job/lib/modules/labour_request_list/labour_request_list_page.dart
  7. 19 11
      packages/cpt_job/lib/widget/labour_request_filter.dart
  8. 0 59
      packages/cs_domain/lib/entity/response/labour_request_add_option_entity.dart
  9. 40 40
      packages/cs_domain/lib/entity/response/labour_request_edit_index_entity.dart
  10. 0 13
      packages/cs_domain/lib/generated/json/base/json_convert_content.dart
  11. 0 111
      packages/cs_domain/lib/generated/json/labour_request_add_option_entity.g.dart
  12. 2 2
      packages/cs_domain/lib/generated/json/labour_request_edit_index_entity.g.dart
  13. 6 5
      packages/cs_domain/lib/repository/labour_repository.dart
  14. 1 0
      packages/cs_resources/lib/constants/color_constants.dart
  15. 15 0
      packages/cs_resources/lib/local/language/en_US.dart
  16. 16 1
      packages/cs_resources/lib/local/language/zh_CN.dart
  17. 4 0
      packages/cs_widgets/lib/my_text_field.dart
  18. 10 4
      packages/cs_widgets/lib/my_text_view.dart
  19. 6 4
      packages/cs_widgets/lib/shatter/form_require_text.dart
  20. 23 6
      packages/cs_widgets/lib/shatter/round_my_text_field.dart

+ 184 - 0
packages/cpt_job/lib/modules/labour_request_add/labour_request_add_controller.dart

@@ -1,7 +1,191 @@
+import 'package:domain/entity/response/labour_request_edit_index_entity.dart';
+import 'package:domain/repository/labour_repository.dart';
+import 'package:flutter/cupertino.dart';
 import 'package:get/get.dart';
+import 'package:plugin_platform/engine/notify/notify_engine.dart';
+import 'package:plugin_platform/engine/toast/toast_engine.dart';
+import 'package:plugin_platform/http/http_result.dart';
+import 'package:shared/utils/date_time_utils.dart';
+import 'package:shared/utils/util.dart';
+import 'package:widgets/picker/date_picker_util.dart';
+import 'package:widgets/picker/option_pick_util.dart';
 
 import 'labour_request_add_state.dart';
 
 class LabourRequestAddController extends GetxController {
+  final LabourRepository _labourRepository = Get.find();
   final LabourRequestAddState state = LabourRequestAddState();
+
+  /// 获取首页的数据
+  void fetchRequestDetail() async {
+    //获取到数据
+    Future<HttpResult<LabourRequestEditIndexEntity>> taskFuture;
+    if (state.pageType != 0 && Utils.isNotEmpty(state.appliedId)&& state.appliedId != "0") {
+      taskFuture = _labourRepository.fetchLabourRequestEditDetail(state.appliedId);
+    } else {
+      taskFuture = _labourRepository.fetchLabourRequestAddOption();
+    }
+
+    var result = await taskFuture;
+
+    //处理数据
+    if (result.isSuccess) {
+      state.labReqOption = result.data;
+      state.selectedStartTime = state.labReqOption?.jobStart == null ? null : DateTimeUtils.getDateTime(state.labReqOption!.jobStart!);
+      state.selectedEndTime = state.labReqOption?.jobEnd == null ? null : DateTimeUtils.getDateTime(state.labReqOption!.jobEnd!);
+      state.noStaff = state.labReqOption?.needNum.toString() == "0" ? "" : state.labReqOption?.needNum.toString();
+      var needNumController = state.formData['no_of_staff']!['controller'];
+      needNumController.text = state.noStaff;
+
+      update();
+    } else {
+      ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
+    }
+  }
+
+  @override
+  void onReady() {
+    super.onReady();
+    fetchRequestDetail();
+  }
+
+  /// 提交
+  void doSubmit() async {
+    var needNumController = state.formData['no_of_staff']!['controller'];
+    String needNum = needNumController.text.toString();
+
+    if (Utils.isEmpty(state.selectedTemplateId)) {
+      ToastEngine.show("Choose Job Title".tr);
+      return;
+    } else if (state.selectedStartTime == null) {
+      ToastEngine.show("Choose Start Date".tr);
+      return;
+    } else if (state.selectedEndTime == null) {
+      ToastEngine.show("Choose End Date".tr);
+      return;
+    } else if (Utils.isEmpty(state.selectedDepartmentId)) {
+      ToastEngine.show("Choose Outlet".tr);
+      return;
+    } else if (Utils.isEmpty(needNum)) {
+      ToastEngine.show("Enter No. of Staff".tr);
+      return;
+    }
+
+    Future<HttpResult> taskFuture;
+    if (state.pageType != 0 && Utils.isNotEmpty(state.appliedId) && state.appliedId != "0") {
+      taskFuture = _labourRepository.editLabourRequestSubmit(
+        state.appliedId,
+        state.selectedTemplateId,
+        DateTimeUtils.formatDate(state.selectedStartTime),
+        DateTimeUtils.formatDate(state.selectedEndTime),
+        state.selectedDepartmentId,
+        needNum,
+      );
+    } else {
+      taskFuture = _labourRepository.addLabourRequestSubmit(
+        state.selectedTemplateId,
+        DateTimeUtils.formatDate(state.selectedStartTime),
+        DateTimeUtils.formatDate(state.selectedEndTime),
+        state.selectedDepartmentId,
+        needNum,
+      );
+    }
+
+    var result = await taskFuture;
+
+    //处理数据
+    if (result.isSuccess) {
+      NotifyEngine.showSuccess("Successful".tr);
+      Get.back();
+    } else {
+      ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
+    }
+  }
+
+  // 筛选工作模板
+  void pickJobTitle() {
+    if (state.labReqOption == null || state.pageType == 2) {
+      return;
+    }
+
+    int selectedTemplateIndex;
+    if (state.selectedTemplateId == null) {
+      selectedTemplateIndex = 0;
+    } else {
+      selectedTemplateIndex = state.labReqOption!.templateList.indexWhere((department) => department.value.toString() == state.selectedTemplateId);
+    }
+
+    if (selectedTemplateIndex < 0) {
+      selectedTemplateIndex = 0;
+    }
+
+    OptionPickerUtil.showCupertinoOptionPicker(
+      items: state.labReqOption!.templateList.map((e) => e.txt!).toList(growable: false),
+      initialSelectIndex: selectedTemplateIndex,
+      onPickerChanged: (_, index) {
+        state.selectedTemplateId = state.labReqOption!.templateList[index].value!.toString();
+        update();
+      },
+    );
+  }
+
+  //筛选开始时间
+  void pickStartTime() {
+    if (state.labReqOption == null || state.pageType == 2) {
+      return;
+    }
+
+    DatePickerUtil.showCupertinoDatePicker(
+      selectedDateTime: state.selectedStartTime,
+      mode: CupertinoDatePickerMode.dateAndTime,
+      onDateTimeChanged: (date) {
+        state.selectedStartTime = date;
+        update();
+      },
+      title: "Start Time".tr,
+    );
+  }
+
+  void pickEndTime() {
+    if (state.labReqOption == null || state.pageType == 2) {
+      return;
+    }
+
+    DatePickerUtil.showCupertinoDatePicker(
+      selectedDateTime: state.selectedEndTime,
+      mode: CupertinoDatePickerMode.dateAndTime,
+      onDateTimeChanged: (date) {
+        state.selectedEndTime = date;
+        update();
+      },
+      title: "End Time".tr,
+    );
+  }
+
+  // 筛选部门
+  void pickDepartment() {
+    if (state.labReqOption == null || state.pageType == 2) {
+      return;
+    }
+
+    int selectedDepartmentIndex;
+    if (state.selectedDepartmentId == null) {
+      selectedDepartmentIndex = 0;
+    } else {
+      selectedDepartmentIndex = state.labReqOption!.departmentList.indexWhere((department) => department.value.toString() == state.selectedDepartmentId);
+    }
+
+    if (selectedDepartmentIndex < 0) {
+      selectedDepartmentIndex = 0;
+    }
+
+    OptionPickerUtil.showCupertinoOptionPicker(
+      items: state.labReqOption!.departmentList.map((e) => e.txt!).toList(growable: false),
+      initialSelectIndex: selectedDepartmentIndex,
+      onPickerChanged: (_, index) {
+        state.selectedDepartmentId = state.labReqOption!.departmentList[index].value!.toString();
+        update();
+      },
+    );
+  }
 }

+ 244 - 10
packages/cpt_job/lib/modules/labour_request_add/labour_request_add_page.dart

@@ -1,22 +1,34 @@
+import 'package:cs_resources/constants/color_constants.dart';
+import 'package:cs_resources/generated/assets.dart';
+import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:flutter/widgets.dart';
 import 'package:get/get.dart';
 import 'package:plugin_basic/base/base_state.dart';
 import 'package:plugin_basic/base/base_stateful_page.dart';
 import 'package:plugin_basic/utils/ext_get_nav.dart';
 import 'package:router/path/router_path.dart';
+import 'package:shared/utils/date_time_utils.dart';
 import 'package:shared/utils/screen_util.dart';
+import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
+import 'package:widgets/my_button.dart';
+import 'package:widgets/my_load_image.dart';
+import 'package:widgets/my_text_view.dart';
+import 'package:widgets/no_shadow_scroll_behavior.dart';
+import 'package:widgets/shatter/form_require_text.dart';
+import 'package:widgets/shatter/round_my_text_field.dart';
 
 import 'labour_request_add_controller.dart';
 import 'labour_request_add_state.dart';
 
-
 class LabourRequestAddPage extends BaseStatefulPage<LabourRequestAddController> {
   LabourRequestAddPage({Key? key}) : super(key: key);
 
-  //启动当前页面
-  static void startInstance() {
-    return Get.start(RouterPath.JOB_LABOUR_REQUEST_ADD);
+  //启动当前页面,pageType 0 是新增  1是编辑  2是详情
+  static void startInstance(int pageType, String? appliedId) {
+    return Get.start(RouterPath.JOB_LABOUR_REQUEST_ADD, arguments: {'pageType': pageType, 'appliedId': appliedId});
   }
 
   @override
@@ -26,17 +38,17 @@ class LabourRequestAddPage extends BaseStatefulPage<LabourRequestAddController>
 
   @override
   State<LabourRequestAddPage> createState() => _LabourRequestAddState();
-
 }
 
 class _LabourRequestAddState extends BaseState<LabourRequestAddPage, LabourRequestAddController> {
-
   late LabourRequestAddState state;
 
   @override
   void initState() {
     super.initState();
     state = controller.state;
+    state.pageType = Get.arguments['pageType'];
+    state.appliedId = Get.arguments['appliedId'];
   }
 
   @override
@@ -44,7 +56,13 @@ class _LabourRequestAddState extends BaseState<LabourRequestAddPage, LabourReque
     return autoCtlGetBuilder(builder: (controller) {
       return Scaffold(
         extendBodyBehindAppBar: true,
-        appBar: MyAppBar.appBar(context, "Add Labour Requisition".tr),
+        appBar: MyAppBar.appBar(
+            context,
+            state.pageType == 0
+                ? "Add Labour Requisition".tr
+                : state.pageType == 1
+                    ? "Edit Labour Requisition".tr
+                    : "Labour Requisition".tr),
         body: SafeArea(
           bottom: true,
           top: false,
@@ -63,12 +81,228 @@ class _LabourRequestAddState extends BaseState<LabourRequestAddPage, LabourReque
                 end: Alignment.bottomCenter,
               ),
             ),
-            child: Container(),
+            child: Scrollbar(
+              child: ScrollConfiguration(
+                behavior: NoShadowScrollBehavior(),
+                child: SingleChildScrollView(
+                  scrollDirection: Axis.vertical,
+                  physics: const BouncingScrollPhysics(),
+                  child: Column(
+                    crossAxisAlignment: CrossAxisAlignment.start,
+                    children: [
+                      //工作标题,选择模板
+                      FormRequireText(
+                        text: "Job Title".tr,
+                      ).marginOnly(top: 15),
+
+                      //工作标题
+                      Container(
+                        padding: EdgeInsets.only(left: 16, right: 10),
+                        margin: EdgeInsets.only(top: 10),
+                        height: 45,
+                        decoration: BoxDecoration(
+                          color: Color(0xFF4DCFF6).withOpacity(state.pageType == 2 ? 0.5 : 0.2),
+                          borderRadius: const BorderRadius.all(Radius.circular(5)),
+                        ),
+                        child: Row(
+                          mainAxisSize: MainAxisSize.max,
+                          crossAxisAlignment: CrossAxisAlignment.center,
+                          mainAxisAlignment: MainAxisAlignment.start,
+                          children: [
+                            MyTextView(
+                              state.selectedTemplateId == null
+                                  ? ""
+                                  : state.labReqOption!.templateList.firstWhere((element) => element.value.toString() == state.selectedTemplateId).txt ?? "",
+                              fontSize: 14,
+                              hint: "Choose Job Title".tr,
+                              textHintColor: ColorConstants.textGrayAECAE5,
+                              isFontMedium: true,
+                              textColor: ColorConstants.white,
+                            ).expanded(),
+
+                            //下拉选图标
+                            Visibility(
+                              visible: state.pageType != 2,
+                              child: MyAssetImage(Assets.baseServiceTriangleDropDownIcon, width: 11.5, height: 6.28),
+                            ),
+                          ],
+                        ),
+                      ).onTap(() {
+                        FocusScope.of(context).unfocus();
+                        controller.pickJobTitle();
+                      }),
+
+                      //开始时间
+                      FormRequireText(
+                        text: "Start Time".tr,
+                      ).marginOnly(top: 15),
+
+                      //选择时间
+                      Container(
+                        padding: EdgeInsets.only(left: 16, right: 10),
+                        margin: EdgeInsets.only(top: 10),
+                        height: 45,
+                        decoration: BoxDecoration(
+                          color: Color(0xFF4DCFF6).withOpacity(state.pageType == 2 ? 0.5 : 0.2),
+                          borderRadius: const BorderRadius.all(Radius.circular(5)),
+                        ),
+                        child: Row(
+                          mainAxisSize: MainAxisSize.max,
+                          crossAxisAlignment: CrossAxisAlignment.center,
+                          mainAxisAlignment: MainAxisAlignment.start,
+                          children: [
+                            MyTextView(
+                              state.selectedStartTime == null ? "" : DateTimeUtils.formatDate(state.selectedStartTime),
+                              fontSize: 14,
+                              hint: "Job Start Time".tr,
+                              textHintColor: ColorConstants.textGrayAECAE5,
+                              isFontMedium: true,
+                              textColor: ColorConstants.white,
+                            ).expanded(),
+                            //下拉选图标
+                            Visibility(
+                              visible: state.pageType != 2,
+                              child: MyAssetImage(Assets.baseServiceTriangleDropDownIcon, width: 11.5, height: 6.28),
+                            ),
+                          ],
+                        ),
+                      ).onTap(() {
+                        FocusScope.of(context).unfocus();
+                        controller.pickStartTime();
+                      }),
+
+                      //结束时间
+                      FormRequireText(
+                        text: "End Time".tr,
+                      ).marginOnly(top: 15),
+
+                      //选择时间
+                      Container(
+                        padding: EdgeInsets.only(left: 16, right: 10),
+                        margin: EdgeInsets.only(top: 10),
+                        height: 45,
+                        decoration: BoxDecoration(
+                          color: Color(0xFF4DCFF6).withOpacity(state.pageType == 2 ? 0.5 : 0.2),
+                          borderRadius: const BorderRadius.all(Radius.circular(5)),
+                        ),
+                        child: Row(
+                          mainAxisSize: MainAxisSize.max,
+                          crossAxisAlignment: CrossAxisAlignment.center,
+                          mainAxisAlignment: MainAxisAlignment.start,
+                          children: [
+                            MyTextView(
+                              state.selectedEndTime == null ? "" : DateTimeUtils.formatDate(state.selectedEndTime),
+                              fontSize: 14,
+                              hint: "Job End Time".tr,
+                              textHintColor: ColorConstants.textGrayAECAE5,
+                              isFontMedium: true,
+                              textColor: ColorConstants.white,
+                            ).expanded(),
+                            //下拉选图标
+                            Visibility(
+                              visible: state.pageType != 2,
+                              child: MyAssetImage(Assets.baseServiceTriangleDropDownIcon, width: 11.5, height: 6.28),
+                            ),
+                          ],
+                        ),
+                      ).onTap(() {
+                        FocusScope.of(context).unfocus();
+                        controller.pickEndTime();
+                      }),
+
+                      //工作选择部门
+                      FormRequireText(
+                        text: "Outlet".tr,
+                      ).marginOnly(top: 15),
+
+                      //选择部门
+                      Container(
+                        padding: EdgeInsets.only(left: 16, right: 10),
+                        margin: EdgeInsets.only(top: 10),
+                        height: 45,
+                        decoration: BoxDecoration(
+                          color: Color(0xFF4DCFF6).withOpacity(state.pageType == 2 ? 0.5 : 0.2),
+                          borderRadius: const BorderRadius.all(Radius.circular(5)),
+                        ),
+                        child: Row(
+                          mainAxisSize: MainAxisSize.max,
+                          crossAxisAlignment: CrossAxisAlignment.center,
+                          mainAxisAlignment: MainAxisAlignment.start,
+                          children: [
+                            MyTextView(
+                              state.selectedDepartmentId == null
+                                  ? ""
+                                  : state.labReqOption!.departmentList?.firstWhere((element) => element.value.toString() == state.selectedDepartmentId).txt ??
+                                      "",
+                              fontSize: 14,
+                              hint: "Choose Outlet".tr,
+                              textHintColor: ColorConstants.textGrayAECAE5,
+                              isFontMedium: true,
+                              textColor: ColorConstants.white,
+                            ).expanded(),
+                            //下拉选图标
+                            Visibility(
+                              visible: state.pageType != 2,
+                              child: MyAssetImage(Assets.baseServiceTriangleDropDownIcon, width: 11.5, height: 6.28),
+                            ),
+                          ],
+                        ),
+                      ).onTap(() {
+                        FocusScope.of(context).unfocus();
+                        controller.pickDepartment();
+                      }),
+
+                      //需要的人数
+                      FormRequireText(
+                        text: "No. of Staff".tr,
+                      ).marginOnly(top: 15),
+
+                      //输入框(只允许输入数字)
+                      CustomTextField(
+                        formKey: "no_of_staff",
+                        marginLeft: 0,
+                        marginRight: 0,
+                        paddingTop: 0,
+                        paddingBottom: 0,
+                        height: 45,
+                        fillBackgroundColor: Color(0xFF4DCFF6).withOpacity(state.pageType == 2 ? 0.5 : 0.2),
+                        enabled: state.pageType != 2,
+                        inputFormatters: <TextInputFormatter>[FilteringTextInputFormatter.digitsOnly],
+                        textInputType: TextInputType.number,
+                        formData: state.formData,
+                        textInputAction: TextInputAction.done,
+                        onSubmit: (key, value) {
+                          FocusScope.of(context).unfocus();
+                        },
+                        marginTop: 10,
+                      ),
+
+                      //提交按钮
+                      Visibility(
+                        visible: state.pageType != 2,
+                        child: MyButton(
+                          type: ClickType.throttle,
+                          milliseconds: 500,
+                          onPressed: () {
+                            FocusScope.of(context).unfocus();
+                            controller.doSubmit();
+                          },
+                          text: "Submit".tr,
+                          textColor: ColorConstants.white,
+                          fontSize: 16,
+                          radius: 22.5,
+                          backgroundColor: hexToColor("#FFBB1B"),
+                          fontWeight: FontWeight.w500,
+                        ).marginSymmetric(horizontal: 0, vertical: 30),
+                      ),
+                    ],
+                  ).paddingOnly(left: 15, right: 15),
+                ),
+              ),
+            ),
           ),
         ),
       );
     });
   }
 }
-
-

+ 29 - 3
packages/cpt_job/lib/modules/labour_request_add/labour_request_add_state.dart

@@ -1,5 +1,31 @@
+import 'package:domain/entity/response/labour_request_edit_index_entity.dart';
+import 'package:flutter/material.dart';
+import 'package:plugin_basic/basic_export.dart';
+
 class LabourRequestAddState {
-  LabourRequestAddState() {
-    ///Initialize variables
-  }
+
+  int pageType = 0;  //页面的状态 0 是新增  1是编辑  2是详情
+  String? appliedId;  //编辑和详情需要用到ID
+
+  //页面对应的详情数据
+  LabourRequestEditIndexEntity? labReqOption;
+
+  //页面对应的选择的条件
+  DateTime? selectedStartTime;
+  DateTime? selectedEndTime;
+  String? selectedTemplateId;
+  String? selectedDepartmentId;
+  String? noStaff;  //成员数量
+
+  //表单的校验与数据
+  Map<String, Map<String, dynamic>> formData = {
+    'no_of_staff': {
+      'value': '',
+      'controller': TextEditingController(),
+      'focusNode': FocusNode(),
+      'hintText': 'Enter No. of Staff'.tr,
+      'obsecure': false,
+    },
+  };
+
 }

+ 8 - 8
packages/cpt_job/lib/modules/labour_request_list/labour_request_item.dart

@@ -201,7 +201,7 @@ class LabourRequestItem extends StatelessWidget {
               children: [
                 //详情按钮
                 Visibility(
-                  visible: item.actionList?.contains("detail") ?? false,
+                  // visible: item.actionList?.contains("detail") ?? false,
                   child: MyButton(
                     onPressed: () {
                       FocusScope.of(context).unfocus();
@@ -215,7 +215,7 @@ class LabourRequestItem extends StatelessWidget {
                     radius: 17.25,
                     minWidth: 60,
                     minHeight: 35,
-                  ).marginOnly(left: 15),
+                  ).marginOnly(left: 12),
                 ),
 
                 //Recall按钮
@@ -232,16 +232,16 @@ class LabourRequestItem extends StatelessWidget {
                     radius: 17.25,
                     minWidth: 60,
                     minHeight: 35,
-                  ).marginOnly(left: 15),
+                  ).marginOnly(left: 12),
                 ),
 
                 //Edit按钮
                 Visibility(
-                  visible: item.actionList?.contains("edit") ?? false,
+                  // visible: item.actionList?.contains("edit") ?? false,
                   child: MyButton(
                     onPressed: () {
                       FocusScope.of(context).unfocus();
-                      onRecallAction?.call();
+                      onEditAction?.call();
                     },
                     text: "Edit".tr,
                     textColor: ColorConstants.white,
@@ -249,12 +249,12 @@ class LabourRequestItem extends StatelessWidget {
                     radius: 17.25,
                     minWidth: 60,
                     minHeight: 35,
-                  ).marginOnly(left: 15),
+                  ).marginOnly(left: 12),
                 ),
 
                 //状态工作流按钮
                 Visibility(
-                  visible: item.actionList?.contains("status") ?? false,
+                  // visible: item.actionList?.contains("status") ?? false,
                   child: MyButton(
                     onPressed: () {
                       FocusScope.of(context).unfocus();
@@ -266,7 +266,7 @@ class LabourRequestItem extends StatelessWidget {
                     radius: 17.25,
                     minWidth: 60,
                     minHeight: 35,
-                  ).marginOnly(left: 15),
+                  ).marginOnly(left: 12),
                 ),
               ],
             ).marginOnly(top: 18, bottom: 2),

+ 17 - 5
packages/cpt_job/lib/modules/labour_request_list/labour_request_list_controller.dart

@@ -177,14 +177,26 @@ class LabourRequestListController extends GetxController {
     }
   }
 
-  //跳转到添加页面
-  void gotoAddLabourPage() {
-    LabourRequestAddPage.startInstance();
-  }
-
   @override
   void onReady() {
     super.onReady();
     fetchNotifyList();
   }
+
+  //跳转到添加页面
+  void gotoAddLabourPage() {
+    LabourRequestAddPage.startInstance(0, "");
+  }
+
+  //去详情页面
+  void gotoDetailPage(LabourRequestListRows data) {
+    LabourRequestAddPage.startInstance(2, data.requestId.toString());
+  }
+
+  //去编辑页面
+  void gotoEditPage(LabourRequestListRows data) {
+    LabourRequestAddPage.startInstance(1, data.requestId.toString());
+  }
+
+  void doRecall(LabourRequestListRows data) {}
 }

+ 3 - 3
packages/cpt_job/lib/modules/labour_request_list/labour_request_list_page.dart

@@ -142,13 +142,13 @@ class _LabourRequestListState extends BaseState<LabourRequestListPage, LabourReq
                             index: index,
                             item: state.datas[index],
                             onDetailAction: (){
-                              ToastEngine.show("进入详情");
+                            controller.gotoDetailPage(state.datas[index]);
                             },
                             onRecallAction: (){
-                              ToastEngine.show("操作Recall");
+                              controller.doRecall(state.datas[index]);
                             },
                             onEditAction: (){
-                              ToastEngine.show("进入编辑");
+                              controller.gotoEditPage(state.datas[index]);
                             },
                             onStatusAction: (){
                               ToastEngine.show("进入状态页面");

+ 19 - 11
packages/cpt_job/lib/widget/labour_request_filter.dart

@@ -102,8 +102,10 @@ class _LabourRequestFilterState extends State<LabourRequestFilter> {
                   children: [
                     MyTextView(
                       selectedDepartmentId == null
-                          ? "Outlet".tr
+                          ? ""
                           : widget.optionResult.departmentList!.firstWhere((element) => element.value.toString() == selectedDepartmentId).txt!,
+                      hint: "Choose Outlet".tr,
+                      textHintColor: ColorConstants.textBlackHint,
                       fontSize: 14,
                       isFontMedium: true,
                       textColor: ColorConstants.black33,
@@ -140,9 +142,11 @@ class _LabourRequestFilterState extends State<LabourRequestFilter> {
                   children: [
                     MyTextView(
                       selectedStatusId == null
-                          ? "Status".tr
+                          ? ""
                           : widget.optionResult.statusList!.firstWhere((element) => element.value.toString() == selectedStatusId).txt!,
                       fontSize: 14,
+                      hint: "Choose Status".tr,
+                      textHintColor: ColorConstants.textBlackHint,
                       isFontMedium: true,
                       textColor: ColorConstants.black33,
                     ).expanded(),
@@ -177,8 +181,10 @@ class _LabourRequestFilterState extends State<LabourRequestFilter> {
                   mainAxisAlignment: MainAxisAlignment.start,
                   children: [
                     MyTextView(
-                      selectedStartDate == null ? "Start Date".tr : DateTimeUtils.formatDate(selectedStartDate, format: "yyyy-MM-dd"),
+                      selectedStartDate == null ? "" : DateTimeUtils.formatDate(selectedStartDate, format: "yyyy-MM-dd"),
                       fontSize: 14,
+                      hint: "Choose Start Date".tr,
+                      textHintColor: ColorConstants.textBlackHint,
                       isFontMedium: true,
                       textColor: ColorConstants.black33,
                     ).expanded(),
@@ -213,8 +219,10 @@ class _LabourRequestFilterState extends State<LabourRequestFilter> {
                   mainAxisAlignment: MainAxisAlignment.start,
                   children: [
                     MyTextView(
-                      selectedEndDate == null ? "End Date".tr : DateTimeUtils.formatDate(selectedEndDate, format: "yyyy-MM-dd"),
+                      selectedEndDate == null ? "" : DateTimeUtils.formatDate(selectedEndDate, format: "yyyy-MM-dd"),
                       fontSize: 14,
+                      hint: "Choose End Date".tr,
+                      textHintColor: ColorConstants.textBlackHint,
                       isFontMedium: true,
                       textColor: ColorConstants.black33,
                     ).expanded(),
@@ -299,13 +307,13 @@ class _LabourRequestFilterState extends State<LabourRequestFilter> {
   /// 筛选部门
   void pickerOutlet() {
     int selectedDepartmentIndex;
-    if (selectedDepartmentId == null){
+    if (selectedDepartmentId == null) {
       selectedDepartmentIndex = 0;
-    }else{
-       selectedDepartmentIndex = widget.optionResult.departmentList!.indexWhere((department) => department.value.toString() == selectedDepartmentId);
+    } else {
+      selectedDepartmentIndex = widget.optionResult.departmentList!.indexWhere((department) => department.value.toString() == selectedDepartmentId);
     }
 
-    if (selectedDepartmentIndex <0){
+    if (selectedDepartmentIndex < 0) {
       selectedDepartmentIndex = 0;
     }
 
@@ -323,13 +331,13 @@ class _LabourRequestFilterState extends State<LabourRequestFilter> {
   /// 筛选状态
   void pickerStatus() {
     int selectedStatusIndex;
-    if (selectedStatusId == null){
+    if (selectedStatusId == null) {
       selectedStatusIndex = 0;
-    }else{
+    } else {
       selectedStatusIndex = widget.optionResult.statusList!.indexWhere((department) => department.value.toString() == selectedStatusId);
     }
 
-    if (selectedStatusIndex <0){
+    if (selectedStatusIndex < 0) {
       selectedStatusIndex = 0;
     }
 

+ 0 - 59
packages/cs_domain/lib/entity/response/labour_request_add_option_entity.dart

@@ -1,59 +0,0 @@
-import 'package:domain/generated/json/base/json_field.dart';
-import 'package:domain/generated/json/labour_request_add_option_entity.g.dart';
-import 'dart:convert';
-export 'package:domain/generated/json/labour_request_add_option_entity.g.dart';
-
-@JsonSerializable()
-class LabourRequestAddOptionEntity {
-	@JSONField(name: "template_list")
-	List<LabourRequestAddOptionTemplateList>? templateList = [];
-	@JSONField(name: "department_list")
-	List<LabourRequestAddOptionDepartmentList>? departmentList = [];
-
-	LabourRequestAddOptionEntity();
-
-	factory LabourRequestAddOptionEntity.fromJson(Map<String, dynamic> json) => $LabourRequestAddOptionEntityFromJson(json);
-
-	Map<String, dynamic> toJson() => $LabourRequestAddOptionEntityToJson(this);
-
-	@override
-	String toString() {
-		return jsonEncode(this);
-	}
-}
-
-@JsonSerializable()
-class LabourRequestAddOptionTemplateList {
-	int? value = 0;
-	String? txt = '';
-	String? selected = '';
-
-	LabourRequestAddOptionTemplateList();
-
-	factory LabourRequestAddOptionTemplateList.fromJson(Map<String, dynamic> json) => $LabourRequestAddOptionTemplateListFromJson(json);
-
-	Map<String, dynamic> toJson() => $LabourRequestAddOptionTemplateListToJson(this);
-
-	@override
-	String toString() {
-		return jsonEncode(this);
-	}
-}
-
-@JsonSerializable()
-class LabourRequestAddOptionDepartmentList {
-	int? value = 0;
-	String? txt = '';
-	String? selected = '';
-
-	LabourRequestAddOptionDepartmentList();
-
-	factory LabourRequestAddOptionDepartmentList.fromJson(Map<String, dynamic> json) => $LabourRequestAddOptionDepartmentListFromJson(json);
-
-	Map<String, dynamic> toJson() => $LabourRequestAddOptionDepartmentListToJson(this);
-
-	@override
-	String toString() {
-		return jsonEncode(this);
-	}
-}

+ 40 - 40
packages/cs_domain/lib/entity/response/labour_request_edit_index_entity.dart

@@ -5,63 +5,63 @@ export 'package:domain/generated/json/labour_request_edit_index_entity.g.dart';
 
 @JsonSerializable()
 class LabourRequestEditIndexEntity {
-	@JSONField(name: "request_id")
-	int? requestId = 0;
-	@JSONField(name: "job_start")
-	String? jobStart = '';
-	@JSONField(name: "job_end")
-	String? jobEnd = '';
-	@JSONField(name: "need_num")
-	int? needNum = 0;
-	@JSONField(name: "template_list")
-	List<LabourRequestEditIndexTemplateList>? templateList = [];
-	@JSONField(name: "department_list")
-	List<LabourRequestEditIndexDepartmentList>? departmentList = [];
+  @JSONField(name: "request_id")
+  int requestId = 0;
+  @JSONField(name: "job_start")
+  String? jobStart;
+  @JSONField(name: "job_end")
+  String? jobEnd;
+  @JSONField(name: "need_num")
+  int needNum = 0;
+  @JSONField(name: "template_list")
+  List<LabourRequestEditIndexTemplateList> templateList = [];
+  @JSONField(name: "department_list")
+  List<LabourRequestEditIndexDepartmentList> departmentList = [];
 
-	LabourRequestEditIndexEntity();
+  LabourRequestEditIndexEntity();
 
-	factory LabourRequestEditIndexEntity.fromJson(Map<String, dynamic> json) => $LabourRequestEditIndexEntityFromJson(json);
+  factory LabourRequestEditIndexEntity.fromJson(Map<String, dynamic> json) => $LabourRequestEditIndexEntityFromJson(json);
 
-	Map<String, dynamic> toJson() => $LabourRequestEditIndexEntityToJson(this);
+  Map<String, dynamic> toJson() => $LabourRequestEditIndexEntityToJson(this);
 
-	@override
-	String toString() {
-		return jsonEncode(this);
-	}
+  @override
+  String toString() {
+    return jsonEncode(this);
+  }
 }
 
 @JsonSerializable()
 class LabourRequestEditIndexTemplateList {
-	int? value = 0;
-	String? txt = '';
-	String? selected = '';
+  int? value = 0;
+  String? txt = '';
+  String? selected = '';
 
-	LabourRequestEditIndexTemplateList();
+  LabourRequestEditIndexTemplateList();
 
-	factory LabourRequestEditIndexTemplateList.fromJson(Map<String, dynamic> json) => $LabourRequestEditIndexTemplateListFromJson(json);
+  factory LabourRequestEditIndexTemplateList.fromJson(Map<String, dynamic> json) => $LabourRequestEditIndexTemplateListFromJson(json);
 
-	Map<String, dynamic> toJson() => $LabourRequestEditIndexTemplateListToJson(this);
+  Map<String, dynamic> toJson() => $LabourRequestEditIndexTemplateListToJson(this);
 
-	@override
-	String toString() {
-		return jsonEncode(this);
-	}
+  @override
+  String toString() {
+    return jsonEncode(this);
+  }
 }
 
 @JsonSerializable()
 class LabourRequestEditIndexDepartmentList {
-	int? value = 0;
-	String? txt = '';
-	String? selected = '';
+  int? value = 0;
+  String? txt = '';
+  String? selected = '';
 
-	LabourRequestEditIndexDepartmentList();
+  LabourRequestEditIndexDepartmentList();
 
-	factory LabourRequestEditIndexDepartmentList.fromJson(Map<String, dynamic> json) => $LabourRequestEditIndexDepartmentListFromJson(json);
+  factory LabourRequestEditIndexDepartmentList.fromJson(Map<String, dynamic> json) => $LabourRequestEditIndexDepartmentListFromJson(json);
 
-	Map<String, dynamic> toJson() => $LabourRequestEditIndexDepartmentListToJson(this);
+  Map<String, dynamic> toJson() => $LabourRequestEditIndexDepartmentListToJson(this);
 
-	@override
-	String toString() {
-		return jsonEncode(this);
-	}
-}
+  @override
+  String toString() {
+    return jsonEncode(this);
+  }
+}

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

@@ -8,7 +8,6 @@ import 'package:domain/entity/response/attendance_entity.dart';
 import 'package:domain/entity/response/check_success_entity.dart';
 import 'package:domain/entity/response/hotel_info_entity.dart';
 import 'package:domain/entity/response/id_name_entity.dart';
-import 'package:domain/entity/response/labour_request_add_option_entity.dart';
 import 'package:domain/entity/response/labour_request_edit_index_entity.dart';
 import 'package:domain/entity/response/labour_request_index_entity.dart';
 import 'package:domain/entity/response/labour_request_list_entity.dart';
@@ -161,15 +160,6 @@ class JsonConvert {
     if (<IdNameEntity>[] is M) {
       return data.map<IdNameEntity>((Map<String, dynamic> e) => IdNameEntity.fromJson(e)).toList() as M;
     }
-    if (<LabourRequestAddOptionEntity>[] is M) {
-      return data.map<LabourRequestAddOptionEntity>((Map<String, dynamic> e) => LabourRequestAddOptionEntity.fromJson(e)).toList() as M;
-    }
-    if (<LabourRequestAddOptionTemplateList>[] is M) {
-      return data.map<LabourRequestAddOptionTemplateList>((Map<String, dynamic> e) => LabourRequestAddOptionTemplateList.fromJson(e)).toList() as M;
-    }
-    if (<LabourRequestAddOptionDepartmentList>[] is M) {
-      return data.map<LabourRequestAddOptionDepartmentList>((Map<String, dynamic> e) => LabourRequestAddOptionDepartmentList.fromJson(e)).toList() as M;
-    }
     if (<LabourRequestEditIndexEntity>[] is M) {
       return data.map<LabourRequestEditIndexEntity>((Map<String, dynamic> e) => LabourRequestEditIndexEntity.fromJson(e)).toList() as M;
     }
@@ -224,9 +214,6 @@ class JsonConvertClassCollection {
     (HotelInfoMenus).toString(): HotelInfoMenus.fromJson,
     (HotelInfoMenusChildren).toString(): HotelInfoMenusChildren.fromJson,
     (IdNameEntity).toString(): IdNameEntity.fromJson,
-    (LabourRequestAddOptionEntity).toString(): LabourRequestAddOptionEntity.fromJson,
-    (LabourRequestAddOptionTemplateList).toString(): LabourRequestAddOptionTemplateList.fromJson,
-    (LabourRequestAddOptionDepartmentList).toString(): LabourRequestAddOptionDepartmentList.fromJson,
     (LabourRequestEditIndexEntity).toString(): LabourRequestEditIndexEntity.fromJson,
     (LabourRequestEditIndexTemplateList).toString(): LabourRequestEditIndexTemplateList.fromJson,
     (LabourRequestEditIndexDepartmentList).toString(): LabourRequestEditIndexDepartmentList.fromJson,

+ 0 - 111
packages/cs_domain/lib/generated/json/labour_request_add_option_entity.g.dart

@@ -1,111 +0,0 @@
-import 'package:domain/generated/json/base/json_convert_content.dart';
-import 'package:domain/entity/response/labour_request_add_option_entity.dart';
-
-LabourRequestAddOptionEntity $LabourRequestAddOptionEntityFromJson(Map<String, dynamic> json) {
-  final LabourRequestAddOptionEntity labourRequestAddOptionEntity = LabourRequestAddOptionEntity();
-  final List<LabourRequestAddOptionTemplateList>? templateList = (json['template_list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<LabourRequestAddOptionTemplateList>(e) as LabourRequestAddOptionTemplateList).toList();
-  if (templateList != null) {
-    labourRequestAddOptionEntity.templateList = templateList;
-  }
-  final List<LabourRequestAddOptionDepartmentList>? departmentList = (json['department_list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<LabourRequestAddOptionDepartmentList>(e) as LabourRequestAddOptionDepartmentList).toList();
-  if (departmentList != null) {
-    labourRequestAddOptionEntity.departmentList = departmentList;
-  }
-  return labourRequestAddOptionEntity;
-}
-
-Map<String, dynamic> $LabourRequestAddOptionEntityToJson(LabourRequestAddOptionEntity entity) {
-  final Map<String, dynamic> data = <String, dynamic>{};
-  data['template_list'] = entity.templateList?.map((v) => v.toJson()).toList();
-  data['department_list'] = entity.departmentList?.map((v) => v.toJson()).toList();
-  return data;
-}
-
-extension LabourRequestAddOptionEntityExtension on LabourRequestAddOptionEntity {
-  LabourRequestAddOptionEntity copyWith({
-    List<LabourRequestAddOptionTemplateList>? templateList,
-    List<LabourRequestAddOptionDepartmentList>? departmentList,
-  }) {
-    return LabourRequestAddOptionEntity()
-      ..templateList = templateList ?? this.templateList
-      ..departmentList = departmentList ?? this.departmentList;
-  }
-}
-
-LabourRequestAddOptionTemplateList $LabourRequestAddOptionTemplateListFromJson(Map<String, dynamic> json) {
-  final LabourRequestAddOptionTemplateList labourRequestAddOptionTemplateList = LabourRequestAddOptionTemplateList();
-  final int? value = jsonConvert.convert<int>(json['value']);
-  if (value != null) {
-    labourRequestAddOptionTemplateList.value = value;
-  }
-  final String? txt = jsonConvert.convert<String>(json['txt']);
-  if (txt != null) {
-    labourRequestAddOptionTemplateList.txt = txt;
-  }
-  final String? selected = jsonConvert.convert<String>(json['selected']);
-  if (selected != null) {
-    labourRequestAddOptionTemplateList.selected = selected;
-  }
-  return labourRequestAddOptionTemplateList;
-}
-
-Map<String, dynamic> $LabourRequestAddOptionTemplateListToJson(LabourRequestAddOptionTemplateList entity) {
-  final Map<String, dynamic> data = <String, dynamic>{};
-  data['value'] = entity.value;
-  data['txt'] = entity.txt;
-  data['selected'] = entity.selected;
-  return data;
-}
-
-extension LabourRequestAddOptionTemplateListExtension on LabourRequestAddOptionTemplateList {
-  LabourRequestAddOptionTemplateList copyWith({
-    int? value,
-    String? txt,
-    String? selected,
-  }) {
-    return LabourRequestAddOptionTemplateList()
-      ..value = value ?? this.value
-      ..txt = txt ?? this.txt
-      ..selected = selected ?? this.selected;
-  }
-}
-
-LabourRequestAddOptionDepartmentList $LabourRequestAddOptionDepartmentListFromJson(Map<String, dynamic> json) {
-  final LabourRequestAddOptionDepartmentList labourRequestAddOptionDepartmentList = LabourRequestAddOptionDepartmentList();
-  final int? value = jsonConvert.convert<int>(json['value']);
-  if (value != null) {
-    labourRequestAddOptionDepartmentList.value = value;
-  }
-  final String? txt = jsonConvert.convert<String>(json['txt']);
-  if (txt != null) {
-    labourRequestAddOptionDepartmentList.txt = txt;
-  }
-  final String? selected = jsonConvert.convert<String>(json['selected']);
-  if (selected != null) {
-    labourRequestAddOptionDepartmentList.selected = selected;
-  }
-  return labourRequestAddOptionDepartmentList;
-}
-
-Map<String, dynamic> $LabourRequestAddOptionDepartmentListToJson(LabourRequestAddOptionDepartmentList entity) {
-  final Map<String, dynamic> data = <String, dynamic>{};
-  data['value'] = entity.value;
-  data['txt'] = entity.txt;
-  data['selected'] = entity.selected;
-  return data;
-}
-
-extension LabourRequestAddOptionDepartmentListExtension on LabourRequestAddOptionDepartmentList {
-  LabourRequestAddOptionDepartmentList copyWith({
-    int? value,
-    String? txt,
-    String? selected,
-  }) {
-    return LabourRequestAddOptionDepartmentList()
-      ..value = value ?? this.value
-      ..txt = txt ?? this.txt
-      ..selected = selected ?? this.selected;
-  }
-}

+ 2 - 2
packages/cs_domain/lib/generated/json/labour_request_edit_index_entity.g.dart

@@ -38,8 +38,8 @@ Map<String, dynamic> $LabourRequestEditIndexEntityToJson(LabourRequestEditIndexE
   data['job_start'] = entity.jobStart;
   data['job_end'] = entity.jobEnd;
   data['need_num'] = entity.needNum;
-  data['template_list'] = entity.templateList?.map((v) => v.toJson()).toList();
-  data['department_list'] = entity.departmentList?.map((v) => v.toJson()).toList();
+  data['template_list'] = entity.templateList.map((v) => v.toJson()).toList();
+  data['department_list'] = entity.departmentList.map((v) => v.toJson()).toList();
   return data;
 }
 

+ 6 - 5
packages/cs_domain/lib/repository/labour_repository.dart

@@ -1,4 +1,3 @@
-import 'package:domain/entity/response/labour_request_add_option_entity.dart';
 import 'package:domain/entity/response/labour_request_edit_index_entity.dart';
 import 'package:domain/entity/response/labour_request_index_entity.dart';
 import 'package:domain/entity/response/labour_request_list_entity.dart';
@@ -85,11 +84,12 @@ class LabourRepository extends GetxService {
   }
 
   /// 添加用工的选项
-  Future<HttpResult<LabourRequestAddOptionEntity>> fetchLabourRequestAddOption({
+  Future<HttpResult<LabourRequestEditIndexEntity>> fetchLabourRequestAddOption({
     CancelToken? cancelToken,
   }) async {
     final result = await httpProvider.requestNetResult(
       ApiConstants.apiLabourRequestAddOption,
+      isShowLoadingDialog:true,
       cancelToken: cancelToken,
     );
 
@@ -97,9 +97,9 @@ class LabourRepository extends GetxService {
     if (result.isSuccess) {
       //重新赋值data或list
       final json = result.getDataJson();
-      var data = LabourRequestAddOptionEntity.fromJson(json!);
+      var data = LabourRequestEditIndexEntity.fromJson(json!);
       //重新赋值data或list
-      return result.convert<LabourRequestAddOptionEntity>(data: data);
+      return result.convert<LabourRequestEditIndexEntity>(data: data);
     }
     return result.convert();
   }
@@ -140,7 +140,7 @@ class LabourRepository extends GetxService {
     return result.convert();
   }
 
-  /// 用工的编辑详情和选项
+  /// 用工的编辑详情
   Future<HttpResult<LabourRequestEditIndexEntity>> fetchLabourRequestEditDetail(
     String? requestId, {
     CancelToken? cancelToken,
@@ -152,6 +152,7 @@ class LabourRepository extends GetxService {
     final result = await httpProvider.requestNetResult(
       ApiConstants.apiLabourRequestEditDetail,
       params: params,
+      isShowLoadingDialog:true,
       cancelToken: cancelToken,
     );
 

+ 1 - 0
packages/cs_resources/lib/constants/color_constants.dart

@@ -24,6 +24,7 @@ class ColorConstants {
   static const Color whitefe = Color(0xffFEFEFE);
   static const Color greye0 = Color(0xffE0E0E0);
   static const Color textGrayAECAE5 = Color(0xFFAECAE5);
+  static const Color textBlackHint = Color(0xFF757575);
   static const Color textGray9EB0C1 = Color(0xFF9EB0C1);
   static const Color textYellowFFBB1B = Color(0xFFFFBB1B);
 

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

@@ -13,6 +13,8 @@ const Map<String, String> en_US = {
   'Job Date:': 'Job Date:',
   'Start Time:': 'Start Time:',
   'End Time:': 'End Time:',
+  'Start Time': 'Start Time',
+  'End Time': 'End Time',
   'Name:': 'Name:',
   'Reset': 'Reset',
   'Start Date': 'Start Date',
@@ -71,6 +73,19 @@ const Map<String, String> en_US = {
   'Created At:': 'Created At:',
   'Published': 'Published',
   'Unpublished': 'Unpublished',
+  'Choose Outlet': 'Choose Outlet',
+  'Choose Status': 'Choose Status',
+  'Choose Job Title': 'Choose Job Title',
+  'Job Title': 'Job Title',
+  'Job Start Time': 'Job Start Time',
+  'Job End Time': 'Job End Time',
+  'No. of Staff': 'No. of Staff',
+  'Enter No. of Staff': 'Enter No. of Staff',
+  'Choose Start Date': 'Choose Start Date',
+  'Choose End Date': 'Choose End Date',
+  'Add Labour Requisition': 'Add Labour Requisition',
+  'Edit Labour Requisition': 'Edit Labour Requisition',
+  'Labour Requisition': 'Labour Requisition',
 
   //插件的国际化
   'Pull to refresh': 'Pull to refresh',

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

@@ -13,6 +13,8 @@ const Map<String, String> zh_CN = {
   'Job Date:': '工作日期:',
   'Start Time:': '开始时间:',
   'End Time:': '结束时间:',
+  'Start Time': '开始时间',
+  'End Time': '结束时间',
   'Name:': '姓名:',
   'Reset': '重置',
   'Start Date': '开始日期',
@@ -65,12 +67,25 @@ const Map<String, String> zh_CN = {
   'Detail': '详情',
   'Outlet:': '部门:',
   'DateTime:': '日期与时间:',
-  'No. of Staff:': '需求人数:',
+  'No. of Staff:': '需要的人员数量:',
   'Status:': '状态:',
   'Publish Status:': '发布状态:',
   'Created At:': '创建时间:',
   'Published': '已发布',
   'Unpublished': '未发布',
+  'Choose Outlet': '请选择部门',
+  'Choose Status': '请选择状态',
+  'Choose Job Title': '请选择工作标题',
+  'Job Title': '工作标题',
+  'Job Start Time': '工作开始时间',
+  'Job End Time': '工作结束时间',
+  'No. of Staff': '需要的人员数量',
+  'Enter No. of Staff': '请输入需要的人员数量',
+  'Choose Start Date': '请选择开始日期',
+  'Choose End Date': '请选择结束日期',
+  'Add Labour Requisition': '新增用工请求',
+  'Edit Labour Requisition': '编辑用工请求',
+  'Labour Requisition': '用工请求',
 
   //插件的国际化
   'Pull to refresh': '下拉刷新',

+ 4 - 0
packages/cs_widgets/lib/my_text_field.dart

@@ -1,6 +1,7 @@
 import 'dart:async';
 import 'dart:core';
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
 import 'package:get/get_utils/src/extensions/widget_extensions.dart';
 import 'package:cs_resources/constants/color_constants.dart';
 import 'ext/ex_widget.dart';
@@ -43,6 +44,7 @@ class MyTextField extends StatelessWidget {
   InputDecoration? decoration;
   TextEditingController? controller;
   TextInputAction textInputAction = TextInputAction.done;
+  List<TextInputFormatter>? inputFormatters;
   Function? onChanged;
   Function? onSubmit;
   final ClickType changeActionType; //默认没有点击类型
@@ -83,6 +85,7 @@ class MyTextField extends StatelessWidget {
     this.margin = EdgeInsets.zero, //整体布局的Margin
     this.decoration, //自定义装饰
     this.controller, //控制器
+    this.inputFormatters, //输入格式控制
     this.textInputAction = TextInputAction.done, //默认的行为是Done(完成)
     this.onChanged, //输入改变回调
     this.onSubmit, //完成行为的回调(默认行为是Done完成)
@@ -128,6 +131,7 @@ class MyTextField extends StatelessWidget {
               cursorColor: DarkThemeUtil.multiColors(cursorColor, darkColor: Colors.white),
               autofocus: autofocus!,
               controller: controller,
+              inputFormatters: inputFormatters,
               decoration: decoration ??
                   InputDecoration(
                     hintText: hintText,

+ 10 - 4
packages/cs_widgets/lib/my_text_view.dart

@@ -28,7 +28,9 @@ import 'ext/ex_widget.dart';
 class MyTextView extends StatelessWidget {
   double? fontSize = 0;
   Color? textColor = Colors.black;
+  Color? textHintColor;
   String content = "";
+  String? hint;
   bool? isTextEllipsis = false;
   bool? isFontLight;
   bool? isFontRegular;
@@ -74,6 +76,8 @@ class MyTextView extends StatelessWidget {
     this.paddingTop,
     this.paddingBottom,
     this.paddingRight,
+    this.textHintColor,
+    this.hint,
     this.paddingLeft,
     this.cornerRadius,
     this.borderColor,
@@ -184,18 +188,20 @@ class MyTextView extends StatelessWidget {
   //真正的Tex控件配置
   Widget _childText() {
     return Text(
-      content,
+      content.isEmpty ? hint ?? content : content,
       textAlign: textAlign ?? TextAlign.start,
       maxLines: maxLines,
       style: TextStyle(
-        color: textColor,
+        color: content.isEmpty ? textHintColor ?? textColor : textColor,
         fontSize: fontSize ?? 14,
         fontWeight: fontWeight,
         fontStyle: fontStyle,
         overflow: isTextEllipsis ?? false ? TextOverflow.ellipsis : TextOverflow.clip,
+        // 可选,设置下划线的颜色
         decoration: textDecoration,
-        decorationColor: decorationColor, // 可选,设置下划线的颜色
-        decorationThickness: decorationThickness, // 可选,设置下划线的粗细
+        decorationColor: decorationColor,
+        // 可选,设置下划线的粗细
+        decorationThickness: decorationThickness,
         decorationStyle: decorationStyle, // 可选,设置下划线的样式
       ),
     );

+ 6 - 4
packages/cs_widgets/lib/shatter/form_require_text.dart

@@ -5,16 +5,18 @@ import 'package:flutter/material.dart';
  * 使用富文本的方式实现
  */
 class FormRequireText extends StatelessWidget {
-
   final String text;
+  FontWeight? fontWeight = FontWeight.w400;
+  Color? textColor = Colors.white;
+  double? fontSize = 15.0;
 
-  FormRequireText({required this.text});
+  FormRequireText({required this.text, this.textColor, this.fontSize, this.fontWeight});
 
   @override
   Widget build(BuildContext context) {
     return RichText(
       text: TextSpan(
-        style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.w400, color: Colors.white),
+        style: TextStyle(fontSize: fontSize, fontWeight: fontWeight, color: textColor),
         children: <TextSpan>[
           TextSpan(
             text: text,
@@ -27,4 +29,4 @@ class FormRequireText extends StatelessWidget {
       ),
     );
   }
-}
+}

+ 23 - 6
packages/cs_widgets/lib/shatter/round_my_text_field.dart

@@ -1,5 +1,6 @@
 import 'package:cs_resources/constants/color_constants.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
 import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
 
 import '../my_text_field.dart';
@@ -16,11 +17,18 @@ class CustomTextField extends StatelessWidget {
   final double marginRight;
   final double paddingRight;
   final double paddingLeft;
+  final double paddingTop;
+  final double paddingBottom;
+  final double height;
+  final double fontSize;
   final TextInputType textInputType;
   final String? errorText;
   final TextInputAction textInputAction;
   final Function onSubmit;
   final Map<String, dynamic> formData;
+  List<TextInputFormatter>? inputFormatters;
+  bool? enabled;
+  Color? fillBackgroundColor;
 
   CustomTextField({
     required this.formKey,
@@ -31,9 +39,16 @@ class CustomTextField extends StatelessWidget {
     this.marginRight = 15,
     this.paddingRight = 15,
     this.paddingLeft = 15,
+    this.paddingTop = 2.5,
+    this.paddingBottom = 2.5,
     this.textInputType = TextInputType.text,
     this.errorText,
+    this.fontSize = 15.0,
+    this.height = 50.0,
     this.textInputAction = TextInputAction.next,
+    this.inputFormatters,
+    this.enabled,
+    this.fillBackgroundColor = ColorConstants.dividerBar,
   });
 
   @override
@@ -43,27 +58,29 @@ class CustomTextField extends StatelessWidget {
         formKey,
         formData[formKey]!['value'],
         hintText: formData[formKey]!['hintText'],
-        hintStyle: const TextStyle(
+        hintStyle: TextStyle(
           color: ColorConstants.textGrayAECAE5,
-          fontSize: 15.0,
+          fontSize: fontSize,
           fontWeight: FontWeight.w400,
         ),
         controller: formData[formKey]['controller'],
         focusNode: formData[formKey]['focusNode'],
         margin: EdgeInsets.only(left: marginLeft, right: marginRight, top: marginTop),
         showDivider: false,
-        fillBackgroundColor: ColorConstants.dividerBar,
+        fillBackgroundColor: fillBackgroundColor,
         fillCornerRadius: 5,
-        padding: EdgeInsets.only(left: paddingLeft, right: paddingRight, top: 2.5, bottom: 2.5),
-        height: 50,
+        padding: EdgeInsets.only(left: paddingLeft, right: paddingRight, top: paddingTop, bottom: paddingBottom),
+        height: height,
         style: TextStyle(
           color: ColorConstants.white,
-          fontSize: 15.0,
+          fontSize: fontSize,
           fontWeight: FontWeight.w400,
         ),
         inputType: textInputType,
         textInputAction: textInputAction,
+        enabled: enabled,
         onSubmit: onSubmit,
+        inputFormatters: inputFormatters,
         cursorColor: ColorConstants.white,
         obscureText: formData[formKey] != null ? formData[formKey]['obsecure'] : false,
         errorText: errorText,