From 4e2b08ec7c558498592a1e9b32bae8016b0906ac Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 08 八月 2025 10:54:10 +0800
Subject: [PATCH] fix: s

---
 packages/services/apiV2/dictionary.ts                                                            |   36 
 packages/constants/task.ts                                                                       |  214 ----------
 apps/bMiniApp/src/pages/workbenches/InnerPage.vue                                                |   13 
 apps/bMiniApp/src/subpackages/task/publishTask/publishTask.vue                                   |    2 
 apps/bMiniApp/src/constants/app.ts                                                               |    2 
 apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/jobApplicationManage.vue |    6 
 packages/constants/dic.ts                                                                        |   46 ++
 packages/services/apiV2/index.ts                                                                 |   16 
 packages/hooks/area.ts                                                                           |  107 ++---
 apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue                                     |  247 +++++++-----
 apps/cMiniApp/src/app.config.ts                                                                  |    2 
 packages/components/src/Input/ChooseInputWithCheckbox.vue                                        |    4 
 packages/constants/apiEnum.ts                                                                    |   28 +
 apps/bMiniApp/src/pages/home/index.vue                                                           |    4 
 packages/components/src/ActionSheet/CheckboxActionSheet.vue                                      |    6 
 packages/components/src/Input/ChooseLocationInput.vue                                            |    1 
 packages/hooks/dic.ts                                                                            |   42 +
 apps/bMiniApp/types/global.d.ts                                                                  |    7 
 apps/bMiniApp/project.config.json                                                                |    2 
 packages/services/apiV2/user.ts                                                                  |   81 ++++
 types/api.d.ts                                                                                   |   16 
 /dev/null                                                                                        |   66 ---
 apps/cMiniApp/src/subpackages/city/citySelect/citySelect.vue                                     |    2 
 packages/utils/area.ts                                                                           |   10 
 packages/services/apiV2/task.ts                                                                  |   42 +
 packages/services/apiV2/typings.d.ts                                                             |  110 +++++
 packages/components/types/global.d.ts                                                            |    7 
 27 files changed, 595 insertions(+), 524 deletions(-)

diff --git a/apps/bMiniApp/project.config.json b/apps/bMiniApp/project.config.json
index b424d15..8c102f7 100644
--- a/apps/bMiniApp/project.config.json
+++ b/apps/bMiniApp/project.config.json
@@ -51,6 +51,6 @@
         "ignore": [],
         "include": []
     },
-    "appid": "wx88251c84f5cd886b",
+    "appid": "wxb9e0baf4f87aa0de",
     "projectname": "bMiniApp"
 }
\ No newline at end of file
diff --git a/apps/bMiniApp/src/constants/app.ts b/apps/bMiniApp/src/constants/app.ts
index bcda41b..cd671f7 100644
--- a/apps/bMiniApp/src/constants/app.ts
+++ b/apps/bMiniApp/src/constants/app.ts
@@ -1,6 +1,6 @@
 import { EnumUserType, EnumClientType } from '@12333/constants';
 
 export const AppLocalConfig = {
-  userType: EnumUserType.Operation,
+  userType: EnumUserType.Enterprise,
   clientType: EnumClientType.PcWeb,
 };
diff --git a/apps/bMiniApp/src/pages/home/index.vue b/apps/bMiniApp/src/pages/home/index.vue
index 80b0d24..c62da08 100644
--- a/apps/bMiniApp/src/pages/home/index.vue
+++ b/apps/bMiniApp/src/pages/home/index.vue
@@ -15,13 +15,13 @@
         </div>
         <div class="reset-localtion" @click="resetLocation">閲嶆柊瀹氫綅</div>
       </div>
-      <div class="home-banner-wrapper">
+      <!-- <div class="home-banner-wrapper">
         <nut-swiper :auto-play="3000">
           <nut-swiper-item v-for="(item, index) in list" :key="index">
             <img :src="item" class="banner-img" draggable="false" />
           </nut-swiper-item>
         </nut-swiper>
-      </div>
+      </div> -->
     </div>
     <ProTabs
       v-model="queryState.orderType"
diff --git a/apps/bMiniApp/src/pages/workbenches/InnerPage.vue b/apps/bMiniApp/src/pages/workbenches/InnerPage.vue
index 22fe2ec..5e34c03 100644
--- a/apps/bMiniApp/src/pages/workbenches/InnerPage.vue
+++ b/apps/bMiniApp/src/pages/workbenches/InnerPage.vue
@@ -1,12 +1,12 @@
 <template>
   <ContentView>
-    <div class="workbenches-banner-wrapper">
+    <!-- <div class="workbenches-banner-wrapper">
       <nut-swiper :auto-play="3000">
         <nut-swiper-item v-for="(item, index) in list" :key="index">
           <img :src="item" class="banner-img" draggable="false" />
         </nut-swiper-item>
       </nut-swiper>
-    </div>
+    </div> -->
 
     <Cell :show-title="false" class="workbenches-cell">
       <CellChunk title="浠诲姟">
@@ -47,6 +47,7 @@
 import IconPersonManage from '@/assets/workbenches/icon-person-manage.png';
 import IconPublishTask from '@/assets/workbenches/icon-publish-task.png';
 import IconTaskManage from '@/assets/workbenches/icon-task-manage.png';
+import { useAccessLogin } from '@/hooks';
 
 defineOptions({
   name: 'InnerPage',
@@ -59,15 +60,15 @@
   'https://storage.360buyimg.com/jdc-article/fristfabu.jpg',
 ]);
 
-function goPage(routeName: string) {
+const goPage = useAccessLogin((routeName: string) => {
   Taro.navigateTo({
     url: routeName,
   });
-}
+});
 
