From 676578f3be736ef109d1c8a15da265a62c66ba04 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期二, 12 八月 2025 13:13:23 +0800
Subject: [PATCH] feat: 接口对接

---
 apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue |    4 
 apps/cMiniApp/src/pages/home/index.vue                                          |    4 
 apps/cMiniApp/.eslintrc-auto-import.json                                        |    3 
 apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue             |    4 
 apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue         |    5 
 apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue                |   27 +-----
 apps/cMiniApp/project.private.config.json                                       |   14 +++
 apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue          |    9 --
 apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue      |   20 ++--
 apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue                     |   62 ++++++++++++++-
 packages/components/src/Card/TaskCard.vue                                       |    5 -
 apps/cMiniApp/auto-imports.d.ts                                                 |    2 
 apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue         |    4 
 apps/cMiniApp/project.config.json                                               |    4 
 apps/cMiniApp/src/hooks/user.ts                                                 |   19 ++++
 apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue       |    4 
 16 files changed, 122 insertions(+), 68 deletions(-)

diff --git a/apps/cMiniApp/.eslintrc-auto-import.json b/apps/cMiniApp/.eslintrc-auto-import.json
index ff1c0db..ade550f 100644
--- a/apps/cMiniApp/.eslintrc-auto-import.json
+++ b/apps/cMiniApp/.eslintrc-auto-import.json
@@ -109,6 +109,7 @@
     "useSwitchTab": true,
     "useTaskList": true,
     "useUser": true,
-    "useUserResume": true
+    "useUserResume": true,
+    "useUpdateResume": true
   }
 }
diff --git a/apps/cMiniApp/auto-imports.d.ts b/apps/cMiniApp/auto-imports.d.ts
index f8c3f8a..5702a8e 100644
--- a/apps/cMiniApp/auto-imports.d.ts
+++ b/apps/cMiniApp/auto-imports.d.ts
@@ -91,6 +91,7 @@
   const useSlots: typeof import('vue')['useSlots']
   const useSwitchTab: typeof import('./src/hooks/router')['useSwitchTab']
   const useTemplateRef: typeof import('vue')['useTemplateRef']
+  const useUpdateResume: typeof import('./src/hooks/user')['useUpdateResume']
   const useUser: typeof import('./src/hooks/user')['useUser']
   const useUserResume: typeof import('./src/hooks/user')['useUserResume']
   const watch: typeof import('vue')['watch']
@@ -203,6 +204,7 @@
     readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
     readonly useSwitchTab: UnwrapRef<typeof import('./src/hooks/router')['useSwitchTab']>
     readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
+    readonly useUpdateResume: UnwrapRef<typeof import('./src/hooks/user')['useUpdateResume']>
     readonly useUser: UnwrapRef<typeof import('./src/hooks/user')['useUser']>
     readonly useUserResume: UnwrapRef<typeof import('./src/hooks/user')['useUserResume']>
     readonly watch: UnwrapRef<typeof import('vue')['watch']>
diff --git a/apps/cMiniApp/project.config.json b/apps/cMiniApp/project.config.json
index 1d057ff..cc53dd5 100644
--- a/apps/cMiniApp/project.config.json
+++ b/apps/cMiniApp/project.config.json
@@ -3,8 +3,8 @@
     "description": "",
     "setting": {
         "urlCheck": false,
-        "es6": true,
-        "enhance": true,
+        "es6": false,
+        "enhance": false,
         "postcss": false,
         "preloadBackgroundData": false,
         "minified": false,
diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json
index 02429d4..5bf897c 100644
--- a/apps/cMiniApp/project.private.config.json
+++ b/apps/cMiniApp/project.private.config.json
@@ -77,6 +77,20 @@
                     "query": "",
                     "launchMode": "default",
                     "scene": null
+                },
+                {
+                    "name": "",
+                    "pathName": "subpackages/task/taskDetail/taskDetail",
+                    "query": "id=04c75425-e783-4dbf-0f16-08ddd626b756",
+                    "launchMode": "default",
+                    "scene": null
+                },
+                {
+                    "name": "",
+                    "pathName": "subpackages/curriculum/mineCurriculumVitae/mineCurriculumVitae",
+                    "query": "",
+                    "launchMode": "default",
+                    "scene": null
                 }
             ]
         }
