From 18f571786729ff46a667760a569436593c59f899 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期四, 14 八月 2025 09:10:30 +0800
Subject: [PATCH] feat: 接口对接

---
 apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue           |  121 +++----
 apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue                 |  108 -------
 packages/constants/task.ts                                                       |    3 
 apps/bMiniApp/src/constants/router.ts                                            |    1 
 apps/bMiniApp/src/subpackages/task/components/TaskCheckPersonalView.vue          |   17 
 apps/cMiniApp/src/pages/task/InnerPage.vue                                       |    4 
 packages/services/apiV2/userResume.ts                                            |   30 ++
 packages/components/src/Card/TaskCheckFileCard.vue                               |  132 +++++++++
 packages/services/apiV2/auth.ts                                                  |   17 +
 apps/bMiniApp/src/subpackages/task/taskCheckedDetail/InnerPage.vue               |  102 +++++++
 apps/bMiniApp/project.private.config.json                                        |    7 
 packages/hooks/task.ts                                                           |    2 
 apps/bMiniApp/src/app.config.ts                                                  |    1 
 apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue                       |   31 --
 apps/bMiniApp/src/subpackages/task/taskCheckedDetail/taskCheckedDetail.config.ts |    3 
 apps/bMiniApp/src/subpackages/task/taskCheckedDetail/taskCheckedDetail.vue       |   13 
 packages/services/apiV2/index.ts                                                 |    4 
 apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue                  |   30 +
 apps/bMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue                 |   71 ++---
 packages/components/src/index.ts                                                 |    1 
 apps/cMiniApp/project.config.json                                                |    2 
 apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue                 |    3 
 packages/services/apiV2/typings.d.ts                                             |   81 +++++
 23 files changed, 507 insertions(+), 277 deletions(-)

diff --git a/apps/bMiniApp/project.private.config.json b/apps/bMiniApp/project.private.config.json
index 57b2186..ed02394 100644
--- a/apps/bMiniApp/project.private.config.json
+++ b/apps/bMiniApp/project.private.config.json
@@ -98,13 +98,6 @@
                     "query": "",
                     "launchMode": "default",
                     "scene": null
-                },
-                {
-                    "name": "",
-                    "pathName": "subpackages/jobApplicationManage/jobApplicationDetail/jobApplicationDetail",
-                    "query": "id=04c75425-e783-4dbf-0f16-08ddd626b756",
-                    "launchMode": "default",
-                    "scene": null
                 }
             ]
         }
diff --git a/apps/bMiniApp/src/app.config.ts b/apps/bMiniApp/src/app.config.ts
index 5215387..9c69db0 100644
--- a/apps/bMiniApp/src/app.config.ts
+++ b/apps/bMiniApp/src/app.config.ts
@@ -90,6 +90,7 @@
         'publishTask/publishTask',
         'taskCheck/taskCheck',
         'taskCheckDetail/taskCheckDetail',
+        'taskCheckedDetail/taskCheckedDetail',
         'taskHandleCheckDetail/taskHandleCheckDetail',
         'taskManage/taskManage',
         'batchTaskList/batchTaskList',
diff --git a/apps/bMiniApp/src/constants/router.ts b/apps/bMiniApp/src/constants/router.ts
index 6af2f0a..0c429b2 100644
--- a/apps/bMiniApp/src/constants/router.ts
+++ b/apps/bMiniApp/src/constants/router.ts
@@ -43,6 +43,7 @@
   publishTask = '/subpackages/task/publishTask/publishTask',
   taskCheck = '/subpackages/task/taskCheck/taskCheck',
   taskCheckDetail = '/subpackages/task/taskCheckDetail/taskCheckDetail',
+  taskCheckedDetail = '/subpackages/task/taskCheckedDetail/taskCheckedDetail',
   taskHandleCheckDetail = '/subpackages/task/taskHandleCheckDetail/taskHandleCheckDetail',
   taskManage = '/subpackages/task/taskManage/taskManage',
   batchTaskList = '/subpackages/task/batchTaskList/batchTaskList',
diff --git a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
index 46667a7..9d89fd7 100644
--- a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
+++ b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
@@ -1,22 +1,23 @@
 <template>
-  <div class="task-check-card-wrapper">
+  <div class="task-check-card-wrapper" @click.stop="emit('taskChecked')">
     <TaskCheckPersonalView
       class="task-check-card-view"
-      :avatarUrl="avatarUrl"
+      :avatar="avatar"
       :name="name"
-      :genderType="genderType"
-      :isRealName="isRealName"
-      :contactPhone="contactPhone"
+      :gender="gender"
+      :isReal="isReal"
+      :contactPhoneNumber="contactPhoneNumber"
     >
       <template #actions>
         <nut-button
-          v-if="checkAcceptStatus === EnumTaskCheckReceiveStatus.Wait"
+          v-if="checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitCheckReceive"
           type="primary"
           class="task-check-card-phone-btn"
+          @click.stop="emit('checkReceive')"
           >楠屾敹</nut-button
         >
         <div v-else class="task-check-card-phone-status" :style="{ color: Colors.Success }">
-          {{ EnumTaskCheckReceiveStatusText[checkAcceptStatus] }}
+          {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }}
         </div>
       </template>
     </TaskCheckPersonalView>
@@ -37,15 +38,20 @@
 });
 
 type Props = {
-  avatarUrl?: string;
+  avatar?: string;
   name?: string;
-  genderType?: EnumUserGender;
-  isRealName?: boolean;
-  contactPhone?: string;
-  checkAcceptStatus?: EnumTaskCheckReceiveStatus;
+  gender?: EnumUserGender;
+  isReal?: boolean;
+  contactPhoneNumber?: string;
+  checkReceiveStatus?: EnumTaskCheckReceiveStatus;
 };
 
 const props = withDefaults(defineProps<Props>(), {});
