From fea063f5c7fdf79d56ada2dd2b8045a44ca2db44 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 08 八月 2025 15:17:55 +0800
Subject: [PATCH] feat: 任务

---
 src/views/EmploymentManage/EmploymentSignList.vue                 |    4 
 src/views/EmploymentManage/constants/columns.ts                   |   20 
 src/views/ServiceChargeManage/ServiceChargeDetail.vue             |    4 
 src/views/EmploymentManage/EmploymentManage.vue                   |  121 ++-
 src/views/FinanceManage/components/DistributionDetailView.vue     |    3 
 src/hooks/index.ts                                                |    2 
 src/services/api/task.ts                                          |   75 ++
 src/views/FinanceManage/components/UsageDetailView.vue            |    3 
 auto-imports.d.ts                                                 |   65 ++
 src/views/EmploymentManage/components/AddOrEditEmploymentView.vue |  213 +++++-
 src/views/EmploymentManage/CheckManage.vue                        |    3 
 src/constants/apiEnum.ts                                          |  100 +++
 src/constants/index.ts                                            |    1 
 types/global.d.ts                                                 |    9 
 src/constants/dic.ts                                              |   60 ++
 src/hooks/dic.ts                                                  |  252 ++++++++
 src/constants/task.ts                                             |   49 +
 .eslintrc-auto-import.json                                        |   30 +
 src/services/api/typings.d.ts                                     |  397 ++++++++++++
 src/components/WeMap/WeMap.vue                                    |    1 
 src/services/api/dictionary.ts                                    |   51 +
 src/views/ServiceChargeManage/ServiceChargeManage.vue             |    3 
 src/views/EmploymentManage/EmploymentManageArrange.vue            |    4 
 types/api.d.ts                                                    |   15 
 src/views/FlexJobManage/FlexJobManage.vue                         |    4 
 /dev/null                                                         |   66 --
 src/services/api/index.ts                                         |   22 
 src/views/EmploymentManage/components/CheckManageDialog.vue       |    3 
 src/utils/common/area.ts                                          |   11 
 src/services/api/auth.ts                                          |   12 
 src/services/api/user.ts                                          |   81 ++
 31 files changed, 1,416 insertions(+), 268 deletions(-)

diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index e898675..564f90a 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -3,14 +3,20 @@
     "AppLocalConfig": true,
     "AppType": true,
     "AreaType": true,
+    "CategoryCode": true,
+    "CertificateTypeCodeEnum": true,
     "Component": true,
     "ComponentPublicInstance": true,
     "ComputedRef": true,
     "DirectiveBinding": true,
     "EditorType": true,
     "EditorTypeText": true,
+    "EducationCodeEnum": true,
     "EffectScope": true,
     "EmptyTextEditorItem": true,
+    "EnumBillingMethod": true,
+    "EnumBillingMethodText": true,
+    "EnumBillingMethodUnitText": true,
     "EnumClientType": true,
     "EnumClientTypeText": true,
     "EnumMenuType": true,
@@ -22,8 +28,23 @@
     "EnumRoleWebApiDataPower": true,
     "EnumRoleWebApiDataPowerText": true,
     "EnumRoleWebApiDataPowerTextForFilter": true,
+    "EnumSettlementCycle": true,
+    "EnumSettlementCycleText": true,
     "EnumSmsAccess": true,
-    "EnumUserInfoStatus": true,
+    "EnumSmsTemplateType": true,
+    "EnumTaskCheckReceiveStatus": true,
+    "EnumTaskRecommendStatus": true,
+    "EnumTaskRecommendStatusText": true,
+    "EnumTaskReleaseStatus": true,
+    "EnumTaskReleaseStatusText": true,
+    "EnumTaskReleaseStatusTextForTip": true,
+    "EnumTaskSettlementStatus": true,
+    "EnumTaskStatus": true,
+    "EnumTaskStatusText": true,
+    "EnumUserGender": true,
+    "EnumUserGenderText": true,
+    "EnumUserGenderTextForEdit": true,
+    "EnumUserStatus": true,
     "EnumUserType": true,
     "EnumUserTypeText": true,
     "ExtractDefaultPropTypes": true,
@@ -40,6 +61,7 @@
     "GlobalEvent": true,
     "GlobalEventContext": true,
     "GlobalEventListener": true,
+    "IdentityCodeEnum": true,
     "InjectionKey": true,
     "MaybeRef": true,
     "MaybeRefOrGetter": true,
@@ -72,6 +94,7 @@
     "ThemeColors": true,
     "ThemeColorsType": true,
     "VNode": true,
+    "WelfareCodeEnum": true,
     "WritableComputedRef": true,
     "acceptHMRUpdate": true,
     "computed": true,
@@ -136,11 +159,16 @@
     "triggerRef": true,
     "unref": true,
     "useAccess": true,
+    "useAllAreaList": true,
+    "useArea": true,
+    "useAreaByCascader": true,
     "useAttrs": true,
     "useClearSubModule": true,
     "useCopyToClipboard": true,
     "useCssModule": true,
     "useCssVars": true,
+    "useDictionaryDataSelect": true,
+    "useGetDictionaryCategorySelect": true,
     "useGlobalEventContext": true,
     "useGlobalEventProvide": true,
     "useGroupColumns": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index eb2b04b..89fcfda 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -9,12 +9,18 @@
   const AppLocalConfig: typeof import('./src/constants/app')['AppLocalConfig']
   const AppType: typeof import('./src/constants/app')['AppType']
   const AreaType: typeof import('./src/constants/enum')['AreaType']
+  const CategoryCode: typeof import('./src/constants/dic')['CategoryCode']
+  const CertificateTypeCodeEnum: typeof import('./src/constants/dic')['CertificateTypeCodeEnum']
   const CommonAnnexTableColumns: typeof import('@/constants')['CommonAnnexTableColumns']
   const EditorType: typeof import('./src/constants/editor')['EditorType']
   const EditorTypeText: typeof import('./src/constants/editor')['EditorTypeText']
+  const EducationCodeEnum: typeof import('./src/constants/dic')['EducationCodeEnum']
   const EffectScope: typeof import('vue')['EffectScope']
   const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
   const EmptyTextEditorItem: typeof import('./src/constants/editor')['EmptyTextEditorItem']
+  const EnumBillingMethod: typeof import('./src/constants/apiEnum')['EnumBillingMethod']
+  const EnumBillingMethodText: typeof import('./src/constants/task')['EnumBillingMethodText']
+  const EnumBillingMethodUnitText: typeof import('./src/constants/task')['EnumBillingMethodUnitText']
   const EnumClientType: typeof import('./src/constants/apiEnum')['EnumClientType']
   const EnumClientTypeText: typeof import('./src/constants/apiEnumText')['EnumClientTypeText']
   const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType']
@@ -26,8 +32,25 @@
   const EnumRoleWebApiDataPower: typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']
   const EnumRoleWebApiDataPowerText: typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerText']
   const EnumRoleWebApiDataPowerTextForFilter: typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerTextForFilter']
+  const EnumSettlementCycle: typeof import('./src/constants/apiEnum')['EnumSettlementCycle']
+  const EnumSettlementCycleText: typeof import('./src/constants/task')['EnumSettlementCycleText']
   const EnumSmsAccess: typeof import('./src/constants/apiEnum')['EnumSmsAccess']
+  const EnumSmsTemplateType: typeof import('./src/constants/apiEnum')['EnumSmsTemplateType']
+  const EnumTaskCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']
+  const EnumTaskRecommendStatus: typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']
+  const EnumTaskRecommendStatusText: typeof import('./src/constants/task')['EnumTaskRecommendStatusText']
+  const EnumTaskReleaseStatus: typeof import('./src/constants/apiEnum')['EnumTaskReleaseStatus']
+  const EnumTaskReleaseStatusText: typeof import('./src/constants/task')['EnumTaskReleaseStatusText']
+  const EnumTaskReleaseStatusTextForTip: typeof import('./src/constants/task')['EnumTaskReleaseStatusTextForTip']
+  const EnumTaskSettlementStatus: typeof import('./src/constants/apiEnum')['EnumTaskSettlementStatus']
+  const EnumTaskStatus: typeof import('./src/constants/apiEnum')['EnumTaskStatus']
+  const EnumTaskStatusText: typeof import('./src/constants/task')['EnumTaskStatusText']
+  const EnumUserGender: typeof import('./src/constants/apiEnum')['EnumUserGender']
+  const EnumUserGenderText: typeof import('./src/constants/task')['EnumUserGenderText']
+  const EnumUserGenderTextForEdit: typeof import('./src/constants/task')['EnumUserGenderTextForEdit']
+  const EnumUserGenderWithAllText: typeof import('./src/constants/task')['EnumUserGenderWithAllText']
   const EnumUserInfoStatus: typeof import('./src/constants/apiEnum')['EnumUserInfoStatus']
+  const EnumUserStatus: typeof import('./src/constants/apiEnum')['EnumUserStatus']
   const EnumUserType: typeof import('./src/constants/apiEnum')['EnumUserType']
   const EnumUserTypeText: typeof import('./src/constants/apiEnumText')['EnumUserTypeText']
   const FastButtonMap: typeof import('./src/constants/module')['FastButtonMap']
@@ -37,6 +60,7 @@
   const FlexEnterpriseSettingStatus: typeof import('./src/constants/enum')['FlexEnterpriseSettingStatus']
   const Gender: typeof import('./src/constants/enum')['Gender']
   const GenderText: typeof import('./src/constants/enum')['GenderText']
+  const IdentityCodeEnum: typeof import('./src/constants/dic')['IdentityCodeEnum']
   const MenuSvgIconMap: typeof import('./src/constants/menu')['MenuSvgIconMap']
   const ModuleColumns: typeof import('./src/constants/module')['ModuleColumns']
   const MyRegExp: typeof import('./src/constants/regExp')['MyRegExp']
@@ -58,6 +82,7 @@
   const SubModuleType: typeof import('./src/constants/module')['SubModuleType']
   const TempFolderPath: typeof import('./src/constants/enum')['TempFolderPath']
   const ThemeColors: typeof import('./src/constants/theme')['ThemeColors']
+  const WelfareCodeEnum: typeof import('./src/constants/dic')['WelfareCodeEnum']
   const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
   const computed: typeof import('vue')['computed']
   const copyTextToClipboard: typeof import('./src/hooks/useCopyToClipboard')['copyTextToClipboard']
@@ -121,11 +146,16 @@
   const triggerRef: typeof import('vue')['triggerRef']
   const unref: typeof import('vue')['unref']
   const useAccess: typeof import('./src/hooks/useAccess')['useAccess']
+  const useAllAreaList: typeof import('./src/hooks/dic')['useAllAreaList']
+  const useArea: typeof import('./src/hooks/dic')['useArea']
+  const useAreaByCascader: typeof import('./src/hooks/dic')['useAreaByCascader']
   const useAttrs: typeof import('vue')['useAttrs']
   const useClearSubModule: typeof import('./src/hooks/useAccess')['useClearSubModule']
   const useCopyToClipboard: typeof import('./src/hooks/useCopyToClipboard')['useCopyToClipboard']
   const useCssModule: typeof import('vue')['useCssModule']
   const useCssVars: typeof import('vue')['useCssVars']
+  const useDictionaryDataSelect: typeof import('./src/hooks/dic')['useDictionaryDataSelect']
+  const useGetDictionaryCategorySelect: typeof import('./src/hooks/dic')['useGetDictionaryCategorySelect']
   const useGlobalEventContext: typeof import('./src/hooks/useEvent')['useGlobalEventContext']
   const useGlobalEventProvide: typeof import('./src/hooks/useEvent')['useGlobalEventProvide']
   const useGroupColumns: typeof import('./src/hooks/useAccess')['useGroupColumns']
@@ -161,8 +191,11 @@
   export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
   import('vue')
   // @ts-ignore
-  export type { EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSmsAccess, EnumUserInfoStatus, EnumUserType, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSmsAccess, EnumUserInfoStatus, EnumUserType } from './src/constants/apiEnum'
+  export type { EnumBillingMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsTemplateType, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumUserGender, EnumUserStatus, EnumUserType, EnumBillingMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsTemplateType, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumUserGender, EnumUserStatus, EnumUserType } from './src/constants/apiEnum'
   import('./src/constants/apiEnum')
+  // @ts-ignore
+  export type { CategoryCode, IdentityCodeEnum, EducationCodeEnum, CertificateTypeCodeEnum, WelfareCodeEnum } from './src/constants/dic'
+  import('./src/constants/dic')
   // @ts-ignore
   export type { EditorType, EditorType } from './src/constants/editor'
   import('./src/constants/editor')
@@ -191,10 +224,16 @@
     readonly AppLocalConfig: UnwrapRef<typeof import('./src/constants/app')['AppLocalConfig']>
     readonly AppType: UnwrapRef<typeof import('./src/constants/app')['AppType']>
     readonly AreaType: UnwrapRef<typeof import('./src/constants/enum')['AreaType']>
+    readonly CategoryCode: UnwrapRef<typeof import('./src/constants/dic')['CategoryCode']>
+    readonly CertificateTypeCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['CertificateTypeCodeEnum']>
     readonly EditorType: UnwrapRef<typeof import('./src/constants/editor')['EditorType']>
     readonly EditorTypeText: UnwrapRef<typeof import('./src/constants/editor')['EditorTypeText']>
+    readonly EducationCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['EducationCodeEnum']>
     readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
     readonly EmptyTextEditorItem: UnwrapRef<typeof import('./src/constants/editor')['EmptyTextEditorItem']>
