Przeglądaj źródła

Labour Request 的 Job Title 的相关接口字段调整

liukai 1 tydzień temu
rodzic
commit
56cdb615c4

+ 39 - 2
packages/cpt_sg/lib/modules/labour/job_template_add/job_template_add_controller.dart

@@ -1,3 +1,4 @@
+import 'package:domain/entity/response/index_option_entity.dart';
 import 'package:domain/entity/response/job_template_edit_index_entity.dart';
 import 'package:domain/repository/labour_sg_repository.dart';
 import 'package:get/get.dart';
@@ -7,6 +8,7 @@ import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
 import 'package:plugin_platform/http/http_result.dart';
 import 'package:shared/utils/log_utils.dart';
 import 'package:shared/utils/util.dart';
+import 'package:widgets/picker/option_pick_util.dart';
 
 import 'job_template_add_state.dart';
 
@@ -45,12 +47,16 @@ class JobTemplateAddController extends GetxController with DioCancelableMixin {
 
       //默认赋值
       state.selectedAgeList = state.indexEntity?.ageList.where((e) => e.checked == "checked").map((e) => e.value!).toList() ?? [];
-      Log.d("当前选中的年龄1:${ state.selectedAgeList}");
+      Log.d("当前选中的年龄1:${state.selectedAgeList}");
       state.selectedLanguageList = state.indexEntity?.languageList.where((e) => e.checked == "checked").map((e) => e.value!).toList() ?? [];
-      Log.d("当前选中的语言1:${ state.selectedLanguageList}");
+      Log.d("当前选中的语言1:${state.selectedLanguageList}");
       state.foodCert = state.indexEntity?.withFoodCert.toString();
       // state.gender = state.indexEntity?.sexList.firstWhere((e) => e.checked == "checked").value;
 
+      state.positionList = state.indexEntity?.positionList ?? [];
+      state.positionId = state.indexEntity?.positionList.firstWhere((e) => e.selected == "selected", orElse: () => IndexOptionEntity()).value ?? "";
+      state.positionName = state.indexEntity?.positionList.firstWhere((e) => e.selected == "selected", orElse: () => IndexOptionEntity()).txt ?? "";
+
       update();
     } else {
       ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
@@ -77,11 +83,17 @@ class JobTemplateAddController extends GetxController with DioCancelableMixin {
       return;
     }
 
+    if (Utils.isEmpty(state.positionId)) {
+      ToastEngine.show("Choose Position".tr);
+      return;
+    }
+
     Future<HttpResult> taskFuture;
     if (Utils.isNotEmpty(state.templateId) && state.templateId != "0") {
       taskFuture = _labourRepository.editJobTemplateSubmit(
         state.templateId,
         templateName,
+        state.positionId,
         contact,
         contactNo,
         desc,
@@ -95,6 +107,7 @@ class JobTemplateAddController extends GetxController with DioCancelableMixin {
     } else {
       taskFuture = _labourRepository.addJobTemplateSubmit(
         templateName,
+        state.positionId,
         contact,
         contactNo,
         desc,
@@ -127,4 +140,28 @@ class JobTemplateAddController extends GetxController with DioCancelableMixin {
     super.onReady();
     _fetchAddEditIndexDetail();
   }
+
+  // 选择职位
+  void pickPosition() {
+    int selectedIndex;
+    if (state.positionId == null) {
+      selectedIndex = 0;
+    } else {
+      selectedIndex = state.positionList.indexWhere((department) => department.value.toString() == state.positionId);
+    }
+
+    if (selectedIndex < 0) {
+      selectedIndex = 0;
+    }
+
+    OptionPickerUtil.showCupertinoOptionPicker(
+      items: state.positionList.map((e) => e.txt!).toList(growable: false),
+      initialSelectIndex: selectedIndex,
+      onPickerChanged: (_, index) {
+        state.positionName = state.positionList[index].txt;
+        state.positionId = state.positionList[index].value;
+        update();
+      },
+    );
+  }
 }

+ 39 - 0
packages/cpt_sg/lib/modules/labour/job_template_add/job_template_add_page.dart

@@ -1,4 +1,5 @@
 import 'package:cs_resources/constants/color_constants.dart';
+import 'package:cs_resources/generated/assets.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:shared/utils/log_utils.dart';
@@ -7,6 +8,7 @@ import 'package:shared/utils/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/custom_check_box.dart';
@@ -99,6 +101,43 @@ class JobTemplateAddPage extends BaseStatelessPage<JobTemplateAddController> {
                         marginTop: 10,
                       ),
 
+                      //必选 - 选择职位
+                      FormRequireText(text: "agency_position".tr).marginOnly(left: 15, top: 15),
+
+                      //下拉选
+                      Container(
+                        padding: const EdgeInsets.only(left: 16, right: 10),
+                        margin: const EdgeInsets.only(top: 10, left: 15, right: 15),
+                        height: 45,
+                        decoration: BoxDecoration(
+                          color: const Color(0xFF4DCFF6).withOpacity(0.2),
+                          borderRadius: const BorderRadius.all(Radius.circular(5)),
+                        ),
+                        child: Row(
+                          mainAxisSize: MainAxisSize.max,
+                          crossAxisAlignment: CrossAxisAlignment.center,
+                          mainAxisAlignment: MainAxisAlignment.start,
+                          children: [
+                            MyTextView(
+                              state.positionName ?? "",
+                              fontSize: 14,
+                              hint: "Choose Position".tr,
+                              textHintColor: ColorConstants.textGrayAECAE5,
+                              isFontMedium: true,
+                              textColor: ColorConstants.white,
+                            ).expanded(),
+
+                            //下拉选图标
+                            const MyAssetImage(Assets.baseServiceTriangleDropDownIcon, width: 11.5, height: 6.28),
+                          ],
+                        ),
+                      ).onTap(() {
+                        if (state.positionList.isNotEmpty) {
+                          FocusScope.of(context).unfocus();
+                          controller.pickPosition();
+                        }
+                      }),
+
                       //年龄
                       MyTextView(
                         "Age".tr,

+ 5 - 0
packages/cpt_sg/lib/modules/labour/job_template_add/job_template_add_state.dart

@@ -1,3 +1,4 @@
+import 'package:domain/entity/response/index_option_entity.dart';
 import 'package:domain/entity/response/job_template_edit_index_entity.dart';
 import 'package:domain/entity/response/job_template_s_g_entity.dart';
 import 'package:flutter/material.dart';
@@ -57,4 +58,8 @@ class JobTemplateAddState {
   String? gender;
   String? foodCert;
 
+  List<IndexOptionEntity> positionList = [];
+  String? positionName;
+  String? positionId;
+
 }

+ 3 - 0
packages/cs_domain/lib/entity/response/job_template_edit_index_entity.dart

@@ -1,3 +1,4 @@
+import 'package:domain/entity/response/index_option_entity.dart';
 import 'package:domain/generated/json/base/json_field.dart';
 import 'package:domain/generated/json/job_template_edit_index_entity.g.dart';
 import 'dart:convert';
@@ -23,6 +24,8 @@ class JobTemplateEditIndexEntity {
 	List<JobTemplateEditIndexSexList> sexList = [];
 	@JSONField(name: "language_list")
 	List<JobTemplateEditIndexLanguageList> languageList = [];
+	@JSONField(name: "position_list")
+	List<IndexOptionEntity> positionList = [];
 
 	JobTemplateEditIndexEntity();
 

+ 11 - 1
packages/cs_domain/lib/generated/json/job_template_edit_index_entity.g.dart

@@ -1,5 +1,7 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/response/job_template_edit_index_entity.dart';
+import 'package:domain/entity/response/index_option_entity.dart';
+
 
 JobTemplateEditIndexEntity $JobTemplateEditIndexEntityFromJson(Map<String, dynamic> json) {
   final JobTemplateEditIndexEntity jobTemplateEditIndexEntity = JobTemplateEditIndexEntity();
@@ -50,6 +52,11 @@ JobTemplateEditIndexEntity $JobTemplateEditIndexEntityFromJson(Map<String, dynam
   if (languageList != null) {
     jobTemplateEditIndexEntity.languageList = languageList;
   }
+  final List<IndexOptionEntity>? positionList = (json['position_list'] as List<dynamic>?)?.map(
+          (e) => jsonConvert.convert<IndexOptionEntity>(e) as IndexOptionEntity).toList();
+  if (positionList != null) {
+    jobTemplateEditIndexEntity.positionList = positionList;
+  }
   return jobTemplateEditIndexEntity;
 }
 
@@ -66,6 +73,7 @@ Map<String, dynamic> $JobTemplateEditIndexEntityToJson(JobTemplateEditIndexEntit
   data['age_list'] = entity.ageList.map((v) => v.toJson()).toList();
   data['sex_list'] = entity.sexList.map((v) => v.toJson()).toList();
   data['language_list'] = entity.languageList.map((v) => v.toJson()).toList();
+  data['position_list'] = entity.positionList.map((v) => v.toJson()).toList();
   return data;
 }
 
@@ -82,6 +90,7 @@ extension JobTemplateEditIndexEntityExtension on JobTemplateEditIndexEntity {
     List<JobTemplateEditIndexAgeList>? ageList,
     List<JobTemplateEditIndexSexList>? sexList,
     List<JobTemplateEditIndexLanguageList>? languageList,
+    List<IndexOptionEntity>? positionList,
   }) {
     return JobTemplateEditIndexEntity()
       ..templateId = templateId ?? this.templateId
@@ -94,7 +103,8 @@ extension JobTemplateEditIndexEntityExtension on JobTemplateEditIndexEntity {
       ..withFoodCert = withFoodCert ?? this.withFoodCert
       ..ageList = ageList ?? this.ageList
       ..sexList = sexList ?? this.sexList
-      ..languageList = languageList ?? this.languageList;
+      ..languageList = languageList ?? this.languageList
+      ..positionList = positionList ?? this.positionList;
   }
 }
 

+ 5 - 1
packages/cs_domain/lib/repository/labour_sg_repository.dart

@@ -354,6 +354,7 @@ class LabourSGRepository extends GetxService {
   /// 添加工作模板的提交
   Future<HttpResult> addJobTemplateSubmit(
     String? name,
+    String? positionId,
     String? contact,
     String? contactNo,
     String? description,
@@ -367,6 +368,7 @@ class LabourSGRepository extends GetxService {
     //参数
     Map<String, String> params = {};
     params['name'] = name ?? "";
+    params['position_id'] = positionId ?? "";
 
     if (!Utils.isEmpty(contact)) {
       params["contact"] = contact!;
@@ -421,6 +423,7 @@ class LabourSGRepository extends GetxService {
   Future<HttpResult> editJobTemplateSubmit(
     String? templateId,
     String? name,
+    String? positionId,
     String? contact,
     String? contactNo,
     String? description,
@@ -433,8 +436,9 @@ class LabourSGRepository extends GetxService {
   }) async {
     //参数
     Map<String, String> params = {};
-    params['name'] = name ?? "";
     params['template_id'] = templateId ?? "";
+    params['name'] = name ?? "";
+    params['position_id'] = positionId ?? "";
 
     if (!Utils.isEmpty(contact)) {
       params["contact"] = contact!;