+
+const emit = defineEmits<{
+  (e: 'checkReceive'): void;
+  (e: 'taskChecked'): void;
+}>();
 </script>
 
 <style lang="scss">
diff --git a/apps/bMiniApp/src/subpackages/task/components/TaskCheckPersonalView.vue b/apps/bMiniApp/src/subpackages/task/components/TaskCheckPersonalView.vue
index c29a64e..0fdb3db 100644
--- a/apps/bMiniApp/src/subpackages/task/components/TaskCheckPersonalView.vue
+++ b/apps/bMiniApp/src/subpackages/task/components/TaskCheckPersonalView.vue
@@ -1,15 +1,10 @@
 <template>
-  <FlexJobTopView
-    :avatarUrl="avatarUrl"
-    :name="name"
-    :genderType="genderType"
-    :isRealName="isRealName"
-  >
+  <FlexJobTopView :avatar="avatar" :name="name" :gender="gender" :isReal="isReal">
     <template #detail>
       <div class="task-check-card-phone-container">
         <div class="task-check-card-phone-wrapper">
           <div class="task-check-card-phone-label">鎵嬫満鍙凤細</div>
-          <div class="task-check-card-phone">{{ contactPhone }}</div>
+          <div class="task-check-card-phone">{{ contactPhoneNumber }}</div>
         </div>
         <slot name="actions"></slot>
       </div>
@@ -26,11 +21,11 @@
 });
 
 type Props = {
-  avatarUrl?: string;
+  avatar?: string;
   name?: string;
-  genderType?: EnumUserGender;
-  isRealName?: boolean;
-  contactPhone?: string;
+  gender?: EnumUserGender;
+  isReal?: boolean;
+  contactPhoneNumber?: string;
 };
 
 const props = withDefaults(defineProps<Props>(), {});
diff --git a/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
index bbcb6a8..a8ed12a 100644
--- a/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
@@ -37,42 +37,17 @@
 import { MyTaskCard, ProTabs, ProTabPane, Calendar } from '@12333/components';
 import Taro from '@tarojs/taro';
 import { EnumTaskCheckReceiveStatus } from '@12333/constants';
-import { useInfiniteLoading, useTaskList } from '@12333/hooks';
-import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
-import dayjs from 'dayjs';
+import { useCheckReceiveTasks } from '@12333/hooks';
 
 defineOptions({
   name: 'InnerPage',
 });
 
-const queryState = reactive({
-  date: dayjs().toDate(),
-  checkReceiveStatus: EnumTaskCheckReceiveStatus.WaitSubmit,
-});
-
-const { infiniteLoadingProps } = useInfiniteLoading(
-  ({ pageParam }) => {
-    let params: API.GetCheckReceiveTasksQuery = {
-      pageModel: {
-        rows: 20,
-        page: pageParam,
-      },
-      date: dayjs(queryState.date).format('YYYY-MM-DD'),
-      checkReceiveStatus: queryState.checkReceiveStatus,
-    };
-
-    return taskCheckReceiveServices.getCheckReceiveTasks(params, {
-      showLoading: false,
-    });
-  },
-  {
-    queryKey: ['taskCheckReceiveServices/getCheckReceiveTasks', queryState],
-  }
-);
+const { queryState, infiniteLoadingProps } = useCheckReceiveTasks();
 
 function goSubmitTaskDetail(item: API.GetCheckReceiveTasksQueryResultItem) {
   Taro.navigateTo({
-    url: `${RouterPath.taskCheckDetail}?taskId=${item.id}`,
+    url: `${RouterPath.taskCheckDetail}?id=${item.id}&date=${queryState.date}&checkReceiveStatus=${queryState.checkReceiveStatus}`,
   });
 }
 </script>
diff --git a/apps/bMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
index a91b416..dc40cd9 100644
--- a/apps/bMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
@@ -1,9 +1,9 @@
 <template>
-  <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch">
+  <LoadingLayout>
     <ContentView>
       <MyTaskCard
-        :namee="detail.name"
-        :addressName="detail.addressName"
+        :name="infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.name"
+        :addressName="infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.addressName"
         :showMyTaskArrow="false"
         :showTime="false"
       ></MyTaskCard>
@@ -12,17 +12,17 @@
     <InfiniteLoading
       scrollViewClassName="common-infinite-scroll-list"
       v-bind="infiniteLoadingProps"
-      :key="queryState.status"
     >
       <template #renderItem="{ item }">
         <TaskCheckCard
-          :avatarUrl="setOSSLink(item.avatarUrl)"
+          :avatar="setOSSLink(item.avatar)"
           :name="item.name"
-          :genderType="item.genderType"
-          :isRealName="item.isRealName"
-          :contactPhone="item.contactPhone"
-          :checkAcceptStatus="item.checkAcceptStatus"
-          @click="goHandleTaskDetail(item)"
+          :gender="item.gender"
+          :isReal="item.isReal"
+          :contactPhoneNumber="item.contactPhoneNumber"
+          :checkReceiveStatus="item.checkReceiveStatus"
+          @checkReceive="goHandleTaskDetail(item)"
+          @taskChecked="goTaskCheckedDetail(item)"
         />
       </template>
     </InfiniteLoading>
@@ -31,65 +31,52 @@
 
 <script setup lang="ts">
 import Taro from '@tarojs/taro';
-import { useQuery } from '@tanstack/vue-query';
-import * as taskServices from '@12333/services/apiV2/task';
+import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
 import { useInfiniteLoading } from '@12333/hooks';
-import { OrderInputType } from '@12333/constants';
 import TaskCheckCard from '../components/TaskCheckCard.vue';
 import { MyTaskCard } from '@12333/components';
 import { setOSSLink } from '@12333/utils';