+    readonly EnumBillingMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumBillingMethod']>
+    readonly EnumBillingMethodText: UnwrapRef<typeof import('./src/constants/task')['EnumBillingMethodText']>
+    readonly EnumBillingMethodUnitText: UnwrapRef<typeof import('./src/constants/task')['EnumBillingMethodUnitText']>
     readonly EnumClientType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumClientType']>
     readonly EnumClientTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumClientTypeText']>
     readonly EnumMenuType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuType']>
@@ -206,8 +245,23 @@
     readonly EnumRoleWebApiDataPower: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']>
     readonly EnumRoleWebApiDataPowerText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerText']>
     readonly EnumRoleWebApiDataPowerTextForFilter: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerTextForFilter']>
+    readonly EnumSettlementCycle: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSettlementCycle']>
+    readonly EnumSettlementCycleText: UnwrapRef<typeof import('./src/constants/task')['EnumSettlementCycleText']>
     readonly EnumSmsAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsAccess']>
-    readonly EnumUserInfoStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserInfoStatus']>
+    readonly EnumSmsTemplateType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsTemplateType']>
+    readonly EnumTaskCheckReceiveStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']>
+    readonly EnumTaskRecommendStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']>
+    readonly EnumTaskRecommendStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskRecommendStatusText']>
+    readonly EnumTaskReleaseStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskReleaseStatus']>
+    readonly EnumTaskReleaseStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskReleaseStatusText']>
+    readonly EnumTaskReleaseStatusTextForTip: UnwrapRef<typeof import('./src/constants/task')['EnumTaskReleaseStatusTextForTip']>
+    readonly EnumTaskSettlementStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskSettlementStatus']>
+    readonly EnumTaskStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskStatus']>
+    readonly EnumTaskStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskStatusText']>
+    readonly EnumUserGender: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserGender']>
+    readonly EnumUserGenderText: UnwrapRef<typeof import('./src/constants/task')['EnumUserGenderText']>
+    readonly EnumUserGenderTextForEdit: UnwrapRef<typeof import('./src/constants/task')['EnumUserGenderTextForEdit']>
+    readonly EnumUserStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserStatus']>
     readonly EnumUserType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserType']>
     readonly EnumUserTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumUserTypeText']>
     readonly FastButtonMap: UnwrapRef<typeof import('./src/constants/module')['FastButtonMap']>
@@ -217,6 +271,7 @@
     readonly FlexEnterpriseSettingStatus: UnwrapRef<typeof import('./src/constants/enum')['FlexEnterpriseSettingStatus']>
     readonly Gender: UnwrapRef<typeof import('./src/constants/enum')['Gender']>
     readonly GenderText: UnwrapRef<typeof import('./src/constants/enum')['GenderText']>
+    readonly IdentityCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['IdentityCodeEnum']>
     readonly MenuSvgIconMap: UnwrapRef<typeof import('./src/constants/menu')['MenuSvgIconMap']>
     readonly ModuleColumns: UnwrapRef<typeof import('./src/constants/module')['ModuleColumns']>
     readonly MyRegExp: UnwrapRef<typeof import('./src/constants/regExp')['MyRegExp']>
@@ -238,6 +293,7 @@
     readonly SubModuleType: UnwrapRef<typeof import('./src/constants/module')['SubModuleType']>
     readonly TempFolderPath: UnwrapRef<typeof import('./src/constants/enum')['TempFolderPath']>
     readonly ThemeColors: UnwrapRef<typeof import('./src/constants/theme')['ThemeColors']>
+    readonly WelfareCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['WelfareCodeEnum']>
     readonly acceptHMRUpdate: UnwrapRef<typeof import('pinia')['acceptHMRUpdate']>
     readonly computed: UnwrapRef<typeof import('vue')['computed']>
     readonly copyTextToClipboard: UnwrapRef<typeof import('./src/hooks/useCopyToClipboard')['copyTextToClipboard']>
@@ -301,11 +357,16 @@
     readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
     readonly unref: UnwrapRef<typeof import('vue')['unref']>
     readonly useAccess: UnwrapRef<typeof import('./src/hooks/useAccess')['useAccess']>
+    readonly useAllAreaList: UnwrapRef<typeof import('./src/hooks/dic')['useAllAreaList']>
+    readonly useArea: UnwrapRef<typeof import('./src/hooks/dic')['useArea']>
+    readonly useAreaByCascader: UnwrapRef<typeof import('./src/hooks/dic')['useAreaByCascader']>
     readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
     readonly useClearSubModule: UnwrapRef<typeof import('./src/hooks/useAccess')['useClearSubModule']>
     readonly useCopyToClipboard: UnwrapRef<typeof import('./src/hooks/useCopyToClipboard')['useCopyToClipboard']>
     readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
     readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
+    readonly useDictionaryDataSelect: UnwrapRef<typeof import('./src/hooks/dic')['useDictionaryDataSelect']>
+    readonly useGetDictionaryCategorySelect: UnwrapRef<typeof import('./src/hooks/dic')['useGetDictionaryCategorySelect']>
     readonly useGlobalEventContext: UnwrapRef<typeof import('./src/hooks/useEvent')['useGlobalEventContext']>
     readonly useGlobalEventProvide: UnwrapRef<typeof import('./src/hooks/useEvent')['useGlobalEventProvide']>
     readonly useGroupColumns: UnwrapRef<typeof import('./src/hooks/useAccess')['useGroupColumns']>
diff --git a/src/components/WeMap/WeMap.vue b/src/components/WeMap/WeMap.vue
index 8706d7c..631ed7a 100644
--- a/src/components/WeMap/WeMap.vue
+++ b/src/components/WeMap/WeMap.vue
@@ -87,6 +87,7 @@
       cityCode: findAreaCodeFromName(cityName),
       countyCode: findAreaCodeFromName(countyName),
       address: loc.poiaddress,