-function goPublishTask() {
+const goPublishTask = () => {
   goPage(RouterPath.publishTask);
-}
+};
 
 function goPersonManage() {
   goPage(RouterPath.jobApplicationManage);
diff --git a/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/jobApplicationManage.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/jobApplicationManage.vue
index ea7e836..ffe2e4a 100644
--- a/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/jobApplicationManage.vue
+++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/jobApplicationManage.vue
@@ -1,9 +1,5 @@
 <template>
-  <PageLayoutWithBg
-    class="jobApplicationManage-page-wrapper"
-    :title="'搴旇仒绠$悊'"
-    :need-auth="false"
-  >
+  <PageLayoutWithBg class="jobApplicationManage-page-wrapper" :title="'搴旇仒绠$悊'">
     <InnerPage></InnerPage>
   </PageLayoutWithBg>
 </template>
diff --git a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
index caf284e..8e810c9 100644
--- a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
@@ -1,32 +1,32 @@
 <template>
   <ContentScrollView :paddingH="false">
     <nut-form :model-value="form" ref="formRef" :rules="rules">
-      <nut-form-item label="浠诲姟鍚嶇О:" class="bole-form-item" prop="taskName" label-width="90px">
-        <nut-input v-model="form.taskName" placeholder="璇疯緭鍏ヤ换鍔″悕绉�"> </nut-input>
+      <nut-form-item label="浠诲姟鍚嶇О:" class="bole-form-item" prop="name" label-width="90px">
+        <nut-input v-model="form.name" placeholder="璇疯緭鍏ヤ换鍔″悕绉�"> </nut-input>
       </nut-form-item>
       <nut-form-item
         label="鏈嶅姟璐�:"
         class="bole-form-item alignTop"
-        prop="feeType"
+        prop="billingMethod"
         required
         label-width="90px"
         label-position="top"
       >
-        <nut-radio-group v-model="form.feeType" direction="horizontal">
-          <BlRadio :label="Number(key)" v-for="(val, key) in FlexTaskFeeTypeEnumText" :key="key">{{
+        <nut-radio-group v-model="form.billingMethod" direction="horizontal">
+          <BlRadio :label="Number(key)" v-for="(val, key) in EnumBillingMethodText" :key="key">{{
             val
           }}</BlRadio>
         </nut-radio-group>
       </nut-form-item>
-      <nut-form-item label=" " class="bole-form-item" prop="fee" label-width="0">
+      <nut-form-item label=" " class="bole-form-item" prop="serviceFee" label-width="0">
         <div class="bole-form-input-wrapper">
           <nut-input
-            v-model.trim="form.fee"
+            v-model.trim="form.serviceFee"
             class="nut-input-text bole-input-text"
             placeholder="璇疯緭鍏ユ湇鍔¤垂"
             type="text"
           />
-          <div class="form-input-unit">{{ SalaryTimeTypeEnumUnit[form.feeType] }}</div>
+          <div class="form-input-unit">{{ BillingMethodEnumUnit[form.billingMethod] }}</div>
         </div>
       </nut-form-item>
       <nut-form-item
@@ -36,18 +36,15 @@
         required
         label-width="90px"
       >
-        <nut-radio-group v-model="form.settleType" direction="horizontal">
-          <BlRadio
-            :label="Number(key)"
-            v-for="(val, key) in FlexTaskSettleTypeEnumText"
-            :key="key"
-            >{{ val }}</BlRadio
-          >
+        <nut-radio-group v-model="form.settlementCycle" direction="horizontal">
+          <BlRadio :label="Number(key)" v-for="(val, key) in EnumSettlementCycleText" :key="key">{{
+            val
+          }}</BlRadio>
         </nut-radio-group>
       </nut-form-item>
-      <nut-form-item label="绂忓埄:" class="bole-form-item" prop="settleType" label-width="90px">
+      <nut-form-item label="绂忓埄:" class="bole-form-item" prop="benefits" label-width="90px">
         <ChooseInputWithCheckbox
-          v-model="form.listAideIds"
+          v-model="form.benefits"
           title="璇烽�夋嫨绂忓埄"
           :columns="WelfareTypeList"
           placeholder="璇烽�夋嫨绂忓埄"
@@ -56,62 +53,79 @@
       <nut-form-item
         label="骞撮緞鑼冨洿:"
         class="bole-form-item"
-        prop="minAge"
+        prop="ageMinLimit"
         required
         label-width="90px"
       >
         <div class="bole-form-input-wrapper">
           <NumberInput
-            v-model.trim="form.minAge"
+            v-model.trim="form.ageMinLimit"
             class="nut-input-text bole-input-text"
             placeholder="璇烽�夋嫨骞撮緞鑼冨洿"
             :min="1"
           />
           <div class="form-input-separator">鑷�</div>
           <NumberInput
-            v-model.trim="form.maxAge"
+            v-model.trim="form.ageMaxLimit"
             class="nut-input-text bole-input-text"
             placeholder="璇烽�夋嫨骞撮緞鑼冨洿"
             :min="1"
           />
         </div>
       </nut-form-item>
-      <nut-form-item label="鎬у埆:" class="bole-form-item" prop="sexType" label-width="90px">
+      <nut-form-item
+        label="鎬у埆瑕佹眰:"
+        class="bole-form-item"
+        prop="genderLimit"
+        label-width="90px"
+        required
+      >
         <ChooseInputWithPicker
-          v-model="form.sexType"
+          v-model="form.genderLimit"
           placeholder="璇烽�夋嫨鎬у埆瑕佹眰"
-          :value-enum="GenderText"
+          :value-enum="EnumUserGenderText"
         />
       </nut-form-item>
-      <nut-form-item label="璧勬牸璇佷功:" class="bole-form-item" prop="settleType" label-width="90px">
+      <nut-form-item
+        label="璧勬牸璇佷功:"
+        class="bole-form-item"
+        prop="credentialLimits"
+        label-width="90px"
+      >
         <ChooseInputWithCheckbox
-          v-model="form.listCertionIds"
+          v-model="form.credentialLimits"
           title="璇烽�夋嫨璧勬牸璇佷功"
           :columns="CertificateTypeList"
           placeholder="璇烽�夋嫨璧勬牸璇佷功"
         />
       </nut-form-item>
-      <nut-form-item label="浠诲姟鍦扮偣" class="bole-form-item" prop="areaList" required>
-        <!-- <ChooseLocationInput placeholder="璇烽�夋嫨浠诲姟鎵�鍦ㄥ湴" v-model="form.weMapInfo" /> -->
-        <ChooseInputWithAreaPicker
+      <nut-form-item label="浠诲姟鍦扮偣" class="bole-form-item" prop="weMapInfo" required>
+        <ChooseLocationInput placeholder="璇烽�夋嫨浠诲姟鍦扮偣" v-model="form.weMapInfo" />
+        <!-- <ChooseInputWithAreaPicker
           :columns="areaTreeList"
           v-model="form.areaList"
           placeholder="璇烽�夋嫨鎵�鍦ㄥ湴鍖�"
-        ></ChooseInputWithAreaPicker>
+        ></ChooseInputWithAreaPicker> -->
       </nut-form-item>
-      <nut-form-item label="璇︾粏鍦板潃:" class="bole-form-item" prop="address" label-width="90px">
-        <nut-input v-model="form.address" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"> </nut-input>
+      <nut-form-item
+        label="璇︾粏鍦板潃:"
+        class="bole-form-item"
+        prop="addressDetail"
+        label-width="90px"
+        required
+      >
+        <nut-input v-model="form.addressDetail" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"> </nut-input>
       </nut-form-item>
       <nut-form-item
         label="浠诲姟寮�濮嬫棩鏈�:"
         class="bole-form-item"
-        prop="startDate"
+        prop="beginTime"
         label-width="90px"
       >
-        <ChooseInputWithDatePicker v-model="form.startDate"></ChooseInputWithDatePicker>
+        <ChooseInputWithDatePicker v-model="form.beginTime"></ChooseInputWithDatePicker>
       </nut-form-item>
-      <nut-form-item label="浠诲姟缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate" label-width="90px">
-        <ChooseInputWithDatePicker v-model="form.endDate"></ChooseInputWithDatePicker>
+      <nut-form-item label="浠诲姟缁撴潫鏃ユ湡:" class="bole-form-item" prop="endTime" label-width="90px">
+        <ChooseInputWithDatePicker v-model="form.endTime"></ChooseInputWithDatePicker>
       </nut-form-item>
     </nut-form>
   </ContentScrollView>
@@ -124,11 +138,14 @@
 <script setup lang="ts">
 import { useUser } from '@/hooks';
 import {
-  FlexTaskSettleTypeEnum,
-  FlexTaskSettleTypeEnumText,
-  FlexTaskFeeTypeEnum,
-  FlexTaskFeeTypeEnumText,
-  SalaryTimeTypeEnumUnit,
+  CategoryCode,
+  EnumBillingMethod,
+  EnumSettlementCycle,
+  EnumUserGender,
+  EnumBillingMethodText,
+  EnumUserGenderText,
+  EnumSettlementCycleText,
+  BillingMethodEnumUnit,
 } from '@12333/constants';
 import {
   ChooseInputWithPicker,
@@ -141,11 +158,11 @@
 } from '@12333/components';
 import { FormValidator, Message } from '@12333/utils';
 import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import * as taskServices from '@12333/services/apiV2/task';
 import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
 import Taro from '@tarojs/taro';
 import { goBack } from '@/utils';
-import { Gender, GenderText, SearchType } from '@12333/constants';
-import { useAllAreaList, useSearchSettingType } from '@12333/hooks';
+import { useAllAreaList, useDictionaryDataSelect } from '@12333/hooks';
 import { useQuery } from '@tanstack/vue-query';
 import dayjs from 'dayjs';
 
@@ -154,56 +171,63 @@
 });
 
 const { userDetail } = useUser();
-const { areaTreeList } = useAllAreaList();
+const { findAreaNameFromCode } = useAllAreaList();
 const router = Taro.useRouter();
 const taskId = router.params?.taskId ?? '';
 const isEdit = !!taskId;
 const isCopy = router.params?.isCopy === 'true';
 console.log('isCopy: ', router.params?.isCopy);
 
-const WelfareTypeList = ref([]);
-const CertificateTypeList = ref([]);
+const { dictionaryDataList: WelfareTypeList } = useDictionaryDataSelect({
+  categoryCode: CategoryCode.Welfare,
+});
+const { dictionaryDataList: CertificateTypeList } = useDictionaryDataSelect({
+  categoryCode: CategoryCode.CertificateType,
+});
 
 const form = reactive({
-  taskName: '',
-  feeType: FlexTaskFeeTypeEnum.OfMonth,
-  fee: 0,
-  settleType: FlexTaskSettleTypeEnum.OfMonth,
-  listAideIds: [] as string[],
-  minAge: 0,
-  maxAge: 0,
-  sexType: Gender.Male,
-  listCertionIds: [] as string[],
-  address: '',
-  startDate: '',
-  endDate: '',
-  areaList: [] as number[],
+  name: '',
+  billingMethod: EnumBillingMethod.Month,
+  serviceFee: '' as any as number,
+  settlementCycle: EnumSettlementCycle.Month,
+  benefits: [] as string[],
+  ageMinLimit: 0,
+  ageMaxLimit: 0,
+  genderLimit: '' as any as EnumUserGender,
+  credentialLimits: [] as string[],
+  // address: '',
+  beginTime: '',
+  endTime: '',
+  // areaList: [] as number[],
 
   weMapInfo: {} as WeMapModel,
+  addressDetail: '',
 });
 
 const rules = reactive<FormRules>({
-  taskName: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉�' }],
+  name: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉�' }],
+  genderLimit: [{ required: true, message: '璇烽�夋嫨鎬у埆瑕佹眰' }],
+  addressDetail: [{ required: true, message: '璇疯緭鍏ヨ缁嗗湴鍧�' }],
 
-  // weMapInfo: [
-  //   { required: true, message: '璇疯缃伐浣滃湴鐐�', validator: FormValidator.validatorWeMap },
-  // ],
-  areaList: [
-    { required: true, message: '娓呮坊鍔犲伐浣滃湴鐐�', validator: FormValidator.validatorArray },
+  weMapInfo: [
+    { required: true, message: '璇疯缃伐浣滃湴鐐�', validator: FormValidator.validatorWeMap },
   ],
+  // areaList: [
+  //   { required: true, message: '璇锋坊鍔犲伐浣滃湴鐐�', validator: FormValidator.validatorArray },
+  // ],
 
-  minAge: [
+  ageMinLimit: [
     {
       required: true,
       message: '璇疯緭鍏ュ勾榫勮姹�',
       validator: () => {
-        if (!form.minAge) {
+        if (!form.ageMinLimit) {
           return Promise.reject('璇疯緭鍏ュ勾榫勮姹�');
         }
-        if (!form.maxAge) {
+        if (!form.ageMaxLimit) {
           return Promise.reject('璇疯緭鍏ュ勾榫勮姹�');
         }
-        if (Number(form.maxAge) <= Number(form.minAge)) {
+        if (Number(form.ageMaxLimit) <= Number(form.ageMinLimit)) {
           return Promise.reject('鏈�澶у勾榫勪笉鑳藉皬浜庢渶灏忓勾榫�');
         }
         return Promise.resolve(true);
@@ -211,19 +235,19 @@
     },
   ],
 
-  startDate: [
+  beginTime: [
     {
       required: true,
       message: '璇烽�夋嫨寮�濮嬫棩鏈�',
     },
   ],
-  endDate: [
+  endTime: [
     {
       required: true,
       message: '璇烽�夋嫨缁撴潫鏃ユ湡',
       validator(value) {
         if (!value) return Promise.reject('璇烽�夋嫨缁撴潫鏃ユ湡');
-        if (value <= form.startDate) return Promise.reject('缁撴潫鏃ユ湡涓嶈兘灏忎簬寮�濮嬫棩鏈�');
+        if (value <= form.beginTime) return Promise.reject('缁撴潫鏃ユ湡涓嶈兘灏忎簬寮�濮嬫棩鏈�');
         return Promise.resolve(true);
       },
     },
@@ -236,32 +260,39 @@
   data: detail,
   refetch,
 } = useQuery({
-  queryKey: ['flexWorkerServices/getFlexTaskDto', taskId],
+  queryKey: ['taskServices/getTaskInfo', taskId],
   queryFn: async () => {
-    return await flexWorkerServices.getFlexTaskDto(
+    return await taskServices.getTaskInfo(
       { id: taskId },
       {
         showLoading: false,
       }
     );
   },
-  placeholderData: () => ({} as API.GetFlexTaskDtoOutput),
+  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
   enabled: isEdit,
   onSuccess(data) {
-    form.taskName = data.taskName;
-    form.feeType = data.feeType;
-    form.fee = data.fee;
-    form.settleType = data.settleType;
-    form.listAideIds = data.taskWeals?.length > 0 ? data.taskWeals.map((item) => item.id) : [];
-    form.minAge = data.minAge;
-    form.maxAge = data.maxAge;
-    form.sexType = data.sexType;
-    form.listCertionIds = data.taskCerts?.length > 0 ? data.taskCerts.map((item) => item.id) : [];
-    form.address = data.address;
-    form.startDate = dayjs(data.startDate).format('YYYY-MM-DD');
-    form.endDate = dayjs(data.endDate).format('YYYY-MM-DD');
-    form.areaList = [data.provinceId, data.cityId, data.areaId];
-    form.address = data.address;
+    form.name = data.name;
+    form.billingMethod = data.billingMethod;
+    form.serviceFee = data.serviceFee;
+    form.settlementCycle = data.settlementCycle;
+    form.benefits = (data.benefits ?? []).map((item) => item.code);
+    form.ageMinLimit = data.ageMinLimit;
+    form.ageMaxLimit = data.ageMaxLimit;
+    form.genderLimit = data.genderLimit;
+    form.credentialLimits = (data.credentialLimits ?? []).map((item) => item.code);
+    form.beginTime = dayjs(data.beginTime).format('YYYY-MM-DD');
+    form.endTime = dayjs(data.endTime).format('YYYY-MM-DD');
+    form.addressDetail = data.addressDetail;
+    form.weMapInfo = {
+      provinceName: findAreaNameFromCode(data.provinceCode),
+      cityName: findAreaNameFromCode(data.cityCode),
+      provinceCode: data.provinceCode,
+      cityCode: data.cityCode,
+      latitude: data.latitude,
+      longitude: data.longitude,
+      addressName: data.addressName,
+    };
   },
 });
 
@@ -277,30 +308,32 @@
 
 async function confirm() {
   try {
-    let params: API.AddEidtFlexTaskInput = {
-      taskName: form.taskName,
-      feeType: form.feeType,
-      fee: form.fee,
-      settleType: form.settleType,
-      listAideIds: form.listAideIds,
-      minAge: form.minAge,
-      maxAge: form.maxAge,
-      sexType: form.sexType,
-      listCertionIds: form.listCertionIds,
-      address: form.address,
-      startDate: form.startDate,
-      endDate: form.endDate,
-      provinceId: form.areaList[0],
-      cityId: form.areaList[1],
-      areaId: form.areaList[2],
+    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: form.beginTime,
+      endTime: form.endTime,
     };
     if (isEdit) {
-      params.taskId = taskId;
+      params.id = taskId;
     }
     if (isCopy) {
-      params.taskId = '';
+      params.id = '';
     }
-    let res = await flexWorkerServices.addEidtFlexTask(params);
+    let res = await taskServices.saveTaskInfo(params);
     if (res) {
       Message.success(isEdit ? '缂栬緫鎴愬姛' : '鍙戝竷鎴愬姛', {
         onClosed() {
diff --git a/apps/bMiniApp/src/subpackages/task/publishTask/publishTask.vue b/apps/bMiniApp/src/subpackages/task/publishTask/publishTask.vue
index 7a6f3d4..bc207c6 100644
--- a/apps/bMiniApp/src/subpackages/task/publishTask/publishTask.vue
+++ b/apps/bMiniApp/src/subpackages/task/publishTask/publishTask.vue
@@ -1,5 +1,5 @@
 <template>
-  <PageLayout class="publishTask-page-wrapper" :title="'鍙戝竷鎷涜仒'" has-border :need-auth="false">
+  <PageLayout class="publishTask-page-wrapper" :title="'鍙戝竷鎷涜仒'" has-border>
     <InnerPage></InnerPage>
   </PageLayout>
 </template>
diff --git a/apps/bMiniApp/types/global.d.ts b/apps/bMiniApp/types/global.d.ts
index 3858762..a60a869 100644
--- a/apps/bMiniApp/types/global.d.ts
+++ b/apps/bMiniApp/types/global.d.ts
@@ -74,10 +74,11 @@
   provinceName?: string;
   cityName?: string;
   countyName?: string;
-  provinceCode?: number;
-  cityCode?: number;
-  countyCode?: number;
+  provinceCode?: string;
+  cityCode?: string;
+  countyCode?: string;
   address?: string;
+  addressName?: string;
 }
 
 declare const uni = Taro
\ No newline at end of file
diff --git a/apps/cMiniApp/src/app.config.ts b/apps/cMiniApp/src/app.config.ts
index c605d13..7c84b97 100644
--- a/apps/cMiniApp/src/app.config.ts
+++ b/apps/cMiniApp/src/app.config.ts
@@ -1,7 +1,7 @@
 export default defineAppConfig({
   entryPagePath: 'pages/home/index',
   pages: ['pages/home/index', 'pages/task/task', 'pages/mine/index'],
-  requiredPrivateInfos: ['getLocation'],
+  requiredPrivateInfos: ['getLocation', 'chooseLocation'],
   permission: {
     'scope.userLocation': {
       desc: '浣犵殑浣嶇疆淇℃伅灏嗙敤浜庡皬绋嬪簭鏁版嵁鐨勬晥鏋滃睍绀�',
diff --git a/apps/cMiniApp/src/subpackages/city/citySelect/citySelect.vue b/apps/cMiniApp/src/subpackages/city/citySelect/citySelect.vue
index f5bd9aa..816aab9 100644
--- a/apps/cMiniApp/src/subpackages/city/citySelect/citySelect.vue
+++ b/apps/cMiniApp/src/subpackages/city/citySelect/citySelect.vue
@@ -54,7 +54,7 @@
       list: cityGroups[key].map((x) => ({
         name: x.areaName,
         id: x.areaCode,
-        parentId: x.parentId,
+        parentId: x.parentCode,
       })),
     });
   }
diff --git a/packages/components/src/ActionSheet/CheckboxActionSheet.vue b/packages/components/src/ActionSheet/CheckboxActionSheet.vue
index 4d2ebda..32978d5 100644
--- a/packages/components/src/ActionSheet/CheckboxActionSheet.vue
+++ b/packages/components/src/ActionSheet/CheckboxActionSheet.vue
@@ -2,8 +2,8 @@
   <div class="checkbox-action-sheet">
     <div class="checkbox-action-sheet-title">{{ title }}</div>
     <nut-checkbox-group v-model="model" :max="max">
-      <nut-checkbox v-for="item in columns" :key="item.id" :label="item.id" icon-size="16">
-        {{ item.name }}</nut-checkbox
+      <nut-checkbox v-for="item in columns" :key="item.value" :label="item.value" icon-size="16">
+        {{ item.label }}</nut-checkbox
       >
     </nut-checkbox-group>
     <div class="checkbox-action-sheet-footer">
@@ -21,7 +21,7 @@
 type Props = {
   max?: number;
   title?: string;
-  columns?: API.GetTypeSearchSettingList[];
+  columns?: API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[];
 };
 
 const props = withDefaults(defineProps<Props>(), {});
diff --git a/packages/components/src/Input/ChooseInputWithCheckbox.vue b/packages/components/src/Input/ChooseInputWithCheckbox.vue
index b1ff1a6..2026e90 100644
--- a/packages/components/src/Input/ChooseInputWithCheckbox.vue
+++ b/packages/components/src/Input/ChooseInputWithCheckbox.vue
@@ -15,7 +15,7 @@
 });
 
 type Props = {
-  columns: API.GetTypeSearchSettingList[];
+  columns: API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[];
   modelValue: Array<string | number>;
   title?: string;
   max?: number;
@@ -23,7 +23,7 @@
 
 const props = withDefaults(defineProps<Props>(), {});
 const inputValue = computed(() =>
-  props.modelValue.map((x) => props.columns.find((y) => y.id === x)?.name).join(',')
+  props.modelValue.map((x) => props.columns.find((y) => y.value === x)?.label).join(',')
 );
 
 const emit = defineEmits<{
diff --git a/packages/components/src/Input/ChooseLocationInput.vue b/packages/components/src/Input/ChooseLocationInput.vue
index d576d5e..e139c62 100644
--- a/packages/components/src/Input/ChooseLocationInput.vue
+++ b/packages/components/src/Input/ChooseLocationInput.vue
@@ -86,6 +86,7 @@
         cityCode: findAreaCodeFromName(cityName),
         countyCode: findAreaCodeFromName(countyName),
         address: res.address,
+        addressName: res.name,
       });
     },
   });
diff --git a/packages/components/types/global.d.ts b/packages/components/types/global.d.ts
index 0563d9d..e055134 100644
--- a/packages/components/types/global.d.ts
+++ b/packages/components/types/global.d.ts
@@ -24,8 +24,9 @@
   provinceName?: string;
   cityName?: string;
   countyName?: string;
-  provinceCode?: number;
-  cityCode?: number;
-  countyCode?: number;
+  provinceCode?: string;
+  cityCode?: string;
+  countyCode?: string;
   address?: string;
+  addressName?: string;
 }
\ No newline at end of file
diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts
index 1e227fd..f260f44 100644
--- a/packages/constants/apiEnum.ts
+++ b/packages/constants/apiEnum.ts
@@ -76,7 +76,7 @@
   /**鐢ㄦ埛瑙掕壊 */
   Role = 5,
   /**鐢ㄦ埛淇℃伅 */
-  UserInfo = 6,
+  User = 6,
   /**浼佷笟淇℃伅 */
   Enterprise = 7,
 }
@@ -125,12 +125,36 @@
   AliyunSms = 10,
 }
 
+/** 浠诲姟缁撶畻鐘舵�� */
+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,
 }
 
 /** 浠诲姟瀹夋帓鐘舵�� */
@@ -150,7 +174,7 @@
 }
 
 /** 鐢ㄦ埛淇℃伅鐘舵�� */
-export enum EnumUserInfoStatus {
+export enum EnumUserStatus {
   /**姝e父 */
   Normal = 10,
   /**绂佺敤 */
diff --git a/packages/constants/dic.ts b/packages/constants/dic.ts
index 534792d..41e3e90 100644
--- a/packages/constants/dic.ts
+++ b/packages/constants/dic.ts
@@ -11,4 +11,50 @@
   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/packages/constants/task.ts b/packages/constants/task.ts
index 742c086..f3552ac 100644
--- a/packages/constants/task.ts
+++ b/packages/constants/task.ts
@@ -1,204 +1,26 @@
-export enum TaskStatus {
-  All = 0,
-  WaitSign = 10,
-  Effect = 20,
-  Terminated = 30,
-}
+import { EnumBillingMethod, EnumUserGender, EnumSettlementCycle } from './apiEnum';
 
-export const TaskStatusText = {
-  [TaskStatus.All]: '鍏ㄩ儴',
-  [TaskStatus.WaitSign]: '寰呯绾�',
-  [TaskStatus.Effect]: '鐢熸晥涓�',
-  [TaskStatus.Terminated]: '宸茬粓姝�',
+export const EnumBillingMethodText = {
+  [EnumBillingMethod.Month]: '鎸夋湀',
+  [EnumBillingMethod.Day]: '鎸夋棩',
+  [EnumBillingMethod.Hour]: '鎸夋椂',
+  [EnumBillingMethod.Piece]: '璁′欢',
 };
 
-export const TaskStatusColor = {
-  [TaskStatus.WaitSign]: '#FF7D00',
-  [TaskStatus.Effect]: '#3A71FF',
-  [TaskStatus.Terminated]: '#9FA4AC',
+export const EnumUserGenderText = {
+  [EnumUserGender.Male]: '鐢�',
+  [EnumUserGender.Female]: '濂�',
 };
 
-export enum FlexTaskFeeTypeEnum {
-  /**
-   * 鎸夋湀
-   */
-  OfMonth = 10,
-  /**
-   * 鎸夋棩
-   */
-  OfDay = 20,
-  /**
-   * 鎸夋椂
-   */
-  OfHour = 30,
-  /**
-   * 璁′欢
-   */
-  OfCount = 40,
-}
-
-export const FlexTaskFeeTypeEnumText = {
-  [FlexTaskFeeTypeEnum.OfMonth]: '鎸夋湀',
-  [FlexTaskFeeTypeEnum.OfDay]: '鎸夋棩',
-  [FlexTaskFeeTypeEnum.OfHour]: '鎸夋椂',
-  [FlexTaskFeeTypeEnum.OfCount]: '璁′欢',
+export const EnumSettlementCycleText = {
+  [EnumSettlementCycle.Month]: '鏈堢粨',
+  [EnumSettlementCycle.Week]: '鍛ㄧ粨',
+  [EnumSettlementCycle.Day]: '鏃ョ粨',
 };
 
-export const SalaryTimeTypeEnumUnit = {
-  [FlexTaskFeeTypeEnum.OfMonth]: '鍏�/鏈�',
-  [FlexTaskFeeTypeEnum.OfDay]: '鍏�/鏃�',
-  [FlexTaskFeeTypeEnum.OfHour]: '鍏�/灏忔椂',
-  [FlexTaskFeeTypeEnum.OfCount]: '鍏�/浠�',
-};
-
-export enum FlexTaskSettleTypeEnum {
-  /**
-   * 鏈堢粨
-   */
-  OfMonth = 10,
-  /**
-   * 鍛ㄧ粨
-   */
-  OfWeek = 20,
-  /**
-   * 鏃ョ粨
-   */
-  OfDay = 30,
-}
-
-export const FlexTaskSettleTypeEnumText = {
-  [FlexTaskSettleTypeEnum.OfMonth]: '鏈堢粨',
-  [FlexTaskSettleTypeEnum.OfWeek]: '鍛ㄧ粨',
-  [FlexTaskSettleTypeEnum.OfDay]: '鏃ョ粨',
-};
-
-export enum FlexTaskReleaseStatusEnum {
-  /**
-   * 鍙戝竷涓�
-   */
-  Releasing = 10,
-  /**
-   * 宸插仠姝�
-   */
-  Stoping = 20,
-}
-
-export const FlexTaskReleaseStatusEnumText = {
-  [FlexTaskReleaseStatusEnum.Releasing]: '鍙戝竷涓�',
-  [FlexTaskReleaseStatusEnum.Stoping]: '宸插仠姝�',
-};
-
-export enum FlexTaskWorkerHireEnum {
-  /**
-   * 寰呭鐞�
-   */
-  Wait = 10,
-  /**
-   * 宸插綍鐢�
-   */
-  Hired = 20,
-  /**
-   * 宸茶阿缁�
-   */
-  Refused = 30,
-}
-
-export const FlexTaskWorkerHireEnumText = {
-  [FlexTaskWorkerHireEnum.Wait]: '寰呭鐞�',
-  [FlexTaskWorkerHireEnum.Hired]: '宸插綍鐢�',
-  [FlexTaskWorkerHireEnum.Refused]: '宸茶阿缁�',
-};
-
-export enum FlexTaskCheckAcceptStatusEnum {
-  /**
-   * 寰呴獙鏀�
-   */
-  Wait = 10,
-  /**
-   * 楠屾敹閫氳繃
-   */
-  Passed = 20,
-  /**
-   * 楠屾敹鏈�氳繃
-   */
-  Refused = 30,
-}
-
-export const FlexTaskCheckAcceptStatusEnumText = {
-  [FlexTaskCheckAcceptStatusEnum.Wait]: '寰呴獙鏀�',
-  [FlexTaskCheckAcceptStatusEnum.Passed]: '楠屾敹閫氳繃',
-  [FlexTaskCheckAcceptStatusEnum.Refused]: '楠屾敹鏈�氳繃',
-};
-
-export enum FlexWorkerEleSignEnum {
-  /**
-   * 寰呯绾�
-   */
-  WaitSign = 10,
-  /**
-   * 宸茬绾�
-   */
-  HasSign = 20,
-  /**
-   * 宸茶В绾�
-   */
-  CancelSign = 30,
-}
-
-export const FlexWorkerEleSignEnumText = {
-  [FlexWorkerEleSignEnum.WaitSign]: '寰呯绾�',
-  [FlexWorkerEleSignEnum.HasSign]: '宸茬绾�',
-  [FlexWorkerEleSignEnum.CancelSign]: '宸茶В绾�',
-};
-
-export enum UserResumeFreeTimeEnum {
-  /**
-   * 涓嶉檺
-   */
-  NoLimit = 1,
-  /**
-   * 瀵掓殤鍋�
-   */
-  WinterAndSummerVacation = 2,
-  /**
-   * 鑺傚亣鏃�
-   */
-  Holiday = 3,
-  /**
-   * 鍛ㄥ叚鏃�
-   */
-  Weekend = 4,
-  /**
-   * 宸ヤ綔鏃�
-   */
-  Weekday = 5,
-}
-
-export const UserResumeFreeTimeEnumText = {
-  [UserResumeFreeTimeEnum.NoLimit]: '涓嶉檺',
-  [UserResumeFreeTimeEnum.WinterAndSummerVacation]: '瀵掓殤鍋�',
-  [UserResumeFreeTimeEnum.Holiday]: '鑺傚亣鏃�',
-  [UserResumeFreeTimeEnum.Weekend]: '鍛ㄥ叚鏃�',
-  [UserResumeFreeTimeEnum.Weekday]: '宸ヤ綔鏃�',
-};
-
-export enum UserResumeJobSeekingStatusEnum {
-  /**
-   * 绉瀬鎵惧伐浣�
-   */
-  Activing = 1,
-  /**
-   * 闅忎究鐪嬬湅
-   */
-  JustLook = 2,
-  /**
-   * 鏆傛椂涓嶆壘宸ヤ綔
-   */
-  NotLook = 3,
-}
-
-export const UserResumeJobSeekingStatusEnumText = {
-  [UserResumeJobSeekingStatusEnum.Activing]: '绉瀬鎵惧伐浣�',
-  [UserResumeJobSeekingStatusEnum.JustLook]: '闅忎究鐪嬬湅',
-  [UserResumeJobSeekingStatusEnum.NotLook]: '鏆傛椂涓嶆壘宸ヤ綔',
+export const BillingMethodEnumUnit = {
+  [EnumBillingMethod.Month]: '鍏�/鏈�',
+  [EnumBillingMethod.Day]: '鍏�/鏃�',
+  [EnumBillingMethod.Hour]: '鍏�/灏忔椂',
+  [EnumBillingMethod.Piece]: '鍏�/浠�',
 };
diff --git a/packages/hooks/area.ts b/packages/hooks/area.ts
index 46668cf..ec57c26 100644
--- a/packages/hooks/area.ts
+++ b/packages/hooks/area.ts
@@ -1,109 +1,80 @@
 import { flattenAreaTree, formatAreaListToTree } from '@12333/utils';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
 import { useQuery, useQueryClient } from '@tanstack/vue-query';
 import { computed, onMounted, onUnmounted, ref } from 'vue';
-import { AreaType } from '@12333/constants';
+import { AreaType, CategoryCode } from '@12333/constants';
 import Taro, { EventChannel } from '@tarojs/taro';
+import { useDictionaryDataSelect } from './dic';
 
 export function useArea() {
-  // const completeAreaList = ref<API.AreaInfo[]>([]);
-  // const completeAreaTree = ref<API.AreaTreeNode[]>([]);
-  // const provinceList = ref<API.AreaInfo[]>([]);
-  // const areaItemMap = ref<Record<API.AreaInfo['areaCode'], API.AreaInfo>>({});
-
   const queryClient = useQueryClient();
 
-  const { data: areaStore } = useQuery({
-    queryKey: ['flexWorkerServices/getAreaList'],
-    queryFn: async () => {
-      return await flexWorkerServices.getAreaList({}, { showLoading: false });
-    },
-    placeholderData: () => [] as API.AreaDto[],
+  const { dictionaryDataList } = useDictionaryDataSelect({
+    categoryCode: CategoryCode.Area,
     staleTime: Infinity,
-    select(data) {
-      const areaItemMap: Record<API.AreaDto['areaCode'], API.AreaDto> = {};
-      data.forEach((item) => {
-        areaItemMap[item.areaCode] = item;
-      });
-      const completeAreaList = flattenAreaTree([...data]);
-      return {
-        completeAreaList: completeAreaList,
-        completeAreaTree: [...data],
-        // cityAreaTree: formatAreaListToTree(completeAreaList, 0, AreaType.City),
-        provinceList: [...data],
-        areaItemMap: areaItemMap,
-      };
-    },
+    all: true,
+    maxDeep: AreaType.Area,
   });
 
-  // onMounted(async () => {
-  //   let data: API.AreaInfo[] = await queryClient.ensureQueryData({
-  //     queryKey: ['areaServices/getRegionalManagementList'],
-  //   });
-  //   completeAreaList.value = flattenAreaTree([...data]);
-  //   completeAreaTree.value = [...data];
-  //   provinceList.value = [...data];
-  //   setAreaMap([...data]);
-  // });
+  const areaList = computed(() => dictionaryDataList.value.map(convertDictionaryToAreaTreeNode));
 
-  // function setAreaMap(areaList: API.AreaInfo[]) {
-  //   areaList.forEach((item) => {
-  //     areaItemMap[item.areaCode] = item;
-  //   });
-  // }
+  const areaTree = computed(() => formatAreaListToTree(areaList.value));
 
-  function getAreaFromCompleteAreaList(areaCode: number) {
-    return areaStore.value.completeAreaList.find((x) => x.areaCode === areaCode);
+  function getAreaFromCompleteAreaList(areaCode: string) {
+    return areaList.value.find((x) => x.areaCode === areaCode);
   }
 
-  function getAreaByAreaCode(areaCode: number) {
-    return areaStore.value.areaItemMap[areaCode];
+  function getAreaByAreaCode(areaCode: string) {
+    return areaList.value.find((x) => x.areaCode === areaCode);
   }
 
   return {
-    completeAreaList: computed(() => areaStore.value.completeAreaList),
-    completeAreaTree: computed(() => areaStore.value.completeAreaTree),
-    cityAreaTree: computed(() =>
-      areaStore.value.completeAreaTree.map((x) => ({
-        ...x,
-        children: x.children.map((y) => ({
-          ...y,
-          children: undefined,
-        })),
-      }))
-    ),
-    provinceList: computed(() => areaStore.value.provinceList),
-    areaItemMap: computed(() => areaStore.value.areaItemMap),
+    completeAreaList: areaList,
+    areaList,
+    completeAreaTree: areaTree,
+    provinceList: computed(() => areaList.value.filter((x) => x.layer === AreaType.Province)),
     getAreaFromCompleteAreaList,
     getAreaByAreaCode,
   };
 }
 
+function convertDictionaryToAreaTreeNode(
+  item: API.SelectOptionStringGetDictionaryDataSelectQueryResultOption
+) {
+  return {
+    children: [],
+    areaCode: item.data?.code,
+    parentCode: '',
+    areaName: item.label,
+    layer: Number(item.data?.field4),
+    quickQuery: item.data?.field2,
+    sort: item.data?.sort,
+    id: item.data?.id,
+  } as API.AreaTreeNode;
+}
+
 export function useAllAreaList() {
-  const { completeAreaTree, provinceList, completeAreaList, cityAreaTree } = useArea();
+  const { areaList } = useArea();
 
   const findAreaCodeFromName = (areaName: string) => {
-    const areaItem = completeAreaList.value.find((x) => x.areaName === areaName);
-    return areaItem?.areaCode ?? 0;
+    const areaItem = areaList.value.find((x) => x.areaName === areaName);
+    return areaItem?.areaCode ?? '';
   };
 
-  const findAreaNameFromCode = (areaCode: number) => {
-    const areaItem = completeAreaList.value.find((x) => x.areaCode === areaCode);
+  const findAreaNameFromCode = (areaCode: string) => {
+    const areaItem = areaList.value.find((x) => x.areaCode === areaCode);
     return areaItem?.areaName ?? '';
   };
 
-  const findAreaItemFromCode = (areaCode: number) => {
-    const areaItem = completeAreaList.value.find((x) => x.areaCode === areaCode);
+  const findAreaItemFromCode = (areaCode: string) => {
+    const areaItem = areaList.value.find((x) => x.areaCode === areaCode);
     return areaItem;
   };
 
   return {
+    areaList,
     findAreaCodeFromName,
     findAreaNameFromCode,
     findAreaItemFromCode,
-    areaTreeList: completeAreaTree,
-    provinceList,
-    cityAreaTree,
   };
 }
 
diff --git a/packages/hooks/dic.ts b/packages/hooks/dic.ts
index acaf549..bb28a9f 100644
--- a/packages/hooks/dic.ts
+++ b/packages/hooks/dic.ts
@@ -1,6 +1,6 @@
 import { useQuery, useQueryClient } from '@tanstack/vue-query';
 import * as dictionaryServices from '@12333/services/apiV2/dictionary';
-import { MaybeRef, unref } from 'vue';
+import { MaybeRef, unref, computed } from 'vue';
 import { CategoryCode } from '@12333/constants';
 
 export function useGetDictionaryCategorySelect() {
@@ -50,28 +50,45 @@
 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', categoryId, categoryCode],
+    queryKey: ['dictionaryServices/getDictionaryDataSelect', params],
     queryFn: async () => {
-      let res = await dictionaryServices.getDictionaryDataSelect(
-        {
-          categoryId: unref(categoryId),
-          categoryCode: unref(categoryCode),
-        },
-        { showLoading: false }
-      );
+      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) {
@@ -96,6 +113,12 @@
     });
   }
 
+  function updateDictionaryDataSelect(categoryId?: string) {
+    queryClient.invalidateQueries({
+      queryKey: ['dictionaryServices/getDictionaryDataSelect'],
+    });
+  }
+
   return {
     dictionaryDataList,
     ensureQueryData,
@@ -103,5 +126,6 @@
     getDictionaryDataNameById,
     getDictionaryDataNameByCode,
     getDictionaryDataByCode,
+    updateDictionaryDataSelect,
   };
 }
diff --git a/packages/services/apiV2/dictionary.ts b/packages/services/apiV2/dictionary.ts
index c48fb89..4c74b85 100644
--- a/packages/services/apiV2/dictionary.ts
+++ b/packages/services/apiV2/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.SelectOptionGuidGetDictionaryCategorySelectQueryOption[]>(
-    '/api/main/dictionary/getDictionaryCategorySelect',
+    '/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.SelectOptionStringGetDictionaryDataSelectQueryResultOption[]>(
-    '/api/main/dictionary/getDictionaryDataSelect',
+    '/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',
@@ -136,12 +136,12 @@
   });
 }
 
-/** 鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁 POST /api/main/dictionary/syncHumanResourcesAreaDictionaryData */
+/** 鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁 POST /api/flexjob/dictionary/syncHumanResourcesAreaDictionaryData */
 export async function syncHumanResourcesAreaDictionaryData(
   body: API.SyncHumanResourcesAreaDictionaryDataCommand,
   options?: API.RequestConfig
 ) {
-  return request<number>('/api/main/dictionary/syncHumanResourcesAreaDictionaryData', {
+  return request<number>('/api/flexjob/dictionary/syncHumanResourcesAreaDictionaryData', {
     method: 'POST',
     headers: {
       'Content-Type': 'application/json-patch+json',
diff --git a/packages/services/apiV2/index.ts b/packages/services/apiV2/index.ts
index de6fd71..dcda25c 100644
--- a/packages/services/apiV2/index.ts
+++ b/packages/services/apiV2/index.ts
@@ -2,21 +2,21 @@
 /* eslint-disable */
 // API 鏇存柊鏃堕棿锛�
 // API 鍞竴鏍囪瘑锛�
-import * as userInfo from './userInfo';
-import * as auth from './auth';
 import * as dictionary from './dictionary';
 import * as menu from './menu';
-import * as resource from './resource';
-import * as role from './role';
 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 {
-  userInfo,
-  auth,
   dictionary,
   menu,
-  resource,
-  role,
   enterprise,
   task,
+  auth,
+  user,
+  role,
+  resource,
 };
diff --git a/packages/services/apiV2/task.ts b/packages/services/apiV2/task.ts
index 264a625..23c1be7 100644
--- a/packages/services/apiV2/task.ts
+++ b/packages/services/apiV2/task.ts
@@ -2,13 +2,13 @@
 // @ts-ignore
 import { request } from '@/utils/request';
 
-/** 鏌ヨ浠诲姟璇︽儏 GET /api/main/task/getTaskInfo */
+/** 鏌ヨ浠诲姟璇︽儏 GET /api/flexjob/task/getTaskInfo */
 export async function getTaskInfo(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
   params: API.APIgetTaskInfoParams,
   options?: API.RequestConfig
 ) {
-  return request<API.GetTaskInfoQueryResult>('/api/main/task/getTaskInfo', {
+  return request<API.GetTaskInfoQueryResult>('/api/flexjob/task/getTaskInfo', {
     method: 'GET',
     params: {
       ...params,
@@ -17,10 +17,10 @@
   });
 }
 
-/** 鏌ヨ浠诲姟鍒嗛〉鍒楄〃 POST /api/main/task/getTaskInfos */
+/** 鏌ヨ浠诲姟鍒嗛〉鍒楄〃 POST /api/flexjob/task/getTaskInfos */
 export async function getTaskInfos(body: API.GetTaskInfosQuery, options?: API.RequestConfig) {
   return request<API.PagedListQueryResultGetTaskInfosQueryResultItem>(
-    '/api/main/task/getTaskInfos',
+    '/api/flexjob/task/getTaskInfos',
     {
       method: 'POST',
       headers: {
@@ -32,9 +32,9 @@
   );
 }
 
-/** 淇濆瓨浠诲姟 POST /api/main/task/saveTaskInfo */
+/** 淇濆瓨浠诲姟 POST /api/flexjob/task/saveTaskInfo */
 export async function saveTaskInfo(body: API.SaveTaskInfoCommand, options?: API.RequestConfig) {
-  return request<string>('/api/main/task/saveTaskInfo', {
+  return request<string>('/api/flexjob/task/saveTaskInfo', {
     method: 'POST',
     headers: {
       'Content-Type': 'application/json-patch+json',
@@ -43,3 +43,33 @@
     ...(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/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index f99c072..98a7d82 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -105,6 +105,11 @@
     clientType?: EnumClientType;
   }
 
+  interface APIgetUserResumeParams {
+    /** 鐢ㄦ埛Id */
+    userId?: string;
+  }
+
   interface DeleteDictionaryCategoryCommand {
     ids: string[];
   }
@@ -192,7 +197,7 @@
     /**鐢ㄦ埛瑙掕壊 */
     Role = 5,
     /**鐢ㄦ埛淇℃伅 */
-    UserInfo = 6,
+    User = 6,
     /**浼佷笟淇℃伅 */
     Enterprise = 7,
   }
@@ -237,11 +242,32 @@
     AliyunSms = 10,
   }
 
+  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 {
@@ -258,7 +284,7 @@
     Female = 20,
   }
 
-  enum EnumUserInfoStatus {
+  enum EnumUserStatus {
     /**姝e父 */
     Normal = 10,
     /**绂佺敤 */
@@ -390,6 +416,24 @@
     /** 閿欒鐮� */
     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;
     /** 閿欒淇℃伅 */
@@ -996,7 +1040,7 @@
     remark?: string;
     /** 瑙掕壊 */
     roles?: GetOperationUserInfosQueryResultItemRole[];
-    status?: EnumUserInfoStatus;
+    status?: EnumUserStatus;
   }
 
   interface GetOperationUserInfosQueryResultItemRole {
@@ -1102,6 +1146,12 @@
   interface GetTaskInfoQueryResult {
     /** Id */
     id?: string;
+    /** 浼佷笟Id */
+    enterpriseId?: string;
+    /** 浼佷笟鍏ㄧО */
+    enterpriseName?: string;
+    /** 鍦ㄦ嫑宀椾綅鏁伴噺 */
+    taskCount?: number;
     /** 浠诲姟鍚嶇О */
     name?: string;
     billingMethod?: EnumBillingMethod;
@@ -1125,27 +1175,46 @@
     cityCode?: string;
     /** 浠诲姟鍦扮偣鎵�灞炲煄甯� */
     cityName?: string;
+    /** 浠诲姟鍦扮偣鍚嶇О */
+    addressName?: string;
     /** 浠诲姟鍦扮偣璇︾粏鍦板潃 */
-    address?: string;
+    addressDetail?: string;
+    /** 缁忓害 */
+    longitude?: number;
+    /** 绾害 */
+    latitude?: number;
     /** 浠诲姟寮�濮嬫椂闂� */
     beginTime?: string;
     /** 浠诲姟缁撴潫鏃堕棿 */
     endTime?: string;
     /** 鍒涘缓鏃堕棿 */
     createdTime?: string;
+    /** 鏄惁宸叉敹钘� */
+    isCollected?: boolean;
   }
 
   interface GetTaskInfosQuery {
     pageModel?: PagedListQueryPageModel;
     /** 鍏抽敭瀛楋紙浠诲姟鍚嶇О锛� */
     keywords?: string;
-    /** 鍙戝竷鏃堕棿 */
-    time?: 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;
     /** 浠诲姟鍗曞彿 */
@@ -1163,6 +1232,11 @@
     /** 浠诲姟缁撴潫鏃堕棿 */
     endTime?: string;
     releaseStatus?: EnumTaskReleaseStatus;
+    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
+    settlementStatus?: EnumTaskSettlementStatus;
+    recommendStatus?: EnumTaskRecommendStatus;
+    /** 鍒涘缓鏃堕棿 */
+    createdTime?: string;
   }
 
   interface GetUserInfoRolesQueryResultItem {
@@ -1175,6 +1249,8 @@
     /** 鏄惁閫変腑 */
     isChecked?: boolean;
   }
+
+  type GetUserResumeQueryResult = Record<string, any>;
 
   interface PagedListQueryPageModel {
     /** 琛屾暟 */
@@ -1492,8 +1568,14 @@
     provinceCode: string;
     /** 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� */
     cityCode: string;
+    /** 浠诲姟鍦扮偣鍚嶇О */
+    addressName: string;
     /** 浠诲姟鍦扮偣璇︾粏鍦板潃 */
-    address: string;
+    addressDetail: string;
+    /** 缁忓害 */
+    longitude?: number;
+    /** 绾害 */
+    latitude?: number;
     /** 浠诲姟寮�濮嬫椂闂� */
     beginTime: string;
     /** 浠诲姟缁撴潫鏃堕棿 */
@@ -1567,6 +1649,18 @@
     userInfoIds?: string[];
   }
 
+  interface SetTaskInfoRecommendStatusCommand {
+    /** Id */
+    ids?: string[];
+    recommendStatus?: EnumTaskRecommendStatus;
+  }
+
+  interface SetTaskInfoReleaseStatusCommand {
+    /** Id */
+    ids?: string[];
+    releaseStatus?: EnumTaskReleaseStatus;
+  }
+
   interface SetUserInfoRolesCommand {
     /** 鐢ㄦ埛Id */
     userInfoId?: string;
@@ -1577,7 +1671,7 @@
   interface SetUserInfoStatusCommand {
     /** Id */
     ids?: string[];
-    status?: EnumUserInfoStatus;
+    status?: EnumUserStatus;
   }
 
   type SyncHumanResourcesAreaDictionaryDataCommand = Record<string, any>;
diff --git a/packages/services/apiV2/user.ts b/packages/services/apiV2/user.ts
new file mode 100644
index 0000000..a398d43
--- /dev/null
+++ b/packages/services/apiV2/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/packages/services/apiV2/userInfo.ts b/packages/services/apiV2/userInfo.ts
deleted file mode 100644
index 4367d18..0000000
--- a/packages/services/apiV2/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/packages/utils/area.ts b/packages/utils/area.ts
index 1732267..aa4c806 100644
--- a/packages/utils/area.ts
+++ b/packages/utils/area.ts
@@ -1,19 +1,15 @@
 import { AreaType } from '@12333/constants';
 
-export interface AreaTreeNode extends API.AreaDto {
-  children?: AreaTreeNode[];
-}
-
 export function formatAreaListToTree(
-  areaDataList: API.AreaDto[],
-  parentId: number,
+  areaDataList: API.AreaTreeNode[],
+  parentId = '',
   maxLayer = AreaType.Area
 ) {
   const treeNodeList: API.AreaTreeNode[] = [];
   if (areaDataList.length > 0) {
     areaDataList.forEach((areaData) => {
       const areaTreeNode: API.AreaTreeNode = { ...areaData };
-      if (areaData.parentId === parentId && areaData.layer <= maxLayer) {
+      if (areaData.parentCode === parentId && areaData.layer <= maxLayer) {
         const children = formatAreaListToTree(areaDataList, areaData.areaCode, maxLayer);
         areaTreeNode.children = children;
         treeNodeList.push(areaTreeNode);
diff --git a/types/api.d.ts b/types/api.d.ts
index 4b3ea80..ac80dc0 100644
--- a/types/api.d.ts
+++ b/types/api.d.ts
@@ -33,4 +33,20 @@
   interface SelectOptionGuidGetDictionaryCategorySelectQueryOption{
     code?:string
   }
+
+  interface AreaTreeNode  {
+    children?: AreaTreeNode[];
+    /** 缂栫爜 */
+    areaCode?: string;
+    /** 鐖剁骇缂栫爜 */
+    parentCode?: string;
+    /** 鍚嶇О */
+    areaName?: string;
+    /** 1鐪� 2甯� 3鍖� 4闀� */
+    layer?: number;
+    /** 鎺掑簭 */
+    sort?: number;
+    id?: string
+    quickQuery?: string
+  }
 }

--
Gitblit v1.9.1