+import dayjs from 'dayjs';
 
 defineOptions({
   name: 'InnerPage',
 });
 
 const router = Taro.useRouter();
-const taskId = router.params?.taskId ?? '';
-
-const {
-  isLoading,
-  isError,
-  data: detail,
-  refetch,
-} = useQuery({
-  queryKey: ['taskServices/getTaskInfo', taskId],
-  queryFn: async () => {
-    return await taskServices.getTaskInfo(
-      { id: taskId },
-      {
-        showLoading: false,
-      }
-    );
-  },
-  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
-});
-
-const queryState = reactive({
-  status: 10,
-});
+const id = router.params?.id ?? '';
+const date = router.params?.date ?? '';
+const checkReceiveStatus = Number(router.params?.checkReceiveStatus);
 
 const { infiniteLoadingProps } = useInfiniteLoading(
   ({ pageParam }) => {
-    let params: API.GetFlexTaskWorkerCheckListInput = {
+    let params: API.GetCheckReceiveTaskQuery = {
       pageModel: {
         rows: 20,
         page: pageParam,
-        orderInput: [{ property: 'lastShelfTime', order: OrderInputType.Desc }],
       },
+      taskInfoId: id,
+      date: dayjs(date).format('YYYY-MM-DD'),
+      checkReceiveStatus: checkReceiveStatus,
     };
 
-    return flexWorkerServices.getFlexTaskWorkerCheckList(params, {
+    return taskCheckReceiveServices.getCheckReceiveTask(params, {
       showLoading: false,
     });
   },
   {
-    queryKey: ['flexWorkerServices/getFlexTaskWorkerCheckList', queryState],
+    queryKey: ['taskCheckReceiveServices/getCheckReceiveTask'],
   }
 );
 
-function goHandleTaskDetail(item: API.GetNewestWorkerListOutput) {
+function goHandleTaskDetail(item: API.GetCheckReceiveTaskQueryResultItem) {
   Taro.navigateTo({
-    url: `${RouterPath.taskHandleCheckDetail}?userId=${item.userId}&taskId=${taskId}`,
+    url: `${RouterPath.taskHandleCheckDetail}?id=${item.id}&date=${date}`,
+  });
+}
+
+function goTaskCheckedDetail(item: API.GetCheckReceiveTaskQueryResultItem) {
+  Taro.navigateTo({
+    url: `${RouterPath.taskCheckedDetail}?id=${item.id}`,
   });
 }
 </script>
diff --git a/apps/bMiniApp/src/subpackages/task/taskCheckedDetail/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskCheckedDetail/InnerPage.vue
new file mode 100644
index 0000000..b52c25e
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/task/taskCheckedDetail/InnerPage.vue
@@ -0,0 +1,102 @@
+<template>
+  <LoadingLayout>
+    <ContentView>
+      <MyTaskCard
+        :name="infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.taskInfo?.name"
+        :addressName="infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.taskInfo?.addressName"
+        :showMyTaskArrow="false"
+        :showTime="false"
+      ></MyTaskCard>
+      <ChunkTitle title="楠屾敹鍒楄〃" />
+      <TaskCheckCard
+        :avatar="
+          setOSSLink(
+            infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.enterpriseEmployeeUser?.avatar
+          )
+        "
+        :name="infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.enterpriseEmployeeUser?.name"
+        :gender="
+          infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.enterpriseEmployeeUser?.gender
+        "
+        :isReal="
+          infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.enterpriseEmployeeUser?.isReal
+        "
+        :contactPhoneNumber="
+          infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.enterpriseEmployeeUser
+            ?.contactPhoneNumber
+        "
+        :checkReceiveStatus="
+          infiniteLoadingProps?.listData?.pages?.[0]?.objectData?.enterpriseEmployeeUser
+            ?.checkReceiveStatus
+        "
+      />
+      <div class="taskCheckFileCard-status-title">楠屾敹鐓х墖</div>
+    </ContentView>
+    <InfiniteLoading
+      scrollViewClassName="common-infinite-scroll-list"
+      v-bind="infiniteLoadingProps"
+      :key="date"
+    >
+      <template #renderItem="{ item }">
+        <TaskCheckFileCard
+          :created-time="item?.createdTime"
+          :checkReceiveStatus="item?.checkReceiveStatus"
+          :files="item?.files"
+        />
+      </template>
+    </InfiniteLoading>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import Taro from '@tarojs/taro';
+import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
+import { useInfiniteLoading } from '@12333/hooks';
+import TaskCheckCard from '../components/TaskCheckCard.vue';
+import { MyTaskCard, TaskCheckFileCard } from '@12333/components';
+import { setOSSLink } from '@12333/utils';
+
+defineOptions({
+  name: 'InnerPage',
+});
+
+const router = Taro.useRouter();
+const id = router.params?.id ?? '';
+const date = router.params?.date ?? '';
+
+const { infiniteLoadingProps } = useInfiniteLoading(
+  ({ pageParam }) => {
+    let params: API.GetCheckReceiveTaskUserSubmitsQuery = {
+      pageModel: {
+        rows: 20,
+        page: pageParam,
+      },
+      id: id,
+    };
+
+    return taskCheckReceiveServices.getCheckReceiveTaskUserSubmits(params, {
+      showLoading: false,
+    });
+  },
+  {
+    queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmits'],
+  }
+);
+</script>
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.taskCheckedDetail-page-wrapper {
+  .taskCheckFileCard-status-title {
+    font-weight: 600;
+    font-size: 28px;
+    line-height: 32px;
+    margin-bottom: 16px;
+    color: boleGetCssVar('text-color', 'primary');
+  }
+
+  .task-check-card-wrapper {
+    margin-bottom: 24px;
+  }
+}
+</style>
diff --git a/apps/bMiniApp/src/subpackages/task/taskCheckedDetail/taskCheckedDetail.config.ts b/apps/bMiniApp/src/subpackages/task/taskCheckedDetail/taskCheckedDetail.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/task/taskCheckedDetail/taskCheckedDetail.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/bMiniApp/src/subpackages/task/taskCheckedDetail/taskCheckedDetail.vue b/apps/bMiniApp/src/subpackages/task/taskCheckedDetail/taskCheckedDetail.vue
new file mode 100644
index 0000000..b26bbe6
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/task/taskCheckedDetail/taskCheckedDetail.vue
@@ -0,0 +1,13 @@
+<template>
+  <PageLayoutWithBg class="taskCheckedDetail-page-wrapper" title="楠屾敹璇︽儏">
+    <InnerPage />
+  </PageLayoutWithBg>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+  name: 'taskCheckedDetail',
+});
+</script>
diff --git a/apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue
index cc10ce4..5a10229 100644
--- a/apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue
@@ -3,40 +3,31 @@
     <ContentScrollView style="background-color: #fff">
       <div class="personal-info-wrapper">
         <TaskCheckPersonalView
-          :avatarUrl="setOSSLink(detail.avatarUrl)"
-          :name="detail.name"
-          :isRealName="detail.isRealName"
-          :contactPhone="detail.contactPhone"
+          :avatarUrl="setOSSLink(detail?.enterpriseEmployeeUser?.avatar)"
+          :name="detail?.enterpriseEmployeeUser?.name"
+          :isReal="detail?.enterpriseEmployeeUser?.isReal"
+          :contactPhoneNumber="detail?.enterpriseEmployeeUser?.contactPhoneNumber"
         />
       </div>
-      <div class="taskCheckDetail-status-wrapper">
-        <div class="taskCheckDetail-status-title">楠屾敹鐓х墖</div>
-      </div>
-      <div class="taskCheckDetail-time">
-        {{ dayjs(detail.appleCheckTime).format('YYYY.MM.DD HH:mm:ss') }}
-      </div>
-      <nut-grid
-        square
-        :column-num="3"
-        :border="false"
-        :gutter="20"
-        v-if="list.length > 0"
-        class="pro-img-grid"
-      >
-        <nut-grid-item
-          v-for="(item, index) in detail.checkImageUrl"
-          :key="index"
-          class="pro-img-grid-item"
-        >
-          <div class="pro-img-grid-img-item">
-            <PreviewImage :src="item" class="pro-img-grid-img" :urls="list" />
-          </div>
-        </nut-grid-item>
-      </nut-grid>
+      <div class="taskCheckFileCard-status-title">楠屾敹鐓х墖</div>
+      <TaskCheckFileCard
+        :created-time="detail?.createdTime"
+        :files="detail?.files"
+      ></TaskCheckFileCard>
     </ContentScrollView>
     <PageFooter>
-      <PageFooterBtn type="primary" :color="Colors.Info" class="dark-btn">楠屾敹鏈�氳繃</PageFooterBtn>
-      <PageFooterBtn type="primary">楠屾敹閫氳繃</PageFooterBtn>
+      <PageFooterBtn
+        type="primary"
+        :color="Colors.Info"
+        class="dark-btn"
+        @click="checkReceiveTask(EnumTaskUserSubmitCheckReceiveStatus.Fail)"
+        >楠屾敹鏈�氳繃</PageFooterBtn
+      >
+      <PageFooterBtn
+        type="primary"
+        @click="checkReceiveTask(EnumTaskUserSubmitCheckReceiveStatus.Success)"
+        >楠屾敹閫氳繃</PageFooterBtn
+      >
     </PageFooter>
   </LoadingLayout>
 </template>
@@ -44,20 +35,21 @@
 <script setup lang="ts">
 import Taro from '@tarojs/taro';
 import { useQuery } from '@tanstack/vue-query';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
 import TaskCheckPersonalView from '../components/TaskCheckPersonalView.vue';
-import { PreviewImage } from '@12333/components';
-import { Colors } from '@12333/constants';
-import { setOSSLink } from '@12333/utils';
+import { TaskCheckFileCard } from '@12333/components';
+import { Colors, EnumTaskUserSubmitCheckReceiveStatus } from '@12333/constants';
+import { Message, setOSSLink } from '@12333/utils';
 import dayjs from 'dayjs';
+import { goBack } from '@/utils';
 
 defineOptions({
   name: 'InnerPage',
 });
 
 const router = Taro.useRouter();
-const taskId = router.params?.taskId ?? '';
-const userId = router.params?.userId ?? '';
+const id = router.params?.id ?? '';
+const date = router.params?.date ?? '';
 
 const {
   isLoading,
@@ -65,57 +57,52 @@
   data: detail,
   refetch,
 } = useQuery({
-  queryKey: ['flexWorkerServices/getOrdeForDetail', taskId],
+  queryKey: ['flexWorkerServices/getOrdeForDetail', id, date],
   queryFn: async () => {
-    return await flexWorkerServices.getFlexTaskWorkerCheckContentDto(
-      { flexTaskId: taskId, flexWorkerId: userId },
+    return await taskCheckReceiveServices.getCheckReceiveTaskUserSubmit(
+      { taskInfoUserId: id, date: dayjs(date).format('YYYY-MM-DD') },
       {
         showLoading: false,
       }
     );
   },
-  placeholderData: () => ({} as API.GetTaskWorkerCheckContentOutput),
+  placeholderData: () => ({} as API.GetCheckReceiveTaskUserSubmitQueryResult),
 });
 
-const list = ref([
-  'https://storage.360buyimg.com/jdc-article/NutUItaro34.jpg',
-  'https://storage.360buyimg.com/jdc-article/NutUItaro2.jpg',
-  'https://storage.360buyimg.com/jdc-article/welcomenutui.jpg',
-  'https://storage.360buyimg.com/jdc-article/fristfabu.jpg',
-]);
+async function checkReceiveTask(checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus) {
+  try {
+    let params: API.CheckReceiveTaskCommand = {
+      id: detail.value?.id,
+      checkReceiveStatus: checkReceiveStatus,
+    };
+    let res = await taskCheckReceiveServices.checkReceiveTask(params);
+    if (res) {
+      Message.success('鎻愪氦鎴愬姛', {
+        onClosed() {
+          goBack();
+        },
+      });
+    }
+  } catch (error) {}
+}
 </script>
 
 <style lang="scss">
 @import '@/styles/common.scss';
 
 .taskHandleCheckDetail-page-wrapper {
-  .personal-info-wrapper {
-    padding-top: 52px;
-    padding-bottom: 36px;
-    border-bottom: 1px solid #d9d9d9;
-    margin-bottom: 22px;
-  }
-
-  .taskCheckDetail-status-wrapper {
-    display: flex;
-    align-items: center;
+  .taskCheckFileCard-status-title {
     font-weight: 600;
     font-size: 28px;
     line-height: 32px;
     margin-bottom: 16px;
-
-    .taskCheckDetail-status-title {
-      color: boleGetCssVar('text-color', 'primary');
-      flex: 1;
-      min-width: 0;
-    }
+    color: boleGetCssVar('text-color', 'primary');
   }
 
-  .taskCheckDetail-time {
-    font-weight: 400;
-    font-size: 24px;
-    color: boleGetCssVar('text-color', 'regular');
-    line-height: 36px;
+  .personal-info-wrapper {
+    padding-top: 52px;
+    padding-bottom: 36px;
+    border-bottom: 1px solid #d9d9d9;
     margin-bottom: 22px;
   }
 }
diff --git a/apps/cMiniApp/project.config.json b/apps/cMiniApp/project.config.json
index cc53dd5..75e8651 100644
--- a/apps/cMiniApp/project.config.json
+++ b/apps/cMiniApp/project.config.json
@@ -51,5 +51,5 @@
         "ignore": [],
         "include": []
     },
-    "appid": "wxb9e0baf4f87aa0de"
+    "appid": "wx88251c84f5cd886b"
 }
\ No newline at end of file
diff --git a/apps/cMiniApp/src/pages/task/InnerPage.vue b/apps/cMiniApp/src/pages/task/InnerPage.vue
index 81dc2bb..a022624 100644
--- a/apps/cMiniApp/src/pages/task/InnerPage.vue
+++ b/apps/cMiniApp/src/pages/task/InnerPage.vue
@@ -46,12 +46,12 @@
 const { queryState, infiniteLoadingProps } = useCheckReceiveTasks();
 
 function goSubmitTaskDetail(item: API.GetCheckReceiveTasksQueryResultItem) {
-  if (item.checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitSubmit) {
+  if (Number(queryState.checkReceiveStatus) === EnumTaskCheckReceiveStatus.WaitSubmit) {
     Taro.navigateTo({
       url: `${RouterPath.taskSubmitCheck}?id=${item.id}`,
     });
   }
-  if (item.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed) {
+  if (Number(queryState.checkReceiveStatus) === EnumTaskCheckReceiveStatus.Completed) {
     Taro.navigateTo({
       url: `${RouterPath.taskCheckDetail}?id=${item.id}`,
     });
diff --git a/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
index c91b50a..7f2f3eb 100644
--- a/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
@@ -1,45 +1,16 @@
 <template>
   <ContentScrollView style="background-color: transparent">
     <MyTaskCard :showMyTaskArrow="false"></MyTaskCard>
+    <div class="taskCheckFileCard-status-title">楠屾敹鐓х墖</div>
     <InfiniteLoading
       scrollViewClassName="common-infinite-scroll-list task-list"
       v-bind="infiniteLoadingProps"
     >
       <template #renderItem="{ item }">
-        <div class="taskCheckDetail-status-wrapper">
-          <div class="taskCheckDetail-status-title">楠屾敹鐓х墖</div>
-          <div
-            class="taskCheckDetail-status"
-            :style="{
-              color: Colors.Warning,
-            }"
-          >
-            寰呴獙鏀�
-          </div>
-        </div>
-        <div class="taskCheckDetail-time">2024.11.14 9:28:39</div>
-        <nut-grid
-          square
-          :column-num="3"
-          :border="false"
-          :gutter="20"
-          v-if="item?.files?.length > 0"
-          class="taskCheckDetail-img-grid"
-        >
-          <nut-grid-item
-            v-for="(itema, index) in item.files"
-            :key="index"
-            class="publish-circle-friend-file-grid-item"
-          >
-            <div class="taskCheckDetail-img-grid-item">
-              <PreviewImage
-                :src="setOSSLink(itema)"
-                class="taskCheckDetail-img"
-                :urls="item.files"
-              />
-            </div>
-          </nut-grid-item>
-        </nut-grid>
+        <TaskCheckFileCard
+          :created-time="item?.createdTime"
+          :files="item?.files"
+        ></TaskCheckFileCard>
       </template>
     </InfiniteLoading>
   </ContentScrollView>
@@ -50,11 +21,9 @@
 </template>
 
 <script setup lang="ts">
-import { MyTaskCard, PreviewImage } from '@12333/components';
-import { Colors } from '@12333/constants';
+import { MyTaskCard, TaskCheckFileCard } from '@12333/components';
 import Taro from '@tarojs/taro';
 import { useCheckReceiveTaskUserSubmits } from '@12333/hooks';
-import { setOSSLink } from '@12333/utils';
 
 defineOptions({
   name: 'InnerPage',
@@ -70,73 +39,12 @@
 @import '@/styles/common.scss';
 
 .taskCheckDetail-page-wrapper {
-  .taskCheckDetail-status-wrapper {
-    display: flex;
-    align-items: center;
+  .taskCheckFileCard-status-title {
     font-weight: 600;
     font-size: 28px;
     line-height: 32px;
     margin-bottom: 16px;
-
-    .taskCheckDetail-status-title {
-      color: boleGetCssVar('text-color', 'primary');
-      flex: 1;
-      min-width: 0;
-    }
-  }
-
-  .taskCheckDetail-time {
-    font-weight: 400;
-    font-size: 24px;
-    color: boleGetCssVar('text-color', 'regular');
-    line-height: 36px;
-    margin-bottom: 22px;
-  }
-
-  .taskCheckDetail-img-grid {
-    padding: 0 !important;
-
-    .publish-circle-friend-file-grid-item {
-      .nut-grid-item__content--square {
-        padding: 0;
-        border: none;
-        display: block;
-        background-color: transparent;
-      }
-    }
-
-    .taskCheckDetail-img-grid-item {
-      width: 100%;
-      height: 100%;
-      box-sizing: border-box;
-      position: relative;
-      padding: 20px;
-    }
-
-    .taskCheckDetail-img {
-      border-radius: 8px;
-      width: 100% !important;
-      height: 100%;
-      object-fit: cover;
-    }
-  }
-
-  .taskCheckDetail-tips-wrapper {
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    font-weight: 400;
-    font-size: 24px;
-    line-height: 32px;
-    padding: 20px 0;
-
-    .taskCheckDetail-tips-text {
-      color: boleGetCssVar('text-color', 'secondary');
-    }
-
-    .taskCheckDetail-tips-btn {
-      color: boleGetCssVar('color', 'primary');
-    }
+    color: boleGetCssVar('text-color', 'primary');
   }
 }
 </style>
diff --git a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
index 05900ca..bc40ba1 100644
--- a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
@@ -24,6 +24,7 @@
 import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
 import Taro from '@tarojs/taro';
 import { goBack } from '@/utils';
+import { useQueryClient } from '@tanstack/vue-query';
 
 defineOptions({
   name: 'InnerPage',
@@ -31,6 +32,7 @@
 
 const route = Taro.useRouter();
 const id = route.params?.id as string;
+const queryClient = useQueryClient();
 
 const form = reactive({
   files: [] as FileItem[],
@@ -62,6 +64,7 @@
       Message.success('鎻愪氦鎴愬姛', {
         onClosed() {
           goBack();
+          queryClient.invalidateQueries(['taskServices/getTaskInfo', id]);
         },
       });
     }
diff --git a/packages/components/src/Card/TaskCheckFileCard.vue b/packages/components/src/Card/TaskCheckFileCard.vue
new file mode 100644
index 0000000..cc0fc5d
--- /dev/null
+++ b/packages/components/src/Card/TaskCheckFileCard.vue
@@ -0,0 +1,132 @@
+<template>
+  <div class="taskCheckFileCard-wrapper">
+    <div class="taskCheckFileCard-status-wrapper">
+      <div class="taskCheckFileCard-time">
+        {{ dayjs(props.createdTime).format('YYYY-MM-DD HH:mm:ss') }}
+      </div>
+      <div
+        class="taskCheckFileCard-status"
+        :style="{
+          color: Colors.Warning,
+        }"
+      >
+        {{ EnumTaskCheckReceiveStatusText[props.checkReceiveStatus] }}
+      </div>
+    </div>
+
+    <nut-grid
+      square
+      :column-num="3"
+      :border="false"
+      :gutter="20"
+      v-if="props?.files?.length > 0"
+      class="taskCheckFileCard-img-grid"
+    >
+      <nut-grid-item
+        v-for="(itema, index) in props.files"
+        :key="index"
+        class="publish-circle-friend-file-grid-item"
+      >
+        <div class="taskCheckFileCard-img-grid-item">
+          <PreviewImage
+            :src="setOSSLink(itema)"
+            class="taskCheckFileCard-img"
+            :urls="props.files"
+          />
+        </div>
+      </nut-grid-item>
+    </nut-grid>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { PreviewImage } from '@12333/components';
+import {
+  Colors,
+  EnumTaskUserSubmitCheckReceiveStatus,
+  EnumTaskCheckReceiveStatusText,
+} from '@12333/constants';
+import { setOSSLink } from '@12333/utils';
+import dayjs from 'dayjs';
+
+defineOptions({
+  name: 'TaskCheckFileCard',
+});
+
+type Props = {
+  createdTime?: string;
+  checkReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
+  files?: string[];
+
+  showCheckReceiveStatus?: boolean;
+};
+
+const props = withDefaults(defineProps<Props>(), {
+  showCheckReceiveStatus: false,
+});
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.taskCheckFileCard-wrapper {
+  .taskCheckFileCard-status-wrapper {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+  }
+
+  .taskCheckFileCard-time {
+    font-weight: 400;
+    font-size: 24px;
+    color: boleGetCssVar('text-color', 'regular');
+    line-height: 32px;
+  }
+
+  .taskCheckFileCard-img-grid {
+    padding: 0 !important;
+
+    .publish-circle-friend-file-grid-item {
+      .nut-grid-item__content--square {
+        padding: 0;
+        border: none;
+        display: block;
+        background-color: transparent;
+      }
+
+      .taskCheckFileCard-img-grid-item {
+        width: 100%;
+        height: 100%;
+        box-sizing: border-box;
+        position: relative;
+        padding: 20px;
+      }
+    }
+
+    .taskCheckFileCard-img {
+      border-radius: 8px;
+      width: 100% !important;
+      height: 100%;
+      object-fit: cover;
+    }
+  }
+
+  .taskCheckFileCard-tips-wrapper {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    font-weight: 400;
+    font-size: 24px;
+    line-height: 32px;
+    padding: 20px 0;
+
+    .taskCheckFileCard-tips-text {
+      color: boleGetCssVar('text-color', 'secondary');
+    }
+
+    .taskCheckFileCard-tips-btn {
+      color: boleGetCssVar('color', 'primary');
+    }
+  }
+}
+</style>
diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts
index a98cb48..0adeb76 100644
--- a/packages/components/src/index.ts
+++ b/packages/components/src/index.ts
@@ -22,6 +22,7 @@
 export { default as AreaTreeSelect } from './AreaTreeSelect/AreaTreeSelect.vue';
 export { default as Elevator } from './Elevator/Elevator.vue';
 export { default as TaskCard } from './Card/TaskCard.vue';
+export { default as TaskCheckFileCard } from './Card/TaskCheckFileCard.vue';
 export { default as MineAgreementSignCard } from './Card/MineAgreementSignCard.vue';
 export { default as JobApplicationCard } from './Card/JobApplicationCard.vue';
 export { default as MyTaskCard } from './Card/MyTaskCard.vue';
diff --git a/packages/constants/task.ts b/packages/constants/task.ts
index aa6b8e2..ab19a55 100644
--- a/packages/constants/task.ts
+++ b/packages/constants/task.ts
@@ -51,7 +51,8 @@
 };
 
 export const EnumTaskCheckReceiveStatusText = {
-  [EnumTaskCheckReceiveStatus.WaitSubmit]: '寰呴獙鏀�',
+  [EnumTaskCheckReceiveStatus.WaitSubmit]: '寰呮彁浜�',
+  [EnumTaskCheckReceiveStatus.WaitCheckReceive]: '寰呴獙鏀�',
   [EnumTaskCheckReceiveStatus.Completed]: '宸查獙鏀�',
 };
 
diff --git a/packages/hooks/task.ts b/packages/hooks/task.ts
index 9cc65d2..a29fbb1 100644
--- a/packages/hooks/task.ts
+++ b/packages/hooks/task.ts
@@ -169,7 +169,7 @@
       });
     },
     {
-      queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmits', id],
+      queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmits'],
     }
   );
 
diff --git a/packages/services/apiV2/auth.ts b/packages/services/apiV2/auth.ts
index 331a423..1a95129 100644
--- a/packages/services/apiV2/auth.ts
+++ b/packages/services/apiV2/auth.ts
@@ -81,6 +81,23 @@
   });
 }
 
+/** 鏌ヨ浼佷笟鐢ㄦ埛鐧诲綍淇℃伅 GET /api/user/auth/getEnterpriseLoginInfo */
+export async function getEnterpriseLoginInfo(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetEnterpriseLoginInfoParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetEnterpriseLoginInfoQueryResult>('/api/user/auth/getEnterpriseLoginInfo', {
+    method: 'GET',
+    params: {
+      ...params,
+      request: undefined,
+      ...params['request'],
+    },
+    ...(options || {}),
+  });
+}
+
 /** 鏌ヨ涓汉鐢ㄦ埛鐧诲綍淇℃伅 GET /api/user/auth/getPersonalLoginInfo */
 export async function getPersonalLoginInfo(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/packages/services/apiV2/index.ts b/packages/services/apiV2/index.ts
index 24135cb..ca93bf7 100644
--- a/packages/services/apiV2/index.ts
+++ b/packages/services/apiV2/index.ts
@@ -10,9 +10,9 @@
 import * as user from './user';
 import * as userResume from './userResume';
 import * as auth from './auth';
+import * as taskCheckReceive from './taskCheckReceive';
 import * as resource from './resource';
 import * as taskUser from './taskUser';
-import * as taskCheckReceive from './taskCheckReceive';
 import * as menu from './menu';
 export default {
   enterpriseEmployee,
@@ -23,8 +23,8 @@
   user,
   userResume,
   auth,
+  taskCheckReceive,
   resource,
   taskUser,
-  taskCheckReceive,
   menu,
 };
diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index 4228eaa..beca1f6 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -14,8 +14,14 @@
   }
 
   interface APIgetCheckReceiveTaskUserSubmitParams {
-    /** 鎻愪氦Id */
-    id?: string;
+    /** 鎻愪氦Id锛堢敤浜嶣绔鎴风锛� */
+    submitId?: string;
+    /** 浠诲姟Id锛堢敤浜嶤绔皬绋嬪簭缂栬緫鎻愪氦 鍜屾棩鏈熶竴璧蜂紶锛� */
+    taskInfoId?: string;
+    /** 浠诲姟浜哄憳Id锛堢敤浜嶣绔皬绋嬪簭楠屾敹 鍜屾棩鏈熶竴璧蜂紶锛� */
+    taskInfoUserId?: string;
+    /** 鏃ユ湡锛堢敤浜庝袱涓皬绋嬪簭 璺熸煇涓�涓狪d涓�璧蜂紶锛� */
+    date?: string;
   }
 
   interface APIgetCurrentLogierMenuParams {
@@ -60,6 +66,11 @@
     id?: string;
     /** 浠诲姟Id */
     taskInfoId?: string;
+  }
+
+  interface APIgetEnterpriseLoginInfoParams {
+    /** 鏌ヨ浼佷笟鐢ㄦ埛鐧诲綍淇℃伅 */
+    request?: GetEnterpriseLoginInfoQuery;
   }
 
   interface APIgetEnterpriseParams {
@@ -198,6 +209,18 @@
     ids?: string[];
     /** 鏄惁鏀惰棌 */
     isCollect?: boolean;
+  }
+
+  interface CollectUserResumeCommand {
+    /** 鐢ㄦ埛Id */
+    id?: string;
+    /** 鏄惁宸叉敹钘� */
+    isCollected?: boolean;
+  }
+
+  interface ContactUserResumeCommand {
+    /** 鐢ㄦ埛Id */
+    id?: string;
   }
 
   interface DeleteDictionaryCategoryCommand {
@@ -639,6 +662,24 @@
     /** 閿欒鐮� */
     errorCode?: string;
     data?: GetEnterpriseEmployeesQueryResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
+  interface FriendlyResultGetEnterpriseLoginInfoQueryResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: GetEnterpriseLoginInfoQueryResult;
     /** 鎵ц鎴愬姛 */
     success?: boolean;
     /** 閿欒淇℃伅 */
@@ -1371,6 +1412,9 @@
   interface GetCheckReceiveTaskQuery {
     /** 浠诲姟Id */
     taskInfoId?: string;
+    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
+    /** 鏃ユ湡锛圔绔皬绋嬪簭涓撶敤锛� */
+    date?: string;
     pageModel?: PagedListQueryPageModel;
   }
 
@@ -1427,6 +1471,8 @@
   interface GetCheckReceiveTasksQuery {
     /** 鏃ユ湡锛堝皬绋嬪簭-楠屾敹绠$悊涓撶敤锛� */
     date?: string;
+    /** 鍏抽敭瀛楋紙濮撳悕/鎵嬫満/韬唤璇佸彿锛� */
+    keywords?: string;
     /** 楠屾敹鏃ユ湡-鏈�鏃╂椂闂达紙B绔鎴风-楠屾敹绠$悊涓撶敤锛� */
     checkReceiveTimeBegin?: string;
     /** 楠屾敹鏃ユ湡-鏈�鏅氭椂闂达紙B绔鎴风-楠屾敹绠$悊涓撶敤锛� */
@@ -1452,6 +1498,8 @@
     /** 鏈嶅姟璐� */
     serviceFee?: number;
     settlementCycle?: EnumSettlementCycle;
+    /** 鍙戝竷鏃堕棿 */
+    createdTime?: string;
     /** 浠诲姟寮�濮嬫椂闂� */
     beginTime?: string;
     /** 浠诲姟缁撴潫鏃堕棿 */
@@ -1504,6 +1552,8 @@
   }
 
   interface GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser {
+    /** 鐢ㄦ埛Id */
+    id?: string;
     /** 澶村儚 */
     avatar?: string;
     /** 濮撳悕 */
@@ -1518,6 +1568,8 @@
     /** 鏄惁瀹炲悕 */
     isReal?: boolean;
     realMethod?: EnumUserRealMethod;
+    /** 鏄惁缁戝畾閾惰鍗� */
+    isBindBankCard?: boolean;
   }
 
   interface GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo {
@@ -1748,6 +1800,27 @@
     enterpriseSignContractStatus?: EnumTaskUserSignContractStatus;
     /** 浼佷笟绛剧害鏃堕棿 */
     enterpriseSignContractTime?: string;
+  }
+
+  type GetEnterpriseLoginInfoQuery = Record<string, any>;
+
+  interface GetEnterpriseLoginInfoQueryResult {
+    /** Id */
+    id?: string;
+    /** 澶村儚 */
+    avatar?: string;
+    /** 濮撳悕 */
+    name?: string;
+    /** 浼佷笟鍏ㄧО */
+    enterpriseName?: string;
+    /** 瑙掕壊 */
+    roles?: string[];
+    /** 鏄惁瀹炲悕 */
+    isReal?: boolean;
+    /** 鎴戠殑鏀惰棌 */
+    collectUsers?: number;
+    /** 鑱旂郴璁板綍 */
+    contactRecords?: number;
   }
 
   interface GetEnterpriseQueryResult {
@@ -2226,6 +2299,8 @@
     applyCount?: number;
     /** 浠诲姟鍚嶇О */
     name?: string;
+    /** 浠诲姟鍗曞彿 */
+    code?: string;
     billingMethod?: EnumBillingMethod;
     /** 鏈嶅姟璐� */
     serviceFee?: number;
@@ -2374,7 +2449,7 @@
     checkReceiveStatus?: EnumTaskCheckReceiveStatus;
     settlementStatus?: EnumTaskSettlementStatus;
     recommendStatus?: EnumTaskRecommendStatus;
-    /** 鍒涘缓鏃堕棿 */
+    /** 鍙戝竷鏃堕棿 */
     createdTime?: string;
   }
 
diff --git a/packages/services/apiV2/userResume.ts b/packages/services/apiV2/userResume.ts
index 7b9b8d6..8edd703 100644
--- a/packages/services/apiV2/userResume.ts
+++ b/packages/services/apiV2/userResume.ts
@@ -2,6 +2,36 @@
 // @ts-ignore
 import { request } from '@/utils/request';
 
+/** 鏀惰棌鐏靛伐 POST /api/user/userResume/collectUserResume */
+export async function collectUserResume(
+  body: API.CollectUserResumeCommand,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/user/userResume/collectUserResume', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
+/** 鑱旂郴鐏靛伐 POST /api/user/userResume/contactUserResume */
+export async function contactUserResume(
+  body: API.ContactUserResumeCommand,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/user/userResume/contactUserResume', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鍒犻櫎鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 DELETE /api/user/userResume/deleteUserResumeCredential */
 export async function deleteUserResumeCredential(
   body: API.DeleteUserResumeCredentialCommand,

--
Gitblit v1.9.1