From 64ff795479a7667f17c1a4349bb171f546a92a0b Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 11 八月 2025 17:03:07 +0800
Subject: [PATCH] feat: 接口对接

---
 packages/services/apiV2/index.ts                                    |    2 
 packages/hooks/area.ts                                              |   47 +++++++++++----
 packages/utils/area.ts                                              |    6 +
 apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue |    6 +-
 packages/services/apiV2/typings.d.ts                                |   40 +++++++++++--
 packages/services/apiV2/taskUser.ts                                 |   27 +++++++++
 packages/constants/apiEnum.ts                                       |   26 ++++++--
 7 files changed, 122 insertions(+), 32 deletions(-)

diff --git a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
index 61ef2e5..fb29bf4 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
@@ -26,7 +26,7 @@
       </nut-form-item>
       <nut-form-item label="甯搁┗鍩庡競:" class="bole-form-item" prop="areaList">
         <ChooseInputWithAreaPicker
-          :columns="completeAreaTree"
+          :columns="areaTree"
           v-model="form.areaList"
           placeholder="璇烽�夋嫨甯搁┗鍩庡競"
         ></ChooseInputWithAreaPicker>
@@ -42,7 +42,7 @@
 import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
 import { ChooseInputWithPicker, ChooseInputWithAreaPicker } from '@12333/components';
 import { convertApi2FormUrlOnlyOne, Message, setOSSLink } from '@12333/utils';
-import { useArea, useDictionaryDataSelect } from '@12333/hooks';
+import { useAreaTree, useDictionaryDataSelect } from '@12333/hooks';
 import { CategoryCode } from '@12333/constants';
 import * as userResumeServices from '@12333/services/apiV2/userResume';
 import Taro from '@tarojs/taro';
@@ -60,7 +60,7 @@
   categoryCode: CategoryCode.Education,
 });
 
-const { completeAreaTree } = useArea();
+const { areaTree } = useAreaTree();
 
 const form = reactive({
   avatar: [],
diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts
index cc6ab80..393a3ce 100644
--- a/packages/constants/apiEnum.ts
+++ b/packages/constants/apiEnum.ts
@@ -91,20 +91,22 @@
   Dictionary = 0,
   /**浠诲姟 */
   Task = 1,
+  /**浠诲姟闆囦剑 */
+  TaskUser = 2,
   /**鐢ㄦ埛璁よ瘉 */
-  Auth = 2,
+  Auth = 3,
   /**鐢ㄦ埛鑿滃崟 */
-  Menu = 3,
+  Menu = 4,
   /**鐢ㄦ埛璧勬簮 */
-  Resource = 4,
+  Resource = 5,
   /**鐢ㄦ埛瑙掕壊 */
-  Role = 5,
+  Role = 6,
   /**鐢ㄦ埛淇℃伅 */
-  User = 6,
+  User = 7,
   /**鐢ㄦ埛绠�鍘� */
-  UserResume = 7,
+  UserResume = 8,
   /**浼佷笟淇℃伅 */
-  Enterprise = 8,
+  Enterprise = 9,
 }
 
 /** 璧勬簮璇锋眰鏂瑰紡 */
@@ -191,6 +193,16 @@
   Complete = 20,
 }
 
+/** 浠诲姟褰曠敤鐘舵�� */
+export enum EnumTaskUserHireStatus {
+  /**寰呭綍鐢� */
+  Wait = 10,
+  /**宸插綍鐢� */
+  Pass = 20,
+  /**宸茶阿缁� */
+  Refuse = 30,
+}
+
 /** 鐢ㄦ埛鎬у埆 */
 export enum EnumUserGender {
   /**鐢� */
diff --git a/packages/hooks/area.ts b/packages/hooks/area.ts
index f8bd597..684ce2c 100644
--- a/packages/hooks/area.ts
+++ b/packages/hooks/area.ts
@@ -4,6 +4,7 @@
 import { AreaType, CategoryCode } from '@12333/constants';
 import Taro, { EventChannel } from '@tarojs/taro';
 import { useDictionaryDataSelect } from './dic';
+import axios from 'axios';
 
 export function useArea() {
   const queryClient = useQueryClient();
@@ -12,13 +13,12 @@
     categoryCode: CategoryCode.Area,
     staleTime: Infinity,
     all: true,
-    maxDeep: AreaType.City,
+    maxDeep: AreaType.Area,
   });
 
   const areaList = computed(() => dictionaryDataList.value.map(convertDictionaryToAreaTreeNode));