diff --git a/apps/cMiniApp/src/hooks/user.ts b/apps/cMiniApp/src/hooks/user.ts
index 4238c51..db1c702 100644
--- a/apps/cMiniApp/src/hooks/user.ts
+++ b/apps/cMiniApp/src/hooks/user.ts
@@ -2,7 +2,7 @@
 import Taro from '@tarojs/taro';
 import { object2query, LocationUtils } from '@12333/utils';
 import { ParkOrHRStatus, UserCertificationFrontStatus } from '@12333/constants';
-import { useQuery } from '@tanstack/vue-query';
+import { useQuery, useQueryClient } from '@tanstack/vue-query';
 import { MaybeRef } from 'vue';
 import { useRefeshDidShow } from '@12333/hooks/infiniteLoading';
 import * as userResumeServices from '@12333/services/apiV2/userResume';
@@ -117,3 +117,20 @@
     refetch,
   };
 }
+
+export function useUpdateResume() {
+  const queryClient = useQueryClient();
+
+  const updateUserResumeCredentials = () => {
+    return queryClient.invalidateQueries(['userResumeServices/getUserResumeCredentials']);
+  };
+
+  const updateUserResume = () => {
+    return queryClient.invalidateQueries(['userResumeServices/getUserResume']);
+  };
+
+  return {
+    updateUserResumeCredentials,
+    updateUserResume,
+  };
+}
diff --git a/apps/cMiniApp/src/pages/home/index.vue b/apps/cMiniApp/src/pages/home/index.vue
index fb3d2cb..5231954 100644
--- a/apps/cMiniApp/src/pages/home/index.vue
+++ b/apps/cMiniApp/src/pages/home/index.vue
@@ -57,7 +57,7 @@
       :key="queryState.orderType"
     >
       <template #renderItem="{ item }">
-        <TaskCard @click="goTaskDetail(item)" v-bind="item" @apply="goTaskApply(item)" />
+        <TaskCard @click="goTaskDetail(item)" v-bind="item" />
       </template>
     </InfiniteLoading>
   </PageLayoutWithBg>
@@ -65,8 +65,6 @@
 
 <script setup lang="ts">
 import { useUser } from '@/hooks';
-import { useUserStore } from '@/stores/modules/user';
-import { RectDown, Location2 } from '@nutui/icons-vue-taro';
 import Taro from '@tarojs/taro';
 import { setLocationCity } from '@/utils';
 import _ from 'lodash';
diff --git a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
index 399ab72..3eb5d6a 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
@@ -54,6 +54,8 @@
   name: 'InnerPage',
 });
 
