From 012821743b57aab8c12c3b04ae6bd123f64367e4 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 07 十一月 2025 11:05:27 +0800
Subject: [PATCH] Merge branch 'dev-1.3.0.1' of http://120.26.58.240:8888/r/flexJobMiniApp into dev-1.3.0.1

---
 apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue         |   20 --
 apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue                    |   24 ---
 apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue               |    5 
 apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue               |   86 ++++++++++---
 packages/services/apiV2/typings.d.ts                                           |   14 +-
 apps/cMiniApp/src/pages/task/InnerPage.vue                                     |   43 ++++---
 apps/underTakeMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue |   20 --
 packages/components/src/Card/TaskCheckFileCard.vue                             |   37 +++++
 apps/cMiniApp/project.private.config.json                                      |   14 ++
 packages/utils/orderUtils.ts                                                   |   11 +
 packages/hooks/task.ts                                                         |   75 ++++++++++++
 11 files changed, 242 insertions(+), 107 deletions(-)

diff --git a/apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue
index c2e2779..df870ca 100644
--- a/apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue
@@ -41,6 +41,7 @@
 import { Message, setOSSLink } from '@12333/utils';
 import dayjs from 'dayjs';
 import { goBack } from '@/utils';
+import { useCheckReceiveTaskUserSubmit } from '@12333/hooks';
 
 defineOptions({
   name: 'InnerPage',
@@ -50,22 +51,11 @@
 const id = router.params?.id ?? '';
 const date = router.params?.date ?? '';
 
-const {
-  isLoading,
-  isError,
-  data: detail,
-  refetch,
-} = useQuery({
-  queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmit', id, date],
-  queryFn: async () => {
-    return await taskCheckReceiveServices.getCheckReceiveTaskUserSubmit(
-      { taskInfoUserId: id, date: dayjs(date).format('YYYY-MM-DD') },
-      {
-        showLoading: false,
-      }
-    );
+const { isLoading, isError, detail, refetch } = useCheckReceiveTaskUserSubmit({
+  params: {
+    taskInfoUserId: id,
+    date: dayjs(date).format('YYYY-MM-DD'),
   },
-  placeholderData: () => ({} as API.GetCheckReceiveTaskUserSubmitQueryResult),
 });
 
 async function checkReceiveTask(checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus) {
diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json
index 35a4f34..48d64e1 100644
--- a/apps/cMiniApp/project.private.config.json
+++ b/apps/cMiniApp/project.private.config.json
@@ -23,6 +23,20 @@
         "miniprogram": {
             "list": [
                 {
+                    "name": "楠屾敹璇︽儏",
+                    "pathName": "subpackages/task/taskCheckDetail/taskCheckDetail",
+                    "query": "id=b0e79981-56d5-4730-83e7-08de1d1fb9dd",
+                    "scene": null,
+                    "launchMode": "default"
+                },
+                {
+                    "name": "鎻愪氦楠屾敹",
+                    "pathName": "subpackages/task/taskSubmitCheck/taskSubmitCheck",
+                    "query": "id=b0e79981-56d5-4730-83e7-08de1d1fb9dd&date=2025-11-07",
+                    "launchMode": "default",
+                    "scene": null
+                },
+                {
                     "name": "浠诲姟",
                     "pathName": "pages/task/task",
                     "query": "",
diff --git a/apps/cMiniApp/src/pages/task/InnerPage.vue b/apps/cMiniApp/src/pages/task/InnerPage.vue
index 6be8d8a..375515e 100644
--- a/apps/cMiniApp/src/pages/task/InnerPage.vue
+++ b/apps/cMiniApp/src/pages/task/InnerPage.vue
@@ -29,7 +29,7 @@
           :begin-time="item.beginTime"
           :end-time="item.endTime"
           :showActions="
-            item.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn &&
+            OrderUtils.isContainCheckIn(item.checkReceiveMethods) &&
             queryState.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed
           "
           @click="goSubmitTaskDetail(item)"
@@ -44,6 +44,8 @@
 import Taro from '@tarojs/taro';
 import { useCheckReceiveTasks, useTaskList } from '@12333/hooks';
 import { EnumTaskCheckReceiveStatus, EnumTaskCheckReceiveMethod } from '@12333/constants';
+import { OrderUtils } from '@12333/utils';
+import dayjs from 'dayjs';
 
 defineOptions({
   name: 'InnerPage',
@@ -52,27 +54,32 @@
 const { queryState, infiniteLoadingProps } = useCheckReceiveTasks();
 
 function goSubmitTaskDetail(item: API.GetCheckReceiveTasksQueryResultItem) {
+  const _date = dayjs(queryState.date).format('YYYY-MM-DD');
   if (Number(queryState.checkReceiveStatus) === EnumTaskCheckReceiveStatus.WaitSubmit) {
     Taro.navigateTo({
-      url: `${RouterPath.taskSubmitCheck}?id=${item.id}&date=${queryState.date}`,
+      url: `${RouterPath.taskSubmitCheck}?id=${item.id}&date=${_date}`,
+    });
+  } else {
+    Taro.navigateTo({
+      url: `${RouterPath.taskCheckDetail}?id=${item.id}`,
     });
   }
-  if (item.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn) {
-    if (Number(queryState.checkReceiveStatus) === EnumTaskCheckReceiveStatus.Completed) {
-      Taro.navigateTo({
-        url: `${RouterPath.taskUserSubmitCheckHistories}?id=${item.id}&date=${queryState.date}`,
-      });
-    }
-  } else {
-    if (
-      Number(queryState.checkReceiveStatus) === EnumTaskCheckReceiveStatus.WaitCheckReceive ||
-      Number(queryState.checkReceiveStatus) === EnumTaskCheckReceiveStatus.Completed
-    ) {
-      Taro.navigateTo({
-        url: `${RouterPath.taskCheckDetail}?id=${item.id}`,
-      });
-    }
-  }
+  // if (item.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn) {
+  //   if (Number(queryState.checkReceiveStatus) === EnumTaskCheckReceiveStatus.Completed) {
+  //     Taro.navigateTo({
+  //       url: `${RouterPath.taskUserSubmitCheckHistories}?id=${item.id}&date=${_date}`,
+  //     });
+  //   }
+  // } else {
+  //   if (
+  //     Number(queryState.checkReceiveStatus) === EnumTaskCheckReceiveStatus.WaitCheckReceive ||
+  //     Number(queryState.checkReceiveStatus) === EnumTaskCheckReceiveStatus.Completed
+  //   ) {
+  //     Taro.navigateTo({
+  //       url: `${RouterPath.taskCheckDetail}?id=${item.id}`,
+  //     });
+  //   }
+  // }
 }
 </script>
 
diff --git a/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
index 4b1898d..053cf28 100644
--- a/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
@@ -11,13 +11,16 @@
     ></MyTaskCard>
     <div class="taskCheckFileCard-status-title">楠屾敹鐓х墖</div>
     <InfiniteLoading
-      scrollViewClassName="common-infinite-scroll-list task-list"
+      scrollViewClassName="common-infinite-scroll-list-no-padding task-list"
       v-bind="infiniteLoadingProps"
     >
       <template #renderItem="{ item }">
         <TaskCheckFileCard
           :created-time="item?.createdTime"
+          :userCheckInTime="item?.userCheckInTime"
+          :userCheckOutTime="item?.userCheckOutTime"
           :checkReceiveStatus="item?.checkReceiveStatus"
+          :checkReceiveMethods="item?.checkReceiveMethods"
           :files="item?.files?.map((x) => setOSSLink(x))"
         ></TaskCheckFileCard>
       </template>
diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
index 7591634..7ecb2b6 100644
--- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
@@ -75,7 +75,7 @@
         v-if="
           from === 'hire' &&
           !(
-            detail?.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn &&
+            isContainCheckIn &&
             detail?.hireButton === GetTaskInfoQueryResultHireButton.ApplyCheckReceive
           )
         "
@@ -128,6 +128,7 @@
   EnumTaskCheckReceiveMethod,
 } from '@12333/constants';
 import { useAccessLogin } from '@/hooks';
+import { useTaskInfo } from '@12333/hooks';
 
 defineOptions({
   name: 'InnerPage',
@@ -141,26 +142,7 @@
 const id = router.params?.id ?? '';
 const from = router.params?.from ?? '';
 
-const {
-  isLoading,
-  isError,
-  data: detail,
-  refetch,
-} = useQuery({
-  queryKey: ['taskServices/getTaskInfo', id],
-  queryFn: async () => {
-    return await taskServices.getTaskInfo(
-      { id: id },
-      {
-        showLoading: false,
-      }
-    );
-  },
-  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
-  onSuccess(data) {
-    // if (data.isExistTradeChatRecord) setTrue();
-  },
-});
+const { isLoading, isError, detail, refetch, isContainCheckIn } = useTaskInfo({ id });
 
 const { isCollapse, setTrue } = useToggle();
 
diff --git a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
index 06f4438..e30c3d2 100644
--- a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
@@ -1,32 +1,47 @@
 <template>
-  <ContentScrollView :paddingH="false">
-    <nut-form :model-value="form" ref="formRef" :rules="rules">
-      <nut-form-item label="涓婁紶鐓х墖:" class="bole-form-item alignTop" prop="files" required>
-        <Uploader
-          v-model:file-list="form.files"
-          :maximum="9"
-          :limitFileSize="10"
-          class="bole-uploader nopaddingtop"
-          :sourceType="['camera']"
+  <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch">
+    <ContentScrollView :paddingH="false">
+      <nut-form :model-value="form" ref="formRef" :rules="rules">
+        <nut-form-item label="涓婁紶鐓х墖:" class="bole-form-item alignTop" prop="files" required>
+          <Uploader
+            v-model:file-list="form.files"
+            :maximum="9"
+            :limitFileSize="10"
+            class="bole-uploader nopaddingtop"
+            :sourceType="['camera']"
+          >
+          </Uploader>
+        </nut-form-item>
+      </nut-form>
+    </ContentScrollView>
+    <PageFooter :isOnlyAction="false">
+      <template v-if="isContainCheckIn">
+        <PageFooterBtn type="primary" v-if="!detail.userCheckHistoryType" @click="handleCheckIn()"
+          >绛惧埌</PageFooterBtn
         >
-        </Uploader>
-      </nut-form-item>
-    </nut-form>
-  </ContentScrollView>
-  <PageFooter :isOnlyAction="false">
-    <PageFooterBtn type="primary" @click="handleSubmit()">鎻愪氦</PageFooterBtn>
-  </PageFooter>
+        <PageFooterBtn
+          v-else-if="detail.userCheckHistoryType === EnumTaskUserSubmitCheckHistoryType.CheckIn"
+          type="primary"
+          @click="handleCheckOut()"
+          >绛惧嚭</PageFooterBtn
+        >
+      </template>
+      <PageFooterBtn v-else type="primary" @click="handleSubmit()">鎻愪氦</PageFooterBtn>
+    </PageFooter>
+  </LoadingLayout>
 </template>
 
 <script setup lang="ts">
 import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
 import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type';
-import { FormValidator, Message } from '@12333/utils';
+import { FormValidator, Message, OrderUtils, convertApiPath2Url } from '@12333/utils';
 import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
 import Taro from '@tarojs/taro';
 import { goBack } from '@/utils';
 import { useQueryClient } from '@tanstack/vue-query';
 import dayjs from 'dayjs';
+import { useCheckReceiveTaskUserSubmit } from '@12333/hooks';
+import { EnumTaskUserSubmitCheckHistoryType } from '@12333/constants';
 
 defineOptions({
   name: 'InnerPage',
@@ -37,6 +52,18 @@
 const date = route.params?.date as string;
 const queryClient = useQueryClient();
 
+const { isLoading, isError, detail, refetch, isContainCheckIn } = useCheckReceiveTaskUserSubmit({
+  params: {
+    taskInfoId: id,
+    date: dayjs(date).format('YYYY-MM-DD'),
+  },
+  onSuccess(data) {
+    if (data.files?.length > 0) {
+      form.files = data.files.map(convertApiPath2Url);
+    }
+  },
+});
+
 const form = reactive({
   files: [] as FileItem[],
 });
@@ -47,6 +74,24 @@
 
 const formRef = ref<any>(null);
 
+function handleCheckIn() {
+  if (!formRef.value) return;
+  formRef.value.validate().then(({ valid, errors }: any) => {
+    if (valid) {
+      submitCheckReceiveTask(EnumTaskUserSubmitCheckHistoryType.CheckIn);
+    }
+  });
+}
+
+function handleCheckOut() {
+  if (!formRef.value) return;
+  formRef.value.validate().then(({ valid, errors }: any) => {
+    if (valid) {
+      submitCheckReceiveTask(EnumTaskUserSubmitCheckHistoryType.CheckOut);
+    }
+  });
+}
+
 function handleSubmit() {
   if (!formRef.value) return;
   formRef.value.validate().then(({ valid, errors }: any) => {
@@ -56,12 +101,13 @@
   });
 }
 
-async function submitCheckReceiveTask() {
+async function submitCheckReceiveTask(userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType) {
   try {
     let params: API.SubmitCheckReceiveTaskCommand = {
       taskInfoId: id,
       date: dayjs(date).format('YYYY-MM-DD'),
       files: form.files.map((x) => x.path),
+      userCheckHistoryType,
     };
     let res = await taskCheckReceiveServices.submitCheckReceiveTask(params);
     if (res) {
@@ -75,7 +121,3 @@
   } catch (error) {}
 }
 </script>
-
-<style lang="scss">
-@import '@/styles/common.scss';
-</style>
diff --git a/apps/underTakeMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue b/apps/underTakeMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue
index 35e7759..d66bb31 100644
--- a/apps/underTakeMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue
+++ b/apps/underTakeMiniApp/src/subpackages/task/taskHandleCheckDetail/InnerPage.vue
@@ -41,6 +41,7 @@
 import { Message, setOSSLink } from '@12333/utils';
 import dayjs from 'dayjs';
 import { goBack } from '@/utils';
+import { useCheckReceiveTaskUserSubmit } from '@12333/hooks';
 
 defineOptions({
   name: 'InnerPage',
@@ -50,22 +51,11 @@
 const id = router.params?.id ?? '';
 const date = router.params?.date ?? '';
 
-const {
-  isLoading,
-  isError,
-  data: detail,
-  refetch,
-} = useQuery({
-  queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmit', id, date],
-  queryFn: async () => {
-    return await taskCheckReceiveServices.getCheckReceiveTaskUserSubmit(
-      { taskInfoUserId: id, date: dayjs(date).format('YYYY-MM-DD') },
-      {
-        showLoading: false,
-      }
-    );
+const { isLoading, isError, detail, refetch } = useCheckReceiveTaskUserSubmit({
+  params: {
+    taskInfoUserId: id,
+    date: dayjs(date).format('YYYY-MM-DD'),
   },
-  placeholderData: () => ({} as API.GetCheckReceiveTaskUserSubmitQueryResult),
 });
 
 async function checkReceiveTask(checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus) {
diff --git a/packages/components/src/Card/TaskCheckFileCard.vue b/packages/components/src/Card/TaskCheckFileCard.vue
index 74eb4a8..063ee6d 100644
--- a/packages/components/src/Card/TaskCheckFileCard.vue
+++ b/packages/components/src/Card/TaskCheckFileCard.vue
@@ -1,8 +1,26 @@
 <template>
   <div class="taskCheckFileCard-wrapper">
     <div class="taskCheckFileCard-status-wrapper">
-      <div class="taskCheckFileCard-time">
-        {{ props.createdTime ? dayjs(props.createdTime).format('YYYY-MM-DD HH:mm:ss') : '' }}
+      <div class="taskCheckFileCard-time-wrapper">
+        <template v-if="OrderUtils.isContainCheckIn(checkReceiveMethods)">
+          <div class="taskCheckFileCard-time">
+            绛惧埌鏃堕棿锛歿{
+              props.userCheckInTime
+                ? dayjs(props.userCheckInTime).format('YYYY-MM-DD HH:mm:ss')
+                : ''
+            }}
+          </div>
+          <div class="taskCheckFileCard-time">
+            绛惧嚭鏃堕棿锛歿{
+              props.userCheckOutTime
+                ? dayjs(props.userCheckOutTime).format('YYYY-MM-DD HH:mm:ss')
+                : ''
+            }}
+          </div>
+        </template>
+        <div class="taskCheckFileCard-time" v-else>
+          {{ props.createdTime ? dayjs(props.createdTime).format('YYYY-MM-DD HH:mm:ss') : '' }}
+        </div>
       </div>
       <div
         class="taskCheckFileCard-status"
@@ -45,8 +63,9 @@
   Colors,
   EnumTaskUserSubmitCheckReceiveStatus,
   EnumTaskUserSubmitCheckReceiveStatusText,
+  EnumTaskCheckReceiveMethod,
 } from '@12333/constants';
-import { setOSSLink } from '@12333/utils';
+import { setOSSLink, OrderUtils } from '@12333/utils';
 import dayjs from 'dayjs';
 
 defineOptions({
@@ -59,6 +78,14 @@
   files?: string[];
 
   showCheckReceiveStatus?: boolean;
+
+  /** 鐢ㄦ埛绛惧埌鏃堕棿 */
+  userCheckInTime?: string;
+  /** 鐢ㄦ埛绛惧嚭鏃堕棿 */
+  userCheckOutTime?: string;
+
+  /** 楠屾敹鏂瑰紡 */
+  checkReceiveMethods?: EnumTaskCheckReceiveMethod[];
 };
 
 const props = withDefaults(defineProps<Props>(), {
@@ -72,7 +99,7 @@
 .taskCheckFileCard-wrapper {
   .taskCheckFileCard-status-wrapper {
     display: flex;
-    align-items: center;
+    align-items: flex-start;
     justify-content: space-between;
   }
 
@@ -80,7 +107,7 @@
     font-weight: 400;
     font-size: 24px;
     color: boleGetCssVar('text-color', 'regular');
-    line-height: 32px;
+    line-height: 44px;
   }
 
   .taskCheckFileCard-img-grid {
diff --git a/packages/hooks/task.ts b/packages/hooks/task.ts
index f86c812..58642d8 100644
--- a/packages/hooks/task.ts
+++ b/packages/hooks/task.ts
@@ -12,7 +12,7 @@
   EnumTaskUserApplyStatus,
 } from '@12333/constants';
 import _ from 'lodash';
-import { trim } from '@12333/utils';
+import { OrderUtils, trim } from '@12333/utils';
 import { computed, MaybeRef, reactive, Ref, ref, unref } from 'vue';
 import * as taskServices from '@12333/services/apiV2/task';
 import * as enterpriseWalletServices from '@12333/services/apiV2/enterpriseWallet';
@@ -225,3 +225,76 @@
 
   return { settlementAccessList };
 }
+
+type UseTaskInfoOptions = {
+  id: MaybeRef<string>;
+  onSuccess?: (data: API.GetTaskInfoQueryResult) => any;
+};
+
+export function useTaskInfo({ id, onSuccess }: UseTaskInfoOptions) {
+  const {
+    isLoading,
+    isError,
+    data: detail,
+    refetch,
+  } = useQuery({
+    queryKey: ['taskServices/getTaskInfo', id],
+    queryFn: async () => {
+      return await taskServices.getTaskInfo(
+        { id: unref(id) },
+        {
+          showLoading: false,
+        }
+      );
+    },
+    placeholderData: () => ({} as API.GetTaskInfoQueryResult),
+    onSuccess(data) {
+      onSuccess?.(data);
+    },
+  });
+
+  const isContainCheckIn = computed(() =>
+    OrderUtils.isContainCheckIn(detail.value?.checkReceiveMethods)
+  );
+
+  return { detail, isLoading, isError, refetch, isContainCheckIn };
+}
+
+type UseCheckReceiveTaskUserSubmitOptions = {
+  params: MaybeRef<API.APIgetCheckReceiveTaskUserSubmitParams>;
+  onSuccess?: (data: API.GetCheckReceiveTaskUserSubmitQueryResult) => any;
+};
+
+export function useCheckReceiveTaskUserSubmit({
+  params,
+  onSuccess,
+}: UseCheckReceiveTaskUserSubmitOptions) {
+  const {
+    isLoading,
+    isError,
+    data: detail,
+    refetch,
+  } = useQuery({
+    queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmit', params],
+    queryFn: async () => {
+      const _params = unref(params);
+      return await taskCheckReceiveServices.getCheckReceiveTaskUserSubmit(
+        // { ..._params, date: dayjs(_params.date).format('YYYY-MM-DD') },
+        _params,
+        {
+          showLoading: false,
+        }
+      );
+    },
+    placeholderData: () => ({} as API.GetCheckReceiveTaskUserSubmitQueryResult),
+    onSuccess(data) {
+      onSuccess?.(data);
+    },
+  });
+
+  const isContainCheckIn = computed(() =>
+    OrderUtils.isContainCheckIn(detail.value?.checkReceiveMethods)
+  );
+
+  return { detail, isLoading, isError, refetch, isContainCheckIn };
+}
diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index 850b84c..da91ba1 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -590,10 +590,6 @@
     remark?: string;
     /** 缁撶畻閲戦 */
     settlementAmount?: number;
-    /** 绛惧埌鏃堕棿 */
-    checkInTime?: string;
-    /** 绛惧嚭鏃堕棿 */
-    checkOutTime?: string;
     checkHistoryType?: EnumTaskUserSubmitCheckHistoryType;
     checkReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
   }
@@ -4140,6 +4136,8 @@
     checkHistoryType?: EnumTaskUserSubmitCheckHistoryType;
     /** 楠屾敹鐓х墖 */
     files?: string[];
+    /** 楠屾敹鏂瑰紡 */
+    checkReceiveMethods?: EnumTaskCheckReceiveMethod[];
   }
 
   interface GetCheckReceiveTaskUserSubmitsQuery {
@@ -4181,6 +4179,8 @@
     checkReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
     /** 楠屾敹鏃堕棿 */
     checkReceiveTime?: string;
+    /** 楠屾敹鏂瑰紡 */
+    checkReceiveMethods?: EnumTaskCheckReceiveMethod[];
   }
 
   interface GetCheckReceiveTaskUserSubmitsQueryResultObjectData {
@@ -4218,6 +4218,8 @@
     endTime?: string;
     /** 浠诲姟鍦扮偣鍚嶇О */
     addressName?: string;
+    /** 楠屾敹鏂瑰紡 */
+    checkReceiveMethods?: EnumTaskCheckReceiveMethod[];
   }
 
   interface GetCodeUrlQueryResult {
@@ -8683,10 +8685,6 @@
     taskInfoId?: string;
     /** 鏃ユ湡 */
     date?: string;
-    /** 鐢ㄦ埛绛惧埌鏃堕棿 */
-    userCheckInTime?: string;
-    /** 鐢ㄦ埛绛惧嚭鏃堕棿 */
-    userCheckOutTime?: string;
     userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType;
     /** 闄勪欢 */
     files?: string[];
diff --git a/packages/utils/orderUtils.ts b/packages/utils/orderUtils.ts
index ef5a469..14844c1 100644
--- a/packages/utils/orderUtils.ts
+++ b/packages/utils/orderUtils.ts
@@ -1,4 +1,8 @@
-import { EnumBillingMethod, BillingMethodEnumUnit } from '@12333/constants';
+import {
+  EnumBillingMethod,
+  BillingMethodEnumUnit,
+  EnumTaskCheckReceiveMethod,
+} from '@12333/constants';
 
 export class OrderUtils {
   static getServiceFeeText(serviceFee: number, billingMethod: EnumBillingMethod) {
@@ -7,4 +11,9 @@
     }
     return `${serviceFee ?? 0}${BillingMethodEnumUnit[billingMethod]}`;
   }
+
+  static isContainCheckIn(checkReceiveMethods: EnumTaskCheckReceiveMethod[]) {
+    if (!checkReceiveMethods) return false;
+    return checkReceiveMethods.includes(EnumTaskCheckReceiveMethod.CheckIn);
+  }
 }

--
Gitblit v1.10.0