-  console.log('areaList: ', areaList);
 
-  const areaTree = computed(() => formatAreaListToTree(areaList.value));
+  // const areaTree = computed(() => formatAreaListToTree(areaList.value));
 
   function getAreaFromCompleteAreaList(areaCode: string) {
     return areaList.value.find((x) => x.areaCode === areaCode);
@@ -31,20 +31,41 @@
   return {
     completeAreaList: areaList,
     areaList,
-    completeAreaTree: areaTree,
-    provinceList: computed(() => areaList.value.filter((x) => x.layer === AreaType.Province)),
+    // completeAreaTree: areaTree,
+    // provinceList: computed(() => areaList.value.filter((x) => x.layer === AreaType.Province)),
     getAreaFromCompleteAreaList,
     getAreaByAreaCode,
   };
+}
+
+export function useAreaTree() {
+  axios.get('https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/area.txt').then((res) => {
+    console.log(res);
+  });
+  const { data } = useQuery({
+    queryKey: ['area.txt'],
+    queryFn() {
+      return axios
+        .get<API.AreaTreeNode[]>(
+          'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/area.txt'
+        )
+        .then((res) => res.data);
+    },
+
+    placeholderData: () => [] as API.AreaTreeNode[],
+  });
+
+  const areaTree = computed(() => formatAreaListToTree(data.value));
+
+  return { areaTree: areaTree };
 }
 
 function convertDictionaryToAreaTreeNode(
   item: API.SelectOptionStringGetDictionaryDataSelectQueryResultOption
 ) {
   return {
-    children: [],
     areaCode: item.data?.code,
-    parentCode: item.data?.field1,
+    parentCode: item.data?.parentCode,
     areaName: item.label,
     layer: Number(item.data?.field4),
     quickQuery: item.data?.field2,
@@ -79,13 +100,13 @@
   };
 }
 
-export function useProvinceList() {
-  const { provinceList } = useArea();
+// export function useProvinceList() {
+//   const { provinceList } = useArea();
 
-  return {
-    provinceList,
-  };
-}
+//   return {
+//     provinceList,
+//   };
+// }
 
 export const globalEventEmitter = new Taro.Events();
 
diff --git a/packages/services/apiV2/index.ts b/packages/services/apiV2/index.ts
index e33974b..a1555c0 100644
--- a/packages/services/apiV2/index.ts
+++ b/packages/services/apiV2/index.ts
@@ -10,6 +10,7 @@
 import * as task from './task';
 import * as enterprise from './enterprise';
 import * as role from './role';
+import * as taskUser from './taskUser';
 import * as menu from './menu';
 export default {
   userResume,
@@ -20,5 +21,6 @@
   task,
   enterprise,
   role,
+  taskUser,
   menu,
 };