+      addressName: loc.poiname,
     });
     if (props.validateEvent) {
       formItem?.validate?.('change');
diff --git a/src/constants/apiEnum.ts b/src/constants/apiEnum.ts
index f1a06ac..d4ebf8b 100644
--- a/src/constants/apiEnum.ts
+++ b/src/constants/apiEnum.ts
@@ -1,6 +1,18 @@
 /* eslint-disable */
 // @ts-ignore
 
+/** 璁¤垂鏂瑰紡 */
+export enum EnumBillingMethod {
+  /**鎸夋湀 */
+  Month = 10,
+  /**鎸夊ぉ */
+  Day = 20,
+  /**鎸夋椂 */
+  Hour = 30,
+  /**璁′欢 */
+  Piece = 40,
+}
+
 /** 瀹㈡埛绔被鍨� */
 export enum EnumClientType {
   /**鐢佃剳缃戦〉 */
@@ -53,18 +65,20 @@
 export enum EnumResourceController {
   /**鏁版嵁瀛楀吀 */
   Dictionary = 0,
+  /**浠诲姟 */
+  Task = 1,
   /**鐢ㄦ埛璁よ瘉 */
-  Auth = 1,
+  Auth = 2,
   /**鐢ㄦ埛鑿滃崟 */
-  Menu = 2,
+  Menu = 3,
   /**鐢ㄦ埛璧勬簮 */
-  Resource = 3,
+  Resource = 4,
   /**鐢ㄦ埛瑙掕壊 */
-  Role = 4,
+  Role = 5,
   /**鐢ㄦ埛淇℃伅 */
-  UserInfo = 5,
+  User = 6,
   /**浼佷笟淇℃伅 */
-  Enterprise = 6,
+  Enterprise = 7,
 }
 
 /** 璧勬簮璇锋眰鏂瑰紡 */
@@ -95,14 +109,86 @@
   All = 999,
 }
 
+/** 缁撶畻鍛ㄦ湡 */
+export enum EnumSettlementCycle {
+  /**鏈堢粨 */
+  Month = 10,
+  /**鍛ㄧ粨 */
+  Week = 20,
+  /**鏃ョ粨 */
+  Day = 30,
+}
+
 /** 鐭俊閫氶亾 */
 export enum EnumSmsAccess {
   /**闃块噷浜戠煭淇� */
   AliyunSms = 10,
 }
 
+/** 鐭俊妯℃澘绫诲瀷 */
+export enum EnumSmsTemplateType {
+  /**鐧诲綍 */
+  Login = 0,
+  /**娉ㄥ唽 */
+  Register = 1,
+  /**淇敼瀵嗙爜 */
+  UpdatePassword = 2,
+  /**缁戝畾鎵嬫満鍙风爜 */
+  BindPhoneNumber = 3,
+  /**淇敼鎵嬫満鍙风爜 */
+  UpdatePhoneNumber = 4,
+}
+
+/** 浠诲姟缁撶畻鐘舵�� */
+export enum EnumTaskCheckReceiveStatus {
+  /**寰呴獙鏀� */
+  Wait = 10,
+  /**宸查獙鏀� */
+  Completed = 30,
+}
+
+/** 浠诲姟鎺ㄨ崘鐘舵�� */
+export enum EnumTaskRecommendStatus {
+  /**鏈帹鑽� */
+  No = 10,
+  /**宸叉帹鑽� */
+  Yes = 20,
+}
+
+/** 浠诲姟鍙戝竷鐘舵�� */
+export enum EnumTaskReleaseStatus {
+  /**鍙戝竷涓� */
+  InProcess = 20,
+  /**宸插仠姝� */
+  Stopped = 100,
+}
+
+/** 浠诲姟缁撶畻鐘舵�� */
+export enum EnumTaskSettlementStatus {
+  /**寰呯粨绠� */
+  Wait = 10,
+  /**宸茬粨绠� */
+  Completed = 30,
+}
+
+/** 浠诲姟瀹夋帓鐘舵�� */
+export enum EnumTaskStatus {
+  /**寰呭畨鎺� */
+  Wait = 10,
+  /**宸插畨鎺� */
+  Complete = 20,
+}
+
+/** 鐢ㄦ埛鎬у埆 */
+export enum EnumUserGender {
+  /**鐢� */
+  Male = 10,
+  /**濂� */
+  Female = 20,
+}
+
 /** 鐢ㄦ埛淇℃伅鐘舵�� */
-export enum EnumUserInfoStatus {
+export enum EnumUserStatus {
   /**姝e父 */
   Normal = 10,
   /**绂佺敤 */
diff --git a/src/constants/dic.ts b/src/constants/dic.ts
new file mode 100644
index 0000000..41e3e90
--- /dev/null
+++ b/src/constants/dic.ts
@@ -0,0 +1,60 @@
+export enum CategoryCode {
+  /**韬唤 */
+  Identity = '10',
+  /**瀛﹀巻 */
+  Education = '20',
+  /**宀椾綅 */
+  Position = '30',
+  /**璇佷功绫诲瀷 */
+  CertificateType = '40',
+  /**绂忓埄 */
+  Welfare = '50',
+  /**琛屼笟绫诲瀷 */
+  IndustryCategory = '60',
+  /**琛屾斂鍦板尯 */
+  Area = '70',
+}
+
+export enum IdentityCodeEnum {
+  /**瀛︾敓 */
+  Student = '10-10',
+  /**闈炲鐢� */
+  NotStudent = '10-20',
+}
+
+export enum EducationCodeEnum {
+  /**鍒濅腑浠ヤ笅 */
+  UnderPrimarySchool = '20-10',
+  /**鍒濅腑 */
+  PrimarySchool = '20-20',
+  /**楂樹腑 */
+  HighSchool = '20-30',
+  /**涓笓 */
+  JuniorCollege = '20-40',
+  /**鎶�鏍� */
+  TechnicalSchool = '20-50',
+  /**涓亴 */
+  JuniorHighSchool = '20-60',
+  /**楂樿亴 */
+  SeniorHighSchool = '20-70',
+  /**鏈 */
+  Undergraduate = '20-80',
+  /**鏈浠ヤ笂 */
+  UndergraduateAndAbove = '20-90',
+}
+
+export enum CertificateTypeCodeEnum {
+  /**鍋ュ悍璇� */
+  HealthCertificate = '40-10',
+}
+
+export enum WelfareCodeEnum {
+  /**鍖呴 */
+  Meal = '50-10',
+  /**鍖呬綇瀹� */
+  Accommodation = '50-20',
+  /**浜ら�氳ˉ璐� */
+  TransportationSubsidies = '50-30',
+  /**楂樻俯琛ヨ创 */
+  HighTemperatureSubsidies = '50-40',
+}
diff --git a/src/constants/index.ts b/src/constants/index.ts
index f3951d7..b580961 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -10,3 +10,4 @@
 export * from './app';
 export * from './apiEnum';
 export * from './apiEnumText';
+export * from './task';
diff --git a/src/constants/task.ts b/src/constants/task.ts
new file mode 100644
index 0000000..63a20ac
--- /dev/null
+++ b/src/constants/task.ts
@@ -0,0 +1,49 @@
+export const EnumTaskStatusText = {
+  [EnumTaskStatus.Wait]: '寰呭畨鎺�',
+  [EnumTaskStatus.Complete]: '宸插畨鎺�',
+};
+
+export const EnumSettlementCycleText = {
+  [EnumSettlementCycle.Month]: '鏈堢粨',
+  [EnumSettlementCycle.Week]: '鍛ㄧ粨',
+  [EnumSettlementCycle.Day]: '鏃ョ粨',
+};
+
+export const EnumTaskReleaseStatusText = {
+  [EnumTaskReleaseStatus.InProcess]: '鍙戝竷涓�',
+  [EnumTaskReleaseStatus.Stopped]: '宸插仠姝�',
+};
+export const EnumTaskReleaseStatusTextForTip = {
+  [EnumTaskReleaseStatus.InProcess]: '鍙戝竷',
+  [EnumTaskReleaseStatus.Stopped]: '鍋滄鍙戝竷',
+};
+
+export const EnumTaskRecommendStatusText = {
+  [EnumTaskRecommendStatus.No]: '鏈帹鑽�',
+  [EnumTaskRecommendStatus.Yes]: '宸叉帹鑽�',
+};
+
+export const EnumBillingMethodText = {
+  [EnumBillingMethod.Month]: '鎸夋湀',
+  [EnumBillingMethod.Day]: '鎸夋棩',
+  [EnumBillingMethod.Hour]: '鎸夋椂',
+  [EnumBillingMethod.Piece]: '璁′欢',
+};
+
+export const EnumBillingMethodUnitText = {
+  [EnumBillingMethod.Month]: '鍏�/鏈�',
+  [EnumBillingMethod.Day]: '鍏�/鏃�',
+  [EnumBillingMethod.Hour]: '鍏�/灏忔椂',
+  [EnumBillingMethod.Piece]: '鍏�/浠�',
+};
+
+export const EnumUserGenderText = {
+  [0]: '涓嶉檺',
+  [EnumUserGender.Male]: '鐢锋��',
+  [EnumUserGender.Female]: '濂虫��',
+};
+
+export const EnumUserGenderTextForEdit = {
+  [EnumUserGender.Male]: '浠呴檺鐢锋��',
+  [EnumUserGender.Female]: '浠呴檺濂虫��',
+};
diff --git a/src/hooks/area.ts b/src/hooks/area.ts
deleted file mode 100644
index f965742..0000000
--- a/src/hooks/area.ts
+++ /dev/null
@@ -1,192 +0,0 @@
-// import { useAreaStore } from '@/store/modules/area';
-// import { AreaType } from '@/constants';
-// import { CascaderProps } from 'element-plus';
-// import { splitAreaTree } from '@/utils';
-
-// /**
-//  * 鑾峰彇瀹屾暣鐨勫湴鍖烘暟鎹爲
-//  */
-// export function useCompleteArea() {
-//   const useArea = useAreaStore();
-//   const { completeAreaTree } = storeToRefs(useArea);
-
-//   onMounted(() => {
-//     useArea.getCompleteAreaTree();
-//   });
-
-//   const areaTreeProps = {
-//     children: 'children',
-//     label: 'areaName',
-//     value: 'areaCode',
-//   };
-
-//   return {
-//     areaTree: completeAreaTree,
-//     areaTreeProps,
-//     getAreaTree: useArea.getCompleteAreaTree,
-//     getAreaNameByAreaCodeWithParentName: useArea.getAreaNameByAreaCodeWithParentName,
-//   };
-// }
-
-// type UseAreaByCascaderOptions = {
-//   layer?: AreaType;
-// };
-
-// /**
-//  * @description 鑱旂骇閫夋嫨涓娇鐢�
-//  */
-// export function useAreaByCascader(options: UseAreaByCascaderOptions = {}) {
-//   const { layer = AreaType.Area } = options;
-
-//   const areaStore = useAreaStore();
-
-//   // const { completeAreaList } = storeToRefs(areaStore);
-
-//   // onMounted(() => {
-//   //   areaStore.getCompleteAreaTree();
-//   // });
-
-//   return computed(() => ({
-//     // options: layer
-//     //   ? (formatAreaListToTree(completeAreaList.value, 0, layer) as any[])
-//     //   : completeAreaTree.value,
-//     // props: {
-//     //   label: 'areaName',
-//     //   value: 'areaCode',
-//     // },
-//     props: {
-//       label: 'areaName',
-//       value: 'areaCode',
-//       lazy: true,
-//       async lazyLoad(node, resolve) {
-//         const { level, data } = node;
-//         const completeAreaList = await areaStore.getCompleteAreaTree();
-//         let areas = completeAreaList.filter((x) =>
-//           level ? x.parentCode === data.areaCode : !x.parentCode
-//         );
-//         return resolve(
-//           areas.map((x) => ({
-//             ...x,
-//             leaf: x.layer >= layer,
-//           }))
-//         );
-//       },
-//     } as CascaderProps,
-//   }));
-// }
-
-// export type UseAllAreaListOptions = {
-//   immediate?: boolean;
-// };
-
-// export function useAllAreaList(options: UseAllAreaListOptions = {}) {
-//   const { immediate = true } = options;
-//   const areaStore = useAreaStore();
-
-//   onMounted(() => {
-//     if (immediate) {
-//       areaStore.getCompleteAreaTree();
-//     }
-//   });
-
-//   const findAreaCodeFromName = (areaName: string) => {
-//     const areaItem = areaStore.completeAreaList.find((x) => x.areaName === areaName);
-//     return areaItem?.areaCode ?? 0;
-//   };
-
-//   const findAreaNameFromCode = (areaCode: number) => {
-//     const areaItem = areaStore.completeAreaList.find((x) => x.areaCode === areaCode);
-//     return areaItem?.areaName ?? '';
-//   };
-
-//   const findAreaItemFromCode = (areaCode: number) => {
-//     const areaItem = areaStore.completeAreaList.find((x) => x.areaCode === areaCode);
-//     return areaItem;
-//   };
-
-//   return {
-//     findAreaCodeFromName,
-//     findAreaNameFromCode,
-//     findAreaItemFromCode,
-//   };
-// }
-
-// export function useProvinceList() {
-//   const areaStore = useAreaStore();
-
-//   const { provinceList } = storeToRefs(areaStore);
-
-//   onMounted(() => {
-//     areaStore.getCompleteAreaTree();
-//   });
-
-//   return {
-//     provinceList,
-//   };
-// }
-
-// type UseAreaByTreeSelectOptions = {
-//   maxLevel?: number;
-// };
-
-// export function useAreaByTreeSelect(options: UseAreaByTreeSelectOptions = {}) {
-//   const { maxLevel = 2 } = options;
-//   const useArea = useAreaStore();
-//   const { completeAreaTree } = storeToRefs(useArea);
-
-//   onMounted(() => {
-//     useArea.getCompleteAreaTree();
-//   });
-
-//   const areaTree = computed(() => splitAreaTree(completeAreaTree.value, maxLevel));
-
-//   const treeSelectProps = computed(() => ({
-//     data: areaTree.value,
-//     props: {
-//       label: 'areaName',
-//       children: 'children',
-//       isLeaf: 'leaf',
-//     },
-//     renderAfterExpand: false,
-//     valueKey: 'areaCode',
-//   }));
-
-//   return {
-//     treeSelectProps: treeSelectProps,
-//     areaTree,
-//   };
-// }
-
-// export function useAreaSelect(provinceId: Ref<number>, cityId: Ref<number>, countyId: Ref<number>) {
-//   const useArea = useAreaStore();
-//   const { completeAreaList } = storeToRefs(useArea);
-
-//   const { provinceList } = useProvinceList();
-
-//   watch(provinceId, async () => {
-//     await nextTick();
-//     if (cityList.value.every((city) => city.areaCode !== cityId.value)) {
-//       cityId.value = '' as any as number;
-//     }
-//   });
-
-//   watch(cityId, async () => {
-//     await nextTick();
-//     if (countyList.value.every((area) => area.areaCode !== countyId.value)) {
-//       countyId.value = '' as any as number;
-//     }
-//   });
-
-//   const cityList = computed(() =>
-//     completeAreaList.value.filter((x) => x.parentCode === provinceId.value)
-//   );
-//   const countyList = computed(() =>
-//     completeAreaList.value.filter((x) => x.parentCode === cityId.value)
-//   );
-
-//   return {
-//     provinceList: provinceList,
-//     cityList: cityList,
-//     countyList: countyList,
-//   };
-// }
diff --git a/src/hooks/dic.ts b/src/hooks/dic.ts
index e69de29..bd004f1 100644
--- a/src/hooks/dic.ts
+++ b/src/hooks/dic.ts
@@ -0,0 +1,252 @@
+import { useQuery, useQueryClient } from '@tanstack/vue-query';
+import * as dictionaryServices from '@/services/api/dictionary';
+import { formatAreaListToTree } from '@/utils';
+import { CascaderProps } from 'element-plus';
+
+export function useGetDictionaryCategorySelect() {
+  const { data: dictionaryCategoryList, refetch } = useQuery({
+    queryKey: ['dictionaryServices/getDictionaryCategorySelect'],
+    queryFn: async () => {
+      let res = await dictionaryServices.getDictionaryCategorySelect({}, { showLoading: false });
+      return res.map((x) => ({
+        ...x,
+        fieldNamesMap: x.data.fieldNames ? JSON.parse(x.data.fieldNames) : {},
+      }));
+    },
+    placeholderData: () => [] as API.SelectOptionGuidGetDictionaryCategorySelectQueryOption[],
+  });
+
+  const queryClient = useQueryClient();
+
+  function ensureQueryData() {
+    return queryClient.ensureQueryData<
+      API.SelectOptionGuidGetDictionaryCategorySelectQueryOption[]
+    >({
+      queryKey: ['dictionaryServices/getDictionaryCategorySelect'],
+    });
+  }
+
+  function updateDictionaryCategorySelect() {
+    queryClient.invalidateQueries({
+      queryKey: ['dictionaryServices/getDictionaryCategorySelect'],
+    });
+  }
+
+  function getDictionaryCategoryById(id: string) {
+    return dictionaryCategoryList.value.find((x) => x.data?.id === id);
+  }
+
+  function getDictionaryCategoryByCode(code: string) {
+    return dictionaryCategoryList.value.find((x) => x.data?.code === code);
+  }
+
+  function getDictionaryCategoryNameByCode(code: string) {
+    return getDictionaryCategoryByCode(code)?.label ?? '';
+  }
+
+  return {
+    dictionaryCategoryList,
+    ensureQueryData,
+    getDictionaryCategoryById,
+    getDictionaryCategoryNameByCode,
+    getDictionaryCategoryByCode,
+    updateDictionaryCategorySelect,
+  };
+}
+
+type UseDictionaryDataSelectOptions = {
+  categoryId?: MaybeRef<string>;
+  categoryCode?: MaybeRef<CategoryCode>;
+  parentId?: MaybeRef<string>;
+  staleTime?: number;
+  /** 鍏抽敭瀛� */
+  keywords?: MaybeRef<string>;
+  /** 鏌ヨ鎵�鏈� */
+  all?: MaybeRef<boolean>;
+  maxDeep?: number;
+};
+
+export function useDictionaryDataSelect({
+  categoryId,
+  categoryCode,
+  parentId,
+  staleTime,
+  keywords,
+  all,
+  maxDeep,
+}: UseDictionaryDataSelectOptions) {
+  const params = computed(() => ({
+    categoryId: unref(categoryId),
+    categoryCode: unref(categoryCode),
+    parentId: unref(parentId),
+    keywords: unref(keywords),
+    all: unref(all),
+    maxDeep: maxDeep,
+  }));
+  const { data: dictionaryDataList, refetch } = useQuery({
+    queryKey: ['dictionaryServices/getDictionaryDataSelect', params],
+    queryFn: async () => {
+      let res = await dictionaryServices.getDictionaryDataSelect(params.value, {
+        showLoading: false,
+      });
+      return res.map((x) => ({
+        ...x,
+        code: x.data?.code ?? '',
+      }));
+    },
+    placeholderData: () => [] as API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[],
+    staleTime,
+  });
+
+  function getDictionaryDataNameById(id: string) {
+    return dictionaryDataList.value?.find((x) => x.data?.id === id)?.label;
+  }
+
+  function getDictionaryDataByCode(code: string) {
+    return dictionaryDataList.value?.find((x) => x.data?.code === code);
+  }
+
+  function getDictionaryDataNameByCode(code: string) {
+    return getDictionaryDataByCode(code)?.label ?? '';
+  }
+
+  const queryClient = useQueryClient();
+
+  function ensureQueryData() {
+    return queryClient.ensureQueryData<
+      API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[]
+    >({
+      queryKey: ['dictionaryServices/getDictionaryDataSelect'],
+    });
+  }
+
+  function updateDictionaryDataSelect(categoryId?: string) {
+    queryClient.invalidateQueries({
+      queryKey: ['dictionaryServices/getDictionaryDataSelect'],
+    });
+  }
+
+  return {
+    dictionaryDataList,
+    ensureQueryData,
+    refetch,
+    getDictionaryDataNameById,
+    getDictionaryDataNameByCode,
+    getDictionaryDataByCode,
+    updateDictionaryDataSelect,
+  };
+}
+
+export function useArea() {
+  const queryClient = useQueryClient();
+
+  function getAreaList(parentId = '') {
+    const params = {
+      categoryCode: CategoryCode.Area,
+      parentId: parentId,
+    };
+    return queryClient.fetchQuery({
+      queryKey: ['dictionaryServices/getDictionaryDataSelect', params],
+      queryFn: async () => {
+        let res = await dictionaryServices.getDictionaryDataSelect(params, { showLoading: false });
+        return res.map(convertDictionaryToAreaTreeNode);
+      },
+      staleTime: Infinity,
+    });
+  }
+
+  return { getAreaList };
+}
+
+function convertDictionaryToAreaTreeNode(
+  item: API.SelectOptionStringGetDictionaryDataSelectQueryResultOption
+) {
+  return {
+    children: [],
+    areaCode: item.data?.code,
+    parentCode: '',
+    areaName: item.label,
+    layer: Number(item.data?.field4),
+    sort: item.data?.sort,
+    id: item.data?.id,
+  } as API.AreaTreeNode;
+}
+
+/**
+ *
+ * @description 鏆傛椂鏃犳硶浣跨敤
+ */
+export function useAllAreaList() {
+  const { dictionaryDataList } = useDictionaryDataSelect({
+    categoryCode: CategoryCode.Area,
+    staleTime: Infinity,
+    all: true,
+    maxDeep: AreaType.Area,
+  });
+
+  const areaList = computed(() => dictionaryDataList.value.map(convertDictionaryToAreaTreeNode));
+
+  const areaTreeProps = {
+    children: 'children',
+    label: 'areaName',
+    value: 'areaCode',
+  };
+
+  const areaTree = computed(() => formatAreaListToTree(areaList.value));
+
+  const findAreaCodeFromName = (areaName: string) => {
+    const areaItem = areaList.value.find((x) => x.areaName === areaName);
+    return areaItem?.areaCode ?? '';
+  };
+
+  const findAreaNameFromCode = (areaCode: string) => {
+    const areaItem = areaList.value.find((x) => x.areaCode === areaCode);
+    return areaItem?.areaName ?? '';
+  };
+
+  const findAreaItemFromCode = (areaCode: string) => {
+    const areaItem = areaList.value.find((x) => x.areaCode === areaCode);
+    return areaItem;
+  };
+
+  return {
+    areaList,
+    areaTree,
+    areaTreeProps,
+    findAreaCodeFromName,
+    findAreaNameFromCode,
+    findAreaItemFromCode,
+  };
+}
+
+type UseAreaByCascaderOptions = {
+  layer?: AreaType;
+};
+
+/**
+ * @description 鑱旂骇閫夋嫨涓娇鐢�
+ */
+export function useAreaByCascader(options: UseAreaByCascaderOptions = {}) {
+  const { layer = AreaType.Area } = options;
+
+  const { getAreaList } = useArea();
+
+  return computed(() => ({
+    props: {
+      label: 'areaName',
+      value: 'areaCode',
+      lazy: true,
+      async lazyLoad(node, resolve) {
+        const { level, data } = node;
+        const areas = (await getAreaList((data as API.AreaTreeNode).id)) as any[];
+
+        return resolve(
+          areas.map((x) => ({
+            ...x,
+            leaf: x.layer >= layer,
+          }))
+        );
+      },
+    } as CascaderProps,
+  }));
+}
diff --git a/src/hooks/index.ts b/src/hooks/index.ts
index 57acf39..a069d7c 100644
--- a/src/hooks/index.ts
+++ b/src/hooks/index.ts
@@ -7,4 +7,4 @@
 export * from './useUser';
 export * from './help';
 export * from './menu';
-// export * from './dic';
+export * from './dic';
diff --git a/src/services/api/auth.ts b/src/services/api/auth.ts
index 543ccd0..00b5ddb 100644
--- a/src/services/api/auth.ts
+++ b/src/services/api/auth.ts
@@ -62,3 +62,15 @@
     ...(options || {}),
   });
 }