+const { updateUserResume } = useUpdateResume();
+
 const eventChannel = useEventChannel();
 
 const { dictionaryDataList: identityList } = useDictionaryDataSelect({
@@ -145,7 +147,7 @@
       Message.success('淇濆瓨鎴愬姛', {
         onClosed() {
           goBack();
-          eventChannel.emit('updateResume', { content: true });
+          updateUserResume();
         },
       });
     }
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue
index f546f29..e659738 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue
@@ -21,18 +21,9 @@
 import { RouterPath } from '@/constants';
 import * as userResumeServices from '@12333/services/apiV2/userResume';
 import { useQuery } from '@tanstack/vue-query';
-import { useEvent } from 'senin-mini/hooks';
 
 defineOptions({
   name: 'InnerPage',
-});
-
-useEvent('updateResume', function (data: { content: boolean }) {
-  if (data.content) {
-    refetch({
-      type: 'inactive',
-    });
-  }
 });
 
 const {
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
index 26fc3cf..6aaee7d 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
@@ -78,7 +78,7 @@
 const router = Taro.useRouter();
 const id = router.params?.id as string;
 const isEdit = computed(() => !!id);
-const queryClient = useQueryClient();
+const { updateUserResumeCredentials } = useUpdateResume();
 
 const { dictionaryDataList: certificateTypeList } = useDictionaryDataSelect({
   categoryCode: CategoryCode.CertificateType,
@@ -173,7 +173,7 @@
       Message.success(isEdit.value ? '缂栬緫鎴愬姛' : '娣诲姞鎴愬姛', {
         onClosed() {
           goBack();
-          queryClient.invalidateQueries(['userResumeServices/getUserResumeCredentials']);
+          updateUserResumeCredentials();
         },
       });
     }
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue
index 8165e96..2e12b89 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue
@@ -125,7 +125,6 @@
 import IconPhone from '@/assets/mine/icon-phone.png';
 import Taro from '@tarojs/taro';
 import { setOSSLink } from '@12333/utils';
-import { useEvent } from 'senin-mini/hooks';
 
 defineOptions({
   name: 'InnerPage',
@@ -140,16 +139,15 @@
 function goPage(routeName: string) {
   Taro.navigateTo({
     url: routeName,
-    events: {
-      updateResume(data: { content: boolean }) {
-        console.log('content: ', data.content);
-        if (data.content) {
-          refetch({
-            type: 'inactive',
-          });
-        }
-      },
-    },
+    // events: {
+    //   updateResume(data: { content: boolean }) {
+    //     if (data.content) {
+    //       refetch({
+    //         type: 'inactive',
+    //       });
+    //     }
+    //   },
+    // },
   });
 }
 function goEditMineInfo() {
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
index 9a7eca4..07085f8 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
@@ -38,7 +38,7 @@
   name: 'InnerPage',
 });
 
-const { refetch: userResumeRefetch } = useUserResume();
+const { updateUserResume } = useUpdateResume();
 
 const {
   isLoading,
@@ -81,7 +81,7 @@
       Message.success('淇濆瓨鎴愬姛', {
         onClosed() {
           goBack();
-          userResumeRefetch({ type: 'inactive' });
+          updateUserResume();
         },
       });
     }
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
index d913841..a826890 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
@@ -48,13 +48,12 @@
 import { Message } from '@12333/utils';
 import { useQuery } from '@tanstack/vue-query';
 import { goBack } from '@/utils';
-import { useEventChannel } from 'senin-mini/hooks';
 
 defineOptions({
   name: 'InnerPage',
 });
 
-const eventChannel = useEventChannel();
+const { updateUserResume } = useUpdateResume();
 
 const { dictionaryDataList: positionList } = useDictionaryDataSelect({
   categoryCode: CategoryCode.Position,
@@ -131,7 +130,7 @@
       Message.success('淇濆瓨鎴愬姛', {
         onClosed() {
           goBack();
-          eventChannel.emit('updateResume', { content: true });
+          updateUserResume();
         },
       });
     }
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue
index 1303900..36a1ced 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue
@@ -24,7 +24,7 @@
   name: 'InnerPage',
 });
 
-const { refetch: userResumeRefetch } = useUserResume();
+const { updateUserResume } = useUpdateResume();
 
 const form = reactive({
   workSeniority: '',
@@ -64,7 +64,7 @@
       Message.success('淇濆瓨鎴愬姛', {
         onClosed() {
           goBack();
-          userResumeRefetch({ type: 'inactive' });
+          updateUserResume();
         },
       });
     }
diff --git a/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue
index b4a33b2..1861411 100644
--- a/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue
@@ -16,34 +16,15 @@
 <script setup lang="ts">
 import { TaskCard } from '@12333/components';
 import { useUserStore } from '@/stores/modules/user';
-import { useInfiniteLoading } from '@12333/hooks';
-import { OrderInputType } from '@12333/constants';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import { useTaskList } from '@12333/hooks';
 
 defineOptions({
   name: 'InnerPage',
 });
 
-const userStore = useUserStore();
-
-const { infiniteLoadingProps } = useInfiniteLoading(
-  ({ pageParam }) => {
-    let params: API.GetFlexTaskListInput = {
-      pageModel: {
-        rows: 20,
-        page: pageParam,
-        orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
-      },
-    };
-
-    return flexWorkerServices.getFlexTaskByArrange(params, {
-      showLoading: false,
-    });
-  },
-  {
-    queryKey: ['flexWorkerServices/getFlexTaskByArrange'],
-  }
-);
+const { infiniteLoadingProps } = useTaskList({
+  defaultQueryMenuState: {},
+});
 </script>
 
 <style lang="scss">
diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
index 6a0d918..3261651 100644
--- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
@@ -6,6 +6,7 @@
           <img
             :src="detail.isCollected ? IconAttentioActive : IconAttention"
             class="taskDetail-attention-icon"
+            @click="handleAttention"
           />
         </template>
         <div class="taskDetail-time">
@@ -100,9 +101,17 @@
         :isFlex="false"
         openType="share"
       ></PageFooterAction>
-      <PageFooterAction :icon="IconPhone" text="鎵嬫満" :isFlex="false"></PageFooterAction>
-      <PageFooterBtn v-if="detail.releaseStatus === EnumTaskReleaseStatus.InProcess" type="primary"
-        >鎶ュ悕锛�5浜哄凡鎶ュ悕锛�</PageFooterBtn
+      <PageFooterAction
+        :icon="IconPhone"
+        text="鎵嬫満"
+        :isFlex="false"
+        @click="handleCall"
+      ></PageFooterAction>
+      <PageFooterBtn
+        v-if="detail.releaseStatus === EnumTaskReleaseStatus.InProcess"
+        type="primary"
+        @click="handleApply"
+        >{{ `鎶ュ悕锛�${detail?.applyCount ?? 0}浜哄凡鎶ュ悕锛塦 }}</PageFooterBtn
       >
       <PageFooterBtn v-if="detail.releaseStatus === EnumTaskReleaseStatus.Stopped" color="#999999"
         >宸插仠姝�</PageFooterBtn
@@ -115,6 +124,7 @@
 import Taro from '@tarojs/taro';
 import { useQuery } from '@tanstack/vue-query';
 import * as taskServices from '@12333/services/apiV2/task';
+import * as taskUserServices from '@12333/services/apiV2/taskUser';
 import { useToggle } from 'senin-mini/hooks';
 import { TaskPrice, TaskDetailWelfareItem } from '@12333/components';
 import IconAttention from '@/assets/task/icon-attention.png';
@@ -127,7 +137,7 @@
 import './taskDetail.scss';
 import CompanyDesc from '../components/CompanyDesc.vue';
 import dayjs from 'dayjs';
-import { TaskUtils, toThousand, setOSSLink } from '@12333/utils';
+import { TaskUtils, toThousand, setOSSLink, Message } from '@12333/utils';
 import {
   EnumSettlementCycleText,
   BillingMethodEnumUnit,
@@ -182,4 +192,48 @@
     });
   }
 });
+
+const handleApply = useAccessLogin(async () => {
+  try {
+    let params: API.ApplyTaskCommand = {
+      ids: [taskId],
+    };
+    let res = await taskUserServices.applyTask(params);
+    if (res) {
+      Message.success('鎶ュ悕鎴愬姛', {
+        onClosed() {
+          refetch({ type: 'inactive' });
+        },
+      });
+    }
+  } catch (error) {}
+});
+
+const handleAttention = useAccessLogin(async () => {
+  try {
+    await Message.confirm({
+      message: `纭畾${detail.value?.isCollected ? '鍙栨秷鏀惰棌' : '鏀惰棌'}鍚楋紵`,
+    });
+    let params: API.CollectTaskCommand = {
+      ids: [taskId],
+      isCollect: !detail.value?.isCollected,
+    };
+    let res = await taskUserServices.collectTask(params);
+    if (res) {
+      Message.success('鎿嶄綔鎴愬姛', {
+        onClosed() {
+          refetch({ type: 'inactive' });
+        },
+      });
+    }
+  } catch (error) {}
+});
+
+const handleCall = useAccessLogin(() => {
+  if (detail.value.contactPhoneNumber) {
+    Taro.makePhoneCall({
+      phoneNumber: detail.value.contactPhoneNumber,
+    });
+  }
+});
 </script>
diff --git a/packages/components/src/Card/TaskCard.vue b/packages/components/src/Card/TaskCard.vue
index 687f7f6..254b6c5 100644
--- a/packages/components/src/Card/TaskCard.vue
+++ b/packages/components/src/Card/TaskCard.vue
@@ -37,10 +37,7 @@
       </div>
       <div class="task-card-actions" v-if="showActions">
         <slot name="actions">
-          <nut-button
-            v-if="releaseStatus === EnumTaskReleaseStatus.InProcess"
-            type="primary"
-            @click.stop="emit('apply', id)"
+          <nut-button v-if="releaseStatus === EnumTaskReleaseStatus.InProcess" type="primary"
             >鎶ュ悕</nut-button
           >
         </slot>

--
Gitblit v1.9.1