diff --git a/packages/services/apiV2/taskUser.ts b/packages/services/apiV2/taskUser.ts
new file mode 100644
index 0000000..694be3e
--- /dev/null
+++ b/packages/services/apiV2/taskUser.ts
@@ -0,0 +1,27 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 鎶ュ悕浠诲姟 POST /api/flexjob/taskUser/applyTask */
+export async function applyTask(body: API.ApplyTaskCommand, options?: API.RequestConfig) {
+  return request<number>('/api/flexjob/taskUser/applyTask', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
+/** 鏀惰棌浠诲姟 POST /api/flexjob/taskUser/collectTask */
+export async function collectTask(body: API.CollectTaskCommand, options?: API.RequestConfig) {
+  return request<number>('/api/flexjob/taskUser/collectTask', {
+    method: 'POST',
+    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 a8f052a..8638b22 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -145,6 +145,11 @@
     request?: GetUserResumeWorkExperienceQuery;
   }
 
+  interface ApplyTaskCommand {
+    /** 浠诲姟Id */
+    ids?: string[];
+  }
+
   interface BindWxmpUserInfoCommand {
     /** 鍖呮嫭鏁忔劅鏁版嵁鍦ㄥ唴鐨勫畬鏁寸敤鎴蜂俊鎭殑鍔犲瘑鏁版嵁 */
     encryptedData: string;
@@ -159,6 +164,13 @@
     phoneNumber: string;
     /** 楠岃瘉鐮� */
     verifyCode: string;
+  }
+
+  interface CollectTaskCommand {
+    /** 浠诲姟Id */
+    ids?: string[];
+    /** 鏄惁鏀惰棌 */
+    isCollect?: boolean;
   }
 
   interface DeleteDictionaryCategoryCommand {
@@ -262,20 +274,22 @@
     Dictionary = 0,
     /**浠诲姟 */
     Task = 1,
+    /**浠诲姟闆囦剑 */
+    TaskUser = 2,
     /**鐢ㄦ埛璁よ瘉 */
-    Auth = 2,
+    Auth = 3,
     /**鐢ㄦ埛鑿滃崟 */
-    Menu = 3,
+    Menu = 4,
     /**鐢ㄦ埛璧勬簮 */
-    Resource = 4,
+    Resource = 5,
     /**鐢ㄦ埛瑙掕壊 */
-    Role = 5,
+    Role = 6,
     /**鐢ㄦ埛淇℃伅 */
-    User = 6,
+    User = 7,
     /**鐢ㄦ埛绠�鍘� */
-    UserResume = 7,
+    UserResume = 8,
     /**浼佷笟淇℃伅 */
-    Enterprise = 8,
+    Enterprise = 9,
   }
 
   enum EnumResourceMethod {
@@ -351,6 +365,15 @@
     Wait = 10,
     /**宸插畨鎺� */
     Complete = 20,
+  }
+
+  enum EnumTaskUserHireStatus {
+    /**寰呭綍鐢� */
+    Wait = 10,
+    /**宸插綍鐢� */
+    Pass = 20,
+    /**宸茶阿缁� */
+    Refuse = 30,
   }
 
   enum EnumUserGender {
@@ -1481,6 +1504,8 @@
     releaseStatus?: EnumTaskReleaseStatus;
     recommendStatus?: EnumTaskRecommendStatus;
     checkReceiveStatus?: EnumTaskCheckReceiveStatus;
+    /** 褰曠敤鐘舵�� */
+    hireStatus?: EnumTaskUserHireStatus[];
     pageModel?: PagedListQueryPageModel;
   }
 
@@ -1536,6 +1561,7 @@
     recommendStatus?: EnumTaskRecommendStatus;
     /** 鍒涘缓鏃堕棿 */
     createdTime?: string;
+    hireStatus?: EnumTaskUserHireStatus;
   }
 
   interface GetTaskInfosQueryResultObjectData {
diff --git a/packages/utils/area.ts b/packages/utils/area.ts
index aa4c806..c41d617 100644
--- a/packages/utils/area.ts
+++ b/packages/utils/area.ts
@@ -2,7 +2,7 @@
 
 export function formatAreaListToTree(
   areaDataList: API.AreaTreeNode[],
-  parentId = '',
+  parentId = null,
   maxLayer = AreaType.Area
 ) {
   const treeNodeList: API.AreaTreeNode[] = [];
@@ -11,7 +11,9 @@
       const areaTreeNode: API.AreaTreeNode = { ...areaData };
       if (areaData.parentCode === parentId && areaData.layer <= maxLayer) {
         const children = formatAreaListToTree(areaDataList, areaData.areaCode, maxLayer);
-        areaTreeNode.children = children;
+        if (children.length > 0) {
+          areaTreeNode.children = children;
+        }
         treeNodeList.push(areaTreeNode);
       }
     });

--
Gitblit v1.9.1