+
+/** 鍙戦�侀獙璇佺爜 POST /api/user/auth/sendVerifyCode */
+export async function sendVerifyCode(body: API.SendVerifyCodeCommand, options?: API.RequestConfig) {
+  return request<string>('/api/user/auth/sendVerifyCode', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
diff --git a/src/services/api/dictionary.ts b/src/services/api/dictionary.ts
index 22cee24..4c74b85 100644
--- a/src/services/api/dictionary.ts
+++ b/src/services/api/dictionary.ts
@@ -2,12 +2,12 @@
 // @ts-ignore
 import { request } from '@/utils/request';
 
-/** 鍒犻櫎鏁版嵁瀛楀吀绫诲埆 DELETE /api/main/dictionary/deleteDictionaryCategory */
+/** 鍒犻櫎鏁版嵁瀛楀吀绫诲埆 DELETE /api/flexjob/dictionary/deleteDictionaryCategory */
 export async function deleteDictionaryCategory(
   body: API.DeleteDictionaryCategoryCommand,
   options?: API.RequestConfig
 ) {
-  return request<number>('/api/main/dictionary/deleteDictionaryCategory', {
+  return request<number>('/api/flexjob/dictionary/deleteDictionaryCategory', {
     method: 'DELETE',
     headers: {
       'Content-Type': 'application/json-patch+json',
@@ -17,13 +17,13 @@
   });
 }
 
-/** 鑾峰彇鏁版嵁瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁 POST /api/main/dictionary/getDictionaryCategories */
+/** 鑾峰彇鏁版嵁瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁 POST /api/flexjob/dictionary/getDictionaryCategories */
 export async function getDictionaryCategories(
   body: API.GetDictionaryCategoriesQuery,
   options?: API.RequestConfig
 ) {
   return request<API.PagedListQueryResultGetDictionaryCategoriesQueryResultItem>(
-    '/api/main/dictionary/getDictionaryCategories',
+    '/api/flexjob/dictionary/getDictionaryCategories',
     {
       method: 'POST',
       headers: {
@@ -35,14 +35,14 @@
   );
 }
 
-/** 鏌ヨ鏁版嵁瀛楀吀绫诲埆閫夋嫨鍣ㄦ暟鎹� GET /api/main/dictionary/getDictionaryCategorySelect */
+/** 鏌ヨ鏁版嵁瀛楀吀绫诲埆閫夋嫨鍣ㄦ暟鎹� GET /api/flexjob/dictionary/getDictionaryCategorySelect */
 export async function getDictionaryCategorySelect(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
   params: API.APIgetDictionaryCategorySelectParams,
   options?: API.RequestConfig
 ) {
-  return request<API.SelectQueryResultOptionGuidGetDictionaryCategorySelectQueryOption[]>(
-    '/api/main/dictionary/getDictionaryCategorySelect',
+  return request<API.SelectOptionGuidGetDictionaryCategorySelectQueryOption[]>(
+    '/api/flexjob/dictionary/getDictionaryCategorySelect',
     {
       method: 'GET',
       params: {
@@ -55,13 +55,13 @@
   );
 }
 
-/** 鑾峰彇鏁版嵁瀛楀吀鍒嗛〉鍒楄〃鏁版嵁 POST /api/main/dictionary/getDictionaryDatas */
+/** 鑾峰彇鏁版嵁瀛楀吀鍒嗛〉鍒楄〃鏁版嵁 POST /api/flexjob/dictionary/getDictionaryDatas */
 export async function getDictionaryDatas(
   body: API.GetDictionaryDatasQuery,
   options?: API.RequestConfig
 ) {
   return request<API.PagedListQueryResultGetDictionaryDatasQueryResultItem>(
-    '/api/main/dictionary/getDictionaryDatas',
+    '/api/flexjob/dictionary/getDictionaryDatas',
     {
       method: 'POST',
       headers: {
@@ -73,14 +73,14 @@
   );
 }
 
-/** 鏌ヨ鏁版嵁瀛楀吀閫夋嫨鍣� GET /api/main/dictionary/getDictionaryDataSelect */
+/** 鏌ヨ鏁版嵁瀛楀吀閫夋嫨鍣� GET /api/flexjob/dictionary/getDictionaryDataSelect */
 export async function getDictionaryDataSelect(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
   params: API.APIgetDictionaryDataSelectParams,
   options?: API.RequestConfig
 ) {
-  return request<API.SelectQueryResultOptionGuidGetDictionaryDataSelectQueryResultOption[]>(
-    '/api/main/dictionary/getDictionaryDataSelect',
+  return request<API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[]>(
+    '/api/flexjob/dictionary/getDictionaryDataSelect',
     {
       method: 'GET',
       params: {
@@ -91,12 +91,12 @@
   );
 }
 
-/** 淇濆瓨鏁版嵁瀛楀吀绫诲埆 POST /api/main/dictionary/saveDictionaryCategory */
+/** 淇濆瓨鏁版嵁瀛楀吀绫诲埆 POST /api/flexjob/dictionary/saveDictionaryCategory */
 export async function saveDictionaryCategory(
   body: API.SaveDictionaryCategoryCommand,
   options?: API.RequestConfig
 ) {
-  return request<string>('/api/main/dictionary/saveDictionaryCategory', {
+  return request<string>('/api/flexjob/dictionary/saveDictionaryCategory', {
     method: 'POST',
     headers: {
       'Content-Type': 'application/json-patch+json',
@@ -106,12 +106,12 @@
   });
 }
 
-/** 淇濆瓨鏁版嵁瀛楀吀 POST /api/main/dictionary/saveDictionaryData */
+/** 淇濆瓨鏁版嵁瀛楀吀 POST /api/flexjob/dictionary/saveDictionaryData */
 export async function saveDictionaryData(
   body: API.SaveDictionaryDataCommand,
   options?: API.RequestConfig
 ) {
-  return request<string>('/api/main/dictionary/saveDictionaryData', {
+  return request<string>('/api/flexjob/dictionary/saveDictionaryData', {
     method: 'POST',
     headers: {
       'Content-Type': 'application/json-patch+json',
@@ -121,12 +121,12 @@
   });
 }
 
-/** 璁剧疆鏁版嵁瀛楀吀鏄惁绂佺敤 PUT /api/main/dictionary/setDictionaryDataIsDisabled */
+/** 璁剧疆鏁版嵁瀛楀吀鏄惁绂佺敤 PUT /api/flexjob/dictionary/setDictionaryDataIsDisabled */
 export async function setDictionaryDataIsDisabled(
   body: API.SetDictionaryDataIsDisabledCommand,
   options?: API.RequestConfig
 ) {
-  return request<number>('/api/main/dictionary/setDictionaryDataIsDisabled', {
+  return request<number>('/api/flexjob/dictionary/setDictionaryDataIsDisabled', {
     method: 'PUT',
     headers: {
       'Content-Type': 'application/json-patch+json',
@@ -135,3 +135,18 @@
     ...(options || {}),
   });
 }
+
+/** 鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁 POST /api/flexjob/dictionary/syncHumanResourcesAreaDictionaryData */
+export async function syncHumanResourcesAreaDictionaryData(
+  body: API.SyncHumanResourcesAreaDictionaryDataCommand,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/flexjob/dictionary/syncHumanResourcesAreaDictionaryData', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
diff --git a/src/services/api/index.ts b/src/services/api/index.ts
index 1f801d3..dcda25c 100644
--- a/src/services/api/index.ts
+++ b/src/services/api/index.ts
@@ -2,19 +2,21 @@
 /* eslint-disable */
 // API 鏇存柊鏃堕棿锛�
 // API 鍞竴鏍囪瘑锛�
-import * as auth from './auth';
-import * as menu from './menu';
 import * as dictionary from './dictionary';
-import * as resource from './resource';
-import * as role from './role';
-import * as userInfo from './userInfo';
+import * as menu from './menu';
 import * as enterprise from './enterprise';
+import * as task from './task';
+import * as auth from './auth';
+import * as user from './user';
+import * as role from './role';
+import * as resource from './resource';
 export default {
-  auth,
-  menu,
   dictionary,
-  resource,
-  role,
-  userInfo,
+  menu,
   enterprise,
+  task,
+  auth,
+  user,
+  role,
+  resource,
 };
diff --git a/src/services/api/task.ts b/src/services/api/task.ts
new file mode 100644
index 0000000..23c1be7
--- /dev/null
+++ b/src/services/api/task.ts
@@ -0,0 +1,75 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 鏌ヨ浠诲姟璇︽儏 GET /api/flexjob/task/getTaskInfo */
+export async function getTaskInfo(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetTaskInfoParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetTaskInfoQueryResult>('/api/flexjob/task/getTaskInfo', {
+    method: 'GET',
+    params: {
+      ...params,
+    },
+    ...(options || {}),
+  });
+}
+
+/** 鏌ヨ浠诲姟鍒嗛〉鍒楄〃 POST /api/flexjob/task/getTaskInfos */
+export async function getTaskInfos(body: API.GetTaskInfosQuery, options?: API.RequestConfig) {
+  return request<API.PagedListQueryResultGetTaskInfosQueryResultItem>(
+    '/api/flexjob/task/getTaskInfos',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json-patch+json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 淇濆瓨浠诲姟 POST /api/flexjob/task/saveTaskInfo */
+export async function saveTaskInfo(body: API.SaveTaskInfoCommand, options?: API.RequestConfig) {
+  return request<string>('/api/flexjob/task/saveTaskInfo', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
+/** 璁剧疆浠诲姟鏄惁鎺ㄨ崘 PUT /api/flexjob/task/setTaskInfoRecommendStatus */
+export async function setTaskInfoRecommendStatus(
+  body: API.SetTaskInfoRecommendStatusCommand,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/flexjob/task/setTaskInfoRecommendStatus', {
+    method: 'PUT',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
+/** 璁剧疆浠诲姟鍙戝竷鐘舵�� PUT /api/flexjob/task/setTaskInfoReleaseStatus */
+export async function setTaskInfoReleaseStatus(
+  body: API.SetTaskInfoReleaseStatusCommand,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/flexjob/task/setTaskInfoReleaseStatus', {
+    method: 'PUT',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index fb57219..5324984 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -30,6 +30,12 @@
     categoryCode?: string;
     /** 涓婄骇Id */
     parentId?: string;
+    /** 鍏抽敭瀛� */
+    keywords?: string;
+    /** 鏌ヨ鎵�鏈� */
+    all?: boolean;
+    /** 鏈�澶ф繁搴� */
+    maxDeep?: number;
   }
 
   interface APIgetEnterpriseElectronSignSettingParams {
@@ -87,11 +93,21 @@
     roleId?: string;
   }
 
+  interface APIgetTaskInfoParams {
+    /** Id */
+    id?: string;
+  }
+
   interface APIgetUserInfoRolesParams {
     /** 鐢ㄦ埛Id */
     userInfoId?: string;
     /** 瀹㈡埛绔被鍨� */
     clientType?: EnumClientType;
+  }
+
+  interface APIgetUserResumeParams {
+    /** 鐢ㄦ埛Id */
+    userId?: string;
   }
 
   interface DeleteDictionaryCategoryCommand {
@@ -104,6 +120,17 @@
 
   interface DeleteRoleCommand {
     ids: string[];
+  }
+
+  enum EnumBillingMethod {
+    /**鎸夋湀 */
+    Month = 10,
+    /**鎸夊ぉ */
+    Day = 20,
+    /**鎸夋椂 */
+    Hour = 30,
+    /**璁′欢 */
+    Piece = 40,
   }
 
   enum EnumClientType {
@@ -152,18 +179,20 @@
   enum EnumResourceController {
     /**鏁版嵁瀛楀吀 */
     Dictionary = 0,
+    /**浠诲姟 */
+    Task = 1,
     /**鐢ㄦ埛璁よ瘉 */
-    Auth = 1,
+    Auth = 2,
     /**鐢ㄦ埛鑿滃崟 */
-    Menu = 2,
+    Menu = 3,
     /**鐢ㄦ埛璧勬簮 */
-    Resource = 3,
+    Resource = 4,
     /**鐢ㄦ埛瑙掕壊 */
-    Role = 4,
+    Role = 5,
     /**鐢ㄦ埛淇℃伅 */
-    UserInfo = 5,
+    User = 6,
     /**浼佷笟淇℃伅 */
-    Enterprise = 6,
+    Enterprise = 7,
   }
 
   enum EnumResourceMethod {
@@ -192,12 +221,76 @@
     All = 999,
   }
 
+  enum EnumSettlementCycle {
+    /**鏈堢粨 */
+    Month = 10,
+    /**鍛ㄧ粨 */
+    Week = 20,
+    /**鏃ョ粨 */
+    Day = 30,
+  }
+
   enum EnumSmsAccess {
     /**闃块噷浜戠煭淇� */
     AliyunSms = 10,
   }
 
-  enum EnumUserInfoStatus {
+  enum EnumSmsTemplateType {
+    /**鐧诲綍 */
+    Login = 0,
+    /**娉ㄥ唽 */
+    Register = 1,
+    /**淇敼瀵嗙爜 */
+    UpdatePassword = 2,
+    /**缁戝畾鎵嬫満鍙风爜 */
+    BindPhoneNumber = 3,
+    /**淇敼鎵嬫満鍙风爜 */
+    UpdatePhoneNumber = 4,
+  }
+
+  enum EnumTaskCheckReceiveStatus {
+    /**寰呴獙鏀� */
+    Wait = 10,
+    /**宸查獙鏀� */
+    Completed = 30,
+  }
+
+  enum EnumTaskRecommendStatus {
+    /**鏈帹鑽� */
+    No = 10,
+    /**宸叉帹鑽� */
+    Yes = 20,
+  }
+
+  enum EnumTaskReleaseStatus {
+    /**鍙戝竷涓� */
+    InProcess = 20,
+    /**宸插仠姝� */
+    Stopped = 100,
+  }
+
+  enum EnumTaskSettlementStatus {
+    /**寰呯粨绠� */
+    Wait = 10,
+    /**宸茬粨绠� */
+    Completed = 30,
+  }
+
+  enum EnumTaskStatus {
+    /**寰呭畨鎺� */
+    Wait = 10,
+    /**宸插畨鎺� */
+    Complete = 20,
+  }
+
+  enum EnumUserGender {
+    /**鐢� */
+    Male = 10,
+    /**濂� */
+    Female = 20,
+  }
+
+  enum EnumUserStatus {
     /**姝e父 */
     Normal = 10,
     /**绂佺敤 */
@@ -311,6 +404,42 @@
     /** 閿欒鐮� */
     errorCode?: string;
     data?: GetRoleQueryResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
+  interface FriendlyResultGetTaskInfoQueryResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: GetTaskInfoQueryResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
+  interface FriendlyResultGetUserResumeQueryResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: GetUserResumeQueryResult;
     /** 鎵ц鎴愬姛 */
     success?: boolean;
     /** 閿欒淇℃伅 */
@@ -454,7 +583,7 @@
     timestamp?: number;
   }
 
-  interface FriendlyResultListSelectQueryResultOptionGuidGetDictionaryCategorySelectQueryOption {
+  interface FriendlyResultListSelectOptionGuidGetDictionaryCategorySelectQueryOption {
     /** 璺熻釜Id */
     traceId?: string;
     /** 鐘舵�佺爜 */
@@ -462,7 +591,7 @@
     /** 閿欒鐮� */
     errorCode?: string;
     /** 鏁版嵁 */
-    data?: SelectQueryResultOptionGuidGetDictionaryCategorySelectQueryOption[];
+    data?: SelectOptionGuidGetDictionaryCategorySelectQueryOption[];
     /** 鎵ц鎴愬姛 */
     success?: boolean;
     /** 閿欒淇℃伅 */
@@ -473,7 +602,7 @@
     timestamp?: number;
   }
 
-  interface FriendlyResultListSelectQueryResultOptionGuidGetDictionaryDataSelectQueryResultOption {
+  interface FriendlyResultListSelectOptionStringGetDictionaryDataSelectQueryResultOption {
     /** 璺熻釜Id */
     traceId?: string;
     /** 鐘舵�佺爜 */
@@ -481,7 +610,7 @@
     /** 閿欒鐮� */
     errorCode?: string;
     /** 鏁版嵁 */
-    data?: SelectQueryResultOptionGuidGetDictionaryDataSelectQueryResultOption[];
+    data?: SelectOptionStringGetDictionaryDataSelectQueryResultOption[];
     /** 鎵ц鎴愬姛 */
     success?: boolean;
     /** 閿欒淇℃伅 */
@@ -582,6 +711,24 @@
     timestamp?: number;
   }
 
+  interface FriendlyResultPagedListQueryResultGetTaskInfosQueryResultItem {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: PagedListQueryResultGetTaskInfosQueryResultItem;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
   interface FriendlyResultPasswordLoginCommandCallback {
     /** 璺熻釜Id */
     traceId?: string;
@@ -639,6 +786,8 @@
     categoryId?: string;
     /** 绫诲埆缂栧彿锛圛d/缂栧彿浜岄�変竴锛� */
     categoryCode?: string;
+    /** 涓婄骇Id */
+    parentId?: string;
     /** 鍏抽敭瀛� */
     keywords?: string;
   }
@@ -697,10 +846,16 @@
     legalPerson?: string;
     /** 娉曚汉韬唤璇佸彿 */
     legalIdentity?: string;
+    /** 鎵�鍦ㄧ渷浠界紪鍙� */
+    provinceCode?: string;
     /** 鎵�鍦ㄧ渷浠� */
     provinceContent?: string;
+    /** 鎵�鍦ㄥ煄甯傜紪鍙� */
+    cityCode?: string;
     /** 鎵�鍦ㄥ煄甯� */
     cityContent?: string;
+    /** 鎵�灞炶涓氱紪鍙� */
+    industryTypeCode?: string;
     /** 鎵�灞炶涓� */
     industryTypeContent?: string;
     /** 涓昏惀涓氬姟 */
@@ -891,7 +1046,7 @@
     remark?: string;
     /** 瑙掕壊 */
     roles?: GetOperationUserInfosQueryResultItemRole[];
-    status?: EnumUserInfoStatus;
+    status?: EnumUserStatus;
   }
 
   interface GetOperationUserInfosQueryResultItemRole {
@@ -994,6 +1149,136 @@
     isChecked?: boolean;
   }
 
+  interface GetTaskInfoQueryResult {
+    /** Id */
+    id?: string;
+    /** 浼佷笟Id */
+    enterpriseId?: string;
+    /** 浼佷笟鍏ㄧО */
+    enterpriseName?: string;
+    /** 鍦ㄦ嫑宀椾綅鏁伴噺 */
+    taskCount?: number;
+    /** 浠诲姟鍚嶇О */
+    name?: string;
+    billingMethod?: EnumBillingMethod;
+    /** 鏈嶅姟璐� */
+    serviceFee?: number;
+    settlementCycle?: EnumSettlementCycle;
+    /** 绂忓埄 */
+    benefits?: GetTaskInfoQueryResultBenefit[];
+    /** 骞撮緞鑼冨洿鏈�灏� */
+    ageMinLimit?: number;
+    /** 骞撮緞鑼冨洿澶� */
+    ageMaxLimit?: number;
+    genderLimit?: EnumUserGender;
+    /** 璧勬牸璇佷功绫诲瀷 */
+    credentialLimits?: GetTaskInfoQueryResultCredentialLimit[];
+    /** 浠诲姟鍦扮偣鎵�灞炵渷浠界紪鍙� */
+    provinceCode?: string;
+    /** 浠诲姟鍦扮偣鎵�灞炵渷浠� */
+    provinceContent?: string;
+    /** 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� */
+    cityCode?: string;
+    /** 浠诲姟鍦扮偣鎵�灞炲煄甯� */
+    cityContent?: string;
+    /** 浠诲姟鍦扮偣鍚嶇О */
+    addressName?: string;
+    /** 浠诲姟鍦扮偣璇︾粏鍦板潃 */
+    addressDetail?: string;
+    /** 缁忓害 */
+    longitude?: number;
+    /** 绾害 */
+    latitude?: number;
+    /** 浠诲姟寮�濮嬫椂闂� */
+    beginTime?: string;
+    /** 浠诲姟缁撴潫鏃堕棿 */
+    endTime?: string;
+    /** 鍒涘缓鏃堕棿 */
+    createdTime?: string;
+    /** 鏄惁宸叉敹钘� */
+    isCollected?: boolean;
+  }
+
+  interface GetTaskInfoQueryResultBenefit {
+    /** 绂忓埄缂栧彿 */
+    benefitCode?: string;
+    /** 绂忓埄 */
+    benefitContent?: string;
+  }
+
+  interface GetTaskInfoQueryResultCredentialLimit {
+    /** 璇佷功绫诲瀷缂栧彿 */
+    typeCode?: string;
+    /** 璇佷功绫诲瀷 */
+    typeContent?: string;
+  }
+
+  interface GetTaskInfosQuery {
+    pageModel?: PagedListQueryPageModel;
+    /** 鍏抽敭瀛楋紙浠诲姟鍚嶇О锛� */
+    keywords?: string;
+    /** 鍙戝竷鏃堕棿-寮�濮� */
+    beginTime?: string;
+    /** 鍙戝竷鏃堕棿-缁撴潫 */
+    endTime?: string;
+    /** 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� */
+    cityCode?: string;
+    settlementCycle?: EnumSettlementCycle;
+    /** 鍛樺伐绂忓埄 */
+    benefitCodes?: string[];
+    genderLimit?: EnumUserGender;
+    status?: EnumTaskStatus;
+    releaseStatus?: EnumTaskReleaseStatus;
+    recommendStatus?: EnumTaskRecommendStatus;
+  }
+
+  interface GetTaskInfosQueryResultItem {
+    /** Id */
+    id?: string;
+    /** 浠诲姟鍚嶇О */
+    name: string;
+    /** 浠诲姟鍗曞彿 */
+    code?: string;
+    billingMethod?: EnumBillingMethod;
+    /** 鏈嶅姟璐� */
+    serviceFee?: number;
+    settlementCycle?: EnumSettlementCycle;
+    /** 绂忓埄 */
+    benefits?: GetTaskInfoQueryResultBenefit[];
+    genderLimit?: EnumUserGender;
+    /** 璧勬牸璇佷功绫诲瀷 */
+    credentialLimits?: GetTaskInfoQueryResultCredentialLimit[];
+    /** 浠诲姟鍦扮偣鎵�灞炵渷浠界紪鍙� */
+    provinceCode?: string;
+    /** 浠诲姟鍦扮偣鎵�灞炵渷浠� */
+    provinceContent?: string;
+    /** 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� */
+    cityCode?: string;
+    /** 浠诲姟鍦扮偣鎵�灞炲煄甯� */
+    cityContent?: string;
+    /** 浠诲姟鍦扮偣鍚嶇О */
+    addressName?: string;
+    /** 浠诲姟鍦扮偣璇︾粏鍦板潃 */
+    addressDetail?: string;
+    /** 缁忓害 */
+    longitude?: number;
+    /** 绾害 */
+    latitude?: number;
+    /** 鎶ュ悕浜烘暟 */
+    userCount?: number;
+    status?: EnumTaskStatus;
+    /** 浠诲姟寮�濮嬫椂闂� */
+    beginTime?: string;
+    /** 浠诲姟缁撴潫鏃堕棿 */
+    endTime?: string;
+    releaseStatus?: EnumTaskReleaseStatus;
+    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
+    settlementStatus?: EnumTaskSettlementStatus;
+    recommendStatus?: EnumTaskRecommendStatus;
+    /** 鍒涘缓鏃堕棿 */
+    createdTime?: string;
+  }
+
   interface GetUserInfoRolesQueryResultItem {
     /** 瑙掕壊Id */
     id?: string;
@@ -1004,6 +1289,8 @@
     /** 鏄惁閫変腑 */
     isChecked?: boolean;
   }
+
+  type GetUserResumeQueryResult = Record<string, any>;
 
   interface PagedListQueryPageModel {
     /** 琛屾暟 */
@@ -1048,6 +1335,12 @@
     pageModel?: PagedListQueryResultPageModel;
     /** 鏁版嵁 */
     data?: GetRolesQueryResultItem[];
+  }
+
+  interface PagedListQueryResultGetTaskInfosQueryResultItem {
+    pageModel?: PagedListQueryResultPageModel;
+    /** 鏁版嵁 */
+    data?: GetTaskInfosQueryResultItem[];
   }
 
   interface PagedListQueryResultPageModel {
@@ -1095,12 +1388,14 @@
   interface SaveDictionaryDataCommand {
     /** Id */
     id?: string;
-    /** 绫诲埆Id */
+    /** 绫诲埆Id锛圛d/缂栧彿浜岄�変竴锛� */
     categoryId?: string;
+    /** 绫诲埆缂栧彿锛圛d/缂栧彿浜岄�変竴锛� */
+    categoryCode?: string;
     /** 涓婄骇Id */
     parentId?: string;
     /** 缂栧彿 */
-    code?: string;
+    code: string;
     /** 鏄剧ず鍐呭 */
     content: string;
     /** 瀛楁1 */
@@ -1130,12 +1425,12 @@
     legalPerson?: string;
     /** 娉曚汉韬唤璇佸彿 */
     legalIdentity?: string;
-    /** 鎵�鍦ㄧ渷浠絀d */
-    provinceId?: string;
-    /** 鎵�鍦ㄥ煄甯侷d */
-    cityId?: string;
-    /** 鎵�灞炶涓欼d */
-    industryTypeId?: string;
+    /** 鎵�鍦ㄧ渷浠界紪鍙� */
+    provinceCode?: string;
+    /** 鎵�鍦ㄥ煄甯傜紪鍙� */
+    cityCode?: string;
+    /** 鎵�灞炶涓氱紪鍙� */
+    industryTypeCode?: string;
     /** 涓昏惀涓氬姟 */
     mainBusiness?: string;
     /** 鑱旂郴浜� */
@@ -1291,7 +1586,43 @@
     resources?: GetRoleQueryResultResource[];
   }
 
-  interface SelectQueryResultOptionGuidGetDictionaryCategorySelectQueryOption {
+  interface SaveTaskInfoCommand {
+    /** Id */
+    id?: string;
+    /** 浠诲姟鍚嶇О */
+    name: string;
+    billingMethod: EnumBillingMethod;
+    /** 鏈嶅姟璐� */
+    serviceFee: number;
+    settlementCycle: EnumSettlementCycle;
+    /** 绂忓埄缂栧彿 */
+    benefits?: string[];
+    /** 骞撮緞鑼冨洿鏈�灏� */
+    ageMinLimit: number;
+    /** 骞撮緞鑼冨洿澶� */
+    ageMaxLimit: number;
+    genderLimit: EnumUserGender;
+    /** 璧勬牸璇佷功绫诲瀷缂栧彿 */
+    credentialLimits?: string[];
+    /** 浠诲姟鍦扮偣鎵�灞炵渷浠界紪鍙� */
+    provinceCode: string;
+    /** 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� */
+    cityCode: string;
+    /** 浠诲姟鍦扮偣鍚嶇О */
+    addressName: string;
+    /** 浠诲姟鍦扮偣璇︾粏鍦板潃 */
+    addressDetail: string;
+    /** 缁忓害 */
+    longitude?: number;
+    /** 绾害 */
+    latitude?: number;
+    /** 浠诲姟寮�濮嬫椂闂� */
+    beginTime: string;
+    /** 浠诲姟缁撴潫鏃堕棿 */
+    endTime: string;
+  }
+
+  interface SelectOptionGuidGetDictionaryCategorySelectQueryOption {
     /** 鍊� */
     value?: string;
     /** 鏍囩 */
@@ -1300,13 +1631,19 @@
     data?: any;
   }
 
-  interface SelectQueryResultOptionGuidGetDictionaryDataSelectQueryResultOption {
+  interface SelectOptionStringGetDictionaryDataSelectQueryResultOption {
     /** 鍊� */
     value?: string;
     /** 鏍囩 */
     label?: string;
     /** 鏁版嵁 */
     data?: any;
+  }
+
+  interface SendVerifyCodeCommand {
+    /** 鎵嬫満鍙风爜 */
+    phoneNumber?: string;
+    templateCode?: EnumSmsTemplateType;
   }
 
   interface SetDictionaryDataIsDisabledCommand {
@@ -1358,6 +1695,18 @@
     userInfoIds?: string[];
   }
 
+  interface SetTaskInfoRecommendStatusCommand {
+    /** Id */
+    ids?: string[];
+    recommendStatus?: EnumTaskRecommendStatus;
+  }
+
+  interface SetTaskInfoReleaseStatusCommand {
+    /** Id */
+    ids?: string[];
+    releaseStatus?: EnumTaskReleaseStatus;
+  }
+
   interface SetUserInfoRolesCommand {
     /** 鐢ㄦ埛Id */
     userInfoId?: string;
@@ -1368,6 +1717,8 @@
   interface SetUserInfoStatusCommand {
     /** Id */
     ids?: string[];
-    status?: EnumUserInfoStatus;
+    status?: EnumUserStatus;
   }
+
+  type SyncHumanResourcesAreaDictionaryDataCommand = Record<string, any>;
 }
diff --git a/src/services/api/user.ts b/src/services/api/user.ts
new file mode 100644
index 0000000..a398d43
--- /dev/null
+++ b/src/services/api/user.ts
@@ -0,0 +1,81 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹� POST /api/user/user/getOperationUserInfos */
+export async function getOperationUserInfos(
+  body: API.GetOperationUserInfosQuery,
+  options?: API.RequestConfig
+) {
+  return request<API.PagedListQueryResultGetOperationUserInfosQueryResultItem>(
+    '/api/user/user/getOperationUserInfos',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json-patch+json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏌ヨ鐢ㄦ埛瑙掕壊鍒楄〃 GET /api/user/user/getUserInfoRoles */
+export async function getUserInfoRoles(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetUserInfoRolesParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetUserInfoRolesQueryResultItem[]>('/api/user/user/getUserInfoRoles', {
+    method: 'GET',
+    params: {
+      ...params,
+    },
+    ...(options || {}),
+  });
+}
+
+/** 鏌ヨ鐢ㄦ埛绠�鍘� GET /api/user/user/getUserResume */
+export async function getUserResume(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetUserResumeParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetUserResumeQueryResult>('/api/user/user/getUserResume', {
+    method: 'GET',
+    params: {
+      ...params,
+    },
+    ...(options || {}),
+  });
+}
+
+/** 璁剧疆鐢ㄦ埛淇℃伅瑙掕壊 PUT /api/user/user/setUserInfoRoles */
+export async function setUserInfoRoles(
+  body: API.SetUserInfoRolesCommand,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/user/user/setUserInfoRoles', {
+    method: 'PUT',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
+/** 璁剧疆鐢ㄦ埛淇℃伅鐘舵�� PUT /api/user/user/setUserInfoStatus */
+export async function setUserInfoStatus(
+  body: API.SetUserInfoStatusCommand,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/user/user/setUserInfoStatus', {
+    method: 'PUT',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
diff --git a/src/services/api/userInfo.ts b/src/services/api/userInfo.ts
deleted file mode 100644
index 4367d18..0000000
--- a/src/services/api/userInfo.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-/* eslint-disable */
-// @ts-ignore
-import { request } from '@/utils/request';
-
-/** 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹� POST /api/user/userInfo/getOperationUserInfos */
-export async function getOperationUserInfos(
-  body: API.GetOperationUserInfosQuery,
-  options?: API.RequestConfig
-) {
-  return request<API.PagedListQueryResultGetOperationUserInfosQueryResultItem>(
-    '/api/user/userInfo/getOperationUserInfos',
-    {
-      method: 'POST',
-      headers: {
-        'Content-Type': 'application/json-patch+json',
-      },
-      data: body,
-      ...(options || {}),
-    }
-  );
-}
-
-/** 鏌ヨ鐢ㄦ埛瑙掕壊鍒楄〃 GET /api/user/userInfo/getUserInfoRoles */
-export async function getUserInfoRoles(
-  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
-  params: API.APIgetUserInfoRolesParams,
-  options?: API.RequestConfig
-) {
-  return request<API.GetUserInfoRolesQueryResultItem[]>('/api/user/userInfo/getUserInfoRoles', {
-    method: 'GET',
-    params: {
-      ...params,
-    },
-    ...(options || {}),
-  });
-}
-
-/** 璁剧疆鐢ㄦ埛淇℃伅瑙掕壊 PUT /api/user/userInfo/setUserInfoRoles */
-export async function setUserInfoRoles(
-  body: API.SetUserInfoRolesCommand,
-  options?: API.RequestConfig
-) {
-  return request<number>('/api/user/userInfo/setUserInfoRoles', {
-    method: 'PUT',
-    headers: {
-      'Content-Type': 'application/json-patch+json',
-    },
-    data: body,
-    ...(options || {}),
-  });
-}
-
-/** 璁剧疆鐢ㄦ埛淇℃伅鐘舵�� PUT /api/user/userInfo/setUserInfoStatus */
-export async function setUserInfoStatus(
-  body: API.SetUserInfoStatusCommand,
-  options?: API.RequestConfig
-) {
-  return request<number>('/api/user/userInfo/setUserInfoStatus', {
-    method: 'PUT',
-    headers: {
-      'Content-Type': 'application/json-patch+json',
-    },
-    data: body,
-    ...(options || {}),
-  });
-}
diff --git a/src/utils/common/area.ts b/src/utils/common/area.ts
index cffe5d7..485b749 100644
--- a/src/utils/common/area.ts
+++ b/src/utils/common/area.ts
@@ -1,13 +1,14 @@
 import { AreaType } from '@/constants';
 import _ from 'lodash';
 
-export interface AreaTreeNode extends API.AreaDto {
-  children?: AreaTreeNode[];
-}
+// type formatAreaListToTreeOptions = {
+//   parentId?: string;
+//   maxLayer?: number;
+// };
 
 export function formatAreaListToTree(
-  areaDataList: API.AreaDto[],
-  parentId: number,
+  areaDataList: API.AreaTreeNode[],
+  parentId = '',
   maxLayer = AreaType.Area
 ) {
   const treeNodeList: API.AreaTreeNode[] = [];
diff --git a/src/views/EmploymentManage/CheckManage.vue b/src/views/EmploymentManage/CheckManage.vue
index 5342c37..7890416 100644
--- a/src/views/EmploymentManage/CheckManage.vue
+++ b/src/views/EmploymentManage/CheckManage.vue
@@ -66,7 +66,6 @@
 } from '@bole-core/components';
 import { CheckManageColumns } from './constants';
 import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
-import { OrderInputType } from '@bole-core/core';
 import CheckManageDialog from './components/CheckManageDialog.vue';
 
 defineOptions({
@@ -137,7 +136,7 @@
   {
     defaultExtraParams: {
       searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
     queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
diff --git a/src/views/EmploymentManage/EmploymentManage.vue b/src/views/EmploymentManage/EmploymentManage.vue
index 452e7f8..3750b03 100644
--- a/src/views/EmploymentManage/EmploymentManage.vue
+++ b/src/views/EmploymentManage/EmploymentManage.vue
@@ -3,49 +3,41 @@
     <AppContainer>
       <ProTableQueryFilterBar @on-reset="reset">
         <template #query>
-          <QueryFilterItem tip-content="褰曠敤鐘舵��">
+          <QueryFilterItem tip-content="浠诲姟鐘舵��">
             <FieldRadio
-              v-model="extraParamState.flexEnterpriseSettingStatus"
-              :value-enum="[
-                { label: '宸插畨鎺�', value: 1 },
-                { label: '寰呭畨鎺�', value: 0 },
-              ]"
+              v-model="extraParamState.status"
+              :value-enum="EnumTaskStatusText"
               buttonStyle
               showAllBtn
               @change="getList()"
             />
           </QueryFilterItem>
-          <QueryFilterItem tip-content="瀹炲悕鐘舵��">
+          <QueryFilterItem tip-content="鍙戝竷鐘舵��">
             <FieldRadio
-              v-model="extraParamState.flexEnterpriseSettingStatus"
-              :value-enum="[
-                { label: '鍙戝竷涓�', value: 1 },
-                { label: '宸插仠姝�', value: 0 },
-              ]"
+              v-model="extraParamState.releaseStatus"
+              :value-enum="EnumTaskReleaseStatusText"
               buttonStyle
               showAllBtn
               @change="getList()"
             />
           </QueryFilterItem>
-          <QueryFilterItem>
+          <QueryFilterItem tip-content="鍙戝竷鏃堕棿">
             <FieldDatePicker
-              v-model="extraParamState.flexEnterpriseSettingStatus"
+              v-model="extraParamState.time"
               type="daterange"
               range-separator="~"
-              start-placeholder="璧峰鏃ユ湡"
-              end-placeholder="鎴鏃ユ湡"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
               clearable
               @change="getList()"
-              tooltipContent="鍙戝竷鏃堕棿"
             ></FieldDatePicker>
           </QueryFilterItem>
           <QueryFilterItem>
             <SearchInput
-              v-model="extraParamState.searchWord"
-              style="width: 250px"
+              v-model="extraParamState.keywords"
+              style="width: 260px"
               placeholder="浠诲姟鍚嶇О"
               @on-click-search="getList"
-              @keyup.enter="getList()"
             >
             </SearchInput>
           </QueryFilterItem>
@@ -59,8 +51,10 @@
         :columns="EmploymentManageColumns"
         :operationBtns="operationBtns"
       >
-        <template #signNum="{ row }">
-          <el-button link type="primary" @click="goSignList(row)">{{ row.signNum || 0 }}</el-button>
+        <template #userCount="{ row }">
+          <el-button link type="primary" @click="goSignList(row)">{{
+            row.userCount || 0
+          }}</el-button>
         </template>
       </ProTableV2>
     </AppContainer>
@@ -81,9 +75,12 @@
   defineOperationBtns,
 } from '@bole-core/components';
 import { EmploymentManageColumns } from './constants';
-import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
-import { OrderInputType } from '@bole-core/core';
+import { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants';
 import { useGlobalEventContext } from '@/hooks';
+import * as taskServices from '@/services/api/task';
+import { format } from '@/utils';
+import { ModelValueType } from 'element-plus';
+import { Message } from '@bole-core/core';
 
 defineOptions({
   name: 'EmploymentManageList',
@@ -105,7 +102,7 @@
       name: '璇︽儏',
     },
     emits: {
-      onClick: (role) => goDetail(role),
+      onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row),
     },
   },
   {
@@ -114,10 +111,12 @@
       name: '鍙戝竷',
     },
     emits: {
-      onClick: (role) => handlePublish(role),
+      onClick: (row: API.GetTaskInfosQueryResultItem) =>
+        setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.InProcess),
     },
     extraProps: {
-      hide: (row) => false,
+      hide: (row: API.GetTaskInfosQueryResultItem) =>
+        row.releaseStatus === EnumTaskReleaseStatus.InProcess,
     },
   },
   {
@@ -126,10 +125,12 @@
       name: '鍋滄鍙戝竷',
     },
     emits: {
-      onClick: (role) => handleUnPublish(role),
+      onClick: (row: API.GetTaskInfosQueryResultItem) =>
+        setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.Stopped),
     },
     extraProps: {
-      hide: (row) => false,
+      hide: (row: API.GetTaskInfosQueryResultItem) =>
+        row.releaseStatus === EnumTaskReleaseStatus.Stopped,
     },
   },
   {
@@ -138,7 +139,7 @@
       name: '瀹夋帓',
     },
     emits: {
-      onClick: (role) => handleArrange(role),
+      onClick: (row: API.GetTaskInfosQueryResultItem) => handleArrange(row),
     },
   },
 ]);
@@ -175,17 +176,20 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetFlexEnterpriseInput = {
+      let params: API.GetTaskInfosQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus,
-        searchWord: extraParamState.searchWord,
+        keywords: extraParamState.keywords,
+        status: extraParamState.status,
+        releaseStatus: extraParamState.releaseStatus,
+        beginTime: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        endTime: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
       };
 
-      let res = await flexEnterpriseServices.getFlexEnterpriseList(params, {
+      let res = await taskServices.getTaskInfos(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -195,23 +199,46 @@
   },
   {
     defaultExtraParams: {
-      searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      keywords: '',
+      status: '' as any as EnumTaskStatus,
+      releaseStatus: '' as any as EnumTaskReleaseStatus,
+      time: [] as unknown as ModelValueType,
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
-    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
-    columnsRenderProps: {},
+    queryKey: ['taskServices/getTaskInfos'],
+    columnsRenderProps: {
+      billingMethod: { type: 'enum', valueEnum: EnumBillingMethodText },
+      settlementCycle: { type: 'enum', valueEnum: EnumSettlementCycleText },
+      genderLimit: { type: 'enum', valueEnum: EnumUserGenderText },
+      status: { type: 'enum', valueEnum: EnumTaskStatusText },
+      releaseStatus: { type: 'enum', valueEnum: EnumTaskReleaseStatusText },
+      beginTime: { type: 'date', format: 'YYYY-MM-DD' },
+      endTime: { type: 'date', format: 'YYYY-MM-DD' },
+      serviceFee: { type: 'money' },
+    },
   }
 );
 
-function handlePublish(row) {
-  console.log(row);
-}
-function handleUnPublish(row) {
-  console.log(row);
+async function setTaskInfoReleaseStatus(
+  row: API.GetTaskInfosQueryResultItem,
+  releaseStatus: EnumTaskReleaseStatus
+) {
+  try {
+    await Message.tipMessage(`纭瑕�${EnumTaskReleaseStatusTextForTip[releaseStatus]}鍚楋紵`);
+    let params: API.SetTaskInfoReleaseStatusCommand = {
+      ids: [row.id],
+      releaseStatus: releaseStatus,
+    };
+    let res = await taskServices.setTaskInfoReleaseStatus(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
 }
 
-function handleArrange(row) {
+function handleArrange(row: API.GetTaskInfosQueryResultItem) {
   router.push({
     name: 'EmploymentManageArrange',
     params: {
@@ -219,7 +246,7 @@
     },
   });
 }
-function goAddOrEdit(row?) {
+function goAddOrEdit(row?: API.GetTaskInfosQueryResultItem) {
   router.push({
     name: 'AddOrEditEmployment',
     params: {
@@ -227,7 +254,7 @@
     },
   });
 }
-function goDetail(row) {
+function goDetail(row: API.GetTaskInfosQueryResultItem) {
   router.push({
     name: 'EmploymentManageDetail',
     params: {
@@ -236,7 +263,7 @@
   });
 }
 
-function goSignList(row) {
+function goSignList(row: API.GetTaskInfosQueryResultItem) {
   router.push({
     name: 'EmploymentSignList',
     params: {
diff --git a/src/views/EmploymentManage/EmploymentManageArrange.vue b/src/views/EmploymentManage/EmploymentManageArrange.vue
index a88e530..e587122 100644
--- a/src/views/EmploymentManage/EmploymentManageArrange.vue
+++ b/src/views/EmploymentManage/EmploymentManageArrange.vue
@@ -75,7 +75,7 @@
   defineOperationBtns,
 } from '@bole-core/components';
 import { EmploymentArrangeColumns } from './constants';
-import { OrderInputType, Message } from '@bole-core/core';
+import { Message } from '@bole-core/core';
 import { FlexEnterpriseSettingStatus } from '@/constants';
 
 defineOptions({
@@ -137,7 +137,7 @@
   {
     defaultExtraParams: {
       searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
     queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
diff --git a/src/views/EmploymentManage/EmploymentSignList.vue b/src/views/EmploymentManage/EmploymentSignList.vue
index 4cacc5d..c025329 100644
--- a/src/views/EmploymentManage/EmploymentSignList.vue
+++ b/src/views/EmploymentManage/EmploymentSignList.vue
@@ -53,7 +53,7 @@
   UploadUserFile,
 } from '@bole-core/components';
 import { EmploymentSignColumns } from './constants/columns';
-import { OrderInputType, Message } from '@bole-core/core';
+import {  Message } from '@bole-core/core';
 import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
 import StaffInfoDialog from '@/views/FlexJobManage/components/StaffInfoDialog.vue';
 import { convertApi2FormUrlOnlyOne } from '@/utils';
@@ -142,7 +142,7 @@
   {
     defaultExtraParams: {
       searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
     queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
diff --git a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
index 87cb1d4..1060e6b 100644
--- a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
+++ b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
@@ -12,24 +12,19 @@
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="鏈嶅姟璐�:" prop="salaryType">
+              <ProFormItemV2 label="鏈嶅姟璐�:" prop="billingMethod">
                 <RadioWithExtra
-                  v-model="form.salaryType"
-                  :value-enum="[
-                    { label: '鎸夋湀', value: 1 },
-                    { label: '鎸夋棩', value: 2 },
-                  ]"
+                  v-model="form.billingMethod"
+                  :value-enum="EnumBillingMethodText"
                   :showExtra="true"
                   :button-style="false"
                 >
                   <template #extra>
                     <ProFormInputNumber
                       :controls="false"
-                      :min="0"
-                      :max="999"
-                      v-model="form.name"
+                      v-model="form.serviceFee"
                       placeholder="璇疯緭鍏�"
-                      :unit="form.salaryType === 1 ? '鍏�/鏈�' : '鍏�/澶�'"
+                      :unit="EnumBillingMethodUnitText[form.billingMethod]"
                     ></ProFormInputNumber>
                   </template>
                 </RadioWithExtra>
@@ -38,10 +33,10 @@
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="缁撶畻鏂瑰紡:" prop="salaryType">
+              <ProFormItemV2 label="缁撶畻鏂瑰紡:" prop="settlementCycle">
                 <ProFormRadio
-                  v-model="form.salaryType"
-                  :value-enum="[{ label: '鏄�', value: 1 }]"
+                  v-model="form.settlementCycle"
+                  :value-enum="EnumSettlementCycleText"
                   :button-style="false"
                 ></ProFormRadio>
               </ProFormItemV2>
@@ -51,7 +46,8 @@
             <ProFormColItem :span="12">
               <ProFormItemV2 label="绂忓埄:" prop="benefits">
                 <el-checkbox
-                  v-model="state.checBenefitskAll"
+                  v-if="!isDetail"
+                  v-model="state.checkBenefitsAll"
                   style="margin-right: 30px"
                   :indeterminate="state.isBenefitsIndeterminate"
                   @change="handleCheckBenefitsAllChange"
@@ -59,9 +55,7 @@
                 >
                 <ProFormCheckbox
                   v-model="form.benefits"
-                  :value-enum="[]"
-                  enumLabelKey="name"
-                  enum-value-key="id"
+                  :value-enum="welfareList"
                   @change="handleCheckedBenefitsServicesChange"
                 ></ProFormCheckbox>
               </ProFormItemV2>
@@ -72,15 +66,15 @@
               <ProFormItemV2 label="骞撮緞鑼冨洿:" prop="ageRange" class="form-age-range">
                 <ProFormInputNumber
                   :controls="false"
-                  :min="0"
-                  v-model="form.ageStart"
+                  :min="1"
+                  v-model="form.ageMinLimit"
                   placeholder="璇疯緭鍏�"
                 ></ProFormInputNumber>
                 <div class="form-input-separator">鑷�</div>
                 <ProFormInputNumber
                   :controls="false"
-                  :min="0"
-                  v-model="form.ageEnd"
+                  :min="1"
+                  v-model="form.ageMaxLimit"
                   placeholder="璇疯緭鍏�"
                 ></ProFormInputNumber>
               </ProFormItemV2>
@@ -88,46 +82,62 @@
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="鎬у埆瑕佹眰:" prop="sexRequirement" required>
+              <ProFormItemV2 label="鎬у埆瑕佹眰:" prop="genderLimit">
                 <ProFormRadio
-                  v-model="form.sexRequirement"
-                  :value-enum="[{ label: '涓嶉檺', value: 1 }]"
+                  v-model="form.genderLimit"
+                  :value-enum="EnumUserGenderTextForEdit"
+                  show-all-btn
+                  :all-btn-label="'涓嶉檺'"
+                  :allBtnValue="0"
                 ></ProFormRadio>
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="璧勬牸璇佷功:" prop="benefits">
+              <ProFormItemV2 label="璧勬牸璇佷功:" prop="credentialLimits">
                 <el-checkbox
-                  v-model="state.checBenefitskAll"
+                  v-if="!isDetail"
+                  v-model="state.checkCertificatesAll"
                   style="margin-right: 30px"
-                  :indeterminate="state.isBenefitsIndeterminate"
-                  @change="handleCheckBenefitsAllChange"
+                  :indeterminate="state.isCertificatesIndeterminate"
+                  @change="handleCheckCertificatesAllChange"
                   >鍏ㄩ��</el-checkbox
                 >
                 <ProFormCheckbox
-                  v-model="form.benefits"
-                  :value-enum="[]"
-                  enumLabelKey="name"
-                  enum-value-key="id"
-                  @change="handleCheckedBenefitsServicesChange"
+                  v-model="form.credentialLimits"
+                  :value-enum="certificateTypeList"
+                  @change="handleCheckedCertificatesServicesChange"
                 ></ProFormCheckbox>
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="浠诲姟鍦扮偣:" prop="areaList">
-                <!-- <ProFromAddressSelect :areaList="form.areaList" :address="form.address" /> -->
+              <ProFormItemV2 label="浠诲姟鍦扮偣:" prop="weMapInfo">
+                <WeMap v-if="!isDetail" v-model="form.weMapInfo" />
+                <div v-else>
+                  {{
+                    `${form.weMapInfo.provinceName ?? ''}${form.weMapInfo.cityName ?? ''}${
+                      form.weMapInfo.addressName ?? ''
+                    }`
+                  }}
+                </div>
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="浠诲姟鏃堕棿:" prop="name">
+              <ProFormItemV2 label="璇︾粏鍦板潃:" prop="addressDetail">
+                <ProFormText v-model.trim="form.addressDetail" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="浠诲姟鏃堕棿:" prop="time">
                 <ProFormDatePicker
-                  v-model="form.name"
+                  v-model="form.time"
                   type="daterange"
                   range-separator="鑷�"
                   start-placeholder="寮�濮嬫棩鏈�"
@@ -160,10 +170,19 @@
   ProFormDatePicker,
   ProFormCheckbox,
 } from '@bole-core/components';
-import { FormInstance } from 'element-plus';
+import { FormInstance, ModelValueType } from 'element-plus';
 import { Message } from '@bole-core/core';
 import { useQuery } from '@tanstack/vue-query';
 import { useGlobalEventContext, useRouteView } from '@/hooks';
+import * as taskServices from '@/services/api/task';
+import {
+  EnumUserGenderTextForEdit,
+  EnumBillingMethodText,
+  EnumBillingMethodUnitText,
+  EnumSettlementCycleText,
+} from '@/constants';
+import { format } from '@/utils';
+import dayjs from 'dayjs';
 
 defineOptions({
   name: 'AddOrEditEmploymentView',
@@ -179,38 +198,71 @@
 const eventContext = useGlobalEventContext();
 
 const { closeViewPush } = useRouteView();
+const { dictionaryDataList: welfareList } = useDictionaryDataSelect({
+  categoryCode: CategoryCode.Welfare,
+});
+const { dictionaryDataList: certificateTypeList } = useDictionaryDataSelect({
+  categoryCode: CategoryCode.CertificateType,
+});
 
 const state = reactive({
-  checBenefitskAll: false,
+  checkBenefitsAll: false,
   isBenefitsIndeterminate: false,
+
+  checkCertificatesAll: false,
+  isCertificatesIndeterminate: false,
 });
 
 const form = reactive({
   name: '',
-  salaryType: 1,
-  ageStart: 0,
-  ageEnd: 0,
-  sexRequirement: 1,
-  manNumber: 0,
-  womanNumber: 0,
-  benefits: [],
-  areaList: [] as number[],
-  address: '',
+  billingMethod: '' as any as EnumBillingMethod,
+  serviceFee: 0,
+  settlementCycle: '' as any as EnumSettlementCycle,
+  benefits: [] as string[],
+  ageMinLimit: 0,
+  ageMaxLimit: 0,
+  genderLimit: 0 as any as EnumUserGender,
+  credentialLimits: [] as string[],
+  time: [] as unknown as ModelValueType,
+  weMapInfo: {} as WeMapModel,
+  addressDetail: '',
 });
 
 const { isLoading } = useQuery({
-  queryKey: ['flexTaskServices/getFlexTaskDetail', id],
+  queryKey: ['taskServices/getTaskInfo', id],
   queryFn: async () => {
-    return await flexTaskServices.getFlexTaskDetail(
+    return await taskServices.getTaskInfo(
       { id: id },
       {
         showLoading: false,
       }
     );
   },
-  placeholderData: () => ({} as API.GetFlexTaskDetailForBackOutput),
+  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
   onSuccess(data) {
-    form.name = data.taskName;
+    form.name = data.name;
+    form.billingMethod = data.billingMethod;
+    form.serviceFee = data.serviceFee;
+    form.settlementCycle = data.settlementCycle;
+    form.benefits = data.benefits?.map((x) => x.benefitCode) ?? [];
+    form.ageMinLimit = data.ageMinLimit;
+    form.ageMaxLimit = data.ageMaxLimit;
+    form.genderLimit = data.genderLimit;
+    form.credentialLimits = data.credentialLimits?.map((x) => x.typeCode) ?? [];
+    form.time = [
+      format(data.beginTime, 'YYYY-MM-DD 00:00:00'),
+      format(data.endTime, 'YYYY-MM-DD 23:59:59'),
+    ];
+    form.weMapInfo = {
+      latitude: data.latitude,
+      longitude: data.longitude,
+      provinceName: data.provinceContent,
+      cityName: data.cityContent,
+      provinceCode: data.provinceCode,
+      cityCode: data.cityCode,
+      addressName: data.addressName,
+    };
+    form.addressDetail = data.addressDetail;
   },
   enabled: isEdit,
 });
@@ -233,8 +285,30 @@
 }
 async function submit() {
   try {
-    let params = {};
-    let res;
+    console.log('form.weMapInfo: ', form.weMapInfo);
+    let params: API.SaveTaskInfoCommand = {
+      name: form.name,
+      billingMethod: form.billingMethod,
+      serviceFee: form.serviceFee,
+      settlementCycle: form.settlementCycle,
+      benefits: form.benefits,
+      ageMinLimit: form.ageMinLimit,
+      ageMaxLimit: form.ageMaxLimit,
+      genderLimit: form.genderLimit,
+      credentialLimits: form.credentialLimits,
+      provinceCode: form.weMapInfo.provinceCode,
+      cityCode: form.weMapInfo.cityCode,
+      addressName: form.weMapInfo.addressName,
+      addressDetail: form.addressDetail,
+      longitude: form.weMapInfo.longitude,
+      latitude: form.weMapInfo.latitude,
+      beginTime: dayjs(form.time[0]).format('YYYY-MM-DD 00:00:00'),
+      endTime: dayjs(form.time[1]).format('YYYY-MM-DD 23:59:59'),
+    };
+    if (isEdit) {
+      params.id = id;
+    }
+    let res = await taskServices.saveTaskInfo(params);
     if (res) {
       Message.successMessage('鎿嶄綔鎴愬姛');
       eventContext.emit(isEdit ? 'employment:edit' : 'employment:add');
@@ -243,9 +317,36 @@
   } catch (error) {}
 }
 
-function handleCheckBenefitsAllChange() {}
+function handleCheckBenefitsAllChange(val: boolean) {
+  form.benefits = val
+    ? welfareList.value.map((item) => {
+        return item.value;
+      })
+    : [];
+  state.isBenefitsIndeterminate = false;
+}
 
-function handleCheckedBenefitsServicesChange() {}
+function handleCheckedBenefitsServicesChange(value: string[]) {
+  const checkedCount = value.length;
+  state.checkBenefitsAll = checkedCount === welfareList.value.length;
+  state.isBenefitsIndeterminate = checkedCount > 0 && checkedCount < welfareList.value.length;
+}
+
+function handleCheckCertificatesAllChange(val: boolean) {
+  form.credentialLimits = val
+    ? certificateTypeList.value.map((item) => {
+        return item.value;
+      })
+    : [];
+  state.isCertificatesIndeterminate = false;
+}
+
+function handleCheckedCertificatesServicesChange(value: string[]) {
+  const checkedCount = value.length;
+  state.checkCertificatesAll = checkedCount === certificateTypeList.value.length;
+  state.isCertificatesIndeterminate =
+    checkedCount > 0 && checkedCount < certificateTypeList.value.length;
+}
 </script>
 <style lang="scss" scoped>
 @use '@/style/common.scss' as *;
diff --git a/src/views/EmploymentManage/components/CheckManageDialog.vue b/src/views/EmploymentManage/components/CheckManageDialog.vue
index b5e73cb..1c93c62 100644
--- a/src/views/EmploymentManage/components/CheckManageDialog.vue
+++ b/src/views/EmploymentManage/components/CheckManageDialog.vue
@@ -27,7 +27,6 @@
   defineOperationBtns,
   useTable,
 } from '@bole-core/components';
-import { OrderInputType } from '@bole-core/core';
 
 defineOptions({
   name: 'EnterpriseConsumptionDetailDialog',
@@ -107,7 +106,7 @@
   },
   {
     defaultExtraParams: {
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
     },
     queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
     columnsRenderProps: {},
diff --git a/src/views/EmploymentManage/constants/columns.ts b/src/views/EmploymentManage/constants/columns.ts
index 6b8c412..7a2d70c 100644
--- a/src/views/EmploymentManage/constants/columns.ts
+++ b/src/views/EmploymentManage/constants/columns.ts
@@ -8,52 +8,52 @@
   },
   {
     id: '2',
-    enCode: 'name',
+    enCode: 'code',
     name: '浠诲姟鍗曞彿',
   },
   {
     id: '3',
-    enCode: 'name',
+    enCode: 'billingMethod',
     name: '缁撶畻鍛ㄦ湡',
   },
   {
     id: '4',
-    enCode: 'name',
+    enCode: 'serviceFee',
     name: '鏈嶅姟璐归噾棰�',
   },
   {
     id: '5',
-    enCode: 'name',
+    enCode: 'settlementCycle',
     name: '缁撶畻鏂瑰紡',
   },
   {
     id: '6',
-    enCode: 'name',
+    enCode: 'genderLimit',
     name: '鎬у埆瑕佹眰',
   },
   {
     id: '7',
-    enCode: 'signNum',
+    enCode: 'userCount',
     name: '鎶ュ悕浜烘暟',
   },
   {
     id: '8',
-    enCode: 'name',
+    enCode: 'status',
     name: '浠诲姟鐘舵��',
   },
   {
     id: '9',
-    enCode: 'name',
+    enCode: 'beginTime',
     name: '鍙戝竷鏃ユ湡',
   },
   {
     id: '10',
-    enCode: 'name',
+    enCode: 'endTime',
     name: '缁撴潫鏃ユ湡',
   },
   {
     id: '11',
-    enCode: 'name',
+    enCode: 'releaseStatus',
     name: '鍙戝竷鐘舵��',
   },
 ]);
diff --git a/src/views/FinanceManage/components/DistributionDetailView.vue b/src/views/FinanceManage/components/DistributionDetailView.vue
index 10d3f52..222e5b3 100644
--- a/src/views/FinanceManage/components/DistributionDetailView.vue
+++ b/src/views/FinanceManage/components/DistributionDetailView.vue
@@ -22,7 +22,6 @@
 // import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
 import { DistributionDetailColumns } from '../constants';
 import { FlexEnterpriseSettingStatus } from '@/constants';
-import { OrderInputType } from '@bole-core/core';
 
 defineOptions({
   name: 'DistributionDetailView',
@@ -71,7 +70,7 @@
   {
     defaultExtraParams: {
       searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
     queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
diff --git a/src/views/FinanceManage/components/UsageDetailView.vue b/src/views/FinanceManage/components/UsageDetailView.vue
index 69dd4ab..d4cfad9 100644
--- a/src/views/FinanceManage/components/UsageDetailView.vue
+++ b/src/views/FinanceManage/components/UsageDetailView.vue
@@ -12,7 +12,6 @@
 // import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
 import { UsageDetailColumns } from '../constants';
 import { FlexEnterpriseSettingStatus } from '@/constants';
-import { OrderInputType } from '@bole-core/core';
 
 defineOptions({
   name: 'UsageDetailView',
@@ -59,7 +58,7 @@
   {
     defaultExtraParams: {
       searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
     queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
diff --git a/src/views/FlexJobManage/FlexJobManage.vue b/src/views/FlexJobManage/FlexJobManage.vue
index 9661fc8..d89e356 100644
--- a/src/views/FlexJobManage/FlexJobManage.vue
+++ b/src/views/FlexJobManage/FlexJobManage.vue
@@ -134,7 +134,7 @@
 } from '@bole-core/components';
 import { FlexJobManageColumns } from './constants';
 import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
-import { OrderInputType, Message } from '@bole-core/core';
+import { Message } from '@bole-core/core';
 import { convertApi2FormUrlOnlyOne, downloadFileByUrl } from '@/utils';
 import StaffInfoDialog from './components/StaffInfoDialog.vue';
 import BatchImportDialog from './components/BatchImportDialog.vue';
@@ -242,7 +242,7 @@
   {
     defaultExtraParams: {
       searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
     queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
index ad92f39..97cf434 100644
--- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -133,7 +133,7 @@
 import { Edit, Upload } from '@element-plus/icons-vue';
 import { SettlementListColumns } from './constants';
 import { useQuery } from '@tanstack/vue-query';
-import { downloadFileByUrl, OrderInputType } from '@bole-core/core';
+import { downloadFileByUrl } from '@bole-core/core';
 
 defineOptions({
   name: 'ServiceChargeDetail',
@@ -199,7 +199,7 @@
   {
     defaultExtraParams: {
       searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
     },
     queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
     columnsRenderProps: {},
diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManage.vue
index 1f00249..ad975a6 100644
--- a/src/views/ServiceChargeManage/ServiceChargeManage.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -109,7 +109,6 @@
 } from '@bole-core/components';
 import { ServiceChargeManageColumns } from './constants';
 import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
-import { OrderInputType } from '@bole-core/core';
 import { downloadFileByUrl } from '@/utils';
 
 defineOptions({
@@ -195,7 +194,7 @@
   {
     defaultExtraParams: {
       searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
     queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
diff --git a/types/api.d.ts b/types/api.d.ts
index 5c800b8..5771ec0 100644
--- a/types/api.d.ts
+++ b/types/api.d.ts
@@ -13,4 +13,19 @@
     mock?: boolean;
     customErrorHandler?: (error: any) => boolean;
   }
+
+    interface AreaTreeNode  {
+    children?: AreaTreeNode[];
+    /** 缂栫爜 */
+    areaCode?: string;
+    /** 鐖剁骇缂栫爜 */
+    parentCode?: string;
+    /** 鍚嶇О */
+    areaName?: string;
+    /** 1鐪� 2甯� 3鍖� 4闀� */
+    layer?: number;
+    /** 鎺掑簭 */
+    sort?: number;
+    id?: string
+  }
 }
diff --git a/types/global.d.ts b/types/global.d.ts
index 33ce661..4a7ea86 100644
--- a/types/global.d.ts
+++ b/types/global.d.ts
@@ -131,16 +131,17 @@
     errorLog: string | Array<'production' | 'development'>;
   }
 
-  interface WeMapModel {
+   interface WeMapModel {
     latitude?: number;
     longitude?: number;
     provinceName?: string;
     cityName?: string;
     countyName?: string;
-    provinceCode?: number;
-    cityCode?: number;
-    countyCode?: number;
+    provinceCode?: string;
+    cityCode?: string;
+    countyCode?: string;
     address?: string;
+    addressName?: string;
   }
 
   interface CommonAnnexItem {

--
Gitblit v